øA slickproductions.org /forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&action=printpage;topic=1801.0 e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexcd2a.html slickproductions.org /forum/index.php?PHPSESSID=5f0fck550j2m4m2fpbtkj2vkm1&topic=1801.0 e:/My Web Sites/Slick Productions - FFIV Message Board/slickproductions.org/forum/indexcd2a.html.z x &g^ ÿÿÿÿ ÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÿÈ `¦D ‹l OK text/html ISO-8859-1 gzip 8:Ö ‹l ÿÿÿÿÿÿÿÿ Tue, 10 Mar 2020 04:18:05 GMT 0ó° °® 0® P® €§² ð® &g^ ÿÿÿÿÿÿÿÿY" ‹l
Every command is listed below, in order, from 00 to FF. Commands have no parameters unless otherwise indicated.
Some commands have parameters, but no discernable effect (as far as I can tell). If a command is not listed
(such as E3), then it has no effect and no parameters.
In general, tracks also start off with their own header, which indicates information such as the relative
volume of the track, which instrument to use, how much reverb, etc. These track headers are commands that the
game treats no differently than notes and rests, and therefore the commands typically located in the track's
header can also be placed within the track to change effects mid-track. SPC data is read quickly enough that
the game will execute in-track commands without the music stopping or slowing down, so have fun!
TABLE OF NOTES, RESTS AND TIES
Commands 00 through D1 each represent a note, a rest, or an extension of a previous note or rest (a tie). When
deciding to use a tie, bear in mind that game music does not need to fit into a specific time signature, so
whereas a piece of sheet music may tie an eighth note at the end of one measure to an eighth note at the
beginning of the next measure, you can save one byte of space by simply using a quarter note. This is also the
practical application of the 3/4, 3/8 and 3/16 notes (which do not exist in standard music notation). Other
odd-fraction note durations (1/3, 1/6, 1/12, 1/24, 1/48) can be used when you want to play triplets. It takes a
bit of mathematical thinking. Three triplet quarter notes have the same duration as two regular quarter notes
(or one half note), so in order to play three triplet quarter notes, play three 1/6 notes.
(1/6 + 1/6 + 1/6 = 3/6, or 1/2)
Note Length C C# D D# E F F# G G# A A# B REST TIE
----------- -- -- -- -- -- -- -- -- -- -- -- -- ---- ---
1/1 00 0F 1E 2D 3C 4B 5A 69 78 87 96 A5 B4 C3
3/4 01 10 1F 2E 3D 4C 5B 6A 79 88 97 A6 B5 C4
1/2 02 11 20 2F 3E 4D 5C 6B 7A 89 98 A7 B6 C5
3/8 03 12 21 30 3F 4E 5D 6C 7B 8A 99 A8 B7 C6
1/3 04 13 22 31 40 4F 5E 6D 7C 8B 9A A9 B8 C7
1/4 05 14 23 32 41 50 5F 6E 7D 8C 9B AA B9 C8
3/16 06 15 24 33 42 51 60 6F 7E 8D 9C AB BA C9
1/6 07 16 25 34 43 52 61 70 7F 8E 9D AC BB CA
1/8 08 17 26 35 44 53 62 71 80 8F 9E AD BC CB
1/12 09 18 27 36 45 54 63 72 81 90 9F AE BD CC
1/16 0A 19 28 37 46 55 64 73 82 91 A0 AF BE CD
1/24 0B 1A 29 38 47 56 65 74 83 92 A1 B0 BF CE
1/32 0C 1B 2A 39 48 57 66 75 84 93 A2 B1 C0 CF
1/48 0D 1C 2B 3A 49 58 67 76 85 94 A3 B2 C1 D0
1/64 0E 1D 2C 3B 4A 59 68 77 86 95 A4 B3 C2 D1
THE REST OF THE COMMANDS
D2: (+ 3 parameters, XX YY ZZ) Fade in tempo, where XX YY is the rate of fade, and ZZ is the tempo. Higher ZZ =
quicker tempo. XX YY are in reverse byte order, and higher value = slower fade. You will rarely if ever need to
set YY higher than 00.
D3: (+ 3 parameters) No discernable effect.
D4: (+ 1 parameter) Sets the "multiple voice" effect of a track, for lack of a better term. The higher the
value, the more it will seem like each note is being played on several keys (or instruments) simultaneously.
The effect is most significant with the organ, creating a difference between what sounds like an electric organ
(think "Come On, Baby Light My Fire" by The Doors), and a pipe organ (think church).
D5: (+ 2 parameters, XX YY) Reverb. The first parameter sets the reverb level (higher value = more echo). The
second parameter seems to set the reverb of the reverb. Be careful with this. Set a high YY in combination with
a high XX, and a single note will quickly turn into that sound the alien makes when the scientists try to
dissect it in Independence Day.
D6: (+ 3 parameters) A very funky reverb effect. Not very useful for composing music per se, but maybe useful
for implementing sound effects within music. The three parameters seem to work independently of one another
(they are three separate parameters, and not one or two multiple byte parameters). The higher their value, the
funkier the effect, but there seems to be a ceiling. I know, for example, that "35" has an effect, but "AA"
does not. "D6 0F 0F 0F" Has a fun, but again not really useful, effect. More experimentation is needed here,
but I don't really have the motivation to do so.
D7: (+ 3 parameters) No discernable effect.
D8: (+ 3 parameters) No discernable effect.
D9: (+ 3 parameters) No discernable effect.
DA: (+ 1 parameter) Set octave. 00 is the lowest. I don't know how high it can go, but can't imagine you'd
need to go higher than 07 or 08.
DB: (+ 1 parameter) Set instrument, where "40" is the first instrument assigned to the song (in the index at
2420F), "41" is the second, and so on. Some weird stuff happens if you set an unassigned instrument. One higher
in value than the last instrument seems to be a quieter version of that instrument, two higher even quieter
than before, and so on in that fashion until you cannot hear the music at all. Several values lower than 40 (I
couldn't bear to experiment with exactly how many) will result in something that sounds like a buzzsaw playing
the notes you've written. Very grating and not recommended.
DC, DD: (+ 1 parameter each) I can't figure out what these do. According to jce3000gt, they are "set transpose"
and "increment transpose," respectively. In this particular instance I don't know what that means, and in my
experimentation, changing the value of these parameters has no effect.
DE: (+1 parameter) Set track volume. Near as I can tell, this is a RELATIVE volume value. If there is only one
track in the song, changing this value has no effect.
DF: (+ 1 parameter) No discernable effect.
E0/F0: Loop Start/End. E0 is inserted before the section to loop, with one parameter indicating the number of
times to loop. F0 is inserted at the end of the section to loop (no parameter). Interesting note - without an
"E0" at the beginning, F0 will simply play a sustained C (or, lowest note on the scale).
E1: Next octave up. All subsequent notes will be played in the octave above those preceding this command.
E2: Next octave down. All subsequent notes will be played in the octave below those preceding this command.
EB: Negates reverb setting for all subsequent notes.
EC: Makes all subsequent notes sound like static instead of notes.
F0: (SEE E0)
F1: Stops the music.
F2: (+ 3 parameters, XX YY ZZ) Volume. Only ZZ seems to have any effect, and it looks like XX YY is always 00
00 in the game's original programming.
F3: (+3 parameters, XX YY ZZ) I don't know what this does. It must have some effect, because in the original
programming, every song has an F3 command in the beginning. Seems XX and YY have no effect, because they're
always 00 00. ZZ ranges from about 50 to C0, and is most commonly in the 80s.
F4: (+ 2 parameters) This is the "go to" command. Placing this command at the end of every track is how the
game loops music indefinitely. Remember, as before, to start counting with 00 20 (reverse byte order), and to
count from the song's byte #02, not byte #00.
F5: (+ 3 parameters) No discernable effect.
F6 and above: Stops the music.Very impressive! Glad to see you're still around ChillyfeezI never REALLY left. In the real world, my job is retail management, so I don't get a lot of free time in Nov/Dec. I'm still working slowly but surely on my big project. Learning about the game's SPC engine was part of it.
Now if I could get someone to compose a song or two from another game for my latest FFIV hack I'd be happy.Do you mean existing game songs? If I could find the midis, I'd do it for you. It would be good practice.
Well, if you wanna send me one to work on, I just turned on "allow users to email me." I won't make any promises about how quickly I'll get it done, but I won't leave you hanging.