You are not logged in.
Does anyone know what to change in order to make your starter pokemon not immune to level-loyalty limits? What I mean by this is that usually when you catch a pokemon and raise its level too high and you don't have the correct badge(s), then it will disobey you in battle and such. However, since RBY, which has continued into GSC, how does one change it so that your starter pokemon is not immune to this phenomenon?
Whether a pokemon may disobey you or not depends on its ID number.
So basically, I believe every time you use one of the four "FIGHT" commands with your pokemon, the game checks the OT of that pokemon and if OT = "PLAYER" --> Skip calling asm code for "whether to obey you or not".
I found what should solve the problem: Change the byte in 0x34410 to 00 (00 = nop (= no instruction performed)).
Anyway, might as well explain why to do that.
Before the code, the game stores the ID of the used in-battle pokemon in register pair hl.
$34405 ld a, (D1A1) (loads a register with the value at $D1A1 in ram (used for one of two bytes determining PLAYER's ID) cp (hl) (compares the values of register a with register hl's (=compares the first byte of PLAYER's ID with the first byte of used pokemon's ID) jr nz, $4411 (if the bytes are not same, go to offset $34411) inc hl (increases register pair hl by one --> [hl] = "second byte of used in-battle pokemon's ID") ld a, (D1A2) (loads the second byte of PLAYER'S ID to register a) cp (hl) (the same thing again) ret z (if bytes are same --> return to the code loaded before-hand) $34411 (right after ret z) ld hl, (D57C) (loads value in $D57C into hl (="checks how many badges PLAYER has") etc.
And the following code is used for checking if player has defeated Clair or other gym leaders which make it possible to make traded pokemon obey you and stuff like that.
Last edited by Miksy91 (2012-02-19 11:03:29)
Hmm I'm not sure if I clearly articulated what I wanted and you may have misunderstood. I don't want it so that all pokemon will obey regardless of level or Trainer ID. I want those things to stay. I just want to make it so that your starter pokemon (in this case Chikorita, Cyndaquil, and Totodile) do not always obey just because they are your starter.
What I'm trying to do is independent of trainer ID because even a pokemon's OT ID is the same as yours, if you level too it up too high without correct badges, it will disobey. I want this to be possible with starters, too.
No. Only traded pokemon will disobey if their level is too high. Starters are not special in any way.
I think you can do it by turning the starter into a gift Pokemon where the OT is from Elm or something. This is because only traded Pokemon disobey, which has been stated by everyone else on this thread. Therefore, you can make the starter count as a traded Pokemon (with a different ID) and it won't always obey. The Pokemon's ID cannot be the same as yours in order to disobey.
I haven't been on this site for a very long time. Sorry about that! >.<
I am probably not going to get very far in the ROM projects that I've started, at least until I get more experience hacking, so I apologize.
Starter pokemon is obviously the one you receive for starting out in your hack ?
In that case you can assume that no one cheats him-/herself a pokemon before receiving the starter and after "give pkmn" command is gone through, you just change the bytes at $DA30-DA31.
Or...you can do it properly by modifying the asm code I posted here.
Last edited by Miksy91 (2012-02-19 17:26:56)