|
Keitaro Fire Snake LOVELY ARRANGEMENT. VOLCANO BAKEMEAT Level: 70 Posts: 1180/1191 EXP: 2901503 For next: 114308 Since: 09-09-08 From: California Since last post: 4.1 years Last activity: 3.8 years |
|
| EDIT: I went ahead and cleaned this up so it was easier to read, heh.
I really wanted to make a hack of this game with the Pokémon that weren't included, so I started poking around for data! As far as I know, this is the first ever data documented on this game, so I'll try to be as detailed as possible. Here's what I've found so far: Pokémon structure format: this is a little weird and I'm not 100% sure what all of this does, so bear with me. Starting at 0x6A3707 is the data for the Pokémon themselves. It goes as follows: Name in Ascii (0x0A Bytes)* Catch Mode Sprite (0x01 bytes; 00 if none, defaults to Treecko?) Hatch Mode Sprite (0x01 bytes; 00 if none, defaults to Wurmple?) Unknown (0x01 bytes; always 00?) Evolution (0x02 bytes; [type] [Pokémon]) Additional unknown data (0x9 Bytes) Total size of each Pokémon: 0x18 bytes The Pokémon you will encounter, whether by Catch or Hatch mode, is always sent to 0x02000598 in memory. You could make a cheat to set a Pokémon for easy testing! *Changing this affects how a Pokémon's name is displayed during play ("You caught/evolved [Pokémon]!") but NOT for its Pokédex entry. That data is apparently completely separate. I have not found any information on the Pokédex yet, though it would be nice to eventually have control over at least the list order. Any left-over space in a Pokémon's name is filled with 0x20, or an ASCII space character. Values for evolution type: 00 - Does not evolve* 01 - Exp. 02 - Leaf stone 03 - Fire Stone 04 - Link Cable 05 - Moon Stone 06 - Water Stone 07 - Thunder Stone 08 - Sun Stone (unused / untested) 09 - Affection 0A - Pokéblock 0B - Split** *Must "evolve" in to 0xCD/Blank Pokémon??? **PRETTY sure the way this works is "declared Pokémon value + 1"; i.e. 0B 9B to evolve in to either Pikachu OR Raichu, 0B B3 to evolve in to either Corsola or Chinchou, etc. Not sure how the evolution method (Exp., Stone, etc.) is determined in such cases as neither Gloom nor Wurmple offer any clues so far (possibly hardcoded?) Please chime in if you feel you could shed some light on this! It would be really nice to have more control over this so that adding Pokémon such as Eevee might be possible. Also unknown to me is how Shedinja is handled by the game. This may also possibly be hardcoded (automatically add to Pokédex once Ninjask is obtained maybe???), if anyone has any idea how this works or the possibility of modifying or disabling such behavior, please offer your input! Wild Pokémon Lists/Format: Each list is 0x10 bytes in size, allowing for 8 Pokémon per list. If you would like to have less than eight Pokémon, use 0xCD (a "blank" Pokémon) to fill in the remaining slots. There are two lists per field location. Not sure how lists are assigned to the appropriate field locations just yet, the only pointers I found lead to the first of all these lists only...? (I.E. Petalburg Ruby 1) Format: PP 00 PP 00 etc (PP = Pokémon in hex, 00 has no value). All addresses are in hexidecimal. It's interesting to note that based on these internal lists, literally all information online regarding Pokémon catch locations have incorrect data (there is no Medetite in the Safari Zone!!!) Anyways, here are the lists: Petalburg Forest (Ruby) List 1: (055A84) ------- 16 Nuzleaf 0B Zigzagoon 0E Silcoon 10 Cascoon 93 Duskull 90 Keckleon CD Blank CD Blank List 2: (055A94) ------- 00 Treecko 16 Nuzleaf 0B Zigzagoon 0E Silcoon 10 Cascoon 93 Duskull 29 Nincada 90 Keckleon Petalburg Forest (Sapphire) List 1: (055AA4) ------- 23 Slakoth 5D Roselia 0E Silcoon 10 Cascoon 93 Duskull 90 Keckleon CD Blank CD Blank List 2: (055AB4) ------- 95 Tropius 23 Slakoth 5D Roselia 0E Silcoon 10 Cascoon 93 Duskull 29 Nincada 90 Keckleon Plains (Ruby) List 1: (055AC4) ------- 56 Illumise 4D Electrike 09 Poochyena 51 Magnemite 53 Voltorb 18 Taillow 8D Castform CD Blank List 2: (055AD4) ------- 7A Zangoose 09 Poochyena 51 Magnemite 53 Voltorb 18 Tailow 8D Castform CD Blank CD Blank Plains (Sapphire) List 1: (055AE4) ------- 89 Jigglypuff 4D Electrike 09 Poochyena 51 Magnemite 53 Voltorb 18 Tailow 8D Castform CD Blank List 2: (055AF4) ------- 55 Volbeat 7B Seviper 89 Jigglypuff 09 Poochyena 51 Magnemite 53 Voltorb 18 Tailow 8D Castform Lilycove List 1: (055B04) ------- 62 Wailmer 1A Wingull 41 Tentacool 60 Carvanha B6 Luvdisc 84 Lileep CD Blank CD Blank List 2: (055B14) -------- 8E Staryu 62 Wailmer B2 Relicanth 41 Tentacool 60 Carvanha B6 Luvdisc 84 Lileep CD Blank Beach List 1: (055B24) ------- 33 Magikarp 1A Wingull 41 Tentacool 60 Carvanha B6 Luvdisc 86 Anorith CD Blank CD Blank List 2: (055B34) ------- AF Clampearl 33 Magikarp B2 Relicanth 41 Tentacool 60 Carvanha B6 Luvdisc 86 Anorith CD Blank Granite Cave (Ruby) List 1: (055B44) ------- 7D Solrock 44 Mawile 48 Machop 69 Grimer BB Shelgon 2D Loudred 3B Nosepass CD Blank List 2: (055B54) ------- 7D Solrock 48 Machop 26 Abra BB Shelgon 2D Loudred 3B Nosepass CD Blank CD Blank Granite Cave (Sapphire) List 1: (055B64) -------- 7C Lunatone 2F Makuhita 69 Grimer BB Shelgon 2D Loudred 3B Nosepass CD Blank CD Blank List 2: (055B74) ------- 7C Lunatone 2F Makuhita 43 Sableye 26 Abra BB Shelgon 2D Loudred 3B Nosepass CD Blank Safari Zone List 1: (055B84) ------- 9D Psyduck A7 Heracross A3 Girafarig A6 Pinsir A8 Rhyhorn 5B Doduo A0 Wobuffet CD Blank List 2: (055B94) ------- 9B Pikachu A7 Heracross A3 Girafarig A6 Pinsir A8 Rhyhorn 5B Doduo A0 Wobuffet CD Blank Chimney Mountain List 1: (055BA4) ------- 66 Slugma 98 Vulpix 68 Torkoal 64 Numel 6B Koffing 72 Skarmory CD Blank CD Blank List 2: (055BB4) ------- 03 Torchic 98 Vulpix 68 Torkoal 64 Numel 6B Koffing 72 Skarmory CD Blank CD Blank Lake List 1: (055BC4) ------- 31 Goldeen 36 Marill 13 Lombre 7E Barboach 80 Corphish 8B Feebas CD Blank CD Blank List 2: (055BD4) ------- 06 Mudkip 36 Marill 13 Lombre 7E Barboach 80 Corphish 8B Feebas CD Blank CD Blank Desert List 1: (055BE4) ------- 82 Baltoy 4B Meditite 74 Vibrava 76 Cacnea 38 Geodude 97 Absol CD Blank CD Blank List 2: (055BF4) ------- 78 Swablu 4B Meditite 74 Vibrava 76 Cacnea 38 Geodude 97 Absol CD Blank CD Blank Ruins (Ruby) List 1: (055C04) ------- BD Beldum C0 Regirock C1 Regice CD Blank CD Blank CD Blank CD Blank CD Blank List 2: (055C14) ------- BD Beldum C0 Regirock C1 Regice C2 Registeel CD Blank CD Blank CD Blank CD Blank Ruins (Sapphire) List 1: (055C24) ------- BD Beldum C0 Regirock C1 Regice CD Blank CD Blank CD Blank CD Blank CD Blank List 2: (055C34) ------- BD Beldum C0 Regirock C1 Regice C2 Registeel CD Blank CD Blank CD Blank CD Blank Additionally, Aerodactyl, Chikorita, Cyndaquil, Totodile, and Latios/as can be found at random on any given field, supposedly... I have no idea where this data is stored, as I have been unable to make them appear legitimately yet to do a memory trace. It would also be nice to be able to find the data to determine which Pokémon is used when Jirachi is called, or any of the legendaries are faced in a Bonus capture game, so if anyone has any ideas please share them! Egg Pokémon Lists - These are the lists of Pokémon which can be hatched from eggs. 0x34 bytes each, one list per table universal across all field locations. Format is same as wild Pokémon, i.e. PP 00 PP 00 etc. (not sure what happens if 0xCD is used to truncate list in this case) Ruby Table Egg List: (6A4A38) ----------------------- 0D Wurmple 15 Seedot 1C Ralts 21 Shroomish 2C Whismur 3C Skitty 3E Zubat 45 Aron 4F Plusle 50 Minun 57 Oddish 6D Spoink 6F Sandshrew 71 Spinda 73 Trapinch 91 Shuppet 96 Chimecho 9F Wynaut A1 Natu A4 Phanpy AA Snorunt AC Spheal B3 Corsola B7 Horsea BA Bagon 9A Pichu Sapphire Table Egg List: (644A6C) ----------------------- 0D Wurmple 12 Lotad 1C Ralts 1F Surskit 2C Whisur 35 Azurill 3E Zubat 45 Aron 57 Oddish 5E Gulpin 6D Spoink 6F Sandshrew 71 Spinda 73 Trapinch 88 Igglybuff 91 Shuppet 96 Chimecho A1 Natu A4 Phanpy AA Snorunt AC Spheal B3 Corsola B4 Chinchou B7 Horsea BA Bagon 9A Pichu Additional notes/discoveries Cry data exists in the game for Bayleef, Meganium, Quilava, Typhlosion, Croconaw, Feraligatr, and Deoxys. None of these Pokémon are available in the game, and the Johto starters can't even evolve as a result! No remaining data for these Pokémon appear to be left, though there are four placeholder portraits featuring crudely drawn numbers still in the game for up to Pokédex number 210 (if the blank entry 0xCD is assumed to be #206, these would come directly afterwards!) ... I question if it is possible to add more than 205 Pokémon if the game considers 206 to be the "end" value, but it shouldn't be impossible with the right skills. So that's all the information I have found so far! Please let me know if you have any questions, if I didn't explain something well enough, or if you have any suggestions or ideas you might be able to contribute to this further! My ASM skills are so limited that this is about all the data I was able to find myself so far, but it's a step in the right direction for hacking at least the Pokémon themselves! Actual physical table "map" data is probably beyond my research skills at the moment... my eventual goals are to be able to have more control over split-type evolutions, and to be able to add additional field areas outside of the nine available (as well as editing and better understanding the "travel order"), so if anyone has any suggestions on where to go next or other neat things I should dig in to, let me know! I'll be doing some poking myself in the meanwhile. Finally, here is a list of all the Pokémon's hexidecimal values! 00 - Treecko 01 - Grovyle 02 - Sceptile 03 - Torchic 04 - Combusken 05 - Blaziken 06 - Mudkip 07 - Marshtomp 08 - Swampert 09 - Poochyena 0A - Mightyena 0B - Zigzagoon 0C - Linoone 0D - Wurmple 0E - Silcoon 0F - Beautifly 10 - Cascoon 11 - Dustox 12 - Lotad 13 - Lombre 14 - Ludicolo 15 - Seedot 16 - Nuzleaf 17 - Shiftry 18 - Taillow 19 - Swellow 1A - Wingull 1B - Pelipper 1C - Ralts 1D - Kirlia 1E - Gardevoir 1F - Surskit 20 - Masquerain 21 - Shroomish 22 - Breloom 23 - Slakoth 24 - Vigoroth 25 - Slaking 26 - Abra 27 - Kadabra 28 - Alakazam 29 - Nincada 2A - Ninjask 2B - Shedinja 2C - Whismur 2D - Loudred 2E - Exploud 2F - Makuhita 30 - Hariyama 31 - Goldeen 32 - Seaking 33 - Magikarp 34 - Gyarados 35 - Azurill 36 - Marill 37 - Azumarill 38 - Geodude 39 - Graveler 3A - Golem 3B - Nosepass 3C - Skitty 3D - Delcatty 3E - Zubat 3F - Golbat 40 - Crobat 41 - Tentacool 42 - Tentacruel 43 - Sableye 44 - Mawile 45 - Aron 46 - Lairon 47 - Aggron 48 - Machop 49 - Machoke 4A - Machamp 4B - Meditite 4C - Medicham 4D - Electrike 4E - Manectric 4F - Plusle 50 - Minun 51 - Magnemite 52 - Magneton 53 - Voltorb 54 - Electrode 55 - Volbeat 56 - Illumise 57 - Oddish 58 - Gloom 59 - Vileplume 5A - Bellossom 5B - Doduo 5C - Dodrio 5D - Roselia 5E - Gulpin 5F - Swalot 60 - Carvanha 61 - Sharpedo 62 - Wailmer 63 - Wailord 64 - Numel 65 - Camerupt 66 - Slugma 67 - Magcargo 68 - Torkoal 69 - Grimer 6A - Muk 6B - Koffing 6C - Weezing 6D - Spoink 6E - Grumpig 6F - Sandshrew 70 - Sandslash 71 - Spinda 72 - Skarmory 73 - Trapinch 74 - Vibrava 75 - Flygon 76 - Cacnea 77 - Cacturne 78 - Swablu 79 - Altaria 7A - Zangoose 7B - Seviper 7C - Lunatone 7D - Solrock 7E - Barboach 7F - Whiscash 80 - Corphish 81 - Crawdaunt 82 - Baltoy 83 - Claydol 84 - Lileep 85 - Cradily 86 - Anorith 87 - Armaldo 88 - Igglybuff 89 - Jigglypuff 8A - Wigglytuff 8B - Feebas 8C - Milotic 8D - Castform 8E - Staryu 8F - Starmie 90 - Kecleon 91 - Shuppet 92 - Banette 93 - Duskull 94 - Dusclops 95 - Tropius 96 - Chimecho 97 - Absol 98 - Vulpix 99 - Ninetales 9A - Pichu 9B - Pikachu 9C - Raichu 9D - Psyduck 9E - Golduck 9F - Wynaut A0 - Wobbuffet A1 - Natu A2 - Xatu A3 - Girafarig A4 - Phanpy A5 - Donphan A6 - Pinsir A7 - Heracross A8 - Rhyhorn A9 - Rhydon AA - Snorunt AB - Glalie AC - Spheal AD - Sealeo AE - Walrein AF - Clamperl B0 - Huntail B1 - Gorebyss B2 - Relicanth B3 - Corsola B4 - Chinchou B5 - Lanturn B6 - Luvdisc B7 - Horsea B8 - Seadra B9 - Kingdra BA - Bagon BB - Shelgon BC - Salamence BD - Beldum BE - Metang BF - Metagross C0 - Regirock C1 - Regice C2 - Registeel C3 - Latias C4 - Latios C5 - Kyogre C6 - Groudon C7 - Rayquaza C8 - Jirachi C9 - Chikorita CA - Cyndaquil CB - Totodile CC - Aerodactyl CD - Blank |




Anyways! Encounter data works very differently from the GBA games. Red Table data starts at 112CC, and Blue at 1144D. Some relevant pointers also seem to appear just before the former. Two lists per field once again (two and three arrow, henceforth referred to as "common" and "rare") and each is 0x10 bytes each, much like the GBA games, only this time there are no spacers! That's right, in theory, you could have up to 16 different Pokémon appear on the field, but there is a slight catch. Rarity is determined by how frequently a Pokémon shows up in the list--I.E., there will be multiple instances of common things such as Pidgey or Krabby on a lot of field lists. Due to this, many maps will not actually hold a full 16 Pokémon (in fact, none do) ... another thing of note is that the Pokémon are always listed in index-numerical order on these lists, though I'm pretty sure that shouldn't matter in the slightest. As for the Pokémon index numbers, they are identical to that of Gen 2's, so just look up the hexadecimal numbers for that (I.E. Bulbasaur at 01, Mewtwo at 96)
