Under the microscope: Heroes of Might and Magic: Quest for the DragonBone Staff (PlayStation 2)
Another Big Head Mode code
In this edition, I’m examining Heroes of Might and Magic: Quest for the DragonBone Staff for PlayStation 2. This was one of several Might and Magic games published by The 3DO Company before it closed up shop and sold the series to Ubisoft.
If you search for this game on the cheat sites, you won’t find anything. Do you have to grind through the hard way? No – there are nine cheat codes lurking in the game’s code that managed to stay hidden for 25 years.
This article describes how I located these codes, and how you can use them to get extra gold; boost your stats; and (checks notes) play as characters with giant heads.
Finding the cheats
The first thing that caught my eye in this game’s data were these strings:
013facff "You gain +1000 Gold"
013fad14 "You reveal the map"
013faf53 "+1000 Leadership"
013faf18 "Big Mode"
003dea00 "AutoPlay Mode Enabled"Ghidra showed references to all of them in the function at 00151f10. But none of the code that uses the strings is executed unless the 4-byte value at 001dcd88 is nonzero. Here’s some of the relevant logic, adapted from Ghidra’s decompilation:
if cheat_mode_001dcd88 != 0:
allow_cheats ^= 1
if allow_cheats == 0:
display_string("Cheating off")
else:
display_string("Cheater")
if allow_cheats != 0:
if gold_cheat_enabled:
gold += 1000
display_string("You gain 1000 Gold")Tracing references to cheat_mode_001dcd88 leads to the function at 00190960. This is a surprisingly over-engineered cheat code detection function: it can handle input from eight controllers, but it’s only configured to look at the one in port 1.
The cheat code detector function is driven by a linked list data structure. Each element of the list has:
A pointer to the next element.
Binary data that defines a button sequence (using standard PS2 bit pattern-to-button mappings).
A callback function that runs when a cheat is fully entered.
The callback function that sets cheat_mode_enabled is triggered by this button sequence:
001dce32 0x0080 # Left
001dce42 0x0080 # Left
001dce52 0x4000 # X
001dce62 0x4000 # X
001dce72 0x0040 # Down
001dce82 0x0080 # Left
001dce92 0x4000 # XOnce cheat_mode_enabled is set, you can activate the cheat effects below.
Using the cheats
First, enter this sequence: Left, Left, X, X, Down, Left, X. You have to do it in under two seconds. If you got it right, the string CHEATER appears in the corner of the screen:
The other eight cheats are:
Gain 1000 Gold: Right, Right, Triangle, Triangle, Down, Left, X
Reveal the map: Left, Left, X, Triangle, Left, Down, X
Sailing Map: Up, Down, Triangle, X, Left, Down, X
+1000 Leadership: Triangle, X, X, Left, Down, Right, Up, X
Magic Power: Triangle, X, X, Up, Left, Down, Right, X
Archmage: Down, Up, X, Triangle, X, Triangle, X
Big Mode: Up, Down, Triangle, X, Up, Down, Triangle, X
AutoPlay Mode Enabled: Up, Left, Down, Right, Triangle, X, X, Triangle
Here is the default starting map compared to the fully-revealed one:
And here is how “Big Mode” looks:
Outro
For more on games with “big head mode” codes, see the articles on Anarchy in the Nippon, Blues Brothers 2000, Championship Motocross, NCAA Basketball Final Four 97, and Tennis Arena.
I’ll be back with more Rings of Saturn soon. Subscribe here on Substack to get the next retro game reverse engineering article as soon as it’s published:





