Kyoufu Kawa

Joined 30 June 2007
no edit summary
No edit summary
No edit summary
Line 7: Line 7:
And here's another fun thing to try: if you want to manipulate your opponent's Pokémon, including a wild encounter, try browsing to your party data (see [[Pokémon data structure in the GBA]]) and scroll up about 600 bytes. You see correctly.
And here's another fun thing to try: if you want to manipulate your opponent's Pokémon, including a wild encounter, try browsing to your party data (see [[Pokémon data structure in the GBA]]) and scroll up about 600 bytes. You see correctly.


[http://helmetedrodent.kickassgamers.com My site]<br>
[http://helmetedrodent.kickassgamers.com/vbalog.rar My challenge]<br>


Something I've been working on for the past few days: a [http://helmetedrodent.kickassgamers.com/Pika/openpoke/opguide guide] to ensure high quality hacks and stuff.
== Kawa's Pokémon Research ==
=== Font and Sanity ===
The font byte in the Pokémon data structure can be 0, 1 or 2. 0 and 2 are both Western. 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 (see below) 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.
 
=== Eggs ===
In the DV field, there are two bits left over. One of these determines if a given Pokémon is an Egg. Combine this with the sanity byte set to 6 to make it write EGG instead of whatever the Pokémon's nickname is.
 
=== Bad Eggs ===
Every time a given property of a Pokémon is read or written, this is done with four specific routines. Two of these are called by the other two if the requested property is in the substructure block. These routines are also responsible for checking if the Pokémon's checksum is correct and set a bunch of values to turn it into a Bad EGG otherwise, but only if it's a substructure property.
 
 
More research coming... whenever.
115

edits