DoesntKnowHowToPlay
Tiny Umbrella with Lots and Lots of Good
- 264
- Posts
- 13
- Years
- Seen Feb 24, 2024
It is now, but I'm actually terrible at maintaining tutorials apparently, so thanks Chaos Rush.
I tried to do this on a Japanese FR 1.0 ROM but I get lost.
Can someone help me?
Once you've decided, figure out how many bits it will take to encode the number of dex entries- the answer is (number of dex entries)/8, rounded up. Using this, pick two locations in the RAM freed by JPAN's hack to be where Seen and Caught flags will go.
I know this thread hasn't been bumped in like 2 weeks but this seemed like a good place to ask: has anyone made any headway in changing the order of the national dex? I know it's not hardcoded to internal ordering because Chimecho is after Deoxys internally, along with a lot of Hoenn mons that aren't where they should be national dex wise.
Editors have been made for the regional dex, and I would think that the national dex is programmed in a similar way, so why can't I find anything for reordering it?
There's a tool called "Pokedex Order Editor". It does exactly as you wish.
If you're talking about Sebbe's, it's regional only as far as I can tell.
Something about this seems wrong. I don't see any second copies of the table in the disassembly, used or otherwise.
This is the routine that handles converting the internal ID into the cry ID, taken from knizz' disassembly and commented by me:
Code:speciesid_conv: push {lr} lsl r0, r0, #0x10 @ typecasting lsr r0, r0, #0x10 movs r1, r0 cmp r0, #250 @ slots up to 250 have the same cry ID as the internal ID bls loc_8043332 ldr r0, dword_8043324 cmp r1, r0 @ is this slot 275 or below? bls loc_8043330 @ if so, branch ldr r0, off_8043328 @ otherwise, use the table ldr r2, dword_804332C add r1, r1, r2 @ subtract 276 from ID lsl r1, r1, #1 @ and multiply by two, since it's a table of 16-bit values add r1, r1, r0 @ then index into the table ldrh r0, [r1] @ retrieve the value b loc_8043332 @ and leave @ --------------------------------------------------------------------------- dword_8043324: .long 275 off_8043328: .long 0x082539D4 dword_804332C: .long -276 @ --------------------------------------------------------------------------- loc_8043330: mov r0, #200 @ limbo slots use Unown's cry loc_8043332: pop {r1} bx r1 @ End of function speciesid_conv
The table at x2539D4 is followed by the first experience curve table - there is no secondary cry table.
Editing this routine to remove the hardcoded cry for the limbo slots is easy: write 00 00 00 00 00 00 00 00 00 00 (that's ten bytes) to x4330C and 00 00 00 00 (four) to x43318, then repoint the table at x4539D4 and expand it - it's now a table with one word for every ID. (You can test to make sure that it worked without repointing the table - you'll know it worked if the title screen makes Blaziken's cry.)
Careful with that offset. :) It's 134 (0x86) words long, so 268 (0x10C) bytes. The pointer you need to change is at x43328, it's in the disassembly.how long is the table at x2539D4 that needs repointing, and do i need to change a pointer so that it goes to the new table?
Careful with that offset. :) It's 134 (0x86) words long, so 268 (0x10C) bytes. The pointer you need to change is at x43328, it's in the disassembly.
As I said, the cries for Gen I and II Pokémon are just their National Pokédex numbers in hex. I didn't fully work through how to expand the table other than saying "once you've done this it's one word per slot", so you're on your own.