- 5,256
- Posts
- 17
- Years
- Age 27
- Leicester, UK
- Seen Mar 31, 2025
Manipulating Map Banks
Backup your ROM before making changes!You need:
- Advance Map
- HxD or another Hex Editor (this tutorial will reference HxD keystrokes and shortcuts)
- Notepad
- Windows Calculator: Programmer Mode (Programmer Mode can be accessed doing the keystroke Alt + 3)
- FSF (or the ability to find free space in a Hex Editor - it really isn't that hard)
- A FireRed BPRE ROM
Load your ROM in HxD.
Repointing Map Banks
The offset that control map banks is located at 0x05524C.In HxD, do the shortcut Ctrl+ G and enter 5524C.
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/AIs63.png)
At that offset, you can see the data:
Code:
[FONT="Courier New"]A8 26 35 08[/FONT]
Code:
[FONT="Courier New"]A8 26 35 08
[B]Reverse order of bytes:[/B]
08 35 26 A8
[B]Remove 08:[/B]
35 26 A8[/FONT]
In HxD, do the shortcut Ctrl + G and enter 3526A8.
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/tYQbU.png)
The data here lists pointers that point to each map bank.
In HxD, do the shortcut Ctrl + E. In the Length: field, select hex and enter AC.
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/RRxN4.png)
Do the shortcut Ctrl + C to copy the selected block of data to your clipboard.
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/cngRv.png)
Open Notepad and do the shortcut Ctrl + V to paste the block of data.
Using FSF (or just manually in HxD), find an offset that has room for 0xAC (or dec 127). I'm going to use the offset 0x800000. Take note of the offset in Notepad, and turn it into a pointer (the opposite of what we did before):
Code:
[FONT="Courier New"]80 00 00
[B]Reverse the bytes:[/B]
00 00 80
[B]Add 08:[/B]
00 00 80 08[/FONT]
Replace the data
Code:
[FONT="Courier New"]A8 26 35 08[/FONT]
Code:
[FONT="Courier New"]00 00 80 08[/FONT]
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/lV0jx.png)
Now go to your new pointer, so in my case 0x800000, using Ctrl + G, and then go back into Notepad.
Select the data you pasted earlier (04 20 35 08 18 20 35 08...) and in HxD do the shortcut Ctrl + B to overwrite the FF free space.
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/UJEKI.png)
Congratulations, you've now repointed your Map Bank table. When you load your ROM in Advance Map, you will get an error message, but it won't affect anything. I think editing the INI files will fix this error message but I can't find the data you need to change.
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/3hchq.png)
Adding, removing and changing maps in Banks
Each pointer (XX XX XX 08) in this table points to another table which has pointers for each map.The first pointer, which corresponds to the first map bank, Bank 0, 04 20 35 08, when rearranged, points to 0x352004. At 0x352004, the five pointers point to the five maps in Bank 0.
With this knowledge, we can add, remove, or change the maps in each bank by changing the offsets that each Bank points to. To make this easier, we should repoint each bank. For this tutorial, I'm just going to repoint Bank 0.
First, we're going to need to copy the data at 0x352004. Since there are five maps in Bank 0, there are also five pointers, and each pointer is four bytes long, we're going to need to select 0x14 (dec 20) bytes of data - that's five multiplied by four (if you don't know that 5 * 4 = 20 already, smh).
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/gs5lw.png)
To select the data, do the shortcut Ctrl + E at 0x352004, and in the Length: field, enter 14, making sure that hex is selected. Copy and paste the selected data in Notepad.
Using FSF, or manually, find an offset with at least 20 bytes of space free (more if you want to add more maps to a bank). I'm going to use the offset 0x8000B0. Copy the data you just pasted into Notepad, and then do the shortcut Ctrl + B at your new offset to replace the FF free space with the data for the maps in Bank 0.
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/G3209.png)
Convert the offset where the maps at Bank 0 are located by doing the process we did before:
Code:
[FONT="Courier New"]80 00 B0
[B]Reverse the bytes:[/B]
B0 00 80
[B]Add 08:[/B]
B0 00 80 08[/FONT]
Go back to your new bank table, which is 0x800000 for me, and replace the pointer to the maps in Bank 0, or whatever bank you're editing, with your new pointer.
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/bEt3i.png)
You've now repointed Bank 0, meaning you can now just add, remove, or change the pointers to whichever map you'd like.
It's pretty straightforward, but in case you're not sure, here's an example.
(The following could probably apply to Banks instead of Maps, but I'm not sure)
Say I want to remove the map 0.1 from Bank 0 (this won't remove it from the game, the data is still there, it's just inaccessible). That's this map:
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/al7I2.png)
Well, that map is the second map along, so it will be the second offset.
Code:
[font="Courier New"]A4 F1 34 08[/font]
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/3R3sT.png)
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/kPiui.png)
Of course, by doing this, we're going to have a duplicate of the last map, but we can just overwrite that offset with free space (FF FF FF FF).
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/nhCyA.png)
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/pBSYA.png)
Similarly, you can add maps to Banks by adding their offset to the end of the table. For example, this time I'm going to add Pallet Town (3.0) to Bank 0. Pallet Town's offset is 18 06 35 08, so by adding that to the end of the table, the last map in Bank 0 will now be Pallet Town.
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/ScpzV.png)
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/we6a6.png)
Note that Pallet Town will still be in Bank 3, so you'll have to remove it from there to save space.
I hope this tutorial will be helpful, it's a good way to keep things organised for we OCD folk (for example, if your starting town has more than four interior maps, you can expand Bank 4 and not overflow into Bank 5 and making things all confusing).
![[PokeCommunity.com] Manipulating Map Banks [PokeCommunity.com] Manipulating Map Banks](https://i.imgur.com/3hchq.png)
I haven't found any adverse side effects except for the error message upon loading, but that isn't too much of a problem. Sometimes, however, Advance Map won't let you collapse the From header folder, so to fix that, load a working ROM, open the folder, and then load your ROM. This isn't ideal, so if anyone has a solution for that, I'm all ears :3 (I'm almost 100% sure it involves editing the INI files)
Last edited: