If you appreciate the work done within the wiki, please consider supporting The Cutting Room Floor on Patreon. Thanks for all your support!

Silver (Windows, 1999)

From The Cutting Room Floor
Jump to navigation Jump to search

Title Screen

Silver

Developer: Spiral House
Publisher: Infogrames
Platform: Windows
Released in US: August 1999
Released in EU: June 2000


TextIcon.png This game has unused text.
DebugIcon.png This game has debugging material.


Silver is an action RPG focusing around a young warrior called David and his quest to retrieve his wife from the clutches of the villain Silver. On his journey, he gains a number of followers and visits many different landscapes.

Start parameter

  • WINDOW: Start in window mode instead of fullscreen.
  • OPENGL: Use opengl instead of directx.
  • UNCAPPED: Disable frame cap.
  • GODMODE: Receive no damage and deal 10k damage with every hit.
  • SAFE: Unknown.

Debug Menu

Acactussayswhat?
Please elaborate.
Having more detail is always a good thing.
Specifically: What flag, exactly? Where is this flag located in memory? More info is a good thing.

Right now, the only way to active this debug menu is via changing a flag inside the memory.

FPS counter Object counter Heap size Object size
Silver 1999 active debug fps.png Silver 1999 active debug 1.png Silver 1999 active debug 2.png Silver 1999 active debug 4.png

The following snippet shows the function which checks the flags and calls the appropiate debug render function. In my case the byte flag is located at 0xD00E2501 and can either be 1,2 or 4. The fps counter flag is located at 0x01250ECC and can either be a 1 or 0.

00FF2FC0  | 55                    | push ebp                                                 |
00FF2FC1  | 8BEC                  | mov ebp,esp                                              |
00FF2FC3  | 51                    | push ecx                                                 |
00FF2FC4  | 833D CC0E2501 00      | cmp dword ptr ds:[<frame_graph_enabled>],0               |
00FF2FCB  | 0F84 EE000000         | je silver.FF30BF                                         |
00FF2FD1  | 66:0F6E05 CC7C3701    | movd xmm0,dword ptr ds:[1377CCC]                         |
00FF2FD9  | 0F5BC0                | cvtdq2ps xmm0,xmm0                                       |
00FF2FDC  | 68 D5010000           | push 1D5                                                 |
00FF2FE1  | 68 C8000000           | push C8                                                  |
00FF2FE6  | 68 E4D22201           | push silver.122D2E4                                      |
00FF2FEB  | F3:0F1145 FC          | movss dword ptr ss:[ebp-4],xmm0                          |
00FF2FF0  | E8 AB510600           | call <silver.draw_string_to_screen>                      |
00FF2FF5  | F3:0F1045 FC          | movss xmm0,dword ptr ss:[ebp-4]                          |
00FF2FFA  | 83C4 0C               | add esp,C                                                |
00FF2FFD  | 6A 14                 | push 14                                                  |
00FF2FFF  | 68 90010000           | push 190                                                 |
00FF3004  | 68 DB010000           | push 1DB                                                 |
00FF3009  | 68 C8000000           | push C8                                                  |
00FF300E  | 83EC 08               | sub esp,8                                                |
00FF3011  | F3:0F114424 04        | movss dword ptr ss:[esp+4],xmm0                          |
00FF3017  | C70424 8988883C       | mov dword ptr ss:[esp],3C888889                          |
00FF301E  | E8 7D070000           | call <silver.draw_graph>                                 |
00FF3023  | 66:0F6E05 CC7C3701    | movd xmm0,dword ptr ds:[1377CCC]                         |
00FF302B  | 83C4 18               | add esp,18                                               |
00FF302E  | F3:0F100D ECD22201    | movss xmm1,dword ptr ds:[122D2EC]                        |
00FF3036  | 0F5BC0                | cvtdq2ps xmm0,xmm0                                       |
00FF3039  | 0F2FC1                | comiss xmm0,xmm1                                         |
00FF303C  | 76 05                 | jbe silver.FF3043                                        |
00FF303E  | 0F28C1                | movaps xmm0,xmm1                                         |
00FF3041  | EB 13                 | jmp silver.FF3056                                        |
00FF3043  | 0F57C9                | xorps xmm1,xmm1                                          |
00FF3046  | 0F2FC8                | comiss xmm1,xmm0                                         |
00FF3049  | 76 03                 | jbe silver.FF304E                                        |
00FF304B  | 0F28C1                | movaps xmm0,xmm1                                         |
00FF304E  | F3:0F100D ECD22201    | movss xmm1,dword ptr ds:[122D2EC]                        |
00FF3056  | F3:0F1015 D40E2501    | movss xmm2,dword ptr ds:[1250ED4]                        |
00FF305E  | 0F2FC2                | comiss xmm0,xmm2                                         |
00FF3061  | 77 09                 | ja silver.FF306C                                         |
00FF3063  | F605 8C153701 3F      | test byte ptr ds:[137158C],3F                            |
00FF306A  | 75 0B                 | jne silver.FF3077                                        |
00FF306C  | 0F28D0                | movaps xmm2,xmm0                                         |
00FF306F  | F3:0F1115 D40E2501    | movss dword ptr ds:[1250ED4],xmm2                        |
00FF3077  | F3:0F5ED1             | divss xmm2,xmm1                                          |
00FF307B  | F3:0F5915 6CA82201    | mulss xmm2,dword ptr ds:[122A86C]                        |
00FF3083  | F3:0F5815 98BD2201    | addss xmm2,dword ptr ds:[122BD98]                        |
00FF308B  | 0F28C2                | movaps xmm0,xmm2                                         |
00FF308E  | F3:0F5C05 98BD2201    | subss xmm0,dword ptr ds:[122BD98]                        |
00FF3096  | F3:0F5805 E8E90B01    | addss xmm0,dword ptr ds:[10BE9E8]                        |
00FF309E  | F3:0F2CC0             | cvttss2si eax,xmm0                                       |
00FF30A2  | 85C0                  | test eax,eax                                             |
00FF30A4  | 7E 19                 | jle silver.FF30BF                                        |
00FF30A6  | F3:0F2CC2             | cvttss2si eax,xmm2                                       |
00FF30AA  | 68 0F0F0F0F           | push F0F0F0F                                             |
00FF30AF  | 6A 05                 | push 5                                                   |
00FF30B1  | 68 D9010000           | push 1D9                                                 |
00FF30B6  | 50                    | push eax                                                 |
00FF30B7  | E8 44720600           | call <silver.drawVerticalLine>                           |
00FF30BC  | 83C4 10               | add esp,10                                               |
00FF30BF  | A1 D00E2501           | mov eax,dword ptr ds:[<debug_metric_flags>]              | Here is the part where the debug overlays are drawn
00FF30C4  | A8 01                 | test al,1                                                |
00FF30C6  | 74 0A                 | je silver.FF30D2                                         |
00FF30C8  | E8 73010000           | call <silver.draw_object_metrics>                        |
00FF30CD  | A1 D00E2501           | mov eax,dword ptr ds:[<debug_metric_flags>]              |
00FF30D2  | A8 02                 | test al,2                                                |
00FF30D4  | 74 0A                 | je silver.FF30E0                                         |
00FF30D6  | E8 15000000           | call <silver.draw_memory_metrics>                        |
00FF30DB  | A1 D00E2501           | mov eax,dword ptr ds:[<debug_metric_flags>]              |
00FF30E0  | A8 04                 | test al,4                                                |
00FF30E2  | 74 05                 | je silver.FF30E9                                         |
00FF30E4  | E8 F7070000           | call <silver.draw_entity_memory_usage>                   |
00FF30E9  | 8BE5                  | mov esp,ebp                                              |
00FF30EB  | 5D                    | pop ebp                                                  |
00FF30EC  | C3                    | ret                                                      |

Unused Text in Memory

Hmmm...
To do:
Describe the importance of the text.

0x4BCDFC in the game's executable contains a bunch of weird text strings:

Baked potatoes can be very hot
Don't put babies near hot fat
Organic tomatoes make you grow breasts
David could be gay
Pascal bracket style can result in ridicule
Cigarettes can damage your health
Artists
Silver can only help you lose weight as part of a calorie controlled diet
Your house is at risk if you do not keep up repayments
Empty vessels make the most noise
The Truth is out there
The End is Nigh
Don't put your daughter on the stage Mrs Worthington
Microwave ovens can damage your mobile phones