git.y1.nz

gbdk-2020

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

commit 88a1e3c080d0f7819cf643cbbdab45543f599d85
parent 29fa3c2abd619ecf90d2552ec655ed3a4f3e46cd
Author: Toxa <untoxa@mail.ru>
Date:   Thu, 24 Aug 2023 00:10:59 +0300

EXAMPLES: wav_sample example plays waveforms on the SMS/GG PSG

Diffstat:
Agbdk-lib/examples/sms/wav_sample/Makefile61+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Agbdk-lib/examples/sms/wav_sample/Readme.md9+++++++++
Agbdk-lib/examples/sms/wav_sample/sndrec/cowbell_8bit_pcm_unsigned.wav0
Agbdk-lib/examples/sms/wav_sample/sndrec/risset_drum_8bit_pcm_unsigned.wav0
Agbdk-lib/examples/sms/wav_sample/src/cowbell_8bit_pcm_unsigned.c513+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Agbdk-lib/examples/sms/wav_sample/src/cowbell_8bit_pcm_unsigned.h9+++++++++
Agbdk-lib/examples/sms/wav_sample/src/risset_drum_8bit_pcm_unsigned.c234+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Agbdk-lib/examples/sms/wav_sample/src/risset_drum_8bit_pcm_unsigned.h9+++++++++
Agbdk-lib/examples/sms/wav_sample/src/sample_player.c92+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Agbdk-lib/examples/sms/wav_sample/src/sample_player.h18++++++++++++++++++
Agbdk-lib/examples/sms/wav_sample/src/samptest.c39+++++++++++++++++++++++++++++++++++++++
Agbdk-lib/examples/sms/wav_sample/utils/cvtsamplesms.py80+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
12 files changed, 1064 insertions(+), 0 deletions(-)

diff --git a/gbdk-lib/examples/sms/wav_sample/Makefile b/gbdk-lib/examples/sms/wav_sample/Makefile @@ -0,0 +1,61 @@ +# +# A Makefile that compiles all .c and .s files in "src" and "res" +# subdirectories and places the output in a "obj" subdirectory +# + +# If you move this project you can change the directory +# to match your GBDK root directory (ex: GBDK_HOME = "C:/GBDK/" +GBDK_HOME = ../../../ + +LCC = $(GBDK_HOME)bin/lcc + +# You can set flags for LCC here +# For example, you can uncomment the line below to turn on debug output +# LCCFLAGS += -debug +LCCFLAGS += -mz80:sms -autobank + +# You can set the name of the .gb ROM file here +PROJECTNAME = wav_sample + +SRCDIR = src +OBJDIR = obj +RESDIR = res +BINS = $(OBJDIR)/$(PROJECTNAME).sms +CSOURCES = $(foreach dir,$(SRCDIR),$(notdir $(wildcard $(dir)/*.c))) $(foreach dir,$(RESDIR),$(notdir $(wildcard $(dir)/*.c))) +ASMSOURCES = $(foreach dir,$(SRCDIR),$(notdir $(wildcard $(dir)/*.s))) +OBJS = $(CSOURCES:%.c=$(OBJDIR)/%.o) $(ASMSOURCES:%.s=$(OBJDIR)/%.o) + +all: prepare $(BINS) + +compile.bat: Makefile + @echo "REM Automatically generated from Makefile" > compile.bat + @make -sn | sed y/\\//\\\\/ | sed s/mkdir\ -p\/mkdir\/ | grep -v make >> compile.bat + +# Compile .c files in "src/" to .o object files +$(OBJDIR)/%.o: $(SRCDIR)/%.c + $(LCC) $(LCCFLAGS) -c -o $@ $< + +# Compile .c files in "res/" to .o object files +$(OBJDIR)/%.o: $(RESDIR)/%.c + $(LCC) $(LCCFLAGS) -c -o $@ $< + +# Compile .s assembly files in "src/" to .o object files +$(OBJDIR)/%.o: $(SRCDIR)/%.s + $(LCC) $(LCCFLAGS) -c -o $@ $< + +# If needed, compile .c files in "src/" to .s assembly files +# (not required if .c is compiled directly to .o) +$(OBJDIR)/%.s: $(SRCDIR)/%.c + $(LCC) $(LCCFLAGS) -S -o $@ $< + +# Link the compiled object files into a .gb ROM file +$(BINS): $(OBJS) + $(LCC) $(LCCFLAGS) -o $(BINS) $(OBJS) + +prepare: + mkdir -p $(OBJDIR) $(RESDIR) + +clean: +# rm -f *.gb *.ihx *.cdb *.adb *.noi *.map + rm -f $(OBJDIR)/*.* + diff --git a/gbdk-lib/examples/sms/wav_sample/Readme.md b/gbdk-lib/examples/sms/wav_sample/Readme.md @@ -0,0 +1,9 @@ + +Demonstration of how to convert and play wav sample files + +Included wav audio files are in the public domain + +Conversion of samples: + - `utils/cvtsample.py sndrec/cowbell_8bit_pcm_unsigned.wav + - `utils/cvtsample.py sndrec/risset_drum_8bit_pcm_unsigned.wav + diff --git a/gbdk-lib/examples/sms/wav_sample/sndrec/cowbell_8bit_pcm_unsigned.wav b/gbdk-lib/examples/sms/wav_sample/sndrec/cowbell_8bit_pcm_unsigned.wav Binary files differ. diff --git a/gbdk-lib/examples/sms/wav_sample/sndrec/risset_drum_8bit_pcm_unsigned.wav b/gbdk-lib/examples/sms/wav_sample/sndrec/risset_drum_8bit_pcm_unsigned.wav Binary files differ. diff --git a/gbdk-lib/examples/sms/wav_sample/src/cowbell_8bit_pcm_unsigned.c b/gbdk-lib/examples/sms/wav_sample/src/cowbell_8bit_pcm_unsigned.c @@ -0,0 +1,513 @@ +#pragma bank 255 + +#include <gbdk/platform.h> +#include <stdint.h> + +BANKREF(cowbell_8bit_pcm_unsigned) +const uint8_t cowbell_8bit_pcm_unsigned[8064] = { +0xff,0x78,0xa5,0x4e,0x0,0x75,0x4c,0xb9,0xff,0xbc,0xa1,0x5d,0x0,0x89,0x2e,0xd5, +0xd2,0x7e,0xe6,0x0,0x71,0x4a,0x58,0xe2,0x97,0x9b,0xaa,0xd,0x77,0x68,0x43,0xff, +0x3e,0xcd,0x6e,0x24,0x9e,0x38,0xb9,0xa2,0x7f,0x8f,0x4c,0x3f,0xa2,0x44,0xde,0xa8, +0x6a,0xc0,0x0,0x80,0x4d,0x85,0xe6,0x9e,0xba,0x86,0x19,0x4a,0x36,0x69,0xff,0x81, +0xff,0x63,0x2f,0x6a,0x0,0xad,0x9e,0xde,0xef,0x79,0x52,0x5a,0x0,0x9a,0x90,0xac, +0xff,0x4a,0xa6,0x18,0x43,0x89,0x6d,0xe5,0xa4,0x88,0x86,0x1f,0x50,0x9e,0x48,0xff, +0x77,0x83,0x9a,0x0,0xaa,0x55,0x99,0xb2,0x70,0x85,0x70,0x3e,0xa0,0x7d,0x9c,0xbc, +0x26,0xa1,0x15,0x83,0x98,0x7d,0xff,0x73,0x7d,0x4c,0x0,0x69,0xa7,0x82,0xff,0x7d, +0x8b,0x6b,0x0,0x90,0x48,0xdb,0xd2,0xa3,0xa2,0x3f,0x36,0x5e,0x59,0xc0,0xe2,0x86, +0xd4,0x19,0x67,0x50,0x48,0xdc,0x84,0xdd,0x96,0x4f,0x65,0x49,0x4f,0xcc,0x7b,0xca, +0x9e,0x41,0xa4,0x1a,0x9f,0x73,0x83,0xbc,0x65,0x83,0x77,0x5c,0x94,0x90,0x53,0xbd, +0x3b,0x95,0x66,0x5f,0xcc,0x65,0xc0,0x4c,0x55,0x6e,0x4f,0x82,0xbf,0x8d,0xd4,0x77, +0x2b,0x80,0x4,0xbb,0x8e,0xb0,0xe3,0x5c,0x77,0x37,0x37,0x86,0xa6,0xad,0xe4,0x61, +0x87,0x2f,0x3f,0x95,0x66,0xff,0x92,0xa4,0x7b,0x13,0x5d,0x6e,0x7a,0xf5,0xac,0x8b, +0xa7,0xe,0x8c,0x43,0x8b,0xbd,0x77,0xba,0x5e,0x77,0x75,0x6b,0x81,0x9e,0x68,0xa3, +0x4a,0x74,0xa0,0x58,0xd7,0x43,0x90,0x75,0x40,0x8a,0x72,0x96,0xc3,0x82,0x64,0x79, +0x28,0x9c,0x59,0xb2,0xb9,0x76,0xac,0x26,0x66,0x60,0x74,0xae,0xb4,0x93,0xa2,0x46, +0x51,0x67,0x4a,0xd5,0x82,0xd8,0x91,0x51,0x6f,0x2e,0x77,0x9a,0xa3,0xc3,0xb1,0x59, +0x84,0x20,0x7f,0x88,0x7d,0xe2,0x6a,0xad,0x63,0x4f,0x72,0x77,0x8b,0xaa,0x7f,0x88, +0x87,0x56,0xa3,0x46,0xb5,0x75,0x71,0x94,0x3e,0x9f,0x82,0x88,0xa3,0x7c,0x5d,0x88, +0x33,0x99,0x92,0x86,0xc5,0x3b,0x8b,0x46,0x65,0x8e,0x8c,0xb5,0x9c,0x77,0x61,0x49, +0x4e,0x9b,0x73,0xed,0x8f,0x86,0x81,0x13,0x7a,0x57,0x97,0xc9,0xb0,0x94,0x81,0x37, +0x6c,0x5f,0x7c,0xc2,0x7c,0xd9,0x5b,0x70,0x65,0x57,0x9c,0x82,0x9d,0x98,0x8d,0x6f, +0x81,0x48,0xa8,0x6f,0x90,0x9e,0x54,0xac,0x57,0x8a,0x85,0x7c,0x8c,0x7b,0x69,0x89, +0x75,0x8a,0xa1,0x59,0xa9,0x44,0x7c,0x79,0x6b,0xaf,0x83,0x99,0x75,0x64,0x59,0x73, +0x66,0xb5,0x8b,0xa9,0x90,0x42,0x80,0x29,0x8d,0x90,0xa5,0xc3,0x86,0x70,0x61,0x40, +0x69,0x95,0x85,0xe9,0x75,0x91,0x61,0x46,0x84,0x5f,0xab,0x98,0xb3,0x85,0x6c,0x58, +0x7f,0x69,0xa1,0x97,0x7a,0xb9,0x3c,0x90,0x62,0x7a,0xab,0x76,0x92,0x7e,0x74,0x80, +0x85,0x6e,0xa4,0x5a,0x8e,0x6d,0x6f,0x9f,0x6e,0xb0,0x70,0x7f,0x63,0x5b,0x74,0x8c, +0x87,0xae,0x90,0x6a,0x87,0x28,0x87,0x67,0x99,0xb7,0x87,0x9e,0x5c,0x5e,0x58,0x70, +0x87,0xbb,0x87,0xa9,0x69,0x5d,0x76,0x42,0xa3,0x80,0xba,0x97,0x7b,0x72,0x63,0x64, +0x80,0x8b,0x92,0xbd,0x65,0x97,0x4e,0x76,0x86,0x6f,0xaf,0x79,0x9f,0x7c,0x70,0x74, +0x85,0x6d,0x9c,0x76,0x7f,0x97,0x5e,0xa3,0x68,0x91,0x76,0x70,0x80,0x6f,0x89,0x8e, +0x8f,0x8a,0x88,0x49,0x84,0x4c,0x8e,0x95,0x86,0xc3,0x66,0x80,0x4c,0x58,0x7b,0x94, +0x92,0xad,0x82,0x71,0x6e,0x3b,0x8c,0x6c,0xba,0x95,0x8e,0x89,0x51,0x70,0x5e,0x7f, +0x9e,0xaa,0x85,0x9f,0x51,0x76,0x6c,0x67,0xac,0x77,0xb5,0x7b,0x7e,0x76,0x6d,0x7a, +0x86,0x81,0x8c,0x94,0x71,0x9a,0x61,0x96,0x6f,0x7b,0x8b,0x67,0x98,0x78,0x8f,0x89, +0x84,0x6b,0x83,0x5e,0x86,0x7f,0x82,0xae,0x6f,0x9b,0x4e,0x70,0x73,0x75,0x95,0x92, +0x94,0x88,0x75,0x45,0x7c,0x5c,0xa4,0x89,0x98,0x9d,0x64,0x7e,0x46,0x76,0x80,0x99, +0x9a,0x9b,0x76,0x78,0x5c,0x60,0x8c,0x73,0xc0,0x7e,0x98,0x7a,0x5b,0x7a,0x6b,0x87, +0x92,0x97,0x82,0x96,0x63,0x87,0x6a,0x82,0x8c,0x73,0xa2,0x6a,0x97,0x7a,0x7f,0x84, +0x7c,0x77,0x81,0x72,0x81,0x9b,0x74,0xa7,0x5c,0x82,0x6f,0x6a,0x91,0x7d,0xa2,0x88, +0x82,0x5c,0x72,0x61,0x8d,0x80,0x9d,0x9b,0x76,0x8b,0x3b,0x7c,0x6a,0x89,0x9c,0x91, +0x92,0x7d,0x67,0x5b,0x75,0x6e,0xaa,0x81,0xa5,0x80,0x6c,0x7b,0x56,0x88,0x7b,0x97, +0x8f,0x93,0x78,0x7e,0x67,0x7a,0x81,0x79,0xa2,0x71,0xa4,0x71,0x7b,0x7d,0x74,0x89, +0x7c,0x88,0x80,0x90,0x78,0x92,0x67,0x90,0x73,0x75,0x90,0x6c,0xa6,0x7c,0x8b,0x74, +0x76,0x6e,0x7b,0x78,0x8d,0x98,0x83,0x93,0x55,0x81,0x5c,0x80,0x8c,0x88,0xa5,0x7e, +0x80,0x5d,0x66,0x69,0x8d,0x82,0xae,0x89,0x7f,0x7e,0x4a,0x82,0x67,0x94,0x91,0x94, +0x89,0x78,0x70,0x6c,0x79,0x7a,0x98,0x7d,0xa4,0x6d,0x81,0x77,0x6c,0x91,0x72,0x92, +0x81,0x92,0x7d,0x82,0x70,0x8b,0x77,0x7c,0x8b,0x70,0xa8,0x72,0x90,0x74,0x7a,0x7c, +0x70,0x85,0x81,0x96,0x88,0x8e,0x69,0x85,0x5f,0x7e,0x81,0x7f,0xa4,0x7d,0x91,0x68, +0x72,0x66,0x78,0x82,0x96,0x8f,0x8d,0x83,0x5c,0x7f,0x58,0x8c,0x84,0x92,0x97,0x7b, +0x80,0x62,0x72,0x6f,0x8a,0x84,0xa1,0x7d,0x86,0x74,0x67,0x84,0x69,0x98,0x80,0x99, +0x81,0x78,0x78,0x78,0x7a,0x81,0x89,0x7b,0xa6,0x6b,0x8e,0x72,0x7c,0x86,0x70,0x8b, +0x78,0x99,0x81,0x8a,0x78,0x83,0x6e,0x7c,0x79,0x7d,0x9d,0x7b,0x9d,0x6f,0x7e,0x6c, +0x6a,0x82,0x83,0x93,0x91,0x8a,0x6f,0x7d,0x56,0x83,0x79,0x8f,0x97,0x80,0x8e,0x63, +0x79,0x63,0x7f,0x87,0x94,0x89,0x89,0x78,0x69,0x7c,0x60,0x93,0x7c,0x9b,0x86,0x7c, +0x7f,0x6a,0x7c,0x73,0x87,0x84,0x9b,0x79,0x8e,0x71,0x7b,0x7f,0x6e,0x8f,0x75,0x9c, +0x7d,0x87,0x7d,0x7d,0x79,0x7b,0x7d,0x7d,0x99,0x79,0x97,0x73,0x87,0x73,0x72,0x82, +0x74,0x97,0x85,0x8f,0x7f,0x7e,0x67,0x7c,0x71,0x87,0x92,0x83,0x99,0x6d,0x80,0x5f, +0x77,0x7f,0x88,0x91,0x8a,0x86,0x72,0x77,0x5b,0x86,0x78,0x9b,0x88,0x85,0x87,0x63, +0x7e,0x62,0x84,0x89,0x94,0x84,0x89,0x75,0x77,0x7a,0x6b,0x8d,0x77,0x9a,0x7b,0x8a, +0x7e,0x77,0x81,0x73,0x82,0x7d,0x8d,0x7d,0x92,0x77,0x89,0x76,0x77,0x82,0x70,0x98, +0x7b,0x93,0x82,0x80,0x75,0x77,0x76,0x7f,0x8e,0x84,0x97,0x76,0x87,0x64,0x79,0x79, +0x7e,0x94,0x84,0x91,0x79,0x7a,0x62,0x7c,0x74,0x8f,0x89,0x8a,0x8e,0x6e,0x81,0x55, +0x81,0x7d,0x8d,0x8d,0x87,0x83,0x76,0x77,0x66,0x84,0x77,0x98,0x7f,0x8c,0x80,0x72, +0x81,0x6b,0x86,0x7c,0x8e,0x81,0x8c,0x7b,0x81,0x79,0x79,0x82,0x75,0x93,0x75,0x96, +0x7e,0x80,0x81,0x75,0x7e,0x79,0x88,0x81,0x95,0x7c,0x8a,0x6e,0x7b,0x77,0x78,0x91, +0x7f,0x99,0x7c,0x81,0x6c,0x75,0x75,0x82,0x89,0x8d,0x93,0x79,0x83,0x59,0x7f,0x73, +0x86,0x90,0x85,0x8f,0x78,0x7a,0x63,0x7d,0x77,0x8f,0x83,0x8c,0x83,0x77,0x80,0x64, +0x87,0x76,0x8c,0x84,0x87,0x82,0x7c,0x7b,0x74,0x80,0x78,0x8e,0x79,0x93,0x7b,0x81, +0x80,0x73,0x84,0x75,0x89,0x7f,0x93,0x80,0x85,0x76,0x7c,0x79,0x77,0x8c,0x7b,0x9c, +0x7c,0x87,0x75,0x77,0x79,0x78,0x89,0x85,0x96,0x80,0x86,0x68,0x7d,0x6e,0x80,0x8a, +0x83,0x99,0x7a,0x83,0x69,0x78,0x73,0x84,0x85,0x8d,0x8a,0x7d,0x80,0x64,0x82,0x70, +0x8a,0x84,0x88,0x88,0x79,0x7f,0x6c,0x7f,0x78,0x89,0x7f,0x8e,0x7a,0x81,0x7e,0x71, +0x87,0x72,0x8a,0x7d,0x8c,0x81,0x82,0x7d,0x7a,0x7c,0x76,0x86,0x7b,0x99,0x7d,0x8a, +0x79,0x79,0x7c,0x71,0x88,0x7f,0x99,0x84,0x87,0x73,0x7c,0x71,0x7b,0x85,0x81,0x9a, +0x7d,0x89,0x6f,0x7a,0x74,0x7c,0x87,0x86,0x8f,0x81,0x83,0x6d,0x7e,0x6c,0x86,0x82, +0x87,0x8d,0x7b,0x84,0x6c,0x7e,0x72,0x84,0x82,0x8b,0x83,0x81,0x7e,0x6e,0x82,0x6f, +0x8b,0x7d,0x8c,0x83,0x7e,0x81,0x74,0x7f,0x75,0x84,0x7d,0x91,0x7d,0x88,0x7c,0x7a, +0x7f,0x71,0x87,0x7a,0x97,0x81,0x87,0x7d,0x7b,0x78,0x77,0x7f,0x7e,0x99,0x7f,0x8f, +0x75,0x7d,0x76,0x75,0x85,0x80,0x94,0x83,0x87,0x75,0x7c,0x70,0x7f,0x80,0x86,0x8f, +0x7e,0x88,0x6e,0x7e,0x6e,0x80,0x85,0x86,0x89,0x81,0x80,0x72,0x7e,0x6c,0x88,0x7d, +0x8b,0x85,0x7f,0x84,0x71,0x81,0x70,0x83,0x7e,0x8b,0x81,0x85,0x7f,0x79,0x7f,0x6f, +0x86,0x78,0x92,0x80,0x87,0x81,0x7a,0x7e,0x73,0x80,0x7c,0x91,0x80,0x8d,0x7a,0x7f, +0x78,0x75,0x82,0x7b,0x96,0x80,0x8b,0x7b,0x7c,0x75,0x7a,0x7e,0x82,0x90,0x81,0x8c, +0x75,0x80,0x70,0x7c,0x81,0x82,0x8e,0x81,0x87,0x76,0x7c,0x6e,0x81,0x7d,0x89,0x87, +0x81,0x87,0x72,0x81,0x6a,0x82,0x7f,0x88,0x85,0x82,0x82,0x78,0x7f,0x6d,0x84,0x7a, +0x8d,0x7f,0x86,0x82,0x78,0x82,0x70,0x82,0x7b,0x89,0x81,0x8a,0x7f,0x80,0x7c,0x75, +0x81,0x78,0x90,0x7f,0x8e,0x7f,0x7e,0x7a,0x76,0x7f,0x7d,0x8e,0x82,0x8d,0x7a,0x81, +0x73,0x7a,0x7e,0x7e,0x90,0x80,0x8d,0x7a,0x7d,0x72,0x7c,0x7c,0x84,0x89,0x83,0x8a, +0x77,0x81,0x6c,0x81,0x7c,0x84,0x88,0x81,0x88,0x79,0x7f,0x6b,0x81,0x7a,0x89,0x81, +0x85,0x84,0x79,0x82,0x6d,0x83,0x7a,0x88,0x81,0x85,0x82,0x7d,0x7e,0x74,0x80,0x78, +0x8b,0x7d,0x8c,0x80,0x7f,0x7f,0x74,0x80,0x79,0x89,0x81,0x8e,0x7f,0x81,0x78,0x79, +0x7d,0x7b,0x8c,0x7f,0x91,0x7c,0x80,0x76,0x78,0x7d,0x7e,0x8a,0x84,0x8d,0x7b,0x81, +0x6f,0x7e,0x7a,0x81,0x89,0x81,0x8c,0x7a,0x80,0x6e,0x7e,0x7a,0x84,0x84,0x84,0x86, +0x7b,0x81,0x6d,0x83,0x78,0x86,0x82,0x82,0x85,0x7c,0x80,0x72,0x80,0x78,0x86,0x7e, +0x88,0x81,0x7f,0x80,0x73,0x81,0x76,0x87,0x7f,0x8a,0x82,0x81,0x7d,0x78,0x7d,0x79, +0x88,0x7f,0x91,0x7f,0x83,0x7a,0x78,0x7d,0x79,0x88,0x81,0x90,0x7f,0x82,0x76,0x7c, +0x7a,0x7d,0x88,0x80,0x90,0x7c,0x83,0x73,0x7d,0x79,0x7f,0x85,0x82,0x8b,0x7d,0x83, +0x72,0x7f,0x76,0x82,0x82,0x83,0x88,0x7d,0x82,0x71,0x80,0x76,0x84,0x81,0x86,0x85, +0x7f,0x81,0x72,0x80,0x76,0x85,0x7f,0x88,0x82,0x80,0x7f,0x75,0x7f,0x77,0x86,0x7f, +0x8c,0x80,0x82,0x7d,0x78,0x7e,0x78,0x86,0x7f,0x8f,0x7f,0x83,0x7a,0x7b,0x7d,0x79, +0x85,0x7f,0x92,0x7e,0x84,0x77,0x7d,0x7b,0x7c,0x85,0x80,0x8e,0x7e,0x84,0x76,0x7e, +0x78,0x7f,0x83,0x81,0x8a,0x7e,0x84,0x75,0x7f,0x75,0x81,0x81,0x83,0x87,0x7f,0x83, +0x75,0x7f,0x74,0x82,0x7f,0x86,0x84,0x80,0x82,0x75,0x7f,0x74,0x83,0x7e,0x88,0x82, +0x82,0x80,0x77,0x7f,0x75,0x84,0x7e,0x8c,0x81,0x84,0x7e,0x7a,0x7e,0x77,0x84,0x7e, +0x8f,0x80,0x85,0x7b,0x7c,0x7c,0x79,0x83,0x7f,0x90,0x7f,0x85,0x79,0x7e,0x7a,0x7c, +0x82,0x80,0x8c,0x7f,0x85,0x78,0x7f,0x78,0x7e,0x81,0x81,0x89,0x7f,0x85,0x78,0x7f, +0x75,0x80,0x7f,0x83,0x86,0x80,0x84,0x77,0x80,0x73,0x81,0x7e,0x85,0x84,0x81,0x82, +0x78,0x7f,0x73,0x82,0x7d,0x88,0x82,0x83,0x81,0x79,0x7f,0x74,0x82,0x7d,0x8b,0x81, +0x85,0x7e,0x7b,0x7d,0x77,0x82,0x7d,0x8c,0x80,0x87,0x7d,0x7d,0x7c,0x79,0x81,0x7e, +0x8d,0x7f,0x87,0x7b,0x7f,0x7a,0x7c,0x80,0x7f,0x8a,0x7f,0x87,0x7a,0x80,0x77,0x7e, +0x7f,0x81,0x87,0x80,0x86,0x7a,0x80,0x74,0x7f,0x7e,0x83,0x85,0x81,0x85,0x7a,0x80, +0x71,0x80,0x7d,0x85,0x83,0x82,0x83,0x7a,0x80,0x72,0x81,0x7c,0x88,0x81,0x84,0x81, +0x7b,0x7f,0x74,0x81,0x7c,0x89,0x80,0x86,0x7f,0x7d,0x7d,0x77,0x81,0x7d,0x89,0x80, +0x88,0x7e,0x7e,0x7c,0x7a,0x80,0x7d,0x8a,0x7f,0x88,0x7c,0x80,0x7a,0x7c,0x7f,0x7f, +0x89,0x80,0x88,0x7c,0x80,0x77,0x7e,0x7d,0x80,0x86,0x80,0x87,0x7b,0x81,0x74,0x7f, +0x7c,0x82,0x84,0x81,0x86,0x7c,0x80,0x71,0x80,0x7b,0x84,0x82,0x83,0x84,0x7c,0x80, +0x73,0x80,0x7b,0x86,0x81,0x85,0x82,0x7d,0x7f,0x76,0x80,0x7b,0x87,0x80,0x87,0x80, +0x7e,0x7e,0x78,0x80,0x7c,0x87,0x80,0x89,0x7e,0x80,0x7c,0x7b,0x7f,0x7d,0x87,0x80, +0x89,0x7e,0x81,0x7a,0x7d,0x7e,0x7e,0x87,0x80,0x89,0x7d,0x81,0x77,0x7e,0x7c,0x80, +0x84,0x81,0x88,0x7d,0x81,0x75,0x7f,0x7b,0x81,0x83,0x82,0x86,0x7d,0x81,0x74,0x80, +0x7a,0x83,0x81,0x83,0x84,0x7e,0x80,0x74,0x80,0x7a,0x84,0x80,0x85,0x82,0x7f,0x7f, +0x77,0x80,0x7a,0x85,0x80,0x87,0x80,0x80,0x7e,0x7a,0x7f,0x7b,0x85,0x7f,0x89,0x7f, +0x81,0x7c,0x7b,0x7e,0x7c,0x85,0x7f,0x8b,0x7e,0x82,0x7a,0x7d,0x7d,0x7d,0x85,0x80, +0x8a,0x7e,0x82,0x78,0x7e,0x7c,0x7f,0x83,0x81,0x88,0x7e,0x82,0x77,0x7f,0x7a,0x81, +0x82,0x82,0x85,0x7e,0x81,0x76,0x7f,0x79,0x82,0x80,0x83,0x83,0x7f,0x81,0x76,0x80, +0x79,0x83,0x7f,0x85,0x82,0x80,0x80,0x79,0x7f,0x79,0x83,0x7f,0x87,0x80,0x81,0x7e, +0x7b,0x7f,0x7a,0x83,0x7f,0x89,0x7f,0x82,0x7c,0x7c,0x7e,0x7b,0x83,0x7f,0x8c,0x7f, +0x83,0x7a,0x7e,0x7d,0x7d,0x83,0x80,0x89,0x7f,0x83,0x7a,0x7f,0x7b,0x7f,0x82,0x81, +0x87,0x7f,0x83,0x79,0x7f,0x79,0x80,0x80,0x82,0x85,0x7f,0x82,0x79,0x7f,0x78,0x81, +0x7f,0x83,0x83,0x80,0x81,0x79,0x7f,0x78,0x82,0x7f,0x85,0x82,0x81,0x80,0x7a,0x7f, +0x78,0x82,0x7e,0x87,0x80,0x82,0x7f,0x7c,0x7e,0x79,0x82,0x7e,0x89,0x80,0x83,0x7d, +0x7d,0x7d,0x7b,0x82,0x7f,0x8a,0x7f,0x84,0x7c,0x7e,0x7c,0x7d,0x81,0x7f,0x88,0x7f, +0x84,0x7b,0x7f,0x7b,0x7e,0x80,0x80,0x86,0x7f,0x83,0x7b,0x7f,0x79,0x7f,0x7f,0x82, +0x84,0x80,0x83,0x7a,0x80,0x77,0x80,0x7e,0x83,0x82,0x81,0x82,0x7b,0x7f,0x77,0x81, +0x7e,0x85,0x81,0x82,0x81,0x7b,0x7f,0x78,0x81,0x7e,0x87,0x80,0x83,0x7f,0x7d,0x7e, +0x79,0x81,0x7e,0x88,0x80,0x84,0x7e,0x7e,0x7d,0x7b,0x81,0x7e,0x88,0x7f,0xff,0x66, +0xb7,0x7f,0x4d,0x75,0x0,0x72,0x87,0x5c,0xb3,0xa7,0xcc,0xd6,0x22,0xde,0x20,0x62, +0x38,0x10,0xb1,0x3b,0xb3,0xcf,0xbb,0xd4,0x71,0x87,0x9b,0x0,0x7d,0xb,0x97,0x89, +0x6e,0xff,0x87,0xb5,0x8d,0x83,0x7d,0x0,0x46,0xaf,0x32,0xbe,0x70,0xe2,0xc7,0x55, +0xd5,0x4a,0x79,0x15,0x1b,0x8c,0x54,0x66,0xe0,0x8e,0xff,0x64,0xa7,0xa4,0x0,0x7e, +0x0,0xa7,0x57,0x76,0xf9,0xbb,0x96,0xb2,0x68,0xa1,0x5,0x3c,0xa2,0x22,0xb2,0x4a, +0xff,0xb6,0x7d,0xbd,0x82,0x77,0x53,0xa,0x8d,0x48,0x4c,0xc9,0x7f,0xff,0x3a,0xc1, +0x9a,0x36,0x62,0x15,0x7f,0x66,0x58,0xd1,0xc4,0x97,0xbe,0x64,0xd7,0x8,0x5d,0x6f, +0x32,0x8a,0x4f,0xc9,0xc1,0x7e,0xbe,0xa6,0x7d,0x77,0x0,0xb3,0x20,0x6f,0x8d,0x8c, +0xff,0x64,0xb7,0xab,0x66,0x38,0x30,0x60,0x87,0x1c,0xca,0x8e,0xb7,0xad,0x74,0xdc, +0x32,0x68,0x5c,0x5c,0x6a,0x5d,0x92,0xe1,0x66,0xe9,0x89,0x9a,0x82,0x0,0xb1,0x22, +0x76,0x57,0xa1,0xdb,0x87,0x91,0xcb,0x70,0x78,0x2d,0x61,0x8d,0x0,0xb2,0x77,0xc8, +0x82,0x8a,0xc9,0x69,0x59,0x6a,0x39,0x78,0x47,0x7a,0xee,0x67,0xfd,0x74,0xce,0x7a, +0x37,0x88,0x45,0x64,0x61,0x7c,0xc6,0x89,0x77,0xdc,0x72,0xa0,0x16,0x88,0x72,0x23, +0x84,0x7b,0xbb,0x95,0x87,0xcf,0x93,0x41,0x81,0x20,0x9d,0x19,0x82,0xac,0x7e,0xdc, +0x75,0xcc,0x8b,0x57,0x72,0x85,0x52,0x77,0x49,0xcd,0x74,0x91,0xc2,0x83,0xb1,0x26, +0x8b,0x6a,0x30,0x4c,0x85,0x95,0xb1,0x6a,0xeb,0x91,0x6b,0x7f,0x2f,0xaa,0x12,0x7b, +0x8b,0x98,0x9f,0x85,0xa7,0xb3,0x56,0x7d,0x68,0x61,0x74,0x33,0xda,0x6c,0x99,0xa0, +0xaa,0xad,0x5e,0x72,0x84,0x2f,0x5e,0x67,0x8a,0xb4,0x46,0xfa,0x86,0x96,0x63,0x5f, +0x8b,0x3d,0x60,0x8b,0x8f,0x97,0x84,0x97,0xd5,0x48,0x99,0x50,0x8d,0x5b,0x3b,0x9e, +0x77,0x8c,0x91,0xb3,0xb4,0x7b,0x5e,0xb5,0x24,0x7b,0x3a,0x94,0x9b,0x66,0xde,0x8d, +0xa6,0x5b,0x70,0x7f,0x5d,0x35,0x92,0x6a,0xa7,0x6d,0x9b,0xc4,0x61,0x9b,0x5a,0xa6, +0x57,0x3b,0x80,0x95,0x6d,0x9e,0x89,0xd4,0x7b,0x6c,0xa5,0x40,0x7f,0x2d,0x9f,0x86, +0x75,0xa9,0xa8,0x99,0x91,0x64,0x92,0x62,0x45,0x83,0x5f,0xab,0x3f,0xa1,0xab,0x88, +0x84,0x77,0x84,0x77,0x31,0x7d,0x89,0x6d,0x9d,0x74,0xfe,0x6b,0x8b,0x87,0x72,0x6f, +0x45,0x7b,0x89,0x70,0x85,0xac,0x92,0xa9,0x4c,0xb6,0x55,0x69,0x65,0x64,0x9a,0x60, +0x92,0xa5,0x99,0x73,0x84,0x78,0x97,0x17,0x89,0x66,0x7f,0x83,0x71,0xde,0x78,0x90, +0x83,0xa4,0x6e,0x58,0x62,0xa1,0x59,0x91,0x8d,0x9f,0xa6,0x5a,0xad,0x66,0x74,0x4e, +0x67,0x89,0x74,0x6d,0xb6,0x88,0xa5,0x77,0x86,0x9e,0x2c,0x84,0x5f,0x8f,0x5c,0x7a, +0xb2,0x98,0x79,0x98,0x81,0x87,0x57,0x5e,0xa3,0x55,0x90,0x70,0xc1,0x95,0x7b,0x93, +0x88,0x6b,0x67,0x53,0x89,0x73,0x54,0xb5,0x7c,0xbc,0x53,0x9f,0x8a,0x5f,0x70,0x6b, +0x86,0x6a,0x72,0x9b,0xa7,0x68,0xa6,0x74,0xaa,0x46,0x6e,0x82,0x61,0x7f,0x69,0xad, +0x99,0x83,0x8c,0xaf,0x6c,0x7b,0x3c,0x9c,0x66,0x6e,0x96,0x85,0xb7,0x60,0x98,0x8d, +0x75,0x51,0x78,0x75,0x83,0x55,0x9e,0x90,0x80,0x98,0x7b,0xb3,0x55,0x73,0x77,0x73, +0x65,0x74,0x89,0xb0,0x72,0x9f,0x91,0x80,0x7a,0x41,0xa6,0x62,0x78,0x75,0xa1,0x9f, +0x7f,0x7c,0xa3,0x76,0x70,0x70,0x76,0x8c,0x36,0x9c,0x7d,0x96,0x77,0x8d,0x9c,0x79, +0x68,0x7d,0x69,0x6d,0x6f,0x78,0xc3,0x66,0xac,0x7e,0xa1,0x6f,0x5d,0x87,0x70,0x72, +0x6c,0x99,0x96,0x88,0x6b,0xbc,0x71,0x86,0x5b,0x88,0x84,0x55,0x87,0x7e,0x96,0x74, +0x89,0x9b,0x8e,0x4f,0x89,0x5a,0x83,0x5a,0x7b,0xa0,0x76,0x9f,0x7f,0xac,0x79,0x69, +0x78,0x91,0x61,0x7d,0x74,0xa3,0x7b,0x79,0xa6,0x7d,0x8b,0x54,0x91,0x7c,0x62,0x67, +0x95,0x82,0x91,0x73,0xaa,0x8e,0x69,0x85,0x62,0x92,0x42,0x7f,0x87,0x8d,0x82,0x8d, +0x90,0x92,0x68,0x7a,0x89,0x66,0x80,0x63,0xc1,0x71,0x87,0x8d,0x96,0x83,0x6d,0x7f, +0x85,0x60,0x63,0x8b,0x7b,0x97,0x5a,0xb5,0x83,0x82,0x74,0x78,0x89,0x5e,0x73,0x82, +0x90,0x74,0x8b,0x87,0xa9,0x56,0x86,0x76,0x7d,0x70,0x64,0x9a,0x7b,0x82,0x88,0xa5, +0x88,0x7a,0x6e,0xa0,0x57,0x7a,0x72,0x88,0x8a,0x69,0xa3,0x87,0x8a,0x64,0x85,0x81, +0x75,0x56,0x92,0x79,0x8a,0x79,0x8f,0xa7,0x66,0x87,0x72,0x8f,0x5f,0x6b,0x82,0x94, +0x6e,0x91,0x87,0x9a,0x79,0x6d,0x9f,0x61,0x82,0x62,0xa4,0x7c,0x7a,0x89,0x97,0x83, +0x7f,0x7d,0x87,0x7c,0x52,0x8d,0x6f,0x92,0x5b,0x95,0x97,0x80,0x7b,0x7e,0x85,0x6e, +0x61,0x7d,0x99,0x69,0x91,0x7c,0xae,0x6a,0x7c,0x88,0x79,0x79,0x68,0x8b,0x82,0x78, +0x7b,0xa2,0x80,0x8f,0x6d,0x9e,0x75,0x6e,0x78,0x78,0x8a,0x6a,0x8a,0x97,0x8b,0x62, +0x88,0x7a,0x86,0x4c,0x88,0x7f,0x7d,0x82,0x7e,0xa9,0x73,0x80,0x80,0x95,0x6c,0x78, +0x74,0x96,0x69,0x82,0x8a,0x88,0x8e,0x67,0xa1,0x75,0x7a,0x66,0x89,0x7b,0x7b,0x73, +0x9f,0x86,0x83,0x83,0x7e,0x8f,0x47,0x87,0x76,0x89,0x68,0x85,0x95,0x86,0x76,0x84, +0x89,0x78,0x77,0x70,0xa5,0x67,0x85,0x7b,0x9c,0x82,0x79,0x8d,0x86,0x77,0x6e,0x7a, +0x7f,0x7b,0x65,0xa3,0x80,0x91,0x6f,0x91,0x85,0x69,0x78,0x7d,0x87,0x6f,0x7f,0x8e, +0x93,0x62,0x90,0x7c,0x8e,0x66,0x7a,0x89,0x74,0x7c,0x78,0x99,0x84,0x7e,0x81,0xa4, +0x6f,0x7f,0x65,0x8f,0x70,0x72,0x8f,0x84,0x92,0x68,0x94,0x82,0x7b,0x60,0x8b,0x78, +0x81,0x6e,0x91,0x8e,0x73,0x8d,0x7a,0x98,0x5f,0x7e,0x7e,0x84,0x6a,0x7f,0x85,0x91, +0x77,0x83,0x95,0x78,0x82,0x64,0xa3,0x70,0x78,0x7c,0x93,0x88,0x7c,0x85,0x8e,0x7c, +0x6b,0x83,0x79,0x85,0x5b,0x94,0x84,0x85,0x7a,0x88,0x8b,0x76,0x74,0x82,0x82,0x6f, +0x7d,0x7d,0x9c,0x68,0x8c,0x83,0x8f,0x76,0x72,0x88,0x7b,0x73,0x75,0x96,0x85,0x84, +0x75,0xa7,0x75,0x7f,0x70,0x85,0x7f,0x6b,0x88,0x84,0x8a,0x6d,0x8b,0x84,0x86,0x60, +0x8c,0x73,0x81,0x71,0x80,0x94,0x70,0x89,0x7e,0x9b,0x71,0x7c,0x7d,0x8f,0x67,0x7d, +0x80,0x8c,0x7f,0x75,0xa0,0x7b,0x84,0x6a,0x93,0x7a,0x73,0x76,0x90,0x83,0x82,0x7f, +0x8c,0x88,0x67,0x87,0x75,0x88,0x5d,0x84,0x86,0x81,0x79,0x86,0x8a,0x81,0x77,0x7f, +0x91,0x6d,0x7d,0x75,0x9c,0x73,0x81,0x8b,0x8d,0x7c,0x75,0x82,0x81,0x71,0x6e,0x93, +0x7d,0x8a,0x6e,0x9e,0x7e,0x7c,0x78,0x81,0x85,0x6f,0x7d,0x83,0x89,0x67,0x89,0x80, +0x92,0x68,0x88,0x81,0x7c,0x77,0x75,0x91,0x77,0x81,0x83,0xa1,0x79,0x80,0x76,0x91, +0x69,0x79,0x82,0x83,0x87,0x6f,0x97,0x7f,0x82,0x6d,0x8c,0x7f,0x7c,0x6e,0x8c,0x81, +0x7b,0x7f,0x82,0x95,0x69,0x86,0x7e,0x87,0x66,0x79,0x82,0x85,0x74,0x88,0x8b,0x85, +0x7d,0x77,0x96,0x6e,0x7d,0x76,0x95,0x7c,0x7d,0x84,0x8d,0x7c,0x79,0x82,0x82,0x7f, +0x64,0x8f,0x7b,0x86,0x6b,0x8f,0x89,0x7d,0x7b,0x85,0x86,0x72,0x76,0x7e,0x8e,0x68, +0x8a,0x7f,0x95,0x71,0x80,0x86,0x7b,0x79,0x74,0x8d,0x7d,0x81,0x7b,0xa1,0x78,0x84, +0x76,0x8e,0x7a,0x74,0x84,0x7f,0x85,0x6c,0x8a,0x86,0x84,0x6b,0x8b,0x7f,0x81,0x6b, +0x84,0x85,0x74,0x81,0x7f,0x98,0x73,0x81,0x81,0x8a,0x6d,0x7b,0x7d,0x89,0x76,0x7f, +0x8d,0x80,0x83,0x73,0x97,0x79,0x7b,0x77,0x8d,0x7d,0x7c,0x7b,0x8e,0x80,0x78,0x85, +0x81,0x87,0x5e,0x87,0x7d,0x81,0x6f,0x87,0x88,0x83,0x7a,0x85,0x89,0x74,0x7c,0x77, +0x94,0x6e,0x85,0x80,0x90,0x7b,0x7b,0x86,0x81,0x7a,0x73,0x8b,0x7d,0x81,0x71,0x9a, +0x7b,0x83,0x78,0x8a,0x83,0x72,0x80,0x7f,0x83,0x6b,0x84,0x83,0x8a,0x6a,0x8a,0x81, +0x82,0x74,0x7b,0x89,0x75,0x80,0x7e,0x95,0x7c,0x7f,0x7f,0x91,0x72,0x7d,0x7b,0x87, +0x7b,0x76,0x8d,0x7f,0x82,0x72,0x90,0x81,0x7d,0x73,0x8c,0x7c,0x7c,0x78,0x88,0x88, +0x75,0x87,0x80,0x8a,0x66,0x80,0x7f,0x82,0x72,0x84,0x85,0x87,0x7a,0x80,0x8e,0x76, +0x80,0x74,0x98,0x75,0x7e,0x7e,0x8b,0x7b,0x7b,0x84,0x85,0x7f,0x70,0x8b,0x7a,0x82, +0x6b,0x90,0x80,0x80,0x7d,0x87,0x87,0x76,0x7c,0x7e,0x85,0x6c,0x84,0x7f,0x8f,0x6e, +0x85,0x83,0x81,0x79,0x78,0x8a,0x7b,0x7c,0x7b,0x94,0x7b,0x7f,0x7b,0x93,0x7a,0x7d, +0x80,0x82,0x7f,0x71,0x87,0x81,0x82,0x73,0x8b,0x83,0x81,0x6f,0x89,0x7c,0x7b,0x7a, +0x82,0x8d,0x74,0x83,0x80,0x8b,0x70,0x7f,0x7f,0x89,0x72,0x81,0x84,0x83,0x7c,0x79, +0x93,0x7b,0x81,0x77,0x93,0x7a,0x7b,0x79,0x89,0x7d,0x7d,0x84,0x85,0x85,0x6c,0x88, +0x78,0x83,0x6b,0x87,0x83,0x80,0x7b,0x84,0x87,0x78,0x7d,0x7d,0x8e,0x70,0x82,0x7d, +0x8e,0x73,0x7e,0x87,0x83,0x7d,0x79,0x89,0x7e,0x7b,0x75,0x91,0x7b,0x82,0x79,0x8f, +0x81,0x7a,0x7f,0x80,0x82,0x72,0x82,0x82,0x84,0x6d,0x88,0x81,0x84,0x72,0x84,0x83, +0x7b,0x7c,0x7e,0x8d,0x77,0x7e,0x81,0x8f,0x76,0x81,0x7e,0x8a,0x75,0x7b,0x83,0x80, +0x80,0x75,0x91,0x7f,0x81,0x76,0x8e,0x7b,0x7d,0x76,0x88,0x81,0x7a,0x83,0x81,0x89, +0x6b,0x85,0x7e,0x84,0x70,0x82,0x83,0x81,0x79,0x82,0x88,0x7b,0x80,0x7b,0x93,0x74, +0x80,0x7c,0x8b,0x79,0x7c,0x84,0x85,0x80,0x78,0x89,0x7e,0x7f,0x70,0x8c,0x7d,0x81, +0x79,0x89,0x85,0x7a,0x7e,0x81,0x84,0x73,0x7f,0x81,0x87,0x6d,0x85,0x80,0x85,0x77, +0x80,0x86,0x7d,0x7c,0x7c,0x8b,0x7a,0x7e,0x7d,0x93,0x79,0x81,0x7d,0x88,0x7a,0x77, +0x84,0x80,0x81,0x73,0x8a,0x82,0x81,0x73,0x8a,0x7d,0x7f,0x77,0x85,0x85,0x77,0x82, +0x7f,0x8a,0x70,0x82,0x80,0x87,0x73,0x81,0x80,0x82,0x7a,0x7c,0x8b,0x7c,0x83,0x7a, +0x95,0x79,0x7d,0x7b,0x88,0x7c,0x7c,0x83,0x86,0x81,0x75,0x87,0x7e,0x82,0x6f,0x88, +0x81,0x80,0x78,0x85,0x83,0x7b,0x7d,0x81,0x8a,0x75,0x81,0x7f,0x89,0x72,0x80,0x80, +0x86,0x79,0x7e,0x86,0x80,0x7d,0x79,0x8d,0x7c,0x7f,0x7a,0x8f,0x7c,0x7e,0x7c,0x86, +0x7e,0x79,0x83,0x82,0x83,0x70,0x86,0x7f,0x82,0x71,0x86,0x81,0x80,0x7b,0x82,0x87, +0x77,0x7f,0x7d,0x8c,0x75,0x82,0x7f,0x8a,0x76,0x7e,0x82,0x81,0x7d,0x79,0x8b,0x7e, +0x80,0x77,0x8f,0x7c,0x7f,0x7a,0x88,0x80,0x7b,0x81,0x81,0x83,0x73,0x84,0x80,0x84, +0x70,0x85,0x81,0x81,0x78,0x81,0x84,0x7c,0x7e,0x7f,0x8c,0x78,0x7f,0x7e,0x8a,0x77, +0x7f,0x81,0x86,0x7c,0x7b,0x85,0x80,0x7e,0x77,0x8b,0x7f,0x80,0x78,0x8b,0x7e,0x7d, +0x7b,0x84,0x82,0x79,0x82,0x81,0x85,0x6e,0x83,0x7f,0x84,0x75,0x84,0x82,0x81,0x7b, +0x7e,0x88,0x7a,0x7f,0x7c,0x8f,0x79,0x81,0x7d,0x89,0x79,0x7c,0x82,0x82,0x80,0x77, +0x89,0x7e,0x81,0x75,0x8a,0x7e,0x7f,0x7a,0x86,0x82,0x7a,0x7f,0x80,0x86,0x73,0x82, +0x80,0x86,0x73,0x82,0x81,0x81,0x7a,0x7f,0x86,0x7e,0x7e,0x7d,0x8c,0x7a,0x7e,0x7c, +0x8b,0x7b,0x7e,0x80,0x85,0x7e,0x79,0x84,0x80,0x80,0x75,0x88,0x80,0x81,0x76,0x87, +0x80,0x7e,0x7c,0x83,0x85,0x79,0x80,0x7f,0x87,0x73,0x82,0x7f,0x86,0x77,0x81,0x83, +0x80,0x7c,0x7c,0x89,0x7c,0x80,0x7b,0x90,0x7b,0x7f,0x7c,0x87,0x7d,0x7c,0x82,0x82, +0x82,0x75,0x86,0x7e,0x82,0x73,0x87,0x80,0x80,0x7a,0x83,0x83,0x79,0x7f,0x7f,0x89, +0x76,0x81,0x7f,0x87,0x75,0x7f,0x81,0x83,0x7c,0x7d,0x86,0x7f,0x7f,0x7a,0x8c,0x7d, +0x7f,0x7c,0x89,0x7e,0x7d,0x7e,0x83,0x80,0x79,0x82,0x81,0x82,0x73,0x85,0x80,0x81, +0x76,0x84,0x81,0x7f,0x7d,0x81,0x86,0x79,0x7f,0x7e,0x89,0x77,0x81,0x7f,0x88,0x7a, +0x7e,0x82,0x81,0x7e,0x7a,0x8a,0x7e,0x81,0x79,0x8c,0x7c,0x7f,0x7b,0x85,0x80,0x7b, +0x81,0x81,0x83,0x74,0x83,0x7f,0x83,0x74,0x84,0x81,0x80,0x7b,0x7f,0x84,0x7b,0x7f, +0x7e,0x8b,0x79,0x80,0x7e,0x88,0x79,0x7e,0x81,0x83,0x7e,0x7b,0x86,0x7f,0x7f,0x78, +0x89,0x7f,0x80,0x7b,0x87,0x80,0x7d,0x7d,0x82,0x82,0x79,0x81,0x81,0x84,0x72,0x82, +0x80,0x82,0x78,0x82,0x83,0x80,0x7d,0x7e,0x87,0x7b,0x7f,0x7d,0x8b,0x7a,0x80,0x7f, +0x86,0x7b,0x7c,0x82,0x81,0x80,0x78,0x87,0x7f,0x81,0x77,0x88,0x7e,0x7f,0x7b,0x84, +0x82,0x7b,0x80,0x7f,0x85,0x74,0x82,0x7f,0x85,0x77,0x81,0x81,0x81,0x7c,0x7e,0x85, +0x7d,0x80,0x7d,0x8c,0x7b,0x7f,0x7d,0x87,0x7c,0x7e,0x81,0x82,0x80,0x79,0x84,0x7f, +0x80,0x77,0x86,0x80,0x80,0x79,0x84,0x81,0x7d,0x7d,0x81,0x85,0x79,0x80,0x80,0x85, +0x76,0x80,0x80,0x84,0x7a,0x80,0x83,0x80,0x7d,0x7c,0x87,0x7d,0x7f,0x7c,0x8b,0x7d, +0x7f,0x7d,0x84,0x7d,0x7c,0x82,0x81,0x81,0x76,0x85,0x7f,0x81,0x75,0x85,0x80,0x80, +0x7c,0x82,0x83,0x7a,0x7f,0x7e,0x87,0x78,0x81,0x7f,0x86,0x79,0x7f,0x81,0x81,0x7d, +0x7c,0x87,0x7e,0x80,0x7b,0x8a,0x7d,0x7f,0x7c,0x86,0x7f,0x7d,0x80,0x81,0x81,0x78, +0x82,0x80,0x82,0x75,0x84,0x80,0x80,0x7a,0x82,0x82,0x7d,0x7e,0x80,0x86,0x7a,0x7f, +0x7e,0x86,0x79,0x80,0x80,0x84,0x7c,0x7e,0x83,0x80,0x7e,0x7b,0x88,0x7e,0x80,0x7b, +0x88,0x7e,0x7e,0x7c,0x83,0x80,0x7c,0x81,0x81,0x83,0x75,0x83,0x7f,0x82,0x77,0x83, +0x81,0x80,0x7c,0x7f,0x84,0x7b,0x7f,0x7e,0x89,0x7a,0x80,0x7e,0x86,0x7b,0x7e,0x81, +0x81,0x7f,0x7b,0x86,0x7f,0x80,0x79,0x87,0x7e,0x7f,0x7c,0x84,0x81,0x7d,0x7f,0x80, +0x83,0x78,0x81,0x80,0x83,0x76,0x81,0x80,0x81,0x7b,0x80,0x83,0x7e,0x7e,0x7e,0x87, +0x7c,0x7e,0x7e,0x88,0x7c,0x7f,0x80,0x84,0x7d,0x7c,0x82,0x80,0x80,0x79,0x86,0x7f, +0x80,0x79,0x86,0x7f,0x7f,0x7d,0x82,0x82,0x7b,0x80,0x80,0x84,0x76,0x81,0x7f,0x84, +0x79,0x81,0x81,0x80,0x7d,0x7e,0x85,0x7d,0x80,0x7d,0x8b,0x7c,0xff,0x66,0xbd,0x80, +0x4e,0x76,0x0,0x6b,0x81,0x5c,0xb6,0xa8,0xc9,0xdc,0x23,0xdd,0x17,0x65,0x35,0x10, +0xb0,0x42,0xb8,0xca,0xba,0xd1,0x74,0x7c,0x9e,0x0,0x88,0x8,0x98,0x89,0x6b,0xff, +0x82,0xc0,0x8a,0x8c,0x79,0x4,0x3f,0xad,0x2e,0xc0,0x72,0xde,0xd0,0x55,0xd9,0x3d, +0x7c,0x11,0x1c,0x87,0x59,0x6c,0xdf,0x8e,0xff,0x68,0x9c,0xa5,0x0,0x86,0x0,0xa8, +0x58,0x75,0xf5,0xb5,0x99,0xb2,0x6a,0xa0,0xb,0x3c,0x9d,0x1e,0xb6,0x4a,0xff,0xb9, +0x82,0xbe,0x7f,0x74,0x54,0x6,0x89,0x4a,0x52,0xcb,0x79,0xff,0x38,0xc1,0x92,0x39, +0x64,0x1b,0x7e,0x68,0x5b,0xcb,0xc3,0x93,0xc6,0x5f,0xdf,0x8,0x62,0x6a,0x2f,0x8b, +0x4d,0xca,0xbe,0x8b,0xbd,0xa9,0x75,0x7c,0x0,0xb1,0x1f,0x72,0x93,0x88,0xff,0x60, +0xb9,0x9c,0x68,0x38,0x34,0x5e,0x89,0x20,0xc6,0x8c,0xb1,0xb3,0x70,0xdf,0x33,0x70, +0x59,0x58,0x69,0x5b,0x91,0xdf,0x6d,0xeb,0x8b,0x96,0x85,0x0,0xac,0x1f,0x7b,0x5d, +0xa2,0xdb,0x89,0x90,0xc7,0x6c,0x7a,0x2f,0x61,0x8f,0x1,0xb3,0x6f,0xc8,0x80,0x8c, +0xc5,0x70,0x5c,0x6c,0x36,0x76,0x4b,0x76,0xee,0x65,0xff,0x72,0xd0,0x77,0x39,0x82, +0x41,0x67,0x62,0x81,0xc1,0x91,0x74,0xdc,0x68,0xa5,0x15,0x88,0x73,0x26,0x89,0x74, +0xbc,0x8e,0x8b,0xc7,0x97,0x42,0x85,0x1e,0x9b,0x1b,0x7b,0xab,0x7a,0xe6,0x74,0xce, +0x8a,0x5d,0x6f,0x7f,0x51,0x79,0x4c,0xcb,0x79,0x91,0xc2,0x7c,0xb1,0x26,0x8a,0x6a, +0x34,0x51,0x83,0x92,0xb1,0x6a,0xe9,0x90,0x70,0x83,0x2e,0xa9,0x11,0x7b,0x84,0x97, +0xa0,0x8b,0xa5,0xb6,0x58,0x7d,0x63,0x5e,0x7a,0x32,0xdd,0x6a,0xa2,0x9d,0xaa,0xa7, +0x60,0x70,0x82,0x33,0x5f,0x6b,0x81,0xb7,0x3e,0xfb,0x7f,0x9c,0x66,0x5f,0x8c,0x3c, +0x64,0x80,0x8f,0x94,0x8c,0x93,0xd8,0x49,0x9b,0x4d,0x87,0x5d,0x39,0xa0,0x75,0x95, +0x90,0xb2,0xb0,0x7e,0x5d,0xb3,0x27,0x7e,0x3f,0x91,0x9c,0x64,0xdd,0x86,0xa7,0x5e, +0x72,0x7f,0x5e,0x37,0x8f,0x66,0xa7,0x6f,0x9b,0xc4,0x65,0x9f,0x57,0xa2,0x56,0x3d, +0x7d,0x97,0x6f,0xa4,0x87,0xd3,0x79,0x6b,0xa2,0x3e,0x86,0x2e,0xa2,0x83,0x7a,0xa2, +0xa7,0x96,0x94,0x66,0x90,0x66,0x44,0x86,0x53,0xad,0x3c,0xa5,0xa8,0x8c,0x87,0x76, +0x83,0x72,0x35,0x78,0x8c,0x6c,0xa6,0x71,0xfe,0x69,0x8b,0x85,0x6e,0x73,0x45,0x80, +0x85,0x75,0x83,0xaa,0x8d,0xac,0x4e,0xb5,0x59,0x6a,0x67,0x5e,0x9a,0x5f,0x94,0xa2, +0x9a,0x78,0x86,0x75,0x94,0x17,0x87,0x64,0x80,0x87,0x74,0xdd,0x78,0x92,0x81,0xa0, +0x6e,0x5d,0x61,0xa3,0x5a,0x93,0x88,0x9c,0xa6,0x5b,0xae,0x64,0x7a,0x4d,0x68,0x81, +0x76,0x6b,0xb6,0x87,0xa8,0x7b,0x82,0x9e,0x29,0x87,0x57,0x92,0x5c,0x80,0xb0,0x98, +0x7a,0x96,0x80,0x83,0x5d,0x5c,0xa8,0x53,0x97,0x6d,0xbf,0x93,0x7b,0x94,0x86,0x72, +0x67,0x55,0x81,0x75,0x52,0xb4,0x79,0xbf,0x58,0x9e,0x8a,0x5c,0x72,0x66,0x86,0x6b, +0x76,0x9b,0xa8,0x69,0xa5,0x70,0xa7,0x47,0x6f,0x83,0x62,0x83,0x69,0xaa,0x97,0x85, +0x8b,0xaf,0x6d,0x80,0x3c,0x9b,0x63,0x6f,0x93,0x82,0xb8,0x63,0x9a,0x89,0x77,0x4e, +0x78,0x6f,0x86,0x56,0xa1,0x90,0x82,0x9b,0x76,0xb3,0x52,0x77,0x72,0x78,0x65,0x78, +0x86,0xae,0x72,0x9d,0x92,0x7d,0x84,0x40,0xa8,0x5e,0x7c,0x72,0x9f,0x9f,0x81,0x80, +0xa1,0x79,0x6e,0x71,0x6e,0x8d,0x37,0x9e,0x7c,0x98,0x7a,0x8b,0x9a,0x76,0x6b,0x7a, +0x6a,0x6e,0x74,0x76,0xc1,0x66,0xab,0x7c,0xa0,0x72,0x5f,0x87,0x6f,0x73,0x6b,0x95, +0x94,0x8b,0x6e,0xbd,0x71,0x89,0x59,0x86,0x80,0x56,0x87,0x7f,0x98,0x76,0x8b,0x94, +0x8e,0x4d,0x8a,0x57,0x88,0x5b,0x7c,0x9e,0x75,0xa2,0x7b,0xac,0x77,0x72,0x76,0x93, +0x60,0x7f,0x71,0xa0,0x7d,0x79,0xaa,0x7a,0x91,0x52,0x91,0x77,0x65,0x67,0x95,0x83, +0x92,0x77,0xa6,0x8f,0x66,0x87,0x5c,0x94,0x44,0x81,0x85,0x8c,0x83,0x89,0x8f,0x90, +0x6d,0x79,0x8a,0x66,0x83,0x61,0xbc,0x71,0x89,0x8f,0x95,0x85,0x6f,0x7e,0x82,0x5f, +0x63,0x8a,0x7b,0x9b,0x5d,0xb5,0x80,0x83,0x72,0x76,0x88,0x61,0x75,0x82,0x91,0x74, +0x8b,0x82,0xaa,0x56,0x8a,0x74,0x7f,0x71,0x64,0x97,0x79,0x86,0x86,0xa8,0x87,0x81, +0x6c,0xa0,0x54,0x7b,0x71,0x86,0x8d,0x6a,0xa7,0x82,0x8d,0x61,0x85,0x7c,0x78,0x58, +0x92,0x7a,0x89,0x7c,0x88,0xa8,0x65,0x8c,0x6f,0x91,0x60,0x6c,0x80,0x90,0x6f,0x90, +0x89,0x99,0x7e,0x6d,0x9f,0x5f,0x84,0x61,0xa2,0x7d,0x7c,0x8b,0x96,0x84,0x7f,0x7b, +0x83,0x7c,0x54,0x8e,0x6e,0x93,0x5b,0x94,0x94,0x81,0x7c,0x7f,0x85,0x71,0x63,0x7b, +0x97,0x68,0x93,0x79,0xb0,0x6b,0x80,0x86,0x79,0x78,0x67,0x8a,0x80,0x7d,0x7b,0xa5, +0x7d,0x92,0x69,0x9d,0x73,0x6f,0x7a,0x76,0x8d,0x69,0x8c,0x8e,0x8c,0x61,0x8a,0x78, +0x89,0x4e,0x87,0x7e,0x79,0x84,0x7a,0xaa,0x73,0x85,0x7e,0x95,0x6c,0x77,0x73,0x94, +0x6c,0x83,0x8c,0x86,0x92,0x66,0xa0,0x73,0x7c,0x67,0x89,0x7d,0x7c,0x74,0x9c,0x85, +0x83,0x83,0x7c,0x90,0x4b,0x88,0x73,0x88,0x67,0x85,0x93,0x88,0x78,0x87,0x88,0x78, +0x78,0x6e,0xa3,0x66,0x89,0x79,0x9e,0x82,0x7b,0x8a,0x84,0x77,0x6e,0x7b,0x7d,0x80, +0x65,0xa3,0x7b,0x93,0x6d,0x91,0x85,0x6b,0x7b,0x7a,0x88,0x6c,0x81,0x88,0x94,0x62, +0x92,0x7a,0x8e,0x67,0x78,0x88,0x72,0x80,0x77,0x9c,0x84,0x83,0x7f,0xa2,0x6e,0x7f, +0x65,0x8e,0x75,0x72,0x91,0x80,0x93,0x67,0x93,0x81,0x7d,0x64,0x8b,0x78,0x81,0x6f, +0x8f,0x8d,0x74,0x8f,0x7a,0x98,0x60,0x7e,0x7b,0x82,0x6a,0x80,0x84,0x93,0x79,0x84, +0x92,0x77,0x84,0x63,0xa4,0x6f,0x7c,0x7b,0x93,0x86,0x7d,0x82,0x8c,0x7d,0x6d,0x85, +0x76,0x88,0x59,0x94,0x80,0x87,0x7a,0x89,0x8c,0x77,0x76,0x7e,0x82,0x6c,0x80,0x7a, +0x9f,0x68,0x8e,0x81,0x8d,0x76,0x70,0x89,0x79,0x79,0x74,0x98,0x83,0x86,0x74,0xa5, +0x75,0x80,0x74,0x84,0x81,0x6a,0x88,0x80,0x8a,0x6e,0x8b,0x84,0x87,0x61,0x8b,0x71, +0x7f,0x72,0x7e,0x94,0x72,0x8b,0x7d,0x9a,0x71,0x7c,0x7b,0x8f,0x69,0x7f,0x7f,0x8b, +0x80,0x75,0x9d,0x7a,0x86,0x6b,0x94,0x7a,0x76,0x75,0x8f,0x80,0x83,0x7f,0x8c,0x89, +0x68,0x88,0x70,0x89,0x5a,0x85,0x83,0x84,0x7a,0x87,0x89,0x80,0x79,0x7b,0x91,0x6c, +0x83,0x73,0x9d,0x73,0x82,0x89,0x8a,0x7d,0x75,0x84,0x7f,0x75,0x6d,0x92,0x7a,0x8c, +0x6e,0x9d,0x7f,0x7d,0x7a,0x7e,0x86,0x6d,0x7e,0x80,0x8a,0x69,0x8a,0x7f,0x91,0x68, +0x86,0x80,0x7b,0x79,0x75,0x91,0x78,0x83,0x82,0x9e,0x79,0x81,0x76,0x91,0x6a,0x7a, +0x81,0x82,0x86,0x6f,0x96,0x7f,0x85,0x6e,0x8c,0x7c,0x7d,0x6c,0x8c,0x80,0x7d,0x81, +0x81,0x96,0x68,0x87,0x7a,0x88,0x65,0x7c,0x81,0x87,0x75,0x87,0x89,0x83,0x80,0x75, +0x98,0x6d,0x81,0x74,0x94,0x7a,0x7d,0x84,0x8b,0x7f,0x79,0x85,0x7f,0x81,0x63,0x8e, +0x78,0x87,0x6c,0x8f,0x89,0x7d,0x7d,0x81,0x86,0x71,0x78,0x7c,0x8f,0x6a,0x8b,0x7d, +0x93,0x72,0x7f,0x86,0x7b,0x7b,0x74,0x8d,0x7c,0x81,0x7a,0x9f,0x79,0x86,0x76,0x8e, +0x7a,0x74,0x82,0x7d,0x86,0x6e,0x8b,0x85,0x86,0x6b,0x8b,0x7c,0x82,0x6b,0x85,0x84, +0x76,0x83,0x7d,0x97,0x71,0x83,0x7e,0x8b,0x6d,0x7e,0x7c,0x89,0x76,0x7e,0x8c,0x7f, +0x87,0x72,0x99,0x78,0x7e,0x75,0x8c,0x7c,0x7d,0x7c,0x8d,0x83,0x78,0x86,0x7c,0x88, +0x5d,0x88,0x7b,0x83,0x71,0x86,0x88,0x80,0x7b,0x82,0x8a,0x74,0x7f,0x77,0x94,0x6e, +0x84,0x7e,0x8f,0x7c,0x7c,0x87,0x81,0x7b,0x73,0x8a,0x7c,0x82,0x71,0x9a,0x7c,0x84, +0x78,0x89,0x82,0x73,0x80,0x7e,0x84,0x6d,0x85,0x81,0x8a,0x6a,0x8a,0x7f,0x83,0x75, +0x7c,0x88,0x76,0x81,0x7c,0x95,0x7b,0x82,0x7e,0x93,0x72,0x7f,0x79,0x86,0x7b,0x75, +0x8e,0x7e,0x86,0x72,0x90,0x7e,0x7e,0x72,0x8c,0x7c,0x7d,0x7a,0x86,0x89,0x73,0x88, +0x7c,0x8b,0x66,0x82,0x7e,0x82,0x73,0x82,0x84,0x85,0x7c,0x7f,0x8f,0x76,0x82,0x73, +0x97,0x75,0x7e,0x7e,0x8b,0x7e,0x7c,0x85,0x84,0x7f,0x70,0x8a,0x79,0x84,0x6d,0x8f, +0x80,0x80,0x7d,0x85,0x86,0x77,0x7d,0x7e,0x85,0x6d,0x84,0x7d,0x8e,0x6e,0x86,0x82, +0x83,0x7a,0x78,0x89,0x7a,0x7e,0x7a,0x95,0x7b,0x83,0x7a,0x93,0x78,0x7d,0x7e,0x81, +0x80,0x72,0x89,0x7f,0x84,0x72,0x8b,0x80,0x83,0x6f,0x89,0x7d,0x7c,0x7c,0x7f,0x8d, +0x72,0x85,0x7e,0x8c,0x70,0x80,0x7e,0x87,0x73,0x7f,0x84,0x82,0x80,0x78,0x93,0x7a, +0x83,0x76,0x92,0x7a,0x7b,0x7b,0x89,0x7f,0x7d,0x83,0x83,0x85,0x6d,0x88,0x79,0x84, +0x6c,0x87,0x82,0x80,0x7b,0x84,0x87,0x79,0x7e,0x7d,0x8d,0x6f,0x83,0x7b,0x8e,0x74, +0x80,0x86,0x84,0x7d,0x79,0x87,0x7d,0x7d,0x75,0x92,0x7b,0x84,0x78,0x8e,0x7f,0x7b, +0x7f,0x80,0x83,0x72,0x83,0x7f,0x85,0x6b,0x88,0x7f,0x86,0x73,0x84,0x83,0x7a,0x7d, +0x7c,0x8d,0x77,0x82,0x80,0x8f,0x76,0x81,0x7d,0x89,0x76,0x7b,0x85,0x7f,0x83,0x75, +0x91,0x7e,0x82,0x76,0x8d,0x7c,0x7e,0x77,0x86,0x81,0x79,0x83,0x7f,0x89,0x6d,0x86, +0x7d,0x84,0x70,0x81,0x81,0x81,0x7a,0x82,0x88,0x7b,0x81,0x7a,0x92,0x73,0x81,0x7b, +0x8b,0x79,0x7d,0x83,0x84,0x7f,0x78,0x88,0x7e,0x81,0x70,0x8d,0x7c,0x82,0x77,0x89, +0x84,0x7b,0x7f,0x81,0x85,0x73,0x80,0x7d,0x88,0x6c,0x86,0x7f,0x86,0x78,0x80,0x85, +0x7b,0x7e,0x7b,0x8c,0x7a,0x81,0x7c,0x93,0x79,0x81,0x7d,0x87,0x7c,0x77,0x85,0x7e, +0x82,0x72,0x8a,0x81,0x82,0x74,0x8a,0x7e,0x7f,0x78,0x83,0x85,0x77,0x83,0x7e,0x8b, +0x71,0x83,0x7f,0x86,0x73,0x80,0x80,0x82,0x7b,0x7d,0x8b,0x7c,0x83,0x79,0x94,0x79, +0x7e,0x7b,0x88,0x7c,0x7d,0x81,0x85,0x81,0x76,0x87,0x7d,0x83,0x6e,0x88,0x7e,0x81, +0x77,0x85,0x83,0x7c,0x7e,0x7f,0x8a,0x74,0x82,0x7d,0x8a,0x72,0x81,0x80,0x86,0x7a, +0x7d,0x85,0x7f,0x7f,0x79,0x8e,0x7b,0x81,0x79,0x8e,0x7c,0x7e,0x7d,0x85,0x80,0x79, +0x83,0x7f,0x84,0x70,0x86,0x7e,0x83,0x73,0x86,0x81,0x7f,0x7b,0x80,0x87,0x78,0x81, +0x7d,0x8c,0x75,0x82,0x7e,0x89,0x77,0x7f,0x82,0x82,0x7e,0x79,0x8a,0x7d,0x81,0x77, +0x8f,0x7c,0x80,0x7a,0x88,0x7f,0x7b,0x80,0x81,0x83,0x74,0x84,0x7e,0x85,0x6f,0x85, +0x80,0x82,0x78,0x82,0x84,0x7c,0x7f,0x7d,0x8c,0x78,0x81,0x7c,0x8c,0x77,0x80,0x80, +0x85,0x7c,0x7b,0x85,0x7f,0x81,0x76,0x8c,0x7d,0x81,0x77,0x8a,0x7e,0x7e,0x7c,0x83, +0x83,0x78,0x82,0x7e,0x85,0x6f,0x84,0x7e,0x84,0x75,0x83,0x82,0x7f,0x7d,0x7e,0x88, +0x7a,0x81,0x7c,0x8e,0x78,0x81,0x7d,0x88,0x7a,0x7d,0x82,0x81,0x80,0x77,0x88,0x7e, +0x82,0x75,0x8a,0x7e,0x80,0x79,0x85,0x81,0x7b,0x7f,0x80,0x86,0x74,0x83,0x7e,0x86, +0x72,0x82,0x80,0x83,0x7a,0x7f,0x85,0x7d,0x7f,0x7c,0x8c,0x7a,0x81,0x7c,0x8c,0x7b, +0x7f,0x7f,0x84,0x7f,0x7a,0x85,0x7f,0x82,0x74,0x88,0x7e,0x82,0x76,0x87,0x80,0x7e, +0x7d,0x81,0x85,0x78,0x81,0x7e,0x87,0x73,0x82,0x7f,0x85,0x78,0x80,0x82,0x80,0x7e, +0x7c,0x89,0x7c,0x81,0x7b,0x8f,0x7b,0x80,0x7d,0x86,0x7e,0x7c,0x82,0x81,0x82,0x75, +0x86,0x7e,0x83,0x74,0x86,0x7f,0x80,0x7a,0x82,0x83,0x7b,0x7f,0x7e,0x88,0x76,0x81, +0x7e,0x87,0x76,0x80,0x80,0x83,0x7c,0x7d,0x86,0x7e,0x80,0x7a,0x8d,0x7c,0x81,0x7b, +0x89,0x7d,0x7e,0x7e,0x83,0x81,0x79,0x83,0x7f,0x83,0x72,0x85,0x7f,0x82,0x77,0x84, +0x81,0x7e,0x7d,0x7f,0x87,0x79,0x81,0x7d,0x89,0x77,0x81,0x7f,0x86,0x7a,0x7e,0x83, +0x80,0x7f,0x79,0x89,0x7d,0x81,0x79,0x8b,0x7d,0x7f,0x7c,0x85,0x80,0x7b,0x81,0x80, +0x83,0x75,0x84,0x7e,0x83,0x74,0x83,0x80,0x81,0x7b,0x80,0x84,0x7c,0x80,0x7d,0x8a, +0x79,0x81,0x7d,0x89,0x79,0x7f,0x80,0x83,0x7e,0x7b,0x86,0x7f,0x81,0x78,0x89,0x7e, +0x81,0x7a,0x87,0x7f,0x7d,0x7e,0x81,0x83,0x78,0x82,0x7e,0x84,0x72,0x83,0x7f,0x83, +0x79,0x81,0x82,0x7f,0x7e,0x7e,0x88,0x7b,0x81,0x7d,0x8b,0x7a,0x80,0x7e,0x85,0x7d, +0x7d,0x83,0x80,0x80,0x77,0x87,0x7e,0x81,0x78,0x88,0x7f,0x7f,0x7c,0x83,0x82,0x7b, +0x80,0x7f,0x85,0x75,0x82,0x7e,0x84,0x77,0x81,0x81,0x81,0x7c,0x7e,0x85,0x7d,0x80, +0x7c,0x8c,0x7b,0x80,0x7d,0x88,0x7c,0x7e,0x80,0x82,0x80,0x7a,0x85,0x7f,0x82,0x76, +0x86,0x7e,0x81,0x79,0x84,0x81,0x7d,0x7e,0x80,0x85,0x78,0x81,0x7e,0x86,0x76,0x81, +0x7f,0x84,0x7b,0x7f,0x83,0x7f,0x7f,0x7c,0x88,0x7c,0x81,0x7c,0x8a,0x7c,0x7f,0x7e, +0x84,0x7f,0x7c,0x82,0x80,0x82,0x76,0x85,0x7e,0x82,0x76,0x85,0x80,0x7f,0x7c,0x81, +0x83,0x7b,0x80,0x7e,0x87,0x78,0x81,0x7e,0x86,0x79,0x80,0x81,0x81,0x7e,0x7c,0x85, +0x7e,0x81,0x7b,0x8a,0x7d,0x80,0x7c,0x86,0x7e,0x7d,0x80,0x81,0x81,0x79,0x83,0x7f, +0x82,0x75,0x84,0x7f,0x81,0x7a,0x82,0x82,0x7d,0x7f,0x7f,0x86,0x7a,0x81,0x7e,0x87, +0x79,0x80,0x7f,0x84,0x7c,0x7d,0x83,0x7f,0x80,0x7a,0x88,0x7e,0x81,0x7b,0x88,0x7e, +0x7f,0x7d,0x83,0x81,0x7b,0x81,0x7f,0x83,0x76,0x83,0x7f,0x82,0x78,0x82,0x81,0x80, +0x7d,0x7f,0x84,0x7c,0x80,0x7e,0x88,0x7a,0x80,0x7e,0x86,0x7b,0x7f,0x81,0x81,0x7f, +0x7b,0x86,0x7e,0x81,0x79,0x87,0x7e,0x80,0x7b,0x84,0x80,0x7d,0x7f,0x80,0x83,0x78, +0x82,0x7e,0x83,0x76,0x82,0x80,0x82,0x7b,0x80,0x83,0x7e,0x7f,0x7e,0x87,0x7c,0x80, +0x7d,0x88,0x7b,0x7f,0x7f,0x83,0x7e,0x7c,0x83,0x7f,0x81,0x79,0x86,0x7e,0x81,0x7a, +0x86,0x7f,0x7f,0x7d,0x81,0x82,0x7b,0x80,0x7f,0x84,0x77,0x82,0x7f,0x83,0x7a,0x80, +0x81,0x80,0x7e,0x7e,0x85,0x7d,0x80,0x7d,0x8a,0x7c,0x80,0x7e,0x85,0x7d,0x7e,0x81, +0x81,0x80,0x7a,0x84,0x7f,0x81,0x78,0x85,0x7f,0x80,0x7b,0x82,0x81,0x7d,0x7f,0x7f, +0x84,0x79,0x81,0x7e,0x84,0x78,0x81,0x80,0x82,0x7d,0x7e,0x83,0x7f,0x80,0x7c,0x88, +0x7d,0x80,0x7d,0x87,0x7d,0x7f,0x7f,0x82,0x80,0x7c,0x82,0x7f,0x81,0x77,0x84,0x7f, +0x81,0x79,0x83,0x80,0x7f,0x7e,0x80,0x83,0x7b,0x80,0x7e,0x85,0x79,0x81,0x7f,0x84, +0x7b,0x7f,0x81,0x80,0x7f,0x7c,0x85,0x7e,0x81,0x7c,0x88,0x7e,0x80,0x7d,0x84,0x7f, +0x7d,0x80,0x80,0x81,0x79,0x82,0x7f,0x82,0x77,0x83,0x80,0x80,0x7c,0x81,0x82,0x7d, +0x7f,0x7e,0x86,0x7b,0x80,0x7e,0x85,0x7b,0x80,0x80,0x82,0x7e,0x7d,0x83,0x7f,0x80, +0x7b,0x86,0x7e,0x80,0x7c,0x85,0x7f,0x7e,0x7e,0x81,0x81,0x7b,0x81,0x7f,0x82,0x77, +0x82,0x7f,0x82,0x7a,0x81,0x81,0x7f,0x7e,0x7f,0x84,0x7c,0x80,0x7e,0x87,0x7b,0x80, +0x7f,0x84,0x7d,0x7e,0x81,0x80,0x80,0x7b,0x85,0x7e,0x81,0x7b,0x85,0x7f,0x80,0x7c, +0x82,0x80,0x7d,0x80,0x80,0x83,0x79,0x81,0x7f,0x83,0x79,0x81,0x80,0x81,0x7d,0x7f, +0x83,0x7e,0x80,0x7e,0x87,0x7c,0x80,0x7e,0x86,0x7d,0x7f,0x80,0x82,0x7f,0x7c,0x83, +0x7f,0x81,0x7a,0x84,0x7f,0x80,0x7b,0x84,0x80,0x7e,0x7e,0x80,0x82,0x7b,0x81,0x7f, +0x83,0x79,0x81,0x7f,0x82,0x7c,0x80,0x81,0x7f,0x7f,0x7e,0x85,0x7d,0x80,0x7d,0x87, +0x7d,0x80,0x7e,0x83,0x7e,0x7d,0x81,0x80,0x80,0x7a,0x83,0x7f,0x81,0x7a,0x83,0x7f, +0x80,0x7d,0x81,0x81,0x7d,0x80,0x7f,0x84,0x7a,0x81,0x7f,0x83,0x7a,0x80,0x80,0x81, +0x7e,0x7e,0x83,0x7e,0x80,0x7d,0x87,0x7d,0x80,0x7d,0x84,0x7e,0x7e,0x7f,0x81,0x80, +0x7c,0x82,0x7f,0x81,0x79,0x83,0x7f,0x81,0x7b,0x82,0x81,0x7e,0x7f,0x7f,0x83,0x7c, +0x80,0x7e,0x84,0x7b,0x80,0x7f,0x83,0x7d,0x7f,0x81,0x80,0x7f,0x7d,0x85,0x7e,0x80, +0x7d,0x86,0x7e,0x7f,0x7e,0x82,0x80,0x7d,0x81,0x80,0x81,0x7a,0x82,0x7f,0x81,0x7a, +0x82,0x80,0x80,0x7d,0x80,0x82,0x7d,0x80,0x7e,0x85,0x7c,0x80,0x7f,0x84,0x7c,0x7f, +0x80,0x81,0x7f,0x7d,0x83,0x7f,0x80,0x7c,0x85,0x7e,0x80,0x7d,0x83,0x7f,0x7e,0x7f, +0x80,0x81,0x7b,0x81,0x7f,0x82,0x78,0x81,0x7f,0x81,0x7c,0x80,0x81,0x7f,0x7f,0x7f, +0x84,0x7d,0x80,0x7e,0x85,0x7c,0x80,0x7f,0x82,0x7e,0x7e,0x81,0x80,0x80,0x7c,0x84, +0x7f,0x80,0x7c,0x84,0x7f,0x7f,0x7e,0x81,0x81,0x7d,0x80,0x7f,0x82,0x79,0x81,0x7f, +0x82,0x7b,0x81,0x80,0x80,0x7e,0x7f,0x83,0x7e,0x80,0x7e,0x86,0x7d,0x80,0x7e,0x84, +0x7d,0x7f,0x80,0x81,0x80,0x7c,0x82,0x7f,0x81,0x7b,0x83,0x7f,0x80,0x7c,0x82,0x80, +0x7e,0x7f,0x80,0x82,0x7b,0x81,0x7f,0x82,0x7a,0x81,0x80,0x81,0x7d,0x7f,0x81,0x7f, +0x7f,0x7e,0x84,0x7e,0x80,0x7e,0x85,0x7e,0x7f,0x7f,0x82,0x7f,0x7d,0x81,0x7f,0x80, +0x7b,0x82,0x7f,0x81,0x7b,0x82,0x80,0x7f,0x7e,0x80,0x82,0x7d,0x80,0x7f,0x83,0x7b, +0x80,0x7f,0x82,0x7c,0x80,0x80,0x80,0x7f,0x7e,0x83,0x7e,0x80,0x7d,0x86,0x7e,0x80, +0x7e,0x83,0x7f,0x7e,0x80,0x80,0x80,0x7c,0x82,0x7f,0x81,0x7a,0x82,0x7f,0x80,0x7d, +0x81,0x81,0x7e,0x7f,0x7f,0x83,0x7c,0x80,0x7f,0x83,0x7c,0x80,0x80,0x81,0x7e,0x7e, +0x81,0x7f,0x80,0x7d,0x84,0x7e,0x80,0x7d,0x84,0x7f,0x7f,0x7f,0x81,0x80,0x7d,0x81, +0x7f,0x81,0x7a,0x81,0x7f,0x81,0x7c,0x81,0x80,0x7f,0x7e,0x7f,0x82,0x7d,0x80,0x7f, +0x84,0x7c,0x80,0x7f,0x83,0x7d,0x7f,0x80,0x80,0x7f,0x7d,0x83,0x7f,0x80,0x7d,0x84, +0x7f,0x80,0x7e,0x82,0x80,0x7e,0x80,0x80,0x81,0x7c,0x81,0x7f,0x81,0x7b,0x81,0x80, +0x80,0x7d,0x80,0x81,0x7e,0x7f,0x7f,0x84,0x7d,0x80,0x7e,0x84,0x7d,0x7f,0x7f,0x81, +0x7f,0x7e,0x82,0x7f,0x80,0x7c,0x83,0x7f,0x80,0x7d,0x83,0x7f,0x7f,0x7f,0x80,0x81, +0x7d,0x80,0x7f,0x82,0x7b,0x81,0x7f,0x81,0x7d,0x80,0x80,0x80,0x7f,0x7f,0x82,0x7e, +0x80,0x7e,0x85,0x7e,0x80,0x7f,0x82,0x7e,0x7e,0x80,0x80,0x80,0x7c,0x82,0x7f,0x80, +0x7c,0x82,0x7f,0x80,0x7d,0x81,0x80,0x7e,0x7f,0x7f,0x82,0x7c,0x80,0x7f,0x82,0x7c, +0x80,0x80,0x81,0x7e,0x7f,0x81,0x7f,0x80,0x7e,0x84,0x7e,0x80,0x7e,0x83,0x7e,0x7f, +0x7f,0x81,0x80,0x7d,0x81,0x7f,0x80,0x7b,0x82,0x7f,0x80,0x7c,0x82,0x80,0x7f,0x7f, +0x80,0x82,0x7d,0x80,0x7f,0x82,0x7c,0x80,0x7f,0x82,0x7d,0x7f,0x81,0x80,0x7f,0x7e, +0x83,0x7f,0x80,0x7e,0x84,0x7e,0x7f,0x7e,0x82,0x7f,0x7e,0x80,0x80,0x80,0x7c,0x81, +0x7f,0x81,0x7b,0x81,0x80,0x80,0x7e,0x80,0x81,0x7e,0x80,0x7f,0x83,0x7d,0x80,0x7f, +0x82,0x7d,0x80,0x80,0x81,0x7f,0x7e,0x82,0x7f,0x80,0x7d,0x83,0x7f,0x80,0x7e,0x82, +0x7f,0x7f,0x7f,0x80,0x80,0x7d,0x81,0x7f,0x81,0x7b,0x81,0x7f,0x80,0x7d,0x81,0x80, +0x7f,0x7f,0x7f,0x82,0x7e,0x80,0x7f,0x83,0x7d,0x80,0x7f,0x82,0x7e,0x7f,0x81,0x80, +0x80,0x7d,0x83,0x7f,0x80,0x7d,0x83,0x7f,0x7f,0x7e,0x81,0x80,0x7e,0x80,0x7f,0x81, +0x7c,0x81,0x7f,0x81,0x7c,0x81,0x80,0x80,0x7e,0x7f,0x81,0x7e,0x80,0x7f,0x83,0x7e, +0x80,0x7f,0x82,0x7e,0x7f,0x80,0x80,0x7f,0x7e,0x82,0x7f,0x80,0x7d,0x82,0x7f,0x80, +0x7d,0x82,0x80,0x7f,0x7f,0x80,0x81,0x7d,0x80,0x7f,0x81,0x7c,0x80,0x7f,0x81,0x7e, +0x80,0x81,0x7f,0x7f,0x7f,0x82,0x7e,0x80,0x7e,0x83,0x7e,0x80,0x7f,0x81,0x7f,0x7e, +0x81,0x80,0x80,0x7d,0x82,0x7f,0x80,0x7d,0x82,0x7f,0x7f,0x7e,0x80,0x81,0x7e,0x80, +0x7f,0x81,0x7c,0x80,0x7f,0x81,0x7d,0x80,0x80,0x80,0x7f,0x7f,0x81,0x7f,0x80,0x7e, +0x84,0x7e,0x80,0x7f,0x82,0x7f,0x7f,0x80,0x80,0x80,0x7d,0x81,0x7f,0x80,0x7c,0x81, +0x7f,0x80,0x7d,0x81,0x80,0x7f,0x7f,0x7f,0x82,0x7d,0x80,0x7f,0x82,0x7d,0x80,0x7f, +0x81,0x7e,0x7f,0x81,0x7f,0x7f,0x7e,0x82,0x7f,0x80,0x7e,0x83,0x7f,0x7f,0x7f,0x81, +0x80,0x7e,0x80,0x7f,0x80,0x7c,0x81,0x7f,0x80,0x7d,0x81,0x80,0x7f,0x7f,0x80,0x81, +0x7e,0x80,0x7f,0x82,0x7d,0x80,0x7f,0x82,0x7e,0x7f,0x80,0x80,0x7f,0x7e,0x81,0x7f, +0x80,0x7e,0x83,0x7f,0x80,0x7e,0x81,0x7f,0x7f,0x80,0x80,0x80,0x7d,0x80,0x7f,0x81, +0x7c,0x81,0x7f,0x80,0x7e,0x80,0x80,0x7f,0x7f,0x7f,0x82,0x7e,0x80,0x7f,0x82,0x7e, +0x80,0x7f,0x81,0x7f,0x7f,0x81,0x7f,0x80,0x7e,0x82,0x7f,0x80,0x7e,0x82,0x7f,0x7f, +0x7f,0x80,0x80,0x7e,0x80,0x7f,0x81,0x7c,0x80,0x7f,0x81,0x7d,0x80,0x80,0x80,0x7f, +0x7f,0x81,0x7e,0x80,0x7f,0x83,0x7e,0x80,0x7f,0x81,0x7e,0x7f,0x80,0x80,0x80,0x7e, +0x81,0x7f,0x80,0x7d,0x82,0x7f,0x80,0x7e,0x81,0x80,0x7f,0x7f,0x80,0x81,0x7d,0x80, +0x7f,0x81,0x7d,0x80,0x80,0x80,0x7e,0x7f,0x81,0x7f,0x7f,0x7f,0x82,0x7e,0x80,0x7f, +0x82,0x7e,0x7f,0x7f,0x81,0x7f,0x7e,0x81,0x7f,0x80,0x7d,0x81,0x7f,0x80,0x7d,0x81, +0x80,0x7f,0x7f,0x80,0x81,0x7e,0x80,0x7f,0x81,0x7d,0x80,0x7f,0x81,0x7e,0x80,0x80, +0x80,0x7f,0x7f,0x81,0x7f,0x80,0x7e,0x83,0x7f,0x80,0x7f,0x81,0x7f,0x7f,0x80,0x80, +0x80,0x7e,0x81,0x7f,0x80,0x7d,0x81,0x7f,0x80,0x7e,0x80,0x80,0x7f,0x7f,0x7f,0x81, +0x7e,0x80,0x7f,0x81,0x7d,0x80,0x80,0x80,0x7f,0x7f,0x81,0x7f,0x80,0x7e,0x82,0x7f, +0x80,0x7e,0x82,0x7f,0x7f,0x7f,0x80,0x80,0x7e,0x80,0x7f,0x80,0x7d,0x81,0x7f,0x80, +0x7e,0x80,0x80,0x7f,0x7f,0x7f,0x81,0x7e,0x80,0x7f,0x82,0x7e,0x80,0x7f,0x81,0x7e, +0x7f,0x80,0x80,0x7f,0x7e,0x81,0x7f,0x80,0x7e,0x82,0x7f,0x80,0x7f,0x81,0x80,0x7f, +0x80,0x80,0x80,0x7d,0x80,0x7f,0x80,0x7d,0x80,0x80,0x80,0x7f,0x80,0x80,0x7f,0x7f, +0x7f,0x82,0x7e,0x80,0x7f,0x82,0x7e,0x7f,0x80,0x80,0x7f,0x7f,0x81,0x7f,0x80,0x7e, +0x81,0x7f,0x80,0x7e,0x81,0x7f,0x7f,0x7f,0x80,0x80,0x7e,0x80,0x7f,0x81,0x7d,0x80, +0x7f,0x80,0x7e,0x80,0x80,0x7f,0x7f,0x7f,0x81,0x7f,0x80,0x7f,0x82,0x7e,0x80,0x7f, +0x81,0x7f,0x7f,0x80,0x80,0x80,0x7e,0x81,0x7f,0x80,0x7e,0x81,0x7f,0x80,0x7f,0x80, +0x80,0x7f,0x80,0x7f,0x81,0x7d,0x80,0x7f,0x81,0x7e,0x80,0x80,0x80,0x7f,0x7f,0x81, +0x7f,0x80,0x7f,0x82,0x7f,0x80,0x7f,0x81,0x7f,0x7f,0x80,0x80,0x80,0x7e,0x80,0x7f, +0x80,0x7e,0x81,0x7f,0x80,0x7e,0x81,0x80,0x7f,0x7f,0x80,0x81,0x7e,0x80,0x7f,0x81, +0x7e,0x80,0x7f,0x80,0x7e,0x7f,0x80,0x7f,0x7f,0x7f,0x81,0x7f,0x80,0x7f,0x82,0x7f, +0x7f,0x7f,0x80,0x7f,0x7f,0x80,0x80,0x80,0x7e,0x81,0x7f,0x80,0x7e,0x81,0x80,0x80, + +}; diff --git a/gbdk-lib/examples/sms/wav_sample/src/cowbell_8bit_pcm_unsigned.h b/gbdk-lib/examples/sms/wav_sample/src/cowbell_8bit_pcm_unsigned.h @@ -0,0 +1,9 @@ +#ifndef __cowbell_8bit_pcm_unsigned_INCLUDE__ +#define __cowbell_8bit_pcm_unsigned_INCLUDE__ + +#include <gbdk/platform.h> +#include <stdint.h> + +BANKREF_EXTERN(cowbell_8bit_pcm_unsigned) +extern const uint8_t cowbell_8bit_pcm_unsigned[8064]; +#endif diff --git a/gbdk-lib/examples/sms/wav_sample/src/risset_drum_8bit_pcm_unsigned.c b/gbdk-lib/examples/sms/wav_sample/src/risset_drum_8bit_pcm_unsigned.c @@ -0,0 +1,234 @@ +#pragma bank 255 + +#include <gbdk/platform.h> +#include <stdint.h> + +BANKREF(risset_drum_8bit_pcm_unsigned) +const uint8_t risset_drum_8bit_pcm_unsigned[3600] = { +0x80,0xb7,0xe9,0xff,0xff,0xff,0xff,0xff,0xee,0xcf,0xb2,0x9c,0x8e,0x89,0x89,0x8c, +0x8e,0x8b,0x80,0x6a,0x4f,0x32,0x14,0x0,0x0,0x0,0x0,0x13,0x32,0x57,0x76,0x92, +0xa4,0xb0,0xb4,0xb2,0xae,0xad,0xad,0xb4,0xbf,0xcf,0xe0,0xef,0xf9,0xf9,0xeb,0xd4, +0xae,0x82,0x52,0x24,0x0,0x0,0x0,0x0,0x0,0x3,0x24,0x43,0x60,0x78,0x88,0x92, +0x96,0x9a,0x9f,0xa6,0xb0,0xbe,0xcd,0xda,0xe7,0xeb,0xe9,0xe1,0xd1,0xbc,0xa1,0x85, +0x69,0x51,0x3d,0x30,0x29,0x2c,0x30,0x37,0x3d,0x3f,0x3f,0x3a,0x37,0x36,0x39,0x41, +0x51,0x65,0x81,0x9d,0xbc,0xd8,0xf2,0xff,0xff,0xff,0xfc,0xe7,0xcc,0xae,0x92,0x76, +0x62,0x4f,0x43,0x39,0x35,0x2f,0x2c,0x29,0x28,0x28,0x29,0x2f,0x39,0x47,0x59,0x6d, +0x82,0x96,0xa7,0xb7,0xc0,0xc8,0xcd,0xcf,0xcf,0xcc,0xc6,0xbf,0xb8,0xb0,0xa7,0x9c, +0x8e,0x80,0x6d,0x5b,0x48,0x37,0x28,0x1e,0x17,0x16,0x17,0x1e,0x29,0x39,0x4e,0x63, +0x7e,0x99,0xb0,0xc6,0xd7,0xe2,0xe8,0xe7,0xe1,0xd7,0xc9,0xbb,0xaa,0x99,0x89,0x7b, +0x70,0x65,0x5f,0x58,0x52,0x4a,0x43,0x3a,0x35,0x2f,0x2e,0x32,0x3a,0x48,0x58,0x69, +0x7a,0x8b,0x9c,0xab,0xb7,0xc0,0xc8,0xc9,0xc9,0xc8,0xc5,0xc0,0xbe,0xb7,0xb0,0xa4, +0x93,0x7f,0x69,0x51,0x39,0x27,0x18,0x10,0xd,0x13,0x1e,0x2e,0x43,0x5b,0x74,0x8b, +0x9c,0xaa,0xb2,0xb5,0xb7,0xb7,0xb5,0xb5,0xb7,0xb7,0xb8,0xb8,0xb7,0xb2,0xa7,0x9c, +0x8b,0x76,0x62,0x4f,0x40,0x35,0x2e,0x2e,0x30,0x39,0x41,0x4b,0x57,0x5f,0x65,0x6a, +0x70,0x76,0x7f,0x8b,0x9a,0xad,0xbf,0xd1,0xe0,0xe8,0xe7,0xde,0xcd,0xb5,0x9a,0x80, +0x65,0x51,0x41,0x39,0x37,0x39,0x3f,0x43,0x4a,0x4f,0x52,0x57,0x57,0x59,0x5c,0x62, +0x6c,0x7a,0x8b,0x9d,0xae,0xbf,0xcc,0xd1,0xd1,0xcd,0xc3,0xb5,0xa6,0x99,0x8b,0x80, +0x78,0x71,0x6d,0x69,0x63,0x5b,0x51,0x46,0x3a,0x30,0x2c,0x2c,0x30,0x3d,0x4f,0x65, +0x80,0x96,0xae,0xc0,0xcd,0xd4,0xd1,0xcc,0xbf,0xb4,0xa7,0x9d,0x96,0x92,0x8e,0x89, +0x84,0x7d,0x73,0x67,0x59,0x4b,0x40,0x37,0x30,0x30,0x36,0x3f,0x4e,0x5f,0x70,0x7e, +0x8c,0x96,0x9c,0x9f,0xa3,0xa3,0xa4,0xa7,0xad,0xb4,0xb8,0xbe,0xbf,0xbc,0xb2,0xa4, +0x90,0x7a,0x63,0x4e,0x3d,0x30,0x29,0x29,0x2f,0x39,0x46,0x52,0x60,0x6c,0x78,0x81, +0x88,0x8c,0x92,0x99,0x9f,0xa6,0xae,0xb5,0xbb,0xbe,0xbc,0xb7,0xae,0xa3,0x93,0x84, +0x77,0x6a,0x60,0x59,0x54,0x52,0x51,0x51,0x51,0x4f,0x4f,0x4f,0x4f,0x52,0x59,0x62, +0x6d,0x7b,0x8b,0x9a,0xa7,0xb5,0xbe,0xc5,0xc8,0xc6,0xc0,0xb7,0xab,0x9c,0x8e,0x7e, +0x73,0x69,0x60,0x59,0x54,0x4f,0x4b,0x4a,0x4a,0x4a,0x4e,0x51,0x58,0x60,0x6a,0x74, +0x81,0x8b,0x95,0x9f,0xa6,0xad,0xb0,0xb0,0xb0,0xae,0xab,0xa6,0xa1,0x9c,0x95,0x8c, +0x84,0x7b,0x71,0x67,0x5f,0x57,0x4e,0x48,0x46,0x43,0x46,0x48,0x4f,0x59,0x63,0x71, +0x80,0x8b,0x96,0xa3,0xab,0xb2,0xb5,0xb7,0xb7,0xb4,0xad,0xa6,0x9d,0x95,0x8b,0x82, +0x78,0x70,0x69,0x62,0x5c,0x58,0x54,0x51,0x4f,0x4f,0x51,0x52,0x58,0x5f,0x67,0x71, +0x7d,0x88,0x92,0x9a,0xa1,0xa6,0xaa,0xad,0xad,0xab,0xab,0xa7,0xa4,0x9f,0x99,0x90, +0x85,0x7b,0x70,0x63,0x59,0x51,0x4a,0x46,0x43,0x43,0x48,0x4f,0x5b,0x67,0x73,0x80, +0x89,0x92,0x96,0x9c,0x9d,0x9f,0xa1,0xa3,0xa4,0xa6,0xa6,0xa4,0xa1,0x9c,0x95,0x8c, +0x82,0x78,0x6d,0x63,0x5b,0x54,0x51,0x4f,0x51,0x54,0x59,0x5f,0x65,0x6a,0x70,0x74, +0x78,0x7e,0x85,0x8e,0x96,0x9f,0xa7,0xae,0xb4,0xb5,0xb4,0xae,0xa6,0x9c,0x8e,0x82, +0x74,0x6a,0x60,0x5b,0x58,0x57,0x58,0x59,0x5b,0x5c,0x5f,0x62,0x63,0x67,0x6c,0x71, +0x78,0x7e,0x89,0x92,0x9c,0xa3,0xaa,0xad,0xad,0xab,0xa6,0x9f,0x96,0x90,0x88,0x81, +0x7b,0x76,0x71,0x6d,0x69,0x63,0x5f,0x59,0x57,0x52,0x51,0x51,0x54,0x5b,0x65,0x71, +0x7d,0x8b,0x96,0x9f,0xa6,0xaa,0xab,0xaa,0xa6,0xa1,0x9c,0x96,0x92,0x8e,0x89,0x85, +0x81,0x7b,0x74,0x6d,0x65,0x5f,0x59,0x54,0x52,0x54,0x57,0x5b,0x63,0x6a,0x73,0x7b, +0x84,0x8b,0x90,0x93,0x96,0x99,0x9a,0x9c,0x9d,0x9f,0xa1,0xa1,0x9f,0x9c,0x96,0x8e, +0x85,0x7a,0x70,0x65,0x5c,0x57,0x52,0x51,0x52,0x57,0x5c,0x62,0x69,0x70,0x76,0x7d, +0x82,0x85,0x8b,0x90,0x95,0x99,0x9d,0xa1,0xa3,0xa3,0xa1,0x9d,0x99,0x92,0x8b,0x82, +0x7b,0x74,0x6d,0x69,0x63,0x62,0x60,0x60,0x60,0x60,0x60,0x62,0x63,0x67,0x6c,0x71, +0x78,0x80,0x88,0x90,0x96,0x9d,0xa3,0xa6,0xa6,0xa6,0xa3,0x9d,0x96,0x90,0x89,0x81, +0x7a,0x73,0x6d,0x69,0x65,0x62,0x5f,0x5f,0x5f,0x5f,0x60,0x63,0x67,0x6c,0x71,0x78, +0x7e,0x85,0x8c,0x92,0x96,0x9a,0x9c,0x9d,0x9d,0x9c,0x9a,0x96,0x93,0x90,0x8b,0x85, +0x81,0x7a,0x74,0x6d,0x69,0x63,0x60,0x5f,0x5c,0x5c,0x5f,0x60,0x65,0x6a,0x70,0x76, +0x7f,0x85,0x8c,0x92,0x96,0x9c,0x9d,0x9f,0x9f,0x9d,0x9a,0x96,0x92,0x8c,0x88,0x81, +0x7b,0x76,0x71,0x6d,0x6a,0x68,0x63,0x62,0x62,0x62,0x62,0x65,0x69,0x6c,0x71,0x78, +0x7d,0x84,0x89,0x8e,0x92,0x95,0x99,0x9a,0x9a,0x9a,0x9a,0x96,0x95,0x90,0x8c,0x88, +0x81,0x7b,0x74,0x70,0x69,0x63,0x60,0x5f,0x5c,0x5f,0x60,0x65,0x6a,0x70,0x76,0x7d, +0x82,0x88,0x8b,0x8e,0x92,0x93,0x95,0x96,0x96,0x96,0x96,0x95,0x93,0x90,0x8b,0x85, +0x81,0x7a,0x73,0x6d,0x69,0x65,0x63,0x62,0x63,0x63,0x67,0x69,0x6c,0x71,0x74,0x78, +0x7b,0x81,0x84,0x89,0x8e,0x92,0x96,0x9a,0x9c,0x9c,0x9c,0x99,0x95,0x8e,0x89,0x82, +0x7a,0x74,0x70,0x6a,0x69,0x67,0x65,0x68,0x67,0x69,0x6a,0x6a,0x6d,0x70,0x73,0x76, +0x7b,0x81,0x85,0x8b,0x90,0x95,0x96,0x99,0x99,0x99,0x95,0x92,0x8e,0x89,0x85,0x81, +0x7d,0x7a,0x76,0x73,0x70,0x6c,0x6a,0x67,0x65,0x65,0x65,0x67,0x69,0x6c,0x71,0x78, +0x7d,0x84,0x8b,0x90,0x93,0x95,0x96,0x96,0x95,0x93,0x92,0x8e,0x8c,0x89,0x85,0x82, +0x80,0x7b,0x76,0x73,0x70,0x6a,0x69,0x65,0x65,0x65,0x67,0x6a,0x6d,0x71,0x76,0x7b, +0x81,0x84,0x87,0x8b,0x8c,0x90,0x90,0x92,0x93,0x93,0x93,0x92,0x90,0x8e,0x8b,0x85, +0x81,0x7b,0x74,0x70,0x6c,0x69,0x65,0x65,0x65,0x67,0x69,0x6c,0x70,0x74,0x78,0x7b, +0x7f,0x82,0x85,0x89,0x8c,0x8e,0x92,0x93,0x93,0x93,0x93,0x90,0x8e,0x8b,0x85,0x82, +0x7d,0x78,0x74,0x71,0x6d,0x6c,0x6c,0x6a,0x6a,0x6a,0x6c,0x6d,0x70,0x71,0x74,0x78, +0x7b,0x81,0x84,0x89,0x8c,0x90,0x93,0x95,0x95,0x95,0x92,0x90,0x8c,0x89,0x84,0x81, +0x7d,0x78,0x74,0x71,0x70,0x6d,0x6c,0x6a,0x6a,0x6a,0x6c,0x6d,0x70,0x73,0x76,0x7a, +0x80,0x82,0x85,0x89,0x8c,0x8e,0x90,0x92,0x92,0x90,0x90,0x8e,0x8b,0x89,0x85,0x82, +0x80,0x7b,0x78,0x74,0x71,0x70,0x6c,0x6a,0x6a,0x6a,0x6a,0x6c,0x70,0x73,0x76,0x7a, +0x7d,0x82,0x85,0x89,0x8c,0x8e,0x90,0x92,0x92,0x90,0x8e,0x8c,0x8b,0x88,0x84,0x81, +0x7d,0x7a,0x76,0x74,0x71,0x70,0x6d,0x6c,0x6c,0x6c,0x6d,0x70,0x71,0x73,0x76,0x7a, +0x7d,0x82,0x85,0x88,0x8b,0x8c,0x8e,0x90,0x90,0x90,0x8e,0x8c,0x8b,0x89,0x85,0x82, +0x80,0x7b,0x78,0x74,0x71,0x70,0x6c,0x6c,0x6a,0x6c,0x6c,0x70,0x71,0x74,0x78,0x7b, +0x7e,0x82,0x85,0x88,0x8b,0x8b,0x8c,0x8c,0x8e,0x8e,0x8c,0x8c,0x8b,0x88,0x85,0x82, +0x7e,0x7b,0x78,0x74,0x71,0x70,0x6d,0x6d,0x6d,0x6d,0x70,0x71,0x73,0x76,0x78,0x7a, +0x7d,0x81,0x82,0x85,0x89,0x8b,0x8c,0x8e,0x90,0x90,0x8e,0x8c,0x8b,0x88,0x84,0x81, +0x7d,0x7a,0x76,0x73,0x71,0x70,0x70,0x70,0x70,0x70,0x71,0x73,0x74,0x76,0x78,0x7a, +0x7d,0x81,0x84,0x85,0x89,0x8b,0x8c,0x8e,0x8e,0x8c,0x8c,0x8b,0x88,0x85,0x82,0x81, +0x7d,0x7b,0x7a,0x76,0x74,0x73,0x71,0x70,0x70,0x70,0x70,0x70,0x71,0x74,0x76,0x7a, +0x7e,0x82,0x85,0x88,0x8b,0x8c,0x8c,0x8c,0x8c,0x8b,0x8b,0x89,0x88,0x85,0x82,0x81, +0x7e,0x7b,0x7a,0x76,0x74,0x73,0x71,0x70,0x70,0x70,0x70,0x71,0x74,0x76,0x7a,0x7b, +0x7f,0x81,0x84,0x85,0x88,0x89,0x89,0x8b,0x8b,0x8b,0x8b,0x8b,0x89,0x88,0x84,0x82, +0x7e,0x7b,0x78,0x76,0x73,0x71,0x70,0x70,0x70,0x71,0x71,0x73,0x74,0x78,0x7a,0x7b, +0x80,0x81,0x82,0x85,0x88,0x89,0x89,0x8b,0x8b,0x8b,0x8b,0x89,0x88,0x85,0x82,0x81, +0x7d,0x7b,0x78,0x77,0x74,0x73,0x73,0x71,0x71,0x73,0x73,0x73,0x74,0x76,0x78,0x7b, +0x7d,0x81,0x82,0x84,0x88,0x89,0x8b,0x8b,0x8b,0x8b,0x8b,0x89,0x88,0x84,0x82,0x81, +0x7d,0x7b,0x7a,0x76,0x74,0x74,0x73,0x73,0x71,0x73,0x73,0x74,0x76,0x78,0x7a,0x7b, +0x7f,0x81,0x82,0x84,0x85,0x88,0x89,0x89,0x89,0x89,0x89,0x88,0x85,0x84,0x82,0x81, +0x7f,0x7b,0x7a,0x78,0x77,0x74,0x73,0x73,0x73,0x73,0x73,0x74,0x76,0x78,0x7a,0x7b, +0x7f,0x81,0x82,0x84,0x85,0x88,0x89,0x89,0x89,0x89,0x89,0x88,0x85,0x84,0x82,0x81, +0x7d,0x7b,0x7a,0x78,0x76,0x74,0x74,0x73,0x73,0x73,0x74,0x74,0x76,0x78,0x7a,0x7b, +0x7d,0x81,0x82,0x84,0x85,0x88,0x88,0x89,0x89,0x89,0x88,0x88,0x85,0x84,0x82,0x81, +0x7f,0x7d,0x7a,0x78,0x77,0x74,0x74,0x73,0x73,0x73,0x74,0x74,0x76,0x78,0x7a,0x7d, +0x80,0x81,0x82,0x84,0x85,0x85,0x88,0x88,0x88,0x88,0x88,0x85,0x85,0x84,0x82,0x81, +0x80,0x7b,0x7a,0x78,0x76,0x76,0x74,0x74,0x74,0x74,0x74,0x76,0x78,0x78,0x7a,0x7b, +0x7d,0x7e,0x81,0x82,0x84,0x85,0x88,0x88,0x88,0x88,0x88,0x88,0x85,0x84,0x82,0x80, +0x7d,0x7b,0x7a,0x78,0x76,0x76,0x74,0x74,0x74,0x74,0x76,0x76,0x78,0x78,0x7a,0x7b, +0x7d,0x7f,0x81,0x82,0x84,0x85,0x88,0x88,0x88,0x88,0x88,0x85,0x84,0x82,0x81,0x80, +0x7d,0x7b,0x7b,0x7a,0x78,0x77,0x76,0x74,0x74,0x74,0x74,0x76,0x76,0x78,0x7a,0x7b, +0x7d,0x81,0x82,0x84,0x85,0x85,0x88,0x88,0x88,0x85,0x85,0x84,0x84,0x82,0x81,0x80, +0x7e,0x7d,0x7b,0x7a,0x78,0x76,0x76,0x74,0x74,0x74,0x77,0x76,0x78,0x7a,0x7b,0x7d, +0x7e,0x81,0x81,0x82,0x84,0x84,0x85,0x85,0x85,0x85,0x85,0x85,0x84,0x82,0x82,0x81, +0x7f,0x7d,0x7d,0x7a,0x7a,0x77,0x78,0x77,0x78,0x77,0x78,0x7a,0x7a,0x7a,0x7d,0x7d, +0x7f,0x7e,0x81,0x81,0x84,0x82,0x85,0x84,0x85,0x84,0x85,0x82,0x84,0x82,0x7f,0x80, +0x7d,0x7d,0x7b,0x7b,0x78,0x7a,0x77,0x78,0x77,0x78,0x78,0x7a,0x78,0x7b,0x7b,0x7d, +0x7e,0x7e,0x81,0x81,0x84,0x82,0x84,0x85,0x84,0x85,0x85,0x84,0x82,0x82,0x80,0x7f, +0x7d,0x7e,0x7b,0x7b,0x78,0x7a,0x78,0x78,0x77,0x78,0x7a,0x78,0x7a,0x7a,0x7d,0x7d, +0x80,0x7e,0x81,0x81,0x84,0x84,0x82,0x85,0x85,0x84,0x84,0x82,0x82,0x81,0x81,0x7e, +0x80,0x7d,0x7d,0x7a,0x7b,0x78,0x7a,0x77,0x78,0x77,0x7a,0x78,0x7b,0x7a,0x7d,0x7d, +0x7f,0x7e,0x81,0x81,0x82,0x84,0x82,0x85,0x84,0x84,0x82,0x84,0x81,0x82,0x80,0x80, +0x7d,0x7e,0x7d,0x7a,0x7b,0x78,0x7a,0x78,0x7a,0x78,0x7a,0x7a,0x7a,0x7b,0x7b,0x7e, +0x7e,0x7f,0x7f,0x82,0x81,0x84,0x84,0x82,0x84,0x82,0x84,0x84,0x81,0x82,0x80,0x7f, +0x80,0x7e,0x7d,0x7b,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7a,0x7b,0x7b,0x7d,0x7d, +0x7f,0x80,0x7f,0x82,0x81,0x84,0x82,0x84,0x84,0x84,0x82,0x82,0x81,0x82,0x80,0x80, +0x7d,0x7e,0x7d,0x7b,0x7b,0x7b,0x78,0x7a,0x7a,0x78,0x7a,0x7a,0x7b,0x7b,0x7b,0x7e, +0x7e,0x7f,0x80,0x81,0x82,0x82,0x82,0x84,0x82,0x84,0x82,0x82,0x81,0x81,0x81,0x80, +0x7f,0x7e,0x7b,0x7d,0x7a,0x7b,0x78,0x7a,0x7a,0x78,0x7a,0x7b,0x7a,0x7d,0x7d,0x7e, +0x7e,0x80,0x7f,0x81,0x81,0x82,0x84,0x82,0x84,0x82,0x84,0x81,0x82,0x80,0x81,0x7e, +0x7f,0x7d,0x7d,0x7b,0x7b,0x7b,0x7b,0x7a,0x78,0x7a,0x7b,0x7b,0x7b,0x7d,0x7d,0x7d, +0x7f,0x7e,0x81,0x80,0x82,0x82,0x81,0x84,0x82,0x84,0x81,0x82,0x81,0x81,0x81,0x80, +0x7d,0x7e,0x7b,0x7d,0x7a,0x7b,0x7b,0x7b,0x78,0x7b,0x7b,0x7b,0x7b,0x7d,0x7b,0x7e, +0x7f,0x7e,0x81,0x80,0x82,0x82,0x81,0x82,0x82,0x82,0x82,0x82,0x82,0x7f,0x81,0x7e, +0x80,0x7d,0x7d,0x7b,0x7b,0x7a,0x7b,0x7b,0x7a,0x7b,0x7a,0x7b,0x7a,0x7d,0x7b,0x7e, +0x7d,0x80,0x81,0x81,0x81,0x82,0x81,0x82,0x81,0x82,0x81,0x82,0x81,0x80,0x81,0x7e, +0x7f,0x7d,0x7d,0x7b,0x7d,0x7a,0x7b,0x7a,0x7b,0x7a,0x7b,0x7b,0x7b,0x7d,0x7b,0x7e, +0x7d,0x80,0x81,0x80,0x81,0x81,0x82,0x81,0x82,0x81,0x82,0x81,0x81,0x81,0x80,0x7f, +0x7e,0x7d,0x7d,0x7b,0x7d,0x7a,0x7b,0x7a,0x7b,0x7b,0x7a,0x7b,0x7b,0x7d,0x7d,0x7e, +0x7f,0x7e,0x7f,0x80,0x81,0x81,0x82,0x81,0x82,0x81,0x82,0x81,0x81,0x80,0x7f,0x7e, +0x7f,0x7d,0x7e,0x7b,0x7d,0x7b,0x7a,0x7b,0x7a,0x7b,0x7b,0x7a,0x7d,0x7b,0x7e,0x7e, +0x7d,0x80,0x7e,0x81,0x80,0x82,0x81,0x82,0x81,0x82,0x81,0x82,0x7f,0x81,0x7e,0x7f, +0x7e,0x7e,0x7e,0x7b,0x7d,0x7d,0x7a,0x7b,0x7a,0x7b,0x7b,0x7d,0x7d,0x7d,0x7d,0x7e, +0x7e,0x80,0x7f,0x80,0x81,0x80,0x82,0x82,0x81,0x82,0x82,0x7f,0x81,0x81,0x7e,0x7f, +0x7d,0x7e,0x7d,0x7d,0x7d,0x7b,0x7b,0x7b,0x7b,0x7a,0x7b,0x7b,0x7d,0x7b,0x7e,0x7e, +0x7e,0x7f,0x7e,0x81,0x80,0x81,0x81,0x82,0x81,0x82,0x82,0x80,0x81,0x80,0x80,0x7e, +0x7e,0x7d,0x7e,0x7d,0x7d,0x7b,0x7d,0x7a,0x7a,0x7b,0x7b,0x7d,0x7d,0x7b,0x7e,0x7d, +0x7e,0x7f,0x7e,0x81,0x81,0x7f,0x81,0x82,0x81,0x82,0x80,0x81,0x81,0x80,0x7f,0x7e, +0x7f,0x7e,0x7e,0x7d,0x7d,0x7b,0x7d,0x7b,0x7b,0x7a,0x7d,0x7b,0x7d,0x7b,0x7e,0x7e, +0x7e,0x7f,0x7e,0x81,0x80,0x81,0x80,0x81,0x80,0x81,0x80,0x81,0x81,0x80,0x7f,0x7e, +0x7f,0x7d,0x7e,0x7b,0x7d,0x7b,0x7d,0x7d,0x7b,0x7d,0x7b,0x7d,0x7d,0x7b,0x7e,0x7d, +0x80,0x7e,0x80,0x7f,0x81,0x80,0x81,0x81,0x7f,0x81,0x80,0x81,0x81,0x7f,0x80,0x7e, +0x7e,0x7e,0x7d,0x7d,0x7b,0x7d,0x7d,0x7d,0x7b,0x7d,0x7d,0x7d,0x7d,0x7b,0x7e,0x7d, +0x80,0x7e,0x7f,0x80,0x81,0x81,0x80,0x81,0x81,0x7f,0x81,0x80,0x81,0x80,0x80,0x80, +0x7d,0x7e,0x7d,0x7e,0x7b,0x7b,0x7d,0x7b,0x7d,0x7b,0x7d,0x7d,0x7d,0x7e,0x7e,0x7e, +0x7f,0x80,0x7f,0x80,0x81,0x80,0x81,0x80,0x81,0x80,0x81,0x80,0x81,0x7e,0x7f,0x7e, +0x80,0x7e,0x7d,0x7e,0x7b,0x7d,0x7d,0x7b,0x7d,0x7b,0x7d,0x7b,0x7d,0x7d,0x7e,0x7e, +0x7d,0x80,0x80,0x7f,0x80,0x81,0x80,0x81,0x80,0x81,0x80,0x81,0x80,0x80,0x7e,0x80, +0x7d,0x7e,0x7d,0x7e,0x7b,0x7d,0x7b,0x7d,0x7d,0x7b,0x7d,0x7b,0x7d,0x7d,0x7e,0x7e, +0x7e,0x80,0x7e,0x80,0x7f,0x81,0x7f,0x81,0x81,0x80,0x81,0x81,0x80,0x80,0x7e,0x80, +0x7e,0x7e,0x7e,0x7d,0x7d,0x7d,0x7b,0x7d,0x7d,0x7b,0x7d,0x7d,0x7b,0x7e,0x7d,0x7e, +0x7d,0x7f,0x7e,0x7f,0x80,0x81,0x80,0x81,0x7f,0x81,0x7f,0x81,0x7f,0x7e,0x80,0x80, +0x7e,0x7e,0x7d,0x7e,0x7b,0x7d,0x7b,0x7d,0x7b,0x7d,0x7b,0x7d,0x7b,0x7e,0x7d,0x7e, +0x7d,0x80,0x7e,0x7f,0x80,0x81,0x80,0x81,0x80,0x81,0x80,0x81,0x80,0x7e,0x80,0x7f, +0x7d,0x7e,0x7e,0x7d,0x7e,0x7d,0x7b,0x7d,0x7b,0x7d,0x7d,0x7b,0x7e,0x7d,0x7e,0x7e, +0x7f,0x80,0x7e,0x7e,0x7f,0x80,0x81,0x7f,0x81,0x81,0x81,0x7f,0x80,0x7f,0x7e,0x7f, +0x80,0x7d,0x7e,0x7d,0x7e,0x7b,0x7d,0x7b,0x7d,0x7b,0x7d,0x7b,0x7e,0x7e,0x7d,0x7e, +0x7e,0x80,0x7e,0x80,0x7e,0x81,0x80,0x81,0x7f,0x81,0x7f,0x81,0x7e,0x80,0x7e,0x80, +0x7e,0x7e,0x7d,0x7e,0x7e,0x7d,0x7d,0x7d,0x7b,0x7d,0x7d,0x7d,0x7d,0x7e,0x7d,0x7e, +0x7e,0x7f,0x80,0x7e,0x80,0x80,0x81,0x80,0x81,0x80,0x81,0x81,0x7e,0x80,0x7f,0x7e, +0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7d,0x7d,0x7b,0x7d,0x7b,0x7e,0x7d,0x7e,0x7d,0x7e, +0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7f,0x80,0x81,0x7f,0x81,0x7e,0x80,0x7e,0x80,0x7f, +0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7b,0x7d,0x7d,0x7d,0x7d,0x7e,0x7e,0x7e,0x7e,0x7d, +0x7e,0x7e,0x7f,0x7e,0x80,0x80,0x7f,0x81,0x7f,0x81,0x7f,0x80,0x7e,0x80,0x80,0x7e, +0x7f,0x7e,0x7d,0x7e,0x7d,0x7e,0x7b,0x7d,0x7b,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e, +0x7d,0x80,0x7f,0x7e,0x80,0x7f,0x7e,0x81,0x80,0x81,0x7e,0x7f,0x7e,0x7f,0x80,0x7e, +0x80,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7b,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d, +0x7f,0x7e,0x7f,0x7e,0x7f,0x7e,0x80,0x7e,0x81,0x7e,0x7e,0x80,0x7e,0x7f,0x7e,0x7f, +0x7e,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e, +0x7d,0x80,0x80,0x7e,0x80,0x7e,0x80,0x7f,0x7e,0x7f,0x7e,0x80,0x7e,0x80,0x7f,0x7e, +0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7e,0x7e,0x7d,0x7e, +0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7f,0x7e,0x7f,0x7e,0x80,0x7e,0x80,0x7e, +0x7f,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e, +0x7f,0x7e,0x7f,0x7e,0x7f,0x80,0x7f,0x7e,0x80,0x7e,0x80,0x7f,0x7e,0x7f,0x80,0x80, +0x80,0x7d,0x7e,0x7e,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d, +0x7f,0x7e,0x7f,0x7e,0x7f,0x80,0x7e,0x80,0x7f,0x80,0x7f,0x80,0x7f,0x80,0x7f,0x7f, +0x80,0x7e,0x7e,0x7e,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7e, +0x7e,0x7e,0x80,0x7e,0x80,0x7f,0x80,0x7e,0x80,0x7e,0x7e,0x7f,0x7e,0x80,0x7e,0x7e, +0x7f,0x7d,0x7e,0x7d,0x7e,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d, +0x80,0x7e,0x80,0x7e,0x7f,0x7e,0x7f,0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7e, +0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7e,0x7e,0x7e,0x7e,0x7d,0x7e,0x7e,0x7e,0x7e,0x7d, +0x80,0x7f,0x80,0x7f,0x7e,0x7f,0x7e,0x7f,0x80,0x7e,0x80,0x7e,0x80,0x80,0x7e,0x80, +0x7d,0x7e,0x7d,0x7d,0x7e,0x7d,0x7e,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7e,0x7d, +0x7e,0x7f,0x7e,0x80,0x7e,0x80,0x7f,0x7e,0x7f,0x7e,0x7f,0x7e,0x7f,0x7e,0x7f,0x80, +0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e,0x7e, +0x7e,0x80,0x7e,0x80,0x7e,0x7e,0x80,0x7e,0x80,0x80,0x7e,0x80,0x7e,0x80,0x7e,0x7f, +0x7d,0x7d,0x7e,0x7d,0x7e,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7e,0x7d, +0x7f,0x7e,0x80,0x7f,0x7e,0x7f,0x80,0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7e, +0x80,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7e,0x7e,0x7e,0x7d,0x7e,0x7e,0x7e, +0x7d,0x7f,0x7e,0x80,0x7e,0x80,0x7f,0x80,0x7e,0x80,0x7e,0x7e,0x80,0x7e,0x80,0x7e, +0x80,0x7e,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e, +0x7e,0x7e,0x80,0x80,0x7e,0x80,0x7f,0x7e,0x7f,0x7e,0x7f,0x80,0x7e,0x80,0x7e,0x80, +0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e, +0x7f,0x7e,0x80,0x7e,0x80,0x7e,0x7f,0x80,0x7e,0x80,0x80,0x7e,0x80,0x7e,0x80,0x80, +0x7e,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7d,0x7e, +0x7e,0x80,0x80,0x7f,0x80,0x80,0x7f,0x7e,0x7f,0x7e,0x80,0x7e,0x80,0x7f,0x80,0x7f, +0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7e, +0x7d,0x7f,0x80,0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7e,0x7e,0x80,0x7e,0x80, +0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e, +0x7d,0x7f,0x7e,0x7f,0x80,0x7e,0x7f,0x7e,0x7e,0x80,0x7e,0x7e,0x7f,0x7e,0x80,0x7e, +0x80,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d, +0x7f,0x80,0x7e,0x80,0x7e,0x80,0x80,0x7e,0x80,0x7e,0x80,0x7e,0x7f,0x80,0x7e,0x80, +0x7e,0x7e,0x7d,0x7d,0x7e,0x7d,0x7e,0x7e,0x7e,0x7e,0x7e,0x7d,0x7e,0x7e,0x7e,0x7d, +0x7e,0x80,0x7e,0x7f,0x7e,0x80,0x7f,0x7e,0x7f,0x7e,0x7f,0x7e,0x7f,0x7e,0x80,0x7e, +0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e, +0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7f,0x80,0x80,0x7e,0x80,0x7e,0x80,0x7e, +0x7f,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7e,0x7e,0x7e,0x7d, +0x7e,0x7e,0x80,0x7e,0x7f,0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7e,0x7f,0x7e,0x80,0x7f, +0x7e,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d, +0x7e,0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7f,0x7e,0x80,0x7e,0x80,0x7e,0x80, +0x7f,0x7e,0x7e,0x7e,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7e,0x7e,0x7e, +0x7d,0x80,0x7e,0x80,0x7e,0x7f,0x7e,0x7f,0x80,0x7f,0x80,0x80,0x7f,0x80,0x7f,0x80, +0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7d, +0x7f,0x7e,0x7f,0x7e,0x7f,0x7e,0x7f,0x7e,0x7f,0x7e,0x80,0x80,0x7e,0x80,0x7e,0x80, +0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7e, +0x7e,0x80,0x7e,0x80,0x7f,0x7e,0x80,0x7e,0x80,0x7e,0x80,0x80,0x7e,0x80,0x7f,0x7e, +0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d, +0x7f,0x7e,0x80,0x80,0x80,0x7e,0x80,0x80,0x7f,0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7f, +0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e, +0x7d,0x80,0x7e,0x7f,0x7e,0x7f,0x80,0x80,0x7e,0x80,0x7e,0x80,0x7e,0x7f,0x7e,0x80, +0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e,0x7d,0x7e,0x7e,0x7d,0x7e, +0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7f,0x7e,0x7f,0x80,0x7e,0x80,0x7e,0x7f, +0x80,0x7d,0x7e,0x7d,0x7e,0x7e,0x7e,0x7e,0x7e,0x7d,0x7e,0x7e,0x7e,0x7d,0x7e,0x7e, +0x7d,0x7f,0x7e,0x80,0x7e,0x80,0x7f,0x80,0x7e,0x80,0x7e,0x7f,0x80,0x7e,0x7f,0x7e, +0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d,0x7e,0x7d, +0x80,0x7e,0x7f,0x80,0x7e,0x80,0x7e,0x80,0x7e,0x80,0x7f,0x80,0x7e,0x7f,0x7e,0x7f, + +}; diff --git a/gbdk-lib/examples/sms/wav_sample/src/risset_drum_8bit_pcm_unsigned.h b/gbdk-lib/examples/sms/wav_sample/src/risset_drum_8bit_pcm_unsigned.h @@ -0,0 +1,9 @@ +#ifndef __risset_drum_8bit_pcm_unsigned_INCLUDE__ +#define __risset_drum_8bit_pcm_unsigned_INCLUDE__ + +#include <gbdk/platform.h> +#include <stdint.h> + +BANKREF_EXTERN(risset_drum_8bit_pcm_unsigned) +extern const uint8_t risset_drum_8bit_pcm_unsigned[3600]; +#endif diff --git a/gbdk-lib/examples/sms/wav_sample/src/sample_player.c b/gbdk-lib/examples/sms/wav_sample/src/sample_player.c @@ -0,0 +1,92 @@ +#include "sample_player.h" + +static const uint8_t voltable[768] = { + 0x9f,0xbf,0xdf, 0x9f,0xbf,0xdf, 0x9e,0xbf,0xdf, 0x9e,0xbf,0xdf, 0x9d,0xbf,0xdf, 0x9c,0xbf,0xdf, 0x9c,0xbf,0xdf, 0x9b,0xbf,0xdf, + 0x9a,0xbf,0xdf, 0x9a,0xbf,0xdf, 0x99,0xbf,0xdf, 0x99,0xbf,0xdf, 0x99,0xbf,0xdf, 0x98,0xbf,0xdf, 0x98,0xbf,0xdf, 0x98,0xbf,0xdf, + 0x98,0xbe,0xdf, 0x98,0xbe,0xdf, 0x98,0xbd,0xdf, 0x98,0xbc,0xdf, 0x98,0xbb,0xdf, 0x98,0xbb,0xdf, 0x98,0xba,0xdf, 0x98,0xba,0xdf, + 0x98,0xb9,0xdf, 0x98,0xb9,0xdf, 0x98,0xb8,0xdf, 0x98,0xb8,0xdf, 0x98,0xb8,0xdf, 0x98,0xb8,0xde, 0x98,0xb8,0xde, 0x98,0xb8,0xdd, + 0x98,0xb8,0xdc, 0x98,0xb8,0xdc, 0x98,0xb8,0xdb, 0x98,0xb8,0xda, 0x98,0xb8,0xda, 0x98,0xb8,0xd9, 0x98,0xb8,0xd9, 0x98,0xb8,0xd9, + 0x98,0xb8,0xd8, 0x98,0xb8,0xd8, 0x98,0xb8,0xd8, 0x97,0xb8,0xd8, 0x97,0xb8,0xd8, 0x97,0xb8,0xd8, 0x97,0xb7,0xd8, 0x97,0xb7,0xd8, + 0x97,0xb7,0xd8, 0x97,0xb7,0xd8, 0x97,0xb7,0xd7, 0x97,0xb7,0xd7, 0x97,0xb7,0xd7, 0x97,0xb7,0xd7, 0x96,0xb7,0xd7, 0x96,0xb7,0xd7, + 0x96,0xb7,0xd7, 0x96,0xb7,0xd7, 0x96,0xb6,0xd7, 0x96,0xb6,0xd7, 0x96,0xb6,0xd7, 0x96,0xb6,0xd7, 0x96,0xb6,0xd7, 0x96,0xb6,0xd6, + 0x96,0xb6,0xd6, 0x96,0xb6,0xd6, 0x96,0xb6,0xd6, 0x96,0xb6,0xd6, 0x95,0xb6,0xd6, 0x95,0xb6,0xd6, 0x95,0xb6,0xd6, 0x95,0xb6,0xd6, + 0x95,0xb6,0xd6, 0x95,0xb5,0xd6, 0x95,0xb5,0xd6, 0x95,0xb5,0xd6, 0x95,0xb5,0xd6, 0x95,0xb5,0xd6, 0x95,0xb5,0xd6, 0x95,0xb5,0xd5, + 0x95,0xb5,0xd5, 0x95,0xb5,0xd5, 0x95,0xb5,0xd5, 0x95,0xb5,0xd5, 0x95,0xb5,0xd5, 0x94,0xb5,0xd5, 0x94,0xb5,0xd5, 0x94,0xb5,0xd5, + 0x94,0xb5,0xd5, 0x94,0xb5,0xd5, 0x94,0xb5,0xd5, 0x94,0xb5,0xd5, 0x94,0xb4,0xd5, 0x94,0xb4,0xd5, 0x94,0xb4,0xd5, 0x94,0xb4,0xd5, + 0x94,0xb4,0xd5, 0x94,0xb4,0xd5, 0x94,0xb4,0xd5, 0x94,0xb4,0xd4, 0x94,0xb4,0xd4, 0x94,0xb4,0xd4, 0x94,0xb4,0xd4, 0x94,0xb4,0xd4, + 0x94,0xb4,0xd4, 0x94,0xb4,0xd4, 0x94,0xb4,0xd4, 0x93,0xb4,0xd4, 0x93,0xb4,0xd4, 0x93,0xb4,0xd4, 0x93,0xb4,0xd4, 0x93,0xb4,0xd4, + 0x93,0xb4,0xd4, 0x93,0xb4,0xd4, 0x93,0xb4,0xd4, 0x93,0xb4,0xd4, 0x93,0xb3,0xd4, 0x93,0xb3,0xd4, 0x93,0xb3,0xd4, 0x93,0xb3,0xd4, + 0x93,0xb3,0xd4, 0x93,0xb3,0xd4, 0x93,0xb3,0xd4, 0x93,0xb3,0xd4, 0x93,0xb3,0xd3, 0x93,0xb3,0xd3, 0x93,0xb3,0xd3, 0x93,0xb3,0xd3, + 0x93,0xb3,0xd3, 0x93,0xb3,0xd3, 0x93,0xb3,0xd3, 0x93,0xb3,0xd3, 0x93,0xb3,0xd3, 0x93,0xb3,0xd3, 0x92,0xb3,0xd3, 0x92,0xb3,0xd3, + 0x92,0xb3,0xd3, 0x92,0xb3,0xd3, 0x92,0xb3,0xd3, 0x92,0xb3,0xd3, 0x92,0xb3,0xd3, 0x92,0xb3,0xd3, 0x92,0xb3,0xd3, 0x92,0xb3,0xd3, + 0x92,0xb3,0xd3, 0x92,0xb2,0xd3, 0x92,0xb2,0xd3, 0x92,0xb2,0xd3, 0x92,0xb2,0xd3, 0x92,0xb2,0xd3, 0x92,0xb2,0xd3, 0x92,0xb2,0xd3, + 0x92,0xb2,0xd3, 0x92,0xb2,0xd3, 0x92,0xb2,0xd3, 0x92,0xb2,0xd3, 0x92,0xb2,0xd2, 0x92,0xb2,0xd2, 0x92,0xb2,0xd2, 0x92,0xb2,0xd2, + 0x92,0xb2,0xd2, 0x92,0xb2,0xd2, 0x92,0xb2,0xd2, 0x92,0xb2,0xd2, 0x92,0xb2,0xd2, 0x92,0xb2,0xd2, 0x92,0xb2,0xd2, 0x92,0xb2,0xd2, + 0x92,0xb2,0xd2, 0x91,0xb2,0xd2, 0x91,0xb2,0xd2, 0x91,0xb2,0xd2, 0x91,0xb2,0xd2, 0x91,0xb2,0xd2, 0x91,0xb2,0xd2, 0x91,0xb2,0xd2, + 0x91,0xb2,0xd2, 0x91,0xb2,0xd2, 0x91,0xb2,0xd2, 0x91,0xb2,0xd2, 0x91,0xb2,0xd2, 0x91,0xb2,0xd2, 0x91,0xb2,0xd2, 0x91,0xb1,0xd2, + 0x91,0xb1,0xd2, 0x91,0xb1,0xd2, 0x91,0xb1,0xd2, 0x91,0xb1,0xd2, 0x91,0xb1,0xd2, 0x91,0xb1,0xd2, 0x91,0xb1,0xd2, 0x91,0xb1,0xd2, + 0x91,0xb1,0xd2, 0x91,0xb1,0xd2, 0x91,0xb1,0xd2, 0x91,0xb1,0xd2, 0x91,0xb1,0xd2, 0x91,0xb1,0xd1, 0x91,0xb1,0xd1, 0x91,0xb1,0xd1, + 0x91,0xb1,0xd1, 0x91,0xb1,0xd1, 0x91,0xb1,0xd1, 0x91,0xb1,0xd1, 0x91,0xb1,0xd1, 0x91,0xb1,0xd1, 0x91,0xb1,0xd1, 0x91,0xb1,0xd1, + 0x91,0xb1,0xd1, 0x91,0xb1,0xd1, 0x91,0xb1,0xd1, 0x91,0xb1,0xd1, 0x91,0xb1,0xd1, 0x90,0xb1,0xd1, 0x90,0xb1,0xd1, 0x90,0xb1,0xd1, + 0x90,0xb1,0xd1, 0x90,0xb1,0xd1, 0x90,0xb1,0xd1, 0x90,0xb1,0xd1, 0x90,0xb1,0xd1, 0x90,0xb1,0xd1, 0x90,0xb1,0xd1, 0x90,0xb1,0xd1, + 0x90,0xb1,0xd1, 0x90,0xb1,0xd1, 0x90,0xb1,0xd1, 0x90,0xb1,0xd1, 0x90,0xb1,0xd1, 0x90,0xb1,0xd1, 0x90,0xb0,0xd1, 0x90,0xb0,0xd1, + 0x90,0xb0,0xd1, 0x90,0xb0,0xd1, 0x90,0xb0,0xd1, 0x90,0xb0,0xd1, 0x90,0xb0,0xd1, 0x90,0xb0,0xd1, 0x90,0xb0,0xd1, 0x90,0xb0,0xd1, + 0x90,0xb0,0xd1, 0x90,0xb0,0xd1, 0x90,0xb0,0xd1, 0x90,0xb0,0xd1, 0x90,0xb0,0xd1, 0x90,0xb0,0xd1, 0x90,0xb0,0xd1, 0x90,0xb0,0xd1, + 0x90,0xb0,0xd0, 0x90,0xb0,0xd0, 0x90,0xb0,0xd0, 0x90,0xb0,0xd0, 0x90,0xb0,0xd0, 0x90,0xb0,0xd0, 0x90,0xb0,0xd0, 0x90,0xb0,0xd0 +}; + +void play_sample(uint8_t * sample, uint16_t size) NONBANKED NAKED { + sample; size; + __asm + di + push hl + pop iy ; iy = hl + + ; set tone to 0 + ld c, #<_PSG + xor a + ld b, #(PSG_LATCH | PSG_CH0) ; ch 0 tone 0 + out (c), b + out (c), a + ld b, #(PSG_LATCH | PSG_CH1) ; ch 1 + out (c), b + out (c), a + ld b, #(PSG_LATCH | PSG_CH2) ; ch 2 + out (c), b + out (c), a + +1$: + ld hl, #_voltable + ld b, #0 + ld c, 0(iy) + inc iy + add hl, bc + add hl, bc + add hl, bc ; hl = &_voltable[(sample[iy+0] * 3)] + + ld c, #<_PSG + outi + outi + outi + + ld b, #22 ; delay, need to be calculated properly +2$: + djnz 2$ + + dec de + ld a, e + or d + jp nz, 1$ + + 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 + out (c), a + + ei + in a, (_VDP_STATUS) ; cancel pending VDP interrupts + ret + __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 @@ -0,0 +1,17 @@ +#ifndef SAMPLE_PLAYER_H_INCLUDE +#define SAMPLE_PLAYER_H_INCLUDE + +#include <gbdk/platform.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 + +void play_sample(uint8_t * sample, uint16_t size); + +#endif + diff --git a/gbdk-lib/examples/sms/wav_sample/src/samptest.c b/gbdk-lib/examples/sms/wav_sample/src/samptest.c @@ -0,0 +1,38 @@ +#include <gbdk/platform.h> + +#include <stdio.h> +#include <stdint.h> +#include <stdbool.h> + +#include "sample_player.h" + +#include "cowbell_8bit_pcm_unsigned.h" +#include "risset_drum_8bit_pcm_unsigned.h" + +uint8_t joy = 0, old_joy; +inline void PROCESS_INPUT(void) { + old_joy = joy, joy = joypad(); +} +inline uint8_t KEY_PRESSED(uint8_t key) { + return ((joy & ~old_joy) & key); +} + +void main(void) { + puts("PRESS A/B TO PLAY\n"); + uint8_t bank_save; + while (true) { + PROCESS_INPUT(); + if (KEY_PRESSED(J_A)) { + bank_save = _current_bank; + SWITCH_ROM(BANK(cowbell_8bit_pcm_unsigned)); + play_sample(cowbell_8bit_pcm_unsigned, sizeof(cowbell_8bit_pcm_unsigned)); + 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)); + SWITCH_ROM(bank_save); + } + vsync(); + } +} + diff --git a/gbdk-lib/examples/sms/wav_sample/utils/cvtsamplesms.py b/gbdk-lib/examples/sms/wav_sample/utils/cvtsamplesms.py @@ -0,0 +1,79 @@ +#!/usr/bin/env python3 +import sys +import wave +from pathlib import Path +from optparse import OptionParser + +def main(argv=None): + parser = OptionParser("Usage: cvtsamplesms.py [options] INPUT_FILE_NAME.WAV") + parser.add_option("-o", '--out', dest='outfilename', help='output file name') + parser.add_option("-i", '--identifier', dest='identifier', help='source identifier') + + parser.add_option("-b", '--bank', dest='bank', default="255", help='BANK number (default AUTO=255)') + + (options, args) = parser.parse_args() + + if (len(args) == 0): + parser.print_help() + parser.error("Input file name required\n") + + infilename = Path(args[0]) + + if options.outfilename == None: + outfilename = infilename.with_suffix('.c') + else: + outfilename = Path(options.outfilename) + + if options.identifier == None: + identifier = str(Path(infilename.name).with_suffix('')) + else: + identifier = options.identifier + + sHDR = ("#pragma bank {1:s}\n\n" + "#include <gbdk/platform.h>\n" + "#include <stdint.h>\n\n" + "BANKREF({0:s})\n" + "const uint8_t {0:s}[{2:d}] = {{\n") + sFOOT = "\n}};\n" + sEMIT = "0x{:x}" + sNEW = ",\n" + sNONEW = "," + + with wave.open(str(infilename), mode="rb") as f: + p = f.getparams() + if (p.nchannels == 1) and (p.sampwidth == 1) and (p.framerate >= 8000) and (p.framerate <= 8192) and (p.comptype == 'NONE'): + data = f.readframes(p.nframes) + c = 0 + cnt = 0; + + # output C source file + with open(str(outfilename), "wb") as outf: + outf.write(bytes(sHDR.format(identifier, options.bank, len(data) - (len(data) % 16)), "ascii")) + result = "" + for c in data: + result += sEMIT.format(c) + cnt += 1 + if (cnt % 16 == 0): + result = "{}{}".format(result, sNEW) + outf.write(bytes(result, "ascii")) + result = "" + else: + result += sNONEW + outf.write(bytes(sFOOT.format(), "ascii")) + else: + print("ERROR: Invalid WAV file format") + sys.exit(1) + + # output C header file + if outfilename.suffix == ".c": + with open(str(outfilename.with_suffix('.h')), "wb") as hdrf: + hdrf.write(bytes(("#ifndef __{0:s}_INCLUDE__\n" + "#define __{0:s}_INCLUDE__\n\n" + "#include <gbdk/platform.h>\n" + "#include <stdint.h>\n\n" + "BANKREF_EXTERN({0:s})\n" + "extern const uint8_t {0:s}[{2:d}];\n" + "#endif\n").format(identifier, 4, len(data) - (len(data) % 16)), "ascii")) + +if __name__=='__main__': + main() +

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