Konami SCC VGM to PCE nybble stream format
NYB A
NYB B
NYB C
NYB D
NYB E
Comment
$ 0
F.Lo (hinyb)
F.Lo (lonyb)

SCC Frequency Registers for channels 0..4

(12 bits over 3 nybbles)

$ 1
F.Hi
$ 2
F.Lo
F.Lo
$ 3
F.Hi
$ 4
F.Lo
F.Lo
$ 5
F.Hi
$ 6
F.Lo
F.Lo
$ 7
F.Hi
$ 8
F.Lo
F.Lo
$ 9
F.Hi
$ A
Vol

SCC 4-bit Volume Registers for channels 0..4

(SCC Volume is linear)

$ B
Vol
$ C
Vol
$ D
Vol
$ E
Vol
Special Command
Sub-Command
Data
Data
Data
$ F
(0/1)
%000C
%CCCC
SCC Channel Toggle (4..0)

.

.

.

(2/3)
%001V
%VVVV
Wait (VVVVV)+1 VBlanks
(4/5)
%010W
%WWWW
%WWCC
Write Waveform #0-63 to SCC Channel 0..3(/4)
Newest Ver.: Waveform 0..127. W = bit 6!
(6/7)
%011V
Wait 1 (V=0) or 2 (V=1) Vblanks
AY PSG Special Commands
(8)
%1000
$ 0
F.Lo (hinyb)
F.Lo (lonyb)
PSG Frequency Registers for AY channels 0,1,2 (or "A,B,C")

(12 bits over 3 nybbles)

.
.
.
%1000
$ 1
F.Hi
%1000
$ 2
F.Lo
F.Lo
%1000
$ 3
F.Hi
%1000
$ 4
F.Lo
F.Lo
(8)
%1000
$ 5
F.Hi
(8/9)
%100N
$ 6
%NNNN
5-bit Noise Frequency (still in AY format)
(8)
%1000
$ 7
%NCBA
Voice Toggle for Noise + Channel A,B,C (0=active)
(9)
%100M
$ 8
PSG Channel A Envelope Mode (written this way only when M=1)
(8/9)
%100M
$ 9
Vol
PSG Channels B & C Env. Mode & 4-bit volume Registers
(PSG Volume appears linear)
(8/9)
%100M
$ A
Vol
(8)
%1000
$ B
Env.L (hinyb)
Env.L (lonyb)
Envelope Frequency Registers (but I ignore them for now...)
(8)
%1000
$ C
Env.H (hinyb)
Env.H (lonyb)
(8)
%1000
$ D
%EEEE
Envelope Type Register (used to re-trigger logarithmic envelope!)
(8)
%1000
$ E
%SSSS
-
OKI MSM 6295 Sample Hit: S: Sample No.
(8)
%1000
($ F)
(Undefined for now)
(A/B)
%101N
%NNNN
PSG 5-bit Noise Frequency (still in AY format) shortcut
(C)
%1100
%NCBA
PSG Voice Toggle for Noise + Channel A,B,C (0=active) shortcut
(D)
%1101
%VVVV
PSG Channel A 4-bit volume Register, when M=0
$ F
$ E
$ 0
$ 0
Set Loop Point here
$ F
$ E
$ F
{ $ F}
EOF!  (Song will loop if Loop Point was set)
$ F
$ F
Fade song from here & then Stop