Hiro TDK

Moderator
  • Content count

    28
  • Joined

  • Last visited

Community Reputation

12 Good

About Hiro TDK

  • Rank
    Member
  • Birthday 08/16/89
  1. Updated with Move Tutor information. The Egg Move table and battle position files are next.
  2. Map Files - located at /a/0/6/5 - contains 5 sections #1 Section - Header - section is 20 bytes Offset Length Name Description 0x0 0x4 Movement Permission Size The size of the Movement Permissions in Section #3. Always 0x800. 0x4 0x4 3D Object Size The size of the 3D Objects defined in Section #4. 0x8 0x4 NSBMD Model Size The size of the embedded Model (NSBMD) file in Section #5. 0xC 0x4 BDHC Size The size of the embedded Terrain (BDHC) file in Section #6. 0x10 0x4 Unknown Section Size The size of the section of unknown data in Section #2. #2 Section - Unknown Data - data in this section serves a currently unknown function - data is unique to HG/SS and theorized to be Pokemon size permissions Offset Length Name Description 0x0 . #3 Section - Movement Permissions - data is always 2048 bytes, two bytes for each tile, and all maps are 32x32 tiles - tile data is ordered from left to right, bottom to top Offset Length Name Description 0x0 0x1 Special Permission Allows for special permissions. A rather incomplete list can be found in the Appendix. 0x1 0x1 Movement Permission Three valid values: 0x0 No Restriction, 0x4 No Special Permissions (Ignore First Byte), 0x8 Solid/No Movement #4 Section - 3D Objects - section is 48 bytes per object defined - 3D Objects Size in Section #1 will be the total size of this section in bytes Offset Length Name Description 0x0 0x4 Object ID Number A complete list of Object ID numbers can be found in the Appendix. 0x4 0x2 Y Fractional Variable allowing fractional Y-axis positioning. (Defaults to 00 00.) 0x6 0x2 Y Coordinate Position of the object on the Y-axis. 0x8 0x2 Z Fractional Variable allowing fractional Z-axis positioning. (Defaults to 00 00.) 0xA 0x2 Z Coordinate Position of the object on the Z-axis. 0xC 0x2 X Fractional Variable allowing fractional X-axis positioning. (Defaults to 00 00.) 0xE 0x2 X Coordinate Position of the object on the X-axis. 0x10 0xC ???? This section serves a currently unknown function. 0x1D 0x4 Width The size of the object on the Y-axis. 0x21 0x4 Height The size of the object on the Z-axis. 0x25 0x4 Length The size of the object on X-axis. 0x29 0x7 ???? This section serves a currently unknown function. #5 Section - NSBMD Model - NSBMD Model Size in Section #1 will be the total size of this section in bytes - this is the 3D model of the map itself - NSBMD model specifications aren't listed here. #6 Section - Terrain (BDHC) - BDHC Size in Section #1 will be the total size of this section in bytes - BDHC file specifications are detailed here. Terrain Files (BDHC) Credit and thanks goes to Mikelan98 for finally cracking these files. This section will have a ton of notes, as the format is very complex. Refer to Mikelan98's guide for help. - located at the end of map files, found at /a/0/6/ - contains 7 sections #1 Section - Header Data Offset Length Name Description 0x0 0x4 Magic ID #BDHC (0x42444843) 0x4 0x2 Points Size The number of points defined in Section #2. 0x6 0x2 Inclines Size The number of inclines defined in Section #3. 0x8 0x2 Heights Size The number of heigths defined in Section #4. 0xA 0x2 Plates Size The number of plates defined in Section #5. 0xC 0x2 Strips Size The number of strips defined in Section #6. 0xE 0x2 Access Lists Size The number of access lists defined in Section #7. #2 Section - Points - section length will be 8 bytes multiplied by Points Size from Section #1 - each 8 bytes follows the format below Offset Length Name Description 0x0 0x4 Padding Color 0x4 0x4 X Coordinate X Coordinate for first point. (Little Endian) 0x8 0x4 Padding 0xC 0x4 Y Coordinate Y Coordinate for first point. (Little Endian) Notes: - These coordinates define points on the map. - Maps are always 32x32 tiles. - Coordinates are defined from the center of the map. - The coordinates for the center four tiles are: - Northwest: 00 00 FF FF, 00 00 FF FF - Northeast: 00 00 00 00, 00 00 FF FF - Southwest: 00 00 FF FF, 00 00 00 00 - Southeast: 00 00 00 00, 00 00 00 00 - Coordinates south and east will increase. Coordinates north and west will decrease. - The coordinates of the outside corners are: - Northwest: 00 00 F0 FF, 00 00 F0 FF - Northeast: 00 00 10 00, 00 00 F0 FF - Southwest: 00 00 F0 FF, 00 00 10 00 - Southeast: 00 00 10 00, 00 00 10 00 #3 Section - Inclines - section length will be 12 bytes multiplied by Inclines Size from Section #1 - each 12 bytes specifies a type of incline Offset Length Name Description 0x0 0x12 Incline Type Specifies a type of incline. Notes: - It is assumed that the 12 bytes define coordinates in some way. - Because it is not fully understood, here is a list of known inclines: - Flat Plate: 00 00 00 00 00 10 00 00 00 00 00 00 - North Stairs: 00 00 00 00 50 0B 00 00 50 0B 00 00 - East Stairs: B0 F4 FF FF 50 0B 00 00 00 00 00 00 - West Stairs: 50 0B 00 00 50 0B 00 00 00 00 00 00 #4 Section - Heights - section length will be 4 bytes multiplied by Inclines Size from Section #1 - each 4 bytes specifies a height Offset Length Name Description 0x0 0x2 Fractional Z Coordinate Variable allowing fractional Z-axis positioning. Defaults to 00 00 (Little Endian) 0x2 0x2 Z Coordinate Vertical positioning coordinate. Defaults to 00 00. (Little Endian) Notes: - Up on the Z-axis subtracts, while down on the Z-axis adds. - Fractional coordinates are divided by -65536, e.g., 00 80 = 32768/-65536, or -0.5. - Add both variables for final height, e.g., 00 80 FF FF = -0.5 + 1 = +0.5 Formulas: In the Spanish version of the tutorial Mikelan98 wrote, he posted some formulas for determining the heights you need to define in this section when dealing with specific types of slopes. They also allow one to figure out how to make formulas for other types of slopes. Here, I'll translate them. - Northward Stairs: Height = 0xB505 * (-(y)-(h)) - Westward Stairs: Height = 0xB505 * (x-h) - Eastward Stairs: Height = 0xB505 * (x-h+1) - Where: - x = the position of the stairs on the X-axis, unless the tile is more than one tile long, in which case you would use the tile that is lower on the Z-axis - y = the position of the stairs on the Y-axis - h = the height of the bottom of the stairs + 1 #5 Section - Plates - section length will be 8 bytes multiplied by Plates Size from Section #1 - each 8 bytes section builds a plate using definitions from the previous three sections Offset Length Name Description 0x0 0x1 First Point Index The index of the Point used for the northwesternmost corner of the plate. 0x1 0x1 Padding Color 0x2 0x1 Second Point Index The index of the Point used for the southeasternmost corner of the plate. 0x3 0x1 Padding 0x4 0x1 Incline Index The index of the Incline used for this plate.. 0x5 0x1 Padding 0x6 0x1 Height Index The index of the Height used for this plate. 0x7 0x1 Padding Notes: - The indexes for these are simply the order in which each previous section was defined. - For Points, if you're using the first two Points to construct a plate, you would use 00 & 01. - This creates a rectangular plate between the coordinates defined, with the defined inclination and height. #6 Section - Strips - section length will be 8 bytes multiplied by Strips Size from Section #1 - each 8 bytes section builds a plate using definitions from the previous three sections Offset Length Name Description 0x0 0x2 Padding Color 0x2 0x2 Lower Bound The southernmost tile of the strip. (Little Endian) 0x4 0x2 List Elements The number of list elements from Section #7 to use. (Little Endian) 0x6 0x2 List Start The index of the first list element from Section #7 to use. (Little Endian) Notes: - The first Strip begins at the northenrmost horizontal "strip" and ends at the first defined Lower bound. - The second Strip begins at the next tile south of the first Lower Bound and ends at the second defined Lower Bound. - The List Start index works the same as the indexes in Section #5. - List Elements counts elements including List Start. - More information is noted after Section #7 - Access List. #7 Section - Access List - section length will be 2 bytes multiplied by Strips Size from Section #1 - each 2 bytes is a list entry Offset Length Name Description 0x0 0x2 Plate Index The index number of a plate from Section #4. Notes: - The Plate index number references Plates in the order they're defined, the same as in previous sections. - The Plates in this list are referenced in the section above, and they're accessed, once again, by index number. - The Plates are ordered in groups, and individual plates generally appear multiple times. - The Plates in this section that are referenced in the previous section, are plates that can be accessed from that strip. - More information and visuals can be found in Mikelan98's guide.
  3. Personal Files - files located at /a/0/0/2 - file contains 4 sections #1 Section - General Data - section is 10 bytes Offset Length Name Description 0x0 0x1 Base HP 0x1 0x1 Base Attack 0x2 0x1 Base Defense 0x3 0x1 Base Speed 0x4 0x1 Base Special Attack 0x5 0x1 Base Special Defense 0x6 0x1 Type 1 0x7 0x1 Type 2 If monotype, this will be the same as Type 1. 0x8 0x1 Catch Rate 0x9 0x1 Base Experience The base amount of experience gained by defeating this Pokemon. #2 Section - Effort Values - section is 2 bytes Offset Length Name Description 0 2 Bits HP 2 2 Bits Speed 4 2 Bits Attack 6 2 Bits Defense 8 2 Bits Special Attack 10 2 bits Special Defense 12 4 Bits Padding #3 Section - General Data (Continued) - section is 14 bytes Offset Length Name Description 0x0 0x2 Held Item (50%) Uncommon held item for wild encounters. 0x2 0x2 Held Item (5%) Rare held item for wild encounters. 0x4 0x1 Gender Ratio Out of 255, this is the approximate number of females you'd encounter 0x5 0x1 Hatch Multiplier This number multiplied by 256 gives you the base number of steps required to hatch an egg. 0x6 0x1 Base Happiness 0x7 0x1 Experience Rate One of six values with preset growth rates. 0x8 0x1 Egg Group 1 0x9 0x1 Egg Group 2 If no second egg group, this will be the same as Egg Group 1. 0xA 0x1 Ability 1 0xB 0x1 Ability 2 Left blank if there's no second ability. 0xC 0x1 Run Chance Used strictly for Safari Zone encounters. 0xD 0x1 Color This is for Pokedex colors. #4 Section - TM's List - This section is 128 bits. - The first 92 bits refer to TMs, the next 8 to HMs, and the last 28 are padding. - If the bit is 1, that TM can be learned by this Pokemon. If it is 0, it cannot. Learnset Files - files located at /a/0/3/3 - file contains 2 sections #1 Section - Learnset - section is 2 bytes for every Move in the Pokemon's learnset - possible limit of 40 bytes, or 20 moves Offset Length Name Description 0 9 Bits Move ID 9 7 Bits Level Learned #2 Section - File End - section is 4 bytes Offset Length Name Description 0x0 0x2 Delimiter Tells the game where to stop reading. Always 0xFFFF. 0x2 0x2 Padding Evolution Files Back To Pokemon ▲ - files located at /a/0/3/4 - file contains 2 sections #1 Section - Evolutions - section is 6 bytes for every evolution method - possible limit of 7 evolutions, or 42 bytes - possible that all 42 bytes are required, and 0x0 if unused Offset Length Name Description 0x0 0x1 Evolution Method One of 26 evolutions methods. 0x1 0x1 Padding 0x2 0x2 Requirement Number This is the level required or the index of the Pokemon, item, etc. required for the evolution method. 0x0 if not needed. 0x1 0x1 Evolved ID This is the index mumber of the Pokemon to evolve into. #2 Section - File End Offset Length Name Description 0x0 0x2 Padding Growth Table Files Back To Pokemon ▲ - files located at /a/0/0/3 - file contains 1 section #1 Section - Growth Table - section is 4 bytes for each level, starting with Level 0 - total size is 404 bytes Offset Length Name Description 0x0 0x4 Experience Requirement Experience required to reach this level. Baby Form Table File - files located at /a/poketool/personal/pms.narc - file contains 1 section - special babies are defined in code in the overlays #1 Section - Baby Form Table - section is 2 bytes for each Pokemon, including alternate forms - total size is 1016 - starts with index 0, making Bulbasaur the second short Offset Length Name Description 0x0 0x2 Baby Index Number This is the index number of the default baby produced from breeding. Move Tutor Table File - files located at /fielddata/wazaoshie/waza_oshie.bin - file contains 1 section - does not include Dragon or starter tutors #1 Section - Move Tutor Table - section is 8 bytes for each Pokemon, including alternate forms - total size is 4040 - starts with index 1, making Bulbasaur the first entry Offset Length Name Description 0x0 0x1 Moves 1-8 (Bitfield) This bitfield is for moves 1-8, moving from least to most significant. 0x1 0x1 Moves 9-16 (Bitfield) This bitfield is for moves 9-16. 0x2 0x1 Moves 17-24 (Bitfield) This bitfield is for moves 17-24. 0x3 0x1 Moves 25-32 (Bitfield) This bitfield is for moves 25-32. 0x4 0x1 Moves 33-40 (Bitfield) This bitfield is for moves 33-40. 0x5 0x1 Moves 41-48 (Bitfield) This bitfield is for moves 41-48. 0x6 0x1 Moves 49-52 (Bitfield) This bitfield is for moves 49-52, with 4 bits of padding. Move Tutor Table - table is in Overlay 001 at 0x23AE0 - does not include Dragon or starter tutors - full table reference in the Appendix #1 Section - Move Tutor Table - section is 4 bytes for each entry, with 52 entries - total size is 208 - changing the values is possible, expanding the table is currently not known Offset Length Name Description 0x0 0x2 Move ID This is the ID number for the entry. 0x2 0x1 BP Cost This is the BP Cost for the entry, 0 if unapplicable. 0x3 0x1 Tutor ID This is the ID of the tutor for the entry.
  4. Field Encounters - located at /a/0/3/7 for HeartGold and /a/1/3/6 for SoulSilver - contains 12 sections #1 Section - Encounter Rates Offset Length Name Description 0x0 0x1 Field Rate Encounter rate in tall grass or walking. 0x1 0x1 Surfing Rate Encounter rate while surfing. 0x2 0x1 Rock Smash Rate Encounter rate when using Rock Smash. 0x3 0x1 Old Rod Rate Encounter rate when using the Rod. 0x4 0x1 Good Rod Rate Encounter rate when using the Good Rod. 0x5 0x1 Super Rod Rate Encounter rate when using the Super Rod. 0x6 0x2 Padding Color #2 Section - Field Encounter Levels 0x0 0x1 Slot 1 Level Level of the Pokemon encountered in Slot 1. 0x1 0x1 Slot 2 Level 0x2 0x1 Slot 3 Level 0x3 0x1 Slot 4 Level 0x4 0x1 Slot 5 Level 0x5 0x1 Slot 6 Level 0x6 0x1 Slot 7 Level 0x7 0x1 Slot 8 Level 0x8 0x1 Slot 9 Level 0x9 0x1 Slot 10 Level 0xA 0x1 Slot 11 Level 0xB 0x1 Slot 12 Level #3 Section - Field Encounter Pokemon (Morning) 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x2 Slot 2 Pokemon 0x4 0x2 Slot 3 Pokemon 0x6 0x2 Slot 4 Pokemon 0x8 0x2 Slot 5 Pokemon 0xA 0x2 Slot 6 Pokemon 0xC 0x2 Slot 7 Pokemon 0xE 0x2 Slot 8 Pokemon 0x10 0x2 Slot 9 Pokemon 0x12 0x2 Slot 10 Pokemon 0x14 0x2 Slot 11 Pokemon 0x16 0x2 Slot 12 Pokemon #4 Section - Field Encounter Pokemon (Daytime) 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x2 Slot 2 Pokemon 0x4 0x2 Slot 3 Pokemon 0x6 0x2 Slot 4 Pokemon 0x8 0x2 Slot 5 Pokemon 0xA 0x2 Slot 6 Pokemon 0xC 0x2 Slot 7 Pokemon 0xE 0x2 Slot 8 Pokemon 0x10 0x2 Slot 9 Pokemon 0x12 0x2 Slot 10 Pokemon 0x14 0x2 Slot 11 Pokemon 0x16 0x2 Slot 12 Pokemon #5 Section - Field Encounter Pokemon (Evening) 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x2 Slot 2 Pokemon 0x4 0x2 Slot 3 Pokemon 0x6 0x2 Slot 4 Pokemon 0x8 0x2 Slot 5 Pokemon 0xA 0x2 Slot 6 Pokemon 0xC 0x2 Slot 7 Pokemon 0xE 0x2 Slot 8 Pokemon 0x10 0x2 Slot 9 Pokemon 0x12 0x2 Slot 10 Pokemon 0x14 0x2 Slot 11 Pokemon 0x16 0x2 Slot 12 Pokemon #6 Section - Hoenn/Sinnoh Noise Encounters Offset Length Name Description 0x0 0x2 Hoenn Slot 1 Hoenn Slot 1 Pokemon index number. (Little Endian) 0x2 0x2 Hoenn Slot 2 0x4 0x2 Sinnoh Slot 1 Sinnoh Slot 1 Pokemon index number. (Little Endian) 0x6 0x2 Sinnoh Slot 2 #7 Section - Surfing Encounters Offset Length Name Description 0x0 0x1 Minimum Level Slot 1 Minimum level of Pokemon in Slot 1. 0x1 0x1 Maximum Level Slot 1 Maximum level of Pokemon in Slot 1. 0x2 0x2 Pokemon Slot 1 Slot 1 Pokemon index number. (Little Endian) 0x4 0x1 Minimum Level Slot 2 0x5 0x1 Maximum Level Slot 2 0x6 0x2 Pokemon Slot 2 0x8 0x1 Minimum Level Slot 3 0x9 0x1 Maximum Level Slot 3 0xA 0x2 Pokemon Slot 3 0xC 0x1 Minimum Level Slot 4 0xD 0x1 Maximum Level Slot 4 0xE 0x2 Pokemon Slot 4 0x10 0x1 Minimum Level Slot 5 0x11 0x1 Maximum Level Slot 5 0x12 0x2 Pokemon Slot 5 #8 Section - Rock Smash Encounters Offset Length Name Description 0x0 0x2 Pokemon Slot 1 Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Minimum Level Slot 1 Minimum level of Pokemon in Slot 1. 0x3 0x1 Maximum Level Slot 1 Maximum level of Pokemon in Slot 1. 0x4 0x2 Pokemon Slot 2 0x6 0x1 Minimum Level Slot 2 0x7 0x1 Maximum Level Slot 2 #9 Section - Old Rod Encounters Offset Length Name Description 0x0 0x1 Minimum Level Slot 1 Minimum level of Pokemon in Slot 1. 0x1 0x1 Maximum Level Slot 1 Maximum level of Pokemon in Slot 1. 0x2 0x2 Pokemon Slot 1 Slot 1 Pokemon index number. (Little Endian) 0x4 0x1 Minimum Level Slot 2 0x5 0x1 Maximum Level Slot 2 0x6 0x2 Pokemon Slot 2 0x8 0x1 Minimum Level Slot 3 0x9 0x1 Maximum Level Slot 3 0xA 0x2 Pokemon Slot 3 0xC 0x1 Minimum Level Slot 4 0xD 0x1 Maximum Level Slot 4 0xE 0x2 Pokemon Slot 4 0x10 0x1 Minimum Level Slot 5 0x11 0x1 Maximum Level Slot 5 0x12 0x2 Pokemon Slot 5 #10 Section - Good Rod Encounters Offset Length Name Description 0x0 0x1 Minimum Level Slot 1 Minimum level of Pokemon in Slot 1. 0x1 0x1 Maximum Level Slot 1 Maximum level of Pokemon in Slot 1. 0x2 0x2 Pokemon Slot 1 Slot 1 Pokemon index number. (Little Endian) 0x4 0x1 Minimum Level Slot 2 0x5 0x1 Maximum Level Slot 2 0x6 0x2 Pokemon Slot 2 0x8 0x1 Minimum Level Slot 3 0x9 0x1 Maximum Level Slot 3 0xA 0x2 Pokemon Slot 3 0xC 0x1 Minimum Level Slot 4 0xD 0x1 Maximum Level Slot 4 0xE 0x2 Pokemon Slot 4 0x10 0x1 Minimum Level Slot 5 0x11 0x1 Maximum Level Slot 5 0x12 0x2 Pokemon Slot 5 #11 Section - Super Rod Encounters Offset Length Name Description 0x0 0x1 Minimum Level Slot 1 Minimum level of Pokemon in Slot 1. 0x1 0x1 Maximum Level Slot 1 Maximum level of Pokemon in Slot 1. 0x2 0x2 Pokemon Slot 1 Slot 1 Pokemon index number. (Little Endian) 0x4 0x1 Minimum Level Slot 2 0x5 0x1 Maximum Level Slot 2 0x6 0x2 Pokemon Slot 2 0x8 0x1 Minimum Level Slot 3 0x9 0x1 Maximum Level Slot 3 0xA 0x2 Pokemon Slot 3 0xC 0x1 Minimum Level Slot 4 0xD 0x1 Maximum Level Slot 4 0xE 0x2 Pokemon Slot 4 0x10 0x1 Minimum Level Slot 5 0x11 0x1 Maximum Level Slot 5 0x12 0x2 Pokemon Slot 5 #12 Section - Swarm Encounters Offset Length Name Description 0x0 0x2 Field Swarm Field Swarm Pokemon index number. (Little Endian) 0x2 0x2 Surfing Swarm Surfing Swarm Pokemon index number. (Little Endian) 0x4 0x2 Good Rod Swarm Good Rod Swarm Pokemon index number. (Little Endian) 0x6 0x2 Super Rod Swarm Super Rod Swarm Pokemon index number. (Little Endian) Headbutt Encounters - located at /a/2/5/3 for HeartGold and /a/2/5/2 for SoulSilver - contains 5 sections #1 Section - Tree Allocation Offset Length Name Description 0x0 0x1 Headbutt Trees Number of trees defined in section #4. 0x1 0x1 Padding 0x2 0x1 Special Trees Number of trees defined in section #5. 0x3 0x1 Padding #2 Section - Normal Headbutt Encounters Offset Length Name Description 0x0 0x2 Pokemon Slot 1 Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Minimum Level Slot 1 Minimum level of Pokemon in Slot 1. 0x3 0x1 Maximum Level Slot 1 Maximum level of Pokemon in Slot 1. 0x4 0x2 Pokemon Slot 2 0x6 0x1 Minimum Level Slot 2 0x7 0x1 Maximum Level Slot 2 0x8 0x2 Pokemon Slot 3 0xA 0x1 Minimum Level Slot 3 0xB 0x1 Maximum Level Slot 3 0xC 0x2 Pokemon Slot 4 0xE 0x1 Minimum Level Slot 4 0xF 0x1 Maximum Level Slot 4 0x10 0x2 Pokemon Slot 5 0x12 0x1 Minimum Level Slot 5 0x13 0x1 Maximum Level Slot 5 0x14 0x2 Pokemon Slot 6 0x16 0x1 Minimum Level Slot 6 0x17 0x1 Maximum Level Slot 6 0x18 0x2 Pokemon Slot 7 0x1A 0x1 Minimum Level Slot 7 0x1B 0x1 Maximum Level Slot 7 0x1C 0x2 Pokemon Slot 8 0x1E 0x1 Minimum Level Slot 8 0x1F 0x1 Maximum Level Slot 8 0x20 0x2 Pokemon Slot 9 0x22 0x1 Minimum Level Slot 9 0x23 0x1 Maximum Level Slot 9 0x24 0x2 Pokemon Slot 10 0x26 0x1 Minimum Level Slot 10 0x27 0x1 Maximum Level Slot 10 0x28 0x2 Pokemon Slot 11 0x2A 0x1 Minimum Level Slot 11 0x2B 0x1 Maximum Level Slot 11 0x2C 0x2 Pokemon Slot 12 0x2E 0x1 Minimum Level Slot 12 0x2F 0x1 Maximum Level Slot 12 #3 Section - Special Headbutt Encounters Offset Length Name Description 0x0 0x2 Pokemon Slot 1 Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Minimum Level Slot 1 Minimum level of Pokemon in Slot 1. 0x3 0x1 Maximum Level Slot 1 Maximum level of Pokemon in Slot 1. 0x4 0x2 Pokemon Slot 2 0x6 0x1 Minimum Level Slot 2 0x7 0x1 Maximum Level Slot 2 0x8 0x2 Pokemon Slot 3 0xA 0x1 Minimum Level Slot 3 0xB 0x1 Maximum Level Slot 3 0xC 0x2 Pokemon Slot 4 0xE 0x1 Minimum Level Slot 4 0xF 0x1 Maximum Level Slot 4 0x10 0x2 Pokemon Slot 5 0x12 0x1 Minimum Level Slot 5 0x13 0x1 Maximum Level Slot 5 0x14 0x2 Pokemon Slot 6 0x16 0x1 Minimum Level Slot 6 0x17 0x1 Maximum Level Slot 6 #4 Section - Normal Tree Definitions - section is repeated (x-1) times - x is equal to Headbutt Trees in Section #1 - each repetition represents a singular "tree" - each section is six sets of coordinates - unused coordinates are always 0xFFFFFFFF Offset Length Name Description 0x0 0x2 X1 Coordinate X map coordinate of first tile in the "tree". (Little Endian) 0x2 0x2 Y1 Coordinate Y map coordinate of first tile in the "tree". (Little Endian) 0x4 0x2 X2 Coordinate 0x6 0x2 Y2 Coordinate 0x8 0x2 X3 Coordinate 0xA 0x2 Y3 Coordinate 0xC 0x2 X4 Coordinate 0xE 0x2 Y4 Coordinate 0x10 0x2 X5 Coordinate 0x12 0x2 Y5 Coordinate 0x14 0x2 X6 Coordinate 0x16 0x2 Y6 Coordinate #5 Section - Special Tree Definitions - section is repeated (x-1) times - x is equal to Special Trees in Section #1 - follows same rules as Section #4 Offset Length Name Description 0x0 0x2 X1 Coordinate X map coordinate of first tile in the "tree". (Little Endian) 0x2 0x2 Y1 Coordinate Y map coordinate of first tile in the "tree". (Little Endian) 0x4 0x2 X2 Coordinate 0x6 0x2 Y2 Coordinate 0x8 0x2 X3 Coordinate 0xA 0x2 Y3 Coordinate 0xC 0x2 X4 Coordinate 0xE 0x2 Y4 Coordinate 0x10 0x2 X5 Coordinate 0x12 0x2 Y5 Coordinate 0x14 0x2 X6 Coordinate 0x16 0x2 Y6 Coordinate Safari Zone Encounters - located at /a/2/3/0 - contains 16 sections #1 Section - Object Arrangement Allocation Offset Length Name Description 0x0 0x1 Tall Grass Encounters The number of tall grass encounter slots for Object Arrangement. 0x1 0x1 Surfing Encounters The number of surfing encounter slots for Object Arrangement. 0x2 0x1 Old Rod Encounters The number of Old Rod encounter slots for Object Arrangement. 0x3 0x1 Good Rod Encounters The number of Good Rod encounter slots for Object Arrangement. 0x4 0x1 Super Rod Encounters The number of Super Rod encounter slots for Object Arrangement. 0x5 0x3 Padding Always 0x0 #2 Section - Tall Grass Encounters - section contains 3 sub-sections for time-of-day encounters - each 4 bytes represents a slot, with 10 slots per time of day Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Daytime 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding #3 Section - Tall Grass Encounters (Object Arrangement) - section is equal to 4 bytes, multiplied by Tall Grass Encounters in Section #1, multiplied by 3 - section contains 3 sub-sections for time-of-day encoutners - each 4 bytes represents a slot, with (x) slots per time of day, x being Tall Grass Encounters in Section #1 Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color Daytime 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding #4 Section - Object Arrangement Requirements (Tall Grass) - section is equal to 1/3 the length of Section #3 - or 4 bytes multiplied by Tall Grass Encounters in Section #1 - each 4 bytes represents a slot, corresponding to the equivalent slot in Section #3 for each time of day Offset Length Name Description 0x0 0x1 First Object Type First Object Type requirement. Valid vaules: 0x1 Plains, 0x2 Forest, 0x3 Peak, 0x4 Waterside. 0x1 0x1 First Object Quantity The number of objects of the first type required. 0x2 0x1 Second Object Type This is for an optional second type requirement. Additional valid value: 0x0 No Requirement. 0x3 0x1 Second Object Quantity #2 Section - Tall Grass Encounters - section contains 3 sub-sections for time-of-day encounters - each 4 bytes represents a slot, with 10 slots per time of day Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Daytime 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding #3 Section - Tall Grass Encounters (Object Arrangement) - section is equal to 4 bytes, multiplied by Tall Grass Encounters in Section #1, multiplied by 3 - section contains 3 sub-sections for time-of-day encoutners - each 4 bytes represents a slot, with (x) slots per time of day, x being Tall Grass Encounters in Section #1 Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color Daytime 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding #4 Section - Object Arrangement Requirements (Tall Grass) - section is equal to 1/3 the length of Section #3 - or 4 bytes multiplied by Tall Grass Encounters in Section #1 - each 4 bytes represents a slot, corresponding to the equivalent slot in Section #3 for each time of day Offset Length Name Description 0x0 0x1 First Object Type First Object Type requirement. Valid vaules: 0x1 Plains, 0x2 Forest, 0x3 Peak, 0x4 Waterside. 0x1 0x1 First Object Quantity The number of objects of the first type required. 0x2 0x1 Second Object Type This is for an optional second type requirement. Additional valid value: 0x0 No Requirement. 0x3 0x1 Second Object Quantity #5 Section - Surfing Encounters - section contains 3 sub-sections for time-of-day encounters - each 4 bytes represents a slot, with 10 slots per time of day Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Daytime 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding #6 Section - Surfing Encounters (Object Arrangement) - section is equal to 4 bytes, multiplied by Surfing Encounters in Section #1, multiplied by 3 - section contains 3 sub-sections for time-of-day encoutners - each 4 bytes represents a slot, with (x) slots per time of day, x being Surfing Encounters in Section #1 Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color Daytime 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding #7 Section - Object Arrangement Requirements (Surfing) - section is equal to 1/3 the length of Section #6 - or 4 bytes multiplied by Surfing Encounters in Section #1 - each 4 bytes represents a slot, corresponding to the equivalent slot in Section #6 for each time of day Offset Length Name Description 0x0 0x1 First Object Type First Object Type requirement. Valid vaules: 0x1 Plains, 0x2 Forest, 0x3 Peak, 0x4 Waterside. 0x1 0x1 First Object Quantity The number of objects of the first type required. 0x2 0x1 Second Object Type This is for an optional second type requirement. Additional valid value: 0x0 No Requirement. 0x3 0x1 Second Object Quantity #8 Section - Old Rod Encounters - section contains 3 sub-sections for time-of-day encounters - each 4 bytes represents a slot, with 10 slots per time of day Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Daytime 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding #9 Section - Old Rod Encounters (Object Arrangement) - section is equal to 4 bytes, multiplied by Old Rod Encounters in Section #1, multiplied by 3 - section contains 3 sub-sections for time-of-day encoutners - each 4 bytes represents a slot, with (x) slots per time of day, x being Old Rod Encounters in Section #1 Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color Daytime 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding #10 Section - Object Arrangement Requirements (Old Rod) - section is equal to 1/3 the length of Section #9 - or 4 bytes multiplied by Old Rod Encounters in Section #1 - each 4 bytes represents a slot, corresponding to the equivalent slot in Section #9 for each time of day Offset Length Name Description 0x0 0x1 First Object Type First Object Type requirement. Valid vaules: 0x1 Plains, 0x2 Forest, 0x3 Peak, 0x4 Waterside. 0x1 0x1 First Object Quantity The number of objects of the first type required. 0x2 0x1 Second Object Type This is for an optional second type requirement. Additional valid value: 0x0 No Requirement. 0x3 0x1 Second Object Quantity #11 Section - Good Rod Encounters - section contains 3 sub-sections for time-of-day encounters - each 4 bytes represents a slot, with 10 slots per time of day Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Daytime 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding #12 Section - Good Rod Encounters (Object Arrangement) - section is equal to 4 bytes, multiplied by Good Rod Encounters in Section #1, multiplied by 3 - section contains 3 sub-sections for time-of-day encoutners - each 4 bytes represents a slot, with (x) slots per time of day, x being Good Rod Encounters in Section #1 Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color Daytime 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding #13 Section - Object Arrangement Requirements (Good Rod) - section is equal to 1/3 the length of Section #12 - or 4 bytes multiplied by Good Rod Encounters in Section #1 - each 4 bytes represents a slot, corresponding to the equivalent slot in Section #12 for each time of day Offset Length Name Description 0x0 0x1 First Object Type First Object Type requirement. Valid vaules: 0x1 Plains, 0x2 Forest, 0x3 Peak, 0x4 Waterside. 0x1 0x1 First Object Quantity The number of objects of the first type required. 0x2 0x1 Second Object Type This is for an optional second type requirement. Additional valid value: 0x0 No Requirement. 0x3 0x1 Second Object Quantity #14 Section - Super Rod Encounters - section contains 3 sub-sections for time-of-day encounters - each 4 bytes represents a slot, with 10 slots per time of day Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Daytime 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color 0x4 0x2 Slot 2 Pokemon 0x6 0x1 Slot 2 Level 0x7 0x1 Padding 0x8 0x2 Slot 3 Pokemon 0xA 0x1 Slot 3 Level 0xB 0x1 Padding 0xC 0x2 Slot 4 Pokemon 0xE 0x1 Slot 4 Level 0xF 0x1 Padding 0x10 0x2 Slot 5 Pokemon 0x12 0x1 Slot 5 Level 0x13 0x1 Padding 0x14 0x2 Slot 6 Pokemon 0x16 0x1 Slot 6 Level 0x17 0x1 Padding 0x18 0x2 Slot 7 Pokemon 0x1A 0x1 Slot 7 Level 0x1B 0x1 Padding 0x1C 0x2 Slot 8 Pokemon 0x1E 0x1 Slot 8 Level 0x1F 0x1 Padding 0x20 0x2 Slot 9 Pokemon 0x22 0x1 Slot 9 Level 0x23 0x1 Padding 0x24 0x2 Slot 10 Pokemon 0x26 0x1 Slot 10 Level 0x27 0x1 Padding #15 Section - Super Rod Encounters (Object Arrangement) - section is equal to 4 bytes, multiplied by Super Rod Encounters in Section #1, multiplied by 3 - section contains 3 sub-sections for time-of-day encoutners - each 4 bytes represents a slot, with (x) slots per time of day, x being Super Rod Encounters in Section #1 Offset Length Name Description Morning 0x0 0x2 Slot 1 Pokemon Slot 1 Pokemon index number. (Little Endian) 0x2 0x1 Slot 1 Level Level of the Pokemon in Slot 1. 0x3 0x1 Padding Color Daytime 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding Evening 0x0 0x2 Slot 1 Pokemon 0x2 0x1 Slot 1 Level 0x3 0x1 Padding #16 Section - Object Arrangement Requirements (Super Rod) - section is equal to 1/3 the length of Section #15 - or 4 bytes multiplied by Super Rod Encounters in Section #1 - each 4 bytes represents a slot, corresponding to the equivalent slot in Section #15 for each time of day Offset Length Name Description 0x0 0x1 First Object Type First Object Type requirement. Valid vaules: 0x1 Plains, 0x2 Forest, 0x3 Peak, 0x4 Waterside. 0x1 0x1 First Object Quantity The number of objects of the first type required. 0x2 0x1 Second Object Type This is for an optional second type requirement. Additional valid value: 0x0 No Requirement. 0x3 0x1 Second Object Quantity
  5. Pokemon Silver Dawn

    If you're still working on this, PM me and I'll walk you through the process of inserting Dawn in place of Lyra.
  6. [Platinum] Adding new Moves

    As it turns out, this is something that I looked into a couple of months ago. I was able to add several moves to HG/SS. There are a few issues with this though. The editors for attacks don't have all of the information editable. There's references to animations and effects that aren't listed. Basically, from what I can find, these are the files related to attacks. moves waza_tbl.narc | /a/0/1/1 - Move Table we.narc | /a/0/1/0 - Move Effects we_sub.narc | /a/0/6/1 - be_seq.narc | /a/0/3/0 - Move Behaviours sub_seq.narc | /a/0/0/1 - waza_seq.narc | /a/0/0/0 - graphics wechar.narc | /a/0/2/2 - Move Tiles wepltt.narc | /a/0/2/3 - Move Palettes wecell.narc | /a/0/2/4 - Move Cells wecellanm.narc | /a/0/2/5 - Move Animations waza_particle.narc | /a/0/2/9 - Move Particle Data The names are the Platinum file names and the numbers are the HG/SS file names. Now, you can see that there are a few things unknown here. In order to add new attacks and get them to work, you'll have to figure out what those last few files do. As well, there's on other caveat to new moves. Pokemon learnsets use two bytes per move. the first 9 bits are the Move ID and the last 7 bits are the level. The problem is that 9 bits gives you 0-511. Any moves with an ID over 511 can't be added to learnsets without some editing on the backend too. EDIT: I can't remember off the top of my head, but there are five(?) text files for attacks. I'd have to look to see which ones though.
  7. Do you intend on updating this with the fix you implemented in MindCrystal?
  8. DS ROM Patcher

    This is phenomenal, thank you. I'll have to use it whenever I get around to updating my patches.
  9. This is a modification of Kazowar's BTX Editor. It's used to modify the BTX (texture) files used for overworld sprites in the NDS games. Kazowar stated that "BTX Editor is a horribly wrote program and is full of stupid limitations." But he gave me permission to decompile it, modify it, and re-release it. So I have. This version has been updated to support any of the character overworlds from HG/SS. There are still quite a lot of overworlds that it won't work with unless completely rewritten, like Pokemon, or anything not 32x32, or anything with more than one palette. I've also take the opportunity to change the interface. Buttons are now above the image, and the window will also resize to fit the image, rather than the reverse. I also changed the icon to differentiate it from the original. Usage: 1) Extract BTX files from the game, found in HG/SS at /a/0/8/1. 2) In BTX editor, hit [Open .btx]... and open a .btx file. 3) Hit [save .png as...] and save the image. 4) Modify that image. 5) Hit [Open .png] and open the modified image. 6) Hit [save .btx as...] and save the modifed .btx file. 7) Insert the new file into the game in place of the original. Download: http://www.mediafire.com/file/a4zjzn8kr8krgbc/BTX_Editor.exe
  10. I've made a few resources and found a few around the web that seem to have disappeared since. G3DCVTR Author: ??? This converts 3D files for NDS games. It's command line only. Nitro SDK Plugins for 3DS Max 2010 Authors: Nintendo These allow you to export 3D models from 3DS Max 2010 for use in NDS games. These aren't allowed to be posted here, so you'll have to search or ask around to find them. BTX Editor Author: Kazowar Thread: https://projectpokemon.org/forums/showthread.php?9873-BTX-overworld-editor This allows you to export and import sprite sheets from the texture files in the game, most notably, overworld sprites. It's not a great program, and it bugs out and doesn't work with specific files, but it mostly works and is much less demanding than PokeTex. HG/SS US Texts Excel Workbook Authors: HiroTDK This is a searchable workbook of all text files in HeartGold and SoulSilver. The search results in Excel point to file and line numbers so that you can easily locate them in SDSME. I have a workbook transcribed for each language, but I haven't run the organization scripts on the other languages yet because my laptop is currently out of commission. NARCTool Authors: natrium42, modified by unknown This tool allows you to decompress and compress NARC files to and from folders. Since Tinke can easily decompress and extract NARCs as folders, it's only real use is rebuilding NARCs from folders. Tinke Authors: pleonex and various contributors Thread: http://gbatemp.net/topic/303529-tinke-072/ This is an all purpose tool for NDS hacking. You can look at the file structure and import and export files and NARCs. It has a very basic hex editor. You can view, import, and export images, models, textures, et cetera. There's so much more this can do too. This is a very powerful tool for the graphical side of NDS ROM hacking. Mario Kart DS Course Modifier Authors: Gericom Thread: https://gbatemp.net/threads/mkds-course-modifier.299444/ This is another NDS hacking tool like Tinke, that's pretty powerful and has a lot of features. This one is specialized for editing Mario Kart DS, but it has some useful functions for us. It's really good at editing single frame textures, but not animations. There's a function for splitting and rejoining texture files and models. It's very specific, but I used it to pull the protagonists sprites from the Magnet Train animation. It also has a decent converter for graphic files. The Console Tool Authors: lowlines Thread: http://www.romhacking.net/forum/index.php/topic,8407.0.html This is a powerful ROM hacking tool that can be used for many systems. I really only use it for occasionally editing palette files though. It supposedly has a pretty powerful 3D Model viewer, but for some reason, I've never been able to access it.
  11. Is this a list that we can add resources to? Because I have a few more useful ones for Gen IV. When I get home I can provide some download links and descriptions.
  12. Thanks Drayano. For the record though, PokeDSPic DP is still useful for HG/SS. There are a few things that still need it, like trainer backsprites.
  13. HG/SS Trainer Back Sprites

    That's actually rather simple. When you put the new RLCN and RGCN into Tinke, you should be able to import the other image with swap to original palette. If not, you can manually edit the image to have the same palette using similar methods to the background workaround.
  14. HG/SS Trainer Back Sprites

    Yeah, I just found out that Photoshop's color palette sort is a lie and doesn't export. The resource I found for Paint.Net turned out to be a dead link. I found a few of those actually. In Photoshop at least, I found a workaround. 1) Export image. 2) Open exported image. 3) View color table. Note which color is first. 4) Select the Magic Wand tool. Set the Tolerance to 0. Uncheck Anti-Aliasing and Contiguous. 5) Use the Magic Wand tool to select the first color and the background color and hit copy. 6) Go to Image > Mode > Color Table and change the background color in the palette to the first color and vice versa. 7) Close the palette and hit paste. 8) Save your image once again. I'd have to grab a copy of Paint.Net to figure a workaround with that program. EDIT: I'm going to write a tutorial through this, so I'm going to work on the palette problems now. I think I have an easy workaround for the differing palettes though.
  15. HG/SS Trainer Back Sprites

    I can't even believe it was this simple, but the background color has to be the first color in the palette. In Photoshop, when exporting, you can sort colors by popularity. This will put the most used color at the beginning which will be the background color. TweakPNG says that you used Paint.Net to make yours though. From reading forum posts, it seems that you can name colors in Paint.Net and they're sorted alphabetically. Here's your sprite with the palette modified. It should work now. http://puu.sh/r8oGq/58f8d06a42.png