|
||||||||||||||
Under the Microscope: Steam-Heart’sSteam-Heart’s is a game for Saturn that combines passable shoot-em-up gameplay with NSFW anime scenes. The visuals are less explicit in the Saturn version than the PC-98 original, but some of the scenes are still somewhere between disturbing and offensive. I’m not here to judge; I’m here to ask “can we cheat at this game?” One code has been known for ages: during gameplay, pause and enter this sequence to make yourself invincible: Up, Up, Down, Down, Left, Right, Left, Right, B, A . Where there’s one code, there are often more. I found these cheats, none of which seem to have been documented before:
Details are below! Unlock all stagesHold A+B while pressing Start at the title screen. When you get to the Start Stage screen, you’ll see that all stages are unlocked and available to play: The bonus Visual Test item in the “Extra option” screen will be available. This allows you to see the (NSFW) scenes that play between stages. Disable enemiesHold X+Y+Z while pressing start at the title screen and you’ll find that the stages have no enemies! It’s very strange to play. Show hit boxesHold L+R while pressing Start at the title screen to turn on hit box display. This isn’t terribly useful, but it looks cool when lots of things are on the screen. Upgrade weaponsHold A+C when pressing Start to upgrade your weaponry. You can execute high powered attacks during gameplay, which is of course quite useful. Technical detailsThis bit of code stood out to me when I was looking for places where the game handles input. Here I’ve added labels to Ghidra’s decompilation: // Hold X+Y+Z, press Start if ((((p1_held & 0x70) == 0x70) && ((p1_pressed & 0x800) != 0)) || (((p2_held & 0x70) == 0x70 && ((p2_pressed & 0x800) != 0)))) { cheat_flags = cheat_flags | 1; } // Hold L+R, press Start if ((((p1_held & 0x88) == 0x88) && ((p1_pressed & 0x800) != 0)) || (((p2_held & 0x88) == 0x88 && ((p2_pressed & 0x800) != 0)))) { cheat_flags = cheat_flags | 2; } // Hold A+C, press Start if ((((p1_held & 0x600) == 0x600) && ((p1_pressed & 0x800) != 0)) || (((p2_held & 0x600) == 0x600 && ((p2_pressed & 0x800) != 0)))) { cheat_flags = cheat_flags | 4; } // Hold A+X, press Start if ((((p1_held & 0x440) == 0x440) && ((p1_pressed & 0x800) != 0)) || (((p2_held & 0x440) == 0x440 && ((p2_pressed & 0x800) != 0)))) { cheat_flags = cheat_flags | 8; } // Hold A+B, press Start if ((((p1_held & 0x500) == 0x500) && ((p1_pressed & 0x800) != 0)) || (((p2_held & 0x500) == 0x500 && ((p2_pressed & 0x800) != 0)))) { stages_available = 9; }The cheat_flags variable is the 16 bit value at 0605d708 . The stages_available variable is the 16 byte value at 0605d71e . Interestingly, there’s handling for a “Hold A+X, press Start” code. But as far as I can tell, it doesn’t do anything — nothing seems to check for bits it sets in the cheat_flags value. OutroFor more on Steam-Heart’s, see Peter Malek’s #BestOfSaturn post on it. And for more Saturn hacks and cheats, see the archive of my posts here on SHIRO!. I’ll be back next week with another one! You can also check out my Substack blog , where I write about using reverse engineering tools on retro games on various systems.
|
||||||||||||||