Back to Index | Back to Tutorials | More Settings | Even More Settings


Graphics Fixing Tutorial

I learned everything I know from reading the technotes and experimenting. Some parts of this are direct quotes.

Quick Example For this you will need the Debug Builder, the rom Mega Man X (U) (V1.1).smc.

Step 1) Build snesadvance.gba with Megaman X (using the Debug Builder). Open it in VisualBoy Advance.

Step 2) In VisualBoy Advance, go to Tools -> Memory Viewer.

Step 3) You should be presented with a screen like this :

Change the following things :

Step 4) Yes, I copied those steps from the Fix Tutorial. Hold L+R and hit buttons to get ingame. You should see:

The highlighted numbers show how the SNES VRAM is laid out, representing it with a 32-bit bitmap; 1 bit per 2Kb of VRAM. BG?C and OBJC are tile data for backgrounds/sprites. BG?S is screen data (contains the tile layout of each background).

Step 5) BG1+2 both use 16-color tiles so are safe to overlap; BG3 uses 4-color tiles. By default, BG3C overwrites the last part of BG1+2C. OBJC overwrites the BG's, but even though it uses 16-bit color, sprite and background tiles are stored in different areas on the GBA, BGxC and OBJC can't overlap.

The problem in Megaman X is that BG3 is overwriting and corrupting BG1+2:

The solution is to trim the overlapping 'F' from BG3. This is done by entering a value into the 'Even More Settings' box in the builder. If you look at my list, you'll see that to trim one 'F' from the left of BG3 we would enter 0x040000.

There are many other situations; for instance, the SNES supports prioritizing individual background tiles, while the GBA does not; this is particularily evident in games such as Secret of Mana. Some games may be simply unfixable at this time. If one layer is covering another, try toggling it's priority (press CTRL+1,2,3 or 4 in VBA to toggle layers). If a layer is glitchy and unfixable, just trim it completely. Good luck!

And now, on to the settings...

More Settings - Used for making BG3 low priority and fixing tile priorities within a single layer (by using 2 GBA BG's for one SNES BG, with differently prioritized tiles going into different GBA BG's).

Priority

Tile Priority - *YOU CAN ONLY DOUBLE 1 SNES BACKGROUND AT A TIME!*
NOTE: Convert the following binary numbers to hex.

Ex: Blank tile number = 9 (as found in VBA tile viewer), need to fix tile priority for SNES BG1. 9 in binary is 1001. To combine tile priority fixes with 'Force BG3 Low Priority', simply add 0x1000 to the double BG fix; ie 0x409 + 0x1000 = 0x1409.

Even More Settings - I feel it's pretty self explanatory if one reads technotes.txt, but here goes:
Priority

The above can be added to combine effects with each other as well as the trimming values.

Trimming
You can add these together to trim more than 1 BG at a time.

-sephiroth2k


Back to Top | Back to Index | Back to Tutorials