Back to Index | Back to Tutorials
This is a slightly updated version of my old fixing tutorial. I'd recommend trying SnesAdvance Tools first (if a game can be fixed in the way specified here, they'll probably work).
You can post and request fixes in the Fixes & Speed Hacks thread.
I'm starting off with this as opposed to speed hacking because it's much easier. Once you've completed this, look at loopy's guide (technotes.txt in the debug zip) and try and figure it out. This is a tutorial for those with no programming experience.
TECH NOTE : This is a fix for SPC loops; 95% of fixes are of this type. The reason is that SNES Advance doesn't emulate the SPC (sound) chip: games go into loops to work with the SPC, terminating the loops when SPC responds. Since the SPC never responds, they get stuck. What the fixes do is patch the ROM to skip the loop.
Most loops take the form of:
Step 1) Download the debug version of SNESAdvance here.
Step 2) Download Visualboy Advance here.
Step 3) For this tutorial we'll use the rom Zombies Ate My Neighbors (U). Acquire this on your own.
Step 4) Now that you've got the necessary components, it's time to build a SNESAdvance GBA rom containing Zombies Ate My Neighbors (U). Extract and run snesadv_debug.exe. Browse to the rom and add it.
Step 5) Now you have a rom called snesadvance.gba (or whatever you've named it). Open the rom in Visualboy Advance.
Step 6) Now the interesting part. In VisualBoy Advance, go to Tools -> Memory Viewer.
Step 7) You should be presented with a screen like this :
Change the following things :
Step 8) Alright, you may have noticed the main emulator window is still present, but is inactive. Click on that window to make it active, and start the game. Hold down R (GBA R, not PC R) to run it continuously. You should see this :
As you may have deduced, this is the game not working. Take a gander at the memory viewer while holding down the R button:
You should see a whole helluva lot of numbers flying by. Look at the numbers at 2030020 (it's what's circled). These are what concern you. You should notice that they are repeating; this is what is known as a loop. Hit L a few times till you get the pattern. Now what you're looking for is the start of the loop.
Since this is a *basic* tutorial, I'll just list the possible loops:
The loop number is circled in blue. This is hex for an opcode, or an instruction for the SNES CPU. Ignore the yellow and green circles; I just got MSPaint happy (it's late, OK?)
Step 9) That was a long step. Now, there's two ways to teach this - and I'm going to do the easy way, because if you're here it's probably because you didn't understand loopy's tutorial. Use this formula to replace the loop:
Step 9) Now you've got your fix : EAEA. But where to put it? Select 32-bit, then type 2030028 in the Address box and hit Go. You should see:
See the numbers circled in red? That's the rom location you need to patch.
Step 10) Now to put this information together. Open snesadvance.dat in notepad. In it, you should see the following line:
Now try it with another game. Then read loopy's tutorial to understand the principles behind fixes.
-sephiroth2k