git.y1.nz

gbdk-2020

GameBoy Development Kit
download: https://git.y1.nz/archives/gbdk.tar.gz
README | Files | Log | Refs | LICENSE

commit 55e0065fa6520b76cf240e10701e6bc89c2e7368
parent f6ece3b68e9a4b1825741e972507e31cb295dea3
Author: Toxa <untoxa@mail.ru>
Date:   Sat, 26 Aug 2023 00:08:49 +0300

EXAMPLES: SGS/GG wav_sample improve cut_sample() routine; use standard definitions from sms/hardware.h

Diffstat:
Mgbdk-lib/examples/sms/wav_sample/src/sample_player.c92++++++++++++++++++++++++++++++++++++++++++++-----------------------------------
Mgbdk-lib/examples/sms/wav_sample/src/sample_player.h15++++++---------
Mgbdk-lib/examples/sms/wav_sample/src/samptest.c4++--
3 files changed, 59 insertions(+), 52 deletions(-)

diff --git a/gbdk-lib/examples/sms/wav_sample/src/sample_player.c b/gbdk-lib/examples/sms/wav_sample/src/sample_player.c @@ -3,38 +3,38 @@ #define SAMPLE_BUSYWAIT 19 static const uint8_t voltable[] = { - 0xff,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0xff,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0xef,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0xef,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0xdf,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0xcf,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0xcf,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0xbf,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, - 0xaf,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0xaf,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x9f,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x9f,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x9f,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x8f,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x8f,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x8f,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, - 0x8e,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x8e,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x8d,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x8c,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x8b,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x8b,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x8a,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x8a,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, - 0x89,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x89,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0f, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0e, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0e, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0d, - 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0c, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0c, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0b, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0a, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x0a, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x09, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x09, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x09, - 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x08, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x08, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x08, 0x78,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x08, 0x78,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x08, 0x78,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x08, 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x08, 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x08, - 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x08, 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x08, 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x07, 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x07, 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x07, 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x07, 0x67,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x07, 0x67,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x07, - 0x67,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x07, 0x67,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x07, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x07, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x07, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x07, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x07, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x07, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, - 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, 0x56,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, 0x56,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, 0x56,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, 0x56,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, - 0x56,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x06, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, - 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x45,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x45,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x45,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, - 0x45,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x45,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x45,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x45,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, - 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x05, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, - 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, - 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, - 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, - 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, - 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, - 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, - 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, - 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, - 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, - 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, - 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, - 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, - 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, - 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, - 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, - 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, - 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, - 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x01, - 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x00, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x00, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x00, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x00, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x00, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x00, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x00, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLDDATA)|0x00 + 0xff,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0xff,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0xef,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0xef,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0xdf,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0xcf,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0xcf,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0xbf,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, + 0xaf,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0xaf,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x9f,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x9f,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x9f,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x8f,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x8f,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x8f,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, + 0x8e,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x8e,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x8d,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x8c,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x8b,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x8b,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x8a,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x8a,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, + 0x89,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x89,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0f, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0e, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0e, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0d, + 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0c, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0c, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0b, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0a, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x0a, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x09, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x09, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x09, + 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x08, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x08, 0x88,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x08, 0x78,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x08, 0x78,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x08, 0x78,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x08, 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x08, 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x08, + 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x08, 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x08, 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x07, 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x07, 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x07, 0x77,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x07, 0x67,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x07, 0x67,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x07, + 0x67,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x07, 0x67,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x07, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x07, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x07, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x07, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x07, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x07, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, + 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, 0x66,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, 0x56,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, 0x56,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, 0x56,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, 0x56,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, + 0x56,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x06, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, + 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x55,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x45,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x45,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x45,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, + 0x45,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x45,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x45,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x45,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, + 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x05, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, + 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x44,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, + 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x34,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, + 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x04, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, + 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x33,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, + 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, + 0x23,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, + 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x03, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, + 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, + 0x22,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, + 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x12,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, + 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, + 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x02, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, + 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, + 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x11,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, + 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, + 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x01,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, + 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, + 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x01, + 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x00, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x00, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x00, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x00, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x00, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x00, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x00, 0x00,(PSG_LATCH|PSG_CH2|PSG_VOLUME)|0x00 }; void play_sample(uint8_t * sample, uint16_t size) NAKED { @@ -70,12 +70,12 @@ void play_sample(uint8_t * sample, uint16_t size) NAKED { rlca .endm and #0x0f - or #(PSG_LATCH | PSG_CH0 | PSG_VOLDDATA) + or #(PSG_LATCH | PSG_CH0 | PSG_VOLUME) ld b, a ld a, (hl) inc hl and #0x0f - or #(PSG_LATCH | PSG_CH1 | PSG_VOLDDATA) + or #(PSG_LATCH | PSG_CH1 | PSG_VOLUME) ld c, #<_PSG out (c), b @@ -97,15 +97,25 @@ void play_sample(uint8_t * sample, uint16_t size) NAKED { __endasm; } -void cut_sample(void) NAKED { +void cut_sample(uint8_t mask) NAKED { + mask; __asm ld c, #<_PSG - ld a, #(PSG_LATCH | PSG_CH0 | PSG_VOLDDATA | 0x0f) ; cut channel 1 - out (c), a - ld a, #(PSG_LATCH | PSG_CH1 | PSG_VOLDDATA | 0x0f) ; cut channel 2 - out (c), a - ld a, #(PSG_LATCH | PSG_CH2 | PSG_VOLDDATA | 0x0f) ; cut channel 3 + ld b, a + ld e, #-1 +1$: + inc e + srl b + jr c, 2$ + ret z + jr 1$ +2$: + ld a, e + .rept 3 + rrca + .endm + or #(PSG_LATCH | PSG_VOLUME | 0x0f) out (c), a - ret + jr 1$ __endasm; } diff --git a/gbdk-lib/examples/sms/wav_sample/src/sample_player.h b/gbdk-lib/examples/sms/wav_sample/src/sample_player.h @@ -2,17 +2,14 @@ #define SAMPLE_PLAYER_H_INCLUDE #include <gbdk/platform.h> +#include <stdint.h> -#define PSG_LATCH 0x80 -#define PSG_DATA 0x40 - -#define PSG_CH0 0b00000000 -#define PSG_CH1 0b00100000 -#define PSG_CH2 0b01000000 -#define PSG_CH3 0b01100000 -#define PSG_VOLDDATA 0b00010000 +#define SFX_CH_1 (1 << (PSG_CH0 >> 5)) +#define SFX_CH_2 (1 << (PSG_CH1 >> 5)) +#define SFX_CH_3 (1 << (PSG_CH2 >> 5)) +#define SFX_CH_4 (1 << (PSG_CH3 >> 5)) void play_sample(uint8_t * sample, uint16_t size); -void cut_sample(void); +void cut_sample(uint8_t mask); #endif diff --git a/gbdk-lib/examples/sms/wav_sample/src/samptest.c b/gbdk-lib/examples/sms/wav_sample/src/samptest.c @@ -26,13 +26,13 @@ void main(void) { bank_save = _current_bank; SWITCH_ROM(BANK(cowbell_8bit_pcm_unsigned)); play_sample(cowbell_8bit_pcm_unsigned, sizeof(cowbell_8bit_pcm_unsigned)); - cut_sample(); + cut_sample(SFX_CH_1 | SFX_CH_2 | SFX_CH_3); SWITCH_ROM(bank_save); } else if (KEY_PRESSED(J_B)) { bank_save = _current_bank; SWITCH_ROM(BANK(risset_drum_8bit_pcm_unsigned)); play_sample(risset_drum_8bit_pcm_unsigned, sizeof(risset_drum_8bit_pcm_unsigned)); - cut_sample(); + cut_sample(SFX_CH_1 | SFX_CH_2 | SFX_CH_3); SWITCH_ROM(bank_save); } vsync();

This webpage is intended to be an accessible preview of this repository. To get a fuller picture, clone it and use the git CLI.