• 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.

[ASM & Hex] Can someone solve the Overworld Size issue?

Jcool

Stellar
53
Posts
16
Years
  • The problem I'm having is getting an overworld sprite (80 width, 128 height) to display correctly in my rom, and the problem seems to be a result of the data from the unknown pointers thinking I'm still using a sprite with the size 128x64, since I modeled the new OW I inserted after the ship OW of that size.

    As said by metapod23 (https://www.pokecommunity.com/showthread.php?t=211535):

    Now those last five pointers are important. This is why we're using a template. Except for the "Sprite Pointer" (designated 4@ by GBChacker) all these pointers seem to relate to at least the height and width of the OW. If you change the height and width without changing those pointers, your OW will be screwed up (I know this from experience). That's why it's important to find an OW that's already in the game that is consistent with the size of the OW you want to insert. Don't change the height/width and don't change any pointers but the Sprite Pointer, or risk messing up your OW.

    These are not the same values I had because of using a different sprite, but this breaks down the OW data:

    Code:
    FFFF     = Starter Byte
    00     = Palette Number
    11 02 11 = Sprite validation.
    0200 = This is equal to the second 4 numbers in the Frame Data Pointer; this is the size of each frame
    0010 = Width
    0020     = Height
    0110 and 0000 = oam data. Do not modify!
    1@ 10373A08    = Points to @3.
    2@ 9C373A08    = Void pointer\ unsure.
    3@ 70343A08    = A pointer to @5 lol.
    4@ A0003A08    = Sprite Pointer
    5@ FC1C2308    = Pointer to pointers which point to code that loads the sprite through the ewram into the sprite block of the vram and its data into the oam.
    I'm probably wrong, but I'm not completely sure that Unknown 1 points to 3 and 3 points to 5 as said here, because some guides didn't seem to make note of that.


    After having changed the palette number, data size (0200 in this example) as well as the width, height, and sprite pointer, and repointing the frames to match the size of my new OW (as detailed in this https://www.pokecommunity.com/showthread.php?t=297647) I am able to achieve this:
    RwLjhwm.png


    But get this in game:
    z8pdc61.png


    The only thing I can make out of this is that somewhere referenced by those unknown pointers, the game still thinks to assemble my sprite as 128x64, since that is the size it appears to be in this image, except all mangled up. I tried to make sense out of the data by following those pointer addresses, but no luck. Can anybody figure out how these unknown pointers work? I can't be the only one who has wanted to use a size beyond the sizes that already exist in game, and if you can tell what this OW I'm trying to insert is, there is no other way around this problem, without being incredibly disproportionate compared to the hero OW that is.
     
    Last edited:
    Back
    Top