Under the microscope: Hyper Duel & Blast Wind (Saturn)
Horizont-Al and Verti-Cal
In this edition I’ve got a couple of new cheat codes for some games from Technosoft:
Hyper Duel, the horizontal shoot-em-up that was released for Saturn in late 1996.
Blast Wind, the vertical shoot-em-up that was released for Saturn in late 1997.
Both of these games have hidden “free play” modes. Normally they’re unlocked when you successfully complete the games. But I found cheat codes that enable them with special button sequences.
Details about the cheat codes and the reverse engineering involved in locating them are below!
Hyper Duel
Navigate to the Option > DIP Sw Assignments screen, hold L and R, and then enter this sequence:
(Holding L+R) Up, Right, Down, Left, A, Y, C, StartYou’ll hear a sound effect if you got it right, and the cursor will switch to highlight the 4th bank of dip switches. Use the arrow keys to navigate to #5 and press C to flip it on.
Once the switch is flipped, press B until you’ve left the DIP switch screen. When you come back to it, you’ll see that there’s a new choice under Credit: Freeplay.
This gives you unlimited credits, of course:
Blast Wind
Navigate to Option > DIP Switch. Then enter this sequence while holding hold L, R, A, C, and Y:
(Holding L+R+A+C+Y) Up, Left, Down, Right, X, B, Z, StartAs in Blast Wind, you’ll get a sound effect if you got it right and the cursor will move into the the fourth bank of DIP switches. Switch #5 also enables Freeplay in this game.
You now have as many continues as you need to get through the game:
Technical details
I knew from reading cheat sites (like GameFAQs) that both Hyper Duel and Blast Wind had unlockable settings. I wanted to figure out how those worked, so I used the Mednafen debugger to export memory snapshots while I was on the Options screens. I imported those snapshots into Ghidra using the SH-2 instruction set in order to look at the game’s code.
There are plenty of plaintext strings loaded in memory that are associated with the DIP Switch settings screen. For example, Blast Wind has:
0603365c "[C1EASY[C0/[C1NORMAL[C0/[C1HARD[C0/[C0VERY HARD"
060336bc "[C02[C0/[C13[C0/[C14[C0/[C15[C0/[C1FREEPLAY"Tracing references to those strings leads to the function at 0602dc14, which is the main handler for the DIP Switch settings screen. It has some logic that caught my eye:
I know from analyzing lots of Saturn games that checking whether the logical AND of a flags field and the value 0x88 is equal to 0x88 is “check whether L and R are being held.” That’s because most Saturn games represent R being held as 0x80 and L being held as 0x08.
The function at 0602e620 does more checking of which buttons you’re holding. If you’ve also got A+C+Y held, it changes tthe counter at 06053086 when you press Up:
Down, Left, Right, X, B, Z, and Start also increment the counter. Once it hits 7, the function returns 1. This signals that the cheat sequence has been entered successfully.
Very similar things are happening in Hyper Duel. The main function for the DIP switches screen is at 0602c156. It also checks for L+R and then increments a counter (at 06050677) when you press a button in the sequence it’s checking for.
As far as I can tell, the only DIP switch that does anything in either game is #5. If you find otherwise, let me know!
Outro
Many thanks to everyone who played and wrote about my Sonic R patch last week! Which other Saturn games should I be modding? Give me your suggestions in the comments.
I’ll have more retro game reverse engineering articles out soon. Subscribe here on Substack to get those as soon as they’re published:












Love the plaintext string tracing approach. That's always the goldmine for reverse engineering options screens since devs rarely obsucre UI text. The L+R button check pattern at 0x88 is such a common Saturn convention, makes me wonder if Sega published internal guidelines for controller handling that everyone followed.