• Just a reminder that providing specifics on, sharing links to, or naming websites where ROMs can be accessed is against the rules. If your post has any of this information it will be removed.
  • Ever thought it'd be cool to have your art, writing, or challenge runs featured on PokéCommunity? Click here for info - we'd love to spotlight your work!
  • Dawn, Gloria, Juliana, or Summer - which Pokémon protagonist is your favorite? Let us know by voting in our poll!
  • 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.

[Other] Limitation of Voicegroup-Pointers (Pokemon Emerald)

  • 2
    Posts
    9
    Years
    • Seen May 28, 2015
    Hey Community,

    I was adding custom Voicegroups starting with a free Offset (0x00FF3200) in Pokemon Emerald.
    Then I added them in the Song-Table as Instrument using Sappy.
    This worked very well until I reached a higher Offset seemingly causing trouble.

    I looked into it using a Hex Editor and found out the Pointer for the Voicegroups are the problem.
    Normally it would create a Pointer like this: 0x012B9600 -> 00 96 2B 01 + 08 = 00 96 2B 09

    And then the 1st Offset with problems: 0x0205E800 -> 00 E8 05 02 + 08 = 00 E8 05 08
    I thought the last two numbers should have been '0A' but it was changed to '08' instead.
    Manually changing the numbers and various testing made me realize that somehow the last numbers from 00 E8 05 0A (the '0A') are read as '00'.

    So I originally thought I could use the free space of the Rom till 0x07FFFFFC resulting in the pointer FC FF FF 0F.
    But instead it seems to be limited to 0x01FFFFFC resulting in the pointer FC FF FF 09.
    That would mean I have only 1/7 of free space I thought I have...

    I want you help for either confirming this limitation of the Voicegroup-Pointer or finding a solution/workaround for allowing higher Pointers.
     
    Hey Community,

    I was adding custom Voicegroups starting with a free Offset (0x00FF3200) in Pokemon Emerald.
    Then I added them in the Song-Table as Instrument using Sappy.
    This worked very well until I reached a higher Offset seemingly causing trouble.

    I looked into it using a Hex Editor and found out the Pointer for the Voicegroups are the problem.
    Normally it would create a Pointer like this: 0x012B9600 -> 00 96 2B 01 + 08 = 00 96 2B 09

    And then the 1st Offset with problems: 0x0205E800 -> 00 E8 05 02 + 08 = 00 E8 05 08
    I thought the last two numbers should have been '0A' but it was changed to '08' instead.
    Manually changing the numbers and various testing made me realize that somehow the last numbers from 00 E8 05 0A (the '0A') are read as '00'.

    So I originally thought I could use the free space of the Rom till 0x07FFFFFC resulting in the pointer FC FF FF 0F.
    But instead it seems to be limited to 0x01FFFFFC resulting in the pointer FC FF FF 09.
    That would mean I have only 1/7 of free space I thought I have...

    I want you help for either confirming this limitation of the Voicegroup-Pointer or finding a solution/workaround for allowing higher Pointers.

    Game Pak data is limited to 32MB in size (0x2000000 bytes). I don't know where you read that you can that much space (why do you even need that much); in fact basically all your information is wrong. Where did you get such a high offset? Are you sure that's even an offset?

    Pointers are addresses: those prefixes mean something. 08 and 09 are for the Game Pak. 0A and 0B are mirrors of that space, as are 0C and 0D. These can be configured to do some things differently, but it appears the Pokemon games treat them equally. This results in repointing tools changing 0A to 08. The reason you add offsets to the address is because you're dealing with a ROM dump - you can only see the ROM part of the game. You have to convert the offset in this ROM to a GBA address so that the CPU knows where to find the data.

    The other prefixes are reversed for other blocks of memory. For example 02 and 03 are work RAM. See GBATEK for a full memory map.
     
    I was feeling that something is wrong with these high offsets.
    Thanks for explaining this matter.

    (I was just trying the replace some of the songs with custom wave-songs which needs a bit more space.)
     
    Back
    Top