Introduction
Hello everyone! This is my first tutorial so I hope it's easy to understand.
I'm writing this tutorial based on another thread I read the other day by ipatix for his High Quality Sound Mixer. It didn't seem so clear to me as it was meant to be a development post rather than a tutorial, so I thought I'd make it easier for everyone in the future.
[S-HIGHLIGHT]PLEASE NOTE: The offsets provided in this tutorial, only apply to an English Fire Red (BPRE). If you want offsets for an English or German Fire Red, Leaf Green, or Emerald, they are all in the original post.[/S-HIGHLIGHT]
[S-HIGHLIGHT]WARNING: If you assemble this code, be aware that any previously saved states will no longer be openable in your Rom. Only in-game saves will be still be functionable.
Also make sure to disable the help menu by changing the button mode from 'help' to to 'LR' in the options, or the game will freeze. Another way to do this is by placing 1D E0 at 0x13B8C2.[/S-HIGHLIGHT]
I'm not allowed to post an actual link yet, but you can follow this to the original thread by ipatix: pokecommunity.com/showthread.php?t=324673
Requirements
You will need the following:
- A Hex Editor (preferably HxD)
- Visual Boy Advance
- A Basic Understanding of Hex Editing
Actual Tutorial
Step 1:
Step 2:
Step 3:
Step 4:
Step 5:
If you followed all these steps correctly, any new music you import into your Rom should be much higher quality with a lot less background noise (unless I made a mistake somewhere in the tutorial and then your Rom either won't open at all, or won't play music).
Again, I take zero credit for any of this. It all goes to ipatix for his amazing ASM code which I just assembled and put in step 1.
I hope this was useful and easy to understand!
Please let me know if there is anything I can improve on for next time.
Hello everyone! This is my first tutorial so I hope it's easy to understand.
I'm writing this tutorial based on another thread I read the other day by ipatix for his High Quality Sound Mixer. It didn't seem so clear to me as it was meant to be a development post rather than a tutorial, so I thought I'd make it easier for everyone in the future.
[S-HIGHLIGHT]PLEASE NOTE: The offsets provided in this tutorial, only apply to an English Fire Red (BPRE). If you want offsets for an English or German Fire Red, Leaf Green, or Emerald, they are all in the original post.[/S-HIGHLIGHT]
[S-HIGHLIGHT]WARNING: If you assemble this code, be aware that any previously saved states will no longer be openable in your Rom. Only in-game saves will be still be functionable.
Also make sure to disable the help menu by changing the button mode from 'help' to to 'LR' in the options, or the game will freeze. Another way to do this is by placing 1D E0 at 0x13B8C2.[/S-HIGHLIGHT]
I'm not allowed to post an actual link yet, but you can follow this to the original thread by ipatix: pokecommunity.com/showthread.php?t=324673
Requirements
You will need the following:
- A Hex Editor (preferably HxD)
- Visual Boy Advance
- A Basic Understanding of Hex Editing
Actual Tutorial
Step 1:
Spoiler:
The first thing you need to do is do a paste write (not paste insert) of the following code into your Rom at any offset with 0xB24 (2852 in decimal) free bytes:
Hang onto this code because you're going to need it again soon.
Code:
43 79 9B 08 40 D0 01 A1 08 47 C0 46 02 00 54 E3 35 7E 80 02 08 70 85 10 08 40 A0 E1 03 38 83 E1 00 41 2D E9 60 E1 9F E5 D6 00 95 E1 D1 10 D5 E0 D6 20 97 E1 D1 80 D7 E0 D6 90 95 E1 D1 A0 D5 E0 D6 B0 97 E1 D1 C0 D7 E0 01 00 80 E0 02 00 80 E0 08 00 90 E0 04 00 80 42 0A 10 89 E0 0B 10 81 E0 0C 10 91 E0 04 10 81 42 93 00 00 E0 93 01 01 E0 03 00 AE E8 02 40 54 E2 EA FF FF CA 00 41 BD E8 27 00 8F E2 10 FF 2F E1 40 4B 41 46 00 24 00 25 00 26 00 27 C9 08 00 D3 F0 C3 49 08 01 D3 F0 C3 F0 C3 F0 C3 F0 C3 F0 C3 F0 C3 01 39 F9 DC 44 46 37 A0 04 60 06 9C A0 69 84 46 A0 79 50 34 01 90 63 6A 26 78 C7 20 30 42 1D D0 70 06 12 D3 18 D4 03 26 18 1C 10 30 A1 69 40 18 A0 62 D8 68 40 1A A0 61 00 25 65 72 E5 61 DA 78 90 09 2A D0 10 20 06 43 27 E0 65 7A 70 07 06 D5 60 7B 01 38 60 73 27 D8 00 20 20 70 89 E2 70 06 0C D5 E0 79 45 43 2D 0A 02 D0 20 7B 85 42 1B D8 25 7B 00 2D F0 D0 04 20 06 43 14 E0 03 22 32 40 02 2A 08 D1 60 79 45 43 2D 0A A0 79 85 42 0B D8 05 1C ED D0 06 E0 03 2A 06 D1 20 79 2D 18 FF 2D 01 D3 FF 25 01 3E 26 70 65 72 06 98 C0 79 01 30 45 43 E0 78 68 43 40 0B 82 46 A0 78 68 43 40 0B 83 46 10 20 30 40 04 D0 08 33 03 CB C3 18 03 93 08 1A 04 90 03 4D A2 69 A3 6A 60 78 03 A1 08 47 C0 46 E0 28 00 03 FF FF FF FF 0C 80 1F E5 0B B8 9A E1 1C 01 00 0A 08 00 10 E3 E4 00 00 1A 30 00 10 E3 B8 01 00 1A 10 12 2D E9 02 20 B0 E1 40 00 80 03 01 00 C4 05 1C 40 84 E2 80 40 94 E8 9C 0E 04 E0 D1 60 D3 E0 D0 C0 D3 E1 40 00 10 E3 40 01 00 1A 06 C0 4C E0 AB B0 B0 E1 02 B9 AB E2 FF BC CB E3 07 10 A0 E1 94 18 A0 E0 A1 1B A0 E1 80 04 81 E1 00 00 52 E1 97 00 00 DA 00 20 42 E0 04 A2 9F E5 00 A0 8A E0 0D 00 5A E1 00 A0 83 E0 7A 9F 8F E2 04 24 89 E8 01 0B 50 33 0D 00 00 2A 03 10 C3 E3 01 93 A0 E3 D4 90 89 E2 07 00 80 E2 20 01 A0 E1 00 D1 4D E0 03 30 03 E2 0D 30 83 E0 21 E3 80 E3 02 60 89 E8 00 00 A0 E3 00 10 A0 E1 01 20 A0 E1 07 00 89 E8 02 45 54 E2 8B B0 A0 51 6B 0F 8F E2 18 00 80 52 02 45 54 52 18 00 80 52 02 45 84 52 94 21 9F E5 02 00 50 E1 0D 00 00 0A 88 01 8F E5 07 07 90 E8 34 E0 8F E2 03 00 8E E8 98 E0 8E E2 03 00 8E E8 8C E0 4E E2 04 07 8E E8 98 E0 8E E2 04 07 8E E8 80 E0 4E E2 01 51 95 E2 F5 FF FF 3A 34 81 1F E5 FF 24 A0 E3 03 44 95 E8 97 0C 09 E0 00 00 A0 E1 00 00 A0 E1 9B 09 20 10 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 C2 70 C7 E1 97 0C 09 10 00 00 A0 E1 00 00 A0 E1 9B 19 21 10 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 C2 70 C7 E1 97 0C 09 10 00 00 A0 E1 00 00 A0 E1 9B A9 2A 10 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 C2 70 C7 E1 97 0C 09 10 00 00 A0 E1 00 00 A0 E1 9B E9 2E 10 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 C2 70 C7 E1 03 44 A5 E8 03 44 95 E8 97 0C 09 10 00 00 A0 E1 00 00 A0 E1 9B 09 20 10 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 C2 70 C7 E1 97 0C 09 10 00 00 A0 E1 00 00 A0 E1 9B 19 21 10 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 C2 70 C7 E1 97 0C 09 10 00 00 A0 E1 00 00 A0 E1 9B A9 2A 10 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 C2 70 C7 E1 97 0C 09 10 00 00 A0 E1 00 00 A0 E1 9B E9 2E 10 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 00 00 A0 E1 C2 70 C7 E1 03 44 A5 E8 08 80 58 E2 B1 FF FF CA 04 C0 8F E2 0C 20 9C E8 2A 00 00 EA 00 00 00 00 00 00 00 00 00 00 00 00 10 79 00 03 00 00 00 00 49 9B A0 E1 86 90 99 E0 04 70 97 E0 06 60 8C 50 D1 C0 F3 51 06 C0 5C 50 C9 9B 96 E0 06 60 8C E0 04 70 97 E0 D1 60 F3 51 D1 C0 F3 E1 06 C0 5C E0 C9 9B 96 E0 04 70 87 E0 A7 3B 83 E0 D0 60 D3 E1 D1 C0 F3 E1 06 C0 5C E0 08 51 85 E0 97 0C 09 E0 49 9B A0 E1 86 90 99 E0 08 01 15 17 9B 09 20 10 08 01 05 17 04 70 87 E0 A7 9B B0 E1 07 00 00 0A A7 2B 52 E0 0B 00 00 DB 01 90 59 E2 06 60 8C 00 D9 60 B3 11 D1 C0 F3 E1 06 C0 4C E0 FE 75 C7 E3 01 80 58 E2 EC FF FF CA 01 30 43 E2 10 12 BD E8 1C 70 84 E5 51 00 00 EA 18 30 8D E2 48 00 93 E8 00 00 56 E3 00 90 62 12 02 20 86 10 08 F0 8E 12 10 12 BD E8 04 00 00 EA 18 20 9D E5 02 60 B0 E1 14 30 9D 15 1E FF 2F 11 10 02 BD E8 00 60 C4 E5 44 00 00 EA 0A 6C B0 E1 46 6C B0 E1 0A 68 B0 E1 46 6C B0 E1 0A 64 B0 E1 46 6C B0 E1 4A 6C B0 E1 00 04 B3 E8 0A 6C B0 E1 46 6C B0 E1 0A 68 B0 E1 46 6C B0 E1 0A 64 B0 E1 46 6C B0 E1 10 12 BD E8 10 02 2D E9 02 E0 A0 E1 08 00 52 E1 08 E0 A0 C1 01 E0 4E E2 2E E1 B0 E1 20 00 00 0A 0E 81 48 E0 0E 21 42 E0 34 10 8F E2 6C 00 4F E2 03 9F A0 E1 A9 0D 80 E0 C0 06 B0 E8 C0 00 81 E8 0C 10 81 E2 00 06 81 E8 0C 10 81 E2 C0 06 90 E8 C0 00 81 E8 0C 10 81 E2 00 06 81 E8 00 04 B3 E8 83 02 95 E8 00 00 A0 E1 00 00 A0 E1 9B 06 20 10 00 00 A0 E1 00 00 A0 E1 9B 16 21 10 00 00 A0 E1 00 00 A0 E1 9B 76 27 10 00 00 A0 E1 00 00 A0 E1 9B 96 29 10 83 02 A5 E8 01 E0 5E E2 EF FF FF 1A 04 30 43 E2 04 10 A0 E3 00 00 95 E5 D1 60 D3 E0 9B 06 20 E0 04 00 85 E4 01 20 52 E2 BA FF FF 0B 01 10 51 E2 F7 FF FF CA 04 80 58 E2 CD FF FF CA 10 02 BD E8 18 20 84 E5 28 30 84 E5 01 00 8F E2 10 FF 2F E1 01 98 01 38 01 DD 40 34 4B E5 07 A0 00 47 06 98 04 4B 03 60 07 B0 FF BC 80 46 89 46 92 46 9B 46 08 BC 18 47 53 6D 73 68 C0 A4 1F E5 08 90 9D E5 C4 84 1F E5 FF B0 A0 E3 00 C0 E0 E3 0C C7 A0 E1 63 7E A0 E3 F2 20 DA E0 F2 00 DA E0 F2 30 DA E0 F2 10 DA E0 01 09 50 E3 FE 0D A0 A3 01 09 70 E3 0C 00 A0 B1 01 09 51 E3 FE 1D A0 A3 01 09 71 E3 0C 10 A0 B1 01 09 52 E3 FE 2D A0 A3 01 09 72 E3 0C 20 A0 B1 01 09 53 E3 FE 3D A0 A3 01 09 73 E3 0C 30 A0 B1 C0 03 0B E0 C1 13 0B E0 C2 23 0B E0 C3 33 0B E0 03 24 82 E1 01 04 80 E1 B7 20 89 E1 B2 00 C9 E0 02 80 58 E2 E1 FF FF CA B5 00 4F E2 10 FF 2F E1 00 00 5C E3 30 00 00 1A 02 60 D3 E5 06 2C 82 E0 04 60 D3 E5 06 6C 92 E0 06 60 E0 41 26 A4 A0 E1 03 10 D3 E5 01 00 D3 E5 00 0C A0 E1 9A 01 26 E0 0C 12 2D E9 0F 56 95 E8 06 00 57 E1 0B 03 80 30 0B 03 40 20 84 71 97 E0 06 00 57 E1 0B 13 81 30 0B 13 41 20 84 71 97 E0 06 00 57 E1 0B 23 82 30 0B 23 42 20 84 71 97 E0 06 00 57 E1 0B 33 83 30 0B 33 43 20 84 71 97 E0 06 00 57 E1 0B 93 89 30 0B 93 49 20 84 71 97 E0 06 00 57 E1 0B A3 8A 30 0B A3 4A 20 84 71 97 E0 06 00 57 E1 0B C3 8C 30 0B C3 4C 20 84 71 97 E0 06 00 57 E1 0B E3 8E 30 0B E3 4E 20 84 71 97 E0 0F 56 A5 E8 08 80 58 E2 DB FF FF CA 0C 12 BD E8 41 FF FF EA 01 C0 5C E2 20 00 00 1A 03 6C A0 E3 AB B0 A0 E1 FF BC CB E3 70 C0 A0 E3 03 44 95 E8 84 71 97 E0 27 9C 6C E0 87 60 A0 E1 A6 9D 49 E0 C2 20 99 E0 9B 02 20 10 84 71 97 E0 27 9C 6C E0 87 60 A0 E1 A6 9D 49 E0 C2 20 99 E0 9B 12 21 10 84 71 97 E0 27 9C 6C E0 87 60 A0 E1 A6 9D 49 E0 C2 20 99 E0 9B A2 2A 10 84 71 97 E0 27 9C 6C E0 87 60 A0 E1 A6 9D 49 E0 C2 20 99 E0 9B E2 2E 10 03 44 A5 E8 04 80 58 E2 E3 FF FF CA 1E FF FF EA 80 60 A0 E3 06 CD A0 E3 03 44 95 E8 84 71 97 E0 C7 9B 66 50 A7 9B 4C 40 9B 09 20 E0 84 71 97 E0 C7 9B 66 50 A7 9B 4C 40 9B 19 21 E0 84 71 97 E0 C7 9B 66 50 A7 9B 4C 40 9B A9 2A E0 84 71 97 E0 C7 9B 66 50 A7 9B 4C 40 9B E9 2E E0 03 44 A5 E8 04 80 58 E2 EB FF FF CA 07 FF FF EA 24 60 94 E5 00 00 D4 E5 20 00 10 E3 0F 00 00 1A 20 00 80 E3 00 00 C4 E5 01 00 D4 E5 10 00 10 E3 04 00 00 0A 0C 10 96 E5 86 10 81 E0 20 10 81 E2 03 30 41 E0 28 30 84 E5 B0 00 D6 E1 00 00 50 E3 02 00 00 0A 06 30 43 E0 10 30 43 E2 28 30 84 E5 10 12 2D E9 AB B0 B0 E1 02 B9 AB E2 FF BC CB E3 1C 70 94 E5 20 10 94 E5 01 00 D4 E5 08 00 10 E3 02 15 A0 13 9C 01 01 00 08 51 85 E0 B0 00 D6 E1 00 00 50 E3 40 00 00 0A FF 04 A0 E3 3C 00 84 E5 01 00 D4 E5 10 00 10 E3 1C 00 00 1A 55 00 00 EB 0C 60 A0 E1 01 30 83 E2 52 00 00 EB 06 C0 4C E0 97 0C 09 E0 49 9B A0 E1 86 90 99 E0 08 01 15 17 9B 09 20 10 08 01 05 17 01 70 87 E0 A7 9B B0 E1 0B 00 00 0A A7 2B 52 E0 D4 FE FF DB 01 90 59 E2 06 60 8C 00 02 00 00 0A 09 30 83 E0 41 00 00 EB 0C 60 A0 E1 01 30 83 E2 3E 00 00 EB 06 C0 4C E0 FE 75 C7 E3 01 80 58 E2 E8 FF FF CA C3 FE FF EA 01 30 43 E2 37 00 00 EB 0C 60 A0 E1 01 30 43 E2 34 00 00 EB 06 C0 4C E0 97 0C 09 E0 49 9B A0 E1 86 90 99 E0 08 01 15 17 9B 09 20 10 08 01 05 17 01 70 87 E0 A7 9B B0 E1 0B 00 00 0A A7 2B 52 E0 B6 FE FF DB 01 90 59 E2 06 60 8C 00 02 00 00 0A 09 30 43 E0 23 00 00 EB 0C 60 A0 E1 01 30 43 E2 20 00 00 EB 06 C0 4C E0 FE 75 C7 E3 01 80 58 E2 E8 FF FF CA 03 30 83 E2 A4 FE FF EA 01 00 D4 E5 10 00 10 E3 A1 FE FF 0A D1 60 73 E1 D1 C0 53 E1 06 C0 4C E0 97 0C 09 E0 49 9B A0 E1 86 90 99 E0 08 01 15 17 9B 09 20 10 08 01 05 17 01 70 87 E0 A7 9B B0 E1 07 00 00 0A A7 2B 52 E0 97 FE FF DB 09 90 B0 E1 06 60 8C 00 D9 60 33 11 D1 C0 53 E1 06 C0 4C E0 FE 75 C7 E3 01 80 58 E2 EC FF FF CA 02 30 83 E2 89 FE FF EA E5 40 2D E9 23 03 A0 E1 3C C0 94 E5 0C 00 50 E1 17 00 00 0A 3C 00 84 E5 21 C0 A0 E3 9C 00 02 E0 24 C0 94 E5 0C 20 82 E0 10 20 82 E2 50 50 9F E5 50 60 8F E2 40 70 A0 E3 01 E0 D2 E4 01 E0 C5 E4 01 C0 D2 E4 04 00 00 EA 01 C0 D2 E4 2C 02 A0 E1 D0 00 96 E1 00 E0 8E E0 01 E0 C5 E4 0F 00 0C E2 D0 00 96 E1 00 E0 8E E0 01 E0 C5 E4 02 70 57 E2 F4 FF FF CA 08 50 9F E5 3F 00 03 E2 D0 C0 95 E1 E5 80 BD E8 88 20 00 03 00 01 04 09 10 19 24 31 C0 CF DC E7 F0 F7 FC FF
Step 2:
Spoiler:
Once the code is inserted into the ROM, go to the offset, 0x1DD0B4 and replace the code there. Initially it should be:
. Replace this with a pointer +1 to where you inserted the code from step 1. So if you inserted the code at 0x770000, then your pointer would look like this:
.
Code:
A5 C0 1D 08
Code:
01 00 77 08
Step 3:
Spoiler:
Go to the offset 0x7B4. The current code there should be:
This is a pointer to our old sound area. But we need to repoint it. So replace the code with:
Notice how the pointer here is 02 and not the usual 08. This is because we're dealing with the RAM.
Now do this repointing also at the offset 0x1DD0C0 by replacing the code there also with:
The sound area has now been successfully repointed.
Code:
50 5F 00 03
Code:
00 E0 03 02
Now do this repointing also at the offset 0x1DD0C0 by replacing the code there also with:
Code:
00 E0 03 02
Step 4:
Spoiler:
Go to the offset 0x1DD0B8. The current code there should be:
This is a pointer to our old sound mixer. But we need to repoint it to our new mixer. So replace the code with:
Now go to the offset 0x1DC094. The current code there should be:
This is a pointer +1 to our old sound mixer. But we need to repoint it to our new mixer +1. So replace the code with:
Our new sound mixer has now been successfully repointed.
It's time for the final step now.
Code:
E0 28 00 03
Code:
50 5F 00 03
Code:
E1 28 00 03
Code:
51 5F 00 03
It's time for the final step now.
Step 5:
Spoiler:
Go to the offset 0x1DD0BC. The current code there should be:
This needs to be changed to:
And that's it!
Code:
00 02
Code:
C9 02
If you followed all these steps correctly, any new music you import into your Rom should be much higher quality with a lot less background noise (unless I made a mistake somewhere in the tutorial and then your Rom either won't open at all, or won't play music).
Again, I take zero credit for any of this. It all goes to ipatix for his amazing ASM code which I just assembled and put in step 1.
I hope this was useful and easy to understand!
Please let me know if there is anything I can improve on for next time.
Last edited: