From Data Crystal
Revision as of 13:40, 16 June 2017 by Dracula X (talk | contribs) (BGM Header format)
Jump to: navigation, 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