Under the microscope: Radiant Silvergun (Saturn)
It's 2520. Do you know where your stone-like objects are?
Radiant Silvergun is a well-regarded shoot-em-up from Treasure, whose game Silhouette Mirage was previously covered on Rings of Saturn.
I looked into this game’s code a while back, but didn’t come up with anything interesting. But I’ve learned a few new tricks with Ghidra since then, so I decided to revisit it to see if there was anything I missed. This time around I found some cool things:
A strange Easter egg that unlocks all of the game’s bonus options, including a normally-inaccessible INVINCIBLE option.
Some cheat codes that use the second controller to enable the bonus options individually and grant you 99 credits.
Details are below!
The "SRK" Easter egg
Start with a save that doesn’t have any high scores saved. Go to Option > Game Config and set Game Mode to Arcade.
After that:
Exit to the mode select screen.
Add credits by pressing L.
Choose Game Start.
Play until you’ve got just over 240,000 points.
Once you’ve got the necessary number of points, lose all your lives. Make sure you don’t get more than 250,000 points while doing so.
You should have a rank of 77. Enter your initials as SRK:
Now return to the Option screen. The Option+ item will be present, and all of the bonus settings will be available.
I don’t think the INVINCIBLE setting can be enabled any other way, so this is a useful trick.
SRK most likely refers to Treasure programmer Kiyobumi “Fukuryuu” Tsukahara, who is credited with those initials in Dynamite Headdy.
Second controller cheats
There’s another way to get most of the Option+ items shown above. All of these involve using controller 2 to open the Option screen by pressing A+C+Y.
If you just do that, you’ll get access to the Option+ menu item. It will have the Stage Select setting available:
You can enable more of the Option+ settings by holding additional buttons with Controller 2:
Highlight Game Start on the mode select screen
Press and hold Up and then A+C+Y
This will open the Option screen. Option+ will have Stage Select and Game Speed unlocked:
Similarly, hold Down+A+C+Y with controller 2 to unlock the Look HitArea item:
This shows the hitboxes of objects you can interact with:
Left+A+C+Y will get you the Player Speed item:
Finally, Right+A+C+Y will grant you 99 credits (actually 100, but you’ll spend one to start playing):
Technical details
It's well-known that some Option+ items become available when the game's play timer reaches certain values.. For example, this cheat site says that you can get the Game Speed option above if you play for more than 3 hours.
The game’s code bears that out. Here’s some logic from the function at 0607cabc
:
if options_plus_flags & 0x02 == 0x00:
if (saturn_play_time + arcade_play_time > 0x9e33f):
options_plus_flags |= 0x02
The Options+ flags are stored in the byte at 06041972
. The one that enables the Game Speed option is set if your play time, which is stored at 06041994
(Saturn mode) and 06041990
(Arcade mode), exceeds 0009e33f
. That’s in units of 1/60ths of a second:
0x9e33f in hex is 647,999 in decimal.
One unit more than that is 648,000.
648,000 / 60 is 10,800 seconds.
10,800 / 60 is 180 minutes.
180 / 60 is 3 hours.
There is a similar calculation for the Look HitArea option (which requires 12 hours of play).
The calculation for the Player Speed option uses the power up time value (stored at 0601cdd0
) rather than the play time values. You need to have been powered up for 48 hours to enable this item.
Right after those calculations is this logic:
if (DWORD_06041dc8 & 0xffffff00) == 0x53524b00:
options_plus_flags |= 0x1f
It’s not obvious, but this is checking for the SRK name. For whatever reason, the game stores initials as ASCII letters with FF as the terminator. Here is the data in the neighborhood of the 06041dc8
address:
06041dc0 2d2d2dff # Name: "---"
06041dc4 0003d090 # Score: 250,000
06041dc8 2d2d2dff # Name: "---"
06041dcc 0003a980 # Score: 240,000
06041dc8 2d2d2dff # Name: "---"
06041dcc 00038270 # Score: 230,000
These are the default high scores for Arcade mode:
The target address is for rank 77, which is why we had to be sure not to exceed 250,000 points.
Following that code is this logic, which checks for the controller 2 button values:
if p2_held_button & 0x07f8 == (A_BUTTON | C_BUTTON | Y_BUTTON):
options_plus_flags |= 0x01
if (p2_held_button & 0xf00) == UP_BUTTON:
options_plus_flags |= 0x02
if (p2_held_button & 0xf00) == DOWN_BUTTON:
options_plus_flags |= 0x04
if (p2_held_button & 0xf00) == LEFT_BUTTON:
options_plus_flags |= 0x08
if (p2_held_button & 0xf00) == RIGHT_BUTTON:
credits_count = 100
The bit patterns for the buttons are the standard ones used for Saturn games: Up is 0x1000
, Down is 0x2000
, Left is 0x4000
, Right is 0x8000
, A is 0x0400
, C is 0x0200
, and Y is 0x0020
.
Outro
A few parting notes…
(1) Thanks to Alex “trap15” Marshall for suggesting that 53524bff
value represented initials — this was key to figuring out how to activate the Easter egg. Check out Alex’s Radiant Silvergun EXTRA, which has all of the bonus options enabled by default.
(2) Thanks to privateye for figuring out that the SRK initials refer to Kiyobumi Tsukahara. privateye also is incorporating this Action Replay code, which enables all of the bonus options, into Pseudo Saturn Kai:
36041972 001f # Enable all Option+ items
(3) Thanks to Michael Stearns (who is a Radiant Silvergun enthusiast) for checking the PC port for the SRK
Easter egg (it doesn’t work in that version) and for connecting Tsukahara’s pseudonym to his name with the Legends of 16-bit Game Development book.
And thanks to you for reading! Subscribe to get new articles like this every week.
