Talk:Pokémon data structure (Generation III): Difference between revisions
Kyoufu Kawa (talk | contribs) (Font and Sanity) |
Iliekmudkips (talk | contribs) (Pointer as to how to actually DO something with this data) |
||
Line 2: | Line 2: | ||
:It's how the game is coded. Pretty complex stuff, but interesting nonetheless. '''[[User:TTEchidna|<span style="color:#FF0000;">T</span>]][[User talk:TTEchidna|<span style="color:#FF0000;">T</span>]][[wp:Echidna|<span style="color:#FF0000;">E</span><span style="color:#0000FF;">chidna</span>]]''' 11:02, 3 September 2007 (UTC) | :It's how the game is coded. Pretty complex stuff, but interesting nonetheless. '''[[User:TTEchidna|<span style="color:#FF0000;">T</span>]][[User talk:TTEchidna|<span style="color:#FF0000;">T</span>]][[wp:Echidna|<span style="color:#FF0000;">E</span><span style="color:#0000FF;">chidna</span>]]''' 11:02, 3 September 2007 (UTC) | ||
::Yeah, basically each individual Pokémon in the game is defined by this structure. You got your wild encounter data and trainer data and that's just a simple species/level pair but when you actually encounter those monsters, they get a full 100 byte structure built up. Any specific questions? --[[User:Kyoufu Kawa|Kyoufu Kawa]] 17:28, 5 September 2007 (UTC) | ::Yeah, basically each individual Pokémon in the game is defined by this structure. You got your wild encounter data and trainer data and that's just a simple species/level pair but when you actually encounter those monsters, they get a full 100 byte structure built up. Any specific questions? --[[User:Kyoufu Kawa|Kyoufu Kawa]] 17:28, 5 September 2007 (UTC) | ||
This page is beautiful. I was part way into cracking the data structure myself, having finally figured out the character set by making a Pokemon be named ABCDEEEE, and then searching the pattern in memory. I googled to see if anyone else had started documenting it, and I found the page for the 100-byte data structures! Anyways, how can you possible use this thing, with the damned "The save file is deleted" message? Easy: | |||
1. Save the game state in VBA - you know the "Save Game - Oldest Slot" routing. The file that it makes is a GZIP'd copy of the GBA's RAM. So to edit it, just ungzip it! | |||
>'''zcat "Pokemon Sapphire7.sg2" > PS-7''' | |||
Then run your hex editor on the PS-7 file, and then put it back: | |||
>'''gzip PS-7''' | |||
>'''ren PS-7.gz "Pokemon Sapphire7.sg2"''' | |||
[[User:Iliekmudkips|Iliekmudkips]] 02:24, 25 September 2007 (UTC) | |||
== Font and Sanity == | == Font and Sanity == |
Revision as of 02:24, 25 September 2007
I'm gonna leave this to the experts here. WHAT IN THE WORLD DOES THIS MEAN?--Machamp ion 16:44, 10 August 2007 (UTC)
- It's how the game is coded. Pretty complex stuff, but interesting nonetheless. TTEchidna 11:02, 3 September 2007 (UTC)
- Yeah, basically each individual Pokémon in the game is defined by this structure. You got your wild encounter data and trainer data and that's just a simple species/level pair but when you actually encounter those monsters, they get a full 100 byte structure built up. Any specific questions? --Kyoufu Kawa 17:28, 5 September 2007 (UTC)
This page is beautiful. I was part way into cracking the data structure myself, having finally figured out the character set by making a Pokemon be named ABCDEEEE, and then searching the pattern in memory. I googled to see if anyone else had started documenting it, and I found the page for the 100-byte data structures! Anyways, how can you possible use this thing, with the damned "The save file is deleted" message? Easy: 1. Save the game state in VBA - you know the "Save Game - Oldest Slot" routing. The file that it makes is a GZIP'd copy of the GBA's RAM. So to edit it, just ungzip it! >zcat "Pokemon Sapphire7.sg2" > PS-7 Then run your hex editor on the PS-7 file, and then put it back: >gzip PS-7 >ren PS-7.gz "Pokemon Sapphire7.sg2" Iliekmudkips 02:24, 25 September 2007 (UTC)
Font and Sanity
I did some research. The font byte can be 0, 1 or 2. 0 and 2 are both Western to the degree that they look exactly the same but may have some extra characters. 1 is the Japanese font. Also notice that the variable-width font engine can fit all ten characters in a six tile space, but the Japanese font does not. For this reason, the game automatically cuts off at the sixth character if the font is set to Japanese.
The sanity byte determines if the individual is an egg. Zero and 2 are a regular monster, 1, 3-5 are Bad EGGs but can be changed back, 6 makes the game write "EGG" instead of the monster's nickname but doesn't actually make it an egg and 7 is the actual Bad EGG. When you break the checksum, the sanity byte is set to 7. This persists! Several actions in the game make it check for Bad EGGs and keep resetting the byte to 7, for example stepping into tall grass and opening the party screen. Good luck turning the Bad EGG back into a real monster. Note that only the first few bits matter so the pattern repeats after 7.
This research was brought to you by --Kyoufu Kawa 14:34, 14 September 2007 (UTC)