• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

How to expand Map Headers in FireRed to use names 0xC5-0xFC

42
Posts
2
Years
I THINK I'VE FIXED THE ISSUE, CREDITS TO STAR_DUST FOR HELPING ME FIX THIS

HOW TO USE MAP HEADERS C5-FC

By Map Headers I mean being able to use Map Names C5-FC

I created a this thread after posting this tutorial in its original thread here https://www.pokecommunity.com/showthread.php?t=212492&page=2
I hope that was ok....😅

This is my first time writing a tutorial but I'm gonna try explaining everything in as much detail as I can.

In this tutorial I will show you step by step how to expand map headers in FireRed to be able to use names 0xC5-0xFC.
That gives you a additional 56 names for a total of 165 usable names and a grand total of 253 names.

Before I start, this tutorial is based off of research done in this post https://www.pokecommunity.com/showthread.php?t=212492 and I credit EVERYONE who contributed to that research. So then why am I writing this tutorial if theres another post? Because the research did a excellent job in giving all the needed offsets to expand the names but was very vague on somethings that I spent hours and hours trying to figure out and some key details were left out that were VERY important so it was hard for someone like me who just started hacking 6 months ago to figure out how to implement the new names.

I am going to do this on a clean FireRed rom.

BEFORE PROCEEDING PLEASE NOTE THAT AFTER EXPANDING THE NAMES THE WORLD MAP EDITOR IN A-MAP 1.92 WILL NO LONGER WORK(If anyone knows how to get around the world map editors errors after expanding the names then please let me know.) YOU WILL HAVE TO MANUALLY EDIT THE WORLD MAP FROM HERE ON OUT.
Trust me, It's more time consuming to edit the world map manually but It's really not as bad as I thought it was gonna be. I will link a couple tutorials on how to manually edit the world map plus I will go over it a little bit at the end of the tutorial.

ALWAYS, ALWAYS, MAKE A BACKUP OF YOUR ROM BEFORE DOING THIS. I AM NOT RESPONSIBLE IF YOU BREAK YOUR ROM.

So now Step 1 is to open your rom in Advance Map 1.92 and click on the World Map Editor. Click the button that says "Change Routines" and save and exit. This MUST be done because the limiting byte offsets were based off of a rom that had been modified with A-Map. If you don't believe me, try comparing one modified routine rom and one unmodified routine rom then go to some of the limiting byte offsets and the offsets for the world map flag data layer 1 and layer 2 and you'll see what I mean.

Step 2:
Open your rom in a Hex Editor, I will be using HxD.
What we are about to do is copy all the tables and insert them into there each individual files. For example we are going to copy a table then click create new file in your hex editor of choice then paste the copied code into the new file and save it. We will be copying all the tables before repointing and extending them. I did this to avoid a headache...lol but you don't have to copy the tables into new files if you don't want to.
Now, go to offset 0x3F1E60.
This is the World Map Location Data Table. Basically this table tells the game where the position of the Map Name on the world map. There are 0xC5 entries at 0x4 bytes a piece for a total of 0x318 bytes. The order is exactly the same as the order of names so for example Pallet Town is 0x1 and Birth Island is 0x63(map name 99 in decimal).
When adding new entries to this table they MUST be in the same order as your "Names Data", I'll go into more detail on that when we go to edit the World Map.

Example entries:
"Pallet Town, 0x1" 04 00 0B 00.
"Birth Island, 0x63" 12 00 0D 00.
The first byte is the X Coordinate on the world map, the second byte is always 00. The third byte is the Y Coordinate on the world map. And finally the last byte is the same as the second byte and is always 00.

Step 3:
Select the World Map Location Data Table of 0x318 bytes and right click, copy and then click "File" then "New" and paste insert into the new file and save it as "World Map Location Data Table.hex"

OPTIONAL:
You could use the files of my already extended tables and all you would have to do is insert them into free space then place a pointer to the respective table. If you would like to use my files then you can skip to Optional Step 2, otherwise continue to Step 4.

Step 4:
Now that you have copied the World Map Location table into a new file, you wanna add 00's from the end of the table up until offset 0x3F7 and your file should be 0x3F8 bytes in length. Save your file and let's continue.

Step 5:
Go back into your Rom and go to offset 3F2178.
This is the World Map Movement Bytes Data Table.
This table controls the players head on the World Map.
This table I'm not entirely sure what the byte format is but when I learn more of this I will update this section of the tutorial.
This table is also 0x318 bytes long so copy the table from the rom and again create a new file and paste insert the code into the file. Click save and save it as "World Map Movements Data Table.hex"
Now that you have saved your new file, you wanna add 00's from the end of the table up until offset 0x3F7 and your file should be 0x3F8 bytes in length. Save your file and let's continue.

Are you confused yet? Lol it's very confusing at first but if theres anything your not sure of please ask away!

Step 6:
Next up the Names Data Table. For this next step it is HIGHLY recommended to use "HexManiacAdvance" for repointing and adding your additional 56 names.
Now open HexManiacAdvance and click Data, Maps, Names.
Now click on the last entry of the table "Celadon Dept." and the "Add 1 New" button should light up. Click this button and add 56 new names.
HexManiacAdvance will automatically repoint this table to Free Space and update the respective pointers so theres no need to worry about overwriting anything :).
Once you have added your additional names you can save your Rom and close HexManiacAdvance.

NOW IS A GOOD TIME TO MAKE A BACKUP OF YOUR ROM :)

Step 7:
Open back up your hex editor of choice, for me I'm using HxD.
Open up your FireRed Rom and go to offset 3F2EE0 and is 0x144 bytes.
This table like Jambo51 said is hard to explain but I'm gonna try my best. This table is the Flight Data Controller and the Table contains 67?(I think) entries at 3 bytes each and each entry tells the game which maps have Fly Spots assigned to them and are as followed.
Map Bank byte 1
Map Number byte 2
Fly Spot Number byte 3
Now copy the table and again create a new file and paste insert and save it as "Flight Data Controller.hex"
What I did to extend this table is I inserted 03 00 00 for each additional entry for now(Assuming that you will be using fly spots with the new names). Which basically means Map Bank 3, Map 0, Fly Spot 0. Your extended table should be 0x1EC bytes in length. Now open up Free Space Finder and find 0x1EC of free space. This is the first table we are gonna repoint and insert into our Rom.

Once you've inserted into free space, go to offset 0C52A8 and place a 4 byte pointer to your new table. For example if I inserted this table into free space 71A596 I would reverse this into 96 A5 71 and add my prefix which is 08(or 09 for expanded roms) so I would put 96 A5 71 08 at 0C52A8.

Step 8:
Now we are going to insert and repoint the other tables.
Go to your file "World Map Location Data Table.hex" and copy the whole table, now again in Free Space Finder find 0x3F8 of free space and insert the table into your Rom.
Now go to offset 0C3D3C and place a 4 byte pointer to your new table. If you need a example of a 4 byte pointer, read the end of the previous step :).

Step 9:
Now do the same for World Map Movements Data Table.hex
Select the whole table, find some free space and insert the table into your rom. Now go to offset 0C3D38 and place a 4 byte pointer to your new table.

THIS NEXT PART I'M UNSURE OF BUT IT WORKED FOR ME SO KEEP THAT IN MIND....

FOR WORLD MAP FLAG DATA LAYER 1 & LAYER 2:

I think.....I could be wrong but I haven't ran into any problems yet.....

Remember how I said at the beginning to use A-Map World Map Editor to change routines for your rom? I think this is why....

In a unmodified routine rom, I could not find the tables for world map flag layer 1 or layer 2 no matter what I looked for but in a modified routine rom the tables are at offsets 0C3654 for Layer 1 and offset 0C38C8 for Layer 2 and are 0xDC and 0x90 respectively.

I think these tables were extended when you changed routines in A-Map because if you add both table entries together minus the limiting word "FF FF 00 00" you get 0xA5(if I remember right) entries which 165 in decimal. And 165 is the total of usable names you will have once this tutorial is over. So I didn't repoint or extend the flag data tables. I changed one of the "FFFF" flags and used it in a script and it seemed to work fine for me.


THIS NEXT PART I'M SURE OF (Sorry for not being sure on the world map flag data)

Now we come to the Limiting bytes:

Change all values of C5 to FD at these offsets:
0xC0080 - 0xC5 to FD
0xC00CC - 0xC5 to FD
0xC0BE6 - 0xC5 to FD
0xC067A - 0xC5 to FD
0xC482C - 0xC5 to FD
0xC4830 - 0x8D to C5
0xC0B32 - 0xC5 to FD

Again change all values of C5 to FD:

These are the actual routines that read map data.
0xC3538 - 0xC5 to FD
0xC3570 - 0xC5 to FD
0xC3598 - 0xC5 to FD
0xC35BC - 0x8D to C5
0xC35CC - 0xC5 to FD
0xC41D0 - 0xC5 to FD

Last but not least change these values to there respective values
At 0xC3880 change 7E 38 47 28 to 00 00 FF 28
0xC4D8A - 0x6C to A4
0xC35E6 - 0x6D to A5
0x13B844 - 0x6C to A4

Now the final step....editing your Advance Map INI File:
Since we can't use A-Map 1.92's World Map Editor anymore, I will be editing A-Map 1.95's INI file.
Open your A-Map INI file(its in your A-Map program folder under the folder Ini and labeled "AdvanceMap.ini" now scroll down til you see BPR.
Under BPR you will see "AnzMapNamen=109" change 109 to 165 and save it.
Now open A-Map and go to any map and click under the Header Tab. Now if you did everything correctly, you should be able to see your new map names.
Now go ahead and assign a map a new name and test it out! :) the name pops up doesn't it?

THE NEXT PART OF THE TUTORIAL I WILL GO OVER HOW TO MANUALLY EDIT THE WORLD MAP AND EVEN SHOW HOW TO ASSIGN THE NEW MAP NAMES TO SPECIFIC WORLD MAPS. I WILL ALSO HAVE A COUPLE TUTORIALS LINKED THAT GO OVER WHAT IM GONNA GO OVER.

EVERYTHING YOU COULD DO IN A-MAP WORLD MAP EDITOR YOU CAN MANUALLY DO WHICH ISNT THAT BAD I PROMISE.

I WILL ADD THE SECTION HOW TO MANUALLY EDIT THE WORLD MAP TOMORROW :)

I hope my tutorial helps you! If you have questions please ask! If I'm wrong about any of the information given here please let me know!

TODO LIST:
Add Pictures to better help understand the process.
Polish and organize the tutorial a little better.
 
Last edited:
42
Posts
2
Years
Star_Dust found a error in this tutorial. When accessing the world map in any way whether it be from the town map or from trying to use fly the game freezes and gives a black screen. I am working on a way to fix this as I missed something very important. I will update this tutorial when I've found a solution. I'm also gonna make a video and attach it to this post to explain things a little bit better.
 
Last edited:
42
Posts
2
Years
THERE IS A PROBLEM WITH THIS TUTORIAL WHEN OPENING THE WORLD MAP, I'VE MISSED SOMETHING CRITICAL I'LL EVENTUALLY FIND A FIX

HOW TO USE MAP HEADERS C5-FC

By Map Headers I mean being able to use Map Names C5-FC

I created a this thread after posting this tutorial in its original thread here https://www.pokecommunity.com/showthread.php?t=212492&page=2
I hope that was ok....😅

This is my first time writing a tutorial but I'm gonna try explaining everything in as much detail as I can.

In this tutorial I will show you step by step how to expand map headers in FireRed to be able to use names 0xC5-0xFC.
That gives you a additional 56 names for a total of 165 usable names and a grand total of 253 names.

Before I start, this tutorial is based off of research done in this post https://www.pokecommunity.com/showthread.php?t=212492 and I credit EVERYONE who contributed to that research. So then why am I writing this tutorial if theres another post? Because the research did a excellent job in giving all the needed offsets to expand the names but was very vague on somethings that I spent hours and hours trying to figure out and some key details were left out that were VERY important so it was hard for someone like me who just started hacking 6 months ago to figure out how to implement the new names.

I am going to do this on a clean FireRed rom.

BEFORE PROCEEDING PLEASE NOTE THAT AFTER EXPANDING THE NAMES THE WORLD MAP EDITOR IN A-MAP 1.92 WILL NO LONGER WORK(If anyone knows how to get around the world map editors errors after expanding the names then please let me know.) YOU WILL HAVE TO MANUALLY EDIT THE WORLD MAP FROM HERE ON OUT.
Trust me, It's more time consuming to edit the world map manually but It's really not as bad as I thought it was gonna be. I will link a couple tutorials on how to manually edit the world map plus I will go over it a little bit at the end of the tutorial.

ALWAYS, ALWAYS, MAKE A BACKUP OF YOUR ROM BEFORE DOING THIS. I AM NOT RESPONSIBLE IF YOU BREAK YOUR ROM.

So now Step 1 is to open your rom in Advance Map 1.92 and click on the World Map Editor. Click the button that says "Change Routines" and save and exit. This MUST be done because the limiting byte offsets were based off of a rom that had been modified with A-Map. If you don't believe me, try comparing one modified routine rom and one unmodified routine rom then go to some of the limiting byte offsets and the offsets for the world map flag data layer 1 and layer 2 and you'll see what I mean.

Step 2:
Open your rom in a Hex Editor, I will be using HxD.
What we are about to do is copy all the tables and insert them into there each individual files. For example we are going to copy a table then click create new file in your hex editor of choice then paste the copied code into the new file and save it. We will be copying all the tables before repointing and extending them. I did this to avoid a headache...lol but you don't have to copy the tables into new files if you don't want to.
Now, go to offset 0x3F1E60.
This is the World Map Location Data Table. Basically this table tells the game where the position of the Map Name on the world map. There are 0xC5 entries at 0x4 bytes a piece for a total of 0x318 bytes. The order is exactly the same as the order of names so for example Pallet Town is 0x1 and Birth Island is 0x63(map name 99 in decimal).
When adding new entries to this table they MUST be in the same order as your "Names Data", I'll go into more detail on that when we go to edit the World Map.

Example entries:
"Pallet Town, 0x1" 04 00 0B 00.
"Birth Island, 0x63" 12 00 0D 00.
The first byte is the X Coordinate on the world map, the second byte is always 00. The third byte is the Y Coordinate on the world map. And finally the last byte is the same as the second byte and is always 00.

Step 3:
Select the World Map Location Data Table of 0x318 bytes and right click, copy and then click "File" then "New" and paste insert into the new file and save it as "World Map Location Data Table.hex"

OPTIONAL:
You could use the files of my already extended tables and all you would have to do is insert them into free space then place a pointer to the respective table. If you would like to use my files then you can skip to Optional Step 2, otherwise continue to Step 4.

Step 4:
Now that you have copied the World Map Location table into a new file, you wanna add 00's from the end of the table up until offset 0x3F7 and your file should be 0x3F8 bytes in length. Save your file and let's continue.

Step 5:
Go back into your Rom and go to offset 3F2178.
This is the World Map Movement Bytes Data Table.
This table controls the players head on the World Map.
This table I'm not entirely sure what the byte format is but when I learn more of this I will update this section of the tutorial.
This table is also 0x318 bytes long so copy the table from the rom and again create a new file and paste insert the code into the file. Click save and save it as "World Map Movements Data Table.hex"
Now that you have saved your new file, you wanna add 00's from the end of the table up until offset 0x3F7 and your file should be 0x3F8 bytes in length. Save your file and let's continue.

Are you confused yet? Lol it's very confusing at first but if theres anything your not sure of please ask away!

Step 6:
Next up the Names Data Table. For this next step it is HIGHLY recommended to use "HexManiacAdvance" for repointing and adding your additional 56 names.
Now open HexManiacAdvance and click Data, Maps, Names.
Now click on the last entry of the table "Celadon Dept." and the "Add 1 New" button should light up. Click this button and add 56 new names.
HexManiacAdvance will automatically repoint this table to Free Space and update the respective pointers so theres no need to worry about overwriting anything :).
Once you have added your additional names you can save your Rom and close HexManiacAdvance.

NOW IS A GOOD TIME TO MAKE A BACKUP OF YOUR ROM :)

Step 7:
Open back up your hex editor of choice, for me I'm using HxD.
Open up your FireRed Rom and go to offset 3F2EE0 and is 0x144 bytes.
This table like Jambo51 said is hard to explain but I'm gonna try my best. This table is the Flight Data Controller and the Table contains 67?(I think) entries at 3 bytes each and each entry tells the game which maps have Fly Spots assigned to them and are as followed.
Map Bank byte 1
Map Number byte 2
Fly Spot Number byte 3
Now copy the table and again create a new file and paste insert and save it as "Flight Data Controller.hex"
What I did to extend this table is I inserted 03 00 00 for each additional entry for now(Assuming that you will be using fly spots with the new names). Which basically means Map Bank 3, Map 0, Fly Spot 0. Your extended table should be 0x1EC bytes in length. Now open up Free Space Finder and find 0x1EC of free space. This is the first table we are gonna repoint and insert into our Rom.

Once you've inserted into free space, go to offset 0C52A8 and place a 4 byte pointer to your new table. For example if I inserted this table into free space 71A596 I would reverse this into 96 A5 71 and add my prefix which is 08(or 09 for expanded roms) so I would put 96 A5 71 08 at 0C52A8.

Step 8:
Now we are going to insert and repoint the other tables.
Go to your file "World Map Location Data Table.hex" and copy the whole table, now again in Free Space Finder find 0x3F8 of free space and insert the table into your Rom.
Now go to offset 0C3D3C and place a 4 byte pointer to your new table. If you need a example of a 4 byte pointer, read the end of the previous step :).

Step 9:
Now do the same for World Map Movements Data Table.hex
Select the whole table, find some free space and insert the table into your rom. Now go to offset 0C3D38 and place a 4 byte pointer to your new table.

THIS NEXT PART I'M UNSURE OF BUT IT WORKED FOR ME SO KEEP THAT IN MIND....

FOR WORLD MAP FLAG DATA LAYER 1 & LAYER 2:

I think.....I could be wrong but I haven't ran into any problems yet.....

Remember how I said at the beginning to use A-Map World Map Editor to change routines for your rom? I think this is why....

In a unmodified routine rom, I could not find the tables for world map flag layer 1 or layer 2 no matter what I looked for but in a modified routine rom the tables are at offsets 0C3654 for Layer 1 and offset 0C38C8 for Layer 2 and are 0xDC and 0x90 respectively.

I think these tables were extended when you changed routines in A-Map because if you add both table entries together minus the limiting word "FF FF 00 00" you get 0xA5(if I remember right) entries which 165 in decimal. And 165 is the total of usable names you will have once this tutorial is over. So I didn't repoint or extend the flag data tables. I changed one of the "FFFF" flags and used it in a script and it seemed to work fine for me.


THIS NEXT PART I'M SURE OF (Sorry for not being sure on the world map flag data)

Now we come to the Limiting bytes:

Change all values of C5 to FD at these offsets:
0xC0080 - 0xC5 to FD
0xC00CC - 0xC5 to FD
0xC0BE6 - 0xC5 to FD
0xC067A - 0xC5 to FD
0xC482C - 0xC5 to FD
0xC0B32 - 0xC5 to FD

Again change all values of C5 to FD:

These are the actual routines that read map data.
0xC3538 - 0xC5 to FD
0xC3570 - 0xC5 to FD
0xC3598 - 0xC5 to FD
0xC35CC - 0xC5 to FD
0xC41D0 - 0xC5 to FD

Last but not least change these values to there respective values
0xC3882 - 0x47 to 7F
0xC4D8A - 0x6C to A4
0xC35E6 - 0x6D to A5
0x13B844 - 0x6C to A4

Now the final step....editing your Advance Map INI File:
Since we can't use A-Map 1.92's World Map Editor anymore, I will be editing A-Map 1.95's INI file.
Open your A-Map INI file(its in your A-Map program folder under the folder Ini and labeled "AdvanceMap.ini" now scroll down til you see BPR.
Under BPR you will see "AnzMapNamen=109" change 109 to 165 and save it.
Now open A-Map and go to any map and click under the Header Tab. Now if you did everything correctly, you should be able to see your new map names.
Now go ahead and assign a map a new name and test it out! :) the name pops up doesn't it?

THE NEXT PART OF THE TUTORIAL I WILL GO OVER HOW TO MANUALLY EDIT THE WORLD MAP AND EVEN SHOW HOW TO ASSIGN THE NEW MAP NAMES TO SPECIFIC WORLD MAPS. I WILL ALSO HAVE A COUPLE TUTORIALS LINKED THAT GO OVER WHAT IM GONNA GO OVER.

EVERYTHING YOU COULD DO IN A-MAP WORLD MAP EDITOR YOU CAN MANUALLY DO WHICH ISNT THAT BAD I PROMISE.

I WILL ADD THE SECTION HOW TO MANUALLY EDIT THE WORLD MAP TOMORROW :)

I hope my tutorial helps you! If you have questions please ask! If I'm wrong about any of the information given here please let me know!

TODO LIST:
Add Pictures to better help understand the process.
Polish and organize the tutorial a little better.

I have fixed the error, I missed two offsets with two simple byte changes. I'm gonna update the tutorial tonight. Credits to Star_Dust for helping me fix this. Wouldn't have been able to do it without their help 😁
 
1
Posts
9
Years
  • Age 34
  • Seen Feb 3, 2023
On Step 6, i cant seem to find "Data, Maps, Names" in HexManiacAdvance am i missing something?
 
55
Posts
3
Years
  • Age 36
  • Seen Apr 16, 2024
Hey I made all the necessary byte changes but I get the black screen on map problem, any chance you could help?
 
Back
Top