• Our software update is now concluded. You will need to reset your password to log in. In order to do this, you will have to click "Log in" in the top right corner and then "Forgot your password?".
  • Welcome to PokéCommunity! Register now and join one of the best fan communities on the 'net to talk Pokémon and more! We are not affiliated with The Pokémon Company or Nintendo.

Research: Expanding the FR Pokedex...

Darthatron

巨大なトロール。
1,152
Posts
18
Years
  • So I've spent the past 2 hours searching for routine that limits the pokedex in FireRed to 151 pokemon, to little avail. I did find one part of the routine that is part of what limits the dex, but still it doesn't work the way I had hoped. :\

    From what I've gathered the byte at 0x08106828 is part of the limiter...

    Code:
    08106828 2897     cmp     r0,97h       ;Compare r0 to 151
    0810682A D901     bls     8106830h     ;If =< then branch to 0x08106830
    0810682C 2000     mov     r0,0h        ;Else, r0 = 0x0

    So... Yeah... Can any of the better ASM Hackers give me a hand? Pretty please?

    And HackMew, if you read this, I know you can help. ;)

    THANKS!!
     

    Full Metal

    C(++) Developer.
    810
    Posts
    16
    Years
  • just one problem with that concept.
    i believe, that is checking to see if it should use the national, or kanto pokedex.
     

    Xenesis

    Syogun Changer
    55
    Posts
    18
    Years
  • Yeah, I know that, but my problem is that it only partly works - stopping only some data from showing up, etc.

    What that probably means that each of the routines used to generate pokedex screens likely have their own checks. If editing one thing only fixes some of the data, then quite simply you'll have to do some more digging.
     

    Darthatron

    巨大なトロール。
    1,152
    Posts
    18
    Years
  • Wouldn't it make much more sense to disable the Kanto Pokedex and expand the National Pokedex? All you would need to do is ASM out the option to open the Kanto Dex, and in the game, use the flag to enable the Pokedex, followed by the flag for enabling the National Dex. I'm no ASM hacker, neither do I have knowledge in that area, but it would be a touch easier that way. That's my two cents anyways, I don't know if it would help any.
    Not really. This method involves changing a few bytes, the way you've suggested required writing a completely new routine to go around the Kanto-dex.

    What that probably means that each of the routines used to generate pokedex screens likely have their own checks. If editing one thing only fixes some of the data, then quite simply you'll have to do some more digging.
    Yes, but I can't seem to locate the other checks. :\
     
    Last edited:

    Xenesis

    Syogun Changer
    55
    Posts
    18
    Years
  • One of the techniques that I've found is really helpful in locating routines that display information is setting breakpoints on writes to the VRAM.

    The code will usually use BIOS functions (swi 0xX) to uncompress or write text to the VRAM areas, which usually have their own subroutines (bl #0x08abcde) as they're general code.

    It's then a matter of just following the link register returns (usually bx lr/bx r0/bx r1) until you find some code that's just after the code run to save to VRAM...usually you'll find some sort of comparison code, index gatherer or something.

    It'd be easier with No$GBA if you have that, but you should still be able to use VBA-SDL-H if my memory serves.
     

    Darthatron

    巨大なトロール。
    1,152
    Posts
    18
    Years
  • One of the techniques that I've found is really helpful in locating routines that display information is setting breakpoints on writes to the VRAM.

    The code will usually use BIOS functions (swi 0xX) to uncompress or write text to the VRAM areas, which usually have their own subroutines (bl #0x08abcde) as they're general code.

    It's then a matter of just following the link register returns (usually bx lr/bx r0/bx r1) until you find some code that's just after the code run to save to VRAM...usually you'll find some sort of comparison code, index gatherer or something.

    It'd be easier with No$GBA if you have that, but you should still be able to use VBA-SDL-H if my memory serves.
    Yeah, I use No$GBA.

    The method I currently used was just a check if the address the Pokedex data is stored at was ever called and then just looking for checks around there. It's really not very efficient. Thanks for the tip. :)
     

    Derlo

    Tired....
    135
    Posts
    16
    Years
  • I think I found the routine that reads the amount of Pokemon, it starts at offset 08043200.

    And near the end of the routine, you will find the value 019B.
    which corresponds to the total of pokemon you have in the game.
    386 Pokemon
    025 empty slots
    total of 411 (Hex: 019b) Pokémon.

    Another routine(08043298) that I found (I think) that loads data from the Pokes or the number corresponding to it. That's because this routine reads the same table in order of Dex.
    And when we change the offset table, the numbering goes crazy and the data is not shown.

    I do not know if this will be useful. But is there that want to test.
    Bye.
     

    HackMew

    Mewtwo Strikes Back
    1,314
    Posts
    17
    Years
    • Seen Oct 26, 2011
    Is it only me or the title is kinda misleading? At first, I thought you mean to expand the total amount of the Pokémon data. But it's not the case, actually. Well, I hacked this already a while ago, but I've lost the offsets (duh). I'll research it again and I'll let you know. By the way: there are many places where the limit is set. Sadly, due to optimization, the limiting value is always embedded into the routine, so all of them need to be edited for the thing to work properly. Last time I did it, I put the maximum amount up to Celebi. Be advised that the first 151 entries are taken directly for the National Dex.
     
    Back
    Top