Thread: Development: Set Disobedience
View Single Post
Old August 7th, 2010 (5:18 AM). Edited August 7th, 2010 by metapod23.
metapod23's Avatar
metapod23 metapod23 is offline
Hardened Trainer
Join Date: Mar 2009
Gender: Male
Nature: Timid
Posts: 673
Quote originally posted by colcolstyles:
The data at '0x02024284' is not a pointer. Because of this, the "ldr r0, [r0]" on the third line of each routine is unnecessary. It was needed in the Secret ID case because the trainer's data is moved around in-game and so in order to find it, you needed to load the pointer at an address and then subsequently load the data at that second pointer. It's kind of confusing and difficult to explain but if you remove the line that I told you to, you should hopefully have a little more success.
I removed it and tried it again for both routines, but the Pokemon still seems to obey. Thanks for the help, though.

Quote originally posted by Darthatron:
Pro tip: Before you start making a routine, you need to observe the data.
Do you mean like the debugging part of HackMew's tutorial?

EDIT: According to this:

The sanity byte has to do with whether the Pokemon is an egg or not.

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.
I did a test with a new routine and was able to determine that in my game, with Pikachu as my only Pokemon, Pikachu's sanity byte was 2 - which according to this makes it a regular monster.

So does this mean that the sanity byte doesn't control obedience?

EDIT 2: I was trying out the debugger thing and I thought of something. Since you can view what's going on with custom routines, if I had the offset for the setobedience routine that's in the game, could I theoretically view that and see what it's dealing with? If I could see that, then I could use the same things for my custom routine, right? So if that's the case, how could I go about figuring out what the offset for the setobedience command is?
Reply With Quote