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

FireRed hack: Pokémon Throwback v211001: Kanto, Your Way

12
Posts
7
Years
  • Age 28
  • Seen Jun 28, 2023
There's multiple functions that need to be edited to get the GB Player fully working with a different ROM image of the game, meaning several pointer changes. Given what you've said, it seems like it's a problem with the music bank switching itself. There's a few things that could go wrong with that part, but I wouldn't know what exactly it is for you without looking at your changes.

Eh, I must track down all the changes I've made and I'll post you as soon as I have found them (I worked on this some months ago but I gave up due to problems mentioned above...Now I'm trying again, I want to success! ;)).

EDIT: I wonder if it's simplier to directly port the patch (apply .ips to a clean ROM, track the changes, correct pointers and paste to new ROM) or just recreate the patch by compiling and inserting ASM code directly into new ROM.
I also wonder if the problems I have are caused by wrong ROM pointers or wrong RAM pointers, if there are any involved (I don't know if RAM data is the same between all the versions of Fire Red).
 
Last edited:
5
Posts
7
Years
  • Age 33
  • Seen Nov 20, 2016
That doesn't sound like something the patches alone would be capable of. Did you make sure you patched them to the correct game/ROM version? These patches are for the initial English releases of FireRed and LeafGreen (v1.0), not the updated ones (Rev A/v1.1).

I did it right the first time I think..Im using mobile because I dont have a laptop, but Ill try again I guess
 
5
Posts
7
Years
  • Age 33
  • Seen Nov 20, 2016
good job mod, well since v1.0 literally exist no where besides one website, I guess I cant play this rom.
 
12
Posts
7
Years
  • Age 28
  • Seen Jun 28, 2023
[...] but I wouldn't know what exactly it is for you without looking at your changes.

Ok, so here's what I did.
I tried to implement the GB Player using your GB Sounds table and the ASM code I found here and on another development discussion.

1) Compiled and inserted this ASM routine (music table switching):

Spoiler:


Bold black offsets are the ones I corrected to adapt to my ROM; bold red offsets are the ones I don't know if they need to be changed or not.

The post where I found that code said also this:

Spoiler:


So i navigated to my corresponding offsets and changed binary data/pointers according, but I don't know if "7A 46 XX 49 08 47" is valid for every ROM or different images need different data (however clean ROMs have the same data...).

2) I found and modified your "GB Player ON/OFF" script:

I translated messages and corrected offsets, but I have no clue of what's this:

Code:
writebytetooffset 0x1 0x3000FC4

I don't know if that offset needs to be changed or not.

3) Inserted these two ASM found on the first page of this thread:

Spoiler:


Again, red offsets are the ones I don't know how to change (or if they are RAM offsets).

4) Created the GB Player Key Item that points to the last ASM routine.

5) Inserted music data according to your "Music Hacking Notes.txt" found inside downloaded .zip and corrected (I think) all pointers referring to original Fire Red Tracks in my ROM (DirectSound) that were located in the GB music table.

The 8-bit tracks play fine with Sappy if I open my modified ROM and load the 8-bit table located at 0x08800000.

Result: the game boots up and plays original music fine, but, when I try to use the GB Player, the game restarts ad soon as the player returns to overworld from the bag and the GB Player "Switched ON" message begins to appear.

Where the mistake could be?
Thanks in advance! :)
 
Last edited:

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
good job mod, well since v1.0 literally exist no where besides one website, I guess I cant play this rom.
You're aware that just about every FireRed-based hack on this site is based on the 1.0 version of the game, right? The fact that so many have played these hacks would likely suggest that you're incorrect about it "literally exist[ing] no where besides one website".

Also, please don't reference obtaining ROMs illegaly. Even if it's indirect, pointing people towards looking on sites to unlawfully download copyrighted material is against the site's TOS.
Ok, so here's what I did.
I tried to implement the GB Player using your GB Sounds table and the ASM code I found here and on another development discussion.

I'll try to break down your reply piecemeal to make it more manageable:
1) Compiled and inserted this ASM routine (music table switching):

Spoiler:


Bold black offsets are the ones I corrected to adapt to my ROM; bold red offsets are the ones I don't know if they need to be changed or not.
The pointer to the RAM table (4A329C) needs to be changed, as well. You'll need to redirect the other pointer (6E6D1) if it differs in the version of the game you're editing.
The post where I found that code said also this:

Spoiler:


So i navigated to my corresponding offsets and changed binary data/pointers according, but I don't know if "7A 46 XX 49 08 47" is valid for every ROM or different images need different data (however clean ROMs have the same data...).
The pointers in that post only apply to the English v1.0 version of FireRed. You'll still need to change the equivalent sections in whatever version you're editing. Look for similar nearby bytes to help track its location in the ROM. All five of them should still be around the 0x1DD000 offset area. If you can tell me what version of the game you're working with, I can help you find them.
2) I found and modified your "GB Player ON/OFF" script:

I translated messages and corrected offsets, but I have no clue of what's this:

Code:
writebytetooffset 0x1 0x3000FC4

I don't know if that offset needs to be changed or not.
Don't change that. That's a part of RAM that's consistent across all versions of the game. Or, at least it should be.
3) Inserted these two ASM found on the first page of this thread:

Spoiler:


Again, red offsets are the ones I don't know how to change (or if they are RAM offsets).
Change the ROM offset pointers (0x08______). Keep other pointers (0x02______, 0x03______) the same. As a rule of thumb (pun not intended): If the data that a ROM offset pointer is pointing to is different in your version of the game, repoint it to where the equivalent data is.
4) Created the GB Player Key Item that points to the last ASM routine.

5) Inserted music data according to your "Music Hacking Notes.txt" found inside downloaded .zip and corrected (I think) all pointers referring to original Fire Red Tracks in my ROM (DirectSound) that were located in the GB music table.

The 8-bit tracks play fine with Sappy if I open my modified ROM and load the 8-bit table located at 0x08800000.

Result: the game boots up and plays original music fine, but, when I try to use the GB Player, the game restarts ad soon as the player returns to overworld from the bag and the GB Player "Switched ON" message begins to appear.

Where the mistake could be?
Thanks in advance! :)
If you've properly repointed all the unchanged sound tracks in my 8-Bit soundbank, then there shouldn't be any other problems as far as I can tell. But yeah, I can very easily see where the thing's going wrong now thanks to what you've posted. Just change the ROM pointers and you should be good.

If you need help with the five locations in the 1DD000 range, just tell me what version of the game you're working with and I'll see where they're at.

I hope this helps get everything up to speed! I've always thought about bringing Throwback to other ROM versions, but the language barrier has been too much for me to slice through.
 
12
Posts
7
Years
  • Age 28
  • Seen Jun 28, 2023
I am working on a Pokémon Fire Red Italian ROM (BPRI).

I think it's better (at least for me) to work on a single part at a time ;)

Part 1: Music table switching routine

Spoiler:


normaltable: In BPRE the music table is located at 0x4A32CC; in BPRI (my working ROM) the same table is at 0x496D20.
gbptable: I put it at the same offset it is in your patch (0x800000)
flag: Left the same.

Regarding ramtable and decry, my real question is:
Are they RAM pointers, that refer to RAM area, so to change those I need to use a memory viewer to find out correct pointers, or they are still ROM pointers, so I should only search for the corresponding bytes in my ROM?

If I manage to understand this, I can move to the next part. :)

I don't know anything of ASM programming, but I have good sense of logic and I'm able to work with such things if I want to do it ;)

-----------------------------------------------------------------------

After I will have fixed that ASM, I will insert it at 0x900000.
Then, according to Jambo51's istructions, I will replace with "7A 46 XX 49 08 47" the data I'll find at:

Code:
 0x1DD0F8, 0x1DD124, 0x1DD170, 0x1DD1C4 and 0x1DD1F8

This is for BPRE. In BPRI, the same data is at:

Code:
 0x1DA564, 0x1DA590, 0x1DA5DC, 0x1DA630 and 0x1DA664

Then, I'll also replace all the pointers to the music table (0x4A32CC for BPRE; 0x496D20 for BPRI) with the pointer+1 to the ASM routine at 0x900000
For BPRI, all the pointers are at:

Code:
 0x1DA588, 0x1DA5BC, 0x1DA608, 0x1DA65C, 0x1DA690

Am I doing it right?
 
Last edited:

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
I am working on a Pokémon Fire Red Italian ROM (BPRI).

I think it's better (at least for me) to work on a single part at a time ;)
Works for me!
Part 1: Music table switching routine

Spoiler:


normaltable: In BPRE the music table is located at 0x4A32CC; in BPRI (my working ROM) the same table is at 0x496D20.
gbptable: I put it at the same offset it is in your patch (0x800000)
flag: Left the same.

Regarding ramtable and decry, my real question is:
Are they RAM pointers, that refer to RAM area, so to change those I need to use a memory viewer to find out correct pointers, or they are still ROM pointers, so I should only search for the corresponding bytes in my ROM?
That pointer leads to the data table that gets stored in RAM. It isn't the RAM itself, though. Since its pointer is prefaced with 0x08, it's a pointer to data in the ROM. These are what need to get modified to port the code across various versions and revisions of the game. Search for the corresponding bytes and change them accordingly.

Given your version of the game, it looks like you'll need to change both pointers that you indicated, not just the first one.
If I manage to understand this, I can move to the next part. :)

I don't know anything of ASM programming, but I have good sense of logic and I'm able to work with such things if I want to do it ;)
No worries. Neither do I! {XD}

Assembly hackers are the real heroes of the hacking scene.
After I will have fixed that ASM, I will insert it at 0x900000.
Then, according to Jambo51's istructions, I will replace with "7A 46 XX 49 08 47" the data I'll find at:

Code:
 0x1DD0F8, 0x1DD124, 0x1DD170, 0x1DD1C4 and 0x1DD1F8

This is for BPRE. In BPRI, the same data is at:

Code:
 0x1DA564, 0x1DA590, 0x1DA5DC, 0x1DA630 and 0x1DA664

Then, I'll also replace all the pointers to the music table (0x4A32CC for BPRE; 0x496D20 for BPRI) with the pointer+1 to the ASM routine at 0x900000
For BPRI, all the pointers are at:

Code:
 0x1DA588, 0x1DA5BC, 0x1DA608, 0x1DA65C, 0x1DA690

Am I doing it right?
That all sounds right to me. Change all of those pointers and let's see what progress you make!
 
Last edited:
12
Posts
7
Years
  • Age 28
  • Seen Jun 28, 2023
Well, this should be the final version:

Spoiler:


ramtable: Found at 0x496CF0 (for BPRE it was at 0x4A329C).
decry: I think is at 0x06E621 (it was at 0x06E6D1).

Inserted and done all stuff related!

-----------------------------------------------

Now Part 2: Item and script

Corrected and inserted at 0x900038 this routine:

Spoiler:


I found the data at 0x0A1323 (BPRE) being at 0x0A13EF (BPRI). The actual data was different, so I had to search for "surrounding bytes" to find that offset (I think it's the right one...).

Then corrected and inserted this other at 0x900044:

Spoiler:


script: Where I've inserted the GBP On/Off script (while editing the script I didn't touch any 0x3___ offset).
address: Original for was 0x069AE5
exit: Original was 0x0A103D
place: Where I put the previous code (+1)

Next i created the GBP item that points to 0x900045 (above code +1)

Can I proceed over?
 

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
Yep, that seems right to me. Based on your steps, it seems like you've now corrected everything that needs to be changed to get this to work. Try it out and see if it works!
 
12
Posts
7
Years
  • Age 28
  • Seen Jun 28, 2023
Ok, now I must only insert these:
- Song table at 0x800000
- Voice table at 0x808000
- Triangle waves at 0x808600
- Song data at 0x820000
- DirectSound waves at 0x840000

I think I don't have to make any correction (all are your original offsets) except for the song table, to adjust the pointers referring to the original Fire Red tracks.

I hope this time all works... I'll post the results! :)

EDIT: PERFECT! ^^ Now all seems working! The Pallet Town theme plays flawlessly!
Now I should wander around in the game to see if ALL the tracks play properly... ;)

If it's all right I could give you the .ips file, to make it available as a separate download for everyone that has the same ROM version as mine.

I don't know how to thank you!! {:3}
 
Last edited:

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
EDIT: PERFECT! ^^ Now all seems working! The Pallet Town theme plays flawlessly!
Now I should wander around in the game to see if ALL the tracks play properly... ;)

If it's all right I could give you the .ips file, to make it available as a separate download for everyone that has the same ROM version as mine.

I don't know how to thank you!! {:3}
Aw, thanks! I'd say you should thank Jambo51 more than anyone else, since its his work that made it possible in the first place. But thank you for that nonetheless! I'm thrilled to see that the GB Player can see some use outside of the English language. :)

And I certainly wouldn't mind at all if you were to send me the IPS file for it. In fact, it's got me thinking about porting it to other versions of the game. If anyone's got any other versions of the game they'd like to play with the GB Player in it, I'll see about doing similar to those. I'll make any and all ports available for people to download in the first post.
 
12
Posts
7
Years
  • Age 28
  • Seen Jun 28, 2023
I'd say you should thank Jambo51 more than anyone else, since its his work that made it possible in the first place.

Of course! Thank you Jambo51! ;)

And I certainly wouldn't mind at all if you were to send me the IPS file for it.

Here's the link: LINK
I tested a bit and all seems working fine.
I put the GB Player "near" the NES in the player room. I didn't want to replace any sprite so I modified the NES script to allow the player to pick up the item.
Basically you press A on the NES and, after the original message, the game ask you if you want to pick the GB Player.

Should work with any BPRI ROM.
If there are any problems/bugs with this patch I'll try to fix them and then update the link. :)
 
5
Posts
7
Years
  • Age 33
  • Seen Nov 20, 2016
If you own fire red its very much legal, so. Also, do a google search on fire red rom v1.0 and see what I mean, I managed to find a link to a rom of it off pokemmo but other wise its very hard to find.
 

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
If you own fire red its very much legal, so. Also, do a google search on fire red rom v1.0 and see what I mean, I managed to find a link to a rom of it off pokemmo but other wise its very hard to find.
What country do you live in? Because here in the U.S. what you just suggested is still entirely illegal. Here you're only allowed to back up copies from your own legally purchased copy of the piece of software. Downloads of copyrighted material from a third party server are illegal outright. Even then, the back up provision doesn't apply if you have to circumvent copy protection to do so.

And I fully stand by my statement on the latter issue. I know what I'm talking about with these things. It would be nice if you took some time to review the fundamentals of copyright law. Or, at the very least, sharpen up your Google skills before you make presumptuous or downright false statements like you are now.
 

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
That GB Player is very impressive! Great job ^__^
Thank you so much! That means a whole lot coming from you! :)

I've been working on ironing out some of the remaining kinks with it, and I'm pretty happy with the progress I've made thus far. I don't know how much I'll be able to do now, though, without a functioning Sappy. Heck, I don't know if I'll even be able to compile my current changes to a final patch with the tools not working. If this is it for it, I can at least rest assured that I did a better job than whoever did the work at Game Freak for the GB Sounds music in HG/SS.
 

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
Here's the link: LINK
I tested a bit and all seems working fine.
I put the GB Player "near" the NES in the player room. I didn't want to replace any sprite so I modified the NES script to allow the player to pick up the item.
Basically you press A on the NES and, after the original message, the game ask you if you want to pick the GB Player.

Should work with any BPRI ROM.
If there are any problems/bugs with this patch I'll try to fix them and then update the link. :)

Thanks so much for this! I've reuploaded it to my Dropbox account and have it alongside my other patches in my work. I've updated the first post to have it included in the Downloads section. Consider it an addition to Throwback now!

Hopefully any Italian players looking to experience the GB Player will now be able to enjoy it without having to overcome a language barrier now! ^^
 

Hackface

Guest
0
Posts
I just have to say this is an excellent hack! I'm also glad you opted to make hacks for both FireRed and LeafGreen(usually everyone ignores LG).

If it isn't too much to ask, can you make the VS Seeker work in caves and indoors? It would be really cool if we could, for example, rebattle trainers in Victory Road.

Take your time and keep up the great work!
 
1
Posts
10
Years
  • Age 32
  • Seen Aug 3, 2016
I'm still confused about the Celebi patch. Would I have to use two ROMs to use it? And is the Celebi patch not compatible with the Extras patch?
 

RichterSnipes

Not even a nibble...
513
Posts
12
Years
  • Age 31
  • USA
  • Seen Dec 1, 2023
I got my new laptop recently, and I'm relieved to say that Sappy is working on it! I've made even more progress with the music, and I'm personally excited about it. I squashed two longstanding issues I've had with accuracy (I updated the OP about them in the process). I also quickly added in the Game Boy Printer music as the Mystery Connection tune. I'm quickly reaching the point where I'm willing to be fully satisfied with what I've done with the 8-Bit music and just let it be. Until then, I've still got a few things to do with it.
I just have to say this is an excellent hack! I'm also glad you opted to make hacks for both FireRed and LeafGreen(usually everyone ignores LG).

If it isn't too much to ask, can you make the VS Seeker work in caves and indoors? It would be really cool if we could, for example, rebattle trainers in Victory Road.

Take your time and keep up the great work!
I'm not exactly sure how I'd go about doing this. A quick search didn't pull up anything on how to remove that restriction. Even if I could, I don't know how it'd affect Trainers in indoor areas.
I'm still confused about the Celebi patch. Would I have to use two ROMs to use it? And is the Celebi patch not compatible with the Extras patch?
Yeah, two ROMs are used in the process. The Celebi patch is meant to be used as a standalone patch. It in itself is not a part of Throwback, and patching anything else before or after it can cause issues. If you plan to use it, make sure to also use the included save file with the patched ROM. It'll set you up right where you need to be. With that out of the way, have the GBA instance running that ROM link to the GBA instance running your client (regularly-played) ROM, whether that be Throwback or anything else.
 
Back
Top