If you are still using the old URL (datacrystal.romhacking.net), please update your bookmarks! The old URL may stop working soon.
The current URL is datacrystal.tcrf.net.
The current URL is datacrystal.tcrf.net.
THUNDER FORCE2/Tutorials
Jump to navigation
Jump to search
Music Hacking
BGM Header format
00: b Number of channels (always must be 09h = 6 FM + 3 PSG) 01: b Volume (99 = max, 0 = min) 02: b Tempo modifier 03: b Pitch modifier 04: w Volume table pointer 06: w Channel tracks table pointer 08: w Patterns table pointer 0A: w FM Voices bank pointer 0C: w PSG Voices bank pointer 0E: w End of file offset 10: Channel Volume Channel tracks table stores offset for all 9 sound channels used by driver in the following order: FM1, FM2, FM3, FM4, FM5, FM6, PSG1, PSG2, PSG3 Channel tracks cannot be skipped -- if the channel is unused, corresponding track should start with byte 0FFh (end of track marker). Each FM/PSG track refers to patterns from patterns table by table entry number. Both tracks and patterns can execute coordinate flags.
Volume Controll for each channel
10: Volume for channel 1 11: Volume for channel 2 12: Volume for channel 3 13: Volume for channel 4 14: Volume for channel 5 15: Volume for channel 6 16: Volume for PSG 1 17: Volume for PSG 2 18: Volume for PSG 3
Channel Pointer
19: Pointer to channel 1 1B: Pointer to channel 2 1D: Pointer to channel 3 1F: Pointer to channel 4 21: Pointer to channel 5 23: Pointer to channel 6 25: Pointer to PSG 1 27: Pointer to PSG 2
Value Definitions
$80-$DF Notes $E0-$FF Coordination flags
Music Notes Value
C-1: 80 C#1: 81 D-1: 82 D#1: 83 E-1: 84 F-1: 85 F#1: 86 G-1: 87 G#1: 88 A-1: 89 A#1: 8A B-1: 8B C-2: 8C C#2: 8D D-2: 8E D#2: 8F E-2: 90 F-2: 91 F#2: 92 G-2: 93 G#2: 94 A-2: 95 A#2: 96 B-2: 97 C-3: 98 C#3: 99 D-3: 9A D#3: 9B E-3: 9C F-3: 9D F#3: 9E G-3: 9F G#3: A0 A-3: A1 A#3: A2 B-3: A3 C-4: A4 C#4: A5 D-4: A6 D#4: A7 E-4: A8 F-4: A9 F#4: AA G-4: AB G#4: AC A-4: AD A#4: AE B-4: AF C-5: B0 C#5: B1 D-5: B2 D#5: B3 E-5: B4 F-5: B5 F#5: B6 G-5: B7 G#5: B8 A-5: B9 A#5: BA B-5: BB C-6: BC C#6: BD D-6: BE D#6: BF E-6: C0 F-6: C1 F#6: C2 G-6: C3 G#6: C4 A-6: C5 A#6: C6 B-6: C7 C-7: C8 C#7: C9 D-7: CA D#7: CB E-7: CC F-7: CD F#7: CE G-7: CF G#7: D0 A-7: D1 A#7: D2 B-7: D3 C-8: D4 C#8: D5 D-8: D6 D#8: D7 E-8: D8 F-8: D9 F#8: DA G-8: DB G#8: DC A-8: DD A#8: DE B-8: DF
Coordination flags
E0: Instrument number Parameters: E0 xx E8: Pitch ? Parameters: E8 xx E9: ? Parameters: E9 xx EC: Loop; EC 00 is infinity loop. Parameters: EC xx ED: Fade in Parameters: ED xx