General Music Hacking Guide - Printable Version +- FF6 Hacking (https://www.ff6hacking.com/forums) +-- Forum: Hacks, Resources and Tutorials (https://www.ff6hacking.com/forums/forum-1.html) +--- Forum: Opera House Rehearsal Room (https://www.ff6hacking.com/forums/forum-71.html) +---- Forum: Music Hacking Tutorials (https://www.ff6hacking.com/forums/forum-74.html) +---- Thread: General Music Hacking Guide (/thread-493.html) |
General Music Hacking Guide - Gi Nattak - 06-01-2010 Title:: FF3us_MusicMaking Author:: MetroidQuest Description:: A Guide to Custom Music Composing in Final Fantasy 3 US. ------------------------------------------------------------------- Special Thanks to JCE3000GT (http://www.jce3000gt.com) for finding the FF6 BRR Offsets and SPC Code Info Also Thanks to a document found here: http://www.rpglegion.com/ff6/hack/ff3info.txt Required things: - A FF3US or FF6j SNES ROM - A Hex Editor Recommended things: - A MIDI sequencing software - MetroidQuests music chart, found here 01 - An Introduction ----------------------------- This document is a guide on how to compose custom music for use in FF6/3us for SNES. It is based on my findings when I composed music for my hack, Final Fantasy VI: The Eternal Crystals version X. I will not be explaining any sound patch tweaking in this document. Understanding Digital Music: ------------------------------------------- You either understand music or you don't. But here is a quick 'cheat sheet' Track - Typically one instrument's 'melody' in a song with many instruments Channel - A stereo track has two channels, a mono track has one. Got it? That's all you need to know. Note - the frequency produced by an instrument for a given amount of time Rest - silence in a track for a given amount of time Tempo - the speed of the piece of music Octave - you better understand it to do this.. "DO re mi fa so la ti DO" (the Do's are one octave apart ) Panning - moves from one channel to another (left to right in stereo) Understanding the FF6 SPC engine and how music works in FF6: ------------------------------------------------------------------------------------------ 02 - Locations: First of all, there are two banks in the ROM we are going to look at. The first one determines the instruments used in each song. That exists at Hex Address: "054195" through "054C34". There are 32 available bytes for each song's instruments. Each instrument assignment uses 2 bytes thus allowing for a total of 16 instruments. The actual songs themselves start at Hex Address "085E7A" and go all the way down to "09FEEB" The first part of each song's address (starting with the 3rd byte) contains the location to each channel of each track. Those pointers are 2 bytes each (example of 2 bytes: xx xx ). There are 16 pointers total (or 32 bytes). Keep in mind that you can only play 8 instruments at one time, so assigning too many instruments to play at once will lead to cutoffs. You will notice a lot of the original songs use 2 pointers going to the same location. This is used to make stereo. All things are linear: The pointers at the beginning of each song tell the SPC engine to read the data at those locations starting at the exact same time. Any SPC data other than a "note" or a "rest" is negligible in real time. Only a note or a rest can be perceived in time when playing. If you want to start a track 8 beats into the song, you need to buffer that time with 2 "whole rests" just like in sheet music. I will get into that later. Watch out for conflicts: The game's sound effects use specific channels which will override any music in those channels. This is another important reason why the game uses stereo. A sound effect that uses one channel will not seem to impede as much if the music track using that channel is playing on another channel simultaneously. Got it? Good. Let's go into more depth. 03 - Instrument Values ------------------------------------------------------------------------------------ Here is a list of values that can be entered into the instrument bank for each song. This is an incomplete list and there may be other variations and some mistakes.. but overall it is correct. 00 00 - Nothing 00 01 - Spanish Guitar 00 02 - Electric Bass 00 03 - Pan Flute 00 04 - Sitar 00 05 - Cello 00 06 - Choir 00 07 - Flute 00 08 - Clarinet 00 09 - Unusual Synth (Atma) 00 0A - Oboe 00 0B - Rock Organ 00 0C - Piano 00 0D - Strings 00 0E - Trumpet 00 0F - Hi Hat Closed 00 10 - Shadow's picked string 00 11 - Hi Hat Open 00 12 - Crash Cymbal 00 13 - Breath (like Narshe) 00 14 - Snare 00 15 - Snapping fingers 00 16 - Timpani 00 17 - Conga Drum (Tom) 00 18 - Floor Bass 00 19 - Pizzo String 00 1A - Trombone 00 1B - Harp 00 1C - Bass Guitar 00 1D - Picked String? 00 1E - Distortion Guitar 00 1F - Ocarina 00 20 - Marimba 00 21 - Snare (hard hit) 00 22 - Kick 00 23 - Cow Bell 00 24 - Tubular Bell 00 25 - Church Organ 00 26 - Woot 00 27 - Synth 00 28 - More Synth 00 29 - Even More Synth 00 2A - Snapping Fingers 00 2B - ?? Synth 00 2C - Contrabass 00 2D - Guiro 00 2E - Conga Drum 00 2F - Shaker 00 30 - Wood Block 00 31 - Bright Piano 00 32 - Acoustic Guitar 00 33 - Bagpipe 00 34 - Pan Flute 00 35 - Violin 00 36 - Bottle Blow 00 37 - Tambourine 00 38 - Male Voice 00 39 - Low Male Voice 00 3A - Female Voice 00 3B - Pipe Organ 00 3C - Metal Bang 00 3D - Metal Clank 00 3E - Xylophone 00 3F - Crowd Noise 04 - Setting Your Song's Instruments ------------------------------------------------------------------------------------ Now that we have established some understanding of this structure, let's examine a song. We're going to look at the Battle Theme. Now, the location of the Battle Theme's instruments starts at Hex Address "054614". This is what it looks like: 00 0D 00 0E 00 1E 00 02 00 0F 00 11 00 12 00 22 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00 On a closer look, you'll see the assignments for the song's instruments. It starts with "00 0D" which, according to the above list, is strings. The next instrument, "00 0E" is the trumpet. We can count a total of 9 instruments used in this song. Obviously, all 9 can't be used at the same time, but we'll get into that later. First, let's try swapping some instruments. It's a pretty simple process. Go ahead, open up your Hex Editor, open up the ROM, and navigate to Hex Address "054614". Do you see the same data as above? If not, you either have the wrong ROM or are at the wrong address. If you see the same data, go ahead and swap "00 0D" with another value. You'll want something that can be sustained (not a piano or a xylophone). Choir might be a good one ( "00 06" ). Now, save the ROM, open it in your favorite emulator, and get into a regular battle. Do you hear the change in instrument? Fantastic. That was the easy part. Feel free to mess around with the instruments until you get a good handle of it. When you feel comfortable, you can move on the harder part… 05 - Dissecting a Song's Sequence ------------------------------------------------------------------------------------ The actual song sequencing data is a combination of pointers, notes and operators. As I mentioned earlier, everything is linear and each track plays simultaneously and continuously. Recomposing the song requires understanding that the only way to get tracks playing together in sync is to make sure all the data on each track lines up accordingly. Let's take a look at the Battle Theme again. This time we are going to the song itself at Hex Address: "090043" The first part of the song's data includes the channel pointers. Here is what you see: 06 07 69 FE 4B 05 69 FE 75 00 3F 02 19 04 76 FF 9F 01 19 03 CE 03 69 FE 75 00 3F 02 19 04 76 FF 9F 01 19 03 CE 03 Now, I am not really sure about the function of the first two bytes "06 07" so I am going to leave those out. The channel data starts at "69 FE". This says that Channel 1 will play the data at "090069" The "69" refers to the last two digits of the address where the "FE" is relative to the middle two digits. In this case, it is always two hex values less than the address' value. So, "00" minus "2" = "FE ". If you understand hex, this makes perfect sense to you. If you do not, go learn Hex. So, lets go to that address ( 090069 ). It starts off with some important song information. Let's dissect. F0 AA = "F0" Set the tempo of the song to value "AA" F7 00 46 = Not quite sure what these do, so I don't touch them F8 00 00 = Not quite sure what these do, so I don't touch them F2 32 = "F2" set reverb amount to value "32" C4 3C = "C4" set the volume or level of the track to value "3C" DC 20 = "DC" set the instrument to "20" which is the first value from the instrument list found at address "054614" So, here is how this works. "DC 20" sets the track instrument to the first value which is "00 0D" which would make this a track with strings! "DC 21" would set the track to the second value which is "00 0E" "DC 22" would set the track to the third value which is "00 1E" E4 = "E4" tells the engine to give a smooth transition between the following notes instead of ending the sample between them. 0A 34 5E 88 = these are note assignments. If you look at my Musical Notes Reference Guide, you will see that it is either a string of 16th notes at 6/4 measure or 32nd notes in a 3/4 measure. Either way, they're pretty darn short. So can you figure out what part of the song this is? It's at the beginning of the track. There are no rests and they are short notes. The notes are going higher. Yes! It's the beginning of the ramp up at the opening of the Battle Theme. Let's continue. D7 = No, this is not a note. It's an operator. It says, "move the following notes up to the next octave" 0A 34 5E 88 = Yep, it's those same notes again.. except they are an octave higher. D7 = Up another octave 0A 34 5E 88 = Those same notes even higher E5 = Remember "E4"? Well "E5" says when to end the smooth transition between notes. B6 B6 = As shown in my reference guide, I call these "whole note rests" So here we have two of them. This is because this strings section is not playing for the next 8 beats. Instead, the rhythmic is playing on other tracks. C6 22 = Pan song left->right as "22" increases C4 3C = Set track volume level to value "3C" D8 = Remember "D7" brings the octave up by 1… so "D8" brings the octave down by 1 E2 01 = "E2" sets a loop for the next sequence. "01" means the following sequence will loop twice! If it were "E2 02", the following sequence would loop three times! E2 02 = This is a loop nested in the previous loop. It is saying to loop the following sequence three times. 42 BF C2 D7 0A BF C2 D8 42 BF C2 D7 42 BF C2 D8 50 BF C2 D7 26 BF C2 D8 50 BF C2 D7 50 BF C2 D8 = Notes, Rests, and Octave changes. These are what make up most songs. See my Reference Guide to figure out what these all mean. E3 = "E3" ends the most recent loop Is this all starting to make sense? I'm not going to go through every single byte, so let's get down to the nitty gritty. Let's go to Address "090173". This is the final operator of the first track. Here's what it says: F6 93 FE = "F6" means "Jump to". "93 FE" is just like the channel pointers. The channel is going to start playing at address "090093". Now, that's not the beginning of the track, but it's where the strings start over after the rhythmic is done (remember the 8 beats of silence? yes, after that..) The next byte after the "93 FE" is located at "090176". Now, look at the channel pointers at the beginning of the song. Do you see some that say "76 FF" ? Yup! Those channels are going to play that track. "76" for the last two digits of the address and "FF" because it is 2 less than "01" (the middle two digits). 05a - Things to Note: -------------------------------------------------- You'll start to see patterns. Most tracks start out with a "C4 XX" but not always. I believe all tracks assign an instrument ("DC XX" command). Each track will usually end with a "jump to" command ( F6 XX XX ) so it restarts the song. Having this jump command is EXTREMELY important otherwise the game will keep reading the data ahead of it. To save valuable bytes, the game uses a lot of "F5 XX aaaa" operators. This will jump to address "aa aa" once it has looped XX amount of times. I will only use this if it seems I will run out of room. I am not going to get into ALL the operators as they have already been written about in the previously mentioned "ff3info.txt". I have enclosed with this document, a "ff3-SPC-info" document which is an excerpt from that file that specifically addresses the SPC information. 06 - Recommendations on Custom Composing --------------------------------------------------------------------- The best way, that I have found, to start a custom composition is to fill each track with WHOLE RESTS. This will give you the silence you need to start hearing your changes. Now, you don't just want to enter B6 just throughout the entire song data. Instead, leave all the pointers at the beginning of the song and even the tempo, panning and volume settings (you can alter those later). Also, leave the jump commands ("F6 XX XX") at the end of each track. Everything in between? You got it, B6 B6 B6 B6…. When you're done doing that, you'll have a silent song. Now, start adding your notes, rests, octave changes, and so on. This is where a MIDI sequencer or sheet music comes in handy. It's good to know what notes you'll need in each track! You may want to try a simple 4/4 song before you get into anything crazy like "Battle on the Big Bridge" (most tedious 70 hours ever!). Remember, SNES can only play 8 sounds at the same time, don't pick a song that has a 30 tracks! Also note that each track can only play one note at a time - any harmonizing notes must be on different tracks. The Musical Note Reference Guide is a good guide to use… but most importantly, USE YOUR EARS. If a track is off by even a 32nd note, it will mess up your whole song. Everything must end (or jump to) on the same musical beat of the same measure or the whole thing will be off. 07 - Locations of Each Song (thanks to JCE3000GT) -------------------------------------------------------------------------------- 085E7A 085E9F SPC No (Silence) (00) (51) 10/1/2002 085EA0 08661D SPC No 3.16 - The Prelude (01) 10/1/2002 08661E 086932 SPC No 1.03 - Awakening (05) 10/1/2002 086933 086F68 SPC No 2.01 - Terra (06) 10/1/2002 086F69 0872C4 SPC No 1.11 - Shadow (07) 10/1/2002 0872C5 0876BE SPC No 2.18 - Strago (08) 10/1/2002 0876BF 087AF7 SPC No 1.18 - Gau (09) 10/1/2002 087AF8 087EAE SPC No 1.07 - Edgar & Sabin (0A) 10/1/2002 087EAF 088227 SPC No 2.02 - Coin Song (0B) 10/1/2002 088228 088637 SPC No 1.13 - Cyan (0C) 10/1/2002 088638 088A99 SPC No 1.04 - Locke (0D) 10/1/2002 088A9A 088DEC SPC No 2.04 - Forever Rachel (0E) 10/1/2002 088DED 089155 SPC No 2.19 - Relm (0F) 10/1/2002 089156 08976E SPC No 2.11 - Setzer (10) 10/1/2002 08976F 089A28 SPC No 3.09 - Epitaph (11) 10/1/2002 089A29 089D61 SPC No 1.22 - Celes (12) 10/1/2002 089D62 08A7D3 SPC No 2.03 - Techno de Chocobo (13) 10/1/2002 08A7D4 08AF35 SPC No 1.24 - The Decisive Battle (14) 10/1/2002 08AF36 08B69C SPC No 2.12 - Johnny C. Bad (15) 10/1/2002 08B69D 08B9B7 SPC No 1.01 - Opening Theme 2 (03) 10/1/2002 08B9B8 08C1E7 SPC No 1.08 - Kefka (16) 10/1/2002 08C1E8 08C44B SPC No 1.02 - The Mines of Narshe (17) 10/1/2002 08C44C 08CA81 SPC No 1.15 - The Phantom Forest (18) 10/1/2002 08CA82 08D0C0 SPC No 1.01 - Opening Theme 3 (04) 10/1/2002 08D0C1 08D52F SPC No 1.17 - Wild West (19) 10/1/2002 08D530 08DC55 SPC No 1.23 - Save Them! (1A) 10/1/2002 08DC56 08DFBE SPC No 2.13 - The Empire Gestahl (1B) 10/1/2002 08DFBF 08E36A SPC No 1.12 - Troops March On (1C) 10/1/2002 08E36B 08E556 SPC No 1.21 - Under Martial Law (1D) 10/1/2002 08E557 08E5E1 SPC No Waterfall (1E) 10/1/2002 08E5E2 08EC47 SPC No 1.25 - Metamorphosis (1F) 10/1/2002 08EC48 08F1A5 SPC No 1.16 - The Phantom Train 1 & 2 (20) 10/1/2002 08F1A6 08F671 SPC No 2.20 - Another World of Beasts (21) 10/1/2002 08F672 08FC14 SPC No 2.10 - Grand Finale 2 (22) 10/1/2002 08FC15 090042 SPC No 1.09 - Mt. Koltz (23) 10/1/2002 090043 09074A SPC No 1.05 - Battle Theme (24) 10/1/2002 09074B 0907E8 SPC No Fanfare (25) 10/1/2002 0907E9 090C65 SPC No 2.09 - The Wedding Waltz 1 (26) 10/1/2002 090C66 09169B SPC No 2.08 - Aria de Mezzo Caraterre (27) 10/1/2002 09169C 091C4B SPC No 1.20 - Kids Run Through the City Corner (2A) 091C4C 0920DC SPC No 3.08 - Gogo (2D) 10/1/2002 0920DD 09288E SPC No 1.10 - Returners (2E) 10/1/2002 09288F 092B96 SPC No 1.06 - Fanfare (2F) 10/1/2002 092B97 09300A SPC No 3.11 - Umaro (30) 10/1/2002 09300B 093457 SPC No 2.17 - Mog (31) 10/1/2002 093458 0939FE SPC No 1.14 - The Unforgiven (32) 10/1/2002 0939FF 0941AD SPC No 3.03 - The Fierce Battle (33) 10/1/2002 0941AE 094664 SPC No 3.06 - The Day After (34) 10/1/2002 094665 094CB2 SPC No 2.15 - Blackjack (35) 10/1/2002 094CB3 094F6E SPC No 3.02 - Catastrophe (36) 10/1/2002 094F6F 095515 SPC No 3.10 - The Magic House (37) 10/1/2002 095516 0955DA SPC No Nighty Night (38) 10/1/2002 0955DB 0956C4 SPC No Wind (39) 10/1/2002 0956C5 095756 SPC No Windy Shores (3A) 10/1/2002 095757 0964C8 SPC No "3.14 - Dancing Mad 1, 2, & 3 (3B)" 10/1/2002 0964C9 0965CC SPC No The Raft and the Flowing River (3C) 10/1/2002 0965CD 096B02 SPC No 2.06 - Spinach Rag (3D) 10/1/2002 096B03 096C6D SPC No 3.04 - Rest in Peace (3E) 10/1/2002 096C6E 096D18 SPC No Train Running (3F) 10/1/2002 096D19 096DC1 SPC No The Dream of a Train (40) 10/1/2002 096DC2 0972D9 SPC No 2.07 - Overture 1 (41) 10/1/2002 0972DA 0973C8 SPC No 2.07 - Overture 2 (42) 10/1/2002 0973C9 097C05 SPC No 2.07 - Overture 3 (43) 10/1/2002 097C06 097EEA SPC No 2.09 - The Wedding Waltz 2 (44) 10/1/2002 097EEB 09817B SPC No 2.09 - The Wedding Waltz 3 (45) 10/1/2002 09817C 0985DA SPC No 2.09 - The Wedding Waltz 4 (46) 10/1/2002 0985DB 098A41 SPC No 1.01 - Opening Theme 1 (02) 10/1/2002 098A42 098E98 SPC No 2.14 - Devil's Lab (47) 10/1/2002 098E99 098EE7 SPC No Fire! (48) 10/1/2002 098EE8 098F84 SPC No Machine Running (49) 10/1/2002 098F85 099013 SPC No Inside the Burning House (4A) 10/1/2002 099014 0992B5 SPC No 2.16 - ??? (2B) 10/1/2002 0992B6 0995A1 SPC No 1.19 - The Serpent Trench (28) 10/1/2002 0995A2 09995E SPC No 2.05 - Slam Shuffle (29) 10/1/2002 09995F 0999DE SPC No 2.10 - Grand Finale 1 (2C) 10/1/2002 0999DF 099FBE SPC No 3.01 - New Continent (4B) 10/1/2002 099FBF 09A44E SPC No 3.07 - Searching for Friends (4C) 10/1/2002 09A44F 09A5D7 SPC No 3.12 - Fanatics (4D) 10/1/2002 09A5D8 09AE50 SPC No 3.13 - Last Dungeon & Aura (4E) 10/1/2002 09AE51 09B09E SPC No 3.05 - Dark World (4F) 10/1/2002 09B09F 09BBB8 SPC No 3.14 - Dancing Mad 4.2 (50) 10/1/2002 09BBB9 09BCF8 SPC No 3.14 - Dancing Mad 4.1 (52) 10/1/2002 09BCF9 09E13E SPC No 3.15 - Ending Theme 1 (53) 10/1/2002 09E13F 09FEEB SPC No 3.15 - Ending Theme 2 (54) 10/1/2002 08 - SPC Note Info -------------------------------------------------------------------------------- 00-0A Play note, frequency 0 10-1A Play note, frequency 1 20-2A Play note, frequency 2 30-3A Play note, frequency 3 40-4A Play note, frequency 4 50-5A Play note, frequency 5 60-6A Play note, frequency 6 70-7A Play note, frequency 7 80-8A Play note, frequency 8 90-9A Play note, frequency 9 A0-AA Play note, frequency 10 B0-BA Play silence C4 xx Set volume of channel to xx (00-7F), higher values == greater volume. C5 ss xx Fade volume to xx at speed ss C6 xx Pan song left->right as xx (00-7F) increases C7 xx Pan song right->left as xx (00-7F) increases //C8 Created an odd ascending portamento effect. CD xx Pan repeatedly back and forth at speed xx (00-FF), higher values == slower panning. CE Disable pan loop D7 Raise octave by 1 D8 Lower octave by 1 DE Disables DF. //DF Created an odd volume "cut" very shortly into the note... //E4 Creates a portamento effect linking all following notes with pitch slides. E5 Disables E4. E6 Enable vibrato. E7 Disable vibrato. F0 xx Set tempo to xx (00-FF), higher values == faster tempo. F1 ss xx Fade tempo to xx at speed ss F2 xx Set echo to xx F3 ss xx Fade echo to xx at speed ss SAFER SEIFER 0x70ba2: Table of loop start for the samples (2 bytes for each sample) 0x70ae7: Table of addresses for samples (3 bytes) 0x70e11: Table of the samples used in each song (16x2 bytes) 0x70d18: Table of adresses of the songs (3 bytes) 0x70c1e: Table of relative frequencies for each sample (1 signed byte, add 256 to get the relative frequency) There are 82 songs in FF6US. The samples begin with the length of the sample in bytes, then the sample comes after it, in BRR format. Every 16 samples are compressed into 9 bytes. They have the following format: rrrrffle 01 23 45 67 89 AB CD EF rrrr - Granularity (shift every nybble upwards by this granularity) ff - filter designation l - looping sample, only used in the last block e - end of sample Example: 01010000 01 23 21 0F ED CB CD EF becomes 0000 0020 0040 0060 0040 0020 0000 FFE0 FFC0 FFA0 FF80 FF60 FF80 FFA0 FFC0 FFE0 The songs begin with 19 words. Word 3 to 11 contains the low 16-bit half of the offset to each channel's data. The high half is the same as the address to the table if the low part is higher than the low part of the address of the table, if it is lower, the high half is the high half of the address to the table +1. The format of each channel in the song: Bytes below 0xC4 - Divide by 14 to get the note. 12 is nothing and 13 means note off. The remainder is an offset to a table which contains the length of the note. The table is: 192, 96, 64, 72, 48, 32, 36, 24, 16, 12, 8, 6, 4, 3 C4 xx: Volume C5 tt xx: VolSlide C6 xx: Pan C7 tt xx: PanSlide C8 tt xx: Portamento. Xx denotes the increase in pitch. When this is immediately followed by a note, the portamento comes after the note. C9 ss tt dd: Vibrato. Ss is the speed of the vibrato. Tt is the time until the vibrato appears. Dd is the depth. CA: Vibrato off CB ss tt dd: Tremolo CC: Tremolo off CD ?? ??: Pan sweep back and forth CE: Pansweep off D6: Set octave D7: 1 Octave up D8: 1 Octave down DA: Set transpose DB: Add to transpose DC: Change sample E2 xx: Loop start. Xx is number of times to loop -1. There can be up to 4 nested loops. E3: Loop end E8 xx: Set the length of the next note EB: End of channel F0: Set speed F5 xx aaaa: When instruction has been executed xx times, jump to aaaa and end the most recent loop F6 aaaa: Jump to aaaa FB: set drum mode on FC: set drum mode off I don't know where the table for the drums is, but it is 36 bytes for each song containing the instrument, note and pan position for each drum. RE: FFVI Music Hacking - SSJ Rick - 06-01-2010 this looks really complex, but this is promising RE: FFVI Music Hacking - Foxhoundmember - 06-09-2010 yeah its a long text poco XD , but thnx nattak for this tutorial i was searching for someone who knew how to this kinda shit and you did it !!!!! XD good work bro RE: FFVI Music Hacking - tebian - 08-06-2010 Great tutorial, hacking the music is one of the first thing I tried to do with the FF games. Its harder then even getting the movies off those disk. RE: FFVI Music Hacking - Yuke311 - 11-14-2010 ?.? O_O dont undestand this but i do my best because i need an new fight theme for my FF6 hack. RE: FFVI Music Hacking - danyetman - 05-23-2011 The FF3US-MUSIC.pdf is gone. Could someone re-upload it? RE: FFVI Music Hacking - Gi Nattak - 05-23-2011 Thanks, and fix'd. RE: FFVI Music Hacking - the_randomizer - 06-27-2011 Sorry if I sound like a noob, as I'm relative new to this type of hacking, as of now, I can do nothing more than changing around the instruments in the FF6 battle theme - "00 0D 00 0E 00 1E 00 02 00 0F 00 11 00 12 00 22 00 14 00 00 00 00 00 00 00 00 00 00 00 00 00 00" Changing things like "00 0D" to "00 06" isn't all that overwhelming. But what I want to know if I were to take say, a song from CT/Silent Light, and replace it over the FF6 cave theme (like what GiNattack did with the Eternal Crystals hack), what exactly do you do to place it in the right sequence? Do you copy and paste it in a text editor and then edit it accordingly with a hex editor? RE: FFVI Music Hacking - Gi Nattak - 06-27-2011 (06-27-2011, 06:26 PM)the_randomizer Wrote: But what I want to know if I were to take say, a song from CT/Silent Light, and replace it over the FF6 cave theme (like what GiNattack did with the Eternal Crystals hack), what exactly do you do to place it in the right sequence? First of all, JCE3000GT is responsible for injecting Chrono Trigger's Silent Light into FF6 that replaces Umaro's theme, and has released the patch for it. I had nothing to do with it, or Eternal Crystals for that matter, that hack belongs to MetroidQuest. Now you see, the way MetroidQuest is doing his custom music is by literally custom composing it, rather manually sequencing the music data using a hex editor and the help of a midi sequencer, and that is what this tutorial here explains. It is incredibly challenging, and requires some actual knowledge about musical notation. The way JCE3000GT is injecting music into FF6, is by finding Squaresoft games with similar SPC cores, like Chrono Trigger, Romancing Saga's, Radical Dreamers, etc. These games use the same type of commands and code for the music that you will see in the FF6 song data. But while similar, they are not the exact same, and still requires a lot of know-how and experience to properly cross the songs over, it is no easy feat in itself, but is certainly easier than composing a custom song from scratch by referencing a midi sequencer, or sheet music. (06-27-2011, 06:26 PM)the_randomizer Wrote: Do you copy and paste it in a text editor and then edit it accordingly with a hex editor? No, that usually will not work. You might hear parts of the track, but it is not that simple and would most likely come out sounding bad, because the games use slightly different commands here and there, and you must consider that If you wanted to copy/past (insert the binary data) from one track from another songs data, it would have to be the same size or smaller. I have had mild success with crossing some songs tracks over with this method, Ruined World from CT is one that comes to mind, but only a very select few songs will sound good. Pretty much every song will need more work than just copy and pasting one track, to another. You must estimate the size of the sequence data and create the length-specifying bytes when you insert it. If the data exceeds that of the original song data, you will have to put the new song data where there is enough free space, and then change the pointers and instrument sample indexes and all that. Hopefully JCE3000GT can explain how he does it better when he gets back. RE: FFVI Music Hacking - the_randomizer - 06-27-2011 I know there's that program that JCE3000GT made, but it doesn't allow one to export/import spc files, but anyways, I need to experiment more with the sound tutorial first, like swapping instruments and sequences. Heck, I need to know more about music first. A challenge to be sure, but it's something I definitely want to learn more about. A quick off topic question about Breath of Fire 2, but this is still related to SPC hex hacking, halfway through the game, the battle theme changes over (after you get the magic flute for Tunlan). Yes, there are people out there who like the second theme better, but I don't. What values/address need to be located and changed, which control both SPC files? Has anyone found the addresses for BOF2? |