In this edition:
- There’s a hidden debug mode in Shin Megami Tensei: Devil Summoner, but it’s disabled in the retail version of the game.
- I’ve made a patch to re-enable it — get it from SegaXtreme.
Debug mode
What is Devil Summoner, a single player game based on the Megami Tensei franchise, doing listening for input on controller 2? That’s what I wondered when I was labeling the variables in this bit of decompiled code:
if (((p2_held_060ef982 & 0x0008) == 0) || ((p2_held_060ef982 & 0x0080) == 0)) {
if (((p2_held_060ef982 & 0x0800) == 0) && (flag_00201038 != 0)) {
if ((p2_pressed_060ef984 & 0x4000) == 0) {
flag_00201038 = 1;
*/ ... */
}
Breaking that down, this code is checking controller to see:
- Whether L (bit pattern
0x0008) or R (0x0080) is being held down. - If Start (
0x0800) isn’t being held down. - If Left (
0x4000) is being pressed.
If those conditions hold, the flag_00201038 variable gets set. What’s that do? It brings up the Coordinate Display panel that’s described in the TCRF article for this game.
The code above only executes if the value at memory address 0020000c is nonzero. That isn’t the case normally — this code that executes when you’re on the main menu screen forces it to zero every frame:
do {
enable_p2_controls_0020000c = 0;
menu_input = get_main_menu_input_060288b0();
/* ... */
} while (true)
There don’t seem to be any cheat codes or other tricks for changing this value after the main menu screen. So enabling this second controller functionality requires a game patch or a memory edit.
With the enable_p2_controls_0020000c variable set, you can disable the Coordinate Display panel by pressing L+Right on controller 2.
You can also enable the panel by pressing L+C. Doing it this way also disables collision. This allows you to walk through walls and go out of bounds. L+A will re-enable collision.
L+Start enables the encounter meter. This changes color in areas that have random battles.
My favorite feature is activated with L+Z. This pulls up a screen called 3d maze prm set, which allows you to warp to an arbitrary location. Change the mapno with the controller 1’s D-pad and press C to confirm.

Pressing Start+Z takes you to a similar looking menu called Bit Change. This allows you to change the progress parameters that the game tracks.
Pressing L+B takes you to the Save screen.
L+Y will bring up the Game Over screen.
There are a few mysteries that I couldn’t solve — if you’re a fan of this game, see if you can figure them out:
- Pressing Start+Up / Start+Down adjusts the value of some parameter (stored at
00201034). But this doesn’t have any noticeable effect on gameplay. - Pressing L+X sets a value (at
00204298) that seems to have something to do with the phase of the moon. But I can’t tell what it does beyond that.
Outro
If you like this sort of thing, check out my other Expansion hack archive for more patches that enable extra functionality in Saturn games.
Thanks for reading – I’ll be back again next week with a new Saturn article. In the meantime, check out my blog for more retro game reverse engineering.








Be the first to comment