Charon's Extra Instruments Patch is finally here!
Patch V.1.0The first patch was just kind of a beta. Now attached is the first "official" patch. You can still get the old one from the Downloads section.
Updates:
- some sound effects fixed
- more sounds
List of Instruments
0 - Piano
4 - Electric Piano1
6 - Harpsicord
9 - Glockenspiel
11 - Vibes
13 - Marimba
14 - Tubular Bell
15 - Duclimer
19 - Church Organ
21 - Accordion
25 - Steel Guitar
36 - Slap Bass (needs some work)
40 - Quick Violin
41 - Violin
42 - Violin
57 - Trombone
59 - Muted Trumpet (could use some work)
60 - French Horn
74 - Flute 1
76 - Flute 2
115 - Agogo
117 - Taiko Drum
118 - Synth Drum
119 - Rain Loop
120 - Night Loop
121 - Cricket Chirp
122 - Bird1
123 - Bird2
Patch V.0.1With this patch, you can add extra instruments to Golden Sun: The Lost Age for your music hacking. Here's a sample video of some of the different instruments:
The clickering noise is caused by the fact that I'm still working on the loops a bit.
List of instruments:
0 - Piano
4 - Electric Piano1
6 - Haspricord
9 - Glockenspiel
13 - Marimba
14 - Tubular Bell
15 - Duclimer
19 - Church Organ
21 - Accordion
25 - Steel Guitar
36 - Slap Bass (needs some work)
40 - Quick Violin
41 - Violin
42 - Violin
57 - Trombone
59 - Muted Trumpet (could use some work)
60 - French Horn
PLEASE NOTE: In this patch there are no noticeable differences WITHOUT hacking the music. If you use this patch, you can simply use these instruments in hacking. There are NO changes to gameplay/stats/music/ect. This patch should be applied to a blank Golden Sun: The Lost Age ROM.
The loops are still being worked on, so please excuse any weirdness to the loops.
Please let me know if you have any problems that pertain to the actual patch. If you have problems with general music hacking, please check out this topic (http://forum.goldensunhacking.net/index.php?topic=1138.0).
Most impressive. Maybe I was mistaken, but did I read somewhere you're making a full instrument kit?
Right now I don't have access to the resources to test the patch myself (away from my usual computer) but what offset is the patch applied at...or rather, what is the offset range of the voice data and wav samples?
The reason I ask is because the hacker I mentioned earlier in that thread I made (which I might add, my game's sound track is quickly becoming a hybridized version of GS and FE, with improvements on the instruments over what I had on YT), Zahlman, is making an app for ROM hacking in general, and it will potentially (he's trying to make this happen at least) have the ability to apply an instrument patch at any offset specified. Now, right now we have the midi instruments that Blazer ripped from song.gba in mid2gba. Those are nice, but it's looking like once you're finished making this patch, your instruments will dwarf the one's we're using in terms of quality.
I gotta ask, for comparitive reasons, how data intensive do you expect this patch to be? For all 128 instruments, the midi patch was about 1.2-1.3 MB altogether.
With your permission, and of course giving you full credit at every turn, (and like I said, once you've finished) I'd like to relay this to Zahlman to make a universally applicable instrument patch that could be applied to just about any GBA game as long as the free space permits.
I'm thinking this could easily set a new standard.
The goal is to get all the samples filled up, I'm not quite done with it yet...
I'm editing the voicegroup at 0x1C3714 (the location of the original voicegroup).
The music data (including what I think is programming) starts at 0x1C0000.
The actual voices are being put in around 0x630000 -ish; if you wanted to do a universal patch I would highly suggest putting them in a 32-MB form and expanding a ROM with it.
The problem is that I'm not re-doing Golden Sun's instruments, and they're located at a different spot.
Here's some data from the patch file:
1C3714 C No 0000000C-0000001C 11
1C373C 1 No 0000001D-00000022 6
1C3744 C No 00000023-00000033 11
1C375C C No 00000034-00000044 11
1C3780 A No 00000045-00000053 F
1C3798 C No 00000054-00000064 11
1C37B0 24 No 00000065-0000008D 29
1C37F8 C No 0000008E-0000009E 11
1C3810 C No 0000009F-000000AF 11
1C3840 C No 000000B0-000000C0 11
1C38C4 B No 000000C1-000000D0 10
1C38F4 23 No 000000D1-000000F8 28
1C39C0 B No 000000F9-00000108 10
1C39D8 17 No 00000109-00000124 1C
1C3A14 1D Yes 00000125-0000012C 8
1C3A8C C No 0000012D-0000013D 11
1C3AA4 B No 0000013E-0000014D 10
1C3ABC B No 0000014E-0000015D 10
1C3BD4 1F Yes 0000015E-00000165 8
1C3C78 B No 00000166-00000175 10
1C3C90 53 No 00000176-000001CD 58
1C3E80 3D Yes 000001CE-000001D5 8
1C3F82 3D Yes 000001D6-000001DD 8
1C4174 A Yes 000001DE-000001E5 8
These are all the changed offsets, really.
6322BF FFFF No 000001E6-000101E9 10004
6422BE 660C No 000101EA-000167FA 6611
6488D0 8783 No 000167FB-0001EF82 8788
65105A 9F No 0001EF83-0001F026 A4
651100 F No 0001F027-0001F03A 14
65110F B Yes 0001F03B-0001F042 8
651121 49 No 0001F043-0001F090 4E
651171 B4 No 0001F091-0001F149 B9
65122C 15 No 0001F14A-0001F163 1A
65124A 17 No 0001F164-0001F17F 1C
65126C 16 No 0001F180-0001F19A 1B
65128C 16 No 0001F19B-0001F1B5 1B
6512AC 13 No 0001F1B6-0001F1CD 18
6512C8 13 No 0001F1CE-0001F1E5 18
6512E2 1C No 0001F1E6-0001F206 21
651305 17 No 0001F207-0001F222 1C
651323 34 No 0001F223-0001F25B 39
65135E B0 No 0001F25C-0001F310 B5
651415 38 No 0001F311-0001F34D 3D
651454 39 No 0001F34E-0001F38B 3E
651493 2C No 0001F38C-0001F3BC 31
6514C5 19 No 0001F3BD-0001F3DA 1E
6514E9 12 No 0001F3DB-0001F3F1 17
651508 9 Yes 0001F3F2-0001F3F9 8
651512 47 No 0001F3FA-0001F445 4C
651566 F No 0001F446-0001F459 14
65157B 1 No 0001F45A-0001F45F 6
651582 14 No 0001F460-0001F478 19
65159C C Yes 0001F479-0001F480 8
6515A9 7 No 0001F481-0001F48C C
6515B9 3 No 0001F48D-0001F494 8
6515BC 10 Yes 0001F495-0001F49C 8
6515CE F No 0001F49D-0001F4B0 14
6515DD C Yes 0001F4B1-0001F4B8 8
6515F4 10 No 0001F4B9-0001F4CD 15
65160F 11 No 0001F4CE-0001F4E3 16
651632 3 No 0001F4E4-0001F4EB 8
65163B 3 No 0001F4EC-0001F4F3 8
651646 2 No 0001F4F4-0001F4FA 7
65164F D No 0001F4FB-0001F50C 12
651669 C Yes 0001F50D-0001F514 8
651676 5 No 0001F515-0001F51E A
651686 B Yes 0001F51F-0001F526 8
651692 6 Yes 0001F527-0001F52E 8
6516A4 B Yes 0001F52F-0001F536 8
6516B0 6 Yes 0001F537-0001F53E 8
6516C2 18 No 0001F53F-0001F55B 1D
6516E1 5 No 0001F55C-0001F565 A
6516E6 B Yes 0001F566-0001F56D 8
6516FF 14 No 0001F56E-0001F586 19
65171D F Yes 0001F587-0001F58E 8
651731 1F No 0001F58F-0001F5B2 24
651757 11 Yes 0001F5B3-0001F5BA 8
65176A 1 No 0001F5BB-0001F5C0 6
651774 16 No 0001F5C1-0001F5DB 1B
651793 5 No 0001F5DC-0001F5E5 A
651798 A Yes 0001F5E6-0001F5ED 8
6517B1 E Yes 0001F5EE-0001F5F5 8
6517C1 5 No 0001F5F6-0001F5FF A
6517CE 15 No 0001F600-0001F619 1A
6517EC E No 0001F61A-0001F62C 13
651800 3E No 0001F62D-0001F66F 43
651845 16 No 0001F670-0001F68A 1B
651862 F No 0001F68B-0001F69E 14
651878 1 No 0001F69F-0001F6A4 6
651880 1D No 0001F6A5-0001F6C6 22
65189D F Yes 0001F6C7-0001F6CE 8
6518B2 1 No 0001F6CF-0001F6D4 6
6518BA 10 Yes 0001F6D5-0001F6DC 8
6518CB 1 No 0001F6DD-0001F6E2 6
6518D8 5 No 0001F6E3-0001F6EC A
6518DD A Yes 0001F6ED-0001F6F4 8
6518ED 3 No 0001F6F5-0001F6FC 8
6518F6 F Yes 0001F6FD-0001F704 8
651914 F Yes 0001F705-0001F70C 8
651927 2 No 0001F70D-0001F713 7
651932 E No 0001F714-0001F726 13
65194F F Yes 0001F727-0001F72E 8
65196D E No 0001F72F-0001F741 13
65198A 10 Yes 0001F742-0001F749 8
6519A7 10 Yes 0001F74A-0001F751 8
6519C0 6 No 0001F752-0001F75C B
6519C6 E Yes 0001F75D-0001F764 8
6519E3 F Yes 0001F765-0001F76C 8
651A02 5 No 0001F76D-0001F776 A
651A07 9 Yes 0001F777-0001F77E 8
651A1F E Yes 0001F77F-0001F786 8
651A32 1 No 0001F787-0001F78C 6
651A3C F Yes 0001F78D-0001F794 8
651A5B C Yes 0001F795-0001F79C 8
651A7F FFFF No 0001F79D-0002F7A0 10004
661A7E 236B No 0002F7A1-00031B10 2370
663DF1 1 No 00031B11-00031B16 6
663DF8 1E No 00031B17-00031B39 23
663E21 738 No 00031B3A-00032276 73D
664559 20 Yes 00032277-0003227E 8
664579 81 No 0003227F-00032304 86
664602 40 No 00032305-00032349 45
664642 E Yes 0003234A-00032351 8
664651 4 Yes 00032352-00032359 8
66465B 4B38 No 0003235A-00036E96 4B3D
669199 24 No 00036E97-00036EBF 29
6691C7 8 No 00036EC0-00036ECC D
6691D9 1C No 00036ECD-00036EED 21
6691FB 4BB No 00036EEE-000373AD 4C0
6696BC 1 No 000373AE-000373B3 6
6696C4 B8 No 000373B4-00037470 BD
669782 A No 00037471-0003747F F
669793 25E No 00037480-000376E2 263
6699F7 64 No 000376E3-0003774B 69
669A61 1A67 No 0003774C-000391B7 1A6C
66B4CE 11 No 000391B8-000391CD 16
66B4E5 12E No 000391CE-00039300 133
66B61D 41 No 00039301-00039346 46
66B664 66 No 00039347-000393B1 6B
66B6D7 3E No 000393B2-000393F4 43
66B71B 45 No 000393F5-0003943E 4A
66B767 8D No 0003943F-000394D0 92
66B7FC 20 No 000394D1-000394F5 25
And these are all the patches for the actual tones.
GS also has a good amount of freespace at the end of the rom, and since it's 16 MB, it could be expanded to 32 MB. What I'm thinking might be the best option is to create a patch that relocates the data around 0x1E62000-ish, so it could be applied to most ROMs. Then, with the original Golden Sun voice groups, we could relocate them a bit before. I can't remember their exact offsets but you could get a general idea by looking at the voicegroup.
I'll come up with a solution later, I need to go tonight. :P
Ah, so you're using the original GS instruments in combination with new ones?
Yeah, almost every FE hacker I know has expanded his or her ROM to the 32 MB format, so that's no problem. We generally place the original midi patch around the address 0x91F0000ish.
One of Zahlman's existing utilities has the ability to rip simple instruments already, though he's working on the feature to port mutliple sample instruments (like drumkits) for his newer app I believe. I manged to port GS's drumkit manually (using Atrius's audio ripper as an example to see if I did it right) and that leads me to a question:
I remember you saying at one point or another that GS's synth instruments are pretty much generated by GS's modified music engine. Now I know the drums are not generated per se by this engine, but does the engine have some sort of impact on the drum kit? Usually when I port instruments (minus the synth) from GS to other games, the instrument's original tuning/other properties stay intact. Yet when I did the same with the drums, they sounded way too staccato and lacked definition. They sounded bad enough for me to want to scrap those hours worth of manual porting to go with the midi kit.
But yeah, if this patch is specifically tailored to GS (to include its original instruments in the voice groups as well) then we could probably add whatever is necessary to make up for that in time. If we have to use the midi synth, then I guess it won't be too bad, it's stuff like the midi brass (which is IMO really bad sounding) that I'm worried about.
Anyways, this is all pretty much speculation at this point, I'm just putting this on the table to get something initiated, as I know several people who are looking to put quality instruments in their hack.
I'm glad to say your tutorials have taught me quite a lot about the format GBA uses for its music. I've done quite a bit of experimentation since I started this.
Quote from: Mariobro3828 on 08, July, 2011, 02:55:55 PM
I remember you saying at one point or another that GS's synth instruments are pretty much generated by GS's modified music engine. Now I know the drums are not generated per se by this engine, but does the engine have some sort of impact on the drum kit? Usually when I port instruments (minus the synth) from GS to other games, the instrument's original tuning/other properties stay intact. Yet when I did the same with the drums, they sounded way too staccato and lacked definition. They sounded bad enough for me to want to scrap those hours worth of manual porting to go with the midi kit.
The sound of the instruments is indeed affected by the engine, which is why I suggest that you import it if you can. For example, this is what the music sounded like when I imported GS's instruments into Pokemon Ruby:
Quote
But yeah, if this patch is specifically tailored to GS (to include its original instruments in the voice groups as well) then we could probably add whatever is necessary to make up for that in time. If we have to use the midi synth, then I guess it won't be too bad, it's stuff like the midi brass (which is IMO really bad sounding) that I'm worried about.
When I complete the Golden Sun TLA patch, I might configure for other systems, but I don't know how to import music engines unfortunately.
Thanks for the feedback, though.
Hmm, that's odd that it sounded like that in Ruby. When I've imported to FE, the only instruments that have sounded off to me were the synth and drums. Maybe FE and GS's music engines are more similar than GS's and Ruby's.
As for the engine importing, yeah I have no idea where to start with that. Perhaps Atrius, Hextator, Nintenlord or Zahlman would know more about it. I'd assume it'd deal in ASM, though that's just a guess. I don't really know anything on how the music engines work.
And no problem, I'll continue to experiment around and reasearch some of this stuff and if I come up with anything worth noting I'll report it to ya. Music is something I'll never be able to let go, so I enjoy this type of hacking.
Blazer claimed to have actually imported the engine from Song.gba into Fire Emblem; he might just be talking about the voicegroups though. What I'm thinking is that there's pointers leading to the beginning of the engine (which I totally think is 0x1C0000 in GS:TLA) and other points in it, so in FE try locating the beginning of the engine data, and see if you can find some pointers leading to it.
It's a start at least.
What instrument is the Bells used in Dark Dawn's version of Legacy of Power (Satty's battle theme)?
Tubular Bells.
I might replace my current sample because that sample didn't come out so great.