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

[Script✓] Edit BOY/GIRL multichoice in Oak's Intro.

222
Posts
6
Years
    • Seen Nov 18, 2023
    I'm not trying to change functionality at all, just the text itself of boy/girl. Is there any way to do this? The Complete Multi-Choice Box Editor doesn't include this one, and I can understand why since it's not part of the "actual" game. I'm chill with using a hex editor but I don't know the offsets for this box. Any suggestions?
     
    Last edited:
    45
    Posts
    11
    Years
    • Seen Jun 26, 2023
    Using a .tbl table/file specific for Fire Red (Google it, there should be one over at Datacrystal), search for the text string in question using a hex editor, then repoint the pointer (little endian+$08) if your new text is longer than the old one. Simple as that.
     
    Last edited:

    DrFuji

    [I]Heiki Hecchara‌‌[/I]
    1,691
    Posts
    14
    Years
  • Boy is at 0x415D93 and girl is at 0x415D97. If you need to repoint them, their pointers are at 0x12FF98 and 0x12FF9C respectively.
     
    222
    Posts
    6
    Years
    • Seen Nov 18, 2023
    Using a .tbl table/file specific for Fire Red (Google it, there should be one over at Datacrystal), search for the text string in question using a hex editor, then repoint the pointer (little endian+$08) if your new text is longer than the old one. Simple as that.


    Neither AdvanceText nor HxD can find it.
     
    45
    Posts
    11
    Years
    • Seen Jun 26, 2023
    Neither AdvanceText nor HxD can find it.

    I use Hex Editor Neo; it has more functions than freeware. Any decent hex editor should have a find function (or control+F). If you follow my method, you wouldn't need AdvanceText. What do you mean by "it"? As in, did you use the table file and can't find the string?

    The .tbl file defines the tiles used for text within the game's engine.

    It seems that DrFuji already gave you the answer, though.
     
    Last edited:
    222
    Posts
    6
    Years
    • Seen Nov 18, 2023
    Boy is at 0x415D93 and girl is at 0x415D97. If you need to repoint them, their pointers are at 0x12FF98 and 0x12FF9C respectively.

    In what encoding? I had assumed it was ASCII, but 0x415D93 is something like ??? and there is no FF to end a string.
     
    Last edited:

    DrFuji

    [I]Heiki Hecchara‌‌[/I]
    1,691
    Posts
    14
    Years
  • In what encoding? I had assumed it was ASCII, but 0x415D93 is something like ??? and there is no FF to end a string.

    Third-gen ROMs don't use ASCII, they have their own custom table to print text. You can find a list of characters and their hexadecimal codes in diegoisawesome's XSE tutorial.

    Boy and girl should should have FF terminators after them. Here's a screenshot of a FR ROM with both boy and girl highlighted, FFs included.

    Boy_Girl.png
     
    222
    Posts
    6
    Years
    • Seen Nov 18, 2023
    If you need to repoint them, their pointers are at 0x12FF98 and 0x12FF9C respectively.

    Thanks for your help! I was able to pull it off.

    Now all of this is just out of curiosity, I don't need an answer if you don't feel like it. Is there a reason why the pointers appear to be written backwards? I'm assuming 08 is the separator byte, but what happens if your offset contains a 08. And what do I do if my offset to point to has more than 3-bytes (like a double-extended rom or something)?
     
    Last edited:
    275
    Posts
    10
    Years
  • Now all of this is just out of curiosity, I don't need an answer if you don't feel like it. Is there a reason why the pointers appear to be written backwards? I'm assuming 08 is the separator byte, but what happens if your offset contains a 08. And what do I do if my offset to point to has more than 3-bytes (like a double-extended rom or something)?

    No, 08 is not a separator byte. Though I'm not a good explainer, so I will just quote another person from here:
    Now, what about that 08? Well, the memory bank for the GBA is made up of several sections. For example, 02 is RAM, 03 is DMA; check the memory viewer in VBA for more detail. So, when referring to ROM information (the bit we hack), the full address will start with 08. In an extended ROM, any addresses past 08FFFFFF simply loop back to 0, but use 09 as the indentifier instead.
     
    Last edited:
    Back
    Top