News:

As a consequence of the forum being updated and repaired, the chatbox has been lost.
However, you can still come say hi on our Discord server!

Main Menu

Charon's Extra Instruments Patch (V.0.1 is available!)

Started by Charon, 07, July, 2011, 01:10:30 PM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Charon

Charon's Extra Instruments Patch is finally here!

Patch V.1.0

The 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.1

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

Mariobro3828

#1
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.

Charon

#2
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

Mariobro3828

#3
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.

Charon

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.

Mariobro3828

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.

Charon

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.

Rolina

What instrument is the Bells used in Dark Dawn's version of Legacy of Power (Satty's battle theme)?

Charon

Tubular Bells.

I might replace my current sample because that sample didn't come out so great.