Adding 0x0 - 0x57 Name Header in Pokemon - Fire Red
This is a method to add more Name Headers to the ROM.
Normally you "only" have name header 0x58 - 0xC4 available,
by following this you can "unlock" name header 0x0 - 0x57 (all these name headers will by default be assigned to WorldMap 0)
Later when I've had time to do some more research I'll write up a method to add 0xC5 - 0xFC, anyway on to the info on 0x0 - 0x57 ;-)
I've been fooling a bit with this and here is my findings:
Working Notes:
Inserting 0x0 - 0x57 Map Name Header using ex described in
New map names in FR #23 by
Jambo51
It's a good idea to have a good look at that post but also others in the thread to understand what you are doing.
- You Need
- Make a Backup of your ROM
- Fixing Unknown World Map Flag Data
- Storing Tables for "transport"
- Cleaning "Old" Tables
Spoiler:
- Open your Pokemon - Fire Red ROM with an Hexeditor
Spoiler:
Goto to offset 0x3F1E60 and mark up 792 bytes (0x318) for cleaning
Fill Selection with "FF"
Making it look like this
- Open your Pokemon - Fire Red ROM with an Hexeditor
Spoiler:
Goto to offset 0x3F2178 and mark up 792 bytes (0x318) for cleaning
Fill Selection with "FF"
Making it look like this
- Open your Pokemon - Fire Red ROM with an Hexeditor
Spoiler:
Goto to offset 0x3F2EE0 and mark up 324 bytes (0x144) for cleaning
Fill Selection with "FF"
Making it look like this
- Open your Pokemon - Fire Red ROM with an Hexeditor
Spoiler:
Goto to offset 0x3F1CAC and mark up 436 bytes (0x1B4) for cleaning
Fill Selection with "FF"
Making it look like this
- Open your Pokemon - Fire Red ROM with an Hexeditor
Spoiler:
Goto to offset 0xC3654 and mark up 220 bytes (0xDC) for cleaning
Fill Selection with "FF"
Making it look like this
- Open your Pokemon - Fire Red ROM with an Hexeditor
Spoiler:
Goto to offset 0xC38C8 and mark up 144 bytes (0x90) for cleaning
Fill Selection with "FF"
Making it look like this
Save your ROM
You now have a Ready ROM to insert your new tables into after that you'll need to re-point all the old pointers to the new tables but first lets create some dummy tables for our 0x0 - 0x57 entries shall we
- Create dummy tables
Spoiler:
Note to this section:
All dummy tables created in this section is based on inserting ALL (0x0 - 0x57) Name Headers, I'll supply each dummy table section with info on assumed size of data/header entry for better understanding of the actual dummy tables.
- WorldMapLocData 0x0 - 0x57
- WorldMapMoveBytes 0x0 - 0x57
- FlightDataCtrlData 0x0 - 0x57
- Namesdata 0x0 - 0x57
- WorldMapFlagData table 1 0x0 - 0x57
- WorldMapFlagData table 2 0x0 - 0x57
- Create the actual 0x0 - 0x57 names
Spoiler:
- Open up XSE 1.1.1 (that is what I'll use in this example, ok)
- Now that you have the actual names inserted you can start setting up your Namesdata_0x0-0x57.hex since this file needs to be filled up with pointers to all those names
Spoiler:
If you where smart you used my script to insert the text and you cleared the ROM as suggested then you should be able to use this:
Namesdata_0x0-0x57.hex
if not sorry but you got your work cut out for you, and know me I know, I created this file my self.
As you can see in the image it´s reverse pointers meaning:
21 23 3F 08 -> 08 3F 23 21 -> 3F 23 21 (08 is internally in the ROM)
So 21 23 3F 08 -> 3F2321 in XSE 1.1.1
To have easy access to your names you can use this:
msgbox name header 0x0-0x57.rbc
its a simple msgbox script you can place the script where you want but make sure to make it's easy to find so that you can easily remove the script again later if you chosen to do so.
- Inserting the new tables
Spoiler:
- WorldMapLocData
Spoiler:
- Calculating new table size
- Finding Free space for your new table (1) sized table
- The actual inserting of the dummy + original table
Spoiler:
- Finding the free space location
Spoiler:
Open up your ROM in the hex-editor, then goto offset x
x = the free location found by FreeSpaceFinder, in this case it would be something like this:
Then take a look around the space it this the right spot (you could have misstyped or copied the wrong thing), in this case I find that I'm dead on a spot where there is a lot of "FF" data around the offset,
so what I do is go back to the last none used "FF" bytes, then go 4 "FF" blocks in, making a "FF FF FF FF" gap between last data and the one I want to write in some cases more to make good offsets ect
(this might be a waste of space but as you say: "better be safe that sorry" anyway here is where I end up:
If you look good you can see the offset in the bottom of the image
- Copying in the Dummy table
Spoiler:
Open a new hex-editor window and open the WorldMapLocData_0x0-0x57.hexfile select all (Ctrl+A) then copy (Ctrl+C)
Goto the "main" hex-editor window (the one with your ROM open) and paste (Crtl+V) in the offset you found or went back to
and you should have some thing like this
- Copying in the "real" table
Spoiler:
Goto to the first byte after what you just pasted into the ROM, or as some would say the first "FF" byte,
now go back to the 2nd hex-editor window and open WorldMapLocData.hexfile select all (Ctrl+A) and copy (Ctrl+C)
then go back to the "main" hex-editor window and paste (Ctrl+V)
and you should have something like this
- WorldMapMoveBytes
Spoiler:
- Calculating new table size
- Finding Free space for your new table (1) sized table
- The actual inserting of the dummy + original table
Spoiler:
- Finding the free space location
Spoiler:
Open up your ROM in the hex-editor, then goto offset x
x = the free location found by FreeSpaceFinder, in this case it would be something like this:
Then take a look around the space it this the right spot (you could have misstyped or copied the wrong thing), in this case I find that I'm dead on a spot where there is a lot of "FF" data around the offset,
so what I do is go back to the last none used "FF" bytes, then go 4 "FF" blocks in, making a "FF FF FF FF" gap between last data and the one I want to write in some cases more to make good offsets ect
(this might be a waste of space but as you say: "better be safe that sorry" anyway here is where I end up:
If you look good you can see the offset in the bottom of the image
- Copying in the Dummy table
Spoiler:
Open a new hex-editor window and open the WorldMapMoveBytes_0x0-0x57.hexfile select all (Ctrl+A) then copy (Ctrl+C)
Goto the "main" hex-editor window (the one with your ROM open) and paste (Crtl+V) in the offset you found or went back to
and you should have some thing like this
- Copying in the "real" table
Spoiler:
Goto to the first byte after what you just pasted into the ROM, or as some would say the first "FF" byte,
now go back to the 2nd hex-editor window and open WorldMapMoveBytes.hexfile select all (Ctrl+A) and copy (Ctrl+C)
then go back to the "main" hex-editor window and paste (Ctrl+V)
and you should have something like this
- FlightDataCtrlData
Spoiler:
- Calculating new table size
- Finding Free space for your new table (1) sized table
- The actual inserting of the dummy + original table
Spoiler:
- Finding the free space location
Spoiler:
Open up your ROM in the hex-editor, then goto offset x
x = the free location found by FreeSpaceFinder, in this case it would be something like this:
Then take a look around the space it this the right spot (you could have misstyped or copied the wrong thing), in this case I find that I'm dead on a spot where there is a lot of "FF" data around the offset,
so what I do is go back to the last none used "FF" bytes, then go 4 "FF" blocks in, making a "FF FF FF FF" gap between last data and the one I want to write in some cases more to make good offsets ect
(this might be a waste of space but as you say: "better be safe that sorry" anyway here is where I end up:
If you look good you can see the offset in the bottom of the image
- Copying in the Dummy table
Spoiler:
Open a new hex-editor window and open the FlightDataCtrlData_0x0-0x57.hexfile select all (Ctrl+A) then copy (Ctrl+C)
Goto the "main" hex-editor window (the one with your ROM open) and paste (Crtl+V) in the offset you found or went back to
and you should have some thing like this
- Copying in the "real" table
Spoiler:
Goto to the first byte after what you just pasted into the ROM, or as some would say the first "FF" byte,
now go back to the 2nd hex-editor window and open FlightDataCtrlData.hexfile select all (Ctrl+A) and copy (Ctrl+C)
then go back to the "main" hex-editor window and paste (Ctrl+V)
and you should have something like this
- Namesdata
Spoiler:
- Calculating new table size
- Finding Free space for your new table (1) sized table
- The actual inserting of the dummy + original table
Spoiler:
- Finding the free space location
Spoiler:
Open up your ROM in the hex-editor, then goto offset x
x = the free location found by FreeSpaceFinder, in this case it would be something like this:
Then take a look around the space it this the right spot (you could have misstyped or copied the wrong thing), in this case I find that I'm dead on a spot where there is a lot of "FF" data around the offset,
so what I do is go back to the last none used "FF" bytes, then go 4 "FF" blocks in, making a "FF FF FF FF" gap between last data and the one I want to write in some cases more to make good offsets ect
(this might be a waste of space but as you say: "better be safe that sorry" anyway here is where I end up:
If you look good you can see the offset in the bottom of the image
- Copying in the Dummy table
Spoiler:
Open a new hex-editor window and open the Namesdata_0x0-0x57.hexfile select all (Ctrl+A) then copy (Ctrl+C)
Goto the "main" hex-editor window (the one with your ROM open) and paste (Crtl+V) in the offset you found or went back to
and you should have some thing like this
- Copying in the "real" table
Spoiler:
Goto to the first byte after what you just pasted into the ROM, or as some would say the first "FF" byte,
now go back to the 2nd hex-editor window and open Namesdata.hexfile select all (Ctrl+A) and copy (Ctrl+C)
then go back to the "main" hex-editor window and paste (Ctrl+V)
and you should have something like this
- WorldMapFlagData1
Spoiler:
- Calculating new table size
- Finding Free space for your new table (1) sized table
- The actual inserting of the dummy + original table
Spoiler:
- Finding the free space location
Spoiler:
Open up your ROM in the hex-editor, then goto offset x
x = the free location found by FreeSpaceFinder, in this case it would be something like this:
Then take a look around the space it this the right spot (you could have misstyped or copied the wrong thing), in this case I find that I'm dead on a spot where there is a lot of "FF" data around the offset,
so what I do is go back to the last none used "FF" bytes, then go 4 "FF" blocks in, making a "FF FF FF FF" gap between last data and the one I want to write in some cases more to make good offsets ect
(this might be a waste of space but as you say: "better be safe that sorry" anyway here is where I end up:
If you look good you can see the offset in the bottom of the image
- Copying in the Dummy table
Spoiler:
Open a new hex-editor window and open the WorldMapFlagData1_0x0-0x57.hexfile select all (Ctrl+A) then copy (Ctrl+C)
Goto the "main" hex-editor window (the one with your ROM open) and paste (Crtl+V) in the offset you found or went back to
and you should have some thing like this
- Copying in the "real" table
Spoiler:
Goto to the first byte after what you just pasted into the ROM, or as some would say the first "FF" byte,
now go back to the 2nd hex-editor window and open WorldMapFlagData1.hexfile select all (Ctrl+A) and copy (Ctrl+C)
then go back to the "main" hex-editor window and paste (Ctrl+V)
and you should have something like this
- WorldMapFlagData2
Spoiler:
- Calculating new table size
- Finding Free space for your new table (1) sized table
- The actual inserting of the dummy + original table
Spoiler:
- Finding the free space location
Spoiler:
Open up your ROM in the hex-editor, then goto offset x
x = the free location found by FreeSpaceFinder, in this case it would be something like this:
Then take a look around the space it this the right spot (you could have misstyped or copied the wrong thing), in this case I find that I'm dead on a spot where there is a lot of "FF" data around the offset,
so what I do is go back to the last none used "FF" bytes, then go 4 "FF" blocks in, making a "FF FF FF FF" gap between last data and the one I want to write in some cases more to make good offsets ect
(this might be a waste of space but as you say: "better be safe that sorry" anyway here is where I end up:
If you look good you can see the offset in the bottom of the image
- Copying in the Dummy table
Spoiler:
Open a new hex-editor window and open the WorldMapFlagData2_0x0-0x57.hexfile select all (Ctrl+A) then copy (Ctrl+C)
Goto the "main" hex-editor window (the one with your ROM open) and paste (Crtl+V) in the offset you found or went back to
and you should have some thing like this
- Copying in the "real" table
Spoiler:
Goto to the first byte after what you just pasted into the ROM, or as some would say the first "FF" byte,
now go back to the 2nd hex-editor window and open WorldMapFlagData2.hexfile select all (Ctrl+A) and copy (Ctrl+C)
then go back to the "main" hex-editor window and paste (Ctrl+V)
and you should have something like this
- Re-Pointing + Limiters
This is next on the todo list.
- Credits
--> This will be updated with more names once I've had time to have a look through my data
Jambo51 - New map names in FR #23 just to mention the most importaint one
NintendoBoyDX - New map names in FR #22
LU-HO - Advanced Map
HackMew - XSE, FSF ect.
Last Progress:
Delayed, for more research (21-05-2012-21-32 GMT +2)
Small wording fixes & added info about AdvancedMap.ini (11-05-2012-00-11 GMT +2)
Notes:
It is time for the Re-pointing + Limiters (11-05-2012-00-11 GMT +2)
NOT FINISHED, I WILL COME BACK AND FINISH THIS (11-05-2012-00-11 GMT +2)