The PokéCommunity Forums  

Go Back   The PokéCommunity Forums > ROM Hacking > Research & Development
Sign Up Rules/FAQ Live Battle Blogs Mark Forums Read

Notices

Research & Development Got a well-founded knack with ROM hacking? Love reverse-engineering the Pokémon games? Or perhaps you love your assembly language. This is the spot for polling and gathering your ideas, and then implementing them! Share your hypothesis, get ideas from others, and collaborate to create!
Research & Development programs in this forum are subject to moderator approval before they are displayed.


Reply
 
Thread Tools
  #26    
Old July 28th, 2011, 05:47 AM
diegoisawesome's Avatar
diegoisawesome
Not the Script Help Thread
Community Supporter
 
Join Date: Dec 2007
Location: Goldenrod City, Johto
Age: 17
Gender: Male
Nature: Quirky
Quote:
Originally Posted by Jambo51 View Post
No, I didn't. It's in the list, i just checked.
What the... I was positive that wasn't there before!
Never mind then.
__________________


My other resources:
My Website
diegoisawesome's MEGA-HUGE XSE Scripting Tutorial
diegoisawesome's Miscellaneous Finds
The Ruins of Alph Puzzles
Reply With Quote
  #27    
Old April 7th, 2012, 05:29 PM
Zilvereyes's Avatar
Zilvereyes
Beginning Trainer
 
Join Date: Mar 2012
Location: Denmark
Age: 33
Gender: Male
Send a message via Skype™ to Zilvereyes
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:
Spoiler:
Code:
World Map Location Data		356 bytes at the end is suspected to be empty
new offset		71A250
pointer		0xC0D3C
offset		0x3F1E60
bytes		792 (0x318)
new bytes		1144 (0x478)
		(352 (0x160) added) (88 or 0x58 entries of 0x4 bytes added)
structure		0x4 x 0x6D (4 bytes x 109 headers)
value		601E3F08
new value		50A27108
WorldMapLocData.hex
WorldMapLocData_0x0-0x57.hex

World Map Movement Bytes		356 bytes at the end is suspected to be empty
new offset		71A6CC
pointer		0xC3D38
offset		0x3F2178
bytes		792(0x318)
new bytes		1144 (0x478)
		(352 (0x160) added) (88 or 0x58 entries of 0x4 bytes added)
structure		0x4 x 0x6D (4 bytes x 109 headers)
value		78213F08
new value		CCA67108
WorldMapMoveBytes.hex
WorldMapMoveBytes_0x0-0x57.hex

Flight Data Controller Data
new offset		71AB48
pointer		0xC52A8
offset		0x3F2EE0
bytes		324 (0x144)
new bytes		588 (0x24C)
		(264 (0x108) added) (88 or 0x58 entries of 0x3 bytes added)
structure		0x3 x 0x6C (3 bytes x 108 headers)
value		E02E3F08
new value		48AB7108
		50AC7108 <-- Use this one to edit stuff in map with A-Map 1.92
		(264 (0x108) bytes into the table) (maybe not sure)
FlightDataCtrlData.hex
FlightDataCtrlData_0x0-0x57.hex

Names data
new offset		71AD98
pointer 1		0xC0C94
pointer 2		0XC4D88
offset		0x3F1CAC
bytes		436 (0x1B4)
new bytes		788 (0x314)
		(352 (0x160) added) (88 or 0x58 entries of 0x4 bytes added)
structure		0x4 x 0x6D (4 bytes x 109 headers)
value		AC1C3F08
new value		98AD7108
Namesdata.hex
Namesdata_0x0-0x57.hex

World Map flag data
Table 1
new offset		71B0B0
pointer		0xC3640
offset		0xC3654
bytes		220 (0xDC) (218 + table-end)
new bytes		396 (0x18C)
		(176 (0xB0) added) (88 or 0x58 entries of 0x2 bytes added)
structure		0x2 x 0x6D (2 bytes x 109 headers) + FF FF 00 00 to end the table
value		54360C08
new value		B0B07108
WorldMapFlagData1.hex
WorldMapFlagData1_0x0-0x57.hex

Table 2
new offset		71B240
pointer		0xC38BC
offset		0xC38C8
bytes		144 (0x90)
new bytes		396 (0x18C)
		(252 (0xFC) added) (126 or 0x7E entries of 0x2 bytes added)
structure		0x2 x 0x47 (2 bytes x 71 headers)
value		C8380C08
new value		40B27108
WorldMapFlagData2.hex
WorldMapFlagData2_0x0-0x57.hex


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.
  1. You Need
    Spoiler:
    • a Pokemon - Fire Red ROM
    • A-Map 1.92 & A-Map 1.95 (Thanks to LU-HO)
      (1.92 doesn't play too nice with extended name header so you need 1.95 to the real job of editing your ROM, you need to mod the ini file though)
      Spoiler:
      AdvanceMap.ini
      [Version:BPR]
      mainfile=ini/frMain.ini
      mapsfile=ini/frMaps.ini
      TilesetIni=ini/frTilesets.ini
      Tilesethoehe=40
      Teil1Bloecke=$280
      SpriteAnz=253
      SpritePalettenAnz=18
      AnzMapNamen=197
      CityNameNrAdjustment=$00
      AnzTilesets=67
      SuchByte=$FF
      SuchBeginn=$6B0000
      AnzItems=374
      AnzAttack=354
    • Hexeditor (Translhextion, HxD or similar)
    • XSE 1.1.1 (Thanks to HackMew) , A-text (Thanks to Scizz) or similar to insert the actual names
      (Thanks to hypnod13 for XSE 1.1.1 link)
    • FSF (Thanks to HackMew)
  2. Make a Backup of your ROM
    Spoiler:
    to

  3. Fixing Unknown World Map Flag Data
    Spoiler:
    1. Open your Pokemon - Fire Red ROM with A-Map 1.92
      Spoiler:
    2. Open "World Map Editor" and you should get this
      Spoiler:
    3. Click OK and the World Map Editor opens
    4. Click "Change routines"
      Spoiler:
    5. Click "Save Map"
      Spoiler:
    6. Exit A-Map 1.92

  4. Storing Tables for "transport"
    Spoiler:
    1. World Map Location Data
      Spoiler:
      1. Open your Pokemon - Fire Red ROM with an Hexeditor
      2. Goto to offset 0x3F1E60 and mark up 792 (0x318) bytes for copy
        Spoiler:
      3. Copy and insert in a new file
        (new file)
        Spoiler:

        (insert)
        Spoiler:
      4. Save file as WorldMapLocData.hex
        Spoiler:
      WorldMapLocData.hex
    2. World Map Movement Bytes
      Spoiler:
      1. Open your Pokemon - Fire Red ROM with an Hexeditor
      2. Goto to offset 0x3F2178 and mark up 792 (0x318) bytes for copy
        Spoiler:
      3. Copy and insert in a new file
        (new file)
        Spoiler:

        (insert)
        Spoiler:
      4. Save file as WorldMapMoveBytes.hex
        Spoiler:
      WorldMapMoveBytes.hex
    3. Flight Data Controller Data
      Spoiler:
      1. Open your Pokemon - Fire Red ROM with an Hexeditor
      2. Goto to offset 0x3F2EE0 and mark up 324 (0x144) bytes for copy
        Spoiler:
      3. Copy and insert in a new file
        (new file)
        Spoiler:

        (insert)
        Spoiler:
      4. Save file as FlightDataCtrlData.hex
        Spoiler:
      FlightDataCtrlData.hex
    4. Names data
      Spoiler:
      1. Open your Pokemon - Fire Red ROM with an Hexeditor
      2. Goto to offset 0x3F1CAC and mark up 436 (0x1B4) bytes for copy
        Spoiler:
      3. Copy and insert in a new file
        (new file)
        Spoiler:

        (insert)
        Spoiler:
      4. Save file as Namesdata.hex
        Spoiler:
      Namesdata.hex

      World Map Flag Data
    5. Table 1
      Spoiler:
      1. Open your Pokemon - Fire Red ROM with an Hexeditor
      2. Goto to offset 0xC3654 and mark up 220 (0xDC) bytes for copy
        Spoiler:
      3. Copy and insert in a new file
        (new file)
        Spoiler:

        (insert)
        Spoiler:
      4. Save file as WorldMapFlagData1.hex
        Spoiler:
      WorldMapFlagData1.hex
    6. Table 2
      Spoiler:
      1. Open your Pokemon - Fire Red ROM with an Hexeditor
      2. Goto to offset 0xC38C8 and mark up 144 (0x90) bytes for copy
        Spoiler:
      3. Copy and insert in a new file
        (new file)
        Spoiler:

        (insert)
        Spoiler:
      4. Save file as WorldMapFlagData2.hex
        Spoiler:
      WorldMapFlagData2.hex

  5. Cleaning "Old" Tables
    Spoiler:
    1. Open your Pokemon - Fire Red ROM with an Hexeditor
      Spoiler:
      Goto to offset 0x3F1E60 and mark up 792 bytes (0x318) for cleaning
      Spoiler:

      Fill Selection with "FF"
      Spoiler:

      Making it look like this
      Spoiler:

    2. Open your Pokemon - Fire Red ROM with an Hexeditor
      Spoiler:
      Goto to offset 0x3F2178 and mark up 792 bytes (0x318) for cleaning
      Spoiler:

      Fill Selection with "FF"
      Spoiler:

      Making it look like this
      Spoiler:

    3. Open your Pokemon - Fire Red ROM with an Hexeditor
      Spoiler:
      Goto to offset 0x3F2EE0 and mark up 324 bytes (0x144) for cleaning
      Spoiler:

      Fill Selection with "FF"
      Spoiler:

      Making it look like this
      Spoiler:

    4. Open your Pokemon - Fire Red ROM with an Hexeditor
      Spoiler:
      Goto to offset 0x3F1CAC and mark up 436 bytes (0x1B4) for cleaning
      Spoiler:

      Fill Selection with "FF"
      Spoiler:

      Making it look like this
      Spoiler:

    5. Open your Pokemon - Fire Red ROM with an Hexeditor
      Spoiler:
      Goto to offset 0xC3654 and mark up 220 bytes (0xDC) for cleaning
      Spoiler:

      Fill Selection with "FF"
      Spoiler:

      Making it look like this
      Spoiler:

    6. Open your Pokemon - Fire Red ROM with an Hexeditor
      Spoiler:
      Goto to offset 0xC38C8 and mark up 144 bytes (0x90) for cleaning
      Spoiler:

      Fill Selection with "FF"
      Spoiler:

      Making it look like this
      Spoiler:

      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

  6. 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.
    1. WorldMapLocData 0x0 - 0x57
      Spoiler:
      Assumed size of data: 4 bytes / entry -> 88 entries = 352 (0x160) bytes
      • Open your Hexeditor make a new file
        Spoiler:
      • Fill 352 (0x160) bytes with "00"
        Spoiler:
      • Save file as WorldMapLocData_0x0-0x57.hex
        Spoiler:

        WorldMapLocData_0x0-0x57.hex

    2. WorldMapMoveBytes 0x0 - 0x57
      Spoiler:
      Assumed size of data: 4 bytes / entry -> 88 entries = 352 (0x160) bytes
      • Open your Hexeditor make a new file
        Spoiler:
      • Fill 352 (0x160) bytes with "00"
        Spoiler:
      • Save file as WorldMapMoveBytes_0x0-0x57.hex
        Spoiler:

        WorldMapMoveBytes_0x0-0x57.hex

    3. FlightDataCtrlData 0x0 - 0x57
      Spoiler:
      Assumed size of data: 3 bytes / entry -> 88 entries = 264 (0x108) bytes
      • Open your Hexeditor make a new file
        Spoiler:
      • Fill 264 (0x108) bytes with "00"
        Spoiler:
      • Save file as FlightDataCtrlData_0x0-0x57.hex
        Spoiler:

        FlightDataCtrlData_0x0-0x57.hex

    4. Namesdata 0x0 - 0x57
      Spoiler:
      Assumed size of data: 4 bytes / entry -> 88 entries = 352 (0x160) bytes
      • Open your Hexeditor make a new file
        Spoiler:
      • Fill 352 (0x160) bytes with "00"
        Spoiler:
      • Save file as Namesdata_0x0-0x57.hex
        Spoiler:

        This file is very important since this actually shall hold pointers to all you 0x0 - 0x57 names
        You might wanna settle up for some heavy time with this file in the next chapter
        Namesdata_0x0-0x57.hex
    5. WorldMapFlagData table 1 0x0 - 0x57
      Spoiler:
      Assumed size of data: 2 bytes / entry -> 88 entries = 176 (0xB0) bytes
      • Open your Hexeditor make a new file
        Spoiler:
      • Fill 176 (0xB0) bytes with "FF"
        Spoiler:
      • Save file as WorldMapFlagData1_0x0-0x57.hex
      • Re-Open the file Select all and "Fill Selection with" "FF"
        Spoiler:
      • Save file as WorldMapFlagData1_0x0-0x57.hex
        Spoiler:

        WorldMapFlagData1_0x0-0x57.hex

    6. WorldMapFlagData table 2 0x0 - 0x57
      Spoiler:
      Assumed size of data: 2 bytes / entry -> 88 entries = 252 (0xFC) bytes
      • Open your Hexeditor make a new file
        Spoiler:
      • Fill 252 (0xFC) bytes with "FF"
        Spoiler:
      • Save file as WorldMapFlagData2_0x0-0x57.hex
      • Re-Open the file Select all and "Fill Selection with" "FF"
        Spoiler:
      • Save file as WorldMapFlagData2_0x0-0x57.hex
        Spoiler:

        WorldMapFlagData2_0x0-0x57.hex
  7. Create the actual 0x0 - 0x57 names
    Spoiler:
    1. Open up XSE 1.1.1 (that is what I'll use in this example, ok)
      Spoiler:
      1. Open your ROM and type like a maniac or use this
        Spoiler:
        Code:
        #dynamic 0x3EED16
        
        #org @nameheader0057
        = NAME HEADER 0057
        
        #org @nameheader0056
        = NAME HEADER 0056
        
        #org @nameheader0055
        = NAME HEADER 0055
        
        #org @nameheader0054
        = NAME HEADER 0054
        
        #org @nameheader0053
        = NAME HEADER 0053
        
        #org @nameheader0052
        = NAME HEADER 0052
        
        #org @nameheader0051
        = NAME HEADER 0051
        
        #org @nameheader0050
        = NAME HEADER 0050
        
        #org @nameheader004F
        = NAME HEADER 004F
        
        #org @nameheader004E
        = NAME HEADER 004E
        
        #org @nameheader004D
        = NAME HEADER 004D
        
        #org @nameheader004C
        = NAME HEADER 004C
        
        #org @nameheader004B
        = NAME HEADER 004B
        
        #org @nameheader004A
        = NAME HEADER 004A
        
        #org @nameheader0049
        = NAME HEADER 0049
        
        #org @nameheader0048
        = NAME HEADER 0048
        
        #org @nameheader0047
        = NAME HEADER 0047
        
        #org @nameheader0046
        = NAME HEADER 0046
        
        #org @nameheader0045
        = NAME HEADER 0045
        
        #org @nameheader0044
        = NAME HEADER 0044
        
        #org @nameheader0043
        = NAME HEADER 0043
        
        #org @nameheader0042
        = NAME HEADER 0042
        
        #org @nameheader0041
        = NAME HEADER 0041
        
        #org @nameheader0040
        = NAME HEADER 0040
        
        #org @nameheader003F
        = NAME HEADER 003F
        
        #org @nameheader003E
        = NAME HEADER 003E
        
        #org @nameheader003D
        = NAME HEADER 003D
        
        #org @nameheader003C
        = NAME HEADER 003C
        
        #org @nameheader003B
        = NAME HEADER 003B
        
        #org @nameheader003A
        = NAME HEADER 003A
        
        #org @nameheader0039
        = NAME HEADER 0039
        
        #org @nameheader0038
        = NAME HEADER 0038
        
        #org @nameheader0037
        = NAME HEADER 0037
        
        #org @nameheader0036
        = NAME HEADER 0036
        
        #org @nameheader0035
        = NAME HEADER 0035
        
        #org @nameheader0034
        = NAME HEADER 0034
        
        #org @nameheader0033
        = NAME HEADER 0033
        
        #org @nameheader0032
        = NAME HEADER 0032
        
        #org @nameheader0031
        = NAME HEADER 0031
        
        #org @nameheader0030
        = NAME HEADER 0030
        
        #org @nameheader002F
        = NAME HEADER 002F
        
        #org @nameheader002E
        = NAME HEADER 002E
        
        #org @nameheader002D
        = NAME HEADER 002D
        
        #org @nameheader002C
        = NAME HEADER 002C
        
        #org @nameheader002B
        = NAME HEADER 002B
        
        #org @nameheader002A
        = NAME HEADER 002A
        
        #org @nameheader0029
        = NAME HEADER 0029
        
        #org @nameheader0028
        = NAME HEADER 0028
        
        #org @nameheader0027
        = NAME HEADER 0027
        
        #org @nameheader0026
        = NAME HEADER 0026
        
        #org @nameheader0025
        = NAME HEADER 0025
        
        #org @nameheader0024
        = NAME HEADER 0024
        
        #org @nameheader0023
        = NAME HEADER 0023
        
        #org @nameheader0022
        = NAME HEADER 0022
        
        #org @nameheader0021
        = NAME HEADER 0021
        
        #org @nameheader0020
        = NAME HEADER 0020
        
        #org @nameheader001F
        = NAME HEADER 001F
        
        #org @nameheader001E
        = NAME HEADER 001E
        
        #org @nameheader001D
        = NAME HEADER 001D
        
        #org @nameheader001C
        = NAME HEADER 001C
        
        #org @nameheader001B
        = NAME HEADER 001B
        
        #org @nameheader001A
        = NAME HEADER 001A
        
        #org @nameheader0019
        = NAME HEADER 0019
        
        #org @nameheader0018
        = NAME HEADER 0018
        
        #org @nameheader0017
        = NAME HEADER 0017
        
        #org @nameheader0016
        = NAME HEADER 0016
        
        #org @nameheader0015
        = NAME HEADER 0015
        
        #org @nameheader0014
        = NAME HEADER 0014
        
        #org @nameheader0013
        = NAME HEADER 0013
        
        #org @nameheader0012
        = NAME HEADER 0012
        
        #org @nameheader0011
        = NAME HEADER 0011
        
        #org @nameheader0010
        = NAME HEADER 0010
        
        #org @nameheader000F
        = NAME HEADER 000F
        
        #org @nameheader000E
        = NAME HEADER 000E
        
        #org @nameheader000D
        = NAME HEADER 000D
        
        #org @nameheader000C
        = NAME HEADER 000C
        
        #org @nameheader000B
        = NAME HEADER 000B
        
        #org @nameheader000A
        = NAME HEADER 000A
        
        #org @nameheader0009
        = NAME HEADER 0009
        
        #org @nameheader0008
        = NAME HEADER 0008
        
        #org @nameheader0007
        = NAME HEADER 0007
        
        #org @nameheader0006
        = NAME HEADER 0006
        
        #org @nameheader0005
        = NAME HEADER 0005
        
        #org @nameheader0004
        = NAME HEADER 0004
        
        #org @nameheader0003
        = NAME HEADER 0003
        
        #org @nameheader0002
        = NAME HEADER 0002
        
        #org @nameheader0001
        = NAME HEADER 0001
        
        #org @nameheader0000
        = NAME HEADER 0000

        Town Names txt insert script.rbc
        Make sure to use that dynamic address since we know it belonged to some of the old tables and since we are going to re-direct all "traffic" away from this data point we should safely be able to use it (also there is the benefit that I have the Namesdata_0x0-0x57.hex with correct pointers to those addresses)
      2. Compile the script and your new names should now have been inserted

    2. 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.
      Spoiler:



      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.

  8. Inserting the new tables
    Spoiler:
    1. WorldMapLocData
      Spoiler:
      1. Calculating new table size
        Spoiler:
        WorldMapLocData original table 792 (0x318) bytes
        WorldMapLocData structure 0x4 bytes x 0x6D (not fact just my thoughts)
        So inserting 0x0 - 0x57 (88 or 0x58 entries) we are going to need 0x4 byte pr entry making it:
        0x58 x 0x4 = 0x160 or 352 bytes
        Making new table size 0x318 (792) + 0x160 (792) = 0x478 or 1144 bytes
      2. Finding Free space for your new table (1) sized table
        Spoiler:
        This is where FSF comes in
        Spoiler:

      3. The actual inserting of the dummy + original table
        Spoiler:
        1. 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:
          Spoiler:

          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:
          Spoiler:

          If you look good you can see the offset in the bottom of the image
        2. 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)
          Spoiler:

          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
          Spoiler:

          and you should have some thing like this
          Spoiler:

        3. 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)
          Spoiler:

          then go back to the "main" hex-editor window and paste (Ctrl+V)
          Spoiler:

          and you should have something like this
          Spoiler:



    2. WorldMapMoveBytes
      Spoiler:
      1. Calculating new table size
        Spoiler:
        WorldMapMoveBytes original table 792 (0x318) bytes
        WorldMapMoveBytes structure 0x4 bytes x 0x6D (not fact just my thoughts)
        So inserting 0x0 - 0x57 (88 or 0x58 entries) we are going to need 0x4 byte pr entry making it:
        0x58 x 0x4 = 0x160 or 352 bytes
        Making new table size 0x318 (792) + 0x160 (792) = 0x478 or 1144 bytes

      2. Finding Free space for your new table (1) sized table
        Spoiler:
        This is where FSF comes in
        Spoiler:


      3. The actual inserting of the dummy + original table
        Spoiler:
        1. 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:
          Spoiler:

          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:
          Spoiler:

          If you look good you can see the offset in the bottom of the image

        2. 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)
          Spoiler:

          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
          Spoiler:

          and you should have some thing like this
          Spoiler:


        3. 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)
          Spoiler:

          then go back to the "main" hex-editor window and paste (Ctrl+V)
          Spoiler:

          and you should have something like this
          Spoiler:



    3. FlightDataCtrlData
      Spoiler:
      1. Calculating new table size
        Spoiler:
        FlightDataCtrlData original table 324 (0x144) bytes
        FlightDataCtrlData structure 0x3 bytes x 0x6C (not fact just my thoughts)
        So inserting 0x0 - 0x57 (88 or 0x58 entries) we are going to need 0x3 byte pr entry making it:
        0x58 x 0x3 = 0x108 or 264 bytes
        Making new table size 0x144 (324) + 0x108 (264) = 0x24C or 588 bytes

      2. Finding Free space for your new table (1) sized table
        Spoiler:
        This is where FSF comes in
        Spoiler:


      3. The actual inserting of the dummy + original table
        Spoiler:
        1. 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:
          Spoiler:

          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:
          Spoiler:

          If you look good you can see the offset in the bottom of the image

        2. 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)
          Spoiler:

          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
          Spoiler:

          and you should have some thing like this
          Spoiler:


        3. 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)
          Spoiler:

          then go back to the "main" hex-editor window and paste (Ctrl+V)
          Spoiler:

          and you should have something like this
          Spoiler:


    4. Namesdata
      Spoiler:
      1. Calculating new table size
        Spoiler:
        Namesdata original table 436 (0x1B4) bytes
        Namesdata structure 0x4 bytes x 0x6D
        So inserting 0x0 - 0x57 (88 or 0x58 entries) we are going to need 0x4 byte pr entry making it:
        0x58 x 0x4 = 0x160 or 352 bytes
        Making new table size 0x1B4 (436) + 0x160 (352) = 0x314 or 788 bytes

      2. Finding Free space for your new table (1) sized table
        Spoiler:
        This is where FSF comes in
        Spoiler:


      3. The actual inserting of the dummy + original table
        Spoiler:
        1. 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:
          Spoiler:

          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:
          Spoiler:

          If you look good you can see the offset in the bottom of the image

        2. 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)
          Spoiler:

          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
          Spoiler:

          and you should have some thing like this
          Spoiler:


        3. 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)
          Spoiler:

          then go back to the "main" hex-editor window and paste (Ctrl+V)
          Spoiler:

          and you should have something like this
          Spoiler:


    5. WorldMapFlagData1
      Spoiler:
      1. Calculating new table size
        Spoiler:
        WorldMapFlagData1 original table 220 (0xDC) bytes (218 (0xDA) + table-end
        WorldMapFlagData1 structure 0x2 bytes x 0x6D + "FF FF 00 00" to end the table
        So inserting 0x0 - 0x57 (88 or 0x58 entries) we are going to need 0x2 byte pr entry making it:
        0x58 x 0x2 = 0xB0 or 176 bytes
        Making new table size 0xDC (220) + 0xB0 (176) = 0x18C or 396 bytes

      2. Finding Free space for your new table (1) sized table
        Spoiler:
        This is where FSF comes in
        Spoiler:


      3. The actual inserting of the dummy + original table
        Spoiler:
        1. 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:
          Spoiler:

          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:
          Spoiler:

          If you look good you can see the offset in the bottom of the image

        2. 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)
          Spoiler:

          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
          Spoiler:

          and you should have some thing like this
          Spoiler:


        3. 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)
          Spoiler:

          then go back to the "main" hex-editor window and paste (Ctrl+V)
          Spoiler:

          and you should have something like this
          Spoiler:


    6. WorldMapFlagData2
      Spoiler:
      1. Calculating new table size
        Spoiler:
        WorldMapFlagData2 original table 144 (0x90) bytes (142 (0x8E) + table-end
        WorldMapFlagData2 structure 0x2 bytes x 0x47 + "FF FF 00 00" to end the table
        So inserting 0x0 - 0x57 (88 or 0x58 entries) would not be enough so what we do is:
        READ JAMBO's POST
        So inserting 0x0 - 0x7E we are going to need 0x2 byte pr entry making it:
        0x7E x 0x2 = 0xFC or 252 bytes
        Making new table size 0x90 (144) + 0xFC (252) = 0x18C or 396 bytes

      2. Finding Free space for your new table (1) sized table
        Spoiler:
        This is where FSF comes in
        Spoiler:


      3. The actual inserting of the dummy + original table
        Spoiler:
        1. 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:
          Spoiler:

          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:
          Spoiler:

          If you look good you can see the offset in the bottom of the image

        2. 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)
          Spoiler:

          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
          Spoiler:

          and you should have some thing like this
          Spoiler:


        3. 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)
          Spoiler:

          then go back to the "main" hex-editor window and paste (Ctrl+V)
          Spoiler:

          and you should have something like this
          Spoiler:



  9. Re-Pointing + Limiters
    This is next on the todo list.
    Spoiler:
    1. 123

  10. 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)

Last edited by Zilvereyes; May 21st, 2012 at 11:31 AM. Reason: Small wording fixes & added info about AdvancedMap.ini (11-05-2012-00-11 GMT +2)
Reply With Quote
  #28    
Old May 13th, 2014, 01:27 AM
Artemis64
 
Join Date: Mar 2014
Gender: Male
How would you go about porting this to Ruby? Ruby has 88 (0x58) name headers, and while I can repoint and extend them, I have no idea how to go about removing the limiter bytes.
The table is at 0x3E73C8, if that's any help.
Reply With Quote
Reply
Quick Reply

Sponsored Links
Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Minimum Characters Per Post: 25



All times are UTC -8. The time now is 07:49 PM.


Style by Nymphadora, artwork by Sa-Dui.
Like our Facebook Page Follow us on Twitter © 2002 - 2014 The PokéCommunity™, pokecommunity.com.
Pokémon characters and images belong to The Pokémon Company International and Nintendo. This website is in no way affiliated with or endorsed by Nintendo, Creatures, GAMEFREAK, The Pokémon Company or The Pokémon Company International. We just love Pokémon.
All forum styles, their images (unless noted otherwise) and site designs are © 2002 - 2014 The PokéCommunity / PokéCommunity.com.
PokéCommunity™ is a trademark of The PokéCommunity. All rights reserved. Sponsor advertisements do not imply our endorsement of that product or service. User generated content remains the property of its creator.