diff --git a/bin/nsc.exe b/bin/nsc.exe index 4184576..4a9a61d 100644 Binary files a/bin/nsc.exe and b/bin/nsc.exe differ diff --git a/bin/nsd.bin b/bin/nsd.bin index 719386f..a39cab9 100644 Binary files a/bin/nsd.bin and b/bin/nsd.bin differ diff --git a/bin/nsd_all.bin b/bin/nsd_all.bin index 06f61c5..8fe3de9 100644 Binary files a/bin/nsd_all.bin and b/bin/nsd_all.bin differ diff --git a/bin/nsd_all2.bin b/bin/nsd_all2.bin index 108e107..387098d 100644 Binary files a/bin/nsd_all2.bin and b/bin/nsd_all2.bin differ diff --git a/bin/nsd_fds.bin b/bin/nsd_fds.bin index d42c929..3574017 100644 Binary files a/bin/nsd_fds.bin and b/bin/nsd_fds.bin differ diff --git a/bin/nsd_hfe4.bin b/bin/nsd_hfe4.bin index c749f2d..11fc43e 100644 Binary files a/bin/nsd_hfe4.bin and b/bin/nsd_hfe4.bin differ diff --git a/bin/nsd_hfx4.bin b/bin/nsd_hfx4.bin index ef2d041..8625852 100644 Binary files a/bin/nsd_hfx4.bin and b/bin/nsd_hfx4.bin differ diff --git a/bin/nsd_mmc5.bin b/bin/nsd_mmc5.bin index 1d9b01d..cfacd03 100644 Binary files a/bin/nsd_mmc5.bin and b/bin/nsd_mmc5.bin differ diff --git a/bin/nsd_n163.bin b/bin/nsd_n163.bin index c151fe2..a462e88 100644 Binary files a/bin/nsd_n163.bin and b/bin/nsd_n163.bin differ diff --git a/bin/nsd_oall.bin b/bin/nsd_oall.bin index a36c879..9a584e9 100644 Binary files a/bin/nsd_oall.bin and b/bin/nsd_oall.bin differ diff --git a/bin/nsd_opll.bin b/bin/nsd_opll.bin index 64c3608..819a52e 100644 Binary files a/bin/nsd_opll.bin and b/bin/nsd_opll.bin differ diff --git a/bin/nsd_s5b.bin b/bin/nsd_s5b.bin index dc082d5..cb16d8b 100644 Binary files a/bin/nsd_s5b.bin and b/bin/nsd_s5b.bin differ diff --git a/bin/nsd_vrc6.bin b/bin/nsd_vrc6.bin index 9565d57..7deb8f9 100644 Binary files a/bin/nsd_vrc6.bin and b/bin/nsd_vrc6.bin differ diff --git a/bin/nsd_vrc7.bin b/bin/nsd_vrc7.bin index 158c639..3a6c1b2 100644 Binary files a/bin/nsd_vrc7.bin and b/bin/nsd_vrc7.bin differ diff --git a/doc/nsdl.chm b/doc/nsdl.chm index f5f6e6d..84c1b2e 100644 Binary files a/doc/nsdl.chm and b/doc/nsdl.chm differ diff --git a/doc/readme.txt b/doc/readme.txt index 90c500e..6512369 100644 --- a/doc/readme.txt +++ b/doc/readme.txt @@ -1,6 +1,6 @@ +----------------------------------------------------------------------------- | タイトル | NES Sound Driver Library -|ファイル名| NSDL118.ZIP +|ファイル名| NSDL119.ZIP | カテゴリ | Sound Driver for NES | 動作機種 | NES (Nintendo Entertainment System) |前提ソフト| cc65 (Complete cross development package for 65(C)02 systems.) @@ -28,4 +28,4 @@ This is developed as object library, and user application can control it. ・mixi http://mixi.jp/show_profile.pl?id=16558 ======================================================================== -製作のファイルは【NSDL118.ZIP】です。 +製作のファイルは【NSDL119.ZIP】です。 diff --git a/lib/NSD.lib b/lib/NSD.lib index 29ed572..c4b7141 100644 Binary files a/lib/NSD.lib and b/lib/NSD.lib differ diff --git a/lib/NSD_ALL.lib b/lib/NSD_ALL.lib index 0dbdbf0..e1d69c9 100644 Binary files a/lib/NSD_ALL.lib and b/lib/NSD_ALL.lib differ diff --git a/lib/NSD_ALL2.lib b/lib/NSD_ALL2.lib index 8a82c61..cb04deb 100644 Binary files a/lib/NSD_ALL2.lib and b/lib/NSD_ALL2.lib differ diff --git a/lib/NSD_FDS.lib b/lib/NSD_FDS.lib index 213cf05..bd34604 100644 Binary files a/lib/NSD_FDS.lib and b/lib/NSD_FDS.lib differ diff --git a/lib/NSD_HFE4.lib b/lib/NSD_HFE4.lib index 0e50524..7dc5117 100644 Binary files a/lib/NSD_HFE4.lib and b/lib/NSD_HFE4.lib differ diff --git a/lib/NSD_HFX4.lib b/lib/NSD_HFX4.lib index ccc3b1f..fc9e1fc 100644 Binary files a/lib/NSD_HFX4.lib and b/lib/NSD_HFX4.lib differ diff --git a/lib/NSD_MMC5.lib b/lib/NSD_MMC5.lib index 86671aa..a9a9a01 100644 Binary files a/lib/NSD_MMC5.lib and b/lib/NSD_MMC5.lib differ diff --git a/lib/NSD_N163.lib b/lib/NSD_N163.lib index ebc1e3e..3888e6b 100644 Binary files a/lib/NSD_N163.lib and b/lib/NSD_N163.lib differ diff --git a/lib/NSD_OALL.lib b/lib/NSD_OALL.lib index 05f086b..7d4a452 100644 Binary files a/lib/NSD_OALL.lib and b/lib/NSD_OALL.lib differ diff --git a/lib/NSD_OPLL.lib b/lib/NSD_OPLL.lib index 3abaf85..b5aab7b 100644 Binary files a/lib/NSD_OPLL.lib and b/lib/NSD_OPLL.lib differ diff --git a/lib/NSD_VRC6.lib b/lib/NSD_VRC6.lib index 7556464..d3ce333 100644 Binary files a/lib/NSD_VRC6.lib and b/lib/NSD_VRC6.lib differ diff --git a/lib/NSD_VRC7.lib b/lib/NSD_VRC7.lib index 8991d22..638feae 100644 Binary files a/lib/NSD_VRC7.lib and b/lib/NSD_VRC7.lib differ diff --git a/lib/NSD_s5b.lib b/lib/NSD_s5b.lib index cf1f5ba..61dfba3 100644 Binary files a/lib/NSD_s5b.lib and b/lib/NSD_s5b.lib differ diff --git a/sample/Ropchiptune/ROPdemosong.nsf b/sample/Ropchiptune/ROPdemosong.nsf index d92fcd9..eba8958 100644 Binary files a/sample/Ropchiptune/ROPdemosong.nsf and b/sample/Ropchiptune/ROPdemosong.nsf differ diff --git a/sample/Yumipico/original_v3.nsf b/sample/Yumipico/original_v3.nsf index 26756d9..3e0bb7e 100644 Binary files a/sample/Yumipico/original_v3.nsf and b/sample/Yumipico/original_v3.nsf differ diff --git a/sample/beeoboy/famicorn-kid.mml b/sample/beeoboy/famicorn-kid.mml index d32e0fb..500e549 100644 --- a/sample/beeoboy/famicorn-kid.mml +++ b/sample/beeoboy/famicorn-kid.mml @@ -159,9 +159,9 @@ $SeapunkLead_sub { $SeapunkLead r16 v10 D-1 } $melody_1 { g1 -rrr c > c4 < P14,1,-8,-4 b4&b1 -rrr c > c4 < P14,1,-8,-4 b4&b1 -rrr c f4 P14,1,-8,-4 e4&e1 +rrr c > c4 < P14,1,-8,-4 b4+1 +rrr c > c4 < P14,1,-8,-4 b4+1 +rrr c f4 P14,1,-8,-4 e4+1 r1 } @@ -169,9 +169,9 @@ r1 $melody_2 { g1 -rrr c > c4 < P14,1,-8,-4 b4. > c2 g P14,1,8,2 d4&d4. < - c > c4 < P14,1,-8,-4 b4&b1 -rrr c f4 P14,1,-8,-4 e4&e1 +rrr c > c4 < P14,1,-8,-4 b4. > c2 g P14,1,8,2 d4+4. < + c > c4 < P14,1,-8,-4 b4+1 +rrr c f4 P14,1,-8,-4 e4+1 r1 } @@ -323,7 +323,7 @@ $arp..main1 { [ $rest_8m ]2 $arps1 $arps1 } $arp..break2 { $arps2 $arps2 } -$arp..main2 { [ $arps2 $arps2 $arps1 $arps1 } +$arp..main2 { $arps2 $arps2 $arps1 $arps1 } diff --git a/sample/beeoboy/famicorn-kid.nsf b/sample/beeoboy/famicorn-kid.nsf index 93d39d9..82d6a43 100644 Binary files a/sample/beeoboy/famicorn-kid.nsf and b/sample/beeoboy/famicorn-kid.nsf differ diff --git a/sample/beeoboy/make.bat b/sample/beeoboy/make.bat new file mode 100644 index 0000000..70db8e1 --- /dev/null +++ b/sample/beeoboy/make.bat @@ -0,0 +1,6 @@ +@echo off +..\..\bin\nsc -n %~n1 -L"../../bin/nsd_all2.bin" +if %errorlevel% neq 0 pause&goto end +if not exist %~n1.mml pause&goto end +start %~n1.nsf +:end diff --git a/sample/ca65/buildlog.txt b/sample/ca65/buildlog.txt deleted file mode 100644 index d46f0db..0000000 --- a/sample/ca65/buildlog.txt +++ /dev/null @@ -1,12 +0,0 @@ -F:\NES\NSDL\sample\ca65\*.bak が見つかりませんでした。 -F:\NES\NSDL\sample\ca65\*.map が見つかりませんでした。 -F:\NES\NSDL\sample\ca65\comlog.txt が見つかりませんでした。 -F:\NES\NSDL\sample\ca65\errlog.txt が見つかりませんでした。 -F:\NES\NSDL\sample\ca65\buildlog.txt -プロセスはファイルにアクセスできません。別のプロセスが使用中です。 -ca65 -t none -I..\..\include\\ --listing --list-bytes 255 crt0.s 1>>comlog.txt 2>>errlog.txt -ca65 -t none -I..\..\include\\ --listing --list-bytes 255 main.s 1>>comlog.txt 2>>errlog.txt -nsc -a -e testmus.mml 1>>comlog.txt 2>>errlog.txt -ca65 -t none -I..\..\include\\ --listing --list-bytes 255 testmus.s 1>>comlog.txt 2>>errlog.txt -del testmus.s 1>>comlog.txt 2>>errlog.txt -ld65 -C nesa.cfg -L..\..\lib\\ -v -m test.map -vm -o test.nes crt0.o main.o testmus.o ..\..\lib\\nsd.lib 1>>comlog.txt 2>>errlog.txt diff --git a/sample/ca65/comlog.txt b/sample/ca65/comlog.txt deleted file mode 100644 index ac75613..0000000 --- a/sample/ca65/comlog.txt +++ /dev/null @@ -1,33 +0,0 @@ ----------------------------------------- -*Object creating process ----------------------------------------- -*Address settlement process - Music Size = 225 [Byte] - DPCM Size = 2816 [Byte] ----------------------------------------- -*Tick counting process ----- BGM(0) ---- -Track | TR( 1) | TR( 2) | TR( 3) | TR( 4) | TR( 5) -Loop | no-loop| no-loop| no-loop| no-loop| no-loop -Total | 264| 282| 0| 0| 288 -Opened `test.nes'... - Dumping `ZP' - Writing `ZEROPAGE' - Dumping `SRAM' - Writing `BSS' - Dumping `RAM' - Writing `DATA' - Dumping `HEADER' - Writing `HEADER' - Dumping `ROM0' - Writing `MUSDATA' - Dumping `ROMD' - Writing `PCMDATA' - Dumping `ROMP' - Writing `STARTUP' - Writing `CODE' - Writing `RODATA' - Writing `DATA' - Dumping `ROMV' - Writing `VECTORS' - Dumping `ROMC' diff --git a/sample/ca65/crt0.lst b/sample/ca65/crt0.lst deleted file mode 100644 index 3775236..0000000 --- a/sample/ca65/crt0.lst +++ /dev/null @@ -1,1141 +0,0 @@ -ca65 V2.13.3 - (C) Copyright 1998-2012 Ullrich von Bassewitz -Main file : crt0.s -Current file: crt0.s - -000000r 1 ;--------------------------------------- -000000r 1 ; -000000r 1 ; Startup code for cc65 (NES version) -000000r 1 ; -000000r 1 ; by Groepaz/Hitmen -000000r 1 ; based on code by Ullrich von Bassewitz -000000r 1 ; -000000r 1 ;--------------------------------------- -000000r 1 ; Changed by S.W. -000000r 1 ; - add the code for nsd.lib -000000r 1 ; - delete (comment out) the c runtime -000000r 1 ; -000000r 1 ;note; -000000r 1 ; このスタートアップ(crt0.s)を使用する場合、 -000000r 1 ; C言語から生成したオブジェクトは、リンクしないで下さい。 -000000r 1 ; オール・アセンブリ言語での開発を想定したスタートアップです。 -000000r 1 ; C言語用の初期化コード&ランタイムの変数領域は、全て削除しています。 -000000r 1 ; -000000r 1 ;--------------------------------------- -000000r 1 -000000r 1 ; .export _exit -000000r 1 .export __STARTUP__ : absolute = 1 ; Mark as startup -000000r 1 ; .import initlib, donelib, callmain -000000r 1 ; .import push0, _main, zerobss, copydata -000000r 1 ; .import ppubuf_flush -000000r 1 -000000r 1 .import _main -000000r 1 -000000r 1 ; Linker generated symbols -000000r 1 .import __RAM_START__, __RAM_SIZE__ -000000r 1 .import __SRAM_START__, __SRAM_SIZE__ -000000r 1 .import __ROM0_START__, __ROM0_SIZE__ -000000r 1 .import __STARTUP_LOAD__,__STARTUP_RUN__, __STARTUP_SIZE__ -000000r 1 .import __CODE_LOAD__,__CODE_RUN__, __CODE_SIZE__ -000000r 1 .import __RODATA_LOAD__,__RODATA_RUN__, __RODATA_SIZE__ -000000r 1 -000000r 1 ; .include "zeropage.inc" -000000r 1 .include "nes.inc" -000000r 2 ; -000000r 2 ; NES definitions. By Groepaz/Hitmem. -000000r 2 ; -000000r 2 -000000r 2 -000000r 2 ;; FIXME: optimize zeropage usage -000000r 2 -000000r 2 SCREEN_PTR = $62 ;2 -000000r 2 CRAM_PTR = $64 ;2 -000000r 2 CHARCOLOR = $66 -000000r 2 BGCOLOR = $67 -000000r 2 RVS = $68 -000000r 2 CURS_X = $69 -000000r 2 CURS_Y = $6a -000000r 2 -000000r 2 tickcount = $6b ;2 -000000r 2 -000000r 2 VBLANK_FLAG = $70 -000000r 2 -000000r 2 ringbuff = $0200 -000000r 2 ringwrite = $71 -000000r 2 ringread = $72 -000000r 2 ringcount = $73 -000000r 2 -000000r 2 ppuhi = $74 -000000r 2 ppulo = $75 -000000r 2 ppuval = $76 -000000r 2 -000000r 2 screenrows = (30-1) -000000r 2 charsperline = 32 -000000r 2 xsize = charsperline -000000r 2 -000000r 2 ;; PPU defines -000000r 2 -000000r 2 PPU_CTRL1 = $2000 -000000r 2 PPU_CTRL2 = $2001 -000000r 2 PPU_STATUS = $2002 -000000r 2 PPU_SPR_ADDR = $2003 -000000r 2 PPU_SPR_IO = $2004 -000000r 2 PPU_VRAM_ADDR1 = $2005 -000000r 2 PPU_VRAM_ADDR2 = $2006 -000000r 2 PPU_VRAM_IO = $2007 -000000r 2 -000000r 2 ;; APU defines -000000r 2 -000000r 2 APU_PULSE1CTRL = $4000 ; Pulse #1 Control Register (W) -000000r 2 APU_PULSE1RAMP = $4001 ; Pulse #1 Ramp Control Register (W) -000000r 2 APU_PULSE1FTUNE = $4002 ; Pulse #1 Fine Tune (FT) Register (W) -000000r 2 APU_PULSE1CTUNE = $4003 ; Pulse #1 Coarse Tune (CT) Register (W) -000000r 2 APU_PULSE2CTRL = $4004 ; Pulse #2 Control Register (W) -000000r 2 APU_PULSE2RAMP = $4005 ; Pulse #2 Ramp Control Register (W) -000000r 2 APU_PULSE2FTUNE = $4006 ; Pulse #2 Fine Tune Register (W) -000000r 2 APU_PULSE2STUNE = $4007 ; Pulse #2 Coarse Tune Register (W) -000000r 2 APU_TRICTRL1 = $4008 ; Triangle Control Register #1 (W) -000000r 2 APU_TRICTRL2 = $4009 ; Triangle Control Register #2 (?) -000000r 2 APU_TRIFREQ1 = $400A ; Triangle Frequency Register #1 (W) -000000r 2 APU_TRIFREQ2 = $400B ; Triangle Frequency Register #2 (W) -000000r 2 APU_NOISECTRL = $400C ; Noise Control Register #1 (W) -000000r 2 ;;APU_ = $400D ; Unused (???) -000000r 2 APU_NOISEFREQ1 = $400E ; Noise Frequency Register #1 (W) -000000r 2 APU_NOISEFREQ2 = $400F ; Noise Frequency Register #2 (W) -000000r 2 APU_MODCTRL = $4010 ; Delta Modulation Control Register (W) -000000r 2 APU_MODDA = $4011 ; Delta Modulation D/A Register (W) -000000r 2 APU_MODADDR = $4012 ; Delta Modulation Address Register (W) -000000r 2 APU_MODLEN = $4013 ; Delta Modulation Data Length Register (W) -000000r 2 APU_SPR_DMA = $4014 ; Sprite DMA Register (W) -000000r 2 APU_CHANCTRL = $4015 ; Sound/Vertical Clock Signal Register (R) -000000r 2 APU_PAD1 = $4016 ; Joypad #1 (RW) -000000r 2 APU_PAD2 = $4017 ; Joypad #2/SOFTCLK (RW) -000000r 2 -000000r 2 -000000r 2 CH_HLINE = 11 -000000r 2 CH_VLINE = 14 -000000r 2 CH_ULCORNER = 176 -000000r 2 CH_URCORNER = 174 -000000r 2 CH_LLCORNER = 173 -000000r 2 CH_LRCORNER = 189 -000000r 2 CH_TTEE = 178 -000000r 2 CH_RTEE = 179 -000000r 2 CH_BTEE = 177 -000000r 2 CH_LTEE = 171 -000000r 2 CH_CROSS = 123 -000000r 2 CH_CURS_UP = 145 -000000r 2 CH_CURS_DOWN = 17 -000000r 2 CH_CURS_LEFT = 157 -000000r 2 CH_CURS_RIGHT = 29 -000000r 2 CH_PI = 126 -000000r 2 CH_DEL = 20 -000000r 2 CH_INS = 148 -000000r 2 CH_ENTER = 10 -000000r 2 CH_STOP = 3 -000000r 2 CH_ESC = 27 -000000r 2 -000000r 2 -000000r 1 .include "..\..\include\nsd.inc" -000000r 2 ;=======================================================================| -000000r 2 ; | -000000r 2 ; NES Sound Driver & library | -000000r 2 ; define file | -000000r 2 ; for Assemble Language (ca65) | -000000r 2 ; | -000000r 2 ; Programmed by | -000000r 2 ; A.Watanabe | -000000r 2 ; | -000000r 2 ;=======================================================================| -000000r 2 -000000r 2 .include "nsddef.inc" -000000r 3 ;======================================================================= -000000r 3 ; -000000r 3 ; NES Sound Driver Libraly Define file -000000r 3 ; -000000r 3 ;----------------------------------------------------------------------- -000000r 3 ; -000000r 3 ; 《メモ》 !!注意!! -000000r 3 ; -000000r 3 ; 変えた場合は、 include フォルダの nes.inc にも適用する事!! -000000r 3 ; -000000r 3 ;======================================================================= -000000r 3 -000000r 3 ;**************************************************************** -000000r 3 ;* Sound I/O Device address defines * -000000r 3 ;**************************************************************** -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ;FDS define -000000r 3 -000000r 3 FDS_Control = $4023 -000000r 3 FDS_Wave_Table = $4040 ; to $407F -000000r 3 FDS_Volume = $4080 -000000r 3 FDS_FTUNE = $4082 -000000r 3 FDS_CTUNE = $4083 -000000r 3 FDS_Sweep_Envelope = $4084 -000000r 3 FDS_Sweep_Bias = $4085 -000000r 3 FDS_Mod_FTUNE = $4086 -000000r 3 FDS_Mod_CTUNE = $4087 -000000r 3 FDS_Mod_Append = $4088 -000000r 3 FDS_Write_Enable = $4089 -000000r 3 FDS_Envelope_Speed = $408A -000000r 3 FDS_Volume_Gain = $4090 ;$4080's value -000000r 3 FDS_Sweep_Gain = $4092 ;$4084's value -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ;VRC6 define -000000r 3 -000000r 3 VRC6_Frequency = $9003 ;.... .ABH Normally you should write $00 to this register on startup to initialize it. -000000r 3 VRC6_Pulse1_CTRL = $9000 ;MDDD vvvv mode DT vol -000000r 3 VRC6_Pulse1_FTUNE = $9001 ;FFFF FFFF -000000r 3 VRC6_Pulse1_CTUNE = $9002 ;E... FFFF -000000r 3 VRC6_Pulse2_CTRL = $A000 -000000r 3 VRC6_Pulse2_FTUNE = $A001 -000000r 3 VRC6_Pulse2_CTUNE = $A002 -000000r 3 VRC6_SAW_CTRL = $B000 ;..AA AAAA volume -000000r 3 VRC6_SAW_FTUNE = $B001 ;FFFF FFFF -000000r 3 VRC6_SAW_CTUNE = $B002 ;E... FFFF -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ;VRC7 define -000000r 3 -000000r 3 VRC7_Resister = $9010 ;wait 6 clk -000000r 3 VRC7_Data = $9030 ;wait 42 clk -000000r 3 -000000r 3 VRC7_Patch0 = $00 -000000r 3 VRC7_Patch1 = $01 -000000r 3 VRC7_Patch2 = $02 -000000r 3 VRC7_Patch3 = $03 -000000r 3 VRC7_Patch4 = $04 -000000r 3 VRC7_Patch5 = $05 -000000r 3 VRC7_Patch6 = $06 -000000r 3 VRC7_Patch7 = $07 -000000r 3 -000000r 3 VRC7_Frequency = $10 -000000r 3 VRC7_Octave = $20 -000000r 3 VRC7_Volume = $30 -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ;OPLL define -000000r 3 -000000r 3 .ifdef HFX4 -000000r 3 OPLL_Resister = $5F90 ;wait 6 clk -000000r 3 OPLL_Data = $5FB0 ;wait 42 clk -000000r 3 .else -000000r 3 OPLL_Resister = $9010 ;wait 6 clk -000000r 3 OPLL_Data = $9030 ;wait 42 clk -000000r 3 .endif -000000r 3 -000000r 3 OPLL_Patch0 = $00 -000000r 3 OPLL_Patch1 = $01 -000000r 3 OPLL_Patch2 = $02 -000000r 3 OPLL_Patch3 = $03 -000000r 3 OPLL_Patch4 = $04 -000000r 3 OPLL_Patch5 = $05 -000000r 3 OPLL_Patch6 = $06 -000000r 3 OPLL_Patch7 = $07 -000000r 3 -000000r 3 OPLL_RHYTHM = $0E -000000r 3 OPLL_Frequency = $10 -000000r 3 OPLL_Octave = $20 -000000r 3 OPLL_Volume = $30 -000000r 3 -000000r 3 OPLL_Frequency_BD = $16 -000000r 3 OPLL_Frequency_HH_SD = $17 -000000r 3 OPLL_Frequency_TOM_CYM = $18 -000000r 3 -000000r 3 OPLL_Octave_BD = $26 -000000r 3 OPLL_Octave_HH_SD = $27 -000000r 3 OPLL_Octave_TOM_CYM = $28 -000000r 3 -000000r 3 OPLL_BD = $36 -000000r 3 OPLL_HH_SD = $37 -000000r 3 OPLL_TOM_CYM = $38 -000000r 3 -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ;MMC5 define -000000r 3 -000000r 3 MMC5_Pulse1_CTRL = $5000 ; Pulse_ #1 Control Register (W) -000000r 3 MMC5_Pulse1_FTUNE = $5002 ; Pulse_ #1 Fine Tune (FT) Register (W) -000000r 3 MMC5_Pulse1_CTUNE = $5003 ; Pulse_ #1 Coarse Tune (CT) Register (W) -000000r 3 MMC5_Pulse2_CTRL = $5004 ; Pulse_ #2 Control Register (W) -000000r 3 MMC5_Pulse2_FTUNE = $5006 ; Pulse_ #2 Fine Tune Register (W) -000000r 3 MMC5_Pulse2_CTUNE = $5007 ; Pulse_ #2 Coarse Tune Register (W) -000000r 3 MMC5_CHANCTRL = $5015 ; -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ;N163 define -000000r 3 -000000r 3 N163_Resister = $F800 -000000r 3 N163_Data = $4800 -000000r 3 -000000r 3 N163_Frequency_Low = $78 -000000r 3 N163_Frequency_Middle = $7A -000000r 3 N163_Frequency_High = $7C -000000r 3 N163_Waveform = $7E -000000r 3 N163_Volume = $7F -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ;PSG define -000000r 3 -000000r 3 .ifdef HFE4 -000000r 3 PSG_Register = $5FE0 -000000r 3 PSG_Data = $5FE1 -000000r 3 .else -000000r 3 PSG_Register = $C000 -000000r 3 PSG_Data = $E000 -000000r 3 .endif -000000r 3 -000000r 3 PSG_1_Frequency_Low = $00 -000000r 3 PSG_1_Frequency_High = $01 -000000r 3 PSG_2_Frequency_Low = $02 -000000r 3 PSG_2_Frequency_High = $03 -000000r 3 PSG_3_Frequency_Low = $04 -000000r 3 PSG_3_Frequency_High = $05 -000000r 3 PSG_Noise_Frequency = $06 -000000r 3 PSG_Switch = $07 ;00ABCabc -000000r 3 PSG_1_Volume = $08 -000000r 3 PSG_2_Volume = $09 -000000r 3 PSG_3_Volume = $0A -000000r 3 PSG_Envelope_Low = $0B -000000r 3 PSG_Envelope_High = $0C -000000r 3 PSG_Envelope_Form = $0D -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 ;**************************************************************** -000000r 3 ;* NSD.lib General Define * -000000r 3 ;**************************************************************** -000000r 3 -000000r 3 .scope nsd -000000r 3 APU_Track = 5 ; -000000r 3 -000000r 3 TR_FDS = APU_Track * 2 -000000r 3 .ifdef FDS -000000r 3 FDS_Track = 1 ; -000000r 3 .else -000000r 3 FDS_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 TR_VRC6 = TR_FDS + FDS_Track * 2 -000000r 3 .ifdef VRC6 -000000r 3 VRC6_Track = 3 ; -000000r 3 .else -000000r 3 VRC6_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 TR_VRC7 = TR_VRC6 + VRC6_Track * 2 -000000r 3 .ifdef VRC7 -000000r 3 VRC7_Track = 6 ; -000000r 3 .else -000000r 3 VRC7_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 TR_OPLL = TR_VRC7 + VRC7_Track * 2 -000000r 3 .ifdef OPLL -000000r 3 OPLL_Track_FM = 9 -000000r 3 OPLL_Track_Rhythm = 5 -000000r 3 OPLL_Track = OPLL_Track_FM + OPLL_Track_Rhythm -000000r 3 .else -000000r 3 OPLL_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 TR_MMC5 = TR_OPLL + OPLL_Track * 2 -000000r 3 .ifdef MMC5 -000000r 3 MMC5_Track = 2 ; (without DPCM) -000000r 3 .else -000000r 3 MMC5_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 TR_N163 = TR_MMC5 + MMC5_Track * 2 -000000r 3 .ifdef N163 -000000r 3 N163_Track = 8 ; -000000r 3 .else -000000r 3 N163_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 TR_PSG = TR_N163 + N163_Track * 2 -000000r 3 .ifdef PSG -000000r 3 PSG_Track = 3 ; -000000r 3 .else -000000r 3 PSG_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 TR_NULL = TR_PSG + PSG_Track * 2 -000000r 3 .ifdef NULL -000000r 3 NULL_Track = 1 ; -000000r 3 .else -000000r 3 NULL_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 BGM_Track = APU_Track + FDS_Track + VRC6_Track + VRC7_Track + OPLL_Track + MMC5_Track + N163_Track + PSG_Track + NULL_Track -000000r 3 SE_Track = 2 ; -000000r 3 -000000r 3 Track = BGM_Track + SE_Track -000000r 3 -000000r 3 TR_BGM1 = 0 -000000r 3 TR_BGM2 = 2 -000000r 3 TR_BGM3 = 4 -000000r 3 TR_BGM4 = 6 -000000r 3 TR_BGM5 = 8 -000000r 3 TR_SE1 = BGM_Track * 2 + 0 -000000r 3 TR_SE2 = BGM_Track * 2 + 2 -000000r 3 -000000r 3 .endscope -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 ;**************************************************************** -000000r 3 ;* Struct Define * -000000r 3 ;**************************************************************** -000000r 3 -000000r 3 ;======================================================================= -000000r 3 ; Working Struct define in Zero-page area -000000r 3 ;----------------------------------------------------------------------- -000000r 3 -000000r 3 .Struct NSD_Envelop -000000r 3 V .byte ;Volume & Voice (ch3:Tempo / ch5:Tempo_ctr) -000000r 3 F .byte ;Frequency & Note -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Length_Cnt -000000r 3 counter .byte ;now length of note -000000r 3 gate .byte ;length - u -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_work_zp -000000r 3 _ptr .word ;00 General pointer value -000000r 3 _tmp .word ;02 General value -000000r 3 channel .byte ;04 channel (x resister) -000000r 3 ; flag .byte ;05 flag -000000r 3 Sequence_ptr .word nsd::Track ;06 Address of playing sequence -000000r 3 .ifndef HFX4 -000000r 3 LengthCnt .tag NSD_Length_Cnt nsd::Track ;16 Length Counter -000000r 3 .endif -000000r 3 Envelop .tag NSD_Envelop nsd::Track ;26 Envelop counter -000000r 3 .Endstruct -000000r 3 -000000r 3 ; 6 + ( 6 [Byte] * 28 [ch] ) = 174 -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ; Defines for work structures -000000r 3 -000000r 3 .scope nsd_flag -000000r 3 BGM = $01 -000000r 3 SE = $02 -000000r 3 Priority = $0C -000000r 3 Disable = $80 -000000r 3 .endscope -000000r 3 -000000r 3 ;Zero Page Works -000000r 3 .define __ptr nsd_work_zp + NSD_work_zp::_ptr -000000r 3 .define __tmp nsd_work_zp + NSD_work_zp::_tmp -000000r 3 ;.define __flag nsd_work_zp + NSD_work_zp::flag -000000r 3 .define __channel nsd_work_zp + NSD_work_zp::channel -000000r 3 .define __Sequence_ptr nsd_work_zp + NSD_work_zp::Sequence_ptr -000000r 3 -000000r 3 .define __Envelop_V nsd_work_zp + NSD_work_zp::Envelop + NSD_Envelop::V ;upper 4bit Voice / lower 4bit:Volume -000000r 3 .define __Envelop_F nsd_work_zp + NSD_work_zp::Envelop + NSD_Envelop::F ;upper 4bit:Note / lower 4bit:Frequency -000000r 3 -000000r 3 .define __flag nsd_work_zp + NSD_work_zp::Envelop + NSD_Envelop::V + nsd::TR_BGM3 -000000r 3 .define __Tempo nsd_work_zp + NSD_work_zp::Envelop + NSD_Envelop::F + nsd::TR_BGM5 -000000r 3 .define __Tempo_ctr nsd_work_zp + NSD_work_zp::Envelop + NSD_Envelop::V + nsd::TR_BGM5 -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 ;======================================================================= -000000r 3 ; Working Struct define in RAM area -000000r 3 ;----------------------------------------------------------------------- -000000r 3 -000000r 3 .Struct NSD_Flag -000000r 3 flag .byte ;flag -000000r 3 gatemode .byte ;gate mode -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_length -000000r 3 length .byte ;`l' command value -000000r 3 tai .byte ;flag of Tai & Slur -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_gatetime -000000r 3 q .byte ;`q' command value -000000r 3 u .byte ;`u' command value -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_note -000000r 3 note .byte ;`note' command value (bit 7 = `H' : rest) -000000r 3 octave .byte ;`o' command value -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Detune -000000r 3 cent .byte ;`D' command value -000000r 3 fine .byte ;`D%' command value -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Por_Lv ;(ch5 : BGM1 & BGM2 Frequency) -000000r 3 target .byte ;`P' target -000000r 3 depth .byte ;`P' add value -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Por_Co ;(ch5 : BGM3 & SE Frequency) -000000r 3 count .byte ;rate control -000000r 3 rate .byte ;now depth -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Trans -000000r 3 trans .byte ;`_' command value -000000r 3 onetime .byte ;`'', `"' command value -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Repeat -000000r 3 count1 .byte ;counter of repeat(A) -000000r 3 count2 .byte ;counter of repeat(B) -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_volume -000000r 3 volume .byte ;`v' & `vR' command value -000000r 3 volume_env .byte ;now envelop volume (ch3,5 : sweep value of ch1,2) -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_voice -000000r 3 voice .byte ;`@R' command value (upper 4bit) ;※廃止 -000000r 3 voice_set .byte ;deveice setting value -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Env_V_Ptr ;(ch5 : pointer of 儕CM information) -000000r 3 Volume .byte ;Volume -000000r 3 Voice .byte ;Voice -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Env_F_Ptr -000000r 3 Frequency .byte ;Freeuqncy -000000r 3 Note .byte ;Note -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Env_F_Now -000000r 3 Frequency .byte ;now envelop Freeuqncy -000000r 3 Note .byte ;now envelop Note -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_work -000000r 3 Flag .tag NSD_Flag nsd::Track ;flag -000000r 3 .ifdef HFX4 -000000r 3 LengthCnt .tag NSD_Length_Cnt nsd::Track ;16 Length Counter -000000r 3 .endif -000000r 3 Length .tag NSD_length nsd::Track ;note length [tick] -000000r 3 Gatetime .tag NSD_gatetime nsd::Track ;gate time [tick] -000000r 3 Note .tag NSD_note nsd::Track ;octave and note command -000000r 3 Detune .tag NSD_Detune nsd::Track ;detune -000000r 3 Por_Lv .tag NSD_Por_Lv nsd::Track ;Portamento / TR5: BGM1 & BGM2 frequency -000000r 3 Por_Co .tag NSD_Por_Co nsd::Track ;Portamento / TR5: BGM3 & SE1 frequency -000000r 3 Por_now .word nsd::Track ;Portamento -000000r 3 Trans .tag NSD_Trans nsd::Track ;Transpose -000000r 3 Repeat .tag NSD_Repeat nsd::Track ;Repeat -000000r 3 Volume .tag NSD_volume nsd::Track ;volume / TR3: BGM1 sweep / TR5: BGM2 sweep -000000r 3 Voice .tag NSD_voice nsd::Track ;voice -000000r 3 Env_F_Now .tag NSD_Env_F_Now nsd::Track ;Now value of envelop -000000r 3 Env_V_Ptr .tag NSD_Env_V_Ptr nsd::Track ;Address of envelop / TR5:DPCM info -000000r 3 Env_F_Ptr .tag NSD_Env_F_Ptr nsd::Track ;Address of envelop -000000r 3 Envelop_Volume .word nsd::Track ;Pointer of envelop -000000r 3 Envelop_Voice .word nsd::Track ;Pointer of envelop -000000r 3 Envelop_Freq .word nsd::Track ;Pointer of envelop -000000r 3 Envelop_Note .word nsd::Track ;Pointer of envelop -000000r 3 Frequency .word nsd::Track ;Setting frequency -000000r 3 SubRoutine .word nsd::Track ;Pointer of sub-routine return address -000000r 3 Repeat2 .word nsd::Track ;Pointer of repeat2 goto point -000000r 3 -000000r 3 .ifdef MMC5 -000000r 3 MMC5_Frequency .byte nsd::MMC5_Track ;MMC5 frequency -000000r 3 .endif -000000r 3 -000000r 3 .ifdef FDS -000000r 3 FDS_Frequency .byte ;FDS frequency -000000r 3 FDS_SweepBias .byte ;FDS Sweep bias -000000r 3 .endif -000000r 3 -000000r 3 .ifdef VRC7 -000000r 3 VRC7_Frequency .byte nsd::VRC7_Track ;VRC7 frequecny -000000r 3 VRC7_Freq_old .byte nsd::VRC7_Track -000000r 3 VRC7_Reg .word ; -000000r 3 .endif -000000r 3 -000000r 3 .ifdef OPLL -000000r 3 OPLL_Frequency .byte nsd::OPLL_Track_FM ;OPLL frequency (FM) -000000r 3 OPLL_Freq_old .byte nsd::OPLL_Track_FM -000000r 3 OPLL_Reg .word -000000r 3 OPLL_Rhythm .byte ;OPLL Rhythm -000000r 3 .endif -000000r 3 -000000r 3 .ifdef N163 -000000r 3 N163_num .byte ;N163 ch number -000000r 3 N163_Frequency .byte nsd::N163_Track ;N163 frequency -000000r 3 .endif -000000r 3 -000000r 3 .ifdef PSG -000000r 3 PSG_switch .byte ;PSG switch -000000r 3 .endif -000000r 3 -000000r 3 .Endstruct -000000r 3 -000000r 3 -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ; Defines for work structures -000000r 3 -000000r 3 .scope nsd_chflag -000000r 3 SE2 = $80 -000000r 3 SE1 = $40 -000000r 3 Sustain = $20 ;for VRC7 -000000r 3 KeyOn = $10 ;for VRC7 -000000r 3 Envelop = $10 ;for PSG -000000r 3 FDSVOL = $0C -000000r 3 KeyOff = $03 ;00 Key Off : Vol = 0 -000000r 3 ;01 Key Off : Release command -000000r 3 ;10 Key Off : envelop -000000r 3 ;11 Note On : (envelop) -000000r 3 .endscope -000000r 3 -000000r 3 .scope nsd_mode -000000r 3 voiceR = $F0 -000000r 3 voice = $08 -000000r 3 gatemode = $03 -000000r 3 .endscope -000000r 3 -000000r 3 -000000r 3 ;RAM Works -000000r 3 .ifdef HFX4 -000000r 3 .define __Length_ctr nsd_work + NSD_work::LengthCnt + NSD_Length_Cnt::counter -000000r 3 .define __Gate nsd_work + NSD_work::LengthCnt + NSD_Length_Cnt::gate -000000r 3 .else -000000r 3 .define __Length_ctr nsd_work_zp + NSD_work_zp::LengthCnt + NSD_Length_Cnt::counter -000000r 3 .define __Gate nsd_work_zp + NSD_work_zp::LengthCnt + NSD_Length_Cnt::gate -000000r 3 .endif -000000r 3 -000000r 3 .define __chflag nsd_work + NSD_work::Flag + NSD_Flag::flag -000000r 3 .define __gatemode nsd_work + NSD_work::Flag + NSD_Flag::gatemode -000000r 3 .define __tai nsd_work + NSD_work::Length + NSD_length::tai -000000r 3 .define __length nsd_work + NSD_work::Length + NSD_length::length -000000r 3 .define __gate_q nsd_work + NSD_work::Gatetime + NSD_gatetime::q -000000r 3 .define __gate_u nsd_work + NSD_work::Gatetime + NSD_gatetime::u -000000r 3 .define __note nsd_work + NSD_work::Note + NSD_note::note -000000r 3 .define __octave nsd_work + NSD_work::Note + NSD_note::octave -000000r 3 .define __detune_cent nsd_work + NSD_work::Detune + NSD_Detune::cent -000000r 3 .define __detune_fine nsd_work + NSD_work::Detune + NSD_Detune::fine -000000r 3 .define __por_target nsd_work + NSD_work::Por_Lv + NSD_Por_Lv::target -000000r 3 .define __por_depth nsd_work + NSD_work::Por_Lv + NSD_Por_Lv::depth -000000r 3 .define __por_ctr nsd_work + NSD_work::Por_Co + NSD_Por_Co::count -000000r 3 .define __por_rate nsd_work + NSD_work::Por_Co + NSD_Por_Co::rate -000000r 3 .define __por_now nsd_work + NSD_work::Por_now -000000r 3 .define __trans nsd_work + NSD_work::Trans + NSD_Trans::trans -000000r 3 .define __trans_one nsd_work + NSD_work::Trans + NSD_Trans::onetime -000000r 3 .define __repeat_ctr nsd_work + NSD_work::Repeat + NSD_Repeat::count1 -000000r 3 .define __repeat_ctr2 nsd_work + NSD_work::Repeat + NSD_Repeat::count2 -000000r 3 .define __volume nsd_work + NSD_work::Volume + NSD_volume::volume -000000r 3 ;.define __voice nsd_work + NSD_work::Voice + NSD_voice::voice -000000r 3 .define __voice_set nsd_work + NSD_work::Voice + NSD_voice::voice_set -000000r 3 .define __frequency nsd_work + NSD_work::Frequency -000000r 3 .define __subroutine nsd_work + NSD_work::SubRoutine -000000r 3 .define __repeat2 nsd_work + NSD_work::Repeat2 -000000r 3 .define __env_volume nsd_work + NSD_work::Envelop_Volume -000000r 3 .define __env_voice nsd_work + NSD_work::Envelop_Voice -000000r 3 .define __env_frequency nsd_work + NSD_work::Envelop_Freq -000000r 3 .define __env_note nsd_work + NSD_work::Envelop_Note -000000r 3 .define __env_vol_ptr nsd_work + NSD_work::Env_V_Ptr + NSD_Env_V_Ptr::Volume -000000r 3 .define __env_voi_ptr nsd_work + NSD_work::Env_V_Ptr + NSD_Env_V_Ptr::Voice -000000r 3 .define __env_freq_ptr nsd_work + NSD_work::Env_F_Ptr + NSD_Env_F_Ptr::Frequency -000000r 3 .define __env_note_ptr nsd_work + NSD_work::Env_F_Ptr + NSD_Env_F_Ptr::Note -000000r 3 ; voiceに関しては、その後の演算は無いので、更新されない場合はエンベロープ処理を終了する。 -000000r 3 .define __env_vol_now nsd_work + NSD_work::Volume + NSD_volume::volume_env -000000r 3 .define __env_freq_now nsd_work + NSD_work::Env_F_Now + NSD_Env_F_Now::Frequency -000000r 3 .define __env_note_now nsd_work + NSD_work::Env_F_Now + NSD_Env_F_Now::Note -000000r 3 -000000r 3 .define __sweep_ch1 nsd_work + NSD_work::Volume + NSD_volume::volume_env + nsd::TR_BGM3 -000000r 3 .define __sweep_ch2 nsd_work + NSD_work::Volume + NSD_volume::volume_env + nsd::TR_BGM5 -000000r 3 -000000r 3 -000000r 3 .define __apu_frequency1 nsd_work + NSD_work::Por_Lv + nsd::TR_BGM5 ;.byte -000000r 3 .define __apu_frequency2 nsd_work + NSD_work::Por_Lv + nsd::TR_BGM5 + 1 ;.byte -000000r 3 .define __apu_frequency3 nsd_work + NSD_work::Por_Co + nsd::TR_BGM5 ;.byte -000000r 3 .define __se_frequency nsd_work + NSD_work::Por_Co + nsd::TR_BGM5 + 1 ;.byte -000000r 3 .define __dpcm_info nsd_work + NSD_work::Env_V_Ptr + nsd::TR_BGM5 ;.word -000000r 3 -000000r 3 .ifdef MMC5 -000000r 3 .define __mmc5_frequency1 nsd_work + NSD_work::MMC5_Frequency + 0 -000000r 3 .define __mmc5_frequency2 nsd_work + NSD_work::MMC5_Frequency + 1 -000000r 3 .endif -000000r 3 -000000r 3 .ifdef FDS -000000r 3 .define __fds_frequency nsd_work + NSD_work::FDS_Frequency -000000r 3 .define __fds_sweepbias nsd_work + NSD_work::FDS_SweepBias -000000r 3 .endif -000000r 3 -000000r 3 .ifdef VRC7 -000000r 3 .define __vrc7_frequency nsd_work + NSD_work::VRC7_Frequency -000000r 3 .define __vrc7_freq_old nsd_work + NSD_work::VRC7_Freq_old -000000r 3 .define __vrc7_reg nsd_work + NSD_work::VRC7_Reg -000000r 3 .endif -000000r 3 -000000r 3 .ifdef OPLL -000000r 3 .define __opll_frequency nsd_work + NSD_work::OPLL_Frequency -000000r 3 .define __opll_freq_old nsd_work + NSD_work::OPLL_Freq_old -000000r 3 .define __opll_reg nsd_work + NSD_work::OPLL_Reg -000000r 3 .define __opll_ryhthm nsd_work + NSD_work::OPLL_Rhythm -000000r 3 .endif -000000r 3 -000000r 3 .ifdef N163 -000000r 3 .define __n163_num nsd_work + NSD_work::N163_num -000000r 3 .define __n163_frequency nsd_work + NSD_work::N163_Frequency -000000r 3 .endif -000000r 3 -000000r 3 .ifdef PSG -000000r 3 .define __psg_switch nsd_work + NSD_work::PSG_switch -000000r 3 .endif -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 ;======================================================================= -000000r 3 ; Struct of DPCM -000000r 3 ;----------------------------------------------------------------------- -000000r 3 .Struct nsd_dpcm -000000r 3 Control .byte ;I/O 0x4010 -000000r 3 DA .byte ;I/O 0x4011 -000000r 3 Address .byte ;I/O 0x4012 -000000r 3 Size .byte ;I/O 0x4013 -000000r 3 .ifdef DPCMBank -000000r 3 Bank .byte ;Bank number -000000r 3 Next .byte ;Next number(note) -000000r 3 .endif -000000r 3 .Endstruct -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 ;**************************************************************** -000000r 3 ;* Macros * -000000r 3 ;**************************************************************** -000000r 3 -000000r 3 ;======================================================================= -000000r 3 ; void NSD_MAIN_BGM() -000000r 3 ;----------------------------------------------------------------------- -000000r 3 ;<> -000000r 3 ; BGM main routine -000000r 3 ;<> -000000r 3 ; none -000000r 3 ;<> -000000r 3 ; none -000000r 3 ;======================================================================= -000000r 3 .macro NSD_MAIN_BGM -000000r 3 .local BGM_Begin -000000r 3 .local BGM_SEQ_Exit -000000r 3 .local BGM_Exit -000000r 3 -000000r 3 lda #nsd_flag::BGM -000000r 3 bit __flag -000000r 3 jne BGM_Exit ;BGM disable ? -000000r 3 -000000r 3 ;------------------------------- -000000r 3 ;Tempo -000000r 3 lda __Tempo_ctr -000000r 3 add __Tempo -000000r 3 sta __Tempo_ctr -000000r 3 jcc BGM_SEQ_Exit -000000r 3 -000000r 3 ;------------------------------- -000000r 3 ;BGM -000000r 3 BGM_Begin: -000000r 3 .repeat nsd::BGM_Track, I -000000r 3 ldx #I*2 + nsd::TR_BGM1 -000000r 3 jsr nsd_sequence -000000r 3 .endrepeat -000000r 3 -000000r 3 lda __Tempo_ctr -000000r 3 sub #150 -000000r 3 sta __Tempo_ctr -000000r 3 cmp #106 -000000r 3 jcc BGM_Begin -000000r 3 -000000r 3 BGM_SEQ_Exit: -000000r 3 -000000r 3 ;------- -000000r 3 ;Envelop -000000r 3 .repeat nsd::BGM_Track, I -000000r 3 ;No envelope: DPCM, NULL -000000r 3 .if (I <> 4) && (!(.defined(NULL) && (I = (nsd::TR_NULL / 2)))) -000000r 3 ldx #I*2 + nsd::TR_BGM1 -000000r 3 jsr nsd_envelop -000000r 3 .endif -000000r 3 .endrepeat -000000r 3 -000000r 3 BGM_Exit: -000000r 3 -000000r 3 .endmacro -000000r 3 -000000r 3 ;======================================================================= -000000r 3 ; void NSD_MAIN_SE() -000000r 3 ;----------------------------------------------------------------------- -000000r 3 ;<> -000000r 3 ; SE main routine -000000r 3 ;<> -000000r 3 ; none -000000r 3 ;<> -000000r 3 ; none -000000r 3 ;======================================================================= -000000r 3 .macro NSD_MAIN_SE -000000r 3 .local SE0 -000000r 3 .local SE1 -000000r 3 .local SE_Exit -000000r 3 -000000r 3 lda #nsd_flag::SE -000000r 3 bit __flag -000000r 3 bne SE_Exit ;SE disable ? -000000r 3 -000000r 3 ldx #nsd::TR_SE1 -000000r 3 lda __Sequence_ptr + 1,x -000000r 3 .ifdef DPCMBank -000000r 3 ora __Sequence_ptr,x -000000r 3 .endif -000000r 3 beq SE0 -000000r 3 jsr nsd_sequence -000000r 3 jsr nsd_envelop -000000r 3 SE0: -000000r 3 ldx #nsd::TR_SE2 -000000r 3 lda __Sequence_ptr + 1,x -000000r 3 .ifdef DPCMBank -000000r 3 ora __Sequence_ptr,x -000000r 3 .endif -000000r 3 beq SE1 -000000r 3 jsr nsd_sequence -000000r 3 jsr nsd_envelop -000000r 3 jmp SE_Exit -000000r 3 SE1: -000000r 3 ora __Sequence_ptr + nsd::TR_SE1 + 1 -000000r 3 .ifdef DPCMBank -000000r 3 ora __Sequence_ptr + nsd::TR_SE1 -000000r 3 .endif -000000r 3 bne SE_Exit -000000r 3 -000000r 3 ;SE Disable -000000r 3 lda #nsd_flag::SE -000000r 3 ora __flag -000000r 3 sta __flag -000000r 3 SE_Exit: -000000r 3 -000000r 3 -000000r 3 .endmacro -000000r 3 -000000r 2 -000000r 2 ;**************************************************************** -000000r 2 ;* Function of Library * -000000r 2 ;**************************************************************** -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_main(void); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : main routine of this sound driver -000000r 2 ; Arguments : None -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ; Useage : Call by 60[Hz]. e.g. V-Blank -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_main -000000r 2 .import _nsd_main_bgm -000000r 2 .import _nsd_main_se -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_init(void); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Initraize this sound driver. -000000r 2 ; Arguments : None -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ; Useage : Call when start up. -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_init -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_set_dpcm(nsd_dpcm* dpcm); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Set the Delta PCM information. -000000r 2 ; Arguments : AX Pointer of the Delta PCM information. -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_set_dpcm -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_play_bgm(void* ptr); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Play the BGM -000000r 2 ; Arguments : AX Pointer of the BGM data. -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_play_bgm -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_stop_bgm(void); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Stop the BGM -000000r 2 ; Arguments : None -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_stop_bgm -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_pause_bgm(void); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Pause the BGM -000000r 2 ; Arguments : None -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_pause_bgm -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_resume_bgm(void); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Resume the BGM -000000r 2 ; Arguments : None -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_resume_bgm -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_play_se(void* ptr); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Play the SE -000000r 2 ; Arguments : AX Pointer of the SE data. -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_play_se -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_stop_se(void); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Stop the SE -000000r 2 ; Arguments : None -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_stop_se -000000r 2 -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; Work area of nsd.lib -000000r 2 ;----------------------------------------------- -000000r 2 .importzp nsd_work_zp -000000r 2 .import nsd_work -000000r 2 -000000r 2 -000000r 2 -000000r 2 -000000r 1 -000000r 1 ; ------------------------------------------------------------------------ -000000r 1 ; 16 bytes INES header -000000r 1 ; ------------------------------------------------------------------------ -000000r 1 -000000r 1 .segment "HEADER" -000000r 1 -000000r 1 ; +--------+------+------------------------------------------+ -000000r 1 ; | Offset | Size | Content(s) | -000000r 1 ; +--------+------+------------------------------------------+ -000000r 1 ; | 0 | 3 | 'NES' | -000000r 1 ; | 3 | 1 | $1A | -000000r 1 ; | 4 | 1 | 16K PRG-ROM page count | -000000r 1 ; | 5 | 1 | 8K CHR-ROM page count | -000000r 1 ; | 6 | 1 | ROM Control Byte #1 | -000000r 1 ; | | | %####vTsM | -000000r 1 ; | | | | ||||+- 0=Horizontal mirroring | -000000r 1 ; | | | | |||| 1=Vertical mirroring | -000000r 1 ; | | | | |||+-- 1=SRAM enabled | -000000r 1 ; | | | | ||+--- 1=512-byte trainer present | -000000r 1 ; | | | | |+---- 1=Four-screen mirroring | -000000r 1 ; | | | | | | -000000r 1 ; | | | +--+----- Mapper # (lower 4-bits) | -000000r 1 ; | 7 | 1 | ROM Control Byte #2 | -000000r 1 ; | | | %####0000 | -000000r 1 ; | | | | | | -000000r 1 ; | | | +--+----- Mapper # (upper 4-bits) | -000000r 1 ; | 8-15 | 8 | $00 | -000000r 1 ; | 16-.. | | Actual 16K PRG-ROM pages (in linear | -000000r 1 ; | ... | | order). If a trainer exists, it precedes | -000000r 1 ; | ... | | the first PRG-ROM page. | -000000r 1 ; | ..-EOF | | CHR-ROM pages (in ascending order). | -000000r 1 ; +--------+------+------------------------------------------+ -000000r 1 -000000r 1 4E 45 53 1A .byte $4e,$45,$53,$1a ; "NES"^Z -000004r 1 02 .byte 2 ; ines prg - Specifies the number of 16k prg banks. -000005r 1 01 .byte 1 ; ines chr - Specifies the number of 8k chr banks. -000006r 1 01 .byte %00000001 ; ines mir - Specifies VRAM mirroring of the banks. -000007r 1 00 .byte %00000000 ; ines map - Specifies the NES mapper used. -000008r 1 00 00 00 00 .byte 0,0,0,0,0,0,0,0 ; 8 zeroes -00000Cr 1 00 00 00 00 -000010r 1 -000010r 1 -000010r 1 ; ------------------------------------------------------------------------ -000010r 1 ; Startup code -000010r 1 ; ------------------------------------------------------------------------ -000010r 1 -000010r 1 .segment "STARTUP" -000000r 1 -000000r 1 start: -000000r 1 -000000r 1 ;--------------- -000000r 1 ; setup the CPU and System-IRQ -000000r 1 78 sei -000001r 1 D8 cld -000002r 1 -000002r 1 ;--------------- -000002r 1 ;Clear memory -000002r 1 20 rr rr jsr _zero_mem -000005r 1 -000005r 1 ;--------------- -000005r 1 ;init nsd.lib -000005r 1 20 rr rr jsr _nsd_init ;V-Blank割り込みを有効にする前に呼ぶ -000008r 1 ;(PPUの初期化前に呼ぶ) -000008r 1 -000008r 1 ;--------------- -000008r 1 ;init PPU -000008r 1 20 rr rr jsr _ppu_init -00000Br 1 -00000Br 1 ;--------------- -00000Br 1 ;Call main -00000Br 1 20 rr rr jsr _main -00000Er 1 -00000Er 1 4C rr rr jmp start -000011r 1 -000011r 1 ; ------------------------------------------------------------------------ -000011r 1 ; System V-Blank Interupt (60Hz) -000011r 1 ; ------------------------------------------------------------------------ -000011r 1 nmi: -000011r 1 48 pha -000012r 1 98 tya -000013r 1 48 pha -000014r 1 8A txa -000015r 1 48 pha -000016r 1 -000016r 1 ;--------------- -000016r 1 ;Call main of nsd.lib -000016r 1 20 rr rr jsr _nsd_main ;演奏処理 -000019r 1 -000019r 1 68 pla -00001Ar 1 AA tax -00001Br 1 68 pla -00001Cr 1 A8 tay -00001Dr 1 68 pla -00001Er 1 -00001Er 1 40 rti -00001Fr 1 -00001Fr 1 ; ------------------------------------------------------------------------ -00001Fr 1 ; System IRQ Interupt -00001Fr 1 ; ------------------------------------------------------------------------ -00001Fr 1 irq: -00001Fr 1 48 pha -000020r 1 98 tya -000021r 1 48 pha -000022r 1 8A txa -000023r 1 48 pha -000024r 1 -000024r 1 -000024r 1 -000024r 1 68 pla -000025r 1 AA tax -000026r 1 68 pla -000027r 1 A8 tay -000028r 1 68 pla -000029r 1 -000029r 1 40 rti -00002Ar 1 -00002Ar 1 ; ------------------------------------------------------------------------ -00002Ar 1 ; Zero memory -00002Ar 1 ; ------------------------------------------------------------------------ -00002Ar 1 .proc _zero_mem -00002Ar 1 -00002Ar 1 A9 00 lda #0 -00002Cr 1 A2 00 ldx #0 -00002Er 1 @L: -00002Er 1 95 00 sta $0000,x ;Stackはクリアしない。 -000030r 1 9D 00 02 sta $0200,x -000033r 1 9D 00 03 sta $0300,x -000036r 1 9D 00 04 sta $0400,x -000039r 1 9D 00 05 sta $0500,x -00003Cr 1 9D 00 06 sta $0600,x -00003Fr 1 9D 00 07 sta $0700,x -000042r 1 E8 inx -000043r 1 D0 E9 bne @L -000045r 1 -000045r 1 60 rts -000046r 1 .endproc -000046r 1 -000046r 1 ; ------------------------------------------------------------------------ -000046r 1 ; Init PPU -000046r 1 ; ------------------------------------------------------------------------ -000046r 1 .proc _ppu_init -000046r 1 -000046r 1 ;--------------- -000046r 1 ; PPU Control -000046r 1 A9 A8 lda #%10101000 ;V-Blank NMI: enable -000048r 1 8D 00 20 sta PPU_CTRL1 -00004Br 1 -00004Br 1 A9 1E lda #%00011110 -00004Dr 1 8D 01 20 sta PPU_CTRL2 -000050r 1 -000050r 1 ;--------------- -000050r 1 ; Wait for vblank -000050r 1 AD 02 20 @wait: lda PPU_STATUS -000053r 1 10 FB bpl @wait -000055r 1 -000055r 1 ;--------------- -000055r 1 ; reset scrolling -000055r 1 A9 00 lda #0 -000057r 1 8D 05 20 sta PPU_VRAM_ADDR1 -00005Ar 1 8D 05 20 sta PPU_VRAM_ADDR1 -00005Dr 1 -00005Dr 1 ;--------------- -00005Dr 1 ; Make all sprites invisible -00005Dr 1 A9 00 lda #$00 -00005Fr 1 A0 F0 ldy #$f0 -000061r 1 8D 03 20 sta PPU_SPR_ADDR -000064r 1 A2 40 ldx #$40 -000066r 1 8C 04 20 @loop: sty PPU_SPR_IO -000069r 1 8D 04 20 sta PPU_SPR_IO -00006Cr 1 8D 04 20 sta PPU_SPR_IO -00006Fr 1 8C 04 20 sty PPU_SPR_IO -000072r 1 CA dex -000073r 1 D0 F1 bne @loop -000075r 1 -000075r 1 60 rts -000076r 1 -000076r 1 .endproc -000076r 1 -000076r 1 ; ------------------------------------------------------------------------ -000076r 1 ; hardware vectors -000076r 1 ; ------------------------------------------------------------------------ -000076r 1 -000076r 1 .segment "VECTORS" -000000r 1 -000000r 1 rr rr .word nmi ; $fffa vblank nmi -000002r 1 rr rr .word start ; $fffc reset -000004r 1 rr rr .word irq ; $fffe irq / brk -000006r 1 -000006r 1 diff --git a/sample/ca65/crt0.o b/sample/ca65/crt0.o deleted file mode 100644 index 7195ea5..0000000 Binary files a/sample/ca65/crt0.o and /dev/null differ diff --git a/sample/ca65/errlog.txt b/sample/ca65/errlog.txt deleted file mode 100644 index b22a087..0000000 --- a/sample/ca65/errlog.txt +++ /dev/null @@ -1,6 +0,0 @@ -[Assemble] : crt0.s -[Assemble] : main.s -[Compile] : testmus.mml -[Link] : test.nes -ld65.exe: Warning: nesa.cfg(60): Segment `CHARS' does not exist -ld65.exe: Warning: Segment `PCMDATA' in module `testmus.o' requires larger alignment diff --git a/sample/ca65/main.lst b/sample/ca65/main.lst deleted file mode 100644 index 51f7240..0000000 --- a/sample/ca65/main.lst +++ /dev/null @@ -1,977 +0,0 @@ -ca65 V2.13.3 - (C) Copyright 1998-2012 Ullrich von Bassewitz -Main file : main.s -Current file: main.s - -000000r 1 -000000r 1 .export _main -000000r 1 -000000r 1 .import _Test_DPCMinfo -000000r 1 .import _Test_BGM0 -000000r 1 -000000r 1 .include "nes.inc" -000000r 2 ; -000000r 2 ; NES definitions. By Groepaz/Hitmem. -000000r 2 ; -000000r 2 -000000r 2 -000000r 2 ;; FIXME: optimize zeropage usage -000000r 2 -000000r 2 SCREEN_PTR = $62 ;2 -000000r 2 CRAM_PTR = $64 ;2 -000000r 2 CHARCOLOR = $66 -000000r 2 BGCOLOR = $67 -000000r 2 RVS = $68 -000000r 2 CURS_X = $69 -000000r 2 CURS_Y = $6a -000000r 2 -000000r 2 tickcount = $6b ;2 -000000r 2 -000000r 2 VBLANK_FLAG = $70 -000000r 2 -000000r 2 ringbuff = $0200 -000000r 2 ringwrite = $71 -000000r 2 ringread = $72 -000000r 2 ringcount = $73 -000000r 2 -000000r 2 ppuhi = $74 -000000r 2 ppulo = $75 -000000r 2 ppuval = $76 -000000r 2 -000000r 2 screenrows = (30-1) -000000r 2 charsperline = 32 -000000r 2 xsize = charsperline -000000r 2 -000000r 2 ;; PPU defines -000000r 2 -000000r 2 PPU_CTRL1 = $2000 -000000r 2 PPU_CTRL2 = $2001 -000000r 2 PPU_STATUS = $2002 -000000r 2 PPU_SPR_ADDR = $2003 -000000r 2 PPU_SPR_IO = $2004 -000000r 2 PPU_VRAM_ADDR1 = $2005 -000000r 2 PPU_VRAM_ADDR2 = $2006 -000000r 2 PPU_VRAM_IO = $2007 -000000r 2 -000000r 2 ;; APU defines -000000r 2 -000000r 2 APU_PULSE1CTRL = $4000 ; Pulse #1 Control Register (W) -000000r 2 APU_PULSE1RAMP = $4001 ; Pulse #1 Ramp Control Register (W) -000000r 2 APU_PULSE1FTUNE = $4002 ; Pulse #1 Fine Tune (FT) Register (W) -000000r 2 APU_PULSE1CTUNE = $4003 ; Pulse #1 Coarse Tune (CT) Register (W) -000000r 2 APU_PULSE2CTRL = $4004 ; Pulse #2 Control Register (W) -000000r 2 APU_PULSE2RAMP = $4005 ; Pulse #2 Ramp Control Register (W) -000000r 2 APU_PULSE2FTUNE = $4006 ; Pulse #2 Fine Tune Register (W) -000000r 2 APU_PULSE2STUNE = $4007 ; Pulse #2 Coarse Tune Register (W) -000000r 2 APU_TRICTRL1 = $4008 ; Triangle Control Register #1 (W) -000000r 2 APU_TRICTRL2 = $4009 ; Triangle Control Register #2 (?) -000000r 2 APU_TRIFREQ1 = $400A ; Triangle Frequency Register #1 (W) -000000r 2 APU_TRIFREQ2 = $400B ; Triangle Frequency Register #2 (W) -000000r 2 APU_NOISECTRL = $400C ; Noise Control Register #1 (W) -000000r 2 ;;APU_ = $400D ; Unused (???) -000000r 2 APU_NOISEFREQ1 = $400E ; Noise Frequency Register #1 (W) -000000r 2 APU_NOISEFREQ2 = $400F ; Noise Frequency Register #2 (W) -000000r 2 APU_MODCTRL = $4010 ; Delta Modulation Control Register (W) -000000r 2 APU_MODDA = $4011 ; Delta Modulation D/A Register (W) -000000r 2 APU_MODADDR = $4012 ; Delta Modulation Address Register (W) -000000r 2 APU_MODLEN = $4013 ; Delta Modulation Data Length Register (W) -000000r 2 APU_SPR_DMA = $4014 ; Sprite DMA Register (W) -000000r 2 APU_CHANCTRL = $4015 ; Sound/Vertical Clock Signal Register (R) -000000r 2 APU_PAD1 = $4016 ; Joypad #1 (RW) -000000r 2 APU_PAD2 = $4017 ; Joypad #2/SOFTCLK (RW) -000000r 2 -000000r 2 -000000r 2 CH_HLINE = 11 -000000r 2 CH_VLINE = 14 -000000r 2 CH_ULCORNER = 176 -000000r 2 CH_URCORNER = 174 -000000r 2 CH_LLCORNER = 173 -000000r 2 CH_LRCORNER = 189 -000000r 2 CH_TTEE = 178 -000000r 2 CH_RTEE = 179 -000000r 2 CH_BTEE = 177 -000000r 2 CH_LTEE = 171 -000000r 2 CH_CROSS = 123 -000000r 2 CH_CURS_UP = 145 -000000r 2 CH_CURS_DOWN = 17 -000000r 2 CH_CURS_LEFT = 157 -000000r 2 CH_CURS_RIGHT = 29 -000000r 2 CH_PI = 126 -000000r 2 CH_DEL = 20 -000000r 2 CH_INS = 148 -000000r 2 CH_ENTER = 10 -000000r 2 CH_STOP = 3 -000000r 2 CH_ESC = 27 -000000r 2 -000000r 2 -000000r 1 .include "..\..\include\nsd.inc" -000000r 2 ;=======================================================================| -000000r 2 ; | -000000r 2 ; NES Sound Driver & library | -000000r 2 ; define file | -000000r 2 ; for Assemble Language (ca65) | -000000r 2 ; | -000000r 2 ; Programmed by | -000000r 2 ; A.Watanabe | -000000r 2 ; | -000000r 2 ;=======================================================================| -000000r 2 -000000r 2 .include "nsddef.inc" -000000r 3 ;======================================================================= -000000r 3 ; -000000r 3 ; NES Sound Driver Libraly Define file -000000r 3 ; -000000r 3 ;----------------------------------------------------------------------- -000000r 3 ; -000000r 3 ; 《メモ》 !!注意!! -000000r 3 ; -000000r 3 ; 変えた場合は、 include フォルダの nes.inc にも適用する事!! -000000r 3 ; -000000r 3 ;======================================================================= -000000r 3 -000000r 3 ;**************************************************************** -000000r 3 ;* Sound I/O Device address defines * -000000r 3 ;**************************************************************** -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ;FDS define -000000r 3 -000000r 3 FDS_Control = $4023 -000000r 3 FDS_Wave_Table = $4040 ; to $407F -000000r 3 FDS_Volume = $4080 -000000r 3 FDS_FTUNE = $4082 -000000r 3 FDS_CTUNE = $4083 -000000r 3 FDS_Sweep_Envelope = $4084 -000000r 3 FDS_Sweep_Bias = $4085 -000000r 3 FDS_Mod_FTUNE = $4086 -000000r 3 FDS_Mod_CTUNE = $4087 -000000r 3 FDS_Mod_Append = $4088 -000000r 3 FDS_Write_Enable = $4089 -000000r 3 FDS_Envelope_Speed = $408A -000000r 3 FDS_Volume_Gain = $4090 ;$4080's value -000000r 3 FDS_Sweep_Gain = $4092 ;$4084's value -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ;VRC6 define -000000r 3 -000000r 3 VRC6_Frequency = $9003 ;.... .ABH Normally you should write $00 to this register on startup to initialize it. -000000r 3 VRC6_Pulse1_CTRL = $9000 ;MDDD vvvv mode DT vol -000000r 3 VRC6_Pulse1_FTUNE = $9001 ;FFFF FFFF -000000r 3 VRC6_Pulse1_CTUNE = $9002 ;E... FFFF -000000r 3 VRC6_Pulse2_CTRL = $A000 -000000r 3 VRC6_Pulse2_FTUNE = $A001 -000000r 3 VRC6_Pulse2_CTUNE = $A002 -000000r 3 VRC6_SAW_CTRL = $B000 ;..AA AAAA volume -000000r 3 VRC6_SAW_FTUNE = $B001 ;FFFF FFFF -000000r 3 VRC6_SAW_CTUNE = $B002 ;E... FFFF -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ;VRC7 define -000000r 3 -000000r 3 VRC7_Resister = $9010 ;wait 6 clk -000000r 3 VRC7_Data = $9030 ;wait 42 clk -000000r 3 -000000r 3 VRC7_Patch0 = $00 -000000r 3 VRC7_Patch1 = $01 -000000r 3 VRC7_Patch2 = $02 -000000r 3 VRC7_Patch3 = $03 -000000r 3 VRC7_Patch4 = $04 -000000r 3 VRC7_Patch5 = $05 -000000r 3 VRC7_Patch6 = $06 -000000r 3 VRC7_Patch7 = $07 -000000r 3 -000000r 3 VRC7_Frequency = $10 -000000r 3 VRC7_Octave = $20 -000000r 3 VRC7_Volume = $30 -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ;OPLL define -000000r 3 -000000r 3 .ifdef HFX4 -000000r 3 OPLL_Resister = $5F90 ;wait 6 clk -000000r 3 OPLL_Data = $5FB0 ;wait 42 clk -000000r 3 .else -000000r 3 OPLL_Resister = $9010 ;wait 6 clk -000000r 3 OPLL_Data = $9030 ;wait 42 clk -000000r 3 .endif -000000r 3 -000000r 3 OPLL_Patch0 = $00 -000000r 3 OPLL_Patch1 = $01 -000000r 3 OPLL_Patch2 = $02 -000000r 3 OPLL_Patch3 = $03 -000000r 3 OPLL_Patch4 = $04 -000000r 3 OPLL_Patch5 = $05 -000000r 3 OPLL_Patch6 = $06 -000000r 3 OPLL_Patch7 = $07 -000000r 3 -000000r 3 OPLL_RHYTHM = $0E -000000r 3 OPLL_Frequency = $10 -000000r 3 OPLL_Octave = $20 -000000r 3 OPLL_Volume = $30 -000000r 3 -000000r 3 OPLL_Frequency_BD = $16 -000000r 3 OPLL_Frequency_HH_SD = $17 -000000r 3 OPLL_Frequency_TOM_CYM = $18 -000000r 3 -000000r 3 OPLL_Octave_BD = $26 -000000r 3 OPLL_Octave_HH_SD = $27 -000000r 3 OPLL_Octave_TOM_CYM = $28 -000000r 3 -000000r 3 OPLL_BD = $36 -000000r 3 OPLL_HH_SD = $37 -000000r 3 OPLL_TOM_CYM = $38 -000000r 3 -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ;MMC5 define -000000r 3 -000000r 3 MMC5_Pulse1_CTRL = $5000 ; Pulse_ #1 Control Register (W) -000000r 3 MMC5_Pulse1_FTUNE = $5002 ; Pulse_ #1 Fine Tune (FT) Register (W) -000000r 3 MMC5_Pulse1_CTUNE = $5003 ; Pulse_ #1 Coarse Tune (CT) Register (W) -000000r 3 MMC5_Pulse2_CTRL = $5004 ; Pulse_ #2 Control Register (W) -000000r 3 MMC5_Pulse2_FTUNE = $5006 ; Pulse_ #2 Fine Tune Register (W) -000000r 3 MMC5_Pulse2_CTUNE = $5007 ; Pulse_ #2 Coarse Tune Register (W) -000000r 3 MMC5_CHANCTRL = $5015 ; -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ;N163 define -000000r 3 -000000r 3 N163_Resister = $F800 -000000r 3 N163_Data = $4800 -000000r 3 -000000r 3 N163_Frequency_Low = $78 -000000r 3 N163_Frequency_Middle = $7A -000000r 3 N163_Frequency_High = $7C -000000r 3 N163_Waveform = $7E -000000r 3 N163_Volume = $7F -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ;PSG define -000000r 3 -000000r 3 .ifdef HFE4 -000000r 3 PSG_Register = $5FE0 -000000r 3 PSG_Data = $5FE1 -000000r 3 .else -000000r 3 PSG_Register = $C000 -000000r 3 PSG_Data = $E000 -000000r 3 .endif -000000r 3 -000000r 3 PSG_1_Frequency_Low = $00 -000000r 3 PSG_1_Frequency_High = $01 -000000r 3 PSG_2_Frequency_Low = $02 -000000r 3 PSG_2_Frequency_High = $03 -000000r 3 PSG_3_Frequency_Low = $04 -000000r 3 PSG_3_Frequency_High = $05 -000000r 3 PSG_Noise_Frequency = $06 -000000r 3 PSG_Switch = $07 ;00ABCabc -000000r 3 PSG_1_Volume = $08 -000000r 3 PSG_2_Volume = $09 -000000r 3 PSG_3_Volume = $0A -000000r 3 PSG_Envelope_Low = $0B -000000r 3 PSG_Envelope_High = $0C -000000r 3 PSG_Envelope_Form = $0D -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 ;**************************************************************** -000000r 3 ;* NSD.lib General Define * -000000r 3 ;**************************************************************** -000000r 3 -000000r 3 .scope nsd -000000r 3 APU_Track = 5 ; -000000r 3 -000000r 3 TR_FDS = APU_Track * 2 -000000r 3 .ifdef FDS -000000r 3 FDS_Track = 1 ; -000000r 3 .else -000000r 3 FDS_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 TR_VRC6 = TR_FDS + FDS_Track * 2 -000000r 3 .ifdef VRC6 -000000r 3 VRC6_Track = 3 ; -000000r 3 .else -000000r 3 VRC6_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 TR_VRC7 = TR_VRC6 + VRC6_Track * 2 -000000r 3 .ifdef VRC7 -000000r 3 VRC7_Track = 6 ; -000000r 3 .else -000000r 3 VRC7_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 TR_OPLL = TR_VRC7 + VRC7_Track * 2 -000000r 3 .ifdef OPLL -000000r 3 OPLL_Track_FM = 9 -000000r 3 OPLL_Track_Rhythm = 5 -000000r 3 OPLL_Track = OPLL_Track_FM + OPLL_Track_Rhythm -000000r 3 .else -000000r 3 OPLL_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 TR_MMC5 = TR_OPLL + OPLL_Track * 2 -000000r 3 .ifdef MMC5 -000000r 3 MMC5_Track = 2 ; (without DPCM) -000000r 3 .else -000000r 3 MMC5_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 TR_N163 = TR_MMC5 + MMC5_Track * 2 -000000r 3 .ifdef N163 -000000r 3 N163_Track = 8 ; -000000r 3 .else -000000r 3 N163_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 TR_PSG = TR_N163 + N163_Track * 2 -000000r 3 .ifdef PSG -000000r 3 PSG_Track = 3 ; -000000r 3 .else -000000r 3 PSG_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 TR_NULL = TR_PSG + PSG_Track * 2 -000000r 3 .ifdef NULL -000000r 3 NULL_Track = 1 ; -000000r 3 .else -000000r 3 NULL_Track = 0 ; -000000r 3 .endif -000000r 3 -000000r 3 BGM_Track = APU_Track + FDS_Track + VRC6_Track + VRC7_Track + OPLL_Track + MMC5_Track + N163_Track + PSG_Track + NULL_Track -000000r 3 SE_Track = 2 ; -000000r 3 -000000r 3 Track = BGM_Track + SE_Track -000000r 3 -000000r 3 TR_BGM1 = 0 -000000r 3 TR_BGM2 = 2 -000000r 3 TR_BGM3 = 4 -000000r 3 TR_BGM4 = 6 -000000r 3 TR_BGM5 = 8 -000000r 3 TR_SE1 = BGM_Track * 2 + 0 -000000r 3 TR_SE2 = BGM_Track * 2 + 2 -000000r 3 -000000r 3 .endscope -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 ;**************************************************************** -000000r 3 ;* Struct Define * -000000r 3 ;**************************************************************** -000000r 3 -000000r 3 ;======================================================================= -000000r 3 ; Working Struct define in Zero-page area -000000r 3 ;----------------------------------------------------------------------- -000000r 3 -000000r 3 .Struct NSD_Envelop -000000r 3 V .byte ;Volume & Voice (ch3:Tempo / ch5:Tempo_ctr) -000000r 3 F .byte ;Frequency & Note -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Length_Cnt -000000r 3 counter .byte ;now length of note -000000r 3 gate .byte ;length - u -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_work_zp -000000r 3 _ptr .word ;00 General pointer value -000000r 3 _tmp .word ;02 General value -000000r 3 channel .byte ;04 channel (x resister) -000000r 3 ; flag .byte ;05 flag -000000r 3 Sequence_ptr .word nsd::Track ;06 Address of playing sequence -000000r 3 .ifndef HFX4 -000000r 3 LengthCnt .tag NSD_Length_Cnt nsd::Track ;16 Length Counter -000000r 3 .endif -000000r 3 Envelop .tag NSD_Envelop nsd::Track ;26 Envelop counter -000000r 3 .Endstruct -000000r 3 -000000r 3 ; 6 + ( 6 [Byte] * 28 [ch] ) = 174 -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ; Defines for work structures -000000r 3 -000000r 3 .scope nsd_flag -000000r 3 BGM = $01 -000000r 3 SE = $02 -000000r 3 Priority = $0C -000000r 3 Disable = $80 -000000r 3 .endscope -000000r 3 -000000r 3 ;Zero Page Works -000000r 3 .define __ptr nsd_work_zp + NSD_work_zp::_ptr -000000r 3 .define __tmp nsd_work_zp + NSD_work_zp::_tmp -000000r 3 ;.define __flag nsd_work_zp + NSD_work_zp::flag -000000r 3 .define __channel nsd_work_zp + NSD_work_zp::channel -000000r 3 .define __Sequence_ptr nsd_work_zp + NSD_work_zp::Sequence_ptr -000000r 3 -000000r 3 .define __Envelop_V nsd_work_zp + NSD_work_zp::Envelop + NSD_Envelop::V ;upper 4bit Voice / lower 4bit:Volume -000000r 3 .define __Envelop_F nsd_work_zp + NSD_work_zp::Envelop + NSD_Envelop::F ;upper 4bit:Note / lower 4bit:Frequency -000000r 3 -000000r 3 .define __flag nsd_work_zp + NSD_work_zp::Envelop + NSD_Envelop::V + nsd::TR_BGM3 -000000r 3 .define __Tempo nsd_work_zp + NSD_work_zp::Envelop + NSD_Envelop::F + nsd::TR_BGM5 -000000r 3 .define __Tempo_ctr nsd_work_zp + NSD_work_zp::Envelop + NSD_Envelop::V + nsd::TR_BGM5 -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 ;======================================================================= -000000r 3 ; Working Struct define in RAM area -000000r 3 ;----------------------------------------------------------------------- -000000r 3 -000000r 3 .Struct NSD_Flag -000000r 3 flag .byte ;flag -000000r 3 gatemode .byte ;gate mode -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_length -000000r 3 length .byte ;`l' command value -000000r 3 tai .byte ;flag of Tai & Slur -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_gatetime -000000r 3 q .byte ;`q' command value -000000r 3 u .byte ;`u' command value -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_note -000000r 3 note .byte ;`note' command value (bit 7 = `H' : rest) -000000r 3 octave .byte ;`o' command value -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Detune -000000r 3 cent .byte ;`D' command value -000000r 3 fine .byte ;`D%' command value -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Por_Lv ;(ch5 : BGM1 & BGM2 Frequency) -000000r 3 target .byte ;`P' target -000000r 3 depth .byte ;`P' add value -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Por_Co ;(ch5 : BGM3 & SE Frequency) -000000r 3 count .byte ;rate control -000000r 3 rate .byte ;now depth -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Trans -000000r 3 trans .byte ;`_' command value -000000r 3 onetime .byte ;`'', `"' command value -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Repeat -000000r 3 count1 .byte ;counter of repeat(A) -000000r 3 count2 .byte ;counter of repeat(B) -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_volume -000000r 3 volume .byte ;`v' & `vR' command value -000000r 3 volume_env .byte ;now envelop volume (ch3,5 : sweep value of ch1,2) -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_voice -000000r 3 voice .byte ;`@R' command value (upper 4bit) ;※廃止 -000000r 3 voice_set .byte ;deveice setting value -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Env_V_Ptr ;(ch5 : pointer of 儕CM information) -000000r 3 Volume .byte ;Volume -000000r 3 Voice .byte ;Voice -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Env_F_Ptr -000000r 3 Frequency .byte ;Freeuqncy -000000r 3 Note .byte ;Note -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_Env_F_Now -000000r 3 Frequency .byte ;now envelop Freeuqncy -000000r 3 Note .byte ;now envelop Note -000000r 3 .Endstruct -000000r 3 -000000r 3 .Struct NSD_work -000000r 3 Flag .tag NSD_Flag nsd::Track ;flag -000000r 3 .ifdef HFX4 -000000r 3 LengthCnt .tag NSD_Length_Cnt nsd::Track ;16 Length Counter -000000r 3 .endif -000000r 3 Length .tag NSD_length nsd::Track ;note length [tick] -000000r 3 Gatetime .tag NSD_gatetime nsd::Track ;gate time [tick] -000000r 3 Note .tag NSD_note nsd::Track ;octave and note command -000000r 3 Detune .tag NSD_Detune nsd::Track ;detune -000000r 3 Por_Lv .tag NSD_Por_Lv nsd::Track ;Portamento / TR5: BGM1 & BGM2 frequency -000000r 3 Por_Co .tag NSD_Por_Co nsd::Track ;Portamento / TR5: BGM3 & SE1 frequency -000000r 3 Por_now .word nsd::Track ;Portamento -000000r 3 Trans .tag NSD_Trans nsd::Track ;Transpose -000000r 3 Repeat .tag NSD_Repeat nsd::Track ;Repeat -000000r 3 Volume .tag NSD_volume nsd::Track ;volume / TR3: BGM1 sweep / TR5: BGM2 sweep -000000r 3 Voice .tag NSD_voice nsd::Track ;voice -000000r 3 Env_F_Now .tag NSD_Env_F_Now nsd::Track ;Now value of envelop -000000r 3 Env_V_Ptr .tag NSD_Env_V_Ptr nsd::Track ;Address of envelop / TR5:DPCM info -000000r 3 Env_F_Ptr .tag NSD_Env_F_Ptr nsd::Track ;Address of envelop -000000r 3 Envelop_Volume .word nsd::Track ;Pointer of envelop -000000r 3 Envelop_Voice .word nsd::Track ;Pointer of envelop -000000r 3 Envelop_Freq .word nsd::Track ;Pointer of envelop -000000r 3 Envelop_Note .word nsd::Track ;Pointer of envelop -000000r 3 Frequency .word nsd::Track ;Setting frequency -000000r 3 SubRoutine .word nsd::Track ;Pointer of sub-routine return address -000000r 3 Repeat2 .word nsd::Track ;Pointer of repeat2 goto point -000000r 3 -000000r 3 .ifdef MMC5 -000000r 3 MMC5_Frequency .byte nsd::MMC5_Track ;MMC5 frequency -000000r 3 .endif -000000r 3 -000000r 3 .ifdef FDS -000000r 3 FDS_Frequency .byte ;FDS frequency -000000r 3 FDS_SweepBias .byte ;FDS Sweep bias -000000r 3 .endif -000000r 3 -000000r 3 .ifdef VRC7 -000000r 3 VRC7_Frequency .byte nsd::VRC7_Track ;VRC7 frequecny -000000r 3 VRC7_Freq_old .byte nsd::VRC7_Track -000000r 3 VRC7_Reg .word ; -000000r 3 .endif -000000r 3 -000000r 3 .ifdef OPLL -000000r 3 OPLL_Frequency .byte nsd::OPLL_Track_FM ;OPLL frequency (FM) -000000r 3 OPLL_Freq_old .byte nsd::OPLL_Track_FM -000000r 3 OPLL_Reg .word -000000r 3 OPLL_Rhythm .byte ;OPLL Rhythm -000000r 3 .endif -000000r 3 -000000r 3 .ifdef N163 -000000r 3 N163_num .byte ;N163 ch number -000000r 3 N163_Frequency .byte nsd::N163_Track ;N163 frequency -000000r 3 .endif -000000r 3 -000000r 3 .ifdef PSG -000000r 3 PSG_switch .byte ;PSG switch -000000r 3 .endif -000000r 3 -000000r 3 .Endstruct -000000r 3 -000000r 3 -000000r 3 -000000r 3 ;--------------------------------------- -000000r 3 ; Defines for work structures -000000r 3 -000000r 3 .scope nsd_chflag -000000r 3 SE2 = $80 -000000r 3 SE1 = $40 -000000r 3 Sustain = $20 ;for VRC7 -000000r 3 KeyOn = $10 ;for VRC7 -000000r 3 Envelop = $10 ;for PSG -000000r 3 FDSVOL = $0C -000000r 3 KeyOff = $03 ;00 Key Off : Vol = 0 -000000r 3 ;01 Key Off : Release command -000000r 3 ;10 Key Off : envelop -000000r 3 ;11 Note On : (envelop) -000000r 3 .endscope -000000r 3 -000000r 3 .scope nsd_mode -000000r 3 voiceR = $F0 -000000r 3 voice = $08 -000000r 3 gatemode = $03 -000000r 3 .endscope -000000r 3 -000000r 3 -000000r 3 ;RAM Works -000000r 3 .ifdef HFX4 -000000r 3 .define __Length_ctr nsd_work + NSD_work::LengthCnt + NSD_Length_Cnt::counter -000000r 3 .define __Gate nsd_work + NSD_work::LengthCnt + NSD_Length_Cnt::gate -000000r 3 .else -000000r 3 .define __Length_ctr nsd_work_zp + NSD_work_zp::LengthCnt + NSD_Length_Cnt::counter -000000r 3 .define __Gate nsd_work_zp + NSD_work_zp::LengthCnt + NSD_Length_Cnt::gate -000000r 3 .endif -000000r 3 -000000r 3 .define __chflag nsd_work + NSD_work::Flag + NSD_Flag::flag -000000r 3 .define __gatemode nsd_work + NSD_work::Flag + NSD_Flag::gatemode -000000r 3 .define __tai nsd_work + NSD_work::Length + NSD_length::tai -000000r 3 .define __length nsd_work + NSD_work::Length + NSD_length::length -000000r 3 .define __gate_q nsd_work + NSD_work::Gatetime + NSD_gatetime::q -000000r 3 .define __gate_u nsd_work + NSD_work::Gatetime + NSD_gatetime::u -000000r 3 .define __note nsd_work + NSD_work::Note + NSD_note::note -000000r 3 .define __octave nsd_work + NSD_work::Note + NSD_note::octave -000000r 3 .define __detune_cent nsd_work + NSD_work::Detune + NSD_Detune::cent -000000r 3 .define __detune_fine nsd_work + NSD_work::Detune + NSD_Detune::fine -000000r 3 .define __por_target nsd_work + NSD_work::Por_Lv + NSD_Por_Lv::target -000000r 3 .define __por_depth nsd_work + NSD_work::Por_Lv + NSD_Por_Lv::depth -000000r 3 .define __por_ctr nsd_work + NSD_work::Por_Co + NSD_Por_Co::count -000000r 3 .define __por_rate nsd_work + NSD_work::Por_Co + NSD_Por_Co::rate -000000r 3 .define __por_now nsd_work + NSD_work::Por_now -000000r 3 .define __trans nsd_work + NSD_work::Trans + NSD_Trans::trans -000000r 3 .define __trans_one nsd_work + NSD_work::Trans + NSD_Trans::onetime -000000r 3 .define __repeat_ctr nsd_work + NSD_work::Repeat + NSD_Repeat::count1 -000000r 3 .define __repeat_ctr2 nsd_work + NSD_work::Repeat + NSD_Repeat::count2 -000000r 3 .define __volume nsd_work + NSD_work::Volume + NSD_volume::volume -000000r 3 ;.define __voice nsd_work + NSD_work::Voice + NSD_voice::voice -000000r 3 .define __voice_set nsd_work + NSD_work::Voice + NSD_voice::voice_set -000000r 3 .define __frequency nsd_work + NSD_work::Frequency -000000r 3 .define __subroutine nsd_work + NSD_work::SubRoutine -000000r 3 .define __repeat2 nsd_work + NSD_work::Repeat2 -000000r 3 .define __env_volume nsd_work + NSD_work::Envelop_Volume -000000r 3 .define __env_voice nsd_work + NSD_work::Envelop_Voice -000000r 3 .define __env_frequency nsd_work + NSD_work::Envelop_Freq -000000r 3 .define __env_note nsd_work + NSD_work::Envelop_Note -000000r 3 .define __env_vol_ptr nsd_work + NSD_work::Env_V_Ptr + NSD_Env_V_Ptr::Volume -000000r 3 .define __env_voi_ptr nsd_work + NSD_work::Env_V_Ptr + NSD_Env_V_Ptr::Voice -000000r 3 .define __env_freq_ptr nsd_work + NSD_work::Env_F_Ptr + NSD_Env_F_Ptr::Frequency -000000r 3 .define __env_note_ptr nsd_work + NSD_work::Env_F_Ptr + NSD_Env_F_Ptr::Note -000000r 3 ; voiceに関しては、その後の演算は無いので、更新されない場合はエンベロープ処理を終了する。 -000000r 3 .define __env_vol_now nsd_work + NSD_work::Volume + NSD_volume::volume_env -000000r 3 .define __env_freq_now nsd_work + NSD_work::Env_F_Now + NSD_Env_F_Now::Frequency -000000r 3 .define __env_note_now nsd_work + NSD_work::Env_F_Now + NSD_Env_F_Now::Note -000000r 3 -000000r 3 .define __sweep_ch1 nsd_work + NSD_work::Volume + NSD_volume::volume_env + nsd::TR_BGM3 -000000r 3 .define __sweep_ch2 nsd_work + NSD_work::Volume + NSD_volume::volume_env + nsd::TR_BGM5 -000000r 3 -000000r 3 -000000r 3 .define __apu_frequency1 nsd_work + NSD_work::Por_Lv + nsd::TR_BGM5 ;.byte -000000r 3 .define __apu_frequency2 nsd_work + NSD_work::Por_Lv + nsd::TR_BGM5 + 1 ;.byte -000000r 3 .define __apu_frequency3 nsd_work + NSD_work::Por_Co + nsd::TR_BGM5 ;.byte -000000r 3 .define __se_frequency nsd_work + NSD_work::Por_Co + nsd::TR_BGM5 + 1 ;.byte -000000r 3 .define __dpcm_info nsd_work + NSD_work::Env_V_Ptr + nsd::TR_BGM5 ;.word -000000r 3 -000000r 3 .ifdef MMC5 -000000r 3 .define __mmc5_frequency1 nsd_work + NSD_work::MMC5_Frequency + 0 -000000r 3 .define __mmc5_frequency2 nsd_work + NSD_work::MMC5_Frequency + 1 -000000r 3 .endif -000000r 3 -000000r 3 .ifdef FDS -000000r 3 .define __fds_frequency nsd_work + NSD_work::FDS_Frequency -000000r 3 .define __fds_sweepbias nsd_work + NSD_work::FDS_SweepBias -000000r 3 .endif -000000r 3 -000000r 3 .ifdef VRC7 -000000r 3 .define __vrc7_frequency nsd_work + NSD_work::VRC7_Frequency -000000r 3 .define __vrc7_freq_old nsd_work + NSD_work::VRC7_Freq_old -000000r 3 .define __vrc7_reg nsd_work + NSD_work::VRC7_Reg -000000r 3 .endif -000000r 3 -000000r 3 .ifdef OPLL -000000r 3 .define __opll_frequency nsd_work + NSD_work::OPLL_Frequency -000000r 3 .define __opll_freq_old nsd_work + NSD_work::OPLL_Freq_old -000000r 3 .define __opll_reg nsd_work + NSD_work::OPLL_Reg -000000r 3 .define __opll_ryhthm nsd_work + NSD_work::OPLL_Rhythm -000000r 3 .endif -000000r 3 -000000r 3 .ifdef N163 -000000r 3 .define __n163_num nsd_work + NSD_work::N163_num -000000r 3 .define __n163_frequency nsd_work + NSD_work::N163_Frequency -000000r 3 .endif -000000r 3 -000000r 3 .ifdef PSG -000000r 3 .define __psg_switch nsd_work + NSD_work::PSG_switch -000000r 3 .endif -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 ;======================================================================= -000000r 3 ; Struct of DPCM -000000r 3 ;----------------------------------------------------------------------- -000000r 3 .Struct nsd_dpcm -000000r 3 Control .byte ;I/O 0x4010 -000000r 3 DA .byte ;I/O 0x4011 -000000r 3 Address .byte ;I/O 0x4012 -000000r 3 Size .byte ;I/O 0x4013 -000000r 3 .ifdef DPCMBank -000000r 3 Bank .byte ;Bank number -000000r 3 Next .byte ;Next number(note) -000000r 3 .endif -000000r 3 .Endstruct -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 -000000r 3 ;**************************************************************** -000000r 3 ;* Macros * -000000r 3 ;**************************************************************** -000000r 3 -000000r 3 ;======================================================================= -000000r 3 ; void NSD_MAIN_BGM() -000000r 3 ;----------------------------------------------------------------------- -000000r 3 ;<> -000000r 3 ; BGM main routine -000000r 3 ;<> -000000r 3 ; none -000000r 3 ;<> -000000r 3 ; none -000000r 3 ;======================================================================= -000000r 3 .macro NSD_MAIN_BGM -000000r 3 .local BGM_Begin -000000r 3 .local BGM_SEQ_Exit -000000r 3 .local BGM_Exit -000000r 3 -000000r 3 lda #nsd_flag::BGM -000000r 3 bit __flag -000000r 3 jne BGM_Exit ;BGM disable ? -000000r 3 -000000r 3 ;------------------------------- -000000r 3 ;Tempo -000000r 3 lda __Tempo_ctr -000000r 3 add __Tempo -000000r 3 sta __Tempo_ctr -000000r 3 jcc BGM_SEQ_Exit -000000r 3 -000000r 3 ;------------------------------- -000000r 3 ;BGM -000000r 3 BGM_Begin: -000000r 3 .repeat nsd::BGM_Track, I -000000r 3 ldx #I*2 + nsd::TR_BGM1 -000000r 3 jsr nsd_sequence -000000r 3 .endrepeat -000000r 3 -000000r 3 lda __Tempo_ctr -000000r 3 sub #150 -000000r 3 sta __Tempo_ctr -000000r 3 cmp #106 -000000r 3 jcc BGM_Begin -000000r 3 -000000r 3 BGM_SEQ_Exit: -000000r 3 -000000r 3 ;------- -000000r 3 ;Envelop -000000r 3 .repeat nsd::BGM_Track, I -000000r 3 ;No envelope: DPCM, NULL -000000r 3 .if (I <> 4) && (!(.defined(NULL) && (I = (nsd::TR_NULL / 2)))) -000000r 3 ldx #I*2 + nsd::TR_BGM1 -000000r 3 jsr nsd_envelop -000000r 3 .endif -000000r 3 .endrepeat -000000r 3 -000000r 3 BGM_Exit: -000000r 3 -000000r 3 .endmacro -000000r 3 -000000r 3 ;======================================================================= -000000r 3 ; void NSD_MAIN_SE() -000000r 3 ;----------------------------------------------------------------------- -000000r 3 ;<> -000000r 3 ; SE main routine -000000r 3 ;<> -000000r 3 ; none -000000r 3 ;<> -000000r 3 ; none -000000r 3 ;======================================================================= -000000r 3 .macro NSD_MAIN_SE -000000r 3 .local SE0 -000000r 3 .local SE1 -000000r 3 .local SE_Exit -000000r 3 -000000r 3 lda #nsd_flag::SE -000000r 3 bit __flag -000000r 3 bne SE_Exit ;SE disable ? -000000r 3 -000000r 3 ldx #nsd::TR_SE1 -000000r 3 lda __Sequence_ptr + 1,x -000000r 3 .ifdef DPCMBank -000000r 3 ora __Sequence_ptr,x -000000r 3 .endif -000000r 3 beq SE0 -000000r 3 jsr nsd_sequence -000000r 3 jsr nsd_envelop -000000r 3 SE0: -000000r 3 ldx #nsd::TR_SE2 -000000r 3 lda __Sequence_ptr + 1,x -000000r 3 .ifdef DPCMBank -000000r 3 ora __Sequence_ptr,x -000000r 3 .endif -000000r 3 beq SE1 -000000r 3 jsr nsd_sequence -000000r 3 jsr nsd_envelop -000000r 3 jmp SE_Exit -000000r 3 SE1: -000000r 3 ora __Sequence_ptr + nsd::TR_SE1 + 1 -000000r 3 .ifdef DPCMBank -000000r 3 ora __Sequence_ptr + nsd::TR_SE1 -000000r 3 .endif -000000r 3 bne SE_Exit -000000r 3 -000000r 3 ;SE Disable -000000r 3 lda #nsd_flag::SE -000000r 3 ora __flag -000000r 3 sta __flag -000000r 3 SE_Exit: -000000r 3 -000000r 3 -000000r 3 .endmacro -000000r 3 -000000r 2 -000000r 2 ;**************************************************************** -000000r 2 ;* Function of Library * -000000r 2 ;**************************************************************** -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_main(void); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : main routine of this sound driver -000000r 2 ; Arguments : None -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ; Useage : Call by 60[Hz]. e.g. V-Blank -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_main -000000r 2 .import _nsd_main_bgm -000000r 2 .import _nsd_main_se -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_init(void); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Initraize this sound driver. -000000r 2 ; Arguments : None -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ; Useage : Call when start up. -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_init -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_set_dpcm(nsd_dpcm* dpcm); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Set the Delta PCM information. -000000r 2 ; Arguments : AX Pointer of the Delta PCM information. -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_set_dpcm -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_play_bgm(void* ptr); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Play the BGM -000000r 2 ; Arguments : AX Pointer of the BGM data. -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_play_bgm -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_stop_bgm(void); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Stop the BGM -000000r 2 ; Arguments : None -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_stop_bgm -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_pause_bgm(void); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Pause the BGM -000000r 2 ; Arguments : None -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_pause_bgm -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_resume_bgm(void); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Resume the BGM -000000r 2 ; Arguments : None -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_resume_bgm -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_play_se(void* ptr); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Play the SE -000000r 2 ; Arguments : AX Pointer of the SE data. -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_play_se -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; void __fastcall__ nsd_stop_se(void); -000000r 2 ;----------------------------------------------- -000000r 2 ; Summary : Stop the SE -000000r 2 ; Arguments : None -000000r 2 ; Return : None -000000r 2 ; Modifies : A X Y -000000r 2 ;----------------------------------------------- -000000r 2 .import _nsd_stop_se -000000r 2 -000000r 2 -000000r 2 -000000r 2 ;----------------------------------------------- -000000r 2 ; Work area of nsd.lib -000000r 2 ;----------------------------------------------- -000000r 2 .importzp nsd_work_zp -000000r 2 .import nsd_work -000000r 2 -000000r 2 -000000r 2 -000000r 2 -000000r 1 -000000r 1 ; ------------------------------------------------------------------------ -000000r 1 ; play -000000r 1 ; ------------------------------------------------------------------------ -000000r 1 -000000r 1 .rodata -000000r 1 -000000r 1 ;Address of D-PCM information -000000r 1 rr rr dpcm_info: .addr _Test_DPCMinfo -000002r 1 -000002r 1 ;Address of BGM Sequence -000002r 1 rr rr bgm_00: .addr _Test_BGM0 -000004r 1 -000004r 1 -000004r 1 .code -000000r 1 .proc _bgm_play -000000r 1 -000000r 1 ;--------------- -000000r 1 ;Set D-PCM information to nsd.lib -000000r 1 AD rr rr lda dpcm_info -000003r 1 AE rr rr ldx dpcm_info + 1 -000006r 1 20 rr rr jsr _nsd_set_dpcm -000009r 1 -000009r 1 ;--------------- -000009r 1 ;Play BGM -000009r 1 AD rr rr lda bgm_00 -00000Cr 1 AE rr rr ldx bgm_00 + 1 -00000Fr 1 20 rr rr jsr _nsd_play_bgm -000012r 1 -000012r 1 60 rts -000013r 1 -000013r 1 .endproc -000013r 1 -000013r 1 ; ------------------------------------------------------------------------ -000013r 1 ; main -000013r 1 ; ------------------------------------------------------------------------ -000013r 1 .code -000013r 1 -000013r 1 .proc _main -000013r 1 -000013r 1 A9 00 lda #$0 -000015r 1 20 rr rr jsr _bgm_play -000018r 1 -000018r 1 @loop: -000018r 1 ;--------------- -000018r 1 ; Wait for vblank -000018r 1 AD 02 20 @wait: lda PPU_STATUS -00001Br 1 10 FB bpl @wait -00001Dr 1 -00001Dr 1 -00001Dr 1 -00001Dr 1 4C rr rr jmp @loop -000020r 1 -000020r 1 60 rts -000021r 1 -000021r 1 .endproc -000021r 1 diff --git a/sample/ca65/main.o b/sample/ca65/main.o deleted file mode 100644 index ec49da5..0000000 Binary files a/sample/ca65/main.o and /dev/null differ diff --git a/sample/ca65/nsc.exe b/sample/ca65/nsc.exe deleted file mode 100644 index 60ee67b..0000000 Binary files a/sample/ca65/nsc.exe and /dev/null differ diff --git a/sample/ca65/test.map b/sample/ca65/test.map deleted file mode 100644 index 1e292a1..0000000 --- a/sample/ca65/test.map +++ /dev/null @@ -1,280 +0,0 @@ -Modules list: -------------- -crt0.o: - CODE Offs = 000000 Size = 000000 - RODATA Offs = 000000 Size = 000000 - BSS Offs = 000000 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 - HEADER Offs = 000000 Size = 000010 - STARTUP Offs = 000000 Size = 000076 - VECTORS Offs = 000000 Size = 000006 -main.o: - CODE Offs = 000000 Size = 000021 - RODATA Offs = 000000 Size = 000004 - BSS Offs = 000000 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -testmus.o: - CODE Offs = 000021 Size = 000000 - RODATA Offs = 000004 Size = 000000 - BSS Offs = 000000 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 - MUSDATA Offs = 000000 Size = 0000E1 - PCMDATA Offs = 000000 Size = 000AF1 -..\..\lib\\nsd.lib(nsd_init.o): - CODE Offs = 000021 Size = 00000A - RODATA Offs = 000004 Size = 000000 - BSS Offs = 000000 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_set_dpcm.o): - CODE Offs = 00002B Size = 000007 - RODATA Offs = 000004 Size = 000000 - BSS Offs = 000000 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_main.o): - CODE Offs = 000032 Size = 000083 - RODATA Offs = 000004 Size = 000000 - BSS Offs = 000000 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_play_bgm.o): - CODE Offs = 0000B5 Size = 0000D7 - RODATA Offs = 000004 Size = 000000 - BSS Offs = 000000 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_stop_bgm.o): - CODE Offs = 00018C Size = 000020 - RODATA Offs = 000004 Size = 000000 - BSS Offs = 000000 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_play_se.o): - CODE Offs = 0001AC Size = 000086 - RODATA Offs = 000004 Size = 000000 - BSS Offs = 000000 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_stop_se.o): - CODE Offs = 000232 Size = 000024 - RODATA Offs = 000004 Size = 000000 - BSS Offs = 000000 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_sequence.o): - CODE Offs = 000256 Size = 000548 - RODATA Offs = 000004 Size = 000090 - BSS Offs = 000000 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_envelope.o): - CODE Offs = 00079E Size = 00022E - RODATA Offs = 000094 Size = 000000 - BSS Offs = 000000 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_snd.o): - CODE Offs = 0009CC Size = 000236 - RODATA Offs = 000094 Size = 000114 - BSS Offs = 000000 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_math.o): - CODE Offs = 000C02 Size = 000069 - RODATA Offs = 0001A8 Size = 000000 - BSS Offs = 000000 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_work.o): - CODE Offs = 000C6B Size = 000000 - RODATA Offs = 0001A8 Size = 000000 - BSS Offs = 000000 Size = 000134 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 00002F - NULL Offs = 000000 Size = 000000 - - -Segment list: -------------- -Name Start End Size --------------------------------------------- -HEADER 000000 00000F 000010 -NULL 000000 000000 000000 -ZEROPAGE 000002 000030 00002F -BSS 000200 000333 000134 -DATA 006000 006000 000000 -MUSDATA 008000 0080E0 0000E1 -PCMDATA 00C000 00CAF0 000AF1 -STARTUP 00E000 00E075 000076 -CODE 00E076 00ECE0 000C6B -RODATA 00ECE1 00EE88 0001A8 -VECTORS 00FFFA 00FFFF 000006 - - -Exports list: -------------- -_Test_BGM0 0080AC RLA _Test_DPCMinfo 008000 RLA -__BSS_LOAD__ 000200 LA __BSS_RUN__ 000200 LA -__BSS_SIZE__ 000134 EA __CODE_LOAD__ 00E076 LA -__CODE_RUN__ 00E076 LA __CODE_SIZE__ 000C6B EA -__DATA_LOAD__ 00EE89 LA __DATA_RUN__ 006000 LA -__DATA_SIZE__ 000000 EA __MUSDATA_LOAD__ 008000 LA -__MUSDATA_RUN__ 008000 LA __MUSDATA_SIZE__ 0000E1 EA -__PCMDATA_LOAD__ 00C000 LA __PCMDATA_RUN__ 00C000 LA -__PCMDATA_SIZE__ 000AF1 EA __RAM_LAST__ 006000 LA -__RAM_SIZE__ 002000 EA __RAM_START__ 006000 LA -__RODATA_LOAD__ 00ECE1 LA __RODATA_RUN__ 00ECE1 LA -__RODATA_SIZE__ 0001A8 EA __ROM0_LAST__ 0080E1 LA -__ROM0_SIZE__ 004000 EA __ROM0_START__ 008000 LA -__ROMD_LAST__ 00CAF1 LA __ROMD_SIZE__ 002000 EA -__ROMD_START__ 00C000 LA __ROMP_LAST__ 00EE89 LA -__ROMP_SIZE__ 001FFA EA __ROMP_START__ 00E000 LA -__SRAM_LAST__ 000334 LA __SRAM_SIZE__ 000600 EA -__SRAM_START__ 000200 LA __STARTUP_LOAD__ 00E000 LA -__STARTUP_RUN__ 00E000 LA __STARTUP_SIZE__ 000076 EA -__STARTUP__ 000001 EA __ZP_LAST__ 000031 LA -__ZP_SIZE__ 000060 EA __ZP_START__ 000002 LA -_main 00E089 RLA _nsd_div192 00EC78 RLA -_nsd_dpcm_calc 00EA68 LA _nsd_init 00E097 RLA -_nsd_main 00E0A8 RLA _nsd_mul 00ECB8 RLA -_nsd_play 00E184 RLA _nsd_play_bgm 00E12B RLA -_nsd_play_se 00E222 RLA _nsd_set_dpcm 00E0A1 RLA -_nsd_snd_frequency 00EB85 RLA _nsd_snd_init 00EA42 RLA -_nsd_snd_keyoff 00EAD6 RLA _nsd_snd_keyon 00EA83 RLA -_nsd_snd_sweep 00EB66 RLA _nsd_snd_voice 00EAF6 RLA -_nsd_snd_volume 00EB33 RLA _nsd_stop_bgm 00E202 RLA -_nsd_stop_se 00E2A8 RLA nsd_envelop 00E814 RLA -nsd_sequence 00E3F3 RLA nsd_work 000200 RLA -nsd_work_zp 000002 RLZ - - -Imports list: -------------- -_Test_BGM0 (testmus.o): - main.o main.s(5) -_Test_DPCMinfo (testmus.o): - main.o main.s(4) -__BSS_LOAD__ ([linker generated]): -__BSS_RUN__ ([linker generated]): -__BSS_SIZE__ ([linker generated]): -__CODE_LOAD__ ([linker generated]): -__CODE_RUN__ ([linker generated]): -__CODE_SIZE__ ([linker generated]): -__DATA_LOAD__ ([linker generated]): -__DATA_RUN__ ([linker generated]): -__DATA_SIZE__ ([linker generated]): -__MUSDATA_LOAD__ ([linker generated]): -__MUSDATA_RUN__ ([linker generated]): -__MUSDATA_SIZE__ ([linker generated]): -__PCMDATA_LOAD__ ([linker generated]): -__PCMDATA_RUN__ ([linker generated]): -__PCMDATA_SIZE__ ([linker generated]): -__RAM_LAST__ ([linker generated]): -__RAM_SIZE__ ([linker generated]): -__RAM_START__ ([linker generated]): -__RODATA_LOAD__ ([linker generated]): -__RODATA_RUN__ ([linker generated]): -__RODATA_SIZE__ ([linker generated]): -__ROM0_LAST__ ([linker generated]): -__ROM0_SIZE__ ([linker generated]): -__ROM0_START__ ([linker generated]): -__ROMD_LAST__ ([linker generated]): -__ROMD_SIZE__ ([linker generated]): -__ROMD_START__ ([linker generated]): -__ROMP_LAST__ ([linker generated]): -__ROMP_SIZE__ ([linker generated]): -__ROMP_START__ ([linker generated]): -__SRAM_LAST__ ([linker generated]): -__SRAM_SIZE__ ([linker generated]): -__SRAM_START__ ([linker generated]): -__STARTUP_LOAD__ ([linker generated]): -__STARTUP_RUN__ ([linker generated]): -__STARTUP_SIZE__ ([linker generated]): -__STARTUP__ (crt0.o): -__ZP_LAST__ ([linker generated]): -__ZP_SIZE__ ([linker generated]): -__ZP_START__ ([linker generated]): -_main (main.o): - crt0.o crt0.s(27) -_nsd_div192 (nsd_math.o): - nsd_snd.o nsd_snd.s(19) -_nsd_dpcm_calc (nsd_snd.o): -_nsd_init (nsd_init.o): - crt0.o ..\..\include\nsd.inc(40) -_nsd_main (nsd_main.o): - crt0.o ..\..\include\nsd.inc(26) -_nsd_mul (nsd_math.o): - nsd_envelope.o nsd_envelope.s(14) -_nsd_play (nsd_play_bgm.o): - nsd_play_se.o nsd_play_se.s(11) -_nsd_play_bgm (nsd_play_bgm.o): - main.o ..\..\include\nsd.inc(62) -_nsd_play_se (nsd_play_se.o): - nsd_sequence.o nsd_sequence.s(15) -_nsd_set_dpcm (nsd_set_dpcm.o): - main.o ..\..\include\nsd.inc(51) -_nsd_snd_frequency (nsd_snd.o): - nsd_envelope.o nsd_envelope.s(13) -_nsd_snd_init (nsd_snd.o): - nsd_init.o nsd_init.s(14) -_nsd_snd_keyoff (nsd_snd.o): - nsd_sequence.o nsd_sequence.s(12) - nsd_stop_se.o nsd_stop_se.s(16) - nsd_stop_bgm.o nsd_stop_bgm.s(13) -_nsd_snd_keyon (nsd_snd.o): - nsd_sequence.o nsd_sequence.s(11) -_nsd_snd_sweep (nsd_snd.o): - nsd_sequence.o nsd_sequence.s(13) -_nsd_snd_voice (nsd_snd.o): - nsd_envelope.o nsd_envelope.s(11) - nsd_sequence.o nsd_sequence.s(14) -_nsd_snd_volume (nsd_snd.o): - nsd_envelope.o nsd_envelope.s(12) - nsd_stop_se.o nsd_stop_se.s(15) - nsd_stop_bgm.o nsd_stop_bgm.s(12) -_nsd_stop_bgm (nsd_stop_bgm.o): - nsd_play_bgm.o nsd_play_bgm.s(12) - nsd_init.o nsd_init.s(11) -_nsd_stop_se (nsd_stop_se.o): - nsd_init.o nsd_init.s(12) -nsd_envelop (nsd_envelope.o): - nsd_main.o nsd_main.s(15) -nsd_sequence (nsd_sequence.o): - nsd_main.o nsd_main.s(14) -nsd_work (nsd_work.o): - nsd_snd.o nsd_snd.s(21) - nsd_envelope.o nsd_envelope.s(20) - nsd_sequence.o nsd_sequence.s(16) - nsd_stop_se.o nsd_stop_se.s(18) - nsd_stop_bgm.o nsd_stop_bgm.s(15) - nsd_play_bgm.o nsd_play_bgm.s(18) - nsd_set_dpcm.o nsd_set_dpcm.s(11) -nsd_work_zp (nsd_work.o): - nsd_play_se.o nsd_play_se.s(19) - nsd_math.o nsd_math.s(12) - nsd_snd.o nsd_snd.s(22) - nsd_envelope.o nsd_envelope.s(21) - nsd_sequence.o nsd_sequence.s(17) - nsd_stop_se.o nsd_stop_se.s(19) - nsd_stop_bgm.o nsd_stop_bgm.s(16) - nsd_play_bgm.o nsd_play_bgm.s(19) - nsd_main.o nsd_main.s(11) - diff --git a/sample/ca65/test.nes b/sample/ca65/test.nes index 6d2ea23..5248c2a 100644 Binary files a/sample/ca65/test.nes and b/sample/ca65/test.nes differ diff --git a/sample/ca65/testmus.lst b/sample/ca65/testmus.lst deleted file mode 100644 index a0b8a16..0000000 --- a/sample/ca65/testmus.lst +++ /dev/null @@ -1,372 +0,0 @@ -ca65 V2.13.3 - (C) Copyright 1998-2012 Ullrich von Bassewitz -Main file : testmus.s -Current file: testmus.s - -000000r 1 ;=============================================================== -000000r 1 ; Music file for NES Sound Driver & Library -000000r 1 ; for assembly language (ca65.exe) -000000r 1 ;=============================================================== -000000r 1 -000000r 1 .export _Test_BGM0 -000000r 1 .export _Test_DPCMinfo -000000r 1 -000000r 1 -000000r 1 .segment "MUSDATA" -000000r 1 _Test_DPCMinfo: -000000r 1 00 00 00 00 .byte $00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$0e ,$40 ,$00 ,$2f ,$0f ,$40 -000004r 1 00 00 00 00 -000008r 1 00 00 00 00 -00000Cr 1 00 00 00 00 -000010r 1 00 00 00 00 -000014r 1 00 00 00 00 -000018r 1 00 00 00 00 -00001Cr 1 00 00 00 00 -000020r 1 00 00 00 00 -000024r 1 00 00 00 00 -000028r 1 00 00 00 00 -00002Cr 1 0E 40 00 2F -000030r 1 0F 40 00 2F -000034r 1 00 00 00 00 -000038r 1 0F 40 0C 3F -00003Cr 1 00 00 00 00 -000040r 1 0E 40 0C 3F -000044r 1 0A 40 1C 3F -000048r 1 00 00 00 00 -00004Cr 1 0B 40 1C 3F -000050r 1 00 00 00 00 -000054r 1 0C 40 1C 3F -000058r 1 00 00 00 00 -00005Cr 1 0D 40 1C 3F -000060r 1 0E 40 1C 3F -000064r 1 00 00 00 00 -000068r 1 0F 40 1C 3F -00006Cr 1 ,$00 ,$2f ,$00 ,$00 ,$00 ,$00 ,$0f ,$40 ,$0c ,$3f ,$00 ,$00 ,$00 ,$00 ,$0e ,$40 ,$0c ,$3f ,$0a ,$40 ,$1c ,$3f ,$00 ,$00 ,$00 ,$00 ,$0b ,$40 ,$1c ,$3f ,$00 ,$00 ,$00 ,$00 ,$0c ,$40 ,$1c ,$3f ,$00 ,$00 ,$00 ,$00 ,$0d ,$40 ,$1c ,$3f ,$0e ,$40 ,$1c ,$3f ,$00 -00006Cr 1 ,$00 ,$00 ,$00 ,$0f ,$40 ,$1c ,$3f -00006Cr 1 -00006Cr 1 -00006Cr 1 .segment "PCMDATA" -000000r 1 .align $40 -000000r 1 _Test_DPCM0: -000000r 1 FE FF FF FD .byte $fe ,$ff ,$ff ,$fd ,$7f ,$fe ,$3f ,$f8 ,$38 ,$7c ,$dc ,$02 ,$1f ,$00 ,$38 ,$c0 ,$01 ,$00 ,$07 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$04 ,$fc ,$60 ,$49 ,$7a ,$f8 ,$2a ,$d5 ,$b5 ,$3d ,$d5 ,$2f ,$3e ,$fe ,$1e ,$ff ,$ff ,$87 ,$ff ,$ff ,$fd ,$4f ,$ff ,$ff -000004r 1 7F FE 3F F8 -000008r 1 38 7C DC 02 -00000Cr 1 1F 00 38 C0 -000010r 1 01 00 07 00 -000014r 1 00 00 00 00 -000018r 1 00 00 04 FC -00001Cr 1 60 49 7A F8 -000020r 1 2A D5 B5 3D -000024r 1 D5 2F 3E FE -000028r 1 1E FF FF 87 -00002Cr 1 FF FF FD 4F -000030r 1 FF FF F1 FF -000034r 1 C3 7F F9 E1 -000038r 1 67 05 3F C0 -00003Cr 1 81 2D 34 25 -000040r 1 D2 1A 29 D4 -000044r 1 16 A8 AA B4 -000048r 1 AA C4 6A 23 -00004Cr 1 E8 AA 12 55 -000050r 1 22 5A 4D 56 -000054r 1 14 D0 00 00 -000058r 1 00 E0 00 20 -00005Cr 1 A0 01 20 82 -000060r 1 DA 83 96 AA -000064r 1 8D EA D6 6E -000068r 1 AB AB DD D5 -00006Cr 1 EE 6C F5 96 -000070r 1 D5 5B BD CA -000074r 1 97 57 55 BB -000078r 1 74 5B 9F AA -00007Cr 1 B6 B6 5E 6B -000080r 1 4F 5C 37 57 -000084r 1 B5 AB AE DA -000088r 1 69 0F AF 52 -00008Cr 1 5D 6A B1 6C -000090r 1 89 9A 6A 55 -000094r 1 A9 AC 4A 55 -000098r 1 A1 49 16 2D -00009Cr 1 A8 55 50 0B -0000A0r 1 25 0A 56 13 -0000A4r 1 B0 D0 02 AB -0000A8r 1 24 48 35 A2 -0000ACr 1 4A 42 A3 22 -0000B0r 1 59 8A 5A 9A -0000B4r 1 E0 55 6C 6A -0000B8r 1 6B D3 DA 74 -0000BCr 1 ED 57 5B DF -0000C0r 1 2E FF D6 FE -0000C4r 1 A7 F7 6F 7B -0000C8r 1 FF FD 7E DD -0000CCr 1 AB B7 AD 9A -0000D0r 1 55 55 55 2A -0000D4r 1 97 AA 4A 95 -0000D8r 1 6A 4A 92 A4 -0000DCr 1 2A 94 A8 A0 -0000E0r 1 12 49 48 4A -0000E4r 1 44 12 92 28 -0000E8r 1 0A 29 21 29 -0000ECr 1 49 2A 15 95 -0000F0r 1 6A 64 AD D5 -0000F4r 1 5A 95 D9 AB -0000F8r 1 B6 B6 6E 76 -0000FCr 1 79 AD B6 -0002F1r 1 ,$f1 ,$ff ,$c3 ,$7f ,$f9 ,$e1 ,$67 ,$05 ,$3f ,$c0 ,$81 ,$2d ,$34 ,$25 ,$d2 ,$1a ,$29 ,$d4 ,$16 ,$a8 ,$aa ,$b4 ,$aa ,$c4 ,$6a ,$23 ,$e8 ,$aa ,$12 ,$55 ,$22 ,$5a ,$4d ,$56 ,$14 ,$d0 ,$00 ,$00 ,$00 ,$e0 ,$00 ,$20 ,$a0 ,$01 ,$20 ,$82 ,$da ,$83 ,$96 ,$aa ,$8d -0002F1r 1 ,$ea ,$d6 ,$6e ,$ab ,$ab ,$dd ,$d5 ,$ee ,$6c ,$f5 ,$96 ,$d5 ,$5b ,$bd ,$ca ,$97 ,$57 ,$55 ,$bb ,$74 ,$5b ,$9f ,$aa ,$b6 ,$b6 ,$5e ,$6b ,$4f ,$5c ,$37 ,$57 ,$b5 ,$ab ,$ae ,$da ,$69 ,$0f ,$af ,$52 ,$5d ,$6a ,$b1 ,$6c ,$89 ,$9a ,$6a ,$55 ,$a9 ,$ac ,$4a ,$55 -0002F1r 1 ,$a1 ,$49 ,$16 ,$2d ,$a8 ,$55 ,$50 ,$0b ,$25 ,$0a ,$56 ,$13 ,$b0 ,$d0 ,$02 ,$ab ,$24 ,$48 ,$35 ,$a2 ,$4a ,$42 ,$a3 ,$22 ,$59 ,$8a ,$5a ,$9a ,$e0 ,$55 ,$6c ,$6a ,$6b ,$d3 ,$da ,$74 ,$ed ,$57 ,$5b ,$df ,$2e ,$ff ,$d6 ,$fe ,$a7 ,$f7 ,$6f ,$7b ,$ff ,$fd ,$7e -0002F1r 1 ,$dd ,$ab ,$b7 ,$ad ,$9a ,$55 ,$55 ,$55 ,$2a ,$97 ,$aa ,$4a ,$95 ,$6a ,$4a ,$92 ,$a4 ,$2a ,$94 ,$a8 ,$a0 ,$12 ,$49 ,$48 ,$4a ,$44 ,$12 ,$92 ,$28 ,$0a ,$29 ,$21 ,$29 ,$49 ,$2a ,$15 ,$95 ,$6a ,$64 ,$ad ,$d5 ,$5a ,$95 ,$d9 ,$ab ,$b6 ,$b6 ,$6e ,$76 ,$79 ,$ad -0002F1r 1 ,$b6 ,$55 ,$b5 ,$ab ,$ae ,$b4 ,$2e ,$6d ,$ab ,$65 ,$a5 ,$ad ,$aa ,$2c ,$ad ,$8a ,$9a ,$2a ,$a3 ,$2a ,$49 ,$91 ,$54 ,$48 ,$29 ,$09 ,$49 ,$22 ,$54 ,$42 ,$12 ,$8d ,$24 ,$41 ,$4c ,$52 ,$41 ,$aa ,$a8 ,$52 ,$a6 ,$4c ,$d5 ,$d6 ,$aa ,$ad ,$5e ,$b5 ,$d5 ,$dd ,$d6 -0002F1r 1 ,$d6 ,$5b ,$eb ,$6d ,$db ,$ae ,$56 ,$5b ,$b5 ,$ad ,$aa ,$aa ,$a6 ,$5a ,$aa ,$a9 ,$aa ,$aa ,$aa ,$aa ,$ae ,$aa ,$5a ,$5a ,$ad ,$aa ,$92 ,$a5 ,$2a ,$55 ,$55 ,$4a ,$25 ,$25 ,$63 ,$52 ,$a5 ,$4a ,$9a ,$34 ,$69 ,$55 ,$ea ,$b4 ,$4e ,$cd ,$5d ,$d9 ,$d6 ,$ed ,$aa -0002F1r 1 ,$dd ,$5a ,$db ,$6a ,$d5 ,$55 ,$bb ,$b5 ,$d5 ,$d5 ,$36 ,$5b ,$5b ,$d6 ,$66 ,$53 ,$ab ,$6a ,$d5 ,$aa ,$a6 ,$d6 ,$d4 ,$4a ,$55 ,$a5 ,$6c ,$2a ,$55 ,$29 ,$93 ,$a9 ,$a4 ,$58 ,$32 ,$c9 ,$42 ,$a9 ,$54 ,$69 ,$52 ,$a5 ,$4a ,$d6 ,$52 ,$59 ,$5a ,$aa ,$ca ,$2a ,$95 -0002F1r 1 ,$aa ,$4a ,$95 ,$54 ,$a9 ,$2a ,$25 ,$55 ,$52 ,$25 ,$53 ,$92 ,$52 ,$29 ,$95 ,$32 ,$4b ,$9a ,$52 ,$4d ,$59 ,$a5 ,$aa ,$d2 ,$aa ,$6a ,$aa ,$aa ,$cc ,$52 ,$da ,$4c ,$53 ,$96 ,$aa ,$5a ,$aa ,$25 ,$5b ,$32 ,$65 ,$55 ,$9a ,$aa ,$c9 ,$aa ,$b4 ,$2a ,$d3 ,$b4 ,$4a -0002F1r 1 ,$d3 ,$34 ,$2d ,$cb ,$54 ,$ad ,$b2 ,$a9 ,$a9 ,$59 ,$56 ,$4d ,$6b ,$96 ,$65 ,$cd ,$96 ,$55 ,$cd ,$b2 ,$ad ,$da ,$d6 ,$6a ,$6d ,$ab ,$ae ,$6d ,$d9 ,$56 ,$6d ,$d3 ,$b6 ,$56 ,$5b ,$5d ,$6d ,$ad ,$b6 ,$d5 ,$59 ,$ad ,$6a ,$6b ,$b6 ,$6a ,$d9 ,$b2 ,$ac ,$aa ,$a6 -0002F1r 1 ,$2a ,$55 ,$55 ,$a6 ,$2a ,$53 ,$a6 ,$65 ,$aa ,$34 ,$55 ,$99 ,$2a ,$4b ,$53 ,$a6 ,$2a ,$55 ,$95 ,$55 ,$a9 ,$9a ,$2a ,$4b ,$95 ,$65 ,$ca ,$54 ,$65 ,$a9 ,$aa ,$4c ,$55 ,$99 ,$2c ,$55 ,$aa ,$a6 ,$2a ,$53 ,$a5 ,$a5 ,$aa ,$32 ,$55 ,$95 ,$2a ,$55 ,$a9 ,$b2 ,$64 -0002F1r 1 ,$a9 ,$92 ,$49 ,$a9 ,$92 ,$54 ,$49 ,$52 ,$51 ,$49 ,$92 ,$92 ,$4a ,$52 ,$52 ,$8a ,$4a ,$ca ,$28 ,$95 ,$54 ,$a9 ,$54 ,$a9 ,$aa ,$2a ,$ad ,$d2 ,$aa ,$6a ,$55 ,$ad ,$d5 ,$6a ,$b5 ,$5a ,$ab ,$b5 ,$d6 ,$6a ,$ad ,$ad ,$d6 ,$5a ,$6d ,$ad ,$d5 ,$6a ,$ab ,$56 ,$6d -0002F1r 1 ,$b5 ,$6a ,$d5 ,$aa ,$56 ,$35 ,$55 ,$ab ,$6a ,$55 ,$55 ,$55 ,$55 ,$55 ,$a5 ,$5a ,$55 ,$55 ,$55 ,$ab ,$aa ,$55 ,$ab ,$56 ,$ad ,$5a ,$ab ,$d5 ,$5a ,$ab ,$b5 ,$5a ,$6d ,$ab ,$d5 ,$5a ,$ab ,$b6 ,$66 ,$d5 ,$6a ,$d5 ,$6a ,$d5 ,$aa ,$5a ,$55 ,$ab ,$6a ,$55 ,$4b -0002F1r 1 ,$ab ,$aa ,$aa ,$aa ,$4c ,$55 ,$aa ,$54 ,$a9 ,$92 ,$2a ,$49 ,$95 ,$94 ,$54 ,$92 ,$52 ,$52 ,$52 ,$52 ,$4a ,$a9 ,$a4 ,$52 ,$a5 ,$54 ,$a9 ,$54 ,$29 ,$95 ,$2a ,$95 ,$52 ,$a9 ,$52 ,$29 ,$55 ,$52 ,$55 ,$4a ,$55 ,$2a ,$55 ,$95 ,$aa ,$4c ,$55 ,$55 ,$55 ,$5a ,$a6 -0002F1r 1 ,$69 ,$9a ,$aa ,$aa ,$ca ,$2a ,$4d ,$55 ,$55 ,$65 ,$a9 ,$aa ,$2a ,$4b ,$53 ,$55 ,$d5 ,$54 ,$55 ,$d5 ,$b2 ,$ac ,$aa ,$5a ,$55 ,$ad ,$aa ,$56 ,$55 ,$b3 ,$66 ,$d5 ,$aa ,$a6 ,$55 ,$ab ,$66 ,$55 ,$cb ,$aa -0002F1r 1 xx xx xx xx .align $40 -0002F5r 1 xx xx xx xx -0002F9r 1 xx xx xx xx -0002FDr 1 xx xx xx -000300r 1 _Test_DPCM1: -000300r 1 7C 28 FF 8F .byte $7c ,$28 ,$ff ,$8f ,$07 ,$00 ,$00 ,$83 ,$20 ,$b8 ,$9f ,$bf ,$ff ,$ff ,$ff ,$9f ,$ff ,$ef ,$1f ,$e2 ,$08 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$20 ,$8e ,$ff ,$ff ,$ff ,$ff ,$ff ,$ff ,$ff ,$ff ,$9d ,$18 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$18 ,$60 ,$c0 -000304r 1 07 00 00 83 -000308r 1 20 B8 9F BF -00030Cr 1 FF FF FF 9F -000310r 1 FF EF 1F E2 -000314r 1 08 00 00 00 -000318r 1 00 00 00 00 -00031Cr 1 20 8E FF FF -000320r 1 FF FF FF FF -000324r 1 FF FF 9D 18 -000328r 1 00 00 00 00 -00032Cr 1 00 00 00 18 -000330r 1 60 C0 E3 FD -000334r 1 F0 FF FF FF -000338r 1 FF FF 3F FF -00033Cr 1 7F C0 59 20 -000340r 1 27 DC 03 00 -000344r 1 00 00 00 C0 -000348r 1 00 78 FC FF -00034Cr 1 BD FF EE DF -000350r 1 0F 1F FE 01 -000354r 1 20 E0 1D 06 -000358r 1 66 FA E3 87 -00035Cr 1 EF 01 60 3C -000360r 1 07 90 2F 72 -000364r 1 63 F0 FE 01 -000368r 1 C1 FF CF 07 -00036Cr 1 9C 0F FC E7 -000370r 1 E5 02 7F 02 -000374r 1 0E 00 F7 03 -000378r 1 1E F0 3F FC -00037Cr 1 00 C0 03 06 -000380r 1 3C 38 0E FC -000384r 1 FE F9 1F FF -000388r 1 FF E3 81 FF -00038Cr 1 39 43 38 00 -000390r 1 06 80 03 00 -000394r 1 79 00 1E 7C -000398r 1 8F 73 1C FE -00039Cr 1 F8 DF E3 FF -0003A0r 1 E3 CF 01 8F -0003A4r 1 9C 1E 1C 03 -0003A8r 1 C7 60 03 01 -0003ACr 1 61 18 0E 18 -0003B0r 1 9F F0 3E FB -0003B4r 1 C3 F3 3F DF -0003B8r 1 7B F8 FF 03 -0003BCr 1 C2 F3 60 08 -0003C0r 1 00 08 00 C0 -0003C4r 1 23 9E CF E3 -0003C8r 1 33 9E 1F 7E -0003CCr 1 FF B8 F0 E3 -0003D0r 1 43 81 FF BC -0003D4r 1 8F C7 C1 1C -0003D8r 1 7C 00 00 00 -0003DCr 1 00 97 C8 7F -0003E0r 1 1C FE C1 8F -0003E4r 1 9F F7 C6 FF -0003E8r 1 F1 FC 18 0C -0003ECr 1 FC CD 01 C3 -0003F0r 1 03 06 FF 08 -0003F4r 1 00 6E 80 41 -0003F8r 1 9F F8 1B 91 -0003FCr 1 E3 D9 CF -0006F1r 1 ,$e3 ,$fd ,$f0 ,$ff ,$ff ,$ff ,$ff ,$ff ,$3f ,$ff ,$7f ,$c0 ,$59 ,$20 ,$27 ,$dc ,$03 ,$00 ,$00 ,$00 ,$00 ,$c0 ,$00 ,$78 ,$fc ,$ff ,$bd ,$ff ,$ee ,$df ,$0f ,$1f ,$fe ,$01 ,$20 ,$e0 ,$1d ,$06 ,$66 ,$fa ,$e3 ,$87 ,$ef ,$01 ,$60 ,$3c ,$07 ,$90 ,$2f ,$72 ,$63 -0006F1r 1 ,$f0 ,$fe ,$01 ,$c1 ,$ff ,$cf ,$07 ,$9c ,$0f ,$fc ,$e7 ,$e5 ,$02 ,$7f ,$02 ,$0e ,$00 ,$f7 ,$03 ,$1e ,$f0 ,$3f ,$fc ,$00 ,$c0 ,$03 ,$06 ,$3c ,$38 ,$0e ,$fc ,$fe ,$f9 ,$1f ,$ff ,$ff ,$e3 ,$81 ,$ff ,$39 ,$43 ,$38 ,$00 ,$06 ,$80 ,$03 ,$00 ,$79 ,$00 ,$1e ,$7c -0006F1r 1 ,$8f ,$73 ,$1c ,$fe ,$f8 ,$df ,$e3 ,$ff ,$e3 ,$cf ,$01 ,$8f ,$9c ,$1e ,$1c ,$03 ,$c7 ,$60 ,$03 ,$01 ,$61 ,$18 ,$0e ,$18 ,$9f ,$f0 ,$3e ,$fb ,$c3 ,$f3 ,$3f ,$df ,$7b ,$f8 ,$ff ,$03 ,$c2 ,$f3 ,$60 ,$08 ,$00 ,$08 ,$00 ,$c0 ,$23 ,$9e ,$cf ,$e3 ,$33 ,$9e ,$1f -0006F1r 1 ,$7e ,$ff ,$b8 ,$f0 ,$e3 ,$43 ,$81 ,$ff ,$bc ,$8f ,$c7 ,$c1 ,$1c ,$7c ,$00 ,$00 ,$00 ,$00 ,$97 ,$c8 ,$7f ,$1c ,$fe ,$c1 ,$8f ,$9f ,$f7 ,$c6 ,$ff ,$f1 ,$fc ,$18 ,$0c ,$fc ,$cd ,$01 ,$c3 ,$03 ,$06 ,$ff ,$08 ,$00 ,$6e ,$80 ,$41 ,$9f ,$f8 ,$1b ,$91 ,$e3 ,$d9 -0006F1r 1 ,$cf ,$e7 ,$f1 ,$e3 ,$ff ,$71 ,$dc ,$50 ,$8f ,$e3 ,$00 ,$00 ,$0f ,$02 ,$76 ,$60 ,$78 ,$f0 ,$e4 ,$cb ,$77 ,$1c ,$e0 ,$e3 ,$ef ,$7f ,$c6 ,$8c ,$f1 ,$1f ,$00 ,$1e ,$ff ,$6f ,$1c ,$f8 ,$00 ,$84 ,$4f ,$01 ,$80 ,$7f ,$0f ,$1c ,$1c ,$81 ,$e4 ,$f1 ,$e7 ,$f9 ,$0e -0006F1r 1 ,$fc ,$79 ,$7e ,$e8 ,$3f ,$26 ,$3e ,$b8 ,$87 ,$90 ,$f0 ,$08 ,$3f ,$00 ,$e0 ,$47 ,$b0 ,$73 ,$1e ,$e0 ,$e4 ,$c1 ,$cf ,$1f ,$3f ,$10 ,$3e ,$3f ,$1f ,$ff ,$73 ,$ce ,$03 ,$88 ,$fc ,$87 ,$89 ,$e1 ,$18 ,$30 ,$d0 ,$81 ,$21 ,$3b ,$70 ,$04 ,$ff ,$70 ,$e0 ,$fd ,$f3 -0006F1r 1 ,$9f ,$03 ,$5f ,$f7 ,$f6 ,$83 ,$38 ,$86 ,$ff ,$c0 ,$01 ,$10 ,$f8 ,$70 ,$80 ,$f8 ,$3d ,$60 ,$c7 ,$e0 ,$3b ,$f8 ,$9b ,$ff ,$52 ,$c8 ,$f1 ,$cc ,$ed ,$f8 ,$e8 ,$00 ,$8e ,$07 ,$7b ,$10 ,$8e ,$e7 ,$11 ,$1c ,$60 ,$08 ,$fc ,$e1 ,$f1 ,$f9 ,$ef ,$1f ,$c3 ,$e8 ,$83 -0006F1r 1 ,$47 ,$ce ,$e3 ,$02 ,$03 ,$3e ,$bc ,$81 ,$be ,$87 ,$11 ,$7c ,$f0 ,$f1 ,$40 ,$3c ,$02 ,$7f ,$1c ,$7d ,$3e ,$df ,$1f ,$47 ,$80 ,$1f ,$bc ,$e7 ,$e0 ,$79 ,$60 ,$0e ,$70 ,$f8 ,$01 ,$1e ,$e7 ,$20 ,$0e ,$8e ,$07 ,$1f ,$1e ,$9f ,$e3 ,$1f ,$ce ,$e1 ,$3f ,$80 ,$e3 -0006F1r 1 ,$38 ,$db ,$cc ,$c3 ,$19 ,$0c ,$38 ,$f0 ,$fa ,$81 ,$c3 ,$f1 ,$31 ,$dc ,$1b ,$26 ,$f8 ,$37 ,$be ,$70 ,$7a ,$4c ,$c6 ,$39 ,$04 ,$3f ,$7a ,$61 ,$27 ,$e1 ,$41 ,$bc ,$81 ,$f0 ,$05 ,$ff ,$06 ,$87 ,$ff ,$09 ,$99 ,$87 ,$9f ,$7b ,$80 ,$8b ,$30 ,$e7 ,$31 ,$1c ,$ec -0006F1r 1 ,$17 ,$f2 ,$83 ,$21 ,$9e ,$3f ,$18 ,$33 ,$f8 ,$b1 ,$33 ,$7c ,$38 ,$dc ,$f3 ,$e0 ,$c4 ,$e7 ,$e1 ,$40 ,$f8 ,$1f ,$18 ,$70 ,$1c ,$ff ,$e0 ,$70 ,$a0 ,$f3 ,$e1 ,$fc ,$81 ,$ef ,$1f ,$78 ,$c0 ,$88 ,$ef ,$30 ,$80 ,$38 ,$2f ,$0f ,$c3 ,$c3 ,$c7 ,$d1 ,$c1 ,$a7 ,$ff -0006F1r 1 ,$08 ,$1f ,$3b ,$7e ,$60 ,$f0 ,$9c ,$c7 ,$c0 ,$86 ,$17 ,$c2 ,$e3 ,$27 ,$30 ,$fd ,$60 ,$cc ,$e3 ,$88 ,$13 ,$cf ,$b7 ,$3e ,$e7 ,$30 ,$dc ,$cc ,$0f ,$1c ,$de ,$c1 ,$83 ,$20 ,$0f ,$09 ,$f3 ,$39 ,$e0 ,$f0 ,$3c ,$c6 ,$f1 ,$3d ,$c1 ,$f7 ,$e1 ,$c3 ,$71 ,$3c ,$f8 -0006F1r 1 ,$18 ,$9c ,$32 ,$fc ,$d0 ,$b7 ,$c1 ,$01 ,$e3 ,$0f ,$b9 ,$81 ,$33 ,$e4 ,$ee ,$a8 ,$38 ,$76 ,$1e ,$1f ,$f8 ,$e1 ,$0f ,$3d ,$46 ,$63 ,$f2 ,$04 ,$71 ,$1c ,$1f ,$45 ,$1c ,$3f ,$f1 ,$83 ,$c3 ,$74 ,$0e ,$cf ,$70 ,$e0 ,$d9 ,$8f ,$54 ,$c6 ,$3c ,$fe ,$18 ,$39 ,$0f -0006F1r 1 ,$13 ,$3b ,$72 ,$1c ,$72 ,$45 ,$5c ,$cd ,$78 ,$dc ,$a0 ,$7e ,$07 ,$c5 ,$96 ,$53 ,$1e ,$0f ,$a7 ,$3e ,$b0 ,$1f ,$63 ,$1a ,$87 ,$39 ,$9d ,$e4 ,$c4 ,$87 ,$70 ,$fc ,$40 ,$78 ,$e0 ,$67 ,$2e ,$1f ,$f1 ,$71 ,$c7 ,$87 ,$61 ,$bc ,$33 ,$c4 ,$c5 ,$c1 ,$58 ,$66 ,$1c -0006F1r 1 ,$de ,$71 ,$89 ,$e3 ,$3d ,$e2 ,$75 ,$c8 ,$e2 ,$65 ,$75 ,$0e ,$99 ,$3b ,$ec ,$c0 ,$e9 ,$e1 ,$38 ,$1c ,$59 ,$a3 ,$d1 ,$45 ,$4f ,$94 ,$d1 ,$eb ,$60 ,$1a ,$7f ,$54 ,$3d ,$8b ,$e7 ,$39 ,$6a ,$1c ,$55 ,$e1 ,$03 ,$4e ,$53 ,$e8 ,$66 ,$70 ,$c7 ,$34 ,$1d ,$0f ,$1e -0006F1r 1 ,$fb ,$0d ,$1e ,$43 ,$31 ,$3d ,$ce ,$31 ,$a6 ,$78 ,$ec ,$21 ,$e3 ,$2b ,$7c ,$c3 ,$87 ,$c3 ,$6d ,$1e ,$45 ,$c7 ,$83 ,$81 ,$33 ,$c7 ,$55 ,$f9 ,$50 ,$39 ,$cb ,$91 ,$71 ,$dc ,$e2 ,$89 ,$69 ,$38 ,$3e ,$7a ,$23 ,$ae ,$61 ,$f6 ,$64 ,$2d ,$9c ,$bc ,$e2 ,$30 ,$56 -0006F1r 1 ,$ab ,$78 ,$d0 ,$2d ,$7a ,$34 ,$66 ,$b1 ,$79 ,$64 ,$c9 ,$91 ,$6b ,$a1 ,$ad ,$4e ,$97 ,$78 ,$c9 ,$3a ,$1c ,$ba ,$23 ,$76 ,$d6 ,$4a ,$65 ,$b4 ,$83 ,$ce ,$1c ,$37 ,$f4 ,$9c ,$21 ,$8b ,$8d ,$47 ,$69 ,$92 ,$79 ,$66 ,$d8 ,$d4 ,$55 ,$38 ,$3b ,$71 ,$d6 ,$cd ,$a5 -0006F1r 1 ,$c1 ,$c3 ,$53 ,$1a ,$8c ,$ef ,$38 ,$2c ,$a5 ,$39 ,$b8 ,$ca ,$49 ,$87 ,$dd ,$0c ,$fb ,$24 ,$e7 ,$49 ,$1b ,$7a ,$ce ,$8a ,$9c ,$d2 ,$21 ,$2e ,$34 ,$25 ,$37 ,$6e ,$a8 ,$46 ,$57 ,$d9 ,$d8 ,$bc ,$6a ,$79 ,$96 ,$63 ,$e6 ,$2c ,$4d ,$d4 ,$74 ,$4c ,$8c ,$a7 ,$29 -0006F1r 1 ,$0c ,$0f ,$35 ,$7a ,$f4 ,$44 ,$cb ,$da ,$19 ,$57 ,$9c ,$2e ,$4f ,$37 ,$47 ,$4b ,$3a ,$66 ,$e2 ,$18 ,$33 ,$45 ,$97 ,$b8 ,$2d ,$6a ,$69 ,$f8 ,$60 ,$ad ,$1a ,$93 ,$a7 ,$e5 ,$c8 ,$e3 ,$a5 ,$35 ,$36 ,$67 ,$c6 ,$9a ,$25 ,$cb ,$12 ,$3d ,$28 ,$25 ,$4d ,$47 ,$73 -0006F1r 1 ,$16 ,$8f ,$39 ,$67 ,$c3 ,$f1 ,$56 ,$63 ,$b6 ,$63 ,$5c ,$95 ,$9a ,$a8 ,$69 ,$9c ,$55 ,$31 ,$ab ,$1c ,$55 ,$16 ,$97 ,$34 ,$33 ,$c5 ,$1a ,$9b ,$8e ,$75 ,$aa ,$3a ,$d5 ,$d4 ,$d6 ,$56 ,$2e ,$55 ,$23 ,$0f ,$ab -0006F1r 1 xx xx xx xx .align $40 -0006F5r 1 xx xx xx xx -0006F9r 1 xx xx xx xx -0006FDr 1 xx xx xx -000700r 1 _Test_DPCM2: -000700r 1 00 14 87 07 .byte $00 ,$14 ,$87 ,$07 ,$20 ,$c7 ,$ff ,$ff ,$ff ,$ce ,$9c ,$03 ,$fc ,$e7 ,$18 ,$20 ,$00 ,$00 ,$1c ,$03 ,$80 ,$8f ,$3b ,$ff ,$e3 ,$ff ,$ff ,$e3 ,$ff ,$f7 ,$f0 ,$39 ,$00 ,$00 ,$7f ,$38 ,$98 ,$0f ,$20 ,$fe ,$03 ,$00 ,$dc ,$07 ,$f0 ,$1c ,$03 ,$31 ,$04 ,$70 -000704r 1 20 C7 FF FF -000708r 1 FF CE 9C 03 -00070Cr 1 FC E7 18 20 -000710r 1 00 00 1C 03 -000714r 1 80 8F 3B FF -000718r 1 E3 FF FF E3 -00071Cr 1 FF F7 F0 39 -000720r 1 00 00 7F 38 -000724r 1 98 0F 20 FE -000728r 1 03 00 DC 07 -00072Cr 1 F0 1C 03 31 -000730r 1 04 70 00 FF -000734r 1 E3 F3 F8 FF -000738r 1 FF FF FF F8 -00073Cr 1 FF 3F 08 20 -000740r 1 00 3E C0 00 -000744r 1 38 00 00 00 -000748r 1 78 C7 C1 FF -00074Cr 1 DE 01 FF 0F -000750r 1 CC 9B CF FF -000754r 1 FF F0 F3 07 -000758r 1 81 FD F7 0F -00075Cr 1 61 30 F8 03 -000760r 1 0E 00 00 00 -000764r 1 00 C0 43 00 -000768r 1 38 DF FB FF -00076Cr 1 FF F9 7F FC -000770r 1 CF FF 7F 40 -000774r 1 78 FC 00 FE -000778r 1 17 00 DC 07 -00077Cr 1 00 F8 20 20 -000780r 1 62 00 06 20 -000784r 1 78 12 7C C0 -000788r 1 FF E7 FD C7 -00078Cr 1 FF FF FF FF -000790r 1 7F FE 27 02 -000794r 1 F8 C0 00 00 -000798r 1 01 00 04 36 -00079Cr 1 00 3D 18 0C -0007A0r 1 80 11 FC FF -0007A4r 1 FF 51 FC 37 -0007A8r 1 FF FF FF FF -0007ACr 1 F3 E5 F8 FF -0007B0r 1 3F 00 01 00 -0007B4r 1 60 14 00 00 -0007B8r 1 00 00 00 3C -0007BCr 1 06 F0 BE 4E -0007C0r 1 E1 FF F9 FF -0007C4r 1 FF FF 7F FE -0007C8r 1 FE BF BD 03 -0007CCr 1 18 1C 68 8C -0007D0r 1 E7 00 00 00 -0007D4r 1 00 C0 00 80 -0007D8r 1 00 F1 E3 78 -0007DCr 1 FE C3 3F E2 -0007E0r 1 FF FF FF FF -0007E4r 1 FF FF 23 C6 -0007E8r 1 7E E8 E1 1C -0007ECr 1 00 00 04 03 -0007F0r 1 10 00 00 00 -0007F4r 1 7A 0E CC F1 -0007F8r 1 A9 F9 F5 D0 -0007FCr 1 FF CF AF -000AF1r 1 ,$00 ,$ff ,$e3 ,$f3 ,$f8 ,$ff ,$ff ,$ff ,$ff ,$f8 ,$ff ,$3f ,$08 ,$20 ,$00 ,$3e ,$c0 ,$00 ,$38 ,$00 ,$00 ,$00 ,$78 ,$c7 ,$c1 ,$ff ,$de ,$01 ,$ff ,$0f ,$cc ,$9b ,$cf ,$ff ,$ff ,$f0 ,$f3 ,$07 ,$81 ,$fd ,$f7 ,$0f ,$61 ,$30 ,$f8 ,$03 ,$0e ,$00 ,$00 ,$00 ,$00 -000AF1r 1 ,$c0 ,$43 ,$00 ,$38 ,$df ,$fb ,$ff ,$ff ,$f9 ,$7f ,$fc ,$cf ,$ff ,$7f ,$40 ,$78 ,$fc ,$00 ,$fe ,$17 ,$00 ,$dc ,$07 ,$00 ,$f8 ,$20 ,$20 ,$62 ,$00 ,$06 ,$20 ,$78 ,$12 ,$7c ,$c0 ,$ff ,$e7 ,$fd ,$c7 ,$ff ,$ff ,$ff ,$ff ,$7f ,$fe ,$27 ,$02 ,$f8 ,$c0 ,$00 ,$00 -000AF1r 1 ,$01 ,$00 ,$04 ,$36 ,$00 ,$3d ,$18 ,$0c ,$80 ,$11 ,$fc ,$ff ,$ff ,$51 ,$fc ,$37 ,$ff ,$ff ,$ff ,$ff ,$f3 ,$e5 ,$f8 ,$ff ,$3f ,$00 ,$01 ,$00 ,$60 ,$14 ,$00 ,$00 ,$00 ,$00 ,$00 ,$3c ,$06 ,$f0 ,$be ,$4e ,$e1 ,$ff ,$f9 ,$ff ,$ff ,$ff ,$7f ,$fe ,$fe ,$bf ,$bd -000AF1r 1 ,$03 ,$18 ,$1c ,$68 ,$8c ,$e7 ,$00 ,$00 ,$00 ,$00 ,$c0 ,$00 ,$80 ,$00 ,$f1 ,$e3 ,$78 ,$fe ,$c3 ,$3f ,$e2 ,$ff ,$ff ,$ff ,$ff ,$ff ,$ff ,$23 ,$c6 ,$7e ,$e8 ,$e1 ,$1c ,$00 ,$00 ,$04 ,$03 ,$10 ,$00 ,$00 ,$00 ,$7a ,$0e ,$cc ,$f1 ,$a9 ,$f9 ,$f5 ,$d0 ,$ff ,$cf -000AF1r 1 ,$af ,$ff ,$ff ,$df ,$c3 ,$e7 ,$f7 ,$e3 ,$d8 ,$10 ,$80 ,$61 ,$06 ,$3a ,$08 ,$00 ,$00 ,$00 ,$e0 ,$82 ,$79 ,$03 ,$f0 ,$e9 ,$fc ,$7d ,$5d ,$f9 ,$fe ,$e7 ,$3f ,$1c ,$fe ,$77 ,$7f ,$e1 ,$3c ,$be ,$48 ,$5e ,$3e ,$3c ,$00 ,$00 ,$00 ,$60 ,$2c ,$08 ,$8e ,$30 ,$0a -000AF1r 1 ,$8e ,$70 ,$af ,$3d ,$3b ,$f4 ,$f3 ,$fb ,$ef ,$59 ,$c7 ,$9e ,$7b ,$f2 ,$e1 ,$3e ,$1e ,$2f ,$45 ,$c3 ,$38 ,$3c ,$40 ,$16 ,$60 ,$08 ,$4e ,$03 ,$46 ,$38 ,$2e ,$62 ,$1c ,$c4 ,$cf ,$39 ,$8b ,$ff ,$c3 ,$e9 ,$f7 ,$ff ,$8b ,$23 ,$ee ,$76 ,$4f ,$78 ,$a8 ,$f3 ,$37 -000AF1r 1 ,$04 ,$24 ,$83 ,$f1 ,$84 ,$11 ,$80 ,$71 ,$41 ,$c0 ,$03 ,$cc ,$86 ,$23 ,$9d ,$3a ,$ce ,$ff ,$86 ,$3f ,$df ,$f7 ,$9f ,$e7 ,$7d ,$9a ,$e6 ,$8d ,$c7 ,$23 ,$8e ,$12 ,$0c ,$63 ,$00 ,$02 ,$c2 ,$c3 ,$80 ,$61 ,$00 ,$b1 ,$29 ,$de ,$31 ,$cd ,$7b ,$7e ,$eb ,$fe ,$bc -000AF1r 1 ,$dd ,$1f ,$de ,$7c ,$5f ,$5c ,$27 ,$c7 ,$f1 ,$7c ,$80 ,$80 ,$07 ,$86 ,$00 ,$22 ,$04 ,$44 ,$cc ,$25 ,$d9 ,$e0 ,$80 ,$eb ,$be ,$eb ,$fa ,$65 ,$fe ,$d7 ,$cf ,$79 ,$ba ,$e7 ,$3c ,$5d ,$9c ,$e4 ,$78 ,$2c ,$0c ,$0a ,$06 ,$21 ,$18 ,$1a ,$f4 ,$38 ,$51 ,$20 ,$e7 -000AF1r 1 ,$30 ,$f2 ,$fc ,$3b ,$70 ,$cc ,$dd ,$f8 ,$e1 ,$59 ,$f7 ,$7e ,$e3 ,$f1 ,$dc ,$f8 ,$71 ,$66 ,$62 ,$60 ,$0c ,$ca ,$12 ,$a3 ,$25 ,$88 ,$b6 ,$41 ,$3e ,$06 ,$19 ,$3c ,$6e ,$e3 ,$f3 ,$c6 ,$98 ,$b9 ,$f2 ,$c8 ,$33 ,$ee ,$cc ,$b9 ,$4f ,$2d ,$79 ,$1c ,$d9 ,$3a ,$9c -000AF1r 1 ,$a7 ,$c1 ,$2a ,$7e ,$b2 ,$23 ,$24 ,$a8 ,$20 ,$0e ,$9c ,$71 ,$8c ,$e3 ,$90 ,$c7 ,$1e ,$4d ,$ba ,$cc ,$8f ,$77 ,$6c ,$8c ,$ad ,$6b ,$af ,$93 ,$a7 ,$f2 ,$7c ,$97 ,$4c ,$d7 ,$c1 ,$4c ,$b1 ,$51 ,$12 ,$40 ,$48 ,$68 ,$aa ,$41 ,$91 ,$b4 ,$1c ,$39 ,$71 ,$8e ,$63 -000AF1r 1 ,$df ,$77 ,$da ,$f3 ,$dd ,$f8 ,$fa ,$8e ,$b7 ,$3c ,$ec ,$c1 ,$a3 ,$a1 ,$c3 ,$12 ,$26 ,$0e ,$52 ,$04 ,$22 ,$44 ,$25 ,$66 ,$38 ,$29 ,$f8 ,$5a ,$ac ,$e3 ,$b9 ,$a7 ,$b7 ,$eb ,$7d ,$9f ,$73 ,$be ,$e7 ,$2e ,$4e ,$46 ,$c4 ,$05 ,$1d ,$35 ,$38 ,$62 ,$b0 ,$40 ,$30 -000AF1r 1 ,$65 ,$4a ,$62 ,$c4 ,$18 ,$6f ,$99 ,$52 ,$f7 ,$ba ,$e5 ,$3b ,$f1 ,$7a ,$b9 ,$e3 ,$79 ,$7b ,$ed ,$c4 ,$8d ,$8e ,$e4 ,$18 ,$49 ,$05 ,$0d ,$1e ,$8e ,$1c ,$42 ,$91 ,$0d ,$cb ,$34 ,$26 ,$5b ,$96 ,$3d ,$bc ,$a6 ,$e8 ,$ce ,$69 ,$e7 ,$53 ,$c5 ,$27 ,$1e ,$9f ,$cf -000AF1r 1 ,$18 ,$af ,$4c ,$4d ,$1c ,$39 ,$d3 ,$2c ,$87 ,$0a ,$65 ,$72 ,$70 ,$b8 ,$c8 ,$61 ,$a3 ,$19 ,$a6 ,$70 ,$6c ,$f4 ,$3c ,$93 ,$46 ,$cf ,$73 ,$ba ,$d5 ,$bd ,$72 ,$8b ,$3a ,$c7 ,$f1 ,$3c ,$d9 ,$b1 ,$45 ,$16 ,$6b ,$a6 ,$01 ,$43 ,$14 ,$2b ,$31 ,$30 ,$49 ,$39 ,$6c -000AF1r 1 ,$2a ,$9b ,$d1 ,$65 ,$9b ,$3a ,$dd ,$f1 ,$b3 ,$cf ,$d9 ,$3d ,$b7 ,$5b ,$e3 ,$0c ,$3b ,$96 ,$ac ,$c5 ,$82 ,$21 ,$11 ,$ca ,$32 ,$81 ,$c2 ,$70 ,$28 ,$1a ,$1d ,$35 ,$9c ,$ed ,$6c ,$d9 ,$f2 ,$ee ,$5b ,$b7 ,$6b ,$db ,$9e ,$0f ,$d3 ,$b2 ,$65 ,$56 ,$96 ,$20 ,$47 -000AF1r 1 ,$23 ,$52 ,$6a ,$aa ,$08 ,$48 ,$19 ,$0e ,$25 ,$b2 ,$94 ,$6d ,$9a ,$de ,$78 ,$9b ,$be ,$2b ,$6f ,$f3 ,$2d ,$cf ,$ac ,$2e ,$4d ,$b6 ,$68 ,$a9 ,$96 ,$c9 ,$a3 ,$94 ,$12 ,$61 ,$d8 ,$60 ,$c5 ,$12 ,$86 ,$63 ,$8c ,$8c ,$ad ,$d7 ,$36 ,$4b ,$9b ,$b5 ,$6d ,$cd ,$33 -000AF1r 1 ,$67 ,$4b ,$e6 ,$6c ,$d9 ,$b4 ,$2c ,$4d ,$96 ,$2e ,$4b ,$d3 ,$9a ,$e8 ,$18 ,$26 ,$15 ,$93 ,$8a ,$49 ,$51 ,$a5 ,$49 ,$ab ,$64 ,$95 ,$f5 ,$96 ,$69 ,$ca ,$b2 ,$f3 ,$ba ,$b3 ,$2d ,$c7 ,$b2 ,$4e ,$6d ,$ce ,$ac ,$4a ,$c5 ,$a9 ,$61 ,$c7 ,$74 ,$48 ,$96 ,$a4 ,$42 -000AF1r 1 ,$29 ,$6a ,$52 ,$56 ,$95 ,$31 ,$49 ,$a3 ,$54 ,$d3 ,$9d ,$57 ,$5b ,$d7 ,$b5 ,$db ,$55 ,$cf ,$ce ,$96 ,$67 ,$65 ,$25 ,$a5 ,$51 ,$51 ,$14 ,$4d ,$a6 ,$22 ,$51 ,$92 ,$64 ,$68 ,$8a ,$b2 ,$94 ,$4d ,$9b ,$e6 ,$74 ,$d5 ,$ad ,$dd ,$ed ,$66 ,$db ,$56 ,$ad ,$d5 ,$e6 -000AF1r 1 ,$34 ,$69 ,$52 ,$29 ,$95 ,$1c ,$8e ,$aa ,$a4 ,$24 ,$54 ,$52 ,$29 ,$c9 ,$70 ,$92 ,$93 ,$c9 ,$ca ,$73 ,$4b ,$b7 ,$7a ,$db ,$b6 ,$4d ,$5b ,$f5 ,$e8 ,$aa ,$9a ,$4a ,$4b ,$53 ,$25 ,$63 ,$31 ,$33 ,$ca ,$98 ,$94 ,$09 ,$93 ,$a5 ,$2a ,$ad ,$a6 ,$65 ,$49 ,$9d ,$4c -000AF1r 1 ,$ab ,$36 ,$5d ,$5d ,$35 ,$35 ,$cb ,$b2 ,$53 ,$8f ,$d5 ,$d6 ,$aa ,$93 ,$4a ,$55 ,$9a ,$6a ,$32 ,$c9 ,$a4 ,$51 ,$95 ,$a5 ,$a5 ,$4a ,$95 ,$26 ,$ab ,$aa ,$cc ,$38 ,$26 ,$4d ,$5b ,$56 ,$d5 ,$d5 ,$b4 ,$aa ,$ab -000AF1r 1 -000AF1r 1 -000AF1r 1 .segment "MUSDATA" -00006Cr 1 _Test_Envelope0: -00006Cr 1 04 0F 0C C2 .byte $04 ,$0f ,$0c ,$c2 ,$0a ,$08 ,$07 ,$06 ,$80 ,$05 ,$81 ,$04 ,$82 ,$03 ,$83 ,$02 ,$cf -000070r 1 0A 08 07 06 -000074r 1 80 05 81 04 -000078r 1 82 03 83 02 -00007Cr 1 CF -00007Dr 1 _Test_Envelope100: -00007Dr 1 00 00 8F 8F .byte $00 ,$00 ,$8f ,$8f ,$84 ,$01 ,$02 ,$03 ,$02 ,$01 ,$00 ,$7f ,$7e ,$7d ,$7e ,$7f ,$c5 -000081r 1 84 01 02 03 -000085r 1 02 01 00 7F -000089r 1 7E 7D 7E 7F -00008Dr 1 C5 -00008Er 1 _Test_Envelope300: -00008Er 1 00 03 02 00 .byte $00 ,$03 ,$02 ,$00 ,$c3 -000092r 1 C3 -000093r 1 _Test_SUB0: -000093r 1 45 .byte $45 -000094r 1 3B .byte $3b -000095r 1 0B 12 .byte $0b ,$12 -000097r 1 10 F6 FF .byte $10 ,$f6 ,$ff -00009Ar 1 12 E2 FF .byte $12 ,$e2 ,$ff -00009Dr 1 11 CE FF .byte $11 ,$ce ,$ff -0000A0r 1 80 .byte $80 -0000A1r 1 82 .byte $82 -0000A2r 1 84 .byte $84 -0000A3r 1 85 .byte $85 -0000A4r 1 87 .byte $87 -0000A5r 1 89 .byte $89 -0000A6r 1 8B .byte $8b -0000A7r 1 29 .byte $29 -0000A8r 1 B0 60 48 .byte $b0 ,$60 ,$48 -0000ABr 1 00 .byte $00 -0000ACr 1 _Test_BGM0: -0000ACr 1 05 00 .byte $05, $0 -0000AEr 1 0C 00 11 00 .word $000c ,$0011 ,$0018 ,$0019 ,$001a -0000B2r 1 18 00 19 00 -0000B6r 1 1A 00 -0000B8r 1 6C .byte $6c -0000B9r 1 02 D9 FF .byte $02 ,$d9 ,$ff -0000BCr 1 00 .byte $00 -0000BDr 1 68 .byte $68 -0000BEr 1 AD 12 .byte $ad ,$12 -0000C0r 1 02 D2 FF .byte $02 ,$d2 ,$ff -0000C3r 1 00 .byte $00 -0000C4r 1 00 .byte $00 -0000C5r 1 00 .byte $00 -0000C6r 1 39 .byte $39 -0000C7r 1 4B .byte $4b -0000C8r 1 03 02 .byte $03 ,$02 -0000CAr 1 A0 0C .byte $a0 ,$0c -0000CCr 1 86 .byte $86 -0000CDr 1 86 .byte $86 -0000CEr 1 A2 0C .byte $a2 ,$0c -0000D0r 1 86 .byte $86 -0000D1r 1 86 .byte $86 -0000D2r 1 A0 0C .byte $a0 ,$0c -0000D4r 1 86 .byte $86 -0000D5r 1 86 .byte $86 -0000D6r 1 A2 0C .byte $a2 ,$0c -0000D8r 1 86 .byte $86 -0000D9r 1 86 .byte $86 -0000DAr 1 05 EF FF .byte $05 ,$ef ,$ff -0000DDr 1 2D .byte $2d -0000DEr 1 A1 60 .byte $a1 ,$60 -0000E0r 1 00 .byte $00 -0000E0r 1 diff --git a/sample/ca65/testmus.o b/sample/ca65/testmus.o deleted file mode 100644 index bf9f7d4..0000000 Binary files a/sample/ca65/testmus.o and /dev/null differ diff --git a/sample/cc65/buildlog.txt b/sample/cc65/buildlog.txt deleted file mode 100644 index 6d965a6..0000000 --- a/sample/cc65/buildlog.txt +++ /dev/null @@ -1,5 +0,0 @@ -cl65 -t none -I..\..\include\\ -c -o test.o test.c 1>>comlog.txt 2>>errlog.txt -nsc -a -e testmus.mml 1>>comlog.txt 2>>errlog.txt -ca65 -t none -I..\..\include\\ --listing --list-bytes 255 testmus.s 1>>comlog.txt 2>>errlog.txt -del testmus.s 1>>comlog.txt 2>>errlog.txt -ld65 -C nesc.cfg -L..\..\lib\\ -v -m test.map -vm -o test.nes test.o testmus.o ..\..\lib\\nsd.lib nes.lib 1>>comlog.txt 2>>errlog.txt diff --git a/sample/cc65/comlog.txt b/sample/cc65/comlog.txt deleted file mode 100644 index f11a3e9..0000000 --- a/sample/cc65/comlog.txt +++ /dev/null @@ -1,33 +0,0 @@ ----------------------------------------- -*Object creating process ----------------------------------------- -*Address settlement process - Music Size = 225 [Byte] - DPCM Size = 9664 [Byte] ----------------------------------------- -*Tick counting process ----- BGM(0) ---- -Track | TR( 1) | TR( 2) | TR( 3) | TR( 4) | TR( 5) -Loop | no-loop| no-loop| no-loop| no-loop| no-loop -Total | 264| 282| 0| 0| 288 -Opened `test.nes'... - Dumping `ZP' - Writing `ZEROPAGE' - Dumping `HEADER' - Writing `HEADER' - Dumping `ROM0' - Writing `STARTUP' - Writing `INIT' - Writing `CODE' - Writing `RODATA' - Writing `DATA' - Dumping `ROM1' - Writing `PCMDATA' - Dumping `ROMV' - Writing `VECTORS' - Dumping `ROM2' - Writing `CHARS' - Dumping `SRAM' - Dumping `RAM' - Writing `DATA' - Writing `BSS' diff --git a/sample/cc65/errlog.txt b/sample/cc65/errlog.txt deleted file mode 100644 index 779f015..0000000 --- a/sample/cc65/errlog.txt +++ /dev/null @@ -1,4 +0,0 @@ -[Compile] : test.c -[Compile] : testmus.mml -[Link] : test.nes -ld65.exe: Warning: Segment `PCMDATA' in module `testmus.o' requires larger alignment diff --git a/sample/cc65/test.map b/sample/cc65/test.map deleted file mode 100644 index 250fac4..0000000 --- a/sample/cc65/test.map +++ /dev/null @@ -1,847 +0,0 @@ -Modules list: -------------- -test.o: - CODE Offs = 000000 Size = 0003C4 - RODATA Offs = 000000 Size = 000074 - BSS Offs = 000000 Size = 000001 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -testmus.o: - CODE Offs = 0003C4 Size = 000000 - RODATA Offs = 000074 Size = 0000E1 - BSS Offs = 000001 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 - PCMDATA Offs = 000000 Size = 0025B1 -..\..\lib\\nsd.lib(nsd_init.o): - CODE Offs = 0003C4 Size = 00000A - RODATA Offs = 000155 Size = 000000 - BSS Offs = 000001 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_set_dpcm.o): - CODE Offs = 0003CE Size = 000007 - RODATA Offs = 000155 Size = 000000 - BSS Offs = 000001 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_main.o): - CODE Offs = 0003D5 Size = 000083 - RODATA Offs = 000155 Size = 000000 - BSS Offs = 000001 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_play_bgm.o): - CODE Offs = 000458 Size = 0000D7 - RODATA Offs = 000155 Size = 000000 - BSS Offs = 000001 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_stop_bgm.o): - CODE Offs = 00052F Size = 000020 - RODATA Offs = 000155 Size = 000000 - BSS Offs = 000001 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_pause_bgm.o): - CODE Offs = 00054F Size = 00001B - RODATA Offs = 000155 Size = 000000 - BSS Offs = 000001 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_resume_bgm.o): - CODE Offs = 00056A Size = 00003C - RODATA Offs = 000155 Size = 000000 - BSS Offs = 000001 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_play_se.o): - CODE Offs = 0005A6 Size = 000086 - RODATA Offs = 000155 Size = 000000 - BSS Offs = 000001 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_stop_se.o): - CODE Offs = 00062C Size = 000024 - RODATA Offs = 000155 Size = 000000 - BSS Offs = 000001 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_sequence.o): - CODE Offs = 000650 Size = 000548 - RODATA Offs = 000155 Size = 000090 - BSS Offs = 000001 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_envelope.o): - CODE Offs = 000B98 Size = 00022E - RODATA Offs = 0001E5 Size = 000000 - BSS Offs = 000001 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_snd.o): - CODE Offs = 000DC6 Size = 000236 - RODATA Offs = 0001E5 Size = 000114 - BSS Offs = 000001 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_math.o): - CODE Offs = 000FFC Size = 000069 - RODATA Offs = 0002F9 Size = 000000 - BSS Offs = 000001 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 000000 - NULL Offs = 000000 Size = 000000 -..\..\lib\\nsd.lib(nsd_work.o): - CODE Offs = 001065 Size = 000000 - RODATA Offs = 0002F9 Size = 000000 - BSS Offs = 000001 Size = 000134 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 000000 Size = 00002F - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(color.o): - CODE Offs = 001065 Size = 00002D - RODATA Offs = 0002F9 Size = 000010 - BSS Offs = 000135 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(cputc.o): - CODE Offs = 001092 Size = 00003B - RODATA Offs = 000309 Size = 000000 - BSS Offs = 000135 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 - INIT Offs = 000000 Size = 000011 -C:\Program Files\cc65/lib/nes.lib(crt0.o): - CODE Offs = 0010CD Size = 000000 - RODATA Offs = 000309 Size = 000000 - BSS Offs = 000135 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 - HEADER Offs = 000000 Size = 000010 - STARTUP Offs = 000000 Size = 00005D - VECTORS Offs = 000000 Size = 00000C - CHARS Offs = 000000 Size = 001000 -C:\Program Files\cc65/lib/nes.lib(ctype.o): - CODE Offs = 0010CD Size = 000000 - RODATA Offs = 000309 Size = 000100 - BSS Offs = 000135 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(gotoxy.o): - CODE Offs = 0010CD Size = 00000D - RODATA Offs = 000409 Size = 000000 - BSS Offs = 000135 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(ppu.o): - CODE Offs = 0010DA Size = 00004D - RODATA Offs = 000409 Size = 000020 - BSS Offs = 000135 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(ppubuf.o): - CODE Offs = 001127 Size = 0000B0 - RODATA Offs = 000429 Size = 000000 - BSS Offs = 000135 Size = 000001 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(setcursor.o): - CODE Offs = 0011D7 Size = 000049 - RODATA Offs = 000429 Size = 000000 - BSS Offs = 000136 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(waitvblank.o): - CODE Offs = 001220 Size = 000006 - RODATA Offs = 000429 Size = 000000 - BSS Offs = 000136 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(_hextab.o): - CODE Offs = 001226 Size = 000000 - RODATA Offs = 000429 Size = 000010 - BSS Offs = 000136 Size = 000000 - DATA Offs = 000000 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(_printf.o): - CODE Offs = 001226 Size = 0003A5 - RODATA Offs = 000439 Size = 000000 - BSS Offs = 000136 Size = 00002B - DATA Offs = 000000 Size = 000003 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(copydata.o): - CODE Offs = 0015CB Size = 00002D - RODATA Offs = 000439 Size = 000000 - BSS Offs = 000161 Size = 000000 - DATA Offs = 000003 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(ltoa.o): - CODE Offs = 0015F8 Size = 0000AF - RODATA Offs = 000439 Size = 00000C - BSS Offs = 000161 Size = 000000 - DATA Offs = 000003 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(strlen.o): - CODE Offs = 0016A7 Size = 000016 - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000161 Size = 000000 - DATA Offs = 000003 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(strlower.o): - CODE Offs = 0016BD Size = 000028 - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000161 Size = 000000 - DATA Offs = 000003 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(zerobss.o): - CODE Offs = 0016E5 Size = 000000 - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000161 Size = 000000 - DATA Offs = 000003 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 - INIT Offs = 000011 Size = 000023 -C:\Program Files\cc65/lib/nes.lib(addysp.o): - CODE Offs = 0016E5 Size = 00000E - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000161 Size = 000000 - DATA Offs = 000003 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(aslax1.o): - CODE Offs = 0016F3 Size = 000008 - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000161 Size = 000000 - DATA Offs = 000003 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(axlong.o): - CODE Offs = 0016FB Size = 000012 - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000161 Size = 000000 - DATA Offs = 000003 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(callmain.o): - CODE Offs = 00170D Size = 000017 - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000161 Size = 000004 - DATA Offs = 000003 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(condes.o): - CODE Offs = 001724 Size = 00000C - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000003 Size = 000025 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 - INIT Offs = 000034 Size = 00000C -C:\Program Files\cc65/lib/nes.lib(decsp4.o): - CODE Offs = 001730 Size = 00000D - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(decsp6.o): - CODE Offs = 00173D Size = 00000D - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(icmp.o): - CODE Offs = 00174A Size = 00002E - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(incaxy.o): - CODE Offs = 001778 Size = 00000B - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(incsp1.o): - CODE Offs = 001783 Size = 000007 - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(incsp2.o): - CODE Offs = 00178A Size = 000016 - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(incsp3.o): - CODE Offs = 0017A0 Size = 000005 - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(lpush.o): - CODE Offs = 0017A5 Size = 00001E - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(makebool.o): - CODE Offs = 0017C3 Size = 000031 - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(ne.o): - CODE Offs = 0017F4 Size = 00000A - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(or.o): - CODE Offs = 0017FE Size = 000012 - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(popa.o): - CODE Offs = 001810 Size = 00000C - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(push1.o): - CODE Offs = 00181C Size = 000005 - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(pusha.o): - CODE Offs = 001821 Size = 000016 - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(pushax.o): - CODE Offs = 001837 Size = 00001A - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(return0.o): - CODE Offs = 001851 Size = 000004 - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(zeropage.o): - CODE Offs = 001855 Size = 000000 - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000000 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 00002F Size = 00001A - NULL Offs = 000000 Size = 000000 - EXTZP Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(cprintf.o): - CODE Offs = 001855 Size = 00002A - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000165 Size = 000001 - DATA Offs = 000028 Size = 000000 - ZEROPAGE Offs = 000049 Size = 000000 - NULL Offs = 000000 Size = 000000 -C:\Program Files\cc65/lib/nes.lib(vcprintf.o): - CODE Offs = 00187F Size = 00007E - RODATA Offs = 000445 Size = 000000 - BSS Offs = 000166 Size = 000000 - DATA Offs = 000028 Size = 000008 - ZEROPAGE Offs = 000049 Size = 000000 - NULL Offs = 000000 Size = 000000 - - -Segment list: -------------- -Name Start End Size --------------------------------------------- -CHARS 000000 000FFF 001000 -EXTZP 000000 000000 000000 -HEADER 000000 00000F 000010 -NULL 000000 000000 000000 -ZEROPAGE 000002 00004A 000049 -DATA 006000 00602F 000030 -BSS 006030 006195 000166 -STARTUP 008000 00805C 00005D -INIT 00805D 00809E 000042 -CODE 00809F 00999B 0018FD -RODATA 00999C 009DE1 000446 -PCMDATA 00C000 00E5B0 0025B1 -VECTORS 00FFF6 010001 00000C - - -Exports list: -------------- -_Test_BGM0 009ABC RLA _Test_DPCMinfo 009A10 RLA -__BSS_LOAD__ 006030 LA __BSS_RUN__ 006030 RLA -__BSS_SIZE__ 000166 REA __CODE_LOAD__ 00809F LA -__CODE_RUN__ 00809F LA __CODE_SIZE__ 0018FD EA -__CONSTRUCTOR_COUNT__ 000001 REA __CONSTRUCTOR_TABLE__ 00809D RLA -__DATA_LOAD__ 009DE2 RLA __DATA_RUN__ 006000 RLA -__DATA_SIZE__ 000030 REA __DESTRUCTOR_COUNT__ 000000 REA -__DESTRUCTOR_TABLE__ 009DE2 RLA __INIT_LOAD__ 00805D LA -__INIT_RUN__ 00805D LA __INIT_SIZE__ 000042 EA -__PCMDATA_LOAD__ 00C000 LA __PCMDATA_RUN__ 00C000 LA -__PCMDATA_SIZE__ 0025B1 EA __RAM_LAST__ 006196 LA -__RAM_SIZE__ 002000 EA __RAM_START__ 006000 LA -__RODATA_LOAD__ 00999C LA __RODATA_RUN__ 00999C LA -__RODATA_SIZE__ 000446 EA __ROM0_LAST__ 009E12 LA -__ROM0_SIZE__ 004000 EA __ROM0_START__ 008000 LA -__ROM1_LAST__ 00E5B1 LA __ROM1_SIZE__ 003FF4 EA -__ROM1_START__ 00C000 LA __SRAM_LAST__ 000500 LA -__SRAM_SIZE__ 000300 REA __SRAM_START__ 000500 RLA -__STACKSIZE__ 000300 EA __STARTUP_LOAD__ 008000 LA -__STARTUP_RUN__ 008000 LA __STARTUP_SIZE__ 00005D EA -__STARTUP__ 000001 REA __ZP_LAST__ 00004B LA -__ZP_SIZE__ 000060 EA __ZP_START__ 000002 LA -__argc 006191 LA __argv 006193 LA -__ctype 009CA5 RLA __hextab 009DC5 RLA -__printf 0093B8 RLA _bgcolor 009104 RLA -_bordercolor 0098F0 EA _cprintf 0098F4 RLA -_cputc 009139 RLA _cputcxy 009131 LA -_exit 00802F LA _gotoxy 00916C RLA -_inkey 0081D6 LA _ltoa 0096B3 RLA -_main 008213 RLA _nsd_div192 00909B RLA -_nsd_dpcm_calc 008E8B LA _nsd_init 008463 RLA -_nsd_main 008474 RLA _nsd_mul 0090DB RLA -_nsd_pause 008600 LA _nsd_pause_bgm 0085EE RLA -_nsd_play 008550 RLA _nsd_play_bgm 0084F7 RLA -_nsd_play_se 008645 RLA _nsd_resume_bgm 008609 RLA -_nsd_set_dpcm 00846D RLA _nsd_snd_frequency 008FA8 RLA -_nsd_snd_init 008E65 RLA _nsd_snd_keyoff 008EF9 RLA -_nsd_snd_keyon 008EA6 RLA _nsd_snd_sweep 008F89 RLA -_nsd_snd_voice 008F19 RLA _nsd_snd_volume 008F56 RLA -_nsd_stop_bgm 0085CE RLA _nsd_stop_se 0086CB RLA -_read_key 00809F LA _strlen 009746 RLA -_strlower 00975C RLA _strlwr 00975C LA -_textcolor 0098F0 EA _ultoa 00970A RLA -_vcprintf 00996C RLA _waitvblank 0092BF RLA -addysp 009785 RLA addysp1 009784 RLA -aslax1 009792 LA axlong 0097A1 RLA -axulong 00979A RLA booleq 009868 LA -boolge 009878 LA boolgt 009876 LA -boolle 00986E LA boollt 009870 LA -boolne 009862 RLA booluge 009888 LA -boolugt 009886 LA boolule 00987E LA -boolult 009880 LA callmain 0097AC RLA -condes 006003 LA conioinit 00805D LAI -copydata 00966A RLA cputdirect 009147 LA -decsp4 0097CF RLA decsp6 0097DC RLA -donelib 0097C3 RLA incax4 009817 LA -incaxy 009819 RLA incsp1 009822 RLA -incsp2 009831 LA incsp3 00983F RLA -initlib 008091 RLA newline 00915A LA -nsd_envelop 008C37 RLA nsd_sequence 008816 RLA -nsd_work 006031 RLA nsd_work_zp 000002 RLZ -paletteinit 0091A9 RLA popa 0098AF RLA -popax 009829 RLA ppubuf_flush 0091F2 RLA -ppubuf_put 0091D2 RLA ppubuf_wait 0091CB LA -ppubuf_waitempty 0091C6 LA ppuinit 009179 RLA -ptr1 000039 RLZ ptr2 00003B RLZ -ptr3 00003D RLZ ptr4 00003F LZ -push0 0098D6 LA push0ax 009844 LA -push1 0098BB RLA pusha 0098C4 RLA -pusha0 0098D8 RLA pusha0sp 0098C0 LA -pushax 0098DA RLA pushaysp 0098C2 LA -pusheax 00984A RLA putchar 009163 LA -regbank 000045 RLZ regsave 000035 LZ -return0 0098F0 RLA setcursor 009276 RLA -shlax1 009792 RLA sp 000031 RLZ -sreg 000033 RLZ tmp1 000041 RLZ -tmp2 000042 LZ tmp3 000043 LZ -tmp4 000044 LZ tosicmp 0097EB RLA -tosicmp0 0097E9 LA tosne00 009893 LA -tosnea0 009895 LA tosneax 009897 RLA -tosora0 00989D LA tosorax 00989F RLA -zerobss 00806E RLA - - -Imports list: -------------- -_Test_BGM0 (testmus.o): - test.o test.s(24) -_Test_DPCMinfo (testmus.o): - test.o test.s(25) -__BSS_LOAD__ ([linker generated]): -__BSS_RUN__ ([linker generated]): - zerobss.o zerobss.s(8) -__BSS_SIZE__ ([linker generated]): - zerobss.o zerobss.s(8) -__CODE_LOAD__ ([linker generated]): -__CODE_RUN__ ([linker generated]): -__CODE_SIZE__ ([linker generated]): -__CONSTRUCTOR_COUNT__ ([linker generated]): - condes.o condes.s(18) -__CONSTRUCTOR_TABLE__ ([linker generated]): - condes.o condes.s(18) -__DATA_LOAD__ ([linker generated]): - copydata.o copydata.s(8) -__DATA_RUN__ ([linker generated]): - copydata.o copydata.s(8) -__DATA_SIZE__ ([linker generated]): - copydata.o copydata.s(8) -__DESTRUCTOR_COUNT__ ([linker generated]): - condes.o condes.s(19) -__DESTRUCTOR_TABLE__ ([linker generated]): - condes.o condes.s(19) -__INIT_LOAD__ ([linker generated]): -__INIT_RUN__ ([linker generated]): -__INIT_SIZE__ ([linker generated]): -__PCMDATA_LOAD__ ([linker generated]): -__PCMDATA_RUN__ ([linker generated]): -__PCMDATA_SIZE__ ([linker generated]): -__RAM_LAST__ ([linker generated]): -__RAM_SIZE__ ([linker generated]): -__RAM_START__ ([linker generated]): -__RODATA_LOAD__ ([linker generated]): -__RODATA_RUN__ ([linker generated]): -__RODATA_SIZE__ ([linker generated]): -__ROM0_LAST__ ([linker generated]): -__ROM0_SIZE__ ([linker generated]): -__ROM0_START__ ([linker generated]): -__ROM1_LAST__ ([linker generated]): -__ROM1_SIZE__ ([linker generated]): -__ROM1_START__ ([linker generated]): -__SRAM_LAST__ ([linker generated]): -__SRAM_SIZE__ ([linker generated]): - crt0.o crt0.s(16) -__SRAM_START__ ([linker generated]): - crt0.o crt0.s(16) -__STACKSIZE__ ([linker generated]): -__STARTUP_LOAD__ ([linker generated]): -__STARTUP_RUN__ ([linker generated]): -__STARTUP_SIZE__ ([linker generated]): -__STARTUP__ (crt0.o): - test.o test.s(12) -__ZP_LAST__ ([linker generated]): -__ZP_SIZE__ ([linker generated]): -__ZP_START__ ([linker generated]): -__argc (callmain.o): -__argv (callmain.o): -__ctype (ctype.o): - strlower.o strlower.s(12) -__hextab (_hextab.o): - ltoa.o ltoa.s(10) -__printf (_printf.o): - vcprintf.o vcprintf.s(9) -_bgcolor (color.o): - test.o test.s(16) -_bordercolor (color.o): -_cprintf (cprintf.o): - test.o test.s(15) -_cputc (cputc.o): - vcprintf.o vcprintf.s(9) -_cputcxy (cputc.o): -_exit (crt0.o): -_gotoxy (gotoxy.o): - cputc.o cputc.s(12) - test.o test.s(14) -_inkey (test.o): -_ltoa (ltoa.o): - _printf.o _printf.s(10) -_main (test.o): - callmain.o callmain.s(11) -_nsd_div192 (nsd_math.o): - nsd_snd.o nsd_snd.s(19) -_nsd_dpcm_calc (nsd_snd.o): -_nsd_init (nsd_init.o): - test.o test.s(18) -_nsd_main (nsd_main.o): - test.o test.s(17) -_nsd_mul (nsd_math.o): - nsd_envelope.o nsd_envelope.s(14) -_nsd_pause (nsd_pause_bgm.o): -_nsd_pause_bgm (nsd_pause_bgm.o): - test.o test.s(22) -_nsd_play (nsd_play_bgm.o): - nsd_play_se.o nsd_play_se.s(11) -_nsd_play_bgm (nsd_play_bgm.o): - test.o test.s(20) -_nsd_play_se (nsd_play_se.o): - nsd_sequence.o nsd_sequence.s(15) -_nsd_resume_bgm (nsd_resume_bgm.o): - test.o test.s(23) -_nsd_set_dpcm (nsd_set_dpcm.o): - test.o test.s(19) -_nsd_snd_frequency (nsd_snd.o): - nsd_envelope.o nsd_envelope.s(13) -_nsd_snd_init (nsd_snd.o): - nsd_init.o nsd_init.s(14) -_nsd_snd_keyoff (nsd_snd.o): - nsd_sequence.o nsd_sequence.s(12) - nsd_stop_se.o nsd_stop_se.s(16) - nsd_pause_bgm.o nsd_pause_bgm.s(13) - nsd_stop_bgm.o nsd_stop_bgm.s(13) -_nsd_snd_keyon (nsd_snd.o): - nsd_sequence.o nsd_sequence.s(11) -_nsd_snd_sweep (nsd_snd.o): - nsd_sequence.o nsd_sequence.s(13) -_nsd_snd_voice (nsd_snd.o): - nsd_envelope.o nsd_envelope.s(11) - nsd_sequence.o nsd_sequence.s(14) -_nsd_snd_volume (nsd_snd.o): - nsd_envelope.o nsd_envelope.s(12) - nsd_stop_se.o nsd_stop_se.s(15) - nsd_pause_bgm.o nsd_pause_bgm.s(12) - nsd_stop_bgm.o nsd_stop_bgm.s(12) -_nsd_stop_bgm (nsd_stop_bgm.o): - nsd_play_bgm.o nsd_play_bgm.s(12) - nsd_init.o nsd_init.s(11) - test.o test.s(21) -_nsd_stop_se (nsd_stop_se.o): - nsd_init.o nsd_init.s(12) -_read_key (test.o): -_strlen (strlen.o): - _printf.o _printf.s(11) -_strlower (strlower.o): - _printf.o _printf.s(11) -_strlwr (strlower.o): -_textcolor (color.o): -_ultoa (ltoa.o): - _printf.o _printf.s(10) -_vcprintf (vcprintf.o): - cprintf.o cprintf.s(8) -_waitvblank (waitvblank.o): - test.o test.s(13) -addysp (addysp.o): - cprintf.o cprintf.s(8) - incsp3.o incsp3.s(8) -addysp1 (addysp.o): - or.o or.s(8) -aslax1 (aslax1.o): -axlong (axlong.o): - _printf.o _printf.s(9) -axulong (axlong.o): - _printf.o _printf.s(9) -booleq (makebool.o): -boolge (makebool.o): -boolgt (makebool.o): -boolle (makebool.o): -boollt (makebool.o): -boolne (makebool.o): - ne.o ne.s(8) -booluge (makebool.o): -boolugt (makebool.o): -boolule (makebool.o): -boolult (makebool.o): -callmain (callmain.o): - crt0.o crt0.s(10) -condes (condes.o): -conioinit (cputc.o): -copydata (copydata.o): - crt0.o crt0.s(11) -cputdirect (cputc.o): -decsp4 (decsp4.o): - lpush.o lpush.s(11) -decsp6 (decsp6.o): - _printf.o _printf.s(9) -donelib (condes.o): - crt0.o crt0.s(10) -incax4 (incaxy.o): -incaxy (incaxy.o): - test.o test.s(439) -incsp1 (incsp1.o): - test.o test.s(189) - test.o test.s(232) -incsp2 (incsp2.o): -incsp3 (incsp3.o): - test.o test.s(505) -initlib (condes.o): - crt0.o crt0.s(10) -newline (cputc.o): -nsd_envelop (nsd_envelope.o): - nsd_main.o nsd_main.s(15) -nsd_sequence (nsd_sequence.o): - nsd_main.o nsd_main.s(14) -nsd_work (nsd_work.o): - nsd_snd.o nsd_snd.s(21) - nsd_envelope.o nsd_envelope.s(20) - nsd_sequence.o nsd_sequence.s(16) - nsd_stop_se.o nsd_stop_se.s(18) - nsd_resume_bgm.o nsd_resume_bgm.s(11) - nsd_stop_bgm.o nsd_stop_bgm.s(15) - nsd_play_bgm.o nsd_play_bgm.s(18) - nsd_set_dpcm.o nsd_set_dpcm.s(11) -nsd_work_zp (nsd_work.o): - nsd_play_se.o nsd_play_se.s(19) - nsd_math.o nsd_math.s(12) - nsd_snd.o nsd_snd.s(22) - nsd_envelope.o nsd_envelope.s(21) - nsd_sequence.o nsd_sequence.s(17) - nsd_stop_se.o nsd_stop_se.s(19) - nsd_resume_bgm.o nsd_resume_bgm.s(12) - nsd_pause_bgm.o nsd_pause_bgm.s(16) - nsd_stop_bgm.o nsd_stop_bgm.s(16) - nsd_play_bgm.o nsd_play_bgm.s(19) - nsd_main.o nsd_main.s(11) -paletteinit (ppu.o): - cputc.o cputc.s(13) -popa (popa.o): - cputc.o cputc.s(12) - gotoxy.o gotoxy.s(9) -popax (incsp2.o): - ltoa.o ltoa.s(9) - _printf.o _printf.s(9) - vcprintf.o vcprintf.s(8) -ppubuf_flush (ppubuf.o): - crt0.o crt0.s(12) -ppubuf_put (ppubuf.o): - cputc.o cputc.s(13) - color.o color.s(12) -ppubuf_wait (ppubuf.o): -ppubuf_waitempty (ppubuf.o): -ppuinit (ppu.o): - cputc.o cputc.s(13) -ptr1 (zeropage.o): - strlower.o strlower.s(13) - strlen.o strlen.s(8) - ltoa.o ltoa.s(11) - _printf.o _printf.s(12) - vcprintf.o vcprintf.s(10) - cprintf.o cprintf.s(9) - zerobss.o zerobss.s(9) - copydata.o copydata.s(9) -ptr2 (zeropage.o): - strlower.o strlower.s(13) - ltoa.o ltoa.s(11) - _printf.o _printf.s(12) - vcprintf.o vcprintf.s(10) - copydata.o copydata.s(9) -ptr3 (zeropage.o): - ltoa.o ltoa.s(11) - vcprintf.o vcprintf.s(10) -ptr4 (zeropage.o): -push0 (pushax.o): -push0ax (lpush.o): -push1 (push1.o): - _printf.o _printf.s(9) -pusha (pusha.o): - test.o test.s(53) - test.o test.s(210) - test.o test.s(248) -pusha0 (pushax.o): - push1.o push1.s(8) -pusha0sp (pusha.o): -pushax (pushax.o): - _printf.o _printf.s(9) - vcprintf.o vcprintf.s(8) - cprintf.o cprintf.s(8) - callmain.o callmain.s(11) - test.o test.s(75) - test.o test.s(213) - test.o test.s(261) -pushaysp (pusha.o): -pusheax (lpush.o): - _printf.o _printf.s(9) -putchar (cputc.o): -regbank (zeropage.o): - _printf.o _printf.s(12) -regsave (zeropage.o): -return0 (return0.o): - color.o color.s(12) -setcursor (setcursor.o): - cputc.o cputc.s(14) - gotoxy.o gotoxy.s(8) -shlax1 (aslax1.o): - test.o test.s(69) -sp (zeropage.o): - decsp4.o decsp4.s(8) - lpush.o lpush.s(12) - incsp2.o incsp2.s(8) - icmp.o icmp.s(9) - decsp6.o decsp6.s(8) - addysp.o addysp.s(8) - _printf.o _printf.s(12) - vcprintf.o vcprintf.s(10) - cprintf.o cprintf.s(9) - pushax.o pushax.s(8) - pusha.o pusha.s(8) - popa.o popa.s(8) - or.o or.s(9) - incsp1.o incsp1.s(8) - crt0.o ../../asminc/zeropage.inc(11) - test.o test.s(10) -sreg (zeropage.o): - lpush.o lpush.s(12) - icmp.o icmp.s(9) - axlong.o axlong.s(8) - ltoa.o ltoa.s(11) - _printf.o _printf.s(12) -tmp1 (zeropage.o): - ltoa.o ltoa.s(11) - _printf.o _printf.s(12) - vcprintf.o vcprintf.s(10) - or.o or.s(9) - incaxy.o incaxy.s(8) - aslax1.o aslax1.s(8) - copydata.o copydata.s(9) - test.o test.s(10) -tmp2 (zeropage.o): -tmp3 (zeropage.o): -tmp4 (zeropage.o): -tosicmp (icmp.o): - ne.o ne.s(8) -tosicmp0 (icmp.o): -tosne00 (ne.o): -tosnea0 (ne.o): -tosneax (ne.o): - test.o test.s(217) - test.o test.s(429) -tosora0 (or.o): -tosorax (or.o): - test.o test.s(80) -zerobss (zerobss.o): - crt0.o crt0.s(11) - diff --git a/sample/cc65/test.nes b/sample/cc65/test.nes index 16a4067..1354eee 100644 Binary files a/sample/cc65/test.nes and b/sample/cc65/test.nes differ diff --git a/sample/cc65/test.o b/sample/cc65/test.o deleted file mode 100644 index a05bbd6..0000000 Binary files a/sample/cc65/test.o and /dev/null differ diff --git a/sample/cc65/testmus.lst b/sample/cc65/testmus.lst deleted file mode 100644 index 747c085..0000000 --- a/sample/cc65/testmus.lst +++ /dev/null @@ -1,719 +0,0 @@ -ca65 V2.13.3 - (C) Copyright 1998-2012 Ullrich von Bassewitz -Main file : testmus.s -Current file: testmus.s - -000000r 1 ;=============================================================== -000000r 1 ; Music file for NES Sound Driver & Library -000000r 1 ; for assembly language (ca65.exe) -000000r 1 ;=============================================================== -000000r 1 -000000r 1 .export _Test_BGM0 -000000r 1 .export _Test_DPCMinfo -000000r 1 -000000r 1 -000000r 1 .segment "RODATA" -000000r 1 _Test_DPCMinfo: -000000r 1 00 00 00 00 .byte $00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$0e ,$40 ,$00 ,$2f ,$0f ,$40 -000004r 1 00 00 00 00 -000008r 1 00 00 00 00 -00000Cr 1 00 00 00 00 -000010r 1 00 00 00 00 -000014r 1 00 00 00 00 -000018r 1 00 00 00 00 -00001Cr 1 00 00 00 00 -000020r 1 00 00 00 00 -000024r 1 00 00 00 00 -000028r 1 00 00 00 00 -00002Cr 1 0E 40 00 2F -000030r 1 0F 40 00 2F -000034r 1 00 00 00 00 -000038r 1 0F 40 77 3F -00003Cr 1 00 00 00 00 -000040r 1 0E 40 77 3F -000044r 1 0A 40 87 3F -000048r 1 0F 40 4C 1B -00004Cr 1 0B 40 87 3F -000050r 1 00 00 00 00 -000054r 1 0C 40 87 3F -000058r 1 0F 40 53 8D -00005Cr 1 0D 40 87 3F -000060r 1 0E 40 87 3F -000064r 1 0F 40 0C FF -000068r 1 0F 40 87 3F -00006Cr 1 ,$00 ,$2f ,$00 ,$00 ,$00 ,$00 ,$0f ,$40 ,$77 ,$3f ,$00 ,$00 ,$00 ,$00 ,$0e ,$40 ,$77 ,$3f ,$0a ,$40 ,$87 ,$3f ,$0f ,$40 ,$4c ,$1b ,$0b ,$40 ,$87 ,$3f ,$00 ,$00 ,$00 ,$00 ,$0c ,$40 ,$87 ,$3f ,$0f ,$40 ,$53 ,$8d ,$0d ,$40 ,$87 ,$3f ,$0e ,$40 ,$87 ,$3f ,$0f -00006Cr 1 ,$40 ,$0c ,$ff ,$0f ,$40 ,$87 ,$3f -00006Cr 1 -00006Cr 1 -00006Cr 1 .segment "PCMDATA" -000000r 1 .align $40 -000000r 1 _Test_DPCM0: -000000r 1 FE FF FF FD .byte $fe ,$ff ,$ff ,$fd ,$7f ,$fe ,$3f ,$f8 ,$38 ,$7c ,$dc ,$02 ,$1f ,$00 ,$38 ,$c0 ,$01 ,$00 ,$07 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$04 ,$fc ,$60 ,$49 ,$7a ,$f8 ,$2a ,$d5 ,$b5 ,$3d ,$d5 ,$2f ,$3e ,$fe ,$1e ,$ff ,$ff ,$87 ,$ff ,$ff ,$fd ,$4f ,$ff ,$ff -000004r 1 7F FE 3F F8 -000008r 1 38 7C DC 02 -00000Cr 1 1F 00 38 C0 -000010r 1 01 00 07 00 -000014r 1 00 00 00 00 -000018r 1 00 00 04 FC -00001Cr 1 60 49 7A F8 -000020r 1 2A D5 B5 3D -000024r 1 D5 2F 3E FE -000028r 1 1E FF FF 87 -00002Cr 1 FF FF FD 4F -000030r 1 FF FF F1 FF -000034r 1 C3 7F F9 E1 -000038r 1 67 05 3F C0 -00003Cr 1 81 2D 34 25 -000040r 1 D2 1A 29 D4 -000044r 1 16 A8 AA B4 -000048r 1 AA C4 6A 23 -00004Cr 1 E8 AA 12 55 -000050r 1 22 5A 4D 56 -000054r 1 14 D0 00 00 -000058r 1 00 E0 00 20 -00005Cr 1 A0 01 20 82 -000060r 1 DA 83 96 AA -000064r 1 8D EA D6 6E -000068r 1 AB AB DD D5 -00006Cr 1 EE 6C F5 96 -000070r 1 D5 5B BD CA -000074r 1 97 57 55 BB -000078r 1 74 5B 9F AA -00007Cr 1 B6 B6 5E 6B -000080r 1 4F 5C 37 57 -000084r 1 B5 AB AE DA -000088r 1 69 0F AF 52 -00008Cr 1 5D 6A B1 6C -000090r 1 89 9A 6A 55 -000094r 1 A9 AC 4A 55 -000098r 1 A1 49 16 2D -00009Cr 1 A8 55 50 0B -0000A0r 1 25 0A 56 13 -0000A4r 1 B0 D0 02 AB -0000A8r 1 24 48 35 A2 -0000ACr 1 4A 42 A3 22 -0000B0r 1 59 8A 5A 9A -0000B4r 1 E0 55 6C 6A -0000B8r 1 6B D3 DA 74 -0000BCr 1 ED 57 5B DF -0000C0r 1 2E FF D6 FE -0000C4r 1 A7 F7 6F 7B -0000C8r 1 FF FD 7E DD -0000CCr 1 AB B7 AD 9A -0000D0r 1 55 55 55 2A -0000D4r 1 97 AA 4A 95 -0000D8r 1 6A 4A 92 A4 -0000DCr 1 2A 94 A8 A0 -0000E0r 1 12 49 48 4A -0000E4r 1 44 12 92 28 -0000E8r 1 0A 29 21 29 -0000ECr 1 49 2A 15 95 -0000F0r 1 6A 64 AD D5 -0000F4r 1 5A 95 D9 AB -0000F8r 1 B6 B6 6E 76 -0000FCr 1 79 AD B6 -0002F1r 1 ,$f1 ,$ff ,$c3 ,$7f ,$f9 ,$e1 ,$67 ,$05 ,$3f ,$c0 ,$81 ,$2d ,$34 ,$25 ,$d2 ,$1a ,$29 ,$d4 ,$16 ,$a8 ,$aa ,$b4 ,$aa ,$c4 ,$6a ,$23 ,$e8 ,$aa ,$12 ,$55 ,$22 ,$5a ,$4d ,$56 ,$14 ,$d0 ,$00 ,$00 ,$00 ,$e0 ,$00 ,$20 ,$a0 ,$01 ,$20 ,$82 ,$da ,$83 ,$96 ,$aa ,$8d -0002F1r 1 ,$ea ,$d6 ,$6e ,$ab ,$ab ,$dd ,$d5 ,$ee ,$6c ,$f5 ,$96 ,$d5 ,$5b ,$bd ,$ca ,$97 ,$57 ,$55 ,$bb ,$74 ,$5b ,$9f ,$aa ,$b6 ,$b6 ,$5e ,$6b ,$4f ,$5c ,$37 ,$57 ,$b5 ,$ab ,$ae ,$da ,$69 ,$0f ,$af ,$52 ,$5d ,$6a ,$b1 ,$6c ,$89 ,$9a ,$6a ,$55 ,$a9 ,$ac ,$4a ,$55 -0002F1r 1 ,$a1 ,$49 ,$16 ,$2d ,$a8 ,$55 ,$50 ,$0b ,$25 ,$0a ,$56 ,$13 ,$b0 ,$d0 ,$02 ,$ab ,$24 ,$48 ,$35 ,$a2 ,$4a ,$42 ,$a3 ,$22 ,$59 ,$8a ,$5a ,$9a ,$e0 ,$55 ,$6c ,$6a ,$6b ,$d3 ,$da ,$74 ,$ed ,$57 ,$5b ,$df ,$2e ,$ff ,$d6 ,$fe ,$a7 ,$f7 ,$6f ,$7b ,$ff ,$fd ,$7e -0002F1r 1 ,$dd ,$ab ,$b7 ,$ad ,$9a ,$55 ,$55 ,$55 ,$2a ,$97 ,$aa ,$4a ,$95 ,$6a ,$4a ,$92 ,$a4 ,$2a ,$94 ,$a8 ,$a0 ,$12 ,$49 ,$48 ,$4a ,$44 ,$12 ,$92 ,$28 ,$0a ,$29 ,$21 ,$29 ,$49 ,$2a ,$15 ,$95 ,$6a ,$64 ,$ad ,$d5 ,$5a ,$95 ,$d9 ,$ab ,$b6 ,$b6 ,$6e ,$76 ,$79 ,$ad -0002F1r 1 ,$b6 ,$55 ,$b5 ,$ab ,$ae ,$b4 ,$2e ,$6d ,$ab ,$65 ,$a5 ,$ad ,$aa ,$2c ,$ad ,$8a ,$9a ,$2a ,$a3 ,$2a ,$49 ,$91 ,$54 ,$48 ,$29 ,$09 ,$49 ,$22 ,$54 ,$42 ,$12 ,$8d ,$24 ,$41 ,$4c ,$52 ,$41 ,$aa ,$a8 ,$52 ,$a6 ,$4c ,$d5 ,$d6 ,$aa ,$ad ,$5e ,$b5 ,$d5 ,$dd ,$d6 -0002F1r 1 ,$d6 ,$5b ,$eb ,$6d ,$db ,$ae ,$56 ,$5b ,$b5 ,$ad ,$aa ,$aa ,$a6 ,$5a ,$aa ,$a9 ,$aa ,$aa ,$aa ,$aa ,$ae ,$aa ,$5a ,$5a ,$ad ,$aa ,$92 ,$a5 ,$2a ,$55 ,$55 ,$4a ,$25 ,$25 ,$63 ,$52 ,$a5 ,$4a ,$9a ,$34 ,$69 ,$55 ,$ea ,$b4 ,$4e ,$cd ,$5d ,$d9 ,$d6 ,$ed ,$aa -0002F1r 1 ,$dd ,$5a ,$db ,$6a ,$d5 ,$55 ,$bb ,$b5 ,$d5 ,$d5 ,$36 ,$5b ,$5b ,$d6 ,$66 ,$53 ,$ab ,$6a ,$d5 ,$aa ,$a6 ,$d6 ,$d4 ,$4a ,$55 ,$a5 ,$6c ,$2a ,$55 ,$29 ,$93 ,$a9 ,$a4 ,$58 ,$32 ,$c9 ,$42 ,$a9 ,$54 ,$69 ,$52 ,$a5 ,$4a ,$d6 ,$52 ,$59 ,$5a ,$aa ,$ca ,$2a ,$95 -0002F1r 1 ,$aa ,$4a ,$95 ,$54 ,$a9 ,$2a ,$25 ,$55 ,$52 ,$25 ,$53 ,$92 ,$52 ,$29 ,$95 ,$32 ,$4b ,$9a ,$52 ,$4d ,$59 ,$a5 ,$aa ,$d2 ,$aa ,$6a ,$aa ,$aa ,$cc ,$52 ,$da ,$4c ,$53 ,$96 ,$aa ,$5a ,$aa ,$25 ,$5b ,$32 ,$65 ,$55 ,$9a ,$aa ,$c9 ,$aa ,$b4 ,$2a ,$d3 ,$b4 ,$4a -0002F1r 1 ,$d3 ,$34 ,$2d ,$cb ,$54 ,$ad ,$b2 ,$a9 ,$a9 ,$59 ,$56 ,$4d ,$6b ,$96 ,$65 ,$cd ,$96 ,$55 ,$cd ,$b2 ,$ad ,$da ,$d6 ,$6a ,$6d ,$ab ,$ae ,$6d ,$d9 ,$56 ,$6d ,$d3 ,$b6 ,$56 ,$5b ,$5d ,$6d ,$ad ,$b6 ,$d5 ,$59 ,$ad ,$6a ,$6b ,$b6 ,$6a ,$d9 ,$b2 ,$ac ,$aa ,$a6 -0002F1r 1 ,$2a ,$55 ,$55 ,$a6 ,$2a ,$53 ,$a6 ,$65 ,$aa ,$34 ,$55 ,$99 ,$2a ,$4b ,$53 ,$a6 ,$2a ,$55 ,$95 ,$55 ,$a9 ,$9a ,$2a ,$4b ,$95 ,$65 ,$ca ,$54 ,$65 ,$a9 ,$aa ,$4c ,$55 ,$99 ,$2c ,$55 ,$aa ,$a6 ,$2a ,$53 ,$a5 ,$a5 ,$aa ,$32 ,$55 ,$95 ,$2a ,$55 ,$a9 ,$b2 ,$64 -0002F1r 1 ,$a9 ,$92 ,$49 ,$a9 ,$92 ,$54 ,$49 ,$52 ,$51 ,$49 ,$92 ,$92 ,$4a ,$52 ,$52 ,$8a ,$4a ,$ca ,$28 ,$95 ,$54 ,$a9 ,$54 ,$a9 ,$aa ,$2a ,$ad ,$d2 ,$aa ,$6a ,$55 ,$ad ,$d5 ,$6a ,$b5 ,$5a ,$ab ,$b5 ,$d6 ,$6a ,$ad ,$ad ,$d6 ,$5a ,$6d ,$ad ,$d5 ,$6a ,$ab ,$56 ,$6d -0002F1r 1 ,$b5 ,$6a ,$d5 ,$aa ,$56 ,$35 ,$55 ,$ab ,$6a ,$55 ,$55 ,$55 ,$55 ,$55 ,$a5 ,$5a ,$55 ,$55 ,$55 ,$ab ,$aa ,$55 ,$ab ,$56 ,$ad ,$5a ,$ab ,$d5 ,$5a ,$ab ,$b5 ,$5a ,$6d ,$ab ,$d5 ,$5a ,$ab ,$b6 ,$66 ,$d5 ,$6a ,$d5 ,$6a ,$d5 ,$aa ,$5a ,$55 ,$ab ,$6a ,$55 ,$4b -0002F1r 1 ,$ab ,$aa ,$aa ,$aa ,$4c ,$55 ,$aa ,$54 ,$a9 ,$92 ,$2a ,$49 ,$95 ,$94 ,$54 ,$92 ,$52 ,$52 ,$52 ,$52 ,$4a ,$a9 ,$a4 ,$52 ,$a5 ,$54 ,$a9 ,$54 ,$29 ,$95 ,$2a ,$95 ,$52 ,$a9 ,$52 ,$29 ,$55 ,$52 ,$55 ,$4a ,$55 ,$2a ,$55 ,$95 ,$aa ,$4c ,$55 ,$55 ,$55 ,$5a ,$a6 -0002F1r 1 ,$69 ,$9a ,$aa ,$aa ,$ca ,$2a ,$4d ,$55 ,$55 ,$65 ,$a9 ,$aa ,$2a ,$4b ,$53 ,$55 ,$d5 ,$54 ,$55 ,$d5 ,$b2 ,$ac ,$aa ,$5a ,$55 ,$ad ,$aa ,$56 ,$55 ,$b3 ,$66 ,$d5 ,$aa ,$a6 ,$55 ,$ab ,$66 ,$55 ,$cb ,$aa -0002F1r 1 xx xx xx xx .align $40 -0002F5r 1 xx xx xx xx -0002F9r 1 xx xx xx xx -0002FDr 1 xx xx xx -000300r 1 _Test_DPCM4: -000300r 1 00 00 00 90 .byte $00 ,$00 ,$00 ,$90 ,$38 ,$39 ,$ae ,$1a ,$4b ,$72 ,$2b ,$ce ,$b8 ,$91 ,$ce ,$b1 ,$aa ,$42 ,$3b ,$a5 ,$92 ,$9f ,$24 ,$be ,$dd ,$01 ,$a0 ,$eb ,$ff ,$01 ,$20 ,$1e ,$bc ,$f2 ,$9d ,$fa ,$35 ,$01 ,$c2 ,$df ,$8d ,$60 ,$54 ,$d0 ,$e5 ,$ff ,$11 ,$46 ,$e6 ,$70 -000304r 1 38 39 AE 1A -000308r 1 4B 72 2B CE -00030Cr 1 B8 91 CE B1 -000310r 1 AA 42 3B A5 -000314r 1 92 9F 24 BE -000318r 1 DD 01 A0 EB -00031Cr 1 FF 01 20 1E -000320r 1 BC F2 9D FA -000324r 1 35 01 C2 DF -000328r 1 8D 60 54 D0 -00032Cr 1 E5 FF 11 46 -000330r 1 E6 70 E0 F3 -000334r 1 1F 7A 50 80 -000338r 1 F9 D2 98 F9 -00033Cr 1 3E 0E CE 31 -000340r 1 4C C1 1C 1E -000344r 1 FE 75 BC 21 -000348r 1 68 05 97 3E -00034Cr 1 FC 91 1E 0E -000350r 1 2F 70 BC 31 -000354r 1 3C D6 E0 3A -000358r 1 7F 30 07 10 -00035Cr 1 4F F8 D7 D7 -000360r 1 83 83 47 88 -000364r 1 0F 1E B7 F6 -000368r 1 80 4D F8 78 -00036Cr 1 5C E3 F1 B8 -000370r 1 78 28 80 C7 -000374r 1 F0 87 0F 3F -000378r 1 0C 1E FC 23 -00037Cr 1 0F 1F 1E 0E -000380r 1 3E 78 CC 05 -000384r 1 C6 47 3E BE -000388r 1 94 F1 E1 60 -00038Cr 1 D4 C3 DA C1 -000390r 1 87 E3 43 19 -000394r 1 E7 C6 C1 C3 -000398r 1 19 0F 27 1E -00039Cr 1 1E 79 38 5E -0003A0r 1 7C 7E 24 E1 -0003A4r 1 F0 B8 51 E0 -0003A8r 1 E3 47 1F 19 -0003ACr 1 0E CF C8 67 -0003B0r 1 12 1F 1C 3D -0003B4r 1 CC C7 92 B3 -0003B8r 1 31 DC 71 C2 -0003BCr 1 C7 81 C3 1F -0003C0r 1 CC E7 78 C2 -0003C4r 1 83 37 8C C3 -0003C8r 1 3D C6 87 87 -0003CCr 1 83 3C 6E 78 -0003D0r 1 C4 F3 02 87 -0003D4r 1 4F CD 7C 50 -0003D8r 1 C3 E1 1C 67 -0003DCr 1 E8 87 C7 71 -0003E0r 1 9C F0 E1 71 -0003E4r 1 C2 F1 B1 1D -0003E8r 1 64 38 8E 3F -0003ECr 1 38 BC 34 3C -0003F0r 1 5B 38 1C 9E -0003F4r 1 3A 3E 0D C7 -0003F8r 1 09 DF 86 87 -0003FCr 1 07 8F 0F -0012F1r 1 ,$e0 ,$f3 ,$1f ,$7a ,$50 ,$80 ,$f9 ,$d2 ,$98 ,$f9 ,$3e ,$0e ,$ce ,$31 ,$4c ,$c1 ,$1c ,$1e ,$fe ,$75 ,$bc ,$21 ,$68 ,$05 ,$97 ,$3e ,$fc ,$91 ,$1e ,$0e ,$2f ,$70 ,$bc ,$31 ,$3c ,$d6 ,$e0 ,$3a ,$7f ,$30 ,$07 ,$10 ,$4f ,$f8 ,$d7 ,$d7 ,$83 ,$83 ,$47 ,$88 ,$0f -0012F1r 1 ,$1e ,$b7 ,$f6 ,$80 ,$4d ,$f8 ,$78 ,$5c ,$e3 ,$f1 ,$b8 ,$78 ,$28 ,$80 ,$c7 ,$f0 ,$87 ,$0f ,$3f ,$0c ,$1e ,$fc ,$23 ,$0f ,$1f ,$1e ,$0e ,$3e ,$78 ,$cc ,$05 ,$c6 ,$47 ,$3e ,$be ,$94 ,$f1 ,$e1 ,$60 ,$d4 ,$c3 ,$da ,$c1 ,$87 ,$e3 ,$43 ,$19 ,$e7 ,$c6 ,$c1 ,$c3 -0012F1r 1 ,$19 ,$0f ,$27 ,$1e ,$1e ,$79 ,$38 ,$5e ,$7c ,$7e ,$24 ,$e1 ,$f0 ,$b8 ,$51 ,$e0 ,$e3 ,$47 ,$1f ,$19 ,$0e ,$cf ,$c8 ,$67 ,$12 ,$1f ,$1c ,$3d ,$cc ,$c7 ,$92 ,$b3 ,$31 ,$dc ,$71 ,$c2 ,$c7 ,$81 ,$c3 ,$1f ,$cc ,$e7 ,$78 ,$c2 ,$83 ,$37 ,$8c ,$c3 ,$3d ,$c6 ,$87 -0012F1r 1 ,$87 ,$83 ,$3c ,$6e ,$78 ,$c4 ,$f3 ,$02 ,$87 ,$4f ,$cd ,$7c ,$50 ,$c3 ,$e1 ,$1c ,$67 ,$e8 ,$87 ,$c7 ,$71 ,$9c ,$f0 ,$e1 ,$71 ,$c2 ,$f1 ,$b1 ,$1d ,$64 ,$38 ,$8e ,$3f ,$38 ,$bc ,$34 ,$3c ,$5b ,$38 ,$1c ,$9e ,$3a ,$3e ,$0d ,$c7 ,$09 ,$df ,$86 ,$87 ,$07 ,$8f -0012F1r 1 ,$0f ,$73 ,$c6 ,$05 ,$a7 ,$e1 ,$8d ,$47 ,$c2 ,$e2 ,$b6 ,$b1 ,$cb ,$e0 ,$e1 ,$1b ,$1e ,$70 ,$30 ,$c7 ,$e3 ,$e3 ,$e3 ,$23 ,$68 ,$3c ,$78 ,$f8 ,$18 ,$9e ,$63 ,$1e ,$25 ,$7e ,$38 ,$78 ,$3c ,$3e ,$36 ,$38 ,$1f ,$c1 ,$59 ,$1e ,$b0 ,$37 ,$1e ,$0e ,$0e ,$df ,$8e -0012F1r 1 ,$23 ,$f7 ,$81 ,$c2 ,$8e ,$a6 ,$74 ,$f7 ,$71 ,$c0 ,$81 ,$8f ,$f6 ,$b1 ,$e1 ,$c1 ,$49 ,$e2 ,$9c ,$03 ,$7c ,$b8 ,$79 ,$e6 ,$d8 ,$35 ,$34 ,$3a ,$1c ,$7c ,$d2 ,$dc ,$b6 ,$71 ,$20 ,$1f ,$ce ,$8c ,$37 ,$b4 ,$8c ,$e3 ,$83 ,$47 ,$1e ,$dc ,$24 ,$87 ,$e3 ,$8f ,$47 -0012F1r 1 ,$78 ,$b8 ,$39 ,$f8 ,$c0 ,$73 ,$8e ,$27 ,$26 ,$78 ,$e3 ,$f8 ,$48 ,$e6 ,$a1 ,$d9 ,$86 ,$91 ,$39 ,$fe ,$f2 ,$21 ,$0c ,$3b ,$1d ,$ce ,$33 ,$36 ,$5c ,$1b ,$cc ,$0c ,$4f ,$ce ,$03 ,$8f ,$7c ,$c1 ,$47 ,$d5 ,$84 ,$a7 ,$1c ,$c7 ,$87 ,$71 ,$ce ,$e9 ,$89 ,$c3 ,$08 -0012F1r 1 ,$29 ,$7d ,$ce ,$8b ,$f1 ,$70 ,$89 ,$77 ,$30 ,$e7 ,$75 ,$30 ,$1c ,$3e ,$38 ,$6e ,$e2 ,$f1 ,$8e ,$c2 ,$3b ,$cd ,$1c ,$5c ,$c6 ,$c0 ,$83 ,$8f ,$27 ,$d7 ,$c3 ,$36 ,$c6 ,$8c ,$1f ,$71 ,$03 ,$e7 ,$c0 ,$83 ,$3e ,$8e ,$f7 ,$78 ,$f0 ,$66 ,$86 ,$e0 ,$4b ,$c3 ,$3c -0012F1r 1 ,$72 ,$88 ,$6f ,$f8 ,$f1 ,$c2 ,$e1 ,$3c ,$34 ,$9a ,$1b ,$3e ,$cd ,$68 ,$06 ,$6e ,$9c ,$e2 ,$c3 ,$1f ,$35 ,$0c ,$2f ,$cc ,$d3 ,$b8 ,$3e ,$24 ,$87 ,$c6 ,$f0 ,$c9 ,$89 ,$f3 ,$ec ,$e0 ,$63 ,$43 ,$8f ,$bb ,$8c ,$63 ,$f0 ,$80 ,$8f ,$8b ,$1f ,$e2 ,$36 ,$c4 ,$43 -0012F1r 1 ,$59 ,$c9 ,$39 ,$77 ,$61 ,$c8 ,$89 ,$cf ,$f1 ,$a3 ,$63 ,$66 ,$0e ,$ca ,$e1 ,$b9 ,$7c ,$66 ,$61 ,$c4 ,$99 ,$9b ,$bc ,$72 ,$2c ,$4e ,$46 ,$78 ,$74 ,$7a ,$78 ,$4e ,$58 ,$5c ,$3c ,$3c ,$b3 ,$70 ,$27 ,$39 ,$8e ,$9c ,$1c ,$3e ,$23 ,$8f ,$70 ,$98 ,$8f ,$1f ,$8f -0012F1r 1 ,$6b ,$27 ,$18 ,$8e ,$07 ,$b5 ,$29 ,$df ,$63 ,$0e ,$c2 ,$c1 ,$e3 ,$67 ,$62 ,$8e ,$d9 ,$90 ,$e7 ,$31 ,$0e ,$2f ,$e3 ,$c1 ,$fc ,$30 ,$2b ,$c3 ,$87 ,$e2 ,$d8 ,$f9 ,$9c ,$42 ,$e1 ,$c3 ,$73 ,$1e ,$1c ,$3c ,$d8 ,$f3 ,$d0 ,$14 ,$87 ,$6f ,$3c ,$78 ,$f1 ,$21 ,$c7 -0012F1r 1 ,$8f ,$e0 ,$04 ,$d3 ,$f8 ,$98 ,$e5 ,$e1 ,$09 ,$df ,$b0 ,$0e ,$e7 ,$e8 ,$8f ,$23 ,$83 ,$79 ,$fc ,$f0 ,$80 ,$e3 ,$18 ,$57 ,$37 ,$3e ,$6c ,$18 ,$b8 ,$e1 ,$35 ,$7c ,$8e ,$27 ,$78 ,$a0 ,$71 ,$fa ,$c3 ,$2b ,$d2 ,$18 ,$1d ,$9e ,$cb ,$e1 ,$85 ,$47 ,$1b ,$1c ,$3d -0012F1r 1 ,$73 ,$c3 ,$b1 ,$81 ,$56 ,$8f ,$ef ,$5c ,$32 ,$d1 ,$43 ,$98 ,$c3 ,$2c ,$fd ,$d8 ,$e1 ,$e0 ,$03 ,$8f ,$e3 ,$32 ,$ad ,$e2 ,$f0 ,$86 ,$03 ,$0f ,$7b ,$3c ,$72 ,$35 ,$b9 ,$c9 ,$19 ,$0f ,$76 ,$43 ,$23 ,$f2 ,$bc ,$a5 ,$8d ,$c3 ,$96 ,$94 ,$59 ,$7a ,$de ,$0a ,$ac -0012F1r 1 ,$78 ,$98 ,$ed ,$90 ,$ec ,$b8 ,$91 ,$d6 ,$1e ,$be ,$45 ,$32 ,$53 ,$c2 ,$16 ,$5c ,$ce ,$38 ,$1e ,$76 ,$6c ,$c7 ,$a5 ,$16 ,$8e ,$31 ,$3c ,$4e ,$f7 ,$86 ,$c6 ,$30 ,$f3 ,$4a ,$d3 ,$a7 ,$64 ,$29 ,$09 ,$e7 ,$23 ,$8e ,$ed ,$b1 ,$19 ,$d1 ,$33 ,$17 ,$e6 ,$78 ,$98 -0012F1r 1 ,$e7 ,$38 ,$71 ,$23 ,$f0 ,$c5 ,$58 ,$f8 ,$79 ,$96 ,$12 ,$8f ,$23 ,$9e ,$cf ,$71 ,$1c ,$c6 ,$37 ,$32 ,$dc ,$31 ,$1c ,$c7 ,$a5 ,$e4 ,$4c ,$39 ,$7b ,$30 ,$5a ,$63 ,$8f ,$87 ,$89 ,$0f ,$13 ,$74 ,$8e ,$67 ,$8f ,$cd ,$e4 ,$38 ,$3a ,$1d ,$c7 ,$d8 ,$91 ,$f9 ,$70 -0012F1r 1 ,$c8 ,$71 ,$a3 ,$d9 ,$05 ,$16 ,$79 ,$0e ,$f3 ,$71 ,$e0 ,$e5 ,$46 ,$8c ,$37 ,$78 ,$ec ,$e0 ,$93 ,$8f ,$29 ,$7d ,$18 ,$c9 ,$4d ,$86 ,$c7 ,$4f ,$32 ,$4e ,$6c ,$c6 ,$e1 ,$d8 ,$97 ,$39 ,$2e ,$33 ,$b0 ,$da ,$d4 ,$f1 ,$18 ,$e3 ,$72 ,$0c ,$ee ,$b8 ,$1c ,$b3 ,$c3 -0012F1r 1 ,$3b ,$0e ,$1c ,$ec ,$f0 ,$e1 ,$0e ,$c3 ,$3c ,$1e ,$da ,$68 ,$3a ,$c7 ,$29 ,$36 ,$87 ,$39 ,$9e ,$8d ,$8e ,$12 ,$cf ,$16 ,$4d ,$5b ,$6c ,$83 ,$c3 ,$31 ,$0f ,$4f ,$3d ,$1e ,$e0 ,$31 ,$c7 ,$0d ,$0f ,$5e ,$f0 ,$3c ,$de ,$d0 ,$18 ,$c7 ,$63 ,$6e ,$b8 ,$f0 ,$18 -0012F1r 1 ,$ad ,$e3 ,$94 ,$a7 ,$62 ,$9c ,$e3 ,$70 ,$96 ,$c7 ,$71 ,$96 ,$43 ,$71 ,$9c ,$e3 ,$68 ,$8c ,$e7 ,$38 ,$9d ,$e5 ,$78 ,$48 ,$c3 ,$cb ,$c9 ,$a4 ,$71 ,$ce ,$a3 ,$13 ,$d1 ,$4b ,$8d ,$cf ,$08 ,$99 ,$9d ,$b6 ,$15 ,$c7 ,$46 ,$0f ,$5e ,$72 ,$4a ,$47 ,$63 ,$7a ,$8d -0012F1r 1 ,$91 ,$d8 ,$4f ,$f1 ,$d0 ,$46 ,$8b ,$d7 ,$86 ,$63 ,$34 ,$6e ,$53 ,$1b ,$86 ,$33 ,$74 ,$4e ,$e3 ,$e1 ,$a8 ,$83 ,$3b ,$9c ,$d3 ,$e1 ,$94 ,$cc ,$63 ,$15 ,$3b ,$0e ,$3b ,$f8 ,$98 ,$d7 ,$38 ,$94 ,$33 ,$31 ,$1e ,$e7 ,$b9 ,$cc ,$07 ,$86 ,$9c ,$c6 ,$35 ,$3c ,$c6 -0012F1r 1 ,$73 ,$1c ,$a7 ,$2a ,$c3 ,$69 ,$5c ,$c7 ,$f2 ,$c8 ,$c7 ,$19 ,$dc ,$c0 ,$71 ,$e4 ,$f2 ,$6c ,$e4 ,$4c ,$e6 ,$32 ,$ee ,$21 ,$5e ,$86 ,$e3 ,$38 ,$3e ,$38 ,$a9 ,$b1 ,$2d ,$8e ,$7d ,$38 ,$b0 ,$e3 ,$1c ,$8b ,$07 ,$3e ,$38 ,$c7 ,$67 ,$0e ,$0e ,$3f ,$d2 ,$03 ,$3d -0012F1r 1 ,$c6 ,$e3 ,$2c ,$2d ,$47 ,$f8 ,$a2 ,$f6 ,$38 ,$84 ,$1b ,$0f ,$3e ,$3c ,$ce ,$38 ,$87 ,$5a ,$23 ,$c7 ,$3b ,$1e ,$36 ,$72 ,$21 ,$e6 ,$38 ,$8a ,$e3 ,$37 ,$72 ,$e3 ,$38 ,$87 ,$1b ,$39 ,$89 ,$cf ,$13 ,$8a ,$db ,$f8 ,$9c ,$79 ,$70 ,$85 ,$c6 ,$c8 ,$f8 ,$f0 ,$d4 -0012F1r 1 ,$0f ,$e3 ,$0c ,$e6 ,$1c ,$1e ,$0f ,$72 ,$1a ,$1e ,$ed ,$1d ,$0f ,$e1 ,$38 ,$c6 ,$c1 ,$3d ,$c7 ,$0d ,$2b ,$07 ,$57 ,$bc ,$8c ,$1b ,$4e ,$6e ,$54 ,$5e ,$ac ,$8e ,$0c ,$c7 ,$73 ,$91 ,$ae ,$e4 ,$8e ,$63 ,$61 ,$1c ,$a3 ,$ab ,$8d ,$c7 ,$c5 ,$88 ,$87 ,$fe ,$e8 -0012F1r 1 ,$c1 ,$49 ,$e7 ,$e8 ,$6c ,$5c ,$47 ,$64 ,$8c ,$e3 ,$71 ,$e0 ,$f1 ,$70 ,$8f ,$63 ,$d1 ,$1b ,$51 ,$e7 ,$89 ,$71 ,$38 ,$1c ,$3d ,$ec ,$28 ,$ae ,$9e ,$78 ,$23 ,$68 ,$7d ,$e0 ,$78 ,$71 ,$e3 ,$3c ,$62 ,$62 ,$1f ,$3d ,$98 ,$b8 ,$af ,$15 ,$0e ,$1f ,$b9 ,$38 ,$1c -0012F1r 1 ,$dc ,$38 ,$3c ,$fc ,$e8 ,$58 ,$21 ,$8e ,$1f ,$eb ,$e0 ,$a5 ,$b2 ,$61 ,$37 ,$46 ,$1c ,$8b ,$d3 ,$93 ,$23 ,$9e ,$8b ,$e3 ,$f0 ,$38 ,$c3 ,$c7 ,$2e ,$c6 ,$f1 ,$48 ,$8d ,$3b ,$38 ,$4e ,$e4 ,$1c ,$cf ,$23 ,$8d ,$33 ,$73 ,$e4 ,$e0 ,$3a ,$9d ,$29 ,$57 ,$8e ,$0d -0012F1r 1 ,$78 ,$ce ,$d8 ,$18 ,$be ,$60 ,$3e ,$3a ,$56 ,$ac ,$f5 ,$e3 ,$66 ,$70 ,$18 ,$99 ,$1b ,$8e ,$23 ,$27 ,$16 ,$9f ,$bb ,$e8 ,$22 ,$0f ,$0d ,$c7 ,$d9 ,$8a ,$9b ,$8e ,$05 ,$ee ,$2a ,$9e ,$ce ,$81 ,$07 ,$67 ,$96 ,$e3 ,$d4 ,$1c ,$62 ,$3d ,$1e ,$e7 ,$1c ,$0f ,$d4 -0012F1r 1 ,$8e ,$68 ,$3c ,$f8 ,$e0 ,$f5 ,$88 ,$c3 ,$e3 ,$f1 ,$c1 ,$31 ,$1a ,$0f ,$b6 ,$51 ,$79 ,$6a ,$ce ,$8a ,$b3 ,$45 ,$fd ,$90 ,$e5 ,$22 ,$8e ,$b1 ,$f1 ,$70 ,$cb ,$c1 ,$73 ,$43 ,$75 ,$bc ,$78 ,$e0 ,$a2 ,$c7 ,$85 ,$39 ,$33 ,$7a ,$0e ,$57 ,$7c ,$18 ,$39 ,$3c ,$d6 -0012F1r 1 ,$4a ,$ec ,$78 ,$38 ,$3a ,$b8 ,$79 ,$dc ,$e9 ,$20 ,$07 ,$0f ,$0f ,$c7 ,$be ,$32 ,$85 ,$8e ,$63 ,$33 ,$2e ,$a6 ,$e3 ,$19 ,$b5 ,$69 ,$0c ,$c7 ,$71 ,$dc ,$85 ,$b9 ,$51 ,$87 ,$73 ,$3c ,$f3 ,$61 ,$82 ,$87 ,$13 ,$c7 ,$d1 ,$8d ,$c7 ,$e1 ,$70 ,$8e ,$17 ,$ee ,$0c -0012F1r 1 ,$39 ,$3c ,$47 ,$e3 ,$ec ,$38 ,$34 ,$3b ,$71 ,$a3 ,$1c ,$8e ,$e5 ,$78 ,$ea ,$d0 ,$4e ,$b0 ,$78 ,$8e ,$87 ,$6c ,$98 ,$5f ,$3c ,$8e ,$0e ,$39 ,$7c ,$56 ,$78 ,$e6 ,$34 ,$58 ,$3c ,$cc ,$77 ,$a8 ,$70 ,$2e ,$ce ,$61 ,$0e ,$97 ,$37 ,$86 ,$2c ,$ed ,$9a ,$e3 ,$30 -0012F1r 1 ,$73 ,$21 ,$8f ,$c7 ,$31 ,$ce ,$c3 ,$a4 ,$0f ,$23 ,$cf ,$13 ,$f7 ,$90 ,$c1 ,$46 ,$6b ,$79 ,$39 ,$85 ,$e3 ,$46 ,$8e ,$0e ,$27 ,$9b ,$c3 ,$e1 ,$0d ,$37 ,$1e ,$9f ,$74 ,$8c ,$e4 ,$e0 ,$ac ,$c5 ,$63 ,$78 ,$f4 ,$61 ,$5c ,$4b ,$2c ,$93 ,$3d ,$fa ,$f8 ,$20 ,$72 -0012F1r 1 ,$63 ,$a3 ,$79 ,$e0 ,$c7 ,$67 ,$c1 ,$49 ,$31 ,$f8 ,$79 ,$2c ,$dc ,$72 ,$3a ,$99 ,$38 ,$1b ,$e4 ,$e1 ,$b8 ,$86 ,$d9 ,$8d ,$8f ,$e3 ,$09 ,$0f ,$0f ,$1c ,$7f ,$2c ,$f8 ,$c1 ,$86 ,$89 ,$67 ,$3e ,$8e ,$e3 ,$49 ,$8c ,$e3 ,$61 ,$8d ,$b5 ,$56 ,$c1 ,$cc ,$9d ,$72 -0012F1r 1 ,$06 ,$ed ,$8c ,$c3 ,$6b ,$a3 ,$25 ,$ea ,$70 ,$ce ,$6c ,$64 ,$f1 ,$23 ,$3b ,$e1 ,$f0 ,$f8 ,$30 ,$a3 ,$71 ,$4f ,$43 ,$4e ,$52 ,$e3 ,$b9 ,$b1 ,$5c ,$5a ,$ec ,$38 ,$0e ,$f3 ,$b0 ,$91 ,$f0 ,$5c ,$3e ,$12 ,$1f ,$75 ,$f0 ,$b1 ,$e4 ,$83 ,$93 ,$0b ,$f7 ,$e0 ,$e0 -0012F1r 1 ,$b6 ,$c3 ,$8b ,$9a ,$b8 ,$b4 ,$f4 ,$24 ,$0e ,$1f ,$9c ,$3a ,$ec ,$64 ,$a9 ,$43 ,$73 ,$b3 ,$c9 ,$9c ,$c2 ,$f1 ,$d8 ,$46 ,$a3 ,$3c ,$ba ,$cd ,$20 ,$b7 ,$8c ,$8b ,$4d ,$e2 ,$8e ,$63 ,$3c ,$0f ,$6e ,$8c ,$1e ,$2e ,$5d ,$5a ,$89 ,$3b ,$8e ,$0b ,$cc ,$35 ,$94 -0012F1r 1 ,$67 ,$8b ,$07 ,$17 ,$1f ,$71 ,$5e ,$f0 ,$39 ,$8e ,$1c ,$4f ,$1e ,$1a ,$66 ,$32 ,$9d ,$67 ,$1c ,$78 ,$36 ,$ba ,$e4 ,$e2 ,$98 ,$27 ,$f2 ,$38 ,$e5 ,$c8 ,$67 ,$8d ,$83 ,$33 ,$4e ,$34 ,$a7 ,$0f ,$2b ,$97 ,$36 ,$38 ,$c7 ,$8e ,$c3 ,$1a ,$c3 ,$e3 ,$78 ,$87 ,$c1 -0012F1r 1 ,$8a ,$af ,$38 ,$83 ,$e3 ,$e3 ,$c9 ,$9c ,$cc ,$89 ,$07 ,$73 ,$c3 ,$c7 ,$99 ,$c5 ,$63 ,$31 ,$47 ,$e3 ,$46 ,$ed ,$e0 ,$71 ,$63 ,$e3 ,$d9 ,$c0 ,$91 ,$1c ,$e7 ,$71 ,$a5 ,$5a ,$89 ,$7c ,$cc ,$1a ,$1e ,$9d ,$31 ,$2e ,$1d ,$3b ,$c6 ,$78 ,$f0 ,$4c ,$9e ,$f1 ,$58 -0012F1r 1 ,$39 ,$78 ,$86 ,$87 ,$59 ,$1d ,$da ,$b8 ,$52 ,$e3 ,$23 ,$8e ,$1b ,$1f ,$6a ,$d4 ,$96 ,$71 ,$b8 ,$12 ,$1e ,$ce ,$76 ,$c6 ,$d1 ,$b1 ,$31 ,$e3 ,$70 ,$1c ,$dd ,$19 ,$07 ,$2f ,$5c ,$33 ,$9a ,$78 ,$cb ,$0e ,$1d ,$17 ,$4e ,$74 ,$fc ,$f0 ,$39 ,$c8 ,$d1 ,$34 ,$3e -0012F1r 1 ,$34 ,$33 ,$c3 ,$e1 ,$95 ,$8e ,$3c ,$8b ,$95 ,$63 ,$ce ,$86 ,$3c ,$9e ,$1c ,$79 ,$98 ,$b3 ,$74 ,$92 ,$d5 ,$31 ,$b9 ,$d2 ,$43 ,$a3 ,$e3 ,$78 ,$58 ,$f1 ,$b0 ,$53 ,$c6 ,$39 ,$0b ,$c7 ,$63 ,$47 ,$a7 ,$70 ,$9c ,$e3 ,$91 ,$c3 ,$76 ,$1c ,$e3 ,$ca ,$f0 ,$d8 ,$f0 -0012F1r 1 ,$31 ,$8e ,$b3 ,$e1 ,$c4 ,$e3 ,$19 ,$0e ,$47 ,$2f ,$4e ,$e3 ,$1a ,$8d ,$97 ,$38 ,$69 ,$87 ,$9e ,$e8 ,$e3 ,$30 ,$e6 ,$c1 ,$8d ,$f1 ,$9a ,$39 ,$c4 ,$47 ,$39 ,$1e ,$99 ,$8e ,$c7 ,$e9 ,$42 ,$c7 ,$31 ,$9d ,$29 ,$b3 ,$83 ,$87 ,$71 ,$dc ,$3c ,$71 ,$a5 ,$62 ,$f1 -0012F1r 1 ,$1c ,$4e ,$0f ,$3c ,$d2 ,$63 ,$c7 ,$b1 ,$19 ,$39 ,$36 ,$0e ,$db ,$e1 ,$f4 ,$18 ,$e3 ,$b8 ,$f0 ,$e6 ,$e8 ,$48 ,$9e ,$31 ,$8e ,$c7 ,$71 ,$86 ,$1f ,$2c ,$2e ,$bc ,$38 ,$e6 ,$f8 ,$e0 ,$53 ,$34 ,$3a ,$9c ,$7c ,$4c ,$b3 ,$f8 ,$08 ,$7b ,$26 ,$dc ,$d2 ,$4d ,$1c -0012F1r 1 ,$c7 ,$a1 ,$9e ,$e0 ,$47 ,$9d ,$cc ,$16 ,$bc ,$1c ,$ce ,$31 ,$93 ,$1d ,$e6 ,$f1 ,$24 ,$d5 ,$c2 ,$71 ,$93 ,$75 ,$70 ,$83 ,$97 ,$f1 ,$0d ,$7c ,$94 ,$0d ,$5f ,$62 ,$8e ,$9d ,$15 ,$8d ,$6d ,$9a ,$b2 ,$78 ,$71 ,$9c ,$78 ,$4e ,$6c ,$a4 ,$1b ,$5b ,$34 ,$8e ,$9c -0012F1r 1 ,$87 ,$8b ,$d5 ,$86 ,$53 ,$4d ,$e6 ,$b0 ,$c6 ,$3b ,$99 ,$c1 ,$b6 ,$a1 ,$e5 ,$58 ,$96 ,$17 ,$36 ,$c7 ,$61 ,$9c ,$8b ,$8f ,$43 ,$1b ,$9e ,$91 ,$19 ,$6f ,$13 ,$1e ,$72 ,$63 ,$c7 ,$ac ,$0e ,$5b ,$78 ,$1a ,$1c ,$e6 ,$c9 ,$cd ,$38 ,$47 ,$e1 ,$13 ,$cf ,$70 ,$8e -0012F1r 1 ,$e3 ,$cc ,$87 ,$61 ,$dc ,$c3 ,$e2 ,$ca ,$25 ,$e7 ,$68 ,$c9 ,$e4 ,$30 ,$76 ,$b3 ,$36 ,$98 ,$65 ,$b9 ,$78 ,$63 ,$36 ,$91 ,$f1 ,$94 ,$8d ,$65 ,$e7 ,$48 ,$47 ,$8e ,$1b ,$e5 ,$98 ,$0f ,$27 ,$b6 ,$38 ,$36 ,$99 ,$cb ,$64 ,$1e ,$4b ,$76 ,$98 ,$c7 ,$29 ,$cb ,$54 -0012F1r 1 ,$76 ,$b4 ,$98 ,$87 ,$e3 ,$e4 ,$38 ,$53 ,$76 ,$1c ,$d5 ,$8c ,$93 ,$36 ,$59 ,$71 ,$7c ,$e2 ,$71 ,$b8 ,$31 ,$6e ,$ac ,$e0 ,$c7 ,$91 ,$87 ,$c7 ,$19 ,$33 ,$d3 ,$b1 ,$1c ,$3a ,$3d ,$26 ,$d6 ,$34 ,$ba ,$f1 ,$28 ,$ce ,$31 ,$66 ,$dc ,$b0 ,$e3 ,$1c ,$87 ,$07 ,$c7 -0012F1r 1 ,$79 ,$cc ,$e8 ,$93 ,$89 ,$2b ,$67 ,$3c ,$8c ,$e3 ,$38 ,$4e ,$1d ,$36 ,$93 ,$cd ,$b1 ,$4a ,$73 ,$70 ,$4e ,$39 ,$96 ,$e3 ,$e8 ,$c3 ,$1c ,$ce ,$52 ,$9c ,$99 ,$2d ,$cb ,$71 ,$8c ,$ce ,$31 ,$cb ,$38 ,$36 ,$6e ,$d4 ,$32 ,$1e ,$69 ,$27 ,$5c ,$63 ,$9c ,$35 ,$0d -0012F1r 1 ,$d7 ,$58 ,$6e ,$a6 ,$38 ,$4e ,$3c ,$a7 ,$46 ,$1b ,$73 ,$9c ,$8e ,$47 ,$8c ,$33 ,$0f ,$2e ,$0d ,$4f ,$15 ,$e7 ,$19 ,$8e ,$73 ,$1c ,$47 ,$63 ,$1e ,$07 ,$af ,$58 ,$55 ,$8e ,$ad ,$22 ,$3f ,$9a ,$16 ,$39 ,$0d ,$97 ,$6b ,$38 ,$a7 ,$c9 ,$9a ,$89 ,$f1 ,$0c ,$bb -0012F1r 1 ,$78 ,$0c ,$6f ,$91 ,$2b ,$9a ,$63 ,$c7 ,$9c ,$11 ,$9d ,$e5 ,$86 ,$c7 ,$d8 ,$c1 ,$d9 ,$6a ,$32 ,$96 ,$c5 ,$71 ,$8e ,$e3 ,$91 ,$ce ,$61 ,$f1 ,$83 ,$e5 ,$49 ,$8e ,$79 ,$34 ,$66 ,$e6 ,$e2 ,$d4 ,$98 ,$33 ,$3c ,$e6 ,$e2 ,$c4 ,$f1 ,$1c ,$c7 ,$38 ,$95 ,$f1 ,$e3 -0012F1r 1 ,$42 ,$8e ,$e6 ,$1c ,$6e ,$e1 ,$78 ,$ca ,$85 ,$6e ,$68 ,$e3 ,$38 ,$f1 ,$e8 ,$e1 ,$64 ,$2b ,$71 ,$e3 ,$32 ,$63 ,$e6 ,$72 ,$54 ,$1d ,$3a ,$72 ,$e3 ,$d1 ,$a9 ,$38 ,$3c ,$3a ,$4e ,$a7 ,$a3 ,$19 ,$8d ,$3a ,$33 ,$71 ,$2e ,$73 ,$6a ,$74 ,$70 ,$3a ,$95 ,$e9 ,$58 -0012F1r 1 ,$9c ,$6b ,$31 ,$27 ,$b3 ,$98 ,$cd ,$ca ,$c4 ,$3a ,$d6 ,$b8 ,$e8 ,$d1 ,$78 ,$f0 ,$91 ,$3a ,$e9 ,$1c ,$e6 ,$61 ,$b3 ,$e8 ,$d1 ,$78 ,$64 ,$65 ,$76 ,$52 ,$8e ,$f3 ,$48 ,$3d ,$e2 ,$1c ,$1e ,$a3 ,$0f ,$ab ,$8d ,$c5 ,$a4 ,$87 ,$17 ,$56 ,$39 ,$1d ,$ce ,$19 ,$0f -0012F1r 1 ,$47 ,$39 ,$1e ,$47 ,$4e ,$59 ,$2d ,$1b ,$4d ,$c7 ,$1c ,$c6 ,$b5 ,$89 ,$8b ,$63 ,$1e ,$33 ,$63 ,$d3 ,$8d ,$d2 ,$68 ,$8e ,$73 ,$e1 ,$8d ,$54 ,$59 ,$2e ,$d6 ,$03 ,$cf ,$8c ,$8b ,$55 ,$47 ,$8e ,$f1 ,$94 ,$c3 ,$e5 ,$c3 ,$72 ,$e2 ,$a3 ,$c9 ,$c2 ,$0e ,$2f ,$c7 -0012F1r 1 ,$9c ,$ac ,$cc ,$72 ,$61 ,$8d ,$39 ,$9c ,$e9 ,$d4 ,$a1 ,$27 ,$d6 ,$d2 ,$51 ,$2e ,$87 ,$c7 ,$31 ,$8f ,$f0 ,$cc ,$4c ,$39 ,$ce ,$34 ,$ce ,$61 ,$15 ,$cf ,$e8 ,$71 ,$e8 ,$4c ,$d5 ,$92 ,$1b ,$2b ,$1e ,$b9 ,$e8 ,$e1 ,$38 ,$e3 ,$69 ,$1c ,$76 ,$d8 ,$91 ,$8b ,$c7 -0012F1r 1 ,$78 ,$1c ,$e5 ,$e8 ,$91 ,$39 ,$8e ,$36 ,$7a ,$e2 ,$98 ,$71 ,$1d ,$e3 ,$70 ,$ce ,$91 ,$53 ,$dc ,$32 ,$96 ,$33 ,$f3 ,$a0 ,$8d ,$d3 ,$b4 ,$32 ,$c7 ,$b8 ,$c4 ,$c7 ,$89 ,$1e ,$4e ,$3c ,$f1 ,$ac ,$1c ,$8e ,$33 ,$3c ,$76 ,$f8 ,$c8 ,$0e ,$5c ,$3d ,$26 ,$6d ,$9c -0012F1r 1 ,$1c ,$2d ,$1e ,$33 ,$3a ,$3a ,$1e ,$1e ,$e9 ,$14 ,$37 ,$ce ,$0d ,$8d ,$c7 ,$31 ,$87 ,$1b ,$39 ,$c7 ,$c6 ,$64 ,$36 ,$19 ,$7b ,$c4 ,$e3 ,$29 ,$c7 ,$31 ,$53 ,$e3 ,$e1 ,$c6 ,$34 ,$1b ,$33 ,$1e ,$63 ,$56 ,$b6 ,$34 ,$8e ,$d9 ,$58 ,$cb ,$74 ,$86 ,$cb ,$c6 ,$ac -0012F1r 1 ,$91 ,$93 ,$53 ,$ce ,$32 ,$0f ,$93 ,$8b ,$1e ,$33 ,$e6 ,$e1 ,$d8 ,$a1 ,$63 ,$27 ,$27 ,$d3 ,$d1 ,$c2 ,$c3 ,$e5 ,$46 ,$27 ,$ae ,$34 ,$2d ,$95 ,$e5 ,$e4 ,$71 ,$e2 ,$74 ,$1c ,$ec ,$62 ,$87 ,$c5 ,$8d ,$93 ,$27 ,$2e ,$ae ,$cc ,$31 ,$1b ,$ad ,$71 ,$4c ,$c7 ,$78 -0012F1r 1 ,$78 ,$91 ,$93 ,$d3 ,$89 ,$cd ,$cc ,$e1 ,$6c ,$d4 ,$32 ,$dc ,$b8 ,$9c ,$74 ,$d8 ,$74 ,$f0 ,$98 ,$b3 ,$2c ,$73 ,$e2 ,$a4 ,$87 ,$cb ,$2c ,$1e ,$dc ,$2a ,$e9 ,$c9 ,$1c ,$e5 ,$98 ,$73 ,$e4 ,$98 ,$35 ,$c3 ,$c3 ,$35 ,$4e ,$d3 ,$78 ,$cc ,$54 ,$33 ,$c7 ,$b1 ,$b8 -0012F1r 1 ,$9c ,$61 ,$8e ,$33 ,$3c ,$1d ,$c7 ,$4a ,$36 ,$1d ,$1e ,$5a ,$b9 ,$38 ,$1e ,$35 ,$39 ,$33 ,$e3 ,$ca ,$72 ,$cc ,$34 ,$c7 ,$86 ,$87 ,$2b ,$1e ,$2d ,$e3 ,$19 ,$2b ,$4d ,$96 ,$33 ,$e6 ,$91 ,$d3 ,$c1 ,$e3 ,$b8 ,$d2 ,$b2 ,$71 ,$e4 ,$4c ,$8b ,$b3 ,$38 ,$4d ,$cb -0012F1r 1 ,$e2 ,$c2 ,$2b ,$3c ,$4d ,$6d ,$54 ,$8b ,$33 ,$4e ,$1b ,$6d ,$b1 ,$d2 ,$64 ,$99 ,$1d ,$47 ,$4d ,$73 ,$e4 ,$51 ,$53 ,$4d ,$1e ,$63 ,$1e ,$ae ,$e1 ,$4a ,$8d ,$35 ,$e6 ,$d4 ,$2c ,$73 ,$54 ,$2e ,$53 ,$d5 ,$b8 ,$d1 ,$4a ,$2e ,$65 ,$95 ,$b6 ,$d4 ,$8a ,$47 ,$1e -0012F1r 1 ,$c7 ,$e1 ,$34 ,$2e ,$cb ,$2c ,$96 ,$cd ,$34 ,$6d ,$cc ,$d1 ,$71 ,$8a ,$c7 ,$2c ,$4d ,$53 ,$d3 ,$a8 ,$8d ,$8b ,$35 ,$c7 ,$1c ,$4e ,$4e ,$5c ,$96 ,$f1 ,$78 ,$b8 ,$d2 ,$54 ,$47 ,$e5 ,$8a ,$2e ,$b6 ,$38 ,$e5 ,$68 ,$35 ,$2e ,$d3 ,$69 ,$4c ,$55 ,$33 ,$93 ,$cd -0012F1r 1 ,$6c ,$74 ,$34 ,$36 ,$53 ,$39 ,$1d ,$1d ,$99 ,$d5 ,$61 ,$e3 ,$e8 ,$91 ,$87 ,$8d ,$e3 ,$e2 ,$d4 ,$c6 ,$51 ,$8e ,$2e ,$76 ,$78 ,$58 ,$8d ,$53 ,$79 ,$5c ,$b8 ,$71 ,$e4 ,$e2 ,$74 ,$38 ,$1d ,$d5 ,$38 ,$cb ,$8c ,$19 ,$1f ,$39 ,$1d ,$ad ,$38 ,$93 ,$4b ,$1e ,$cd -0012F1r 1 ,$78 ,$58 ,$33 ,$2b ,$2d ,$ad ,$1c ,$d5 ,$74 ,$85 ,$c7 ,$e2 ,$8a ,$d3 ,$d8 ,$86 ,$8b ,$99 ,$cb ,$52 ,$47 ,$33 ,$cb ,$71 ,$38 ,$c3 ,$e3 ,$1c ,$e6 ,$b8 ,$f2 ,$e0 ,$85 ,$d3 ,$34 ,$39 ,$76 ,$38 ,$53 ,$87 ,$33 ,$4e ,$36 ,$9e ,$78 ,$34 ,$2b ,$39 ,$1c ,$2f ,$3c -0012F1r 1 ,$2e ,$73 ,$b2 ,$12 ,$4f ,$2d ,$1e ,$4e ,$93 ,$93 ,$47 ,$87 ,$4b ,$ae ,$32 ,$53 ,$d5 ,$4c ,$47 ,$ce ,$92 ,$27 ,$d9 ,$cc ,$d8 ,$72 ,$34 ,$53 ,$55 ,$b9 ,$b8 ,$e1 ,$cc ,$52 ,$63 ,$b9 ,$b8 ,$cc ,$d8 ,$52 ,$d5 ,$8c ,$d6 ,$d8 ,$4c ,$d5 ,$2c ,$2e ,$d6 ,$38 ,$53 -0012F1r 1 ,$8d ,$cb ,$38 ,$cb ,$58 ,$47 ,$cd ,$4a ,$ce ,$38 ,$e5 ,$d4 ,$b8 ,$c6 ,$ca ,$e1 ,$32 ,$8e ,$d9 ,$31 ,$ed ,$a0 ,$d3 ,$64 ,$87 ,$75 ,$4c ,$4e ,$cd ,$54 ,$53 ,$ae ,$b8 ,$72 ,$71 ,$38 ,$87 ,$b9 ,$31 ,$6e ,$54 ,$47 ,$e3 ,$38 ,$56 ,$36 ,$07 ,$4f ,$d9 ,$34 ,$56 -0012F1r 1 ,$53 ,$4d ,$cd ,$b8 ,$72 ,$e4 ,$8a ,$33 ,$1e ,$2b ,$33 ,$ce ,$32 ,$2d ,$33 ,$33 ,$d3 ,$32 ,$95 ,$33 ,$d3 ,$cc ,$8c ,$c7 ,$d4 ,$38 ,$55 ,$8d ,$b3 ,$2c ,$47 ,$b5 ,$ac ,$b2 ,$e2 ,$e4 ,$31 ,$cd ,$ac ,$2c ,$d5 ,$d8 ,$74 ,$cc ,$34 ,$35 ,$ae ,$71 ,$34 ,$93 ,$53 -0012F1r 1 ,$e3 ,$32 ,$55 ,$e3 ,$78 ,$e1 ,$4a ,$53 ,$27 ,$4e ,$b9 ,$2c ,$ce ,$61 ,$cb ,$5c ,$34 ,$8b ,$d3 ,$61 ,$33 ,$8d ,$8b ,$4e ,$35 ,$1d ,$8b ,$e3 ,$4c ,$8b ,$2b ,$4e ,$2d ,$36 ,$d5 ,$8c ,$e3 ,$4c ,$cd ,$2c ,$8e ,$63 ,$4d ,$cb ,$34 ,$4d ,$b9 ,$78 ,$d4 ,$92 ,$d3 -0012F1r 1 ,$d4 ,$e2 ,$52 ,$2d ,$33 ,$cb ,$38 ,$53 ,$cd ,$70 ,$4d ,$c7 ,$72 ,$e4 ,$b8 ,$34 ,$79 ,$b8 ,$a6 ,$b2 ,$d2 ,$26 ,$2e ,$93 ,$33 ,$9e ,$54 ,$2d ,$da ,$61 ,$8b ,$4d ,$55 ,$9e ,$4c ,$d3 ,$52 ,$55 ,$1e ,$2e ,$33 ,$8f ,$52 ,$8d ,$c7 ,$cc ,$2a ,$33 ,$4d ,$e3 ,$d4 -0012F1r 1 ,$2c ,$e6 ,$e4 ,$31 ,$4e ,$59 ,$33 ,$d3 ,$e8 ,$d2 ,$ac ,$e8 ,$51 ,$d5 ,$e4 ,$31 ,$35 ,$36 ,$8d ,$b3 ,$32 ,$53 ,$63 ,$4e ,$d5 ,$32 ,$55 ,$b9 ,$58 ,$4b ,$d3 ,$ca ,$4c ,$d9 ,$e4 ,$cc ,$b2 ,$4a ,$8d ,$4b ,$8d ,$63 ,$d3 ,$d4 ,$32 ,$d3 ,$34 ,$63 ,$4b ,$1d ,$33 -0012F1r 1 ,$8e ,$e3 ,$e4 ,$8c ,$63 ,$d3 ,$b2 ,$d4 ,$d4 ,$8c ,$53 ,$cb ,$b2 ,$51 ,$8d ,$39 ,$33 ,$cb ,$32 ,$8d ,$b5 ,$38 ,$ce ,$2c ,$b5 ,$b8 ,$32 ,$d3 ,$cc ,$31 ,$35 ,$4e ,$39 ,$53 ,$cd ,$e2 ,$2c ,$1e ,$c7 ,$4a ,$1e ,$63 ,$cd ,$34 ,$d3 ,$cc ,$d2 ,$4a ,$4d ,$d3 ,$4c -0012F1r 1 ,$33 ,$cb ,$cc ,$32 ,$4d ,$4e ,$33 ,$4b ,$b6 ,$32 ,$ce ,$32 ,$e3 ,$d4 ,$b4 ,$34 ,$ad ,$e2 ,$4c ,$2d ,$33 ,$53 ,$cd ,$e4 ,$54 ,$35 ,$33 ,$1e ,$35 ,$b5 ,$54 ,$35 ,$4b ,$2b ,$b3 ,$38 ,$b9 ,$52 ,$33 ,$4d ,$4b ,$2d ,$39 ,$4e ,$ad ,$34 ,$2d ,$b6 ,$4c ,$2d ,$d5 -0012F1r 1 ,$4c ,$4d ,$8b ,$d3 ,$cc ,$8c ,$b5 ,$54 ,$63 ,$4d ,$4b ,$53 ,$2d ,$b3 ,$b8 ,$54 ,$d3 ,$d4 ,$2c ,$33 ,$2d ,$d3 ,$54 ,$53 ,$d5 ,$e2 ,$ac ,$34 ,$53 ,$35 ,$95 ,$53 ,$4d ,$4d ,$53 ,$cd ,$d8 ,$b2 ,$4c ,$4b ,$2b ,$35 ,$ce ,$cc ,$cc ,$2c ,$4d ,$4d ,$2d ,$b5 ,$d4 -0012F1r 1 ,$d2 ,$d4 ,$8a ,$b3 ,$b8 ,$54 ,$d5 ,$d4 ,$2c ,$cb ,$32 ,$8d ,$d5 ,$34 ,$ce ,$32 ,$8b ,$b3 ,$d8 ,$52 ,$b5 ,$94 ,$33 ,$d5 ,$e2 ,$b2 ,$d4 ,$58 ,$35 ,$33 ,$33 ,$cd ,$d4 ,$b4 ,$52 ,$8b ,$53 ,$d5 ,$52 ,$ad ,$d4 ,$94 ,$cb ,$4c ,$2b ,$b3 ,$52 ,$35 ,$55 ,$33 ,$2e -0012F1r 1 ,$d3 ,$4c ,$4d ,$e5 ,$52 ,$d3 ,$d4 ,$52 ,$2d ,$55 ,$4b ,$cd ,$b1 ,$54 ,$d5 ,$2c ,$35 ,$55 ,$35 ,$35 ,$53 ,$4d ,$55 ,$4b ,$35 ,$d5 ,$61 ,$35 ,$b9 ,$d2 ,$cc ,$34 ,$b5 ,$b2 ,$64 ,$53 ,$63 ,$33 ,$4d ,$4e ,$2b ,$ad ,$4c ,$4b ,$35 ,$39 ,$2e ,$35 ,$2b ,$39 ,$4d -0012F1r 1 ,$33 ,$b5 ,$4c ,$2d ,$55 ,$53 ,$2d ,$4e ,$4b ,$cd ,$cc ,$2c ,$8d ,$63 ,$47 ,$53 ,$b3 ,$34 ,$e3 ,$94 ,$d5 ,$cc ,$2a ,$d5 ,$d4 ,$cc ,$cc ,$4c ,$2d ,$ae ,$b4 ,$34 ,$b5 ,$e4 ,$b1 ,$d4 ,$52 ,$4b ,$55 ,$35 ,$d3 ,$8c ,$2b ,$cd ,$54 ,$2d ,$ae ,$4c ,$2d ,$2d ,$1d -0012F1r 1 ,$2d ,$d6 ,$d2 ,$e4 ,$d2 ,$4c ,$4b ,$53 ,$b5 ,$54 ,$4d ,$4d ,$8d ,$4b ,$2b ,$95 ,$53 ,$d5 ,$52 ,$63 ,$4d ,$53 ,$d3 ,$d4 ,$92 ,$e3 ,$52 ,$4d ,$4b ,$8d ,$b3 ,$b4 ,$4c ,$33 ,$4e ,$33 ,$e3 ,$b8 ,$38 ,$4d ,$d5 ,$52 ,$53 ,$ad ,$38 ,$4d ,$4b ,$d3 ,$b2 ,$32 ,$4d -0012F1r 1 ,$4d ,$33 ,$d5 ,$32 ,$2b ,$2d ,$39 ,$4d ,$d5 ,$b4 ,$d4 ,$54 ,$1b ,$2d ,$55 ,$55 ,$e3 ,$54 ,$cd ,$d8 ,$52 ,$ad ,$cc ,$d2 ,$d2 ,$34 ,$4b ,$2d ,$55 ,$35 ,$cd ,$32 ,$33 ,$8b ,$1b ,$b5 ,$d8 ,$ac ,$b4 ,$e2 ,$34 ,$d5 ,$54 ,$33 ,$ce ,$d2 ,$4c ,$2d ,$cb ,$4c ,$d5 -0012F1r 1 ,$34 ,$4d ,$33 ,$cd ,$4c ,$35 ,$75 ,$b4 ,$34 ,$d5 ,$d4 ,$32 ,$cd ,$d4 ,$34 ,$2d ,$33 ,$cb ,$d4 ,$34 ,$b5 ,$b4 ,$2c ,$b3 ,$4c ,$b5 ,$34 ,$93 ,$d3 ,$54 ,$d3 ,$4c ,$4d ,$53 ,$55 ,$4d ,$35 ,$b3 ,$4c ,$2d ,$8d ,$2d ,$75 ,$8c ,$d3 ,$34 ,$8d ,$4b ,$d5 ,$d2 ,$52 -0012F1r 1 ,$d3 ,$4a ,$53 ,$cd ,$2c ,$b5 ,$2c ,$33 ,$35 ,$35 ,$2e ,$ce ,$32 ,$2d ,$d3 ,$52 ,$cd ,$d4 ,$4c ,$2b ,$d5 ,$b2 ,$4c ,$53 ,$2d ,$4e ,$53 ,$2d ,$33 ,$53 ,$33 ,$4d ,$ad ,$b2 ,$d2 ,$52 ,$53 ,$53 ,$b3 ,$4c ,$cd ,$cc ,$54 ,$cb ,$34 ,$4d ,$cb ,$b4 ,$d4 ,$54 ,$d5 -0012F1r 1 ,$e4 ,$d2 ,$4c ,$2b ,$53 ,$4d ,$d3 ,$4c ,$53 ,$8d ,$33 ,$b5 ,$38 ,$d3 ,$d4 ,$4c ,$36 ,$d5 ,$d4 ,$d2 ,$d2 ,$2c ,$4d ,$55 ,$55 ,$4b ,$4d ,$cb ,$4a ,$53 ,$35 ,$53 ,$b3 ,$54 ,$cd ,$b4 ,$d2 ,$52 ,$2d ,$4d ,$1d ,$b3 ,$4c ,$35 ,$33 ,$35 ,$d3 ,$34 ,$b5 ,$d8 ,$d4 -0012F1r 1 ,$34 ,$b5 ,$d2 ,$4c ,$d5 ,$4c ,$2d ,$53 ,$8d ,$d3 ,$2c ,$4d ,$2d ,$55 ,$55 ,$35 ,$35 ,$b9 ,$d4 ,$72 ,$d4 ,$62 ,$cd ,$b4 ,$d4 ,$2c ,$d3 ,$52 ,$d3 ,$54 ,$33 ,$2d ,$55 ,$cd ,$32 ,$55 ,$b5 ,$d4 ,$54 ,$4b ,$35 ,$33 ,$b5 ,$d2 ,$34 ,$4d ,$35 ,$35 ,$55 ,$b3 ,$34 -0012F1r 1 ,$d3 ,$d4 ,$38 ,$55 ,$33 ,$4d ,$55 ,$2d ,$d5 ,$4c ,$33 ,$ad ,$34 ,$35 ,$2d ,$36 ,$35 ,$2d ,$35 ,$4d ,$d3 ,$cc ,$4c ,$4b ,$b5 ,$d4 ,$4a ,$33 ,$2d ,$53 ,$2d ,$d5 ,$32 ,$35 ,$4b ,$35 ,$4d ,$d3 ,$d4 ,$4c ,$4b ,$2d ,$4b ,$4b ,$d5 ,$54 ,$4d ,$b5 ,$52 ,$35 ,$55 -0012F1r 1 ,$53 ,$cb ,$2c ,$4d ,$53 ,$35 ,$8b ,$33 ,$2d ,$b5 ,$d4 ,$32 ,$35 ,$55 ,$4b ,$ad ,$b4 ,$4a ,$d3 ,$d4 ,$4a ,$55 ,$d3 ,$4c ,$2b ,$d3 ,$34 ,$55 ,$55 ,$55 ,$55 ,$55 ,$d5 ,$d2 ,$4c ,$55 ,$4d ,$55 ,$39 ,$d3 ,$52 ,$33 ,$2d ,$4b ,$33 ,$35 ,$33 ,$33 ,$b5 ,$54 ,$35 -0012F1r 1 ,$b5 ,$d4 ,$34 ,$4b ,$d3 ,$54 ,$55 ,$4b ,$2b ,$2b ,$b5 ,$54 ,$4d ,$4b ,$33 ,$cb ,$d2 ,$34 ,$55 ,$d3 ,$d2 ,$4a ,$4d ,$55 ,$d3 ,$54 ,$4d ,$d3 ,$32 ,$d3 ,$34 ,$35 ,$d3 ,$4c ,$d3 ,$d2 ,$2c ,$55 ,$cb ,$d4 ,$d2 ,$ca ,$55 ,$55 ,$55 ,$55 ,$55 ,$55 ,$55 ,$55 ,$55 -0012F1r 1 ,$55 ,$55 -0012F1r 1 xx xx xx xx .align $40 -0012F5r 1 xx xx xx xx -0012F9r 1 xx xx xx xx -0012FDr 1 xx xx xx -001300r 1 _Test_DPCM2: -001300r 1 00 00 00 00 .byte $00 ,$00 ,$00 ,$00 ,$66 ,$3c ,$aa ,$65 ,$b6 ,$24 ,$9a ,$cc ,$26 ,$4b ,$b6 ,$8d ,$ca ,$ca ,$46 ,$c9 ,$76 ,$f6 ,$ac ,$98 ,$ab ,$77 ,$fa ,$69 ,$71 ,$62 ,$9f ,$72 ,$c8 ,$c8 ,$49 ,$16 ,$13 ,$93 ,$8a ,$60 ,$b8 ,$51 ,$0a ,$6d ,$ee ,$2f ,$9a ,$dd ,$cf ,$62 -001304r 1 66 3C AA 65 -001308r 1 B6 24 9A CC -00130Cr 1 26 4B B6 8D -001310r 1 CA CA 46 C9 -001314r 1 76 F6 AC 98 -001318r 1 AB 77 FA 69 -00131Cr 1 71 62 9F 72 -001320r 1 C8 C8 49 16 -001324r 1 13 93 8A 60 -001328r 1 B8 51 0A 6D -00132Cr 1 EE 2F 9A DD -001330r 1 CF 62 F7 83 -001334r 1 2C 23 62 E0 -001338r 1 4C 57 06 B0 -00133Cr 1 DA 79 76 3F -001340r 1 73 EE 64 4C -001344r 1 4E 47 33 91 -001348r 1 83 A9 55 07 -00134Cr 1 37 62 E4 CA -001350r 1 BD CE 62 2C -001354r 1 AE 83 61 55 -001358r 1 CA 90 B3 EF -00135Cr 1 06 93 77 71 -001360r 1 46 2E 52 B2 -001364r 1 33 BB 08 6C -001368r 1 C8 76 B9 F3 -00136Cr 1 99 66 2E 92 -001370r 1 16 B2 D3 61 -001374r 1 66 0C 39 8D -001378r 1 9D 99 6B 59 -00137Cr 1 B2 5B B2 96 -001380r 1 63 86 B1 E1 -001384r 1 1C 35 22 87 -001388r 1 7D DC 6E E4 -00138Cr 1 3C C5 B0 36 -001390r 1 49 A6 77 92 -001394r 1 1A A3 D6 94 -001398r 1 71 3E 2C AD -00139Cr 1 76 C4 E5 74 -0013A0r 1 49 7E 0D 16 -0013A4r 1 1E CE E1 E5 -0013A8r 1 92 C6 30 CF -0013ACr 1 4A 9D E8 EC -0013B0r 1 D8 26 29 97 -0013B4r 1 36 2D 38 71 -0013B8r 1 59 D4 73 59 -0013BCr 1 A6 C7 24 A7 -0013C0r 1 5D 52 47 62 -0013C4r 1 39 96 99 CC -0013C8r 1 1C B5 B7 D1 -0013CCr 1 8C A6 52 AE -0013D0r 1 1A 99 B3 B2 -0013D4r 1 38 CE 94 32 -0013D8r 1 3F 45 2B 76 -0013DCr 1 3C C6 8B D1 -0013E0r 1 31 76 14 AD -0013E4r 1 4D CD 3A 78 -0013E8r 1 5C 35 53 69 -0013ECr 1 9C C9 6C 38 -0013F0r 1 36 CD 34 F3 -0013F4r 1 32 D2 65 35 -0013F8r 1 13 67 A9 93 -0013FCr 1 72 CC A6 -0014B1r 1 ,$f7 ,$83 ,$2c ,$23 ,$62 ,$e0 ,$4c ,$57 ,$06 ,$b0 ,$da ,$79 ,$76 ,$3f ,$73 ,$ee ,$64 ,$4c ,$4e ,$47 ,$33 ,$91 ,$83 ,$a9 ,$55 ,$07 ,$37 ,$62 ,$e4 ,$ca ,$bd ,$ce ,$62 ,$2c ,$ae ,$83 ,$61 ,$55 ,$ca ,$90 ,$b3 ,$ef ,$06 ,$93 ,$77 ,$71 ,$46 ,$2e ,$52 ,$b2 ,$33 -0014B1r 1 ,$bb ,$08 ,$6c ,$c8 ,$76 ,$b9 ,$f3 ,$99 ,$66 ,$2e ,$92 ,$16 ,$b2 ,$d3 ,$61 ,$66 ,$0c ,$39 ,$8d ,$9d ,$99 ,$6b ,$59 ,$b2 ,$5b ,$b2 ,$96 ,$63 ,$86 ,$b1 ,$e1 ,$1c ,$35 ,$22 ,$87 ,$7d ,$dc ,$6e ,$e4 ,$3c ,$c5 ,$b0 ,$36 ,$49 ,$a6 ,$77 ,$92 ,$1a ,$a3 ,$d6 ,$94 -0014B1r 1 ,$71 ,$3e ,$2c ,$ad ,$76 ,$c4 ,$e5 ,$74 ,$49 ,$7e ,$0d ,$16 ,$1e ,$ce ,$e1 ,$e5 ,$92 ,$c6 ,$30 ,$cf ,$4a ,$9d ,$e8 ,$ec ,$d8 ,$26 ,$29 ,$97 ,$36 ,$2d ,$38 ,$71 ,$59 ,$d4 ,$73 ,$59 ,$a6 ,$c7 ,$24 ,$a7 ,$5d ,$52 ,$47 ,$62 ,$39 ,$96 ,$99 ,$cc ,$1c ,$b5 ,$b7 -0014B1r 1 ,$d1 ,$8c ,$a6 ,$52 ,$ae ,$1a ,$99 ,$b3 ,$b2 ,$38 ,$ce ,$94 ,$32 ,$3f ,$45 ,$2b ,$76 ,$3c ,$c6 ,$8b ,$d1 ,$31 ,$76 ,$14 ,$ad ,$4d ,$cd ,$3a ,$78 ,$5c ,$35 ,$53 ,$69 ,$9c ,$c9 ,$6c ,$38 ,$36 ,$cd ,$34 ,$f3 ,$32 ,$d2 ,$65 ,$35 ,$13 ,$67 ,$a9 ,$93 ,$72 ,$cc -0014B1r 1 ,$a6 ,$71 ,$ce ,$b1 ,$2a ,$ae ,$6c ,$51 ,$a9 ,$d4 ,$34 ,$35 ,$9d ,$c6 ,$b2 ,$ac ,$5a ,$63 ,$35 ,$aa ,$31 ,$a7 ,$ca ,$b2 ,$54 ,$65 ,$2b ,$ce ,$51 ,$5a ,$cb ,$69 ,$69 ,$4d ,$96 ,$69 ,$d2 ,$8c ,$25 ,$67 ,$53 ,$35 ,$8d ,$9b ,$66 ,$3a ,$d6 ,$b4 ,$8c ,$26 ,$53 -0014B1r 1 ,$65 ,$a6 ,$72 ,$31 ,$ad ,$56 ,$33 ,$9b ,$3a ,$5a ,$55 ,$96 ,$63 ,$99 ,$1a ,$65 ,$99 ,$e6 ,$64 ,$ad ,$b2 ,$aa ,$59 ,$55 ,$4d ,$8b ,$55 ,$a5 ,$b2 ,$64 ,$59 ,$4d ,$5c ,$5a ,$95 ,$4d ,$cb ,$66 ,$1a ,$9b ,$95 ,$c5 ,$ac ,$b2 ,$32 ,$2d ,$8d ,$d3 ,$ac ,$c6 ,$b2 -0014B1r 1 ,$6a ,$9a ,$a6 ,$a9 ,$ca ,$aa ,$6a ,$ca ,$54 ,$35 ,$b5 ,$4c ,$b3 ,$ca ,$6a ,$4c ,$53 ,$53 ,$d3 ,$4c ,$55 ,$95 ,$53 ,$55 ,$55 ,$cd ,$b2 ,$ca ,$aa ,$aa ,$34 ,$4d ,$63 ,$d5 ,$54 ,$95 ,$35 ,$53 ,$b5 ,$cc ,$aa ,$ac ,$2a ,$ab ,$2c ,$53 ,$55 ,$55 ,$55 ,$96 ,$59 -0014B1r 1 ,$55 ,$35 ,$b3 ,$aa ,$aa ,$aa ,$aa ,$2a ,$b3 ,$34 ,$4d ,$55 ,$56 ,$55 ,$d5 ,$b4 ,$aa ,$aa ,$aa ,$a9 ,$aa ,$aa ,$32 ,$55 ,$4d ,$55 -0014B1r 1 xx xx xx xx .align $40 -0014B5r 1 xx xx xx xx -0014B9r 1 xx xx xx xx -0014BDr 1 xx xx xx -0014C0r 1 _Test_DPCM3: -0014C0r 1 00 00 00 40 .byte $00 ,$00 ,$00 ,$40 ,$e4 ,$38 ,$76 ,$74 ,$c3 ,$83 ,$65 ,$35 ,$9d ,$7a ,$44 ,$ce ,$b8 ,$73 ,$e3 ,$46 ,$2a ,$62 ,$66 ,$6d ,$66 ,$c3 ,$c6 ,$ac ,$26 ,$b3 ,$5c ,$ee ,$98 ,$a0 ,$6e ,$38 ,$4c ,$7b ,$9b ,$1e ,$28 ,$c7 ,$98 ,$b1 ,$65 ,$17 ,$2d ,$37 ,$b2 ,$e4 -0014C4r 1 E4 38 76 74 -0014C8r 1 C3 83 65 35 -0014CCr 1 9D 7A 44 CE -0014D0r 1 B8 73 E3 46 -0014D4r 1 2A 62 66 6D -0014D8r 1 66 C3 C6 AC -0014DCr 1 26 B3 5C EE -0014E0r 1 98 A0 6E 38 -0014E4r 1 4C 7B 9B 1E -0014E8r 1 28 C7 98 B1 -0014ECr 1 65 17 2D 37 -0014F0r 1 B2 E4 98 96 -0014F4r 1 D5 E4 CD 90 -0014F8r 1 5A 46 73 A7 -0014FCr 1 67 36 A2 2D -001500r 1 31 99 4F 4B -001504r 1 E6 95 D9 70 -001508r 1 93 2C 83 B5 -00150Cr 1 C9 38 59 3A -001510r 1 E3 56 31 25 -001514r 1 AB C3 C5 E6 -001518r 1 8E C4 CD C5 -00151Cr 1 D9 8C 62 B5 -001520r 1 9D 05 A3 E3 -001524r 1 6C 5E 63 C1 -001528r 1 38 1C D3 99 -00152Cr 1 7B 98 69 78 -001530r 1 06 9F A0 36 -001534r 1 2F CE A4 F3 -001538r 1 74 0C 59 9B -00153Cr 1 91 D3 0B 9C -001540r 1 1C BB C9 E5 -001544r 1 C9 48 9A AC -001548r 1 65 66 9C 5E -00154Cr 1 C9 C6 C7 D8 -001550r 1 18 12 57 F6 -001554r 1 DC B3 63 45 -001558r 1 48 CC 5C 8A -00155Cr 1 F3 F4 67 64 -001560r 1 0E 66 73 23 -001564r 1 68 62 6E C6 -001568r 1 C6 37 1A 35 -00156Cr 1 77 C2 33 62 -001570r 1 8E 36 99 E2 -001574r 1 B1 1C BD 3D -001578r 1 63 36 42 6E -00157Cr 1 5A BC 29 D8 -001580r 1 A9 66 8B A3 -001584r 1 39 32 19 5C -001588r 1 75 62 C6 9C -00158Cr 1 1F 4F 71 CD -001590r 1 71 12 A3 A6 -001594r 1 9D 69 72 7C -001598r 1 88 69 8F 38 -00159Cr 1 93 9B 99 65 -0015A0r 1 1C 8F 61 C7 -0015A4r 1 92 1D CF 54 -0015A8r 1 CA 8C B3 53 -0015ACr 1 F1 38 8F E1 -0015B0r 1 D8 3A 1C 62 -0015B4r 1 25 D3 6D 59 -0015B8r 1 8E 6C E6 32 -0015BCr 1 29 47 8F -001D91r 1 ,$98 ,$96 ,$d5 ,$e4 ,$cd ,$90 ,$5a ,$46 ,$73 ,$a7 ,$67 ,$36 ,$a2 ,$2d ,$31 ,$99 ,$4f ,$4b ,$e6 ,$95 ,$d9 ,$70 ,$93 ,$2c ,$83 ,$b5 ,$c9 ,$38 ,$59 ,$3a ,$e3 ,$56 ,$31 ,$25 ,$ab ,$c3 ,$c5 ,$e6 ,$8e ,$c4 ,$cd ,$c5 ,$d9 ,$8c ,$62 ,$b5 ,$9d ,$05 ,$a3 ,$e3 ,$6c -001D91r 1 ,$5e ,$63 ,$c1 ,$38 ,$1c ,$d3 ,$99 ,$7b ,$98 ,$69 ,$78 ,$06 ,$9f ,$a0 ,$36 ,$2f ,$ce ,$a4 ,$f3 ,$74 ,$0c ,$59 ,$9b ,$91 ,$d3 ,$0b ,$9c ,$1c ,$bb ,$c9 ,$e5 ,$c9 ,$48 ,$9a ,$ac ,$65 ,$66 ,$9c ,$5e ,$c9 ,$c6 ,$c7 ,$d8 ,$18 ,$12 ,$57 ,$f6 ,$dc ,$b3 ,$63 ,$45 -001D91r 1 ,$48 ,$cc ,$5c ,$8a ,$f3 ,$f4 ,$67 ,$64 ,$0e ,$66 ,$73 ,$23 ,$68 ,$62 ,$6e ,$c6 ,$c6 ,$37 ,$1a ,$35 ,$77 ,$c2 ,$33 ,$62 ,$8e ,$36 ,$99 ,$e2 ,$b1 ,$1c ,$bd ,$3d ,$63 ,$36 ,$42 ,$6e ,$5a ,$bc ,$29 ,$d8 ,$a9 ,$66 ,$8b ,$a3 ,$39 ,$32 ,$19 ,$5c ,$75 ,$62 ,$c6 -001D91r 1 ,$9c ,$1f ,$4f ,$71 ,$cd ,$71 ,$12 ,$a3 ,$a6 ,$9d ,$69 ,$72 ,$7c ,$88 ,$69 ,$8f ,$38 ,$93 ,$9b ,$99 ,$65 ,$1c ,$8f ,$61 ,$c7 ,$92 ,$1d ,$cf ,$54 ,$ca ,$8c ,$b3 ,$53 ,$f1 ,$38 ,$8f ,$e1 ,$d8 ,$3a ,$1c ,$62 ,$25 ,$d3 ,$6d ,$59 ,$8e ,$6c ,$e6 ,$32 ,$29 ,$47 -001D91r 1 ,$8f ,$99 ,$19 ,$2d ,$25 ,$6e ,$63 ,$c3 ,$93 ,$9c ,$2c ,$37 ,$cd ,$8c ,$65 ,$9d ,$e7 ,$91 ,$0e ,$b1 ,$4d ,$26 ,$6e ,$23 ,$b1 ,$69 ,$8f ,$dc ,$ca ,$e0 ,$a8 ,$7e ,$60 ,$7a ,$c3 ,$c9 ,$54 ,$66 ,$a6 ,$97 ,$b8 ,$66 ,$e6 ,$18 ,$69 ,$66 ,$47 ,$4e ,$1c ,$33 ,$77 -001D91r 1 ,$98 ,$34 ,$b1 ,$7b ,$a7 ,$42 ,$73 ,$38 ,$3a ,$9b ,$8e ,$a2 ,$3e ,$cd ,$29 ,$b3 ,$31 ,$9e ,$48 ,$15 ,$8f ,$d6 ,$62 ,$5c ,$9b ,$8a ,$d6 ,$74 ,$65 ,$a3 ,$85 ,$1b ,$cd ,$72 ,$63 ,$58 ,$d2 ,$64 ,$e6 ,$c7 ,$1c ,$72 ,$5b ,$c9 ,$56 ,$32 ,$1e ,$86 ,$2b ,$77 ,$79 -001D91r 1 ,$cd ,$60 ,$92 ,$e7 ,$62 ,$32 ,$07 ,$db ,$6c ,$0b ,$9b ,$29 ,$33 ,$71 ,$9e ,$ac ,$37 ,$1c ,$c9 ,$e1 ,$33 ,$0e ,$cc ,$79 ,$c2 ,$cd ,$cc ,$72 ,$33 ,$da ,$84 ,$cb ,$18 ,$9d ,$da ,$15 ,$1a ,$4f ,$6d ,$1a ,$5f ,$28 ,$66 ,$37 ,$8a ,$e4 ,$65 ,$53 ,$6d ,$9b ,$39 -001D91r 1 ,$93 ,$85 ,$d3 ,$31 ,$4b ,$84 ,$be ,$45 ,$67 ,$de ,$38 ,$b1 ,$e8 ,$cd ,$88 ,$91 ,$1d ,$73 ,$b2 ,$85 ,$d8 ,$7a ,$8e ,$c4 ,$2d ,$b3 ,$38 ,$e9 ,$ac ,$91 ,$dc ,$c4 ,$b6 ,$91 ,$39 ,$b9 ,$19 ,$59 ,$f2 ,$64 ,$66 ,$6a ,$ad ,$66 ,$16 ,$a6 ,$4d ,$e4 ,$c6 ,$86 ,$d7 -001D91r 1 ,$27 ,$49 ,$dc ,$66 ,$72 ,$63 ,$46 ,$32 ,$37 ,$97 ,$32 ,$59 ,$d9 ,$d9 ,$b2 ,$28 ,$2b ,$1b ,$47 ,$9e ,$9c ,$39 ,$c4 ,$65 ,$6d ,$c3 ,$66 ,$93 ,$bc ,$69 ,$22 ,$e1 ,$6d ,$71 ,$99 ,$cd ,$0c ,$37 ,$d9 ,$a4 ,$34 ,$93 ,$33 ,$e9 ,$25 ,$99 ,$6e ,$c6 ,$66 ,$9a ,$25 -001D91r 1 ,$75 ,$32 ,$23 ,$9d ,$d3 ,$b3 ,$d0 ,$9c ,$a3 ,$a9 ,$cb ,$34 ,$8e ,$2c ,$1f ,$71 ,$33 ,$89 ,$cc ,$e6 ,$49 ,$9a ,$76 ,$3a ,$6a ,$30 ,$b3 ,$2d ,$87 ,$6b ,$13 ,$36 ,$e2 ,$e4 ,$c7 ,$64 ,$9e ,$65 ,$4e ,$73 ,$6c ,$c3 ,$24 ,$b1 ,$f3 ,$62 ,$6a ,$64 ,$3d ,$32 ,$d3 -001D91r 1 ,$66 ,$62 ,$27 ,$2e ,$4e ,$c9 ,$8f ,$61 ,$39 ,$bb ,$19 ,$13 ,$b3 ,$46 ,$73 ,$f0 ,$65 ,$72 ,$22 ,$cd ,$49 ,$b3 ,$f9 ,$1c ,$38 ,$b6 ,$65 ,$94 ,$e6 ,$0d ,$cc ,$6e ,$9a ,$da ,$c8 ,$e4 ,$a9 ,$69 ,$4d ,$a9 ,$99 ,$b9 ,$68 ,$11 ,$9b ,$c9 ,$dc ,$46 ,$8d ,$b3 ,$36 -001D91r 1 ,$71 ,$8d ,$a6 ,$b1 ,$b1 ,$8e ,$8c ,$1b ,$b3 ,$2c ,$66 ,$c3 ,$95 ,$c8 ,$76 ,$dd ,$0c ,$c6 ,$a9 ,$e8 ,$db ,$42 ,$ae ,$53 ,$26 ,$b6 ,$74 ,$23 ,$b1 ,$ce ,$d8 ,$4c ,$1f ,$29 ,$b2 ,$c7 ,$a9 ,$22 ,$37 ,$97 ,$4c ,$33 ,$76 ,$b8 ,$74 ,$62 ,$d3 ,$4c ,$4d ,$1d ,$b9 -001D91r 1 ,$63 ,$38 ,$99 ,$1b ,$c3 ,$67 ,$93 ,$c8 ,$9e ,$86 ,$cb ,$c8 ,$cd ,$a8 ,$9d ,$2a ,$9d ,$99 ,$b1 ,$c9 ,$e4 ,$98 ,$cd ,$c4 ,$c3 ,$16 ,$ee ,$34 ,$da ,$59 ,$ce ,$c4 ,$89 ,$63 ,$7c ,$58 ,$6c ,$6c ,$27 ,$e3 ,$6c ,$46 ,$35 ,$6b ,$78 ,$5c ,$c9 ,$8e ,$65 ,$34 ,$f1 -001D91r 1 ,$1c ,$36 ,$ba ,$8d ,$e1 ,$c6 ,$d4 ,$4c ,$3a ,$33 ,$ad ,$89 ,$25 ,$b7 ,$93 ,$4c ,$36 ,$36 ,$c7 ,$46 ,$73 ,$c6 ,$4c ,$2e ,$96 ,$db ,$88 ,$d5 ,$13 ,$a7 ,$4e ,$66 ,$36 ,$32 ,$36 ,$a7 ,$c9 ,$c3 ,$8b ,$c5 ,$e2 ,$4c ,$26 ,$39 ,$af ,$5a ,$c5 ,$74 ,$72 ,$61 ,$16 -001D91r 1 ,$67 ,$36 ,$66 ,$37 ,$71 ,$4e ,$0e ,$8b ,$63 ,$e3 ,$8c ,$93 ,$9b ,$51 ,$36 ,$e4 ,$9e ,$85 ,$87 ,$b3 ,$31 ,$3d ,$c6 ,$cc ,$51 ,$4e ,$96 ,$35 ,$72 ,$ab ,$31 ,$d3 ,$96 ,$59 ,$49 ,$67 ,$29 ,$39 ,$99 ,$cd ,$8c ,$67 ,$74 ,$23 ,$96 ,$73 ,$73 ,$70 ,$6a ,$c6 ,$6c -001D91r 1 ,$51 ,$b3 ,$99 ,$58 ,$3e ,$d9 ,$18 ,$37 ,$66 ,$e4 ,$39 ,$64 ,$b3 ,$d4 ,$4c ,$6e ,$32 ,$39 ,$72 ,$36 ,$cd ,$99 ,$99 ,$98 ,$67 ,$34 ,$67 ,$23 ,$e3 ,$65 ,$6a ,$a4 ,$cd ,$c4 ,$cc ,$b6 ,$91 ,$2b ,$53 ,$dc ,$38 ,$9e ,$63 ,$d2 ,$13 ,$1b ,$cb ,$2c ,$db ,$68 ,$cc -001D91r 1 ,$38 ,$66 ,$66 ,$99 ,$33 ,$1e ,$d5 ,$71 ,$36 ,$43 ,$8f ,$99 ,$96 ,$34 ,$1b ,$6d ,$6c ,$d9 ,$8c ,$c5 ,$89 ,$6d ,$d8 ,$9c ,$a4 ,$c7 ,$49 ,$5b ,$61 ,$9a ,$6d ,$9c ,$d2 ,$cc ,$e4 ,$71 ,$31 ,$d9 ,$2c ,$b9 ,$49 ,$9e ,$8c ,$73 ,$cc ,$a6 ,$35 ,$e1 ,$66 ,$b2 ,$64 -001D91r 1 ,$b6 ,$1a ,$76 ,$e8 ,$5a ,$cc ,$6c ,$6a ,$ca ,$69 ,$2a ,$57 ,$b8 ,$6c ,$26 ,$67 ,$31 ,$a5 ,$39 ,$9d ,$8e ,$9c ,$66 ,$58 ,$d3 ,$34 ,$a7 ,$92 ,$d6 ,$ea ,$22 ,$33 ,$e6 ,$46 ,$b6 ,$92 ,$cd ,$8e ,$5a ,$4c ,$6e ,$26 ,$65 ,$9e ,$32 ,$79 ,$92 ,$cd ,$96 ,$69 ,$26 -001D91r 1 ,$cd ,$38 ,$4b ,$b3 ,$26 ,$4d ,$ba ,$d2 ,$86 ,$36 ,$1b ,$6e ,$d2 ,$b4 ,$96 ,$72 ,$65 ,$6c ,$4c ,$3b ,$c9 ,$65 ,$ca ,$9a ,$59 ,$d2 ,$34 ,$e3 ,$31 ,$e3 ,$ca ,$4c ,$33 ,$47 ,$63 ,$9b ,$aa ,$2a ,$b3 ,$4c ,$8d ,$33 ,$93 ,$33 ,$da ,$d4 ,$9a ,$4a ,$8d ,$75 ,$49 -001D91r 1 ,$4e ,$33 ,$79 ,$49 ,$2b ,$17 ,$f2 ,$da ,$91 ,$78 ,$39 ,$32 ,$8f ,$a9 ,$d1 ,$99 ,$a6 ,$66 ,$2c ,$6d ,$ac ,$e4 ,$92 ,$5d ,$b4 ,$66 ,$d2 ,$9c ,$a9 ,$6a ,$a6 ,$91 ,$6d ,$1a ,$33 ,$cb ,$cc ,$d2 ,$ac ,$4e ,$2c ,$a7 ,$69 ,$dc ,$24 ,$da ,$9a ,$2a ,$4b ,$5b ,$d2 -001D91r 1 ,$94 ,$a7 ,$31 ,$cb ,$4c ,$b6 ,$e4 ,$e4 ,$b4 ,$1c ,$cb ,$ec ,$24 ,$9b ,$c5 ,$16 ,$76 ,$d4 ,$b8 ,$32 ,$d3 ,$cc ,$a5 ,$d8 ,$99 ,$32 ,$9d ,$4a ,$33 ,$73 ,$ac ,$9c ,$cc ,$1a ,$27 ,$ce ,$91 ,$9b ,$d2 ,$d8 ,$66 ,$34 ,$1b ,$39 ,$59 ,$b3 ,$b4 ,$a6 ,$1a ,$d9 ,$6a -001D91r 1 ,$9c ,$a2 ,$53 ,$cb ,$e2 ,$74 ,$16 ,$b3 ,$ca ,$4a ,$1d ,$33 ,$b3 ,$d1 ,$78 ,$e1 ,$ac ,$6c ,$ca ,$ac ,$1c ,$cb ,$91 ,$4b ,$6b ,$cc ,$4c ,$a7 ,$32 ,$b3 ,$a9 ,$9c ,$b4 ,$51 ,$cd ,$9a ,$9c ,$e9 ,$28 ,$67 ,$a6 ,$d1 ,$29 ,$27 ,$33 ,$cb ,$9c ,$d8 ,$d4 ,$96 ,$66 -001D91r 1 ,$ac ,$72 ,$1c ,$c7 ,$6a ,$29 ,$b3 ,$b8 ,$cc ,$cc ,$85 ,$63 ,$33 ,$79 ,$6c ,$26 ,$33 ,$4d ,$9b ,$e5 ,$44 ,$ad ,$99 ,$29 ,$d6 ,$2c ,$33 ,$47 ,$ce ,$52 ,$d6 ,$cc ,$31 ,$33 ,$73 ,$2c ,$33 ,$47 ,$b3 ,$52 ,$97 ,$aa ,$99 ,$32 ,$d3 ,$ac ,$1a ,$6e ,$a6 ,$32 ,$97 -001D91r 1 ,$2c ,$b9 ,$32 ,$a7 ,$6a ,$1a ,$47 ,$cb ,$9a ,$aa ,$9c ,$71 ,$66 ,$52 ,$93 ,$8d ,$8b ,$b3 ,$74 ,$ac ,$1a ,$39 ,$57 ,$ca ,$19 ,$cb ,$4c ,$5b ,$59 ,$ca ,$2c ,$63 ,$a7 ,$31 ,$1b ,$e9 ,$4c ,$cb ,$2a ,$4e ,$cb ,$cc ,$26 ,$ad ,$2c ,$5d ,$1c ,$53 ,$e9 ,$cc ,$b1 -001D91r 1 ,$59 ,$6c ,$2c ,$33 ,$2b ,$36 ,$63 ,$cd ,$19 ,$a7 ,$b1 ,$1c ,$cd ,$cc ,$e4 ,$ac ,$b1 ,$32 ,$cb ,$cc ,$ac ,$34 ,$93 ,$d3 ,$d4 ,$b2 ,$b2 ,$29 ,$cd ,$c6 ,$d4 ,$66 ,$52 ,$9a ,$59 ,$8d ,$d5 ,$8c ,$2b ,$cb ,$52 ,$d6 ,$52 ,$ad ,$b2 ,$5c ,$ca ,$e4 ,$6a ,$54 ,$9b -001D91r 1 ,$b2 ,$74 ,$56 ,$b2 ,$cc ,$4c ,$6b ,$72 ,$ca ,$ac ,$2a ,$cb ,$66 ,$ac ,$b4 ,$32 ,$33 ,$b3 ,$29 ,$cd ,$a6 ,$ca ,$4c ,$ad ,$32 ,$33 ,$53 ,$ad ,$4a ,$d6 ,$cc ,$ac ,$cc ,$c9 ,$a9 ,$2a ,$cd ,$58 ,$27 ,$c7 ,$ac ,$31 ,$a7 ,$ca ,$1c ,$cb ,$2c ,$e5 ,$72 ,$32 ,$1b -001D91r 1 ,$ab ,$6c ,$4c ,$ab ,$cc ,$34 ,$36 ,$a7 ,$52 ,$b3 ,$74 ,$72 ,$cc ,$b4 ,$52 ,$6e ,$ac ,$2c ,$33 ,$b3 ,$ca ,$2a ,$73 ,$34 ,$27 ,$73 ,$29 ,$d9 ,$49 ,$6b ,$e4 ,$a6 ,$b4 ,$b2 ,$9c ,$31 ,$37 ,$b2 ,$ac ,$ac ,$6c ,$c6 ,$92 ,$2b ,$9b ,$d4 ,$6a ,$ac ,$b1 ,$d2 ,$9a -001D91r 1 ,$26 ,$a7 ,$cc ,$ac ,$ac ,$32 ,$2b ,$cb ,$72 ,$9c ,$cc ,$8d ,$d4 ,$34 ,$cb ,$9c ,$d1 ,$ca ,$1a ,$9b ,$9a ,$5c ,$ca ,$6c ,$aa ,$92 ,$2d ,$cd ,$cc ,$34 ,$33 ,$cd ,$cc ,$d2 ,$71 ,$9a ,$66 ,$1c ,$cb ,$6a ,$32 ,$cd ,$b2 ,$a9 ,$c6 ,$b2 ,$cc ,$cc ,$1a ,$b3 ,$ca -001D91r 1 ,$6c ,$32 ,$b3 ,$31 ,$ab ,$6a ,$2c ,$b3 ,$b2 ,$ca ,$99 ,$a6 ,$b2 ,$4a ,$ae ,$9c ,$32 ,$2b ,$53 ,$6b ,$1a ,$2b ,$ae ,$9c ,$d4 ,$aa ,$cc ,$c9 ,$cc ,$ca ,$6c ,$b2 ,$9c ,$92 ,$33 ,$d3 ,$8c ,$cb ,$b4 ,$d4 ,$2c ,$cb ,$d2 ,$34 ,$cb ,$9c ,$31 ,$2d ,$6e ,$ca ,$cc -001D91r 1 ,$ac ,$c6 ,$ca ,$b1 ,$1c ,$2b ,$cd ,$cc ,$4a ,$cb ,$aa ,$9c ,$26 ,$2b ,$6b ,$d2 ,$b2 ,$2c ,$ab ,$69 ,$cc ,$ac ,$4c ,$2b ,$cd ,$32 ,$33 ,$33 ,$a7 ,$26 ,$2b ,$c7 ,$c6 ,$c6 ,$74 ,$72 ,$b2 ,$2c ,$ad ,$b4 ,$ca ,$cc ,$ca ,$34 ,$cb ,$a6 ,$b2 ,$b1 ,$ca ,$b2 ,$2c -001D91r 1 ,$cd ,$b2 ,$e1 ,$34 ,$8d ,$2b ,$6b ,$c6 ,$b4 ,$2c ,$b3 ,$b4 ,$ac ,$cc ,$1c ,$6b ,$ca ,$ac ,$32 ,$2b ,$cb ,$32 ,$9b ,$2c ,$6b ,$b4 ,$29 ,$d3 ,$b2 ,$2c ,$2b ,$33 ,$ab ,$a9 ,$32 ,$cb ,$32 ,$9b ,$ac ,$2c ,$ab ,$a6 ,$ca ,$4a ,$a7 ,$54 ,$ad ,$34 ,$b3 ,$ac ,$32 -001D91r 1 ,$2b ,$33 ,$b3 ,$a9 ,$ac ,$2c ,$1b ,$cd ,$cc ,$b1 ,$29 ,$b3 ,$cc ,$aa ,$ac ,$cc ,$ac ,$4a ,$cd ,$cc ,$ca ,$b2 ,$19 ,$b3 ,$ac ,$32 ,$1b ,$33 ,$35 ,$2b ,$d3 ,$2a ,$33 ,$cd ,$b4 ,$6a ,$32 ,$ab ,$2c ,$b3 ,$ac ,$34 ,$ab ,$cc ,$ca ,$a9 ,$ca ,$ca ,$ac ,$6c ,$9a -001D91r 1 ,$4a ,$35 ,$cb ,$cc ,$d2 ,$4c ,$ab ,$d2 ,$cc ,$46 ,$b3 ,$ac ,$72 ,$2c ,$a7 ,$2a ,$cb ,$aa ,$cc ,$d2 ,$b2 ,$ca ,$32 ,$ab ,$aa ,$aa ,$b2 ,$d4 ,$b2 ,$32 ,$b3 ,$4c ,$33 ,$cb ,$b2 ,$34 ,$d3 ,$4c ,$e3 ,$2a ,$ad ,$ac ,$2c ,$d3 ,$cc ,$2c ,$33 ,$cb ,$b1 ,$cc ,$b1 -001D91r 1 ,$b4 ,$aa ,$ca ,$c9 ,$2c ,$cb ,$aa ,$65 ,$ca ,$cc ,$2c ,$ab ,$9c ,$ac ,$32 ,$6d ,$72 ,$aa ,$9c ,$a6 ,$c6 ,$aa ,$a6 ,$aa ,$2c ,$b3 ,$ac ,$64 ,$33 ,$b3 ,$b4 ,$51 ,$2b ,$27 ,$c7 ,$b2 ,$ca ,$29 ,$cb ,$aa ,$4a ,$ab ,$2a ,$b3 ,$9a ,$9c ,$cc ,$d8 ,$d4 ,$a9 ,$2a -001D91r 1 ,$ce ,$9c ,$c6 ,$32 ,$ab ,$cc ,$34 ,$33 ,$33 ,$9b ,$b4 ,$b2 ,$b2 ,$aa ,$26 ,$35 ,$2b ,$ab ,$cc ,$cc ,$cc ,$cc ,$46 ,$b3 ,$ca ,$4a ,$ab ,$99 ,$2c ,$b3 ,$6a ,$a6 ,$2c ,$ad ,$2c ,$2b ,$2d ,$8b ,$33 ,$53 ,$4b ,$33 ,$39 ,$2b ,$a7 ,$b2 ,$b4 ,$b2 ,$6c ,$b4 ,$2a -001D91r 1 ,$2d ,$b3 ,$b2 ,$cc ,$aa ,$8a ,$9d ,$4c ,$ab ,$2a ,$cb ,$a9 ,$b4 ,$cc ,$ca ,$2c ,$b3 ,$a9 ,$ca ,$2a ,$ad ,$b2 ,$ca ,$34 ,$ad ,$aa ,$b2 ,$31 ,$c7 ,$cc ,$ca ,$ac ,$72 ,$2a ,$4b ,$33 ,$b3 ,$2c ,$2b ,$27 ,$ab ,$2c ,$33 ,$c7 ,$b2 ,$32 ,$2b ,$53 ,$ae ,$ac ,$32 -001D91r 1 ,$b3 ,$ca ,$32 ,$ab ,$aa ,$ac ,$ca ,$aa ,$b2 ,$b2 ,$4a ,$cb ,$b2 ,$ca ,$2c ,$a7 ,$b2 ,$32 ,$b3 ,$32 ,$2b ,$9b ,$c9 ,$2c ,$2d ,$33 ,$d3 ,$b2 ,$ac ,$ac ,$4a ,$b3 ,$b2 ,$d4 ,$2c ,$cb ,$aa ,$32 ,$2b ,$ad ,$6c ,$b2 ,$2a ,$4d ,$cd ,$aa ,$4a ,$ab ,$cc ,$ac ,$b2 -001D91r 1 ,$cc ,$cc ,$34 ,$33 ,$33 ,$9b ,$32 ,$b3 ,$32 ,$b3 ,$ca ,$aa ,$2a ,$73 ,$9a ,$ca ,$aa ,$b2 ,$32 ,$b3 ,$ac ,$6c ,$34 ,$cb ,$9c ,$aa ,$ca ,$4a ,$b3 ,$aa ,$aa ,$b4 ,$aa ,$32 ,$ab ,$32 ,$b3 ,$38 ,$ae ,$cc ,$d4 ,$aa ,$ac ,$cc ,$ac ,$ca ,$aa ,$ac ,$ac ,$4a ,$b3 -001D91r 1 ,$b2 ,$b2 ,$cc ,$4c ,$cb ,$2c ,$2b ,$cb ,$8a ,$2b ,$cb ,$ac ,$b2 ,$aa ,$2a ,$2b ,$b3 ,$b2 ,$4c ,$ab ,$32 ,$2b ,$cd ,$4c ,$cb ,$32 ,$33 ,$33 ,$ab ,$ac ,$2a ,$33 ,$ad ,$aa ,$aa ,$a9 ,$6a ,$d4 ,$ac ,$2c ,$9b ,$ca ,$aa ,$ac ,$b2 ,$32 ,$cb ,$2a ,$ab ,$2a ,$33 -001D91r 1 ,$2d ,$d3 ,$ac ,$ac ,$4c ,$2d ,$ab ,$ca ,$4c ,$b3 ,$d2 ,$ac ,$b2 ,$aa ,$4a ,$2b ,$ab ,$b2 ,$32 ,$b3 ,$b2 ,$cc ,$2a ,$d3 ,$ca ,$b2 ,$ac ,$32 ,$cb ,$cc ,$aa ,$2a ,$d3 ,$b2 ,$ac ,$32 ,$b3 ,$2a ,$2b ,$b3 ,$c9 ,$cc ,$cc ,$b1 ,$c9 ,$ac ,$cc ,$cc ,$cc ,$2c ,$ab -001D91r 1 ,$ca ,$aa ,$2c ,$a7 ,$aa ,$ca ,$aa ,$aa ,$ca ,$ca ,$32 ,$2b ,$cb ,$cc ,$ca ,$d2 ,$aa ,$ac ,$aa ,$ca ,$aa ,$b4 ,$aa ,$ca ,$2a ,$33 ,$ab ,$aa ,$ac ,$ca ,$32 ,$33 ,$d3 ,$2a ,$ab ,$ac ,$d4 ,$32 ,$33 ,$4b ,$2b ,$ad ,$ac ,$34 ,$ab ,$ca ,$aa ,$aa ,$aa ,$2c ,$b3 -001D91r 1 ,$2a ,$ab ,$2a ,$ab ,$ca ,$d4 ,$cc ,$cc ,$aa ,$aa ,$aa ,$2c ,$ab ,$32 ,$33 ,$33 ,$ab ,$b2 ,$b4 ,$b2 ,$b2 ,$32 ,$cb ,$cc ,$ca ,$ca ,$9a ,$ca ,$b2 ,$aa ,$32 ,$2b ,$cb ,$aa ,$aa ,$b2 ,$ca ,$ca ,$ca ,$ca ,$ca ,$ac ,$b4 ,$34 ,$ab ,$cc ,$ca ,$b2 ,$2a ,$ab ,$ac -001D91r 1 ,$ca ,$ac ,$d2 ,$ca ,$ca ,$ca ,$aa ,$aa ,$aa ,$cc ,$cc ,$b2 ,$32 ,$ab ,$ca ,$aa ,$b2 ,$ac ,$aa ,$ca ,$aa ,$4a ,$33 ,$2b ,$d3 ,$b2 ,$b2 ,$ac ,$aa ,$b2 ,$34 ,$ab ,$2c ,$2b ,$ad ,$cc ,$ca ,$b2 ,$b2 ,$aa ,$ca ,$aa ,$b4 ,$b2 ,$cc ,$ac ,$aa ,$2a ,$ab ,$aa ,$ca -001D91r 1 ,$aa ,$aa ,$aa ,$aa ,$2a ,$ab ,$aa ,$2a ,$ab ,$ac ,$b2 ,$b2 ,$d2 ,$ca -001D91r 1 xx xx xx xx .align $40 -001D95r 1 xx xx xx xx -001D99r 1 xx xx xx xx -001D9Dr 1 xx xx xx xx -001DA1r 1 xx xx xx xx -001DA5r 1 xx xx xx xx -001DA9r 1 xx xx xx xx -001DADr 1 xx xx xx xx -001DB1r 1 xx xx xx xx -001DB5r 1 xx xx xx xx -001DB9r 1 xx xx xx xx -001DBDr 1 xx xx xx -001DC0r 1 _Test_DPCM1: -001DC0r 1 7C 28 FF 8F .byte $7c ,$28 ,$ff ,$8f ,$07 ,$00 ,$00 ,$83 ,$20 ,$b8 ,$9f ,$bf ,$ff ,$ff ,$ff ,$9f ,$ff ,$ef ,$1f ,$e2 ,$08 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$20 ,$8e ,$ff ,$ff ,$ff ,$ff ,$ff ,$ff ,$ff ,$ff ,$9d ,$18 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$00 ,$18 ,$60 ,$c0 -001DC4r 1 07 00 00 83 -001DC8r 1 20 B8 9F BF -001DCCr 1 FF FF FF 9F -001DD0r 1 FF EF 1F E2 -001DD4r 1 08 00 00 00 -001DD8r 1 00 00 00 00 -001DDCr 1 20 8E FF FF -001DE0r 1 FF FF FF FF -001DE4r 1 FF FF 9D 18 -001DE8r 1 00 00 00 00 -001DECr 1 00 00 00 18 -001DF0r 1 60 C0 E3 FD -001DF4r 1 F0 FF FF FF -001DF8r 1 FF FF 3F FF -001DFCr 1 7F C0 59 20 -001E00r 1 27 DC 03 00 -001E04r 1 00 00 00 C0 -001E08r 1 00 78 FC FF -001E0Cr 1 BD FF EE DF -001E10r 1 0F 1F FE 01 -001E14r 1 20 E0 1D 06 -001E18r 1 66 FA E3 87 -001E1Cr 1 EF 01 60 3C -001E20r 1 07 90 2F 72 -001E24r 1 63 F0 FE 01 -001E28r 1 C1 FF CF 07 -001E2Cr 1 9C 0F FC E7 -001E30r 1 E5 02 7F 02 -001E34r 1 0E 00 F7 03 -001E38r 1 1E F0 3F FC -001E3Cr 1 00 C0 03 06 -001E40r 1 3C 38 0E FC -001E44r 1 FE F9 1F FF -001E48r 1 FF E3 81 FF -001E4Cr 1 39 43 38 00 -001E50r 1 06 80 03 00 -001E54r 1 79 00 1E 7C -001E58r 1 8F 73 1C FE -001E5Cr 1 F8 DF E3 FF -001E60r 1 E3 CF 01 8F -001E64r 1 9C 1E 1C 03 -001E68r 1 C7 60 03 01 -001E6Cr 1 61 18 0E 18 -001E70r 1 9F F0 3E FB -001E74r 1 C3 F3 3F DF -001E78r 1 7B F8 FF 03 -001E7Cr 1 C2 F3 60 08 -001E80r 1 00 08 00 C0 -001E84r 1 23 9E CF E3 -001E88r 1 33 9E 1F 7E -001E8Cr 1 FF B8 F0 E3 -001E90r 1 43 81 FF BC -001E94r 1 8F C7 C1 1C -001E98r 1 7C 00 00 00 -001E9Cr 1 00 97 C8 7F -001EA0r 1 1C FE C1 8F -001EA4r 1 9F F7 C6 FF -001EA8r 1 F1 FC 18 0C -001EACr 1 FC CD 01 C3 -001EB0r 1 03 06 FF 08 -001EB4r 1 00 6E 80 41 -001EB8r 1 9F F8 1B 91 -001EBCr 1 E3 D9 CF -0021B1r 1 ,$e3 ,$fd ,$f0 ,$ff ,$ff ,$ff ,$ff ,$ff ,$3f ,$ff ,$7f ,$c0 ,$59 ,$20 ,$27 ,$dc ,$03 ,$00 ,$00 ,$00 ,$00 ,$c0 ,$00 ,$78 ,$fc ,$ff ,$bd ,$ff ,$ee ,$df ,$0f ,$1f ,$fe ,$01 ,$20 ,$e0 ,$1d ,$06 ,$66 ,$fa ,$e3 ,$87 ,$ef ,$01 ,$60 ,$3c ,$07 ,$90 ,$2f ,$72 ,$63 -0021B1r 1 ,$f0 ,$fe ,$01 ,$c1 ,$ff ,$cf ,$07 ,$9c ,$0f ,$fc ,$e7 ,$e5 ,$02 ,$7f ,$02 ,$0e ,$00 ,$f7 ,$03 ,$1e ,$f0 ,$3f ,$fc ,$00 ,$c0 ,$03 ,$06 ,$3c ,$38 ,$0e ,$fc ,$fe ,$f9 ,$1f ,$ff ,$ff ,$e3 ,$81 ,$ff ,$39 ,$43 ,$38 ,$00 ,$06 ,$80 ,$03 ,$00 ,$79 ,$00 ,$1e ,$7c -0021B1r 1 ,$8f ,$73 ,$1c ,$fe ,$f8 ,$df ,$e3 ,$ff ,$e3 ,$cf ,$01 ,$8f ,$9c ,$1e ,$1c ,$03 ,$c7 ,$60 ,$03 ,$01 ,$61 ,$18 ,$0e ,$18 ,$9f ,$f0 ,$3e ,$fb ,$c3 ,$f3 ,$3f ,$df ,$7b ,$f8 ,$ff ,$03 ,$c2 ,$f3 ,$60 ,$08 ,$00 ,$08 ,$00 ,$c0 ,$23 ,$9e ,$cf ,$e3 ,$33 ,$9e ,$1f -0021B1r 1 ,$7e ,$ff ,$b8 ,$f0 ,$e3 ,$43 ,$81 ,$ff ,$bc ,$8f ,$c7 ,$c1 ,$1c ,$7c ,$00 ,$00 ,$00 ,$00 ,$97 ,$c8 ,$7f ,$1c ,$fe ,$c1 ,$8f ,$9f ,$f7 ,$c6 ,$ff ,$f1 ,$fc ,$18 ,$0c ,$fc ,$cd ,$01 ,$c3 ,$03 ,$06 ,$ff ,$08 ,$00 ,$6e ,$80 ,$41 ,$9f ,$f8 ,$1b ,$91 ,$e3 ,$d9 -0021B1r 1 ,$cf ,$e7 ,$f1 ,$e3 ,$ff ,$71 ,$dc ,$50 ,$8f ,$e3 ,$00 ,$00 ,$0f ,$02 ,$76 ,$60 ,$78 ,$f0 ,$e4 ,$cb ,$77 ,$1c ,$e0 ,$e3 ,$ef ,$7f ,$c6 ,$8c ,$f1 ,$1f ,$00 ,$1e ,$ff ,$6f ,$1c ,$f8 ,$00 ,$84 ,$4f ,$01 ,$80 ,$7f ,$0f ,$1c ,$1c ,$81 ,$e4 ,$f1 ,$e7 ,$f9 ,$0e -0021B1r 1 ,$fc ,$79 ,$7e ,$e8 ,$3f ,$26 ,$3e ,$b8 ,$87 ,$90 ,$f0 ,$08 ,$3f ,$00 ,$e0 ,$47 ,$b0 ,$73 ,$1e ,$e0 ,$e4 ,$c1 ,$cf ,$1f ,$3f ,$10 ,$3e ,$3f ,$1f ,$ff ,$73 ,$ce ,$03 ,$88 ,$fc ,$87 ,$89 ,$e1 ,$18 ,$30 ,$d0 ,$81 ,$21 ,$3b ,$70 ,$04 ,$ff ,$70 ,$e0 ,$fd ,$f3 -0021B1r 1 ,$9f ,$03 ,$5f ,$f7 ,$f6 ,$83 ,$38 ,$86 ,$ff ,$c0 ,$01 ,$10 ,$f8 ,$70 ,$80 ,$f8 ,$3d ,$60 ,$c7 ,$e0 ,$3b ,$f8 ,$9b ,$ff ,$52 ,$c8 ,$f1 ,$cc ,$ed ,$f8 ,$e8 ,$00 ,$8e ,$07 ,$7b ,$10 ,$8e ,$e7 ,$11 ,$1c ,$60 ,$08 ,$fc ,$e1 ,$f1 ,$f9 ,$ef ,$1f ,$c3 ,$e8 ,$83 -0021B1r 1 ,$47 ,$ce ,$e3 ,$02 ,$03 ,$3e ,$bc ,$81 ,$be ,$87 ,$11 ,$7c ,$f0 ,$f1 ,$40 ,$3c ,$02 ,$7f ,$1c ,$7d ,$3e ,$df ,$1f ,$47 ,$80 ,$1f ,$bc ,$e7 ,$e0 ,$79 ,$60 ,$0e ,$70 ,$f8 ,$01 ,$1e ,$e7 ,$20 ,$0e ,$8e ,$07 ,$1f ,$1e ,$9f ,$e3 ,$1f ,$ce ,$e1 ,$3f ,$80 ,$e3 -0021B1r 1 ,$38 ,$db ,$cc ,$c3 ,$19 ,$0c ,$38 ,$f0 ,$fa ,$81 ,$c3 ,$f1 ,$31 ,$dc ,$1b ,$26 ,$f8 ,$37 ,$be ,$70 ,$7a ,$4c ,$c6 ,$39 ,$04 ,$3f ,$7a ,$61 ,$27 ,$e1 ,$41 ,$bc ,$81 ,$f0 ,$05 ,$ff ,$06 ,$87 ,$ff ,$09 ,$99 ,$87 ,$9f ,$7b ,$80 ,$8b ,$30 ,$e7 ,$31 ,$1c ,$ec -0021B1r 1 ,$17 ,$f2 ,$83 ,$21 ,$9e ,$3f ,$18 ,$33 ,$f8 ,$b1 ,$33 ,$7c ,$38 ,$dc ,$f3 ,$e0 ,$c4 ,$e7 ,$e1 ,$40 ,$f8 ,$1f ,$18 ,$70 ,$1c ,$ff ,$e0 ,$70 ,$a0 ,$f3 ,$e1 ,$fc ,$81 ,$ef ,$1f ,$78 ,$c0 ,$88 ,$ef ,$30 ,$80 ,$38 ,$2f ,$0f ,$c3 ,$c3 ,$c7 ,$d1 ,$c1 ,$a7 ,$ff -0021B1r 1 ,$08 ,$1f ,$3b ,$7e ,$60 ,$f0 ,$9c ,$c7 ,$c0 ,$86 ,$17 ,$c2 ,$e3 ,$27 ,$30 ,$fd ,$60 ,$cc ,$e3 ,$88 ,$13 ,$cf ,$b7 ,$3e ,$e7 ,$30 ,$dc ,$cc ,$0f ,$1c ,$de ,$c1 ,$83 ,$20 ,$0f ,$09 ,$f3 ,$39 ,$e0 ,$f0 ,$3c ,$c6 ,$f1 ,$3d ,$c1 ,$f7 ,$e1 ,$c3 ,$71 ,$3c ,$f8 -0021B1r 1 ,$18 ,$9c ,$32 ,$fc ,$d0 ,$b7 ,$c1 ,$01 ,$e3 ,$0f ,$b9 ,$81 ,$33 ,$e4 ,$ee ,$a8 ,$38 ,$76 ,$1e ,$1f ,$f8 ,$e1 ,$0f ,$3d ,$46 ,$63 ,$f2 ,$04 ,$71 ,$1c ,$1f ,$45 ,$1c ,$3f ,$f1 ,$83 ,$c3 ,$74 ,$0e ,$cf ,$70 ,$e0 ,$d9 ,$8f ,$54 ,$c6 ,$3c ,$fe ,$18 ,$39 ,$0f -0021B1r 1 ,$13 ,$3b ,$72 ,$1c ,$72 ,$45 ,$5c ,$cd ,$78 ,$dc ,$a0 ,$7e ,$07 ,$c5 ,$96 ,$53 ,$1e ,$0f ,$a7 ,$3e ,$b0 ,$1f ,$63 ,$1a ,$87 ,$39 ,$9d ,$e4 ,$c4 ,$87 ,$70 ,$fc ,$40 ,$78 ,$e0 ,$67 ,$2e ,$1f ,$f1 ,$71 ,$c7 ,$87 ,$61 ,$bc ,$33 ,$c4 ,$c5 ,$c1 ,$58 ,$66 ,$1c -0021B1r 1 ,$de ,$71 ,$89 ,$e3 ,$3d ,$e2 ,$75 ,$c8 ,$e2 ,$65 ,$75 ,$0e ,$99 ,$3b ,$ec ,$c0 ,$e9 ,$e1 ,$38 ,$1c ,$59 ,$a3 ,$d1 ,$45 ,$4f ,$94 ,$d1 ,$eb ,$60 ,$1a ,$7f ,$54 ,$3d ,$8b ,$e7 ,$39 ,$6a ,$1c ,$55 ,$e1 ,$03 ,$4e ,$53 ,$e8 ,$66 ,$70 ,$c7 ,$34 ,$1d ,$0f ,$1e -0021B1r 1 ,$fb ,$0d ,$1e ,$43 ,$31 ,$3d ,$ce ,$31 ,$a6 ,$78 ,$ec ,$21 ,$e3 ,$2b ,$7c ,$c3 ,$87 ,$c3 ,$6d ,$1e ,$45 ,$c7 ,$83 ,$81 ,$33 ,$c7 ,$55 ,$f9 ,$50 ,$39 ,$cb ,$91 ,$71 ,$dc ,$e2 ,$89 ,$69 ,$38 ,$3e ,$7a ,$23 ,$ae ,$61 ,$f6 ,$64 ,$2d ,$9c ,$bc ,$e2 ,$30 ,$56 -0021B1r 1 ,$ab ,$78 ,$d0 ,$2d ,$7a ,$34 ,$66 ,$b1 ,$79 ,$64 ,$c9 ,$91 ,$6b ,$a1 ,$ad ,$4e ,$97 ,$78 ,$c9 ,$3a ,$1c ,$ba ,$23 ,$76 ,$d6 ,$4a ,$65 ,$b4 ,$83 ,$ce ,$1c ,$37 ,$f4 ,$9c ,$21 ,$8b ,$8d ,$47 ,$69 ,$92 ,$79 ,$66 ,$d8 ,$d4 ,$55 ,$38 ,$3b ,$71 ,$d6 ,$cd ,$a5 -0021B1r 1 ,$c1 ,$c3 ,$53 ,$1a ,$8c ,$ef ,$38 ,$2c ,$a5 ,$39 ,$b8 ,$ca ,$49 ,$87 ,$dd ,$0c ,$fb ,$24 ,$e7 ,$49 ,$1b ,$7a ,$ce ,$8a ,$9c ,$d2 ,$21 ,$2e ,$34 ,$25 ,$37 ,$6e ,$a8 ,$46 ,$57 ,$d9 ,$d8 ,$bc ,$6a ,$79 ,$96 ,$63 ,$e6 ,$2c ,$4d ,$d4 ,$74 ,$4c ,$8c ,$a7 ,$29 -0021B1r 1 ,$0c ,$0f ,$35 ,$7a ,$f4 ,$44 ,$cb ,$da ,$19 ,$57 ,$9c ,$2e ,$4f ,$37 ,$47 ,$4b ,$3a ,$66 ,$e2 ,$18 ,$33 ,$45 ,$97 ,$b8 ,$2d ,$6a ,$69 ,$f8 ,$60 ,$ad ,$1a ,$93 ,$a7 ,$e5 ,$c8 ,$e3 ,$a5 ,$35 ,$36 ,$67 ,$c6 ,$9a ,$25 ,$cb ,$12 ,$3d ,$28 ,$25 ,$4d ,$47 ,$73 -0021B1r 1 ,$16 ,$8f ,$39 ,$67 ,$c3 ,$f1 ,$56 ,$63 ,$b6 ,$63 ,$5c ,$95 ,$9a ,$a8 ,$69 ,$9c ,$55 ,$31 ,$ab ,$1c ,$55 ,$16 ,$97 ,$34 ,$33 ,$c5 ,$1a ,$9b ,$8e ,$75 ,$aa ,$3a ,$d5 ,$d4 ,$d6 ,$56 ,$2e ,$55 ,$23 ,$0f ,$ab -0021B1r 1 xx xx xx xx .align $40 -0021B5r 1 xx xx xx xx -0021B9r 1 xx xx xx xx -0021BDr 1 xx xx xx -0021C0r 1 _Test_DPCM5: -0021C0r 1 00 14 87 07 .byte $00 ,$14 ,$87 ,$07 ,$20 ,$c7 ,$ff ,$ff ,$ff ,$ce ,$9c ,$03 ,$fc ,$e7 ,$18 ,$20 ,$00 ,$00 ,$1c ,$03 ,$80 ,$8f ,$3b ,$ff ,$e3 ,$ff ,$ff ,$e3 ,$ff ,$f7 ,$f0 ,$39 ,$00 ,$00 ,$7f ,$38 ,$98 ,$0f ,$20 ,$fe ,$03 ,$00 ,$dc ,$07 ,$f0 ,$1c ,$03 ,$31 ,$04 ,$70 -0021C4r 1 20 C7 FF FF -0021C8r 1 FF CE 9C 03 -0021CCr 1 FC E7 18 20 -0021D0r 1 00 00 1C 03 -0021D4r 1 80 8F 3B FF -0021D8r 1 E3 FF FF E3 -0021DCr 1 FF F7 F0 39 -0021E0r 1 00 00 7F 38 -0021E4r 1 98 0F 20 FE -0021E8r 1 03 00 DC 07 -0021ECr 1 F0 1C 03 31 -0021F0r 1 04 70 00 FF -0021F4r 1 E3 F3 F8 FF -0021F8r 1 FF FF FF F8 -0021FCr 1 FF 3F 08 20 -002200r 1 00 3E C0 00 -002204r 1 38 00 00 00 -002208r 1 78 C7 C1 FF -00220Cr 1 DE 01 FF 0F -002210r 1 CC 9B CF FF -002214r 1 FF F0 F3 07 -002218r 1 81 FD F7 0F -00221Cr 1 61 30 F8 03 -002220r 1 0E 00 00 00 -002224r 1 00 C0 43 00 -002228r 1 38 DF FB FF -00222Cr 1 FF F9 7F FC -002230r 1 CF FF 7F 40 -002234r 1 78 FC 00 FE -002238r 1 17 00 DC 07 -00223Cr 1 00 F8 20 20 -002240r 1 62 00 06 20 -002244r 1 78 12 7C C0 -002248r 1 FF E7 FD C7 -00224Cr 1 FF FF FF FF -002250r 1 7F FE 27 02 -002254r 1 F8 C0 00 00 -002258r 1 01 00 04 36 -00225Cr 1 00 3D 18 0C -002260r 1 80 11 FC FF -002264r 1 FF 51 FC 37 -002268r 1 FF FF FF FF -00226Cr 1 F3 E5 F8 FF -002270r 1 3F 00 01 00 -002274r 1 60 14 00 00 -002278r 1 00 00 00 3C -00227Cr 1 06 F0 BE 4E -002280r 1 E1 FF F9 FF -002284r 1 FF FF 7F FE -002288r 1 FE BF BD 03 -00228Cr 1 18 1C 68 8C -002290r 1 E7 00 00 00 -002294r 1 00 C0 00 80 -002298r 1 00 F1 E3 78 -00229Cr 1 FE C3 3F E2 -0022A0r 1 FF FF FF FF -0022A4r 1 FF FF 23 C6 -0022A8r 1 7E E8 E1 1C -0022ACr 1 00 00 04 03 -0022B0r 1 10 00 00 00 -0022B4r 1 7A 0E CC F1 -0022B8r 1 A9 F9 F5 D0 -0022BCr 1 FF CF AF -0025B1r 1 ,$00 ,$ff ,$e3 ,$f3 ,$f8 ,$ff ,$ff ,$ff ,$ff ,$f8 ,$ff ,$3f ,$08 ,$20 ,$00 ,$3e ,$c0 ,$00 ,$38 ,$00 ,$00 ,$00 ,$78 ,$c7 ,$c1 ,$ff ,$de ,$01 ,$ff ,$0f ,$cc ,$9b ,$cf ,$ff ,$ff ,$f0 ,$f3 ,$07 ,$81 ,$fd ,$f7 ,$0f ,$61 ,$30 ,$f8 ,$03 ,$0e ,$00 ,$00 ,$00 ,$00 -0025B1r 1 ,$c0 ,$43 ,$00 ,$38 ,$df ,$fb ,$ff ,$ff ,$f9 ,$7f ,$fc ,$cf ,$ff ,$7f ,$40 ,$78 ,$fc ,$00 ,$fe ,$17 ,$00 ,$dc ,$07 ,$00 ,$f8 ,$20 ,$20 ,$62 ,$00 ,$06 ,$20 ,$78 ,$12 ,$7c ,$c0 ,$ff ,$e7 ,$fd ,$c7 ,$ff ,$ff ,$ff ,$ff ,$7f ,$fe ,$27 ,$02 ,$f8 ,$c0 ,$00 ,$00 -0025B1r 1 ,$01 ,$00 ,$04 ,$36 ,$00 ,$3d ,$18 ,$0c ,$80 ,$11 ,$fc ,$ff ,$ff ,$51 ,$fc ,$37 ,$ff ,$ff ,$ff ,$ff ,$f3 ,$e5 ,$f8 ,$ff ,$3f ,$00 ,$01 ,$00 ,$60 ,$14 ,$00 ,$00 ,$00 ,$00 ,$00 ,$3c ,$06 ,$f0 ,$be ,$4e ,$e1 ,$ff ,$f9 ,$ff ,$ff ,$ff ,$7f ,$fe ,$fe ,$bf ,$bd -0025B1r 1 ,$03 ,$18 ,$1c ,$68 ,$8c ,$e7 ,$00 ,$00 ,$00 ,$00 ,$c0 ,$00 ,$80 ,$00 ,$f1 ,$e3 ,$78 ,$fe ,$c3 ,$3f ,$e2 ,$ff ,$ff ,$ff ,$ff ,$ff ,$ff ,$23 ,$c6 ,$7e ,$e8 ,$e1 ,$1c ,$00 ,$00 ,$04 ,$03 ,$10 ,$00 ,$00 ,$00 ,$7a ,$0e ,$cc ,$f1 ,$a9 ,$f9 ,$f5 ,$d0 ,$ff ,$cf -0025B1r 1 ,$af ,$ff ,$ff ,$df ,$c3 ,$e7 ,$f7 ,$e3 ,$d8 ,$10 ,$80 ,$61 ,$06 ,$3a ,$08 ,$00 ,$00 ,$00 ,$e0 ,$82 ,$79 ,$03 ,$f0 ,$e9 ,$fc ,$7d ,$5d ,$f9 ,$fe ,$e7 ,$3f ,$1c ,$fe ,$77 ,$7f ,$e1 ,$3c ,$be ,$48 ,$5e ,$3e ,$3c ,$00 ,$00 ,$00 ,$60 ,$2c ,$08 ,$8e ,$30 ,$0a -0025B1r 1 ,$8e ,$70 ,$af ,$3d ,$3b ,$f4 ,$f3 ,$fb ,$ef ,$59 ,$c7 ,$9e ,$7b ,$f2 ,$e1 ,$3e ,$1e ,$2f ,$45 ,$c3 ,$38 ,$3c ,$40 ,$16 ,$60 ,$08 ,$4e ,$03 ,$46 ,$38 ,$2e ,$62 ,$1c ,$c4 ,$cf ,$39 ,$8b ,$ff ,$c3 ,$e9 ,$f7 ,$ff ,$8b ,$23 ,$ee ,$76 ,$4f ,$78 ,$a8 ,$f3 ,$37 -0025B1r 1 ,$04 ,$24 ,$83 ,$f1 ,$84 ,$11 ,$80 ,$71 ,$41 ,$c0 ,$03 ,$cc ,$86 ,$23 ,$9d ,$3a ,$ce ,$ff ,$86 ,$3f ,$df ,$f7 ,$9f ,$e7 ,$7d ,$9a ,$e6 ,$8d ,$c7 ,$23 ,$8e ,$12 ,$0c ,$63 ,$00 ,$02 ,$c2 ,$c3 ,$80 ,$61 ,$00 ,$b1 ,$29 ,$de ,$31 ,$cd ,$7b ,$7e ,$eb ,$fe ,$bc -0025B1r 1 ,$dd ,$1f ,$de ,$7c ,$5f ,$5c ,$27 ,$c7 ,$f1 ,$7c ,$80 ,$80 ,$07 ,$86 ,$00 ,$22 ,$04 ,$44 ,$cc ,$25 ,$d9 ,$e0 ,$80 ,$eb ,$be ,$eb ,$fa ,$65 ,$fe ,$d7 ,$cf ,$79 ,$ba ,$e7 ,$3c ,$5d ,$9c ,$e4 ,$78 ,$2c ,$0c ,$0a ,$06 ,$21 ,$18 ,$1a ,$f4 ,$38 ,$51 ,$20 ,$e7 -0025B1r 1 ,$30 ,$f2 ,$fc ,$3b ,$70 ,$cc ,$dd ,$f8 ,$e1 ,$59 ,$f7 ,$7e ,$e3 ,$f1 ,$dc ,$f8 ,$71 ,$66 ,$62 ,$60 ,$0c ,$ca ,$12 ,$a3 ,$25 ,$88 ,$b6 ,$41 ,$3e ,$06 ,$19 ,$3c ,$6e ,$e3 ,$f3 ,$c6 ,$98 ,$b9 ,$f2 ,$c8 ,$33 ,$ee ,$cc ,$b9 ,$4f ,$2d ,$79 ,$1c ,$d9 ,$3a ,$9c -0025B1r 1 ,$a7 ,$c1 ,$2a ,$7e ,$b2 ,$23 ,$24 ,$a8 ,$20 ,$0e ,$9c ,$71 ,$8c ,$e3 ,$90 ,$c7 ,$1e ,$4d ,$ba ,$cc ,$8f ,$77 ,$6c ,$8c ,$ad ,$6b ,$af ,$93 ,$a7 ,$f2 ,$7c ,$97 ,$4c ,$d7 ,$c1 ,$4c ,$b1 ,$51 ,$12 ,$40 ,$48 ,$68 ,$aa ,$41 ,$91 ,$b4 ,$1c ,$39 ,$71 ,$8e ,$63 -0025B1r 1 ,$df ,$77 ,$da ,$f3 ,$dd ,$f8 ,$fa ,$8e ,$b7 ,$3c ,$ec ,$c1 ,$a3 ,$a1 ,$c3 ,$12 ,$26 ,$0e ,$52 ,$04 ,$22 ,$44 ,$25 ,$66 ,$38 ,$29 ,$f8 ,$5a ,$ac ,$e3 ,$b9 ,$a7 ,$b7 ,$eb ,$7d ,$9f ,$73 ,$be ,$e7 ,$2e ,$4e ,$46 ,$c4 ,$05 ,$1d ,$35 ,$38 ,$62 ,$b0 ,$40 ,$30 -0025B1r 1 ,$65 ,$4a ,$62 ,$c4 ,$18 ,$6f ,$99 ,$52 ,$f7 ,$ba ,$e5 ,$3b ,$f1 ,$7a ,$b9 ,$e3 ,$79 ,$7b ,$ed ,$c4 ,$8d ,$8e ,$e4 ,$18 ,$49 ,$05 ,$0d ,$1e ,$8e ,$1c ,$42 ,$91 ,$0d ,$cb ,$34 ,$26 ,$5b ,$96 ,$3d ,$bc ,$a6 ,$e8 ,$ce ,$69 ,$e7 ,$53 ,$c5 ,$27 ,$1e ,$9f ,$cf -0025B1r 1 ,$18 ,$af ,$4c ,$4d ,$1c ,$39 ,$d3 ,$2c ,$87 ,$0a ,$65 ,$72 ,$70 ,$b8 ,$c8 ,$61 ,$a3 ,$19 ,$a6 ,$70 ,$6c ,$f4 ,$3c ,$93 ,$46 ,$cf ,$73 ,$ba ,$d5 ,$bd ,$72 ,$8b ,$3a ,$c7 ,$f1 ,$3c ,$d9 ,$b1 ,$45 ,$16 ,$6b ,$a6 ,$01 ,$43 ,$14 ,$2b ,$31 ,$30 ,$49 ,$39 ,$6c -0025B1r 1 ,$2a ,$9b ,$d1 ,$65 ,$9b ,$3a ,$dd ,$f1 ,$b3 ,$cf ,$d9 ,$3d ,$b7 ,$5b ,$e3 ,$0c ,$3b ,$96 ,$ac ,$c5 ,$82 ,$21 ,$11 ,$ca ,$32 ,$81 ,$c2 ,$70 ,$28 ,$1a ,$1d ,$35 ,$9c ,$ed ,$6c ,$d9 ,$f2 ,$ee ,$5b ,$b7 ,$6b ,$db ,$9e ,$0f ,$d3 ,$b2 ,$65 ,$56 ,$96 ,$20 ,$47 -0025B1r 1 ,$23 ,$52 ,$6a ,$aa ,$08 ,$48 ,$19 ,$0e ,$25 ,$b2 ,$94 ,$6d ,$9a ,$de ,$78 ,$9b ,$be ,$2b ,$6f ,$f3 ,$2d ,$cf ,$ac ,$2e ,$4d ,$b6 ,$68 ,$a9 ,$96 ,$c9 ,$a3 ,$94 ,$12 ,$61 ,$d8 ,$60 ,$c5 ,$12 ,$86 ,$63 ,$8c ,$8c ,$ad ,$d7 ,$36 ,$4b ,$9b ,$b5 ,$6d ,$cd ,$33 -0025B1r 1 ,$67 ,$4b ,$e6 ,$6c ,$d9 ,$b4 ,$2c ,$4d ,$96 ,$2e ,$4b ,$d3 ,$9a ,$e8 ,$18 ,$26 ,$15 ,$93 ,$8a ,$49 ,$51 ,$a5 ,$49 ,$ab ,$64 ,$95 ,$f5 ,$96 ,$69 ,$ca ,$b2 ,$f3 ,$ba ,$b3 ,$2d ,$c7 ,$b2 ,$4e ,$6d ,$ce ,$ac ,$4a ,$c5 ,$a9 ,$61 ,$c7 ,$74 ,$48 ,$96 ,$a4 ,$42 -0025B1r 1 ,$29 ,$6a ,$52 ,$56 ,$95 ,$31 ,$49 ,$a3 ,$54 ,$d3 ,$9d ,$57 ,$5b ,$d7 ,$b5 ,$db ,$55 ,$cf ,$ce ,$96 ,$67 ,$65 ,$25 ,$a5 ,$51 ,$51 ,$14 ,$4d ,$a6 ,$22 ,$51 ,$92 ,$64 ,$68 ,$8a ,$b2 ,$94 ,$4d ,$9b ,$e6 ,$74 ,$d5 ,$ad ,$dd ,$ed ,$66 ,$db ,$56 ,$ad ,$d5 ,$e6 -0025B1r 1 ,$34 ,$69 ,$52 ,$29 ,$95 ,$1c ,$8e ,$aa ,$a4 ,$24 ,$54 ,$52 ,$29 ,$c9 ,$70 ,$92 ,$93 ,$c9 ,$ca ,$73 ,$4b ,$b7 ,$7a ,$db ,$b6 ,$4d ,$5b ,$f5 ,$e8 ,$aa ,$9a ,$4a ,$4b ,$53 ,$25 ,$63 ,$31 ,$33 ,$ca ,$98 ,$94 ,$09 ,$93 ,$a5 ,$2a ,$ad ,$a6 ,$65 ,$49 ,$9d ,$4c -0025B1r 1 ,$ab ,$36 ,$5d ,$5d ,$35 ,$35 ,$cb ,$b2 ,$53 ,$8f ,$d5 ,$d6 ,$aa ,$93 ,$4a ,$55 ,$9a ,$6a ,$32 ,$c9 ,$a4 ,$51 ,$95 ,$a5 ,$a5 ,$4a ,$95 ,$26 ,$ab ,$aa ,$cc ,$38 ,$26 ,$4d ,$5b ,$56 ,$d5 ,$d5 ,$b4 ,$aa ,$ab -0025B1r 1 -0025B1r 1 -0025B1r 1 .segment "RODATA" -00006Cr 1 _Test_Envelope0: -00006Cr 1 04 0F 0C C2 .byte $04 ,$0f ,$0c ,$c2 ,$0a ,$08 ,$07 ,$06 ,$80 ,$05 ,$81 ,$04 ,$82 ,$03 ,$83 ,$02 ,$cf -000070r 1 0A 08 07 06 -000074r 1 80 05 81 04 -000078r 1 82 03 83 02 -00007Cr 1 CF -00007Dr 1 _Test_Envelope100: -00007Dr 1 00 00 8F 8F .byte $00 ,$00 ,$8f ,$8f ,$84 ,$01 ,$02 ,$03 ,$02 ,$01 ,$00 ,$7f ,$7e ,$7d ,$7e ,$7f ,$c5 -000081r 1 84 01 02 03 -000085r 1 02 01 00 7F -000089r 1 7E 7D 7E 7F -00008Dr 1 C5 -00008Er 1 _Test_Envelope300: -00008Er 1 00 03 02 00 .byte $00 ,$03 ,$02 ,$00 ,$c3 -000092r 1 C3 -000093r 1 _Test_SUB0: -000093r 1 45 .byte $45 -000094r 1 3B .byte $3b -000095r 1 0B 12 .byte $0b ,$12 -000097r 1 10 F6 FF .byte $10 ,$f6 ,$ff -00009Ar 1 12 E2 FF .byte $12 ,$e2 ,$ff -00009Dr 1 11 CE FF .byte $11 ,$ce ,$ff -0000A0r 1 80 .byte $80 -0000A1r 1 82 .byte $82 -0000A2r 1 84 .byte $84 -0000A3r 1 85 .byte $85 -0000A4r 1 87 .byte $87 -0000A5r 1 89 .byte $89 -0000A6r 1 8B .byte $8b -0000A7r 1 29 .byte $29 -0000A8r 1 B0 60 48 .byte $b0 ,$60 ,$48 -0000ABr 1 00 .byte $00 -0000ACr 1 _Test_BGM0: -0000ACr 1 05 00 .byte $05, $0 -0000AEr 1 0C 00 11 00 .word $000c ,$0011 ,$0018 ,$0019 ,$001a -0000B2r 1 18 00 19 00 -0000B6r 1 1A 00 -0000B8r 1 6C .byte $6c -0000B9r 1 02 D9 FF .byte $02 ,$d9 ,$ff -0000BCr 1 00 .byte $00 -0000BDr 1 68 .byte $68 -0000BEr 1 AD 12 .byte $ad ,$12 -0000C0r 1 02 D2 FF .byte $02 ,$d2 ,$ff -0000C3r 1 00 .byte $00 -0000C4r 1 00 .byte $00 -0000C5r 1 00 .byte $00 -0000C6r 1 39 .byte $39 -0000C7r 1 4B .byte $4b -0000C8r 1 03 02 .byte $03 ,$02 -0000CAr 1 A0 0C .byte $a0 ,$0c -0000CCr 1 86 .byte $86 -0000CDr 1 86 .byte $86 -0000CEr 1 A2 0C .byte $a2 ,$0c -0000D0r 1 86 .byte $86 -0000D1r 1 86 .byte $86 -0000D2r 1 A0 0C .byte $a0 ,$0c -0000D4r 1 86 .byte $86 -0000D5r 1 86 .byte $86 -0000D6r 1 A2 0C .byte $a2 ,$0c -0000D8r 1 86 .byte $86 -0000D9r 1 86 .byte $86 -0000DAr 1 05 EF FF .byte $05 ,$ef ,$ff -0000DDr 1 2D .byte $2d -0000DEr 1 A1 60 .byte $a1 ,$60 -0000E0r 1 00 .byte $00 -0000E0r 1 diff --git a/sample/cc65/testmus.o b/sample/cc65/testmus.o deleted file mode 100644 index f05c1f2..0000000 Binary files a/sample/cc65/testmus.o and /dev/null differ diff --git a/sample/sw/4.nsf b/sample/sw/4.nsf index 1c2b4be..fd4a331 100644 Binary files a/sample/sw/4.nsf and b/sample/sw/4.nsf differ diff --git a/sample/sw/Bach_BWV578.nsf b/sample/sw/Bach_BWV578.nsf index a3cb66a..57f0e7c 100644 Binary files a/sample/sw/Bach_BWV578.nsf and b/sample/sw/Bach_BWV578.nsf differ diff --git a/sample/sw/Chopin_op66.BAK b/sample/sw/Chopin_op66.BAK new file mode 100644 index 0000000..53a7542 --- /dev/null +++ b/sample/sw/Chopin_op66.BAK @@ -0,0 +1,235 @@ + +#title "Patch Test sample" + +#Code "../../bin/nsd_n163.bin" + +#bgm 1 + +#timebase 24 + +#QMax 100 + +//====================================================================== +// Wave table for Piano +//====================================================================== +/* + f(フォルテ)位の強さで打鍵した時の、 + 各オクターブ毎のA(ラ)の音をサンプリングしたピアノの音色です。 + オクターブが低いほど、倍音成分が多い波形になります。 + 以下の要領で随時切り替えて用いると、それなりにピアノっぽい演奏になります。 + ・発音が強く or オクターブが低いほど、倍音成分が多い音 + ・発音が弱く or オクターブが高いほど、倍音成分が多い音 +*/ + +//Sampling = o0a +N163(0 ){ + 0,13, 5, 6,11, 5,10, 8, 6,11,12, 8, 6,10, 3, 8, + 3, 6, 9,13, 8,12, 8,10, 6, 9, 3,10, 5,12, 4,15 +} + +//Sampling = o1a +N163(1 ){ + 8,10,14,11, 8,13,12,14,10,15,14,15,11, 8, 4, 5, + 1, 3, 2, 6, 5,10,10,11, 8, 5, 9, 8, 5, 0, 2, 5 +} + +//Sampling = o2a +N163(2 ){ + 8,11,14,12, 9, 9,10,10,14,15,13,10, 9,11, 7, 4, + 2, 3, 1, 0, 3, 6, 5, 8,10, 7, 4, 2, 3, 6, 7, 5 +} + +//Sampling = o3a +N163(3 ){ + 9,10,10, 9,10,12,14,15,14,12,11, 9,10,10, 9, 8, + 6, 4, 2, 1, 0, 1, 3, 5, 6, 5, 4, 3, 5, 7, 8, 7 +} + +//Sampling = o4a +N163(4 ){ + 8, 9,10,11,11,11,12,13,14,15,15,15,14,12,10, 8, + 6, 4, 3, 2, 1, 0, 0, 1, 2, 4, 5, 6, 6, 7, 7, 8 +} + +//Sampling = o5a +N163(15 ){ + 8,10,11,13,15,14,13,14,13,11, 9, 6, 2, 0, 1, 4, +} + +//Sampling = o6a +N163(16 ){ + 8,11,13,14,15,14,15,13,11, 8, 5, 3, 1, 0, 2, 4, +} + +//Sampling = o7a (てか、ほとんど正弦波) +N163(17 ){ + 8,11,13,14,15,14,13,10, 7, 4, 2, 1, 0, 1, 2, 4, +} + + + +//====================================================================== +// Envelope for Piano +//====================================================================== + +E( 0){ (15,12,6),(12,6,255) L 6 R (6,0, 72) L 0 } // o1c - +E( 1){ (15,12,6),(12,5,225) L 5 R (5,0, 64) L 0 } // o1a - +E( 2){ (15,12,5),(12,5,196) L 5 R (5,0, 56) L 0 } // o2e - +E( 3){ (15,12,5),(12,5,169) L 5 R (5,0, 49) L 0 } // o2a - +E( 4){ (15,12,5),(12,4,144) L 4 R (4,0, 42) L 0 } // o3e - +E( 5){ (15,12,4),(12,4,121) L 4 R (4,0, 36) L 0 } // o3a - +E( 6){ (15,12,4),(12,4,100) L 4 R (4,0, 30) L 0 } // o4e - +E( 7){ (15,12,4),(12,3, 81) L 3 R (3,0, 25) L 0 } // o4a - +E( 8){ (15,12,3),(12,3, 64) L 3 R (3,0, 20) L 0 } // o5e - +E( 9){ (15,12,3),(12,3, 49) L 3 R (3,0, 16) L 0 } // o5a - +E(10){ (15,12,3),(12,2, 36) L 2 R (2,0, 12) L 0 } // o6e - +E(11){ (15,12,2),(12,2, 25) L 2 R (2,0, 9) L 0 } // o6a - +E(12){ (15,12,2),(12,2, 16) L 2 R (2,0, 6) L 0 } // o7e - +E(13){ (15,12,1),(12,1, 9) L 1 R (1,0, 4) L 0 } // o7a - +E(14){ (15,12,1),(12,1, 4) L 1 R (1,0, 2) L 0 } // o8e - +E(15){ (15,12,1),(12,1, 1) L 1 R (1,0, 1) L 0 } // o8a - + + + +//====================================================================== +// Patch +//====================================================================== + +Patch(10){ + + @NS 0,32 _+36 Ev0 //Range = c1 - g#1 + a1 @NS 0,32 _+36 Ev1 //Range = a1 - d#2 + e2 @NS 0,32 _+36 Ev2 //Range = e2 - g#2 + a2 @NS 0,32 _+36 Ev3 //Range = a2 - d#3 + + e3 @NS 32,32 _+36 Ev4 // + a3 @NS 32,32 _+36 Ev5 // + e4 @NS 64,32 _+36 Ev6 // + a4 @NS 64,32 _+36 Ev7 // + + e5 @NS 96,16 _+24 Ev8 // + a5 @NS 96,16 _+24 Ev9 // + e6 @NS112,16 _+24 Ev10 // + a6 @NS112,16 _+24 Ev11 // + + e7 @NS112,16 _+24 Ev12 // + a7 @NS112,16 _+24 Ev13 // + e8 @NS112,16 _+24 Ev14 // + a8 @NS112,16 _+24 Ev15 // + +} + + + +//====================================================================== +// Sequence +//====================================================================== + +bgm(0) +{ + t96 + + NC8 @NL0,2 @NL32,3 @NL64,4 @NL96,15 @NL112,16 //n16x への転送はここで済ます。 + + TR6,7,8,9,10,11,12,13 @P10 K{cis-moll} + + TR6,7,8,9,10,11,12,13 J0 + + TR6 v15 o5 r1^1 l12 r1^1 + TR7 v15 o5 r1^1 l12 r1^1 + TR8 v15 o4 r1^1 l12 [4 rrr( err( ] + TR9 v15 o4 r1^1 l12 [4 rrc( rcr( ] + TR10 v15 o3 g1^1 l12 [4 rgr( rrg( ] + TR11 v15 o3 r1^1 l12 [4 crr( rrr( ] + TR12 v15 o2 g1^1 l12 r1^1 + TR13 v15 o2 r1^1 l12 t64 c t80 r t96 r t120 r t128 r t140 r t156 r2 r1 + + //-------------- + + TR6 |: v8 o5 l16 [2 r4 r rcr rcrc r crr ] \ rr rd rr>rd rrrf rrrc< | r rrg rrer rr"b+r< rrrr :| + TR7 |: v8 o4 l16 [2 rrar r>rre r4 r rer< ] \ rr>cr rr>cr rrgr rrfr< | r rar rarr rcr r< arra& :| + TR8 |: v8 o4 l16 [2 rgrg r grr> r4 < b+rrr ] \ ra>rr ra>rr rarr rdrr< | r`drr rrrd rrr d< rgrr :| + TR9 |: v8 o4 l16 [2 r4 f+rrr> drdr r rrg< ] \ r4> fr>rr brrr errr< | b+rrr frrr frr r< rrbr :| + TR10 v9 o4 l12 [2 r4 err r4 err ] | r4 frr r4 arr< | [2 r4 b+rr ] + TR11 v8 o4 l12 [2 rrc rcr rrc rcr ] | rrc rcr rcr rrc< | [2 rrf r fr ] + TR12 v8 o3 l12 [2 rgr rrg rgr rrg ] | rar rra>rrd rdr< | [2 rdr r rd ] + TR13 v10 o3 l12 [2 crr r4 err r4 ] | drr r4 frr r4< | [2 grr r4 ] + + TR10 o4 r4 err r4 err | r4 er r r4 cr r + TR11 o4 rrc rcr rrc rcr < | rra+ ra+r rra+ ra+r + TR12 o3 rgr rrg rgr rrg | rgr rr g rgr rr g + TR13 o3 crr r4 err r4 | crr r4 err r4 + + TR6 o5 r4 rbr8 ) r>er8<) ra+r8 | rgr8( rdr8<( r br8( rgrg + TR7 o5 rer8 r8a+r) r8>dr<) r8gr | r8br( r8gr( r8 dr<( r8f+r + TR8 o5 drdr dr8.) f+r8. ) br8. | a+r8.( er8.( c r8.<( a+r8. + TR9 o5 r8.c+ r8. g) r>r8c<) r8.f+ | r8.c+<( r8.a+( r8.f+( [4 t_-7 r ] t80 + TR10 o4 r4 drr ) r4 ) f+rr |< r4 ( brr ( r4 ( brr + TR11 o3 rrb rbr>) rr c) rcr |< rrg ( rgr ( rrg ( rgr + TR12 o3 rgr rrg ) ra+r) rra+ | rdr ( rrd ( rdr ( rrd + TR13 o3 drr r4 ) dr r) r4 |< grr ( r4 ( grr ( r4 + + //-------------- + + TR6 v11 o5 r8.t156c [3 r8.c ] |< r8.a r8.a r8.b> r8.e | [4 r8.c ] | r8.d r8.d r8.e r8.e + TR7 v11 o4 r8t140b+r [3 r8b+r ] | r8fr r8fr r8gr r8br | [4 r8b+r ] | r8br r8br r8br r8br + TR8 v12 o5 rt128gr8 rfr8 re+r8 rfr8 | rcr8 rdr8 rer8 rgr8 | rgr8 rfr8 re+r8 rfr8 | re+r8 rfr8 rar8 rgr8 + TR9 v15 o4 g4 f4 e+4 f4 | c4 d4 e4 g4 | g4 f4 e+4 f4 | e+4 f4 a4 g4 + TR10 v11 o3 r4 arr r4 arr | r4 brr r4 grr | r4 arr r4 arr | r4 brr r4 grr + TR11 v10 o3 rrf rfr rrf rfr | rra rar rre rer | rrf rfr rrf rfr | rra rar rre rer + TR12 v10 o3 rcr rrc rcr rrc | rfr rrf < rbr rrb > | rcr rrc rcr rrc | rfr rrf < rbr rrb > + TR13 v14 o2 arr r4 arr r4 | brr r4 err r4 | arr r4 arr r4 | brr r4 err r4 + + + TR6 v7 [4 r8.c ] < | r8.a) r8.a) r8.b)> r8.e) | r8.c) r8.c) r8.a r8.a | [4 r8.f( ] + TR7 v7 [4 r8b+r ] | r8fr) r8fr) r8gr) r8br) | r8b+r) r8b+r)> r8fr r8fr | [4 r8dr( ] + TR8 v9 rg8r rf8r re+8r rf8r | rc8r) rd8r) re8r) rg8r) | rg8r) rf8r)> rd8r rc8r | rc8r(< [3 rb+8r( ] + TR9 v8 gr8. fr8. e+r8. fr8. | cr8.) dr8.) er8.) gr8.) | gr8.) fr8.)> dr8. cr8. | cr8.(< [3 b+r8.( ] + TR10 v7 r4 arr r4 arr | r4 ) brr ) r4 ) grr ) | r4 ) arr ) r4 arr | r4 ( b+rr( r4 ( b+rr( + TR11 v6 rrf rfr rrf rfr | rra ) rar ) rre ) rer ) | rrf ) rfr ) rrf rfr | rrf ( rfr ( rrf ( rfr ( + TR12 v6 rcr rrc rcr rrc | rfr ) rrf )< rbr ) rrb )> | rcr ) rrc ) rdr rrd | rdr ( rrd ( rdr ( rrd ( + TR13 v8 arr r4 err r4 | brr ) r4 ) err ) r4 ) | arr ) r4 ) arr r4 | grr ( r4 ( grr ( r4 ( + + TR6,7,8,9,10,11,12,13 J0 + + TR6 [4 r8.f( ] | [4 r8.f ] | v7 [3 r8.f ] | [5 r8.f : ( ] + TR7 [4 r8dr( ] | [4 r8dr ] | v7 [3 r8dr ] | [5 t_-5 r8dr : ( ] t156 + TR8 rb+8r( rb8r( rb8r( ra+8r( | ra+8r [3 ra8r ] | v8 rb+8r rb8r rb8r ra+8r( | ra+8r( ra8r( ra8r( rg8r + TR9 b+r8.( br8.( br8.( a+r8.( | a+r8. [3 ar8. ] | v7 b+r8. br8. br8. a+r8.( | a+r8.( ar8.( ar8.( gr8. + TR10 r4 ( brr ( r4 ( a+rr( | r4 arr r4 arr | v7 r4 brr r4 a+rr( | r4 ( arr ( r4 ( grr + TR11 rrf ( rfr ( rrf ( rfr ( | rrf rfr rrf rfr | v6 rrf rfr rrf rfr ( | rrf ( rfr ( rrf ( rfr + TR12 rdr ( rrd ( rdr ( rrd ( | rdr rrd rdr rrd | v6 rdr rrd rdr rrd ( | rdr ( rrd ( rdr ( rrd + TR13 arr ( r4 ( a+rr( r4 ( | b+rr r4 b+rr r4 | v8 arr r4 a+rr r4 ( | brr ( r4 ( b+rr( r4 + + //-------------- + + TR6 o5 [2 r4 r rv8cr rcrc r crr ] | rr rd rr>rd rrrf rrrc< | r rrg rrer rr"b+r< rrrr + TR7 o4 [2 rrv8ar r>rre r4 r rer< ] | rr>cr rr>cr rrgr rrfr< | r rar rarr rcr r< arra& + TR8 o4 [2 rv8grg r grr> r4 < b+rrr ] | ra>rr ra>rr rarr rdrr< | r`drr rrrd rrr d< rgrr + TR9 o4 [2 r4 v8f+rrr> drdr r rrg< ] | r4> fr>rr brrr errr< | b+rrr frrr frr r< rrbr + TR10 o4 [2 r4 v09err r4 err ] | r4 frr r4 arr< | [2 r4 b+rr ] + TR11 o4 [2 rrv08c rcr rrc rcr ] | rrc rcr rcr rrc< | [2 rrf r fr ] + TR12 o3 [2 rv08gr rrg rgr rrg ] | rar rra>rrd rdr< | [2 rdr r rd ] + TR13 o3 [2 v10crr r4 err r4 ] | drr r4 frr r4< | [2 grr r4 ] + + TR6 + TR7 + TR8 + TR9 + TR10 + TR11 + TR12 + TR13 + + TR6 + TR7 + TR8 + TR9 + TR10 + TR11 + TR12 + TR13 + + +} + diff --git a/sample/sw/Chopin_op66.mml b/sample/sw/Chopin_op66.mml new file mode 100644 index 0000000..5a9cd40 --- /dev/null +++ b/sample/sw/Chopin_op66.mml @@ -0,0 +1,235 @@ + +#title "Patch Test sample" + +#Code "../../bin/nsd_n163.bin" + +#bgm 1 + +#timebase 24 + +#QMax 100 + +//====================================================================== +// Wave table for Piano +//====================================================================== +/* + f(フォルテ)位の強さで打鍵した時の、 + 各オクターブ毎のA(ラ)の音をサンプリングしたピアノの音色です。 + オクターブが低いほど、倍音成分が多い波形になります。 + 以下の要領で随時切り替えて用いると、それなりにピアノっぽい演奏になります。 + ・発音が強く or オクターブが低いほど、倍音成分が多い音 + ・発音が弱く or オクターブが高いほど、倍音成分が多い音 +*/ + +//Sampling = o0a +N163(0 ){ + 0,13, 5, 6,11, 5,10, 8, 6,11,12, 8, 6,10, 3, 8, + 3, 6, 9,13, 8,12, 8,10, 6, 9, 3,10, 5,12, 4,15 +} + +//Sampling = o1a +N163(1 ){ + 8,10,14,11, 8,13,12,14,10,15,14,15,11, 8, 4, 5, + 1, 3, 2, 6, 5,10,10,11, 8, 5, 9, 8, 5, 0, 2, 5 +} + +//Sampling = o2a +N163(2 ){ + 8,11,14,12, 9, 9,10,10,14,15,13,10, 9,11, 7, 4, + 2, 3, 1, 0, 3, 6, 5, 8,10, 7, 4, 2, 3, 6, 7, 5 +} + +//Sampling = o3a +N163(3 ){ + 9,10,10, 9,10,12,14,15,14,12,11, 9,10,10, 9, 8, + 6, 4, 2, 1, 0, 1, 3, 5, 6, 5, 4, 3, 5, 7, 8, 7 +} + +//Sampling = o4a +N163(4 ){ + 8, 9,10,11,11,11,12,13,14,15,15,15,14,12,10, 8, + 6, 4, 3, 2, 1, 0, 0, 1, 2, 4, 5, 6, 6, 7, 7, 8 +} + +//Sampling = o5a +N163(15 ){ + 8,10,11,13,15,14,13,14,13,11, 9, 6, 2, 0, 1, 4, +} + +//Sampling = o6a +N163(16 ){ + 8,11,13,14,15,14,15,13,11, 8, 5, 3, 1, 0, 2, 4, +} + +//Sampling = o7a (てか、ほとんど正弦波) +N163(17 ){ + 8,11,13,14,15,14,13,10, 7, 4, 2, 1, 0, 1, 2, 4, +} + + + +//====================================================================== +// Envelope for Piano +//====================================================================== + +E( 0){ (15,12,6),(12,6,255) L 6 R (6,0, 72) L 0 } // o1c - +E( 1){ (15,12,6),(12,5,225) L 5 R (5,0, 64) L 0 } // o1a - +E( 2){ (15,12,5),(12,5,196) L 5 R (5,0, 56) L 0 } // o2e - +E( 3){ (15,12,5),(12,5,169) L 5 R (5,0, 49) L 0 } // o2a - +E( 4){ (15,12,5),(12,4,144) L 4 R (4,0, 42) L 0 } // o3e - +E( 5){ (15,12,4),(12,4,121) L 4 R (4,0, 36) L 0 } // o3a - +E( 6){ (15,12,4),(12,4,100) L 4 R (4,0, 30) L 0 } // o4e - +E( 7){ (15,12,4),(12,3, 81) L 3 R (3,0, 25) L 0 } // o4a - +E( 8){ (15,12,3),(12,3, 64) L 3 R (3,0, 20) L 0 } // o5e - +E( 9){ (15,12,3),(12,3, 49) L 3 R (3,0, 16) L 0 } // o5a - +E(10){ (15,12,3),(12,2, 36) L 2 R (2,0, 12) L 0 } // o6e - +E(11){ (15,12,2),(12,2, 25) L 2 R (2,0, 9) L 0 } // o6a - +E(12){ (15,12,2),(12,2, 16) L 2 R (2,0, 6) L 0 } // o7e - +E(13){ (15,12,1),(12,1, 9) L 1 R (1,0, 4) L 0 } // o7a - +E(14){ (15,12,1),(12,1, 4) L 1 R (1,0, 2) L 0 } // o8e - +E(15){ (15,12,1),(12,1, 1) L 1 R (1,0, 1) L 0 } // o8a - + + + +//====================================================================== +// Patch +//====================================================================== + +Patch(10){ + + @NS 0,32 _+36 Ev0 //Range = c1 - g#1 + a1 @NS 0,32 _+36 Ev1 //Range = a1 - d#2 + e2 @NS 0,32 _+36 Ev2 //Range = e2 - g#2 + a2 @NS 0,32 _+36 Ev3 //Range = a2 - d#3 + + e3 @NS 32,32 _+36 Ev4 //Range = e3 - g#3 + a3 @NS 32,32 _+36 Ev5 //Range = a3 - d#4 + e4 @NS 64,32 _+36 Ev6 //Range = e4 - g#4 + a4 @NS 64,32 _+36 Ev7 //Range = a4 - d#5 + + e5 @NS 96,16 _+24 Ev8 //Range = e5 - g#5 + a5 @NS 96,16 _+24 Ev9 //Range = a5 - d#6 + e6 @NS112,16 _+24 Ev10 //Range = e6 - g#6 + a6 @NS112,16 _+24 Ev11 //Range = a6 - d#7 + + e7 @NS112,16 _+24 Ev12 //Range = e7 - g#7 + a7 @NS112,16 _+24 Ev13 //Range = a7 - d#8 + e8 @NS112,16 _+24 Ev14 //Range = e8 - g#8 + a8 @NS112,16 _+24 Ev15 //Range = a8 - d#9 + +} + + + +//====================================================================== +// Sequence +//====================================================================== + +bgm(0) +{ + t96 + + NC8 @NL0,2 @NL32,3 @NL64,4 @NL96,15 @NL112,16 //n16x への転送はここで済ます。 + + TR6,7,8,9,10,11,12,13 @P10 K{cis-moll} + + TR6,7,8,9,10,11,12,13 J0 + + TR6 v15 o5 r1^1 l12 r1^1 + TR7 v15 o5 r1^1 l12 r1^1 + TR8 v15 o4 r1^1 l12 [4 rrr( err( ] + TR9 v15 o4 r1^1 l12 [4 rrc( rcr( ] + TR10 v15 o3 g1^1 l12 [4 rgr( rrg( ] + TR11 v15 o3 r1^1 l12 [4 crr( rrr( ] + TR12 v15 o2 g1^1 l12 r1^1 + TR13 v15 o2 r1^1 l12 t64 c t80 r t96 r t120 r t128 r t140 r t156 r2 r1 + + //-------------- + + TR6 |: v8 o5 l16 [2 r4 r rcr rcrc r crr ] \ rr rd rr>rd rrrf rrrc< | r rrg rrer rr"b+r< rrrr :| + TR7 |: v8 o4 l16 [2 rrar r>rre r4 r rer< ] \ rr>cr rr>cr rrgr rrfr< | r rar rarr rcr r< arra& :| + TR8 |: v8 o4 l16 [2 rgrg r grr> r4 < b+rrr ] \ ra>rr ra>rr rarr rdrr< | r`drr rrrd rrr d< rgrr :| + TR9 |: v8 o4 l16 [2 r4 f+rrr> drdr r rrg< ] \ r4> fr>rr brrr errr< | b+rrr frrr frr r< rrbr :| + TR10 v9 o4 l12 [2 r4 err r4 err ] | r4 frr r4 arr< | [2 r4 b+rr ] + TR11 v8 o4 l12 [2 rrc rcr rrc rcr ] | rrc rcr rcr rrc< | [2 rrf r fr ] + TR12 v8 o3 l12 [2 rgr rrg rgr rrg ] | rar rra>rrd rdr< | [2 rdr r rd ] + TR13 v10 o3 l12 [2 crr r4 err r4 ] | drr r4 frr r4< | [2 grr r4 ] + + TR10 o4 r4 err r4 err | r4 er r r4 cr r + TR11 o4 rrc rcr rrc rcr < | rra+ ra+r rra+ ra+r + TR12 o3 rgr rrg rgr rrg | rgr rr g rgr rr g + TR13 o3 crr r4 err r4 | crr r4 err r4 + + TR6 o5 r4 rbr8 ) r>er8<) ra+r8 | rgr8( rdr8<( r br8( rgrg + TR7 o5 rer8 r8a+r) r8>dr<) r8gr | r8br( r8gr( r8 dr<( r8f+r + TR8 o5 drdr dr8.) f+r8. ) br8. | a+r8.( er8.( c r8.<( a+r8. + TR9 o5 r8.c+ r8. g) r>r8c<) r8.f+ | r8.c+<( r8.a+( r8.f+( [4 t_-7 r ] t80 + TR10 o4 r4 drr ) r4 ) f+rr |< r4 ( brr ( r4 ( brr + TR11 o3 rrb rbr>) rr c) rcr |< rrg ( rgr ( rrg ( rgr + TR12 o3 rgr rrg ) ra+r) rra+ | rdr ( rrd ( rdr ( rrd + TR13 o3 drr r4 ) dr r) r4 |< grr ( r4 ( grr ( r4 + + //-------------- + + TR6 v11 o5 r8.t156c [3 r8.c ] |< r8.a r8.a r8.b> r8.e | [4 r8.c ] | r8.d r8.d r8.e r8.e + TR7 v11 o4 r8t140b+r [3 r8b+r ] | r8fr r8fr r8gr r8br | [4 r8b+r ] | r8br r8br r8br r8br + TR8 v12 o5 rt128gr8 rfr8 re+r8 rfr8 | rcr8 rdr8 rer8 rgr8 | rgr8 rfr8 re+r8 rfr8 | re+r8 rfr8 rar8 rgr8 + TR9 v15 o4 g4 f4 e+4 f4 | c4 d4 e4 g4 | g4 f4 e+4 f4 | e+4 f4 a4 g4 + TR10 v11 o3 r4 arr r4 arr | r4 brr r4 grr | r4 arr r4 arr | r4 brr r4 grr + TR11 v10 o3 rrf rfr rrf rfr | rra rar rre rer | rrf rfr rrf rfr | rra rar rre rer + TR12 v10 o3 rcr rrc rcr rrc | rfr rrf < rbr rrb > | rcr rrc rcr rrc | rfr rrf < rbr rrb > + TR13 v14 o2 arr r4 arr r4 | brr r4 err r4 | arr r4 arr r4 | brr r4 err r4 + + + TR6 v7 [4 r8.c ] < | r8.a) r8.a) r8.b)> r8.e) | r8.c) r8.c) r8.a r8.a | [4 r8.f( ] + TR7 v7 [4 r8b+r ] | r8fr) r8fr) r8gr) r8br) | r8b+r) r8b+r)> r8fr r8fr | [4 r8dr( ] + TR8 v9 rg8r rf8r re+8r rf8r | rc8r) rd8r) re8r) rg8r) | rg8r) rf8r)> rd8r rc8r | rc8r(< [3 rb+8r( ] + TR9 v8 gr8. fr8. e+r8. fr8. | cr8.) dr8.) er8.) gr8.) | gr8.) fr8.)> dr8. cr8. | cr8.(< [3 b+r8.( ] + TR10 v7 r4 arr r4 arr | r4 ) brr ) r4 ) grr ) | r4 ) arr ) r4 arr | r4 ( b+rr( r4 ( b+rr( + TR11 v6 rrf rfr rrf rfr | rra ) rar ) rre ) rer ) | rrf ) rfr ) rrf rfr | rrf ( rfr ( rrf ( rfr ( + TR12 v6 rcr rrc rcr rrc | rfr ) rrf )< rbr ) rrb )> | rcr ) rrc ) rdr rrd | rdr ( rrd ( rdr ( rrd ( + TR13 v8 arr r4 err r4 | brr ) r4 ) err ) r4 ) | arr ) r4 ) arr r4 | grr ( r4 ( grr ( r4 ( + + TR6,7,8,9,10,11,12,13 J0 + + TR6 [4 r8.f( ] | [4 r8.f ] | v7 [3 r8.f ] | [5 r8.f : ( ] + TR7 [4 r8dr( ] | [4 r8dr ] | v7 [3 r8dr ] | [5 t_-5 r8dr : ( ] t156 + TR8 rb+8r( rb8r( rb8r( ra+8r( | ra+8r [3 ra8r ] | v8 rb+8r rb8r rb8r ra+8r( | ra+8r( ra8r( ra8r( rg8r + TR9 b+r8.( br8.( br8.( a+r8.( | a+r8. [3 ar8. ] | v7 b+r8. br8. br8. a+r8.( | a+r8.( ar8.( ar8.( gr8. + TR10 r4 ( brr ( r4 ( a+rr( | r4 arr r4 arr | v7 r4 brr r4 a+rr( | r4 ( arr ( r4 ( grr + TR11 rrf ( rfr ( rrf ( rfr ( | rrf rfr rrf rfr | v6 rrf rfr rrf rfr ( | rrf ( rfr ( rrf ( rfr + TR12 rdr ( rrd ( rdr ( rrd ( | rdr rrd rdr rrd | v6 rdr rrd rdr rrd ( | rdr ( rrd ( rdr ( rrd + TR13 arr ( r4 ( a+rr( r4 ( | b+rr r4 b+rr r4 | v8 arr r4 a+rr r4 ( | brr ( r4 ( b+rr( r4 + + //-------------- + + TR6 o5 [2 r4 r rv8cr rcrc r crr ] | rr rd rr>rd rrrf rrrc< | r rrg rrer rr"b+r< rrrr + TR7 o4 [2 rrv8ar r>rre r4 r rer< ] | rr>cr rr>cr rrgr rrfr< | r rar rarr rcr r< arra& + TR8 o4 [2 rv8grg r grr> r4 < b+rrr ] | ra>rr ra>rr rarr rdrr< | r`drr rrrd rrr d< rgrr + TR9 o4 [2 r4 v8f+rrr> drdr r rrg< ] | r4> fr>rr brrr errr< | b+rrr frrr frr r< rrbr + TR10 o4 [2 r4 v09err r4 err ] | r4 frr r4 arr< | [2 r4 b+rr ] + TR11 o4 [2 rrv08c rcr rrc rcr ] | rrc rcr rcr rrc< | [2 rrf r fr ] + TR12 o3 [2 rv08gr rrg rgr rrg ] | rar rra>rrd rdr< | [2 rdr r rd ] + TR13 o3 [2 v10crr r4 err r4 ] | drr r4 frr r4< | [2 grr r4 ] + + TR6 + TR7 + TR8 + TR9 + TR10 + TR11 + TR12 + TR13 + + TR6 + TR7 + TR8 + TR9 + TR10 + TR11 + TR12 + TR13 + + +} + diff --git a/sample/sw/Chopin_op66.nsf b/sample/sw/Chopin_op66.nsf new file mode 100644 index 0000000..fde680c Binary files /dev/null and b/sample/sw/Chopin_op66.nsf differ diff --git a/sample/sw/Mozart_Kv618.nsf b/sample/sw/Mozart_Kv618.nsf index fca9672..5ae0bc3 100644 Binary files a/sample/sw/Mozart_Kv618.nsf and b/sample/sw/Mozart_Kv618.nsf differ diff --git a/sample/template/template.BAK b/sample/template/template.BAK deleted file mode 100644 index 1f263a4..0000000 --- a/sample/template/template.BAK +++ /dev/null @@ -1,125 +0,0 @@ -// メイン MML ファイルです。 - -#title "Title" // TODO: 曲名を記述して下さい。 -#Composer "Composer" // TODO: 作曲者を記述して下さい。 -#Copyright "Copyright" // TODO: 著作権者を記述して下さい。 - -// TODO: リンクするコンパイル済み音源ドライバの.binファイルを記述して下さい。 -// リンクする音源ドライバによって、対応する拡張音源が異なります。 -#Code "../../bin/nsd.bin" - -#BGM 1 // TODO: BGMの数を記述して下さい。 -#SE 0 // TODO: 効果音の数を記述して下さい。 - - - -//-------------------------------------- -// 儕CM定義 -//-------------------------------------- -//儕CMを定義します。 -//儕CMを使わない場合は、アドレスの設定、儕CMの定義を削除して構いません。 - - -//儕CMの配置アドレスです。 -//設定値〜$FFF1番地まで儕CMに使用することができます。 -//音源ドライバ及び曲データは、$8000〜(設定値-1)番地までとなります。 -#OffsetPCM $C000 // TODO: 配置アドレスを記述して下さい。 - -//各ノートに割り当てる儕CMの記述ブロックです。 -DPCM{ - - // TODO: ここに各ノートに割り当てる儕CMの情報を記述してください。 - - b1, "../dmc/bd.dmc", 14,0,64 //Bass Drum 2 - c2, "../dmc/bd.dmc", 15,0,64 //Bass Drum - d2, "../dmc/sd.dmc", 15,0,64 //Snare Drum - e2, "../dmc/sd2.dmc", 15,0,64 //Snare Drum 2 - - f2, "../dmc/tom.dmc", 10,0,64 //Low Tom 2 - g2, "../dmc/tom.dmc", 11,0,64 //Low Tom - a2, "../dmc/tom.dmc", 12,0,64 //Middle Tom 2 - b2, "../dmc/tom.dmc", 13,0,64 //Middle Tom - c3, "../dmc/tom.dmc", 14,0,64 //High Tom 2 - d3, "../dmc/tom.dmc", 15,0,64 //High Tom - - f+2,"../dmc/hhc.dmc", 15,0,64 //Hi-Hat Close - a+2,"../dmc/hho.dmc", 15,0,64 //Hi-Hat Open - c+3,"../dmc/cymbal.dmc",15,0,64 //Cymbal - -} - - - -//-------------------------------------- -// エンベロープ定義 -//-------------------------------------- -#OffsetEv 0 -#OffsetEm 10000 -#OffsetEn 20000 -#OffsetE@ 30000 - - // TODO: ここにエンベロープを記述してください。 - -//音量エンベロープ -E( 0){ 15 L 12 R 10 8 7 6 D0 5 D1 4 D2 3 D3 L 2 } -E( 1){ 15 L 11 9 7 6 L 5 R 5 D1 4 D2 3 D3 L 2 } - -//音程エンベロープ -E(10000){ 0 D15 L 1 2 3 2 1 0 -1 -2 -3 -2 -1 } //LFO - -//ノートエンベロープ -E(20000){ 0 (0,-32,16) L -32 } //Down - -//音色エンベロープ -E(30000){ 3 2 L 0 } - - - -//-------------------------------------- -// 共通サブルーチン定義 -//-------------------------------------- -//サブルーチンを定義します。 -//サブルーチンを使用しない場合は、削除して構いません。 - -// TODO: ここに4分音符の分割数を記述してください。 -// 設定値は、サブルーチンを呼ぶBGM側の数値と合わせてください。 -#timebase 24 - -//サブルーチンの記述ブロックです。 -S(0){ - - // TODO: ここにサブルーチンとして呼び出すMMLを記述してください。 - - - -} - - - -//-------------------------------------- -// BGM No.0 -//-------------------------------------- - -// TODO: ここに4分音符の分割数を記述してください。 -// 何度でも記述可能で、BGM毎に設定できます。 -#timebase 24 - -//BGMの記述ブロックです。 -BGM(0){ - - // TODO: ここにBGMのMMLを記述してください。 - - t120 - - TR1 E@0 v12 Ev0 Em0 l4 o4 - TR2 @2 v9 Ev0 Em0 l4 o4 - TR3 _+12 l4 o2 - TR4 @0 v10 Ev1 l8 o6 - TR5 l8 o2 - -} - - - - // TODO: ここに追加のBGM, 効果音を記述してください。 - diff --git a/src/help/format_music.html b/src/help/format_music.html index 86b7008..449852b 100644 --- a/src/help/format_music.html +++ b/src/help/format_music.html @@ -81,7 +81,7 @@ VRC6: -
VRC7: Sustain Switch
MMC5: -
- N163: Sample length
+ n16x: Sample length
Sunsoft 5B: Envelop Switch & Type 0x17 n1 n2 n3 n4Portamento
n1 = Decay (1 = 1 VBlank)
@@ -98,10 +98,10 @@ 0x1D n1 n2 VRC6: Set resister
n1 : Resister
n2 : Data -0x1E n1 n2 n3 N163: Set wave table
+0x1E n1 n2 n3 n16x: Set wave table
n1 = Addres
n1::n2 = Pointer. -0x1F n1 N163: Set Channel number
+0x1F n1 n16x: Set Channel number
n1 = number of channel 0x20 Volume down (-1) 0x21 Volume up (+1) diff --git a/src/help/index.html b/src/help/index.html index c9a753e..f45613b 100644 --- a/src/help/index.html +++ b/src/help/index.html @@ -117,7 +117,7 @@ voice\ n163.mml - n163音色データ・サンプル + n16x(n160,n161,n162,n163)音色データ・サンプル vrc7.mml vrc7音色データ・サンプル その他\ @@ -202,11 +202,12 @@
  • MML(Music Macro Language)文法
    • エンベロープ記述ブロック
    • +
    • パッチ定義記述ブロック
    • 儕CM記述ブロック
    • FDSキャリア波形定義
    • FDSモジュレータ波形定義
    • VRC7音色波形記述ブロック
    • -
    • n163音色波形記述ブロック
    • +
    • n16x(n160,n161,n162,n163)音色波形記述ブロック
    • シーケンス記述ブロック diff --git a/src/help/licence.html b/src/help/licence.html index 54ec554..fd66b5a 100644 --- a/src/help/licence.html +++ b/src/help/licence.html @@ -21,13 +21,65 @@

      ライセンス(Licence)・著作権(Copyright)

      -修正BSDライセンスとします。
      +本ソフトウェアは、2条項BSDライセンス(修正BSDライセンス)となります。
      以下のライセンス条文は英語が正式文書となります。日本語の条文は参考資料としてお読み下さい。
      -尚、本音源ドライバーを用いて作成したnsfデータについては、ライセンス条文の添付は不要とします。
      -(nes形式のプログラムを配布する場合等は、付けてください。)
      -

      + +
      +

      ※音声・映像ストリーム形式の配布

      +

      +本ソフトウェアのソースコード・バイナリを含まない形式は、商用・非商用問わずご自由に配布してください。
      +この場合は、ソフトウェアの著作権は発生せず、ライセンスも適用外となります。
      +

      +
        +
      • wav形式の配布
      • +
      • mp3形式の配布
      • +
      • mp4形式の配布
      • +
      • オーディオCDの配布
      • +
      • DVDビデオの配布
      • +
      • 等々
      • +
      +
      + + +
      +

      ※NSF形式の配布

      +

      +NSF形式には本ソフトウェアのバイナリを含むため、原則として2条項BSDライセンスとなります。
      +しかしながら、非常に使い勝手が悪くなってしまう事を鑑み、ライセンス条文の項2(以下、赤字部分)の履行は任意とします。
      +

      +

      +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution.
      +(2. バイナリを再配布する場合は、配布物の付属ドキュメント等の資料に、上記の著作権表記、本条件一覧、及び下記の免責事項を含めること。)
      +

      + +

      +但し、営利目的で、且つ、ライセンス条文の項2(上、赤字部分)を履行しない場合は、 +配布物の付属ドキュメント等の資料に、nsd.libを使用している旨、記載をお願いいたします。
      +(非営利目的の場合でも、記載して頂けると、非常にうれしいです。)
      +記載例: +

      +
        +
      • 『nsd.lib, Copyright (c) 2012 S.W. All rights reserved.』
      • +
      • 『S.W.氏のnsd.libを使用』
      • +
      • 等々
      • +
      + +

      +営利目的の例(同人活動含む): +

      +
        +
      • 金銭授受の伴うネットでのNSF配布
      • +
      • 金銭授受の伴うメディアを利用したNSF配布
      • +
      • 等々
      • +
      + +
      + +

      ライセンス条文

      English

      @@ -76,15 +128,20 @@

      English

      1. ソースコードを再配布する場合は、上記の著作表記、本条件一覧、及び下記の免責事項を含めること。
      2. -
      3. バイナリを再配布する場合は、配布物の付属ドキュメント等の資料に、上記の著作表記、本条件一覧、及び下記の免責事項を含めること。
      4. +
      5. バイナリを再配布する場合は、配布物の付属ドキュメント等の資料に、上記の著作権表記、本条件一覧、及び下記の免責事項を含めること。

      -本ソフトウェアは、著作権者およびコントリビューターによって「現状のまま」提供され、本ソフトウェアは無保証です。
      +本ソフトウェアは、著作権者および関係者によって「現状のまま」提供され、本ソフトウェアは無保証です。
      例えば、商用として十分な品質を備えている保障や、特定の目的に対して適合する保障は、ありません。
      -著作権者及びコントリビューターは、いかなる場合も、どんな賠償損害に対しても責任を負わないものとします。
      +いかなる場合においても、著作権者および関係者は、 +契約、責任や、本ソフトウェアの使用中に何らかの方法で発生する不法行為(過失またはその他を含む)に関わらず、 +そのような損害の可能性を助言したとしても、 +いかなる直接的、間接的、偶発的、特殊的、または間接的な損害(代替品またはサービスの調達、使用機会・データ・利益の損失、または事業の中断を含む) +について責任を負いません。

      +

      連絡先(Contact)

      @@ -94,18 +151,7 @@

      English

      -
      -

      なにより

      -

      -作った曲データをくれると、喜びます!
      -

      -

      -寄付大歓迎!
      -お酒やビールをおごってくれると、すごい喜びます。
      -

      -
      - - + \ No newline at end of file diff --git a/src/help/mml.html b/src/help/mml.html index b2647a8..8b84aec 100644 --- a/src/help/mml.html +++ b/src/help/mml.html @@ -70,6 +70,25 @@ NSF music formatを出力する場合は、このアドレスよりΔPCMの実体が配置されます。
      アセンブリ言語ソースを出力する場合は、リンカー"ld65.exe"のコンフィグファイルにて、 "#segmentPCM"コマンドで指定したセグメントの配置アドレスと、同じアドレスに設定して下さい。 +BGM(n){
      Sequence data
      } + n番目のBGMのシーケンスの記述ブロックです。
      + シーケンスパターンの記述は、シーケンスデータ(Sequence data)の項を参照ください。
      + 番号は0からカウントします。 +SE(n){
      Sequence data
      } + n番目のSE のシーケンスの記述ブロックです。
      + シーケンスパターンの記述は、シーケンスデータ(Sequence data)の項を参照ください。
      + 番号は0からカウントします。 +Sub(n){
      Sequence data
      } + n番のサブルーチンの記述ブロックです。
      + シーケンスパターンの記述は、シーケンスデータ(Sequence data)の項を参照ください。 +$name{
      Sequence data
      } + シーケンス用のマクロ定義です。
      nameは、`$'から、キャラクターコード0x00〜0x20の文字か`{'が来るまでをマクロ名として認識します。 +Envelope(n){
      Envelope data
      } + n番のエンベロープパターン定義の記述ブロックです。
      + エンベロープパターンの記述は、エンベロープパターン(Envelop pattern)の項を参照ください。 +Patch(n){
      Patch data
      } + n番のパッチ定義の記述ブロックです。
      + パッチ定義の記述は、パッチ定義(Patch define)の項を参照ください。 DPCM{
      Delta PCM define
      } 儕CM定義の記述ブロックです。
      儕CM定義の記述は、儕CM定義(Delta PCM define)の項を参照ください。 @@ -83,24 +102,8 @@ VRC7ユーザー音色定義の記述ブロックです。
      VRC7ユーザー音色定義の記述は、VRC7 ユーザー音色定義(VRC7 User Instrument define)の項を参照ください。 N163(n){
      wave table
      } - n163の音色波形定義の記述ブロックです。
      - n163音色波形定義の記述は、n163音色波形定義(N163 sample wave block)の項を参照ください。 -Envelop(n){
      Envelop data
      } - n番のエンベロープパターン定義の記述ブロックです。
      - エンベロープパターンの記述は、エンベロープパターン(Envelop pattern)の項を参照ください。 -Sub(n){
      Sequence data
      } - n番のサブルーチンの記述ブロックです。
      - シーケンスパターンの記述は、シーケンスデータ(Sequence data)の項を参照ください。 -BGM(n){
      Sequence data
      } - n番目のBGMのシーケンスの記述ブロックです。
      - シーケンスパターンの記述は、シーケンスデータ(Sequence data)の項を参照ください。
      - 番号は0からカウントします。 -SE(n){
      Sequence data
      } - n番目のSE のシーケンスの記述ブロックです。
      - シーケンスパターンの記述は、シーケンスデータ(Sequence data)の項を参照ください。
      - 番号は0からカウントします。 -$name{
      Sequence data
      } - シーケンス用のマクロ定義です。
      nameは、`$'から、キャラクターコード0x00〜0x20の文字か`{'が来るまでをマクロ名として認識します。 + n16x(n160,n161,n162,n163)の音色波形定義の記述ブロックです。
      + n16x音色波形定義の記述は、n16x音色波形定義(N16x sample wave block)の項を参照ください。 ;comments 1行コメントです。改行までの記述を無視します。
      (各記述ブロック内でも有効です) //comments 1行コメントです。改行までの記述を無視します。
      (各記述ブロック内でも有効です) /*comments*/ 範囲コメントです。 /* と */ の間の記述を無視します。
      (各記述ブロック内でも有効です) diff --git a/src/help/mml_N163_channel.html b/src/help/mml_N163_channel.html index 17dee08..7bbcd7b 100644 --- a/src/help/mml_N163_channel.html +++ b/src/help/mml_N163_channel.html @@ -5,7 +5,7 @@ -MML reference: N163 channel +MML reference: n16x (n160, n161, n162, n163) channel @@ -21,7 +21,7 @@
      -

      MML reference: N163 channel

      +

      MML reference: n16x (n160, n161, n162, n163) channel

      @@ -39,9 +39,6 @@

      channel

      使用するチャンネル数です。1〜8の範囲で指定してください。(Default: 不定)

      -

      -n106/n163の使い方は、別途、n106 / n163 の使い方をご参照ください。
      -

      @@ -51,6 +48,9 @@

      channel

      使用するチャンネル数を指定します。

      +

      +n16xの使い方は、別途、n16x (n160, n161, n162, n163) の使い方をご参照ください。
      +

      @@ -60,7 +60,6 @@

      channel

      また、サンプル長と、使用するチャンネル数によって音程が変動しますので、注意して下さい。
      サンプル長、使用するチャンネル数共に、2の累乗の値に設定すれば、オクターブの変化にとどまります。

      - diff --git a/src/help/mml_N163set.html b/src/help/mml_N163set.html new file mode 100644 index 0000000..b254747 --- /dev/null +++ b/src/help/mml_N163set.html @@ -0,0 +1,99 @@ + + + + + + + +MML reference: n16x (n160, n161, n162, n163) voice + + + + + + + +
      +

      MML reference: n16x (n160, n161, n162, n163) voice

      + + +
      +

      定義(Define)

      +
      +        @NSaddress(,sample)
      +
      +
      + + +
      +

      引数(Inputs)

      + +

      address

      +

      +音色波形データの先頭位置を要素数単位で指定します。
      +0〜252の範囲で、4の倍数を指定してください。
      +開始アドレスを、address÷2に設定します。
      +

      + +

      sample

      +

      +音色波形データのサンプル長を要素数単位で指定します。
      +4〜256の範囲で、4の倍数を指定してください。
      +指定の無い場合は、サンプル長を変更しません。
      +

      + + +
      + +
      +

      内容(Contents)

      +

      +n16xの波形テーブルの開始位置および、サンプル長を設定します。
      +

      +

      +n16xの使い方は、別途、n16x (n160, n161, n162, n163) の使い方をご参照ください。
      +

      + +
      + + +
      +

      注意(Notes)

      +

      +尚、エミュレータによっては、以下表の4,8,12,16,24,28,32にしか対応していませんので、注意して下さい。
      +又、サンプル長と、使用するチャンネル数によって音程が変動しますので、注意して下さい。
      +

      +

      +本コマンドは、address@コマンド、 +samplesコマンドにコンパイルします。
      +

      +
      + + +
      +

      例(Sample)

      + +
      +N163(0){	//Pipe organ
      +    8, 5, 4, 3, 8,11, 5, 8, 7, 8,11, 8, 8,12, 6,10,
      +    4, 1, 0, 1, 4,10, 5, 7, 7, 9,14,11,10,15, 9,13
      +}
      +
      +bgm(0){
      +    TR6 l4  o4  v15 @NL64,0 /* = @N16,0 */ @NS64,32 /* = @16 s56 */ t120 cdefgab> c1
      +}
      +
      + +
      + +
      + + + diff --git a/src/help/mml_N163voice.html b/src/help/mml_N163voice.html index ba96d54..931ba16 100644 --- a/src/help/mml_N163voice.html +++ b/src/help/mml_N163voice.html @@ -5,7 +5,7 @@ -MML reference: N163 Setting wave table +MML reference: n16x (n160, n161, n162, n163) Setting wave table @@ -21,13 +21,14 @@
      -

      MML reference: N163 Setting wave table

      +

      MML reference: n16x (n160, n161, n162, n163) Setting wave table

      定義(Define)

               @Naddress, n
      +        @NLsample, n
       
      @@ -37,13 +38,21 @@

      MML reference: N163 Setting wave table

      address

      -音色波形を転送するn163のアドレスに対して、2で割った値を指定します。
      -(つまり、2Byte (4サンプル) 毎です)
      +レジスタ単位で、n16xへの転送先を指定します。
      +0〜63の範囲で指定してください。
      +n16xへの転送先アドレスは、指定値の2倍の値となります。
      +

      + +

      sample

      +

      +サンプルの要素単位で、n16xへの転送先を指定します。
      +0〜252の範囲で、4の倍数を指定してください。
      +n16xへの転送先アドレスは、指定値の半分の値となります。

      n

      -N163音色波形記述ブロックの番号を指定します。
      +n16xへ転送するn16x音色波形記述ブロックの番号を指定します。

      @@ -52,10 +61,11 @@

      n

      内容(Contents)

      -n163音源の、address×2番地に、N163音色波形記述ブロック n番の音色波形を転送します。
      +n16x音源の、address×2番地、もしくは、sample÷2番地に、 +n16x音色波形記述ブロック n番の音色波形を転送します。

      -n106/n163の使い方は、別途、n106 / n163 の使い方をご参照ください。
      +n16xの使い方は、別途、n16x (n160, n161, n162, n163) の使い方をご参照ください。

      @@ -64,9 +74,9 @@

      n

      注意(Notes)

      -このコマンドは、n163のアドレス空間に音色データを転送するだけで、チャンネルの音色としての設定はしません。
      -音色の適用は、@コマンドでアドレスを指定する事で初めて適用されます。
      -また、音色のサンプル長についても、別途にsコマンドで設定する必要があります。
      +このコマンドは、n16xのアドレス空間に音色データを転送するだけで、チャンネルの音色としての設定はしません。
      +音色の適用は、@NSコマンドで、開始位置とサンプル長を指定する必要があります。
      +また、@コマンド及び、sコマンドでも可能です。
      なお、これらの設定順番は問いません。

      @@ -79,14 +89,13 @@

      n

      例(Sample)

      -
       N163(0){	//Pipe organ
      -	8, 5, 4, 3, 8,11, 5, 8, 7, 8,11, 8, 8,12, 6,10,
      -	4, 1, 0, 1, 4,10, 5, 7, 7, 9,14,11,10,15, 9,13
      +    8, 5, 4, 3, 8,11, 5, 8, 7, 8,11, 8, 8,12, 6,10,
      +    4, 1, 0, 1, 4,10, 5, 7, 7, 9,14,11,10,15, 9,13
       }
       
       bgm(0){
      -	TR6	l4	o4	v15	@N16,0	@16	t120	cdefgab> c1
      +    TR6 l4  o4  v15 @NL64,0 /* = @N16,0 */ @NS64,32 /* = @16 s56 */ t120 cdefgab> c1
       }
       
      diff --git a/src/help/mml_dpcm.html b/src/help/mml_dpcm.html index 871ea72..8efc8fd 100644 --- a/src/help/mml_dpcm.html +++ b/src/help/mml_dpcm.html @@ -83,7 +83,6 @@

      Accidentals

      + …
      ♯ Sharp
      # …
      ♯ Sharp
      - …
      ♭ Flat
      -
      = …
      ♮ Natural

      octave

      diff --git a/src/help/mml_n163.html b/src/help/mml_n163.html index 8a3c77f..8f5c213 100644 --- a/src/help/mml_n163.html +++ b/src/help/mml_n163.html @@ -5,7 +5,7 @@ -MML reference: N163 sample wave block +MML reference: n16x (n160, n161, n162, n163) sample wave block @@ -20,7 +20,7 @@
      -

      MML reference: N163 sample wave table

      +

      MML reference: n16x (n160, n161, n162, n163) sample wave table

      @@ -46,13 +46,13 @@

      MML reference: N163 sample wave table

      n

      -N163波形の番号を指定します。 +n16x波形の番号を指定します。

      define

      0〜15の数値で、音色の波形を記述してください。
      -数値は、4〜128個の範囲で4の倍数個、記述してください。。
      +数値は、4〜256個の範囲で4の倍数個、記述してください。。

      @@ -62,12 +62,11 @@

      define

      内容(Contents)

      -N163の音色波形を定義します。
      +n16xの音色波形を定義します。

      -n106/n163の使い方は、別途、n106 / n163 の使い方をご参照ください。
      +n16xの使い方は、別途、n16x (n160, n161, n162, n163) の使い方をご参照ください。

      -
      diff --git a/src/help/mml_patch.html b/src/help/mml_patch.html new file mode 100644 index 0000000..c4669f9 --- /dev/null +++ b/src/help/mml_patch.html @@ -0,0 +1,251 @@ + + + + + + + +MML reference: Patch define block + + + + + + + +
      +

      MML reference: Patch define block

      + + +
      +

      定義(Define)

      +
      +Patch(n){
      +	define
      +}
      +
      +
      + + +
      +

      引数(Inputs)

      + +

      n

      +

      +パッチ番号を指定します。 +

      + +

      define

      +

      +パッチ内容を定義します。
      +

      +

      +Table 1.の音域の定義コマンドにより、定義する音域の開始音程を指定します。
      +次に高い定義の音程の半音下までが、音域の範囲となります。
      +デフォルト(これらのコマンドが出現するまで)は、ノートナンバー0(オクターブ1のC)となります。
      +

      + + + + + + + +
      Table 1.音域の定義
      CommandContens
      nno 定義する開始音程を、指定のノートナンバーで設定します。
      + o1cが、ノートナンバー 0 となります。
      note(Accidentals)octave 定義する開始音程を、音名及びオクターブで設定します。
      + note:音名 +
      +
      a …
      A, La, ラ
      +
      b …
      H, Si, シ
      +
      c …
      C, Do, ド
      +
      d …
      D, Re, レ
      +
      e …
      E, Mi, ミ
      +
      f …
      F, Fa, ファ
      +
      g …
      G, Sol, ソ
      +
      + Accidentals:臨時記号(省略可) +
      +
      + …
      ♯ Sharp
      +
      # …
      ♯ Sharp
      +
      - …
      ♭ Flat
      +
      + octave:オクターブ +
      + +

      +Table 2.のコマンドにより、指定した音域に適用するコマンドを指定します。
      +MMLコンパイラは、シーケンス記述ブロックに指定された音域に応じて、これらのコマンドを自動で挿入します。
      +パッチ定義されなかったコマンドは、挿入しません。
      +※尚、指定数値が同じだった場合は、コマンドの自動挿入を省略します。
      +

      + + + + + + + + + + + + +
      Table 2.音域毎のコマンド定義
      CommandContens
      _n 移調を指定します。
      sn(,n) 音源固有のパラメータ(sコマンド)を指定します。
      @NSn(,n) N16xの音色・サンプル長を指定します。
      @n 音色を指定します。音色エンベロープと同時に設定することはできません。
      E@n 音色エンベロープを指定します。音色と同時に設定することはできません。
      Evn 音量エンベロープを指定します。
      Emn 音程エンベロープを指定します。
      Enn ノートエンベロープを指定します。
      Sn 呼び出すサブルーチンを指定します。
      + +
      + + +
      +

      内容(Contents)

      + +

      +指定の音域毎に、音色やエンベロープを指定します。
      +この機能により、生楽器のような、音域毎の倍音成分の違いや、エンベロープの違いを表現可能です。
      +

      +

      +また、ノイズトラック(TR4)をドラムセット化し、シーケンス記述の簡素化が可能です。
      +

      + +
      + + +
      +

      注意(Notes)

      +

      +パッチ定義に記述されたサブルーチンについては、 +呼び出したサブルーチン番号を記憶しておき、呼び出すべきサブルーチンの番号が変化したときにだけ、サブルーチン呼び出しを行います。
      +シーケンス肥大化防止のため、常にサブルーチンの挿入は行わない旨、留意してください。
      +

      +

      +パッチ定義に_コマンドを定義した場合は、シーケンスに_コマンドを挿入するため、 +それまでの_コマンド, __コマンドによる移調の値を上書きする旨、注意してください。
      +

      +

      +音域の判定は、_コマンドによる移調を計算に含めません。
      +尚、kコマンドによる移調は、計算に含めます。
      +

      +
      + + +
      +

      例(Sample)

      + +
      +#Code   "nsd_n163.bin"
      +
      +//======================================================================
      +//	Wave table for Piano
      +//======================================================================
      +
      +//Sampling = o2a
      +N163(2){
      +     8,11,14,12, 9, 9,10,10,14,15,13,10, 9,11, 7, 4,
      +     2, 3, 1, 0, 3, 6, 5, 8,10, 7, 4, 2, 3, 6, 7, 5
      +}
      +
      +//Sampling = o3a
      +N163(3){
      +     9,10,10, 9,10,12,14,15,14,12,11, 9,10,10, 9, 8,
      +     6, 4, 2, 1, 0, 1, 3, 5, 6, 5, 4, 3, 5, 7, 8, 7
      +}
      +
      +//Sampling = o4a
      +N163(4){
      +     8, 9,10,11,11,11,12,13,14,15,15,15,14,12,10, 8,
      +     6, 4, 3, 2, 1, 0, 0, 1, 2, 4, 5, 6, 6, 7, 7, 8
      +}
      +
      +//Sampling = o5a
      +N163(15){
      +     8,10,11,13,15,14,13,14,13,11, 9, 6, 2, 0, 1, 4,
      +}
      +
      +//Sampling = o6a
      +N163(16){
      +     8,11,13,14,15,14,15,13,11, 8, 5, 3, 1, 0, 2, 4,
      +}
      +
      +
      +//======================================================================
      +//	Envelope	for Piano
      +//======================================================================
      +
      +E( 0){ (15,12,6),(12,6,255) L 6 R (6,0, 72) L 0 } // o1c -
      +E( 1){ (15,12,6),(12,5,225) L 5 R (5,0, 64) L 0 } // o1a -
      +E( 2){ (15,12,5),(12,5,196) L 5 R (5,0, 56) L 0 } // o2e -
      +E( 3){ (15,12,5),(12,5,169) L 5 R (5,0, 49) L 0 } // o2a -
      +E( 4){ (15,12,5),(12,4,144) L 4 R (4,0, 42) L 0 } // o3e -
      +E( 5){ (15,12,4),(12,4,121) L 4 R (4,0, 36) L 0 } // o3a -
      +E( 6){ (15,12,4),(12,4,100) L 4 R (4,0, 30) L 0 } // o4e -
      +E( 7){ (15,12,4),(12,3, 81) L 3 R (3,0, 25) L 0 } // o4a -
      +E( 8){ (15,12,3),(12,3, 64) L 3 R (3,0, 20) L 0 } // o5e -
      +E( 9){ (15,12,3),(12,3, 49) L 3 R (3,0, 16) L 0 } // o5a -
      +E(10){ (15,12,3),(12,2, 36) L 2 R (2,0, 12) L 0 } // o6e -
      +E(11){ (15,12,2),(12,2, 25) L 2 R (2,0,  9) L 0 } // o6a -
      +E(12){ (15,12,2),(12,2, 16) L 2 R (2,0,  6) L 0 } // o7e -
      +E(13){ (15,12,1),(12,1,  9) L 1 R (1,0,  4) L 0 } // o7a -
      +E(14){ (15,12,1),(12,1,  4) L 1 R (1,0,  2) L 0 } // o8e -
      +E(15){ (15,12,1),(12,1,  1) L 1 R (1,0,  1) L 0 } // o8a -
      +
      +
      +//======================================================================
      +//  Patch
      +//======================================================================
      +
      +Patch(10){
      +
      +        @NS  0,32   _+36    Ev0	    //Range = c1 - g#1
      +    a1  @NS  0,32   _+36    Ev1	    //Range = a1 - d#2
      +    e2  @NS  0,32   _+36    Ev2	    //Range = e2 - g#2
      +    a2  @NS  0,32   _+36    Ev3	    //Range = a2 - d#3
      +
      +    e3  @NS 32,32   _+36    Ev4	    //Range = e3 - g#3
      +    a3  @NS 32,32   _+36    Ev5	    //Range = a3 - d#4
      +    e4  @NS 64,32   _+36    Ev6	    //Range = e4 - g#4
      +    a4  @NS 64,32   _+36    Ev7	    //Range = a4 - d#5
      +
      +    e5  @NS 96,16   _+24    Ev8	    //Range = e5 - g#5
      +    a5  @NS 96,16   _+24    Ev9	    //Range = a5 - d#6
      +    e6  @NS112,16   _+24    Ev10    //Range = e6 - g#6
      +    a6  @NS112,16   _+24    Ev11    //Range = a6 - d#7
      +
      +    e7  @NS112,16   _+24    Ev12    //Range = e7 - g#7
      +    a7  @NS112,16   _+24    Ev13    //Range = a7 - d#8
      +    e8  @NS112,16   _+24    Ev14    //Range = e8 - g#8
      +    a8  @NS112,16   _+24    Ev15    //Range = a8 - d#9
      +}
      +
      +//======================================================================
      +//  Sequence
      +//======================================================================
      +
      +bgm(0)
      +{
      +    t96
      +
      +    NC8	@NL  0, 2
      +        @NL 32, 3
      +        @NL 64, 4
      +        @NL 96,15
      +        @NL112,16       //n16x への転送はここで済ます。
      +
      +    TR6,7,8,9,10,11,12,13	@P10
      +
      +    TR6     l4  o4  cdefgab>c1
      +
      +}
      +
      +
      + +
      + +
      + + + diff --git a/src/help/mml_patch_seq.html b/src/help/mml_patch_seq.html new file mode 100644 index 0000000..821fdd5 --- /dev/null +++ b/src/help/mml_patch_seq.html @@ -0,0 +1,98 @@ + + + + + + + +MML reference: Patch + + + + + + + +
      +

      MML reference: Patch

      + + +
      +

      定義(Define)

      +
      +        @Pnumber
      +        @P*
      +
      +
      + + +
      +

      引数(Inputs)

      + +

      number

      +

      +パッチ定義の番号を指定します。
      +

      +

      +また、引数の替わりに`*'を指定することで、パッチ機能を無効化できます。(Default: Disable)
      +

      + +
      + +
      +

      内容(Contents)

      +

      +音域毎に、音色やエンベロープを定義することで、音域毎に音の変化を持たせることができます。 +

      +

      +例えば、ピアノでは、低音域では倍音成分が多く、音量は遅い減衰を持ち、 +高音域では倍音成分が少なく、音量は早い減衰を持ちます。 +このような音域毎の音の変化を、自動で処理するための機能です。 +

      +
      + + +
      +

      注意(Notes)

      +

      +パッチ機能は、MMLコンパイラの疑似命令となります。
      +MMLコンパイラ側で展開するため、コンパイル後のシーケンスサイズが大きくなる可能性があります。 +

      +

      +リピートや無限ループする場合は、オクターブを1回目のオクターブに戻してください。
      +リピートコマンドや、無限ループコマンドによってオクターブが変わってリピート、ループする場合、 +2回目以降のリピートも、1回目のリピート、ループ時のオクターブの音域としてパッチが処理されます。
      +

      +

      +サブルーチンを使用する場合、サブルーチン側でもパッチを設定してください。
      +サブルーチン先では、サブルーチン元のパッチは適用されません。
      +又、サブルーチンにてパッチ機能を使う場合は、パッチ定義サブルーチン呼出しを記述することはできません。
      +(サブルーチンのネスティングはできません)
      +

      +

      +サブルーチンでパッチ機能を使用する場合、 +サブルーチンコマンドが定義されたパッチ定義を使う事はできません。
      +

      +
      + + +
      +

      例(Sample)

      + +

      +パッチ定義を参照願います。 +

      + +
      + +
      + + + diff --git a/src/help/mml_sequence.html b/src/help/mml_sequence.html index 4eb5c03..143dbec 100644 --- a/src/help/mml_sequence.html +++ b/src/help/mml_sequence.html @@ -88,7 +88,7 @@

      sequence

      s APU : スイープ
      FDS : Sweep (Modulator) bias
      VRC7 : サスティン
      - n163 : 波形長設定
      + n16x : 波形長設定
      Sunsoft 5B : Envelop Switch & Type tテンポ t_相対テンポ @@ -108,7 +108,7 @@

      sequence

      K{}調号の指定(自動臨時記号) Scale()
      Mode()
      Major
      Minor
      MMinor
      HMinor
      旋法・スケールの指定(自動臨時記号) L無限ループ(サブルーチンの記述ブロック内では無効) -NCn163 チャンネル数設定 +NCn16x(n160,n161,n162,n163) チャンネル数設定 Pポルタメント {}ポルタメント2 R@Key off時の音色 @@ -118,12 +118,14 @@

      sequence

      SE効果音呼び出し TRトラック(サブルーチンの記述ブロック内では無効です) @音色(音色エンベロープ無効) +@P音色パッチ @FCFDS キャリア波形設定 @FMFDS モジュレータ波形設定 @FFFDS モジュレータ周波数設定 @FVFDS マスター音量設定 @VVRC7ユーザー音色設定 -@Nn163 波形設定 +@N
      @NL
      n16x(n160,n161,n162,n163) 波形転送(ロード) +@NSn16x(n160,n161,n162,n163) 波形設定&サンプル長指定 [ : ]リピート(A) |: \ :|リピート(B) <オクターブ−1 diff --git a/src/help/mml_voice.html b/src/help/mml_voice.html index 1156bb8..474bc25 100644 --- a/src/help/mml_voice.html +++ b/src/help/mml_voice.html @@ -62,7 +62,7 @@

      voice

      48〜63 … ユーザ音色ML(C) (48を減算した値)
      64〜127 … ユーザ音色TL (64を減算した値)
      MMC5
      0〜3 (0=12.5% / 1=25% / 2=50% / 3=75%)
      -
      N168
      0〜63 (指定数値の2倍のアドレスを音色波形にします。)
      +
      N16x
      0〜63 (指定数値の2倍のアドレスを音色波形にします。)
      Sunsoft 5B
      0〜31 … ノイズ(値はノイズの周期です)
      32〜63 … トーン&ノイズ(値はノイズの周期です)
      64 … トーン
      @@ -78,8 +78,8 @@

      voice

      2A03の三角波では、音色指定はできません。

      -n163音源では、必ずsコマンドにより指定したアドレスに転送されている波形テーブルの波形長を設定して下さい。
      -n106/n163の使い方は、別途、n106 / n163 の使い方をご参照ください。
      +n16x (n160, n161, n162, n163) の場合は、別途@NSコマンドにて、サンプル長と同時に音色を選択可能です。
      +n16xの使い方は、別途、n16x (n160, n161, n162, n163) の使い方をご参照ください。

      diff --git a/src/help/n163.html b/src/help/n163.html index fc1f732..463c548 100644 --- a/src/help/n163.html +++ b/src/help/n163.html @@ -5,7 +5,7 @@ -n106 / n163 の使い方 +n16x (n160, n161, n162, n163) の使い方 @@ -20,57 +20,73 @@
      -

      n106 / n163 の使い方

      +

      n16x (n160, n161, n162, n163) の使い方

      アドレス空間について

      -n106 / n163のアドレス表を以下に示します。
      -n163音色波形定義ブロックで定義した音色波形は、 -@Nコマンドで任意のアドレスに転送して用います。
      +n16xのアドレス表を以下に示します。
      +n16x音色波形定義ブロックで定義した音色波形は、 +@Nコマンド、@NLコマンドで任意のアドレスに転送して用います。

      $00〜$3Fの64byte(128サンプル分)の領域は、常に音色波形テーブルとして使用する事ができます。
      -有効チャンネル数に応じて、ch1〜ch7の制御レジスタの領域を、音色波形テーブルとして使うことができます。
      -例えば、有効チャンネル数が3の場合はch6〜ch8がチャンネル制御レジスタとして用いられ、ch1〜ch5の領域は音色波形テーブルの領域として使用可能です。
      +$40〜$77の56byte(112サンプル分)の領域は、ch2〜ch8の制御レジスタの領域と共用であり、 +有効チャンネル数に応じて、音色波形テーブルとして使うことができます。
      +例えば、有効チャンネル数が3の場合はch1〜ch3がチャンネル制御レジスタとして用いられ、 +ch4〜ch8の領域(アドレス$40〜$67)の40Byte(80サンプル分)は音色波形テーブルの領域として使用可能です。

      サンプルの量子化は4bit(0〜15の範囲)であり、1byteの領域に2サンプルをリトルエンディアンで格納します。

      - + - + - - - - + + + +
      n106 / n163 address (register) tablen16x address (register) table
      $00$01$02$03$04$05$06$07$08$09$0A$0B$0C$0D$0E$0F
      $00Voice wave table (64 byte)
      $00Voice wave table (64 byte / 128 sample)
      $10
      $20
      $30
      $40ch1 control register (8 byte)ch2 control register (8 byte)
      $50ch3 control register (8 byte)ch4 control register (8 byte)
      $60ch5 control register (8 byte)ch6 control register (8 byte)
      $70ch7 control register (8 byte)ch8 control register (8 byte)
      $40ch8 control register (8 byte / 16 sample)ch7 control register (8 byte / 16 sample)
      $50ch6 control register (8 byte / 16 sample)ch5 control register (8 byte / 16 sample)
      $60ch4 control register (8 byte / 16 sample)ch3 control register (8 byte / 16 sample)
      $70ch2 control register (8 byte / 16 sample)ch1 control register (8 byte)

      音色設定方法

      -n106 / n163の音色関連のコマンドは、以下の3つのコマンドがあります。
      -この3つのコマンドにて音色を設定して、始めてその音色を奏でることができます(順は問いません)。
      +n16xの音色関連のコマンドは、以下のコマンドがあります。
      +これらのコマンドにて音色を設定して、始めてその音色を奏でることができます(ロードと選択の順は問いません)。
      何れのコマンドにおいても、上述のアドレス表が大きく関係します。

      + +

      波形テーブルのロード

      +

      +音色波形を、n16xに転送(ロード)するコマンドです。
      +

      +
      +
      @NLa,n
      a÷2のアドレス(要素数単位指定)を先頭に、N163(n){}ブロックで定義した音色波形をロードします。
      +
      @Na,n
      a×2のアドレス(レジスタ単位指定)を先頭に、N163(n){}ブロックで定義した音色波形をロードします。
      +
      +

      波形テーブル・サンプル長の選択

      +

      +ロードされている音色波形を選択するコマンドです。
      +

      -
      @Nn
      n×2のアドレスを先頭に、N163(){}ブロックで定義した音色波形をロードします。
      -
      @n
      … トラックに適用する音色波形データのある先頭アドレスを、n×2に設定します。
      -
      sn
      … トラックに適用する音色のサンプル長を、(64−n)×4サンプルに設定します。
      +
      @NSa(,s)
      … トラックに適用する音色波形データのある先頭アドレスをa÷2に設定し、
      + 同時に、トラックに適用する音色のサンプル長を、sサンプルに設定します。
      +
      @a
      … トラックに適用する音色波形データのある先頭アドレスをa×2に設定します。
      +
      ss
      … トラックに適用する音色のサンプル長を、(64−s)×4サンプルに設定します。

      音程の変動量について

      -n106 / n163は、設定された有効チャンネル数及びサンプル長により、発音される音程が変動します。
      +n16xは、設定された有効チャンネル数及びサンプル長により、発音される音程が変動します。
      有効チャンネル数とサンプル長による、音程の変動量を以下表に示します。
      数値は、半音単位です。100倍すればcent単位になります。

      @@ -85,13 +101,13 @@

    -n106 / n163が発音可能な音程(実音)は o8a から、以下表の変動量を加算した値です。
    +n16xが発音可能な音程(実音)は o8a から、以下表の変動量を加算した値です。
    (MMLの指定上で、音階、移調、ディチューン、エンベロープの分を含めて、o8aまでです)。
    例えば、使用チャンネル数が8、サンプル長が128(64byte)の場合は、-48半音、つまり4オクターブ下のo4aまでとなります。

    - + diff --git a/src/help/nsdl.chm b/src/help/nsdl.chm index f5f6e6d..84c1b2e 100644 Binary files a/src/help/nsdl.chm and b/src/help/nsdl.chm differ diff --git a/src/help/nsdl.chw b/src/help/nsdl.chw index 941a224..0e350d3 100644 Binary files a/src/help/nsdl.chw and b/src/help/nsdl.chw differ diff --git a/src/help/nsdl.hhc b/src/help/nsdl.hhc index ff33915..cc9ba8e 100644 --- a/src/help/nsdl.hhc +++ b/src/help/nsdl.hhc @@ -215,6 +215,10 @@ +
  • + + +
  • @@ -232,7 +236,7 @@
  • - +
  • @@ -277,7 +281,7 @@
  • - +
  • @@ -329,7 +333,7 @@
  • - +
  • @@ -368,6 +372,10 @@ +
  • + + +
  • @@ -389,9 +397,13 @@
  • - + +
  • + + +
  • @@ -428,7 +440,7 @@
  • - + diff --git a/src/help/nsdl.hhk b/src/help/nsdl.hhk index a888421..d3fef65 100644 --- a/src/help/nsdl.hhk +++ b/src/help/nsdl.hhk @@ -69,9 +69,24 @@
  • - + +
  • + + + + +
  • + + + + +
  • + + + +
  • @@ -142,16 +157,16 @@ -
  • - - - -
  • +
  • + + + +
  • @@ -212,16 +227,16 @@ -
  • - - - -
  • +
  • + + + +
  • @@ -262,16 +277,16 @@ -
  • - - - -
  • +
  • + + + +
  • @@ -302,19 +317,24 @@ +
  • + + + +
  • - +
  • - - + +
  • - +
  • @@ -398,12 +418,19 @@
  • - + + + + + + +
  • +
  • - + @@ -427,16 +454,16 @@ -
  • - - - -
  • +
  • + + + +
  • @@ -546,6 +573,13 @@ +
  • + + + + + +
  • diff --git a/src/help/nsdl.hhp b/src/help/nsdl.hhp index 7b4fb27..0af942a 100644 --- a/src/help/nsdl.hhp +++ b/src/help/nsdl.hhp @@ -58,6 +58,8 @@ mml_loop.html mml_note.html mml_octave.html mml_poke.html +mml_patch.html +mml_patch_seq.html mml_portamento.html mml_portamento2.html mml_relative_octave.html @@ -80,6 +82,7 @@ mml_VRC7voice.html mml_VRC7write.html mml_N163.html mml_N163voice.html +mml_N163set.html mml_N163_channel.html mml_s5b_envelope.html mml_macro.html diff --git a/src/help/revision.html b/src/help/revision.html index 28133cd..4146232 100644 --- a/src/help/revision.html +++ b/src/help/revision.html @@ -25,6 +25,16 @@

  • n106 / n163 sample length and pitch shift value by a numbers of enable channels.n16x sample length and pitch shift value by a numbers of enable channels.
    s Sample A number of enable channels
    lengthsbytes12 3 4 5 6 7 8
    63 4 2 48.00 36.00 28.98 24.00 20.14 16.98 14.31 12.00
    + + + - - - - - - - - + + + + + + + + - +
    ヴァージョン内容改定日
    1.19●MMLコンパイラ
    + ・パッチ機能を実装した。
    +  それに伴い、Patch(){}コマンド(パッチ記述ブロック)、@P、@P*コマンドを実装した。
    + ・要素数単位で指定可能なn16x音色波形転送(ロード)コマンド(@NLコマンド)を実装した。
    + ・要素数単位で指定可能なn16x音色波形&サンプル長指定コマンド(@NSコマンド)を実装した。
    + ・未使用のサブルーチンがある場合に、最適化の過程で例外が発生することがあるバグをFixした。
    + ●取扱説明書
    + ・n16xに関する説明文・記述を見直した。
    2014年 7月 4日
    1.18 ●MMLコンパイラ
    ・未使用のエンベロープ、音色、サブルーチンはコンパイルしないようにし、出力サイズを軽減するようにした。
    diff --git a/src/help/spec.html b/src/help/spec.html index e81420b..840d3e0 100644 --- a/src/help/spec.html +++ b/src/help/spec.html @@ -184,18 +184,18 @@

    nsd_mmc5.lib / nsd_mmc5.bin

    nsd_n163.lib / nsd_n163.bin

    -内蔵音源(APU)および、n163の音源部に対応しています。
    +内蔵音源(APU)および、n16x(n160,n161,n162,n163)の音源部に対応しています。

    - - - - - - - - + + + + + + + +
    トラック音源
    TR6 N163(波形メモリ音源) ch8
    TR7 N163(波形メモリ音源) ch7
    TR8 N163(波形メモリ音源) ch6
    TR9 N163(波形メモリ音源) ch5
    TR10 N163(波形メモリ音源) ch4
    TR11 N163(波形メモリ音源) ch3
    TR12 N163(波形メモリ音源) ch2
    TR13 N163(波形メモリ音源) ch1
    TR6 n16x(波形メモリ音源) ch8
    TR7 n16x(波形メモリ音源) ch7
    TR8 n16x(波形メモリ音源) ch6
    TR9 n16x(波形メモリ音源) ch5
    TR10 n16x(波形メモリ音源) ch4
    TR11 n16x(波形メモリ音源) ch3
    TR12 n16x(波形メモリ音源) ch2
    TR13 n16x(波形メモリ音源) ch1
    @@ -203,7 +203,7 @@

    nsd_n163.lib / nsd_n163.bin

    nsd_s5b.lib / nsd_s5b.bin

    -内蔵音源(APU)および、n163の音源部に対応しています。
    +内蔵音源(APU)および、sunsoft 5bの音源部に対応しています。

    @@ -285,18 +285,18 @@

    nsd_opll.lib / nsd_opll.bin

    - - - - - - - - + + + + + + + + - +
    トラック音源
    TR14 VRC7(FM音源) ch6
    TR15 MMC5 パルス波 ch1
    TR16 MMC5 パルス波 ch2
    TR17 N163(波形メモリ音源) ch8
    TR18 N163(波形メモリ音源) ch7
    TR19 N163(波形メモリ音源) ch6
    TR20 N163(波形メモリ音源) ch5
    TR21 N163(波形メモリ音源) ch4
    TR22 N163(波形メモリ音源) ch3
    TR23 N163(波形メモリ音源) ch2
    TR24 N163(波形メモリ音源) ch1
    TR17 n16x(波形メモリ音源) ch8
    TR18 n16x(波形メモリ音源) ch7
    TR19 n16x(波形メモリ音源) ch6
    TR20 n16x(波形メモリ音源) ch5
    TR21 n16x(波形メモリ音源) ch4
    TR22 n16x(波形メモリ音源) ch3
    TR23 n16x(波形メモリ音源) ch2
    TR24 n16x(波形メモリ音源) ch1
    TR25 Sunsoft 5B ch1
    TR26 Sunsoft 5B ch2
    TR27 Sunsoft 5B ch3
    TR28 制御用トラックです(音符は発音しません)。
    曲全体のコマンド(テンポや、VRC7, n163の音色設定等)を記述できます。
    TR28 制御用トラックです(音符は発音しません)。
    曲全体のコマンド(テンポや、VRC7, n16xの音色設定等)を記述できます。
    @@ -330,18 +330,18 @@

    nsd_opll.lib / nsd_opll.bin

    TR15 VRC7(FM音源) ch6
    TR16 MMC5 パルス波 ch1
    TR17 MMC5 パルス波 ch2
    TR18 N163(波形メモリ音源) ch8
    TR19 N163(波形メモリ音源) ch7
    TR20 N163(波形メモリ音源) ch6
    TR21 N163(波形メモリ音源) ch5
    TR22 N163(波形メモリ音源) ch4
    TR23 N163(波形メモリ音源) ch3
    TR24 N163(波形メモリ音源) ch2
    TR25 N163(波形メモリ音源) ch1
    TR18 n16x(波形メモリ音源) ch8
    TR19 n16x(波形メモリ音源) ch7
    TR20 n16x(波形メモリ音源) ch6
    TR21 n16x(波形メモリ音源) ch5
    TR22 n16x(波形メモリ音源) ch4
    TR23 n16x(波形メモリ音源) ch3
    TR24 n16x(波形メモリ音源) ch2
    TR25 n16x(波形メモリ音源) ch1
    TR26 Sunsoft 5B ch1
    TR27 Sunsoft 5B ch2
    TR28 Sunsoft 5B ch3
    TR29 制御用トラックです(音符は発音しません)。
    曲全体のコマンド(テンポや、VRC7, n163の音色設定等)を記述できます。
    TR29 制御用トラックです(音符は発音しません)。
    曲全体のコマンド(テンポや、VRC7, n16xの音色設定等)を記述できます。
    @@ -381,18 +381,18 @@

    nsd_oall.bin

    TR22 OPLL Rhythm Tom Tom (Rhythmが無効な時は、デバイス出力しません) TR23 MMC5 パルス波 ch1 TR24 MMC5 パルス波 ch2 -TR25 N163(波形メモリ音源) ch8 -TR26 N163(波形メモリ音源) ch7 -TR27 N163(波形メモリ音源) ch6 -TR28 N163(波形メモリ音源) ch5 -TR29 N163(波形メモリ音源) ch4 -TR30 N163(波形メモリ音源) ch3 -TR31 N163(波形メモリ音源) ch2 -TR32 N163(波形メモリ音源) ch1 +TR25 n16x(波形メモリ音源) ch8 +TR26 n16x(波形メモリ音源) ch7 +TR27 n16x(波形メモリ音源) ch6 +TR28 n16x(波形メモリ音源) ch5 +TR29 n16x(波形メモリ音源) ch4 +TR30 n16x(波形メモリ音源) ch3 +TR31 n16x(波形メモリ音源) ch2 +TR32 n16x(波形メモリ音源) ch1 TR33 Sunsoft 5B ch1 TR34 Sunsoft 5B ch2 TR35 Sunsoft 5B ch3 -TR36 制御用トラックです(音符は発音しません)。
    曲全体のコマンド(テンポや、VRC7, n163の音色設定等)を記述できます。 +TR36 制御用トラックです(音符は発音しません)。
    曲全体のコマンド(テンポや、VRC7, n16xの音色設定等)を記述できます。 @@ -434,18 +434,18 @@

    nsd_hfx4.bin

    TR29 OPLL Rhythm Tom Tom (Rhythmが無効な時は、デバイス出力しません) TR30 MMC5 パルス波 ch1 TR31 MMC5 パルス波 ch2 -TR32 N163(波形メモリ音源) ch8 -TR33 N163(波形メモリ音源) ch7 -TR34 N163(波形メモリ音源) ch6 -TR35 N163(波形メモリ音源) ch5 -TR36 N163(波形メモリ音源) ch4 -TR37 N163(波形メモリ音源) ch3 -TR38 N163(波形メモリ音源) ch2 -TR39 N163(波形メモリ音源) ch1 +TR32 n16x(波形メモリ音源) ch8 +TR33 n16x(波形メモリ音源) ch7 +TR34 n16x(波形メモリ音源) ch6 +TR35 n16x(波形メモリ音源) ch5 +TR36 n16x(波形メモリ音源) ch4 +TR37 n16x(波形メモリ音源) ch3 +TR38 n16x(波形メモリ音源) ch2 +TR39 n16x(波形メモリ音源) ch1 TR40 Sunsoft 5B ch1 TR41 Sunsoft 5B ch2 TR42 Sunsoft 5B ch3 -TR43 制御用トラックです(音符は発音しません)。
    曲全体のコマンド(テンポや、n163の音色設定等)を記述できます。 +TR43 制御用トラックです(音符は発音しません)。
    曲全体のコマンド(テンポや、n16xの音色設定等)を記述できます。

    @VコマンドによるFM音源のユーザー音色の設定は、TR15以前に記述した場合はVRC7へ設定、TR16以降に記述した場合はOPLLへ設定します。
    diff --git a/src/nsc/BGM.h b/src/nsc/BGM.h index 21ba222..99dab62 100644 --- a/src/nsc/BGM.h +++ b/src/nsc/BGM.h @@ -10,7 +10,7 @@ class BGM : public TrackSet { public: - BGM(MMLfile* MML, unsigned int _id, const wchar_t _strName[] = L"==== [ BGM ]===="); + BGM(MMLfile* MML, unsigned int _id, const wchar_t _strName[] = L"BGM"); ~BGM(void); void getAsm(MusicFile* MUS); }; diff --git a/src/nsc/DPCM.cpp b/src/nsc/DPCM.cpp index 96076da..2f80eda 100644 --- a/src/nsc/DPCM.cpp +++ b/src/nsc/DPCM.cpp @@ -13,6 +13,7 @@ //============================================================== DPCM::DPCM(FileInput* DPCMfile, unsigned int _id, const wchar_t _strName[]): MusicItem(_strName), + f_Use(false), m_id(_id) { //---------------------- diff --git a/src/nsc/DPCM.h b/src/nsc/DPCM.h index 0233a27..a8df80a 100644 --- a/src/nsc/DPCM.h +++ b/src/nsc/DPCM.h @@ -12,6 +12,7 @@ class DPCM : //メンバー変数 private: unsigned int m_id; + bool f_Use; //MML中で使われるか? unsigned char _DPCM_size; //static const Command_Info Command[]; //コマンドの情報 diff --git a/src/nsc/Envelop.cpp b/src/nsc/Envelop.cpp index 1ad9dfa..f210fc1 100644 --- a/src/nsc/Envelop.cpp +++ b/src/nsc/Envelop.cpp @@ -12,7 +12,7 @@ // 無し //============================================================== Envelop::Envelop(MMLfile* MML, unsigned int _id, const wchar_t _strName[]): - MusicItem(_strName), + MusicItem(_id, _strName), f_Use(false), m_id(_id) { diff --git a/src/nsc/Envelop.h b/src/nsc/Envelop.h index e1b2479..a29a6fb 100644 --- a/src/nsc/Envelop.h +++ b/src/nsc/Envelop.h @@ -23,11 +23,11 @@ class Envelop : //メンバー関数 public: - Envelop(MMLfile* MML, unsigned int _id, const wchar_t _strName[] = L"==== [ Envelop ]===="); + Envelop(MMLfile* MML, unsigned int _id, const wchar_t _strName[] = L"Envelope"); ~Envelop(void); void setHold(int length); void sweep(MMLfile* MML); - void getAsm(MusicFile* MUS); void setUse(void){f_Use = true;}; bool chkUse(void){return(f_Use);}; + void getAsm(MusicFile* MUS); }; diff --git a/src/nsc/FDSC.cpp b/src/nsc/FDSC.cpp index f9f2316..2a1b06e 100644 --- a/src/nsc/FDSC.cpp +++ b/src/nsc/FDSC.cpp @@ -12,7 +12,7 @@ // 無し //============================================================== FDSC::FDSC(MMLfile* MML, unsigned int _id, const wchar_t _strName[]): - MusicItem(_strName), + MusicItem(_id, _strName), f_Use(false), m_id(_id) { diff --git a/src/nsc/FDSC.h b/src/nsc/FDSC.h index 4684902..6bb308d 100644 --- a/src/nsc/FDSC.h +++ b/src/nsc/FDSC.h @@ -18,9 +18,9 @@ class FDSC : //メンバー関数 public: - FDSC(MMLfile* MML, unsigned int _id, const wchar_t _strName[] = L"==== [ FDSC ]===="); + FDSC(MMLfile* MML, unsigned int _id, const wchar_t _strName[] = L"FDSC"); ~FDSC(void); - void getAsm(MusicFile* MUS); void setUse(void){f_Use = true;}; bool chkUse(void){return(f_Use);}; + void getAsm(MusicFile* MUS); }; diff --git a/src/nsc/FDSM.cpp b/src/nsc/FDSM.cpp index 4aba5ce..1005c57 100644 --- a/src/nsc/FDSM.cpp +++ b/src/nsc/FDSM.cpp @@ -12,7 +12,7 @@ // 無し //============================================================== FDSM::FDSM(MMLfile* MML, unsigned int _id, const wchar_t _strName[]): - MusicItem(_strName), + MusicItem(_id, _strName), f_Use(false), m_id(_id) { diff --git a/src/nsc/FDSM.h b/src/nsc/FDSM.h index 9a41d2d..4d9e53b 100644 --- a/src/nsc/FDSM.h +++ b/src/nsc/FDSM.h @@ -18,9 +18,9 @@ class FDSM : //メンバー関数 public: - FDSM(MMLfile* MML, unsigned int _id, const wchar_t _strName[] = L"==== [ FDSM ]===="); + FDSM(MMLfile* MML, unsigned int _id, const wchar_t _strName[] = L"FDSM"); ~FDSM(void); - void getAsm(MusicFile* MUS); void setUse(void){f_Use = true;}; bool chkUse(void){return(f_Use);}; + void getAsm(MusicFile* MUS); }; diff --git a/src/nsc/MMLfile.cpp b/src/nsc/MMLfile.cpp index bc86e3d..994874c 100644 --- a/src/nsc/MMLfile.cpp +++ b/src/nsc/MMLfile.cpp @@ -27,9 +27,8 @@ MMLfile::MMLfile(const char* strFileName): wait(0), QMax(8), priority(0), -// f_macro(false), p_macro(0), - f_macro2(false), + f_macro(false), f_2to1(false) { //File open @@ -54,10 +53,14 @@ MMLfile::~MMLfile(void) //---------------------- //Local変数 - vector ::iterator itFiles; + vector ::iterator itFiles; + map ::iterator itMac; + map ::iterator itPatch; //---------------------- //Delete Class + + //開いたファイルを全部閉じる itFiles = ptcFiles.begin(); while(itFiles != ptcFiles.end()){ (*itFiles)->close(); @@ -66,6 +69,26 @@ MMLfile::~MMLfile(void) } ptcFiles.clear(); + //マクロを全部解放する。 + if(!ptcMac.empty()){ + itMac = ptcMac.begin(); + while(itMac != ptcMac.end()){ + itMac->second.clear(); + itMac++; + } + ptcMac.clear(); + } + + //パッチを全部解放する。 + if(!ptcPatch.empty()){ + itPatch = ptcPatch.begin(); + while(itPatch != ptcPatch.end()){ + delete itPatch->second; + itPatch++; + } + ptcPatch.clear(); + } + } //============================================================== @@ -276,6 +299,52 @@ void MMLfile::CallMacro(void) delete[] strMac; } +//============================================================== +// パッチの設定 +//-------------------------------------------------------------- +// ●引数 +// 無し +// ●返値 +// 無し +// ●処理 +// 現在のファイルポインタに書いてあるマクロを定義する。 +//============================================================== +void MMLfile::SetPatch(void) +{ + + int i = GetNum(); + + //重複チェック + if(ptcPatch.count(i) != 0){ + Err(L"Patch()ブロックで同じ番号が指定されました。"); + } + + ptcPatch[i] = new Patch(this, i); + +} + +//============================================================== +// パッチの有無チェック +//-------------------------------------------------------------- +// ●引数 +// unsigned int _no パッチ番号 +// ●返値 +// bool あるかどうか +// ●処理 +// +//============================================================== +bool MMLfile::ChkPatch(unsigned int _no) +{ + bool result; + + if(ptcPatch.count(_no) == 0){ + result = false; + } else { + result = true; + } + return(result); +} + //============================================================== // 現在コンパイル処理中のファイルポインタの取得 //-------------------------------------------------------------- @@ -324,8 +393,8 @@ void MMLfile::StreamPointerMove(long iSize) //============================================================== void MMLfile::Back_one(void) { - if(f_macro2 == true){ - f_macro2 = false; + if(f_macro == true){ + f_macro = false; if(p_macro > 0){ s_macro[p_macro-1].name = nowMacro.name; s_macro[p_macro-1].line = nowMacro.line; @@ -342,11 +411,12 @@ void MMLfile::Back_one(void) } } } + void MMLfile::Back(void) { if(f_2to1==true){ Back_one(); - Back_one(); + Back_one(); //前回の読み込みがマルチバイト文字だったら、2つ戻す。 } else { Back_one(); } @@ -365,8 +435,8 @@ char MMLfile::read_char(void) { char cData; - if(f_macro2 == true){ - f_macro2 = false; + if(f_macro == true){ + f_macro = false; s_macro.pop_back(); } if(p_macro > 0){ @@ -376,7 +446,7 @@ char MMLfile::read_char(void) s_macro[p_macro-1].name = nowMacro.name; s_macro[p_macro-1].line = nowMacro.line; p_macro--; - f_macro2 = true; + f_macro = true; if(p_macro > 0){ nowMacro.name = s_macro[p_macro-1].name; nowMacro.line = s_macro[p_macro-1].line; diff --git a/src/nsc/MMLfile.h b/src/nsc/MMLfile.h index 8c0f501..51c0b16 100644 --- a/src/nsc/MMLfile.h +++ b/src/nsc/MMLfile.h @@ -24,15 +24,17 @@ class MMLfile // : FileInput* nowFile; //現在のファイル unsigned int iFiles; //現在のファイルNo. - map < string, string> ptcMac; //Macro文字列の保存 + map < string, string> ptcMac; //Macro文字列の保存 vector < Macro_Stack > s_macro; //ネスト中のマクロ名スタック Macro_Stack nowMacro; int p_macro; //何ネスト目? - bool f_macro2; //マクロ展開中? - bool f_2to1; //変換した? + bool f_macro; //マクロ処理を終えた時に立つフラグ + bool f_2to1; //マルチバイト文字を変換した? public: + map ptcPatch; //Patch + int offset_Ei; // int offset_Ev; // int offset_En; // @@ -60,6 +62,9 @@ class MMLfile // : void CallMacro(void); int GetMacroNest(void){return(p_macro);}; + void SetPatch(void); + bool ChkPatch(unsigned int _no); + int tellg(void); //現在のファイルのポインタ取得 void StreamPointerMove(long iSize); //現在のファイルのポインタ移動 void Back_one(void); //1文字戻し diff --git a/src/nsc/MusicFile.cpp b/src/nsc/MusicFile.cpp index 312d171..eb99d8a 100644 --- a/src/nsc/MusicFile.cpp +++ b/src/nsc/MusicFile.cpp @@ -70,6 +70,7 @@ enum Command_ID_MusicFile { id_Sub, id_BGM, id_SE, + id_Patch, id_Null }; @@ -163,6 +164,7 @@ const static Command_Info Command[] = { { "SE", id_SE }, { "se", id_SE }, { "効果音", id_SE }, + { "Patch", id_Patch }, //for 1 command { "D", id_DPCM }, @@ -313,6 +315,12 @@ const static Command_Info Command[] = { MML->Err(L"#Waitコマンドは、0〜2の範囲で指定してください。"); } break; + case(id_Macro): + MML->SetMacro(); + break; + case(id_Patch): + MML->SetPatch(); + break; //MML case(id_DPCM): if(cDPCMinfo != NULL){ @@ -393,9 +401,6 @@ const static Command_Info Command[] = { ptcEnv[i] = _env; iSize += _env->getSize(); //BGMのサイズを更新 break; - case(id_Macro): - MML->SetMacro(); - break; case(id_Sub): i = MML->GetNum(); //重複チェック @@ -582,7 +587,7 @@ void MusicFile::Optimize(void) itSub->second->Optimize(this); } else { //使わないサブルーチンであれば、オブジェクト削除。 - itSub->second->clear(); + itSub->second->clear(itSub->first); } itSub++; } @@ -594,7 +599,7 @@ void MusicFile::Optimize(void) while(itEnv != ptcEnv.end()){ if(itEnv->second->chkUse() == false){ //使わないサブルーチンであれば、オブジェクト削除。 - itEnv->second->clear(); + itEnv->second->clear(itEnv->first); } itEnv++; } @@ -606,7 +611,7 @@ void MusicFile::Optimize(void) while(itFDSC != ptcFDSC.end()){ if(itFDSC->second->chkUse() == false){ //使わないサブルーチンであれば、オブジェクト削除。 - itFDSC->second->clear(); + itFDSC->second->clear(itFDSC->first); } itFDSC++; } @@ -618,7 +623,7 @@ void MusicFile::Optimize(void) while(itFDSM != ptcFDSM.end()){ if(itFDSM->second->chkUse() == false){ //使わないサブルーチンであれば、オブジェクト削除。 - itFDSM->second->clear(); + itFDSM->second->clear(itFDSM->first); } itFDSM++; } @@ -630,7 +635,7 @@ void MusicFile::Optimize(void) while(itVRC7 != ptcVRC7.end()){ if(itVRC7->second->chkUse() == false){ //使わないサブルーチンであれば、オブジェクト削除。 - itVRC7->second->clear(); + itVRC7->second->clear(itVRC7->first); } itVRC7++; } @@ -642,7 +647,7 @@ void MusicFile::Optimize(void) while(itN163 != ptcN163.end()){ if(itN163->second->chkUse() == false){ //使わないサブルーチンであれば、オブジェクト削除。 - itN163->second->clear(); + itN163->second->clear(itN163->first); } itN163++; } @@ -667,16 +672,11 @@ void MusicFile::Fix_Address(void) while(iBGM < Header.iBGM){ - if(cOptionSW->cDebug & 0x04){ - wcout << L"Fix_Address [BGM(" << iBGM << ")] : " << strName << endl; - } ptcBGM[iBGM]->Fix_Address(this); iBGM++; } + while(iSE < Header.iSE){ - if(cOptionSW->cDebug & 0x04){ - wcout << L"Fix_Address [SE(" << iSE << ")] : " << strName << endl; - } ptcSE[iSE]->Fix_Address(this); iSE++; } @@ -684,13 +684,7 @@ void MusicFile::Fix_Address(void) if(!ptcSub.empty()){ itSub = ptcSub.begin(); while(itSub != ptcSub.end()){ - //サブルーチンを使っている場合に、Fixする - if(itSub->second->chkUse() == true){ - if(cOptionSW->cDebug & 0x04){ - wcout << L"Fix_Address [Sub(" << itSub->first << ")] : " << strName << endl; - } - itSub->second->Fix_Address(this); - } + itSub->second->Fix_Address(this); itSub++; } } diff --git a/src/nsc/MusicFile.h b/src/nsc/MusicFile.h index ed82a34..c1a3448 100644 --- a/src/nsc/MusicFile.h +++ b/src/nsc/MusicFile.h @@ -38,6 +38,7 @@ class MusicFile : //メンバー変数 public: MusicHeader Header; //Header + map< int, FDSC* > ptcFDSC; //FDS wave table (career) map< int, FDSM* > ptcFDSM; //FDS wave table (modulator) map< int, VRC7* > ptcVRC7; //VRC7 User Instrument @@ -50,8 +51,8 @@ class MusicFile : private: //static const Command_Info Command[]; - string dpcm_code; - unsigned int nsf_size; + string dpcm_code; + unsigned int nsf_size; //メンバー関数 public: diff --git a/src/nsc/MusicItem.cpp b/src/nsc/MusicItem.cpp index e208b1e..6719738 100644 --- a/src/nsc/MusicItem.cpp +++ b/src/nsc/MusicItem.cpp @@ -16,6 +16,7 @@ //============================================================== MusicItem::MusicItem(const wchar_t _strName[]): iOffset(0), + iSize(0), strName(_strName) { //Debug message (うざい程出力するので注意。) @@ -24,6 +25,19 @@ MusicItem::MusicItem(const wchar_t _strName[]): } } +MusicItem::MusicItem(int _id, const wchar_t _strName[]): + iOffset(0), + iSize(0), + strName(_strName) +{ + //Debug message (うざい程出力するので注意。) + if(cOptionSW->cDebug & 0x01){ + wcout << L"Create Music Object : ====[ " << strName << L"("; + cout << _id; + wcout << L") ]====" << endl; + } +} + //============================================================== // デストラクタ //-------------------------------------------------------------- @@ -35,6 +49,11 @@ MusicItem::MusicItem(const wchar_t _strName[]): MusicItem::~MusicItem(void) { clear(); + + //Debug message (うざい程出力するので注意。) + if(cOptionSW->cDebug & 0x80){ + wcout << L"Delete Music Object : " << strName << endl; + } } //============================================================== @@ -66,6 +85,18 @@ void MusicItem::clear(void) ptcItem.clear(); } } + +void MusicItem::clear(int _id) +{ + + //Debug message (うざい程出力するので注意。) + if(cOptionSW->cDebug & 0x40){ + wcout << L"Clear Music Object : ====[ " << strName << L"(" << _id << L") ]====" << endl; + } + + clear(); +} + //============================================================== // コードサイズの取得 //-------------------------------------------------------------- @@ -105,10 +136,16 @@ unsigned int MusicItem::SetOffset(unsigned int _offset) //---------------------- //Local変数 list< MusicItem*>::iterator itItem; + int i = 0; //Debug message (うざい程出力するので注意。) if(cOptionSW->cDebug & 0x02){ - wcout << L"Object Address [0x" << hex << _offset << dec << L"]: " << strName << endl; + wcout << L"Object Address [0x" << hex << setw(4) << setfill(L'0') << _offset << L"]: "; + while(i < code.size()){ + wcout << hex << setw(2) << setfill(L'0') << (unsigned int)(code[i] & 0xFF) << L" "; + i++; + } + wcout << dec << L": " << strName << endl; } iOffset = _offset; diff --git a/src/nsc/MusicItem.h b/src/nsc/MusicItem.h index 40c79e3..5ab6e67 100644 --- a/src/nsc/MusicItem.h +++ b/src/nsc/MusicItem.h @@ -20,13 +20,16 @@ class MusicItem string code; size_t iSize; unsigned int iOffset; //SNDファイルポインタ + //メンバー関数 public: MusicItem(const wchar_t _strName[]=L""); + MusicItem(int _id, const wchar_t _strName[]=L""); ~MusicItem(void); void clear(void); + void clear(int _id); size_t getSize(); unsigned int getOffset(); unsigned int SetOffset(unsigned int _offset); diff --git a/src/nsc/MusicTrack.BAK b/src/nsc/MusicTrack.BAK new file mode 100644 index 0000000..1b3f25f --- /dev/null +++ b/src/nsc/MusicTrack.BAK @@ -0,0 +1,190 @@ +#pragma once + +/****************************************************************/ +/* */ +/* クラス定義 */ +/* */ +/****************************************************************/ +class MusicTrack : + public MusicItem +{ +//メンバー変数 +private: + int iTickTotal; //Tickカウント用 + int iTickLoop; // + + bool jump_flag; //ジャンプフラグ + + bool compile_flag; //現在コンパイル中? + unsigned int offset_now; //現在のオフセット + + bool loop_flag; // L コマンドが出現したかどうか + unsigned int offset_loop; // L コマンドのオフセット + + unsigned int offset_repeat_a_s; //前回の [ コマンドのオフセット + unsigned int offset_repeat_a_b; //前回の : コマンドのオフセット + unsigned int offset_repeat_b_s; //前回の |: コマンドのオフセット + unsigned int offset_repeat_b_b; //前回の \ コマンドのオフセット + int count_repeat_a; + + vector< int > repeat_type; //ドライバー実装 or コンパイラ展開 + vector< int >::iterator it_repeat_type; //↑のネスティング用ポインタ + + unsigned int sp_repeat_c; //コンパイラ展開のリピート・ネスティング回数 +// vector< MusicItem*>::iterator it_repeat_c_s; +// vector< MusicItem*>::iterator it_repeat_c_b; +// vector< MusicItem*>::iterator it_repeat_c_e; + //コンパイラ展開のリピートのネストリスト + list< unsigned int > st_ct_repeat_c; //リピート回数 + list< list< MusicItem*>::iterator> st_it_repeat_c_s; //リピート開始位置 + list< list< MusicItem*>::iterator> st_it_repeat_c_b; //リピート分岐位置 + list< list< MusicItem*>::iterator> st_it_repeat_c_e; //リピート分岐位置 + //↑のネスティング用ポインタ + list< unsigned int >::iterator it_ct_repeat_c; //リピート回数 + list< list< MusicItem*>::iterator>::iterator it_it_repeat_c_s; //リピート開始位置 + list< list< MusicItem*>::iterator>::iterator it_it_repeat_c_b; //リピート分岐位置 + list< list< MusicItem*>::iterator>::iterator it_it_repeat_c_e; //リピート分岐位置 + + unsigned int DefaultLength; //l コマンドで指定された音長 + + bool echo_flag; //疑似エコー フラグ + bool echo_slur; //疑似エコー スラーでつなげる? + int echo_length; //疑似エコー 長さ + unsigned char echo_volume; //疑似エコー 音量 + unsigned char echo_value; //疑似エコー 何前? + char oldNote[256]; //疑似エコー用バッファ + + unsigned char pt_oldNote; //前回の音程 + char volume; //音量 + char octave; //オクターブ + char octave1; // + char octave1_old; // + + int iKeyShift; + + unsigned int gatetime_q; + unsigned int gatetime_Q; + unsigned int QMax; + + int opt_DefaultLength; + int opt_gatetime_q; // + int opt_gatetime_u; // + int opt_volume; + + //調号制御用 + char KeySignature[8]; //調号(c,d,e,f,g,a,b,r) + char nowKey; //現在の調 + char nowScale; //現在のスケール(モード) + + mml_note* _old_note; + mml_Address* _old_repeatA_Branch; + mml_repeat* _old_repeat; + + vector< mml_Address* > ptcFDSC; //FDS Carrer + vector< mml_Address* > ptcFDSM; //FDS Modlator + vector< mml_Address* > ptcOPLL; //VRC7, OPLL + vector< mml_Address* > ptcWave; //N163 + vector< mml_Address* > ptcSE; //効果音コマンド一覧 + vector< mml_Address* > ptcSub; //サブルーチンコマンド一覧 + vector< mml_Address* > ptcEnv; //エンベロープコマンド一覧 + +//メンバー関数 +public: + MusicTrack(MMLfile* MML, const wchar_t _strName[] = L"==== [ Music Track ]===="); + ~MusicTrack(void); + + unsigned int TickCount(MusicFile* MUS, unsigned int iLength); + unsigned int GetTickTotal(void){ return(iTickTotal);}; + unsigned int GetTickLoop(void){ return(iTickLoop);}; + + void Optimize(MusicFile* MUS); + void Fix_Address(MusicFile* MUS); + + void SetEvent(MusicItem* _item); //イベントの追加 + + bool GetCompileFlag(void){return(compile_flag);}; + void SetCompileFlag(bool _flag){compile_flag = _flag;}; + + size_t SetEnd(MMLfile* MML); + void SetLoop(); + + void SetRepeat_Start(MMLfile* MML); + void SetRepeat_End(MMLfile* MML); + void SetRepeat_Branch(MMLfile* MML); + + void SetRepeat_A_Start(MMLfile* MML); + void SetRepeat_A_End(MMLfile* MML); + void SetRepeat_C_Start(MMLfile* MML); + void SetRepeat_C_End(MMLfile* MML); + + void SetRepeat_B_Start(); + void SetRepeat_B_Branch(MMLfile* MML); + void SetRepeat_B_End(MMLfile* MML); + mml_Address* CopyAddressEvent(unsigned char cOpCode, string* sOpCode, list::iterator pt_itMusic); + void CopyEnvEvent(unsigned char cOpCode, string* sOpCode, list::iterator pt_itMusic); + + void SetSE(MMLfile* MML); + void SetSubroutine(MMLfile* MML); + void SetEnvelop(unsigned char _opcode, MMLfile* MML, int _offset); + void SetFDSC(MMLfile* MML); + void SetFDSM(MMLfile* MML); + void SetVRC7(MMLfile* MML); + void SetN163(MMLfile* MML); + + void SetEcho(void); + void SetEcho(MMLfile* MML); + + void SetJump(MMLfile* MML); + + void Set_q(int i); + void SetGatetime_Q(MMLfile* MML); + void SetGatetime(MMLfile* MML); + void SetGatetime_u(MMLfile* MML); + + void SetKeyFlag(char _c, char _d, char _e, char _f, char _g, char _a, char _b); + void SetKey(int _key, int _scale); + + void SetMajor(); + void SetMinor(); + void SetHMinor(MMLfile* MML); + void SetMMinor(MMLfile* MML); + void SetScale(MMLfile* MML); + void SetKeySignature(MMLfile* MML); //調号の設定 + + void ResetEcho(); + void GenerateEcho(int Length, int GateTime, bool Slur); + char calc_note(MMLfile* MML,int note); + int calc_length(MMLfile* MML); + int calc_gate(MMLfile* MML); + bool calc_slur(MMLfile* MML); + void SetNote(int _key, int Length, int GateTime, bool Slur); + void SetNote(MMLfile* MML, int note); + void SetRest(MMLfile* MML, int mode); + void SetTai(MMLfile* MML); + void SetLength(MMLfile* MML); + + void SetProtament(MMLfile* MML); + void SetProtament(MMLfile* MML, unsigned char iTempo); + + void SetKeyShift(MMLfile* MML); + void SetKeyShift_Relative(MMLfile* MML); + + void SetOctave(MMLfile* MML); + void SetOctaveInc(); + void SetOctaveDec(); + void SetOctaveOne_Inc(); + void SetOctaveOne_Dec(); + + void SetVolume(char _v){volume = _v; opt_volume = volume;}; + void IncVolume(void){ volume++; if(volume>15){volume = 15;} opt_volume = volume; }; + void DecVolume(void){ volume--; if(volume<0){volume = 0;} opt_volume = volume; }; + unsigned int GetDefaultLength(void){return(DefaultLength);}; + + void Reset_opt(void){ + opt_volume = -1; + opt_gatetime_q = -1; + opt_gatetime_u = -1; + opt_DefaultLength = -1; + } + int Get_opt_volume(void){ return(opt_volume); }; +}; diff --git a/src/nsc/MusicTrack.cpp b/src/nsc/MusicTrack.cpp index e327a2a..57f696a 100644 --- a/src/nsc/MusicTrack.cpp +++ b/src/nsc/MusicTrack.cpp @@ -16,7 +16,7 @@ //============================================================== MusicTrack::MusicTrack(MMLfile* MML, const wchar_t _strName[]): MusicItem(_strName), - offset_now(0), // + offset_now(0), offset_loop(0), //無限ループ offset_repeat_a_s(0), //リピートA offset_repeat_a_b(0), //リピートA @@ -33,6 +33,8 @@ MusicTrack::MusicTrack(MMLfile* MML, const wchar_t _strName[]): compile_flag(false), pt_oldNote(0), iKeyShift(0), + iTranspose(0), + f_Patch(false), jump_flag(false) { unsigned int i = 0; @@ -52,7 +54,9 @@ MusicTrack::MusicTrack(MMLfile* MML, const wchar_t _strName[]): nowScale =0; SetKey(nowKey, nowScale); - //保護外のメモリアクセスによる例外発生対策 + //保護外のメモリアクセスによる例外発生対策(MMLコンパイラ展開のリピートの為) + //Visual C++.net 2008 では、こうしておかないと、例外が発生する模様。 + //つまり、ぬるぽ対策 { list::iterator pt_itMusic = ptcItem.end(); @@ -64,6 +68,9 @@ MusicTrack::MusicTrack(MMLfile* MML, const wchar_t _strName[]): st_it_repeat_c_s.push_back(pt_itMusic); st_it_repeat_c_b.push_back(pt_itMusic); st_it_repeat_c_e.push_back(pt_itMusic); + + //イベント + SetEvent(new MusicItem(L"Null")); } } @@ -419,7 +426,6 @@ void MusicTrack::Fix_Address(MusicFile* MUS) unsigned int _sub_offset; unsigned int _com_offset; - //---------------------- //SE if(!ptcSE.empty()){ @@ -584,6 +590,7 @@ void MusicTrack::SetEvent(MusicItem* _item) //作ったobjectのポインタを保存しておく。 ptcItem.push_back(_item); + } //============================================================== @@ -870,6 +877,7 @@ void MusicTrack::SetRepeat_Branch(MMLfile* MML) //============================================================== void MusicTrack::SetRepeat_End(MMLfile* MML) { + switch(*it_repeat_type){ case(1): SetRepeat_A_End(MML); @@ -881,6 +889,7 @@ void MusicTrack::SetRepeat_End(MMLfile* MML) MML->Err(L"リピート開始コマンドがありません。"); break; } + } //============================================================== @@ -1112,9 +1121,8 @@ void MusicTrack::SetSE(MMLfile* MML) // ●返値 // 無し //============================================================== -void MusicTrack::SetSubroutine(MMLfile* MML) +void MusicTrack::SetSubroutine(unsigned int _no) { - unsigned int _no = MML->GetInt(); if(jump_flag==false){ mml_Address* _event = new mml_Address(nsd_Call, L"Subroutine"); _event->set_id(_no); @@ -1124,6 +1132,19 @@ void MusicTrack::SetSubroutine(MMLfile* MML) Reset_opt(); } +void MusicTrack::SetSubWuthParch(unsigned int _no) +{ + if((_no != iSub) || (f_opt_Sub == false)){ + iSub = _no; + f_opt_Sub = true; + if(jump_flag==false){ + mml_Address* _event = new mml_Address(nsd_Call, L"Subroutine for Patch"); + _event->set_id(_no); + SetEvent(_event); + ptcSub.push_back(_event); + }; + } +} //============================================================== // E エンベロープ設定 //-------------------------------------------------------------- @@ -1132,6 +1153,7 @@ void MusicTrack::SetSubroutine(MMLfile* MML) // ●返値 // 無し //============================================================== +/* void MusicTrack::SetEnvelop(unsigned char _opcode, MMLfile* MML, int _offset) { mml_Address* _event = new mml_Address(_opcode, L"Envelop"); @@ -1141,6 +1163,221 @@ void MusicTrack::SetEnvelop(unsigned char _opcode, MMLfile* MML, int _offset) SetEvent(_event); ptcEnv.push_back(_event); } +*/ + +//-------------------------------------------------------------- +void MusicTrack::SetEnvelop_Evoi(unsigned int _no) +{ + mml_Address* _event; + + if((_no != iEvoi) || (f_opt_Evoi == false) || (sw_Evoi == false)){ + iEvoi = _no; + sw_Evoi = true; + f_opt_Evoi = true; //最適化フラグ + _event = new mml_Address(nsd_Envelop_Voice, L"Voice Envelope"); + + _event->set_id(_no); + SetEvent(_event); + ptcEnv.push_back(_event); + } +} + +//-------------------------------------------------------------- +void MusicTrack::SetEnvelop_Evol(unsigned int _no) +{ + mml_Address* _event; + + if((_no != iEvol) || (f_opt_Evol == false) || (sw_Evol == false)){ + iEvol = _no; + sw_Evol = true; + f_opt_Evol = true; //最適化フラグ + _event = new mml_Address(nsd_Envelop_Volume, L"Volume Envelope"); + + _event->set_id(_no); + SetEvent(_event); + ptcEnv.push_back(_event); + } +} + +//-------------------------------------------------------------- +void MusicTrack::SetEnvelop_Em(unsigned int _no) +{ + mml_Address* _event; + + if((_no != iEm) || (f_opt_Em == false) || (sw_Em == false)){ + iEm = _no; + sw_Em = true; + f_opt_Em = true; //最適化フラグ + _event = new mml_Address(nsd_Envelop_Frequency, L"Frequency Envelope"); + + _event->set_id(_no); + SetEvent(_event); + ptcEnv.push_back(_event); + } +} + +//-------------------------------------------------------------- +void MusicTrack::SetEnvelop_En(unsigned int _no) +{ + mml_Address* _event; + + if((_no != iEn) || (f_opt_En == false) || (sw_En == false)){ + iEn = _no; + sw_En = true; + f_opt_En = true; //最適化フラグ + _event = new mml_Address(nsd_Envelop_Note, L"Note Envelope"); + + _event->set_id(_no); + SetEvent(_event); + ptcEnv.push_back(_event); + } +} + +//-------------------------------------------------------------- +void MusicTrack::SetVoice(unsigned int _no) +{ + if((_no != iVoi) || (f_opt_Evoi == false) || (sw_Evoi == true)){ + iVoi = _no; + sw_Evoi = false; + f_opt_Evoi = true; //最適化フラグ + SetEvent(new mml_general(nsd_Voice, _no, L"Voice")); + } +} + +//-------------------------------------------------------------- +void MusicTrack::SetEnvelop_Evol() +{ + if((f_opt_Evol == false) || (sw_Evol == true)){ + sw_Evol = false; + f_opt_Evol = true; //最適化フラグ + SetEvent(new mml_Address(nsd_Envelop_Volume, L"Volume Envelope Off")); + } +} + +//-------------------------------------------------------------- +void MusicTrack::SetEnvelop_Em() +{ + if((f_opt_Em == false) || (sw_Em == true)){ + sw_Em = false; + f_opt_Em = true; //最適化フラグ + SetEvent(new mml_Address(nsd_Envelop_Frequency, L"Frequency Envelope Off")); + } +} + +//-------------------------------------------------------------- +void MusicTrack::SetEnvelop_En() +{ + if((f_opt_En == false) || (sw_En == true)){ + sw_En = false; + f_opt_En = true; //最適化フラグ + SetEvent(new mml_Address(nsd_Envelop_Note, L"Note Envelope Off")); + } +} + +//============================================================== +// 音源固有パラメータ +//-------------------------------------------------------------- +// ●引数 +// char c +// ●返値 +// 無し +//============================================================== +void MusicTrack::SetSweep(unsigned char c) +{ + if((f_opt_Sweep == false) || ((unsigned char)iSweep != c)){ + iSweep = c; + f_opt_Sweep = true; //最適化フラグ + SetEvent(new mml_general(nsd_Sweep, c, L"Sweep")); + } +} + +//============================================================== +// パッチ +//-------------------------------------------------------------- +// ●引数 +// MMLfile* MML MMLファイルのオブジェクト +// ●返値 +// 無し +//============================================================== +void MusicTrack::SetPatch(MMLfile* MML) +{ + f_Patch = true; + i_Patch = MML->GetInt(); + + if(MML->ChkPatch(i_Patch) == false){ + MML->Err(L"存在しないパッチです。"); + } +} + +//-------------------------------------------------------------- +void MusicTrack::SetPatch() +{ + f_Patch = false; +} + +//============================================================== +// パッチの展開 +//-------------------------------------------------------------- +// ●引数 +// MMLfile* MML MMLファイルのオブジェクト +// char _note ノート番号 +// ●返値 +// 無し +//============================================================== +void MusicTrack::CallPatch(MMLfile* MML, char _note) +{ + if(f_Patch == true){ + //ノート番号の設定 + MML->ptcPatch[i_Patch]->setNote(_note); + + if( MML->ptcPatch[i_Patch]->get_fSub() == true){ + SetSubWuthParch(MML->ptcPatch[i_Patch]->get_iSub()); + } + + if( MML->ptcPatch[i_Patch]->get_fSweep() == true){ + SetSweep(MML->ptcPatch[i_Patch]->get_iSweep()); + } + + if( MML->ptcPatch[i_Patch]->get_fKey() == true){ + SetTranspose(MML->ptcPatch[i_Patch]->get_iKey()); + } + + if( MML->ptcPatch[i_Patch]->get_fVoi() == true){ + SetVoice(MML->ptcPatch[i_Patch]->get_iVoi()); + } + + if( MML->ptcPatch[i_Patch]->get_fEvoi() == true){ + if(MML->ptcPatch[i_Patch]->get_sw_Evoi() == true){ + SetEnvelop_Evoi(MML->ptcPatch[i_Patch]->get_iEvoi()); + } + } + + if( MML->ptcPatch[i_Patch]->get_fEvol() == true){ + if(MML->ptcPatch[i_Patch]->get_sw_Evol() == true){ + SetEnvelop_Evol(MML->ptcPatch[i_Patch]->get_iEvol()); + } else { + SetEnvelop_Evol(); + } + } + + if( MML->ptcPatch[i_Patch]->get_fEm() == true){ + if(MML->ptcPatch[i_Patch]->get_sw_Em() == true){ + SetEnvelop_Em(MML->ptcPatch[i_Patch]->get_iEm()); + } else { + SetEnvelop_Em(); + } + } + + if( MML->ptcPatch[i_Patch]->get_fEn() == true){ + if(MML->ptcPatch[i_Patch]->get_sw_En() == true){ + SetEnvelop_En(MML->ptcPatch[i_Patch]->get_iEn()); + } else { + SetEnvelop_En(); + } + } + + } +} //============================================================== // @FC FDS @@ -1219,63 +1456,65 @@ void MusicTrack::SetN163(MMLfile* MML) ptcWave.push_back(_event); } -//============================================================== -// EC* 疑似エコー解除 //-------------------------------------------------------------- -// ●引数 -// MMLfile* MML MMLファイルのオブジェクト -// ●返値 -// 無し -//============================================================== -void MusicTrack::SetEcho(void) +// @NL +//-------------------------------------------------------------- +void MusicTrack::SetN163_Load(MMLfile* MML) { - echo_flag = false; + int i = MML->GetInt(); + unsigned char cData = MML->GetChar(); + mml_Address* _event; + + if(cData != ','){ + MML->Err(L"@N コマンドのパラメータが足りません。2つ指定してください。"); + } + + if((i<0) || (i>252)){ + MML->Err(L"n16xの波形開始点は0〜252の範囲で指定してください。"); + } + if((i % 4) != 0){ + MML->Err(L"n16xの波形開始点は4の倍数で指定してください。"); + } + + _event = new mml_Address(nsc_N163,(unsigned char)(i/4),L"n163 wave table"); + _event->set_id(MML->GetInt()); + SetEvent(_event); + ptcWave.push_back(_event); } //============================================================== -// EC 疑似エコー設定 +// @NS n163音色設定 //-------------------------------------------------------------- // ●引数 // MMLfile* MML MMLファイルのオブジェクト // ●返値 // 無し //============================================================== -void MusicTrack::SetEcho(MMLfile* MML) +void MusicTrack::SetN163_Set(MMLfile* MML) { + int i = MML->GetInt(); unsigned char cData; - int _value; - int _volume; - - _value = MML->GetInt(); - if((_value<0) || (_value>255)){ - MML->Err(L"ECコマンドの第1パラメータは0〜255の範囲で指定してください。"); - } - - cData = MML->GetChar(); - if(cData != ','){ - MML->Err(L"EC コマンドのパラメータが足りません。2つ指定してください。"); - } - _volume = MML->GetInt(); - if((_volume<-1) || (_volume>15)){ - MML->Err(L"ECコマンドの第2パラメータは-1〜15の範囲で指定してください。"); + if((i<0) || (i>252)){ + MML->Err(L"n16xの波形開始点は0〜252の範囲で指定してください。"); } - - echo_flag = true; - echo_value = (unsigned char)_value; - if(_volume == -1){ - echo_slur = true; - } else { - echo_slur = false; - echo_volume = (unsigned char)_volume; + if((i % 4) != 0){ + MML->Err(L"n16xの波形開始点は4の倍数で指定してください。"); } + SetVoice(i/4); cData = MML->GetChar(); - if(cData != ','){ - MML->Back(); - echo_length = -1; + if(cData == ','){ + i = MML->GetInt(); + if((i<4) || (i>256)){ + MML->Err(L"n16xのサンプル長は4〜256の範囲で指定してください。"); + } + if((i % 4) != 0){ + MML->Err(L"n16xのサンプル長は4の倍数で指定してください。"); + } + SetSweep(64 - (i/4)); } else { - echo_length = MML->GetLength(DefaultLength); + MML->Back(); } } @@ -1425,7 +1664,6 @@ void MusicTrack::SetKeyFlag(char _c, char _d, char _e, char _f, char _g, char _a void MusicTrack::SetKey(int _key, int _scale) { -// static const char Shift[13]={4,1,5,2,6,3,0,4,1,5,2,6,3}; static const char Shift[16]={3,6,2,5,1,4,0,3,6,2,5,1,4,0,3,6}; //調 @@ -1939,26 +2177,6 @@ void MusicTrack::SetKeySignature(MMLfile* MML) */ } -//============================================================== -// 疑似エコーのリセット -//-------------------------------------------------------------- -// ●引数 -// 無し -// ●返値 -// 無し -//============================================================== -void MusicTrack::ResetEcho() -{ - unsigned int i = 0; - - while(i < 256){ - oldNote[i] = -1; - i++; - } -// echo_flag = false; - pt_oldNote = 0; -} - //============================================================== // 省略時の音長 //-------------------------------------------------------------- @@ -2143,7 +2361,87 @@ bool MusicTrack::calc_slur(MMLfile* MML) } //============================================================== -// +// EC* 疑似エコー解除 +//-------------------------------------------------------------- +// ●引数 +// MMLfile* MML MMLファイルのオブジェクト +// ●返値 +// 無し +//============================================================== +void MusicTrack::SetEcho(void) +{ + echo_flag = false; +} + +//============================================================== +// EC 疑似エコー設定 +//-------------------------------------------------------------- +// ●引数 +// MMLfile* MML MMLファイルのオブジェクト +// ●返値 +// 無し +//============================================================== +void MusicTrack::SetEcho(MMLfile* MML) +{ + unsigned char cData; + int _value; + int _volume; + + _value = MML->GetInt(); + if((_value<0) || (_value>255)){ + MML->Err(L"ECコマンドの第1パラメータは0〜255の範囲で指定してください。"); + } + + cData = MML->GetChar(); + if(cData != ','){ + MML->Err(L"EC コマンドのパラメータが足りません。2つ指定してください。"); + } + + _volume = MML->GetInt(); + if((_volume<-1) || (_volume>15)){ + MML->Err(L"ECコマンドの第2パラメータは-1〜15の範囲で指定してください。"); + } + + echo_flag = true; + echo_value = (unsigned char)_value; + if(_volume == -1){ + echo_slur = true; + } else { + echo_slur = false; + echo_volume = (unsigned char)_volume; + } + + cData = MML->GetChar(); + if(cData != ','){ + MML->Back(); + echo_length = -1; + } else { + echo_length = MML->GetLength(DefaultLength); + } +} + +//============================================================== +// 疑似エコーのリセット +//-------------------------------------------------------------- +// ●引数 +// 無し +// ●返値 +// 無し +//============================================================== +void MusicTrack::ResetEcho() +{ + unsigned int i = 0; + + while(i < 256){ + oldNote[i] = -1; + i++; + } +// echo_flag = false; + pt_oldNote = 0; +} + +//============================================================== +// 疑似エコーの生成 //-------------------------------------------------------------- // ●引数 // int Length @@ -2152,7 +2450,7 @@ bool MusicTrack::calc_slur(MMLfile* MML) // ●返値 // //============================================================== -void MusicTrack::GenerateEcho(int Length, int GateTime, bool Slur) +void MusicTrack::GenerateEcho(MMLfile* MML, int Length, int GateTime, bool Slur) { char old_note = oldNote[(pt_oldNote - echo_value) & 0xFF]; char now_note = oldNote[pt_oldNote]; @@ -2162,6 +2460,8 @@ void MusicTrack::GenerateEcho(int Length, int GateTime, bool Slur) // int i = 0; + CallPatch(MML, old_note); + if(echo_slur == false){ //Echo volume SetEvent(new mml_general(nsd_Volume + echo_volume, L"Echo Volume")); @@ -2206,9 +2506,10 @@ void MusicTrack::GenerateEcho(int Length, int GateTime, bool Slur) // ●返値 // 無し //============================================================== -void MusicTrack::SetNote(int _key, int Length, int GateTime, bool Slur) +void MusicTrack::SetNote(MMLfile* MML, int _key, int Length, int GateTime, bool Slur) { int Length_0 = Length; //実音長 + char _note_no; //実音長の取得 if(Length_0 == -1){ @@ -2221,13 +2522,14 @@ void MusicTrack::SetNote(int _key, int Length, int GateTime, bool Slur) } //移調 - _key += iKeyShift; + _key += iKeyShift; + _note_no = ((char)_key + (octave + octave1)*12) & 0xFF; //疑似エコーのバッファ書き込み pt_oldNote++; - oldNote[pt_oldNote] = ((char)_key + (octave + octave1)*12) & 0xFF; - octave1_old = octave1; - octave1 = 0; + oldNote[pt_oldNote] = _note_no; + octave1_old = octave1; + octave1 = 0; //指定できる範囲を超えた場合。 while(_key < 0){ @@ -2240,6 +2542,8 @@ void MusicTrack::SetNote(int _key, int Length, int GateTime, bool Slur) SetEvent(new mml_general(nsd_Octave_Up_1, L"One time octave up")); } + CallPatch(MML, _note_no); + if((echo_flag == true) && (oldNote[(pt_oldNote - echo_value) & 0xFF] != -1) && (echo_length != -1) && (Length_0 > echo_length) && (Slur == false)){ //疑似エコー あり Length_0 -= echo_length; @@ -2251,7 +2555,7 @@ void MusicTrack::SetNote(int _key, int Length, int GateTime, bool Slur) //イベントオブジェクトの作成 SetEvent(_old_note); - GenerateEcho(echo_length,GateTime,Slur); + GenerateEcho(MML,echo_length,GateTime,Slur); } else { if(Length == opt_DefaultLength){ Length = -1; @@ -2282,7 +2586,7 @@ void MusicTrack::SetNote(MMLfile* MML,int note) bool Slur = calc_slur(MML); if(jump_flag==false){ - SetNote(_key, Length, GateTime, Slur); + SetNote(MML, _key, Length, GateTime, Slur); } } @@ -2358,7 +2662,7 @@ void MusicTrack::SetRest(MMLfile* MML, int mode) _old_note = new mml_note(_code, Length, GateTime, Slur, L"Rest"); SetEvent(_old_note); } else { - GenerateEcho(Length,GateTime,Slur); + GenerateEcho(MML,Length,GateTime,Slur); } } } @@ -2585,7 +2889,7 @@ void MusicTrack::SetProtament(MMLfile* MML, unsigned char iTempo) SetEvent(new mml_general(nsd_Portamento, (unsigned char)1, (unsigned char)pol_rate, (unsigned char)pol_depth, (unsigned char)pol_target, L"Portamento")); //ポルタメント元の音符 - SetNote(_key, Length, GateTime, Slur); + SetNote(MML, _key, Length, GateTime, Slur); } //オクターブコマンドの書き出し @@ -2668,7 +2972,7 @@ void MusicTrack::SetProtament(MMLfile* MML) } //============================================================== -// オクターブ +// 移調2 //-------------------------------------------------------------- // ●引数 // MMLfile* MML MMLファイルのオブジェクト @@ -2684,7 +2988,7 @@ void MusicTrack::SetKeyShift(MMLfile* MML) } //============================================================== -// オクターブ +// 移調2 //-------------------------------------------------------------- // ●引数 // MMLfile* MML MMLファイルのオブジェクト @@ -2700,6 +3004,37 @@ void MusicTrack::SetKeyShift_Relative(MMLfile* MML) } +//============================================================== +// 移調1 +//-------------------------------------------------------------- +// ●引数 +// MMLfile* MML MMLファイルのオブジェクト +// ●返値 +// 無し +//============================================================== +void MusicTrack::SetTranspose(int _no) +{ + if((iTranspose != _no) || (f_opt_Key == false)){ + f_opt_Key = true; + iTranspose = _no; + SetEvent(new mml_general(nsd_Transpose, iTranspose, L"Transpose")); + } +} + +//============================================================== +// 移調1 +//-------------------------------------------------------------- +// ●引数 +// MMLfile* MML MMLファイルのオブジェクト +// ●返値 +// 無し +//============================================================== +void MusicTrack::SetTranspose_Relative(int _no) +{ + iTranspose += _no; + SetEvent(new mml_general(nsd_Relative_Transpose, _no, L"Relative Transpose")); +} + //============================================================== // オクターブ //-------------------------------------------------------------- @@ -2713,24 +3048,36 @@ void MusicTrack::SetOctave(MMLfile* MML) octave = MML->GetInt() - 1; if( (octave <= 7) && (octave >=0) ){ - SetEvent(new mml_general(nsd_Octave + (unsigned char)octave, L"Octave")); + if(opt_octave != octave){ + SetEvent(new mml_general(nsd_Octave + (unsigned char)octave, L"Octave")); + opt_octave = octave; + } } else { MML->Err(L"オクターブは1〜8の範囲で指定してください。"); } } +//-------------------------------------------------------------- void MusicTrack::SetOctaveInc() { SetEvent(new mml_general(nsd_Octave_Up, L"Octave Up")); octave++; + if(opt_octave != -1){ + opt_octave = octave; + } } +//-------------------------------------------------------------- void MusicTrack::SetOctaveDec() { SetEvent(new mml_general(nsd_Octave_Down, L"Octave Down")); octave--; + if(opt_octave != -1){ + opt_octave = octave; + } } +//-------------------------------------------------------------- void MusicTrack::SetOctaveOne_Inc() { if(jump_flag == false){ @@ -2739,6 +3086,7 @@ void MusicTrack::SetOctaveOne_Inc() } } +//-------------------------------------------------------------- void MusicTrack::SetOctaveOne_Dec() { if(jump_flag == false){ diff --git a/src/nsc/MusicTrack.h b/src/nsc/MusicTrack.h index 86b25ae..3317aed 100644 --- a/src/nsc/MusicTrack.h +++ b/src/nsc/MusicTrack.h @@ -10,30 +10,121 @@ class MusicTrack : { //メンバー変数 private: + + //---------------------------------- + //Tick カウント用 int iTickTotal; int iTickLoop; - bool jump_flag; //ジャンプフラグ + //---------------------------------- + //コンパイル制御 + unsigned int offset_now; //現在のオフセット + bool compile_flag; //現在コンパイル中? + + bool jump_flag; // J + + //---------------------------------- + //音長 + int DefaultLength; //l + int opt_DefaultLength; + + //---------------------------------- + //オクターブ + char octave; //現在のオクターブ + int opt_octave; + + char octave1; //一次オークターブ + char octave1_old; //一次オークターブ(疑似エコーのオクターブ計算用) + + //---------------------------------- + //音量 + char volume; //現在の音量 + int opt_volume; - bool compile_flag; //現在コンパイル中? - unsigned int offset_now; //現在のオフセット + //---------------------------------- + //クオンタイズ + int QMax; //QMax + int gatetime_q; //q + int gatetime_Q; //Q + int opt_gatetime_q; // + int opt_gatetime_u; // - bool loop_flag; - unsigned int offset_loop; // L コマンドのオフセット + //---------------------------------- + //ノート + mml_note* _old_note; - unsigned int offset_repeat_a_s; //前回の [ コマンドのオフセット - unsigned int offset_repeat_a_b; //前回の : コマンドのオフセット - unsigned int offset_repeat_b_s; //前回の |: コマンドのオフセット - unsigned int offset_repeat_b_b; //前回の \ コマンドのオフセット + //---------------------------------- + //調号制御用 + char KeySignature[8]; //調号(c,d,e,f,g,a,b,r) + char nowKey; //現在の調 + char nowScale; //現在のスケール(モード) + + //---------------------------------- + //移調 + int iKeyShift; //k + + int iTranspose; //_ + + //---------------------------------- + //疑似エコー + bool echo_flag; //疑似エコー フラグ + bool echo_slur; //疑似エコー スラーでつなげる? + int echo_length; //疑似エコー 長さ + unsigned char echo_volume; //疑似エコー 音量 + unsigned char echo_value; //疑似エコー 何前? + char oldNote[256]; //疑似エコー用リングバッファ + unsigned char pt_oldNote; //疑似エコー用リングバッファ ポインタ + + //---------------------------------- + //パッチ + bool f_Patch; //パッチ処理中? + unsigned int i_Patch; + + //設定数値 + unsigned int iVoi; // + unsigned int iEvoi; // + unsigned int iEvol; // + unsigned int iEm; // + unsigned int iEn; // + unsigned char iSweep; // + unsigned int iSub; //サブルーチン用 + + //エンベロープのsw + bool sw_Evoi; // + bool sw_Evol; // + bool sw_Em; // + bool sw_En; // + + //設定するかどうか(defailt = false) + bool f_opt_Voi; // + bool f_opt_Evoi; // + bool f_opt_Evol; // + bool f_opt_Em; // + bool f_opt_En; // + bool f_opt_Key; // + bool f_opt_Sweep; // + bool f_opt_Sub; //サブルーチン(パッチ用) + + //---------------------------------- + //無限ループ + bool loop_flag; // L コマンド出現したか? + unsigned int offset_loop; // L コマンドのオフセット + + //---------------------------------- + //リピート関係 + mml_Address* _old_repeatA_Branch; + mml_repeat* _old_repeat; + + unsigned int offset_repeat_a_s; //前回の [ コマンドのオフセット + unsigned int offset_repeat_a_b; //前回の : コマンドのオフセット + unsigned int offset_repeat_b_s; //前回の |: コマンドのオフセット + unsigned int offset_repeat_b_b; //前回の \ コマンドのオフセット int count_repeat_a; - vector< int > repeat_type; + vector< int > repeat_type; //どのリピートを使っているか? vector< int >::iterator it_repeat_type; unsigned int sp_repeat_c; //リピート(C)のスタックポインタ -// vector< MusicItem*>::iterator it_repeat_c_s; -// vector< MusicItem*>::iterator it_repeat_c_b; -// vector< MusicItem*>::iterator it_repeat_c_e; list< unsigned int > st_ct_repeat_c; list< list< MusicItem*>::iterator> st_it_repeat_c_s; list< list< MusicItem*>::iterator> st_it_repeat_c_b; @@ -43,41 +134,8 @@ class MusicTrack : list< list< MusicItem*>::iterator>::iterator it_it_repeat_c_b; list< list< MusicItem*>::iterator>::iterator it_it_repeat_c_e; - unsigned int DefaultLength; - - bool echo_flag; //疑似エコー フラグ - bool echo_slur; //疑似エコー スラーでつなげる? - int echo_length; //疑似エコー 長さ - unsigned char echo_volume; //疑似エコー 音量 - unsigned char echo_value; //疑似エコー 何前? - char oldNote[256]; //疑似エコー用バッファ - - unsigned char pt_oldNote; //前回の音程 - char volume; //音量 - char octave; //オクターブ - char octave1; // - char octave1_old; // - - int iKeyShift; - - unsigned int gatetime_q; - unsigned int gatetime_Q; - unsigned int QMax; - - int opt_DefaultLength; - int opt_gatetime_q; // - int opt_gatetime_u; // - int opt_volume; - - //調号制御用 - char KeySignature[8]; //調号(c,d,e,f,g,a,b,r) - char nowKey; //現在の調 - char nowScale; //現在のスケール(モード) - - mml_note* _old_note; - mml_Address* _old_repeatA_Branch; - mml_repeat* _old_repeat; - + //---------------------------------- + //オブジェクト vector< mml_Address* > ptcFDSC; //FDS Carrer vector< mml_Address* > ptcFDSM; //FDS Modlator vector< mml_Address* > ptcOPLL; //VRC7, OPLL @@ -86,6 +144,7 @@ class MusicTrack : vector< mml_Address* > ptcSub; //サブルーチンコマンド一覧 vector< mml_Address* > ptcEnv; //エンベロープコマンド一覧 + //メンバー関数 public: MusicTrack(MMLfile* MML, const wchar_t _strName[] = L"==== [ Music Track ]===="); @@ -97,11 +156,11 @@ class MusicTrack : void Optimize(MusicFile* MUS); void Fix_Address(MusicFile* MUS); - void SetEvent(MusicItem* _item); //イベントの追加 bool GetCompileFlag(void){return(compile_flag);}; void SetCompileFlag(bool _flag){compile_flag = _flag;}; + void SetJump(MMLfile* MML); size_t SetEnd(MMLfile* MML); void SetLoop(); @@ -122,17 +181,29 @@ class MusicTrack : void CopyEnvEvent(unsigned char cOpCode, string* sOpCode, list::iterator pt_itMusic); void SetSE(MMLfile* MML); - void SetSubroutine(MMLfile* MML); - void SetEnvelop(unsigned char _opcode, MMLfile* MML, int _offset); + void SetSubroutine(unsigned int _no); + void SetSubWuthParch(unsigned int _no); + // void SetEnvelop(unsigned char _opcode, MMLfile* MML, int _offset); + void SetEnvelop_Evoi(unsigned int _no); + void SetEnvelop_Evol(unsigned int _no); + void SetEnvelop_Em(unsigned int _no); + void SetEnvelop_En(unsigned int _no); + void SetVoice(unsigned int _no); //E@ off + void SetEnvelop_Evol(); //Ev off + void SetEnvelop_Em(); //Em off + void SetEnvelop_En(); //En off + void SetSweep(unsigned char c); + + void SetPatch(MMLfile* MML); + void SetPatch(); //@P off + void CallPatch(MMLfile* MML, char _note); + void SetFDSC(MMLfile* MML); void SetFDSM(MMLfile* MML); void SetVRC7(MMLfile* MML); void SetN163(MMLfile* MML); - - void SetEcho(void); - void SetEcho(MMLfile* MML); - - void SetJump(MMLfile* MML); + void SetN163_Load(MMLfile* MML); + void SetN163_Set(MMLfile* MML); void Set_q(int i); void SetGatetime_Q(MMLfile* MML); @@ -149,13 +220,15 @@ class MusicTrack : void SetScale(MMLfile* MML); void SetKeySignature(MMLfile* MML); //調号の設定 + void SetEcho(void); + void SetEcho(MMLfile* MML); void ResetEcho(); - void GenerateEcho(int Length, int GateTime, bool Slur); + void GenerateEcho(MMLfile* MML, int Length, int GateTime, bool Slur); char calc_note(MMLfile* MML,int note); int calc_length(MMLfile* MML); int calc_gate(MMLfile* MML); bool calc_slur(MMLfile* MML); - void SetNote(int _key, int Length, int GateTime, bool Slur); + void SetNote(MMLfile* MML, int _key, int Length, int GateTime, bool Slur); void SetNote(MMLfile* MML, int note); void SetRest(MMLfile* MML, int mode); void SetTai(MMLfile* MML); @@ -167,6 +240,9 @@ class MusicTrack : void SetKeyShift(MMLfile* MML); void SetKeyShift_Relative(MMLfile* MML); + void SetTranspose(int _no); + void SetTranspose_Relative(int _no); + void SetOctave(MMLfile* MML); void SetOctaveInc(); void SetOctaveDec(); @@ -174,15 +250,25 @@ class MusicTrack : void SetOctaveOne_Dec(); void SetVolume(char _v){volume = _v; opt_volume = volume;}; - void IncVolume(void){ volume++; if(volume>15){volume = 15;} opt_volume = volume; }; - void DecVolume(void){ volume--; if(volume<0){volume = 0;} opt_volume = volume; }; + void IncVolume(void){ volume++; if(volume>15){volume = 15;} if(opt_volume != -1){opt_volume = volume;} }; + void DecVolume(void){ volume--; if(volume<0){volume = 0;} if(opt_volume != -1){opt_volume = volume;} }; + int Get_opt_volume(void){ return(opt_volume); }; + unsigned int GetDefaultLength(void){return(DefaultLength);}; void Reset_opt(void){ + opt_octave = -1; opt_volume = -1; opt_gatetime_q = -1; opt_gatetime_u = -1; opt_DefaultLength = -1; + f_opt_Voi = false; // + f_opt_Evoi = false; // + f_opt_Evol = false; // + f_opt_Em = false; // + f_opt_En = false; // + f_opt_Key = false; // + f_opt_Sweep = false; // + f_opt_Sub = false; // } - int Get_opt_volume(void){ return(opt_volume); }; }; diff --git a/src/nsc/N163.cpp b/src/nsc/N163.cpp index c4869cc..d346552 100644 --- a/src/nsc/N163.cpp +++ b/src/nsc/N163.cpp @@ -12,7 +12,7 @@ // 無し //============================================================== N163::N163(MMLfile* MML, unsigned int _id, const wchar_t _strName[]): - MusicItem(_strName), + MusicItem(_id, _strName), f_Use(false), m_id(_id) { diff --git a/src/nsc/N163.h b/src/nsc/N163.h index ee5cdb0..28a13ce 100644 --- a/src/nsc/N163.h +++ b/src/nsc/N163.h @@ -18,9 +18,9 @@ class N163 : //メンバー関数 public: - N163(MMLfile* MML, unsigned int _id, const wchar_t _strName[] = L"==== [ N163 ]===="); + N163(MMLfile* MML, unsigned int _id, const wchar_t _strName[] = L"N163"); ~N163(void); - void getAsm(MusicFile* MUS); void setUse(void){f_Use = true;}; bool chkUse(void){return(f_Use);}; + void getAsm(MusicFile* MUS); }; diff --git a/src/nsc/Patch.cpp b/src/nsc/Patch.cpp new file mode 100644 index 0000000..64ebacd --- /dev/null +++ b/src/nsc/Patch.cpp @@ -0,0 +1,583 @@ +#include "StdAfx.h" +#include "Patch.h" + +/****************************************************************/ +/* グローバル変数(クラスだけど・・・) */ +/****************************************************************/ +extern OPSW* cOptionSW; //オプション情報へのポインタ変数 + +//============================================================== +// コンストラクタ +//-------------------------------------------------------------- +// ●引数 +// MMLfile* MML MMLファイルのオブジェクト +// int _id パッチ番号 +// ●返値 +// 無し +//============================================================== +Patch::Patch(MMLfile* MML, int _id): + m_id(_id) +{ + //---------------------- + //Local変数 + + +// 定数定義 +enum Command_ID_mml { + Patch_C, + Patch_Cis, + Patch_D, + Patch_Dis, + Patch_E, + Patch_F, + Patch_Fis, + Patch_G, + Patch_Gis, + Patch_A, + Patch_Ais, + Patch_B, + Patch_Note, + + Patch_Off_Evoi, + Patch_Off_Evol, + Patch_Off_Em, + Patch_Off_En, + + Patch_Evoi, + Patch_Evol, + Patch_Em, + Patch_En, + + Patch_Voice, + Patch_KeyShift, + Patch_n163set, + Patch_Sweep, + Patch_Sub + +}; + +// これらは、MML構文で使えるコマンド。 +const static Command_Info Command[] = { + { "c#", Patch_Cis }, + { "d#", Patch_Dis }, + { "f#", Patch_Fis }, + { "g#", Patch_Gis }, + { "a#", Patch_Ais }, + + { "c+", Patch_Cis }, + { "d+", Patch_Dis }, + { "f+", Patch_Fis }, + { "g+", Patch_Gis }, + { "a+", Patch_Ais }, + + { "d-", Patch_Cis }, + { "e-", Patch_Dis }, + { "g-", Patch_Fis }, + { "a-", Patch_Gis }, + { "b-", Patch_Ais }, + + { "c", Patch_C }, + { "d", Patch_D }, + { "e", Patch_E }, + { "f", Patch_F }, + { "g", Patch_G }, + { "a", Patch_A }, + { "b", Patch_B }, + + { "ど#", Patch_Cis }, + { "れ#", Patch_Dis }, + { "ふぁ#", Patch_Fis }, + { "ふ#", Patch_Fis }, + { "そ#", Patch_Gis }, + { "ら#", Patch_Ais }, + + { "れ-", Patch_Cis }, + { "み-", Patch_Dis }, + { "そ-", Patch_Fis }, + { "ら-", Patch_Gis }, + { "し-", Patch_Ais }, + + { "ど", Patch_C }, + { "れ", Patch_D }, + { "み", Patch_E }, + { "ふぁ", Patch_F }, + { "ふ", Patch_F }, + { "そ", Patch_G }, + { "ら", Patch_A }, + { "し", Patch_B }, + + { "ド#", Patch_Cis }, + { "レ#", Patch_Dis }, + { "ファ#", Patch_Fis }, + { "フ#", Patch_Fis }, + { "ソ#", Patch_Gis }, + { "ラ#", Patch_Ais }, + + { "レ-", Patch_Cis }, + { "ミ-", Patch_Dis }, + { "ソ-", Patch_Fis }, + { "ラ-", Patch_Gis }, + { "シ-", Patch_Ais }, + + { "ド", Patch_C }, + { "レ", Patch_D }, + { "ミ", Patch_E }, + { "ファ", Patch_F }, + { "フ", Patch_F }, + { "ソ", Patch_G }, + { "ラ", Patch_A }, + { "シ", Patch_B }, + + { "n", Patch_Note }, + + + { "E@*", Patch_Off_Evoi }, + { "Ev*", Patch_Off_Evol }, + { "Em*", Patch_Off_Em }, + { "En*", Patch_Off_En }, + + { "E@", Patch_Evoi }, + { "Ev", Patch_Evol }, + { "Em", Patch_Em }, + { "En", Patch_En }, + + { "s", Patch_Sweep }, + { "@NS", Patch_n163set }, + { "@", Patch_Voice }, + { "_", Patch_KeyShift }, + { "S", Patch_Sub } + +}; + + int i; + unsigned char cData; + + //------------------------------ + //クラスの初期設定 + setN(MML, 0); //ノート番号 0 の情報は必ず作成する。 + + + //------------------------------ + //コンパイル + + // { の検索 + while(MML->cRead() != '{'){ + if(MML->eof()){ + MML->Err(L"ブロックの開始を示す{が見つかりません。"); + } + } + + // } が来るまで、記述ブロック内をコンパイルする。 + while((cData = MML->GetChar()) != '}'){ + + // } が来る前に、[EOF]が来たらエラー + if( MML->eof() ){ + MML->Err(L"ブロックの終端を示す`}'がありません。"); + } + + //1つ戻る + MML->Back(); + + + //各コマンド毎の処理 + switch(MML->GetCommandID(Command, sizeof(Command)/sizeof(Command_Info))){ + + case(Patch_C): + setKey(MML, 0); + break; + + case(Patch_Cis): + setKey(MML, 1); + break; + + case(Patch_D): + setKey(MML, 2); + break; + + case(Patch_Dis): + setKey(MML, 3); + break; + + case(Patch_E): + setKey(MML, 4); + break; + + case(Patch_F): + setKey(MML, 5); + break; + + case(Patch_Fis): + setKey(MML, 6); + break; + + case(Patch_G): + setKey(MML, 7); + break; + + case(Patch_Gis): + setKey(MML, 8); + break; + + case(Patch_A): + setKey(MML, 9); + break; + + case(Patch_Ais): + setKey(MML, 10); + break; + + case(Patch_B): + setKey(MML, 11); + break; + + case(Patch_Note): + setN(MML, MML->GetInt()); + break; + + case(Patch_Voice): + if(m_now_Patch->fEvoi == true){ + MML->Err(L"音色エンベロープと同時に定義することはできません。"); + } + if(m_now_Patch->fVoi == true){ + MML->Err(L"音色の2重定義です。"); + } + i = MML->GetInt(); + if( (i<0) || (i>255) ){ + MML->Err(L"音色は0〜255の範囲で指定してください。"); + } + m_now_Patch->iVoi = i; + m_now_Patch->fVoi = true; + m_now_Patch->sw_Evoi = false; + break; + + case(Patch_Off_Evoi): + MML->Err(L"音色エンベロープは、@コマンドで無効にできます。"); + break; + + case(Patch_Off_Evol): + if(m_now_Patch->fEvol == true){ + MML->Err(L"音量エンベロープの2重定義です。"); + } + m_now_Patch->fEvol = true; + m_now_Patch->sw_Evol = false; + break; + + case(Patch_Off_Em): + if(m_now_Patch->fEm == true){ + MML->Err(L"音程エンベロープの2重定義です。"); + } + m_now_Patch->fEm = true; + m_now_Patch->sw_Em = false; + break; + + case(Patch_Off_En): + if(m_now_Patch->fEn == true){ + MML->Err(L"ノートエンベロープの2重定義です。"); + } + m_now_Patch->fEn = true; + m_now_Patch->sw_En = false; + break; + + case(Patch_Evoi): + if(m_now_Patch->fEvoi == true){ + MML->Err(L"音色エンベロープの2重定義です。"); + } + if(m_now_Patch->fVoi == true){ + MML->Err(L"音色と同時に定義することはできません。"); + } + m_now_Patch->iEvoi = MML->GetInt(); + m_now_Patch->fEvoi = true; + m_now_Patch->sw_Evoi = true; + break; + + case(Patch_Evol): + if(m_now_Patch->fEvol == true){ + MML->Err(L"音量エンベロープの2重定義です。"); + } + m_now_Patch->iEvol = MML->GetInt(); + m_now_Patch->fEvol = true; + m_now_Patch->sw_Evol = true; + break; + + case(Patch_Em): + if(m_now_Patch->fEm == true){ + MML->Err(L"音程エンベロープの2重定義です。"); + } + m_now_Patch->iEm = MML->GetInt(); + m_now_Patch->fEm = true; + m_now_Patch->sw_Em = true; + break; + + case(Patch_En): + if(m_now_Patch->fEn == true){ + MML->Err(L"ノートエンベロープの2重定義です。"); + } + m_now_Patch->iEn = MML->GetInt(); + m_now_Patch->fEn = true; + m_now_Patch->sw_En = true; + break; + + case(Patch_KeyShift): + if(m_now_Patch->fKey == true){ + MML->Err(L"移調の2重定義です。"); + } + m_now_Patch->iKey = MML->GetInt(); + m_now_Patch->fKey = true; + break; + + case(Patch_Sweep): + if(m_now_Patch->fSweep == true){ + MML->Err(L"sコマンドの2重定義です。"); + } else { + int iSpeed; + int iDepth; + char c; + + iSpeed = MML->GetInt(); + cData = MML->GetChar(); + if(cData != ','){ + if( (iSpeed < 0) || (iSpeed > 255) ){ + MML->Err(L"sコマンドは0〜255の範囲で指定してください。"); + } + MML->Back(); + c = (unsigned char)iSpeed; + } else { + if( (iSpeed < 0) || (iSpeed > 15) ){ + MML->Err(L"sコマンドの第1パラメータは0〜15の範囲で指定してください。"); + } + iDepth = MML->GetInt(); + if( (iDepth < 0) || (iDepth > 15) ){ + MML->Err(L"sコマンドの第2パラメータは0〜15の範囲で指定してください。"); + } + c = (unsigned char)(((iSpeed & 0x0F) << 4) | (iDepth & 0x0F)); + } + m_now_Patch->iSweep = c; + m_now_Patch->fSweep = true; + } + break; + + case(Patch_n163set): + if(m_now_Patch->fVoi == true){ + MML->Err(L"@コマンドが既に指定されています。"); + } + if(m_now_Patch->fEvoi == true){ + MML->Err(L"E@コマンドが既に指定されています。"); + } + i = MML->GetInt(); + if((i<0) || (i>252)){ + MML->Err(L"n16xの波形開始点は0〜252の範囲で指定してください。"); + } + if((i % 4) != 0){ + MML->Err(L"n16xの波形開始点は4の倍数で指定してください。"); + } + m_now_Patch->iVoi = i/4; + m_now_Patch->fVoi = true; + m_now_Patch->sw_Evoi = false; + cData = MML->GetChar(); + if(cData == ','){ + if(m_now_Patch->fSweep == true){ + MML->Err(L"sコマンドが既に指定されています。"); + } + i = MML->GetInt(); + if((i<4) || (i>256)){ + MML->Err(L"n16xのサンプル長は4〜256の範囲で指定してください。"); + } + if((i % 4) != 0){ + MML->Err(L"n16xのサンプル長は4の倍数で指定してください。"); + } + m_now_Patch->iSweep = 64 - (i/4); + m_now_Patch->fSweep = true; + } else { + MML->Back(); + } + break; + + case(Patch_Sub): + if(m_now_Patch->fSub == true){ + MML->Err(L"サブルーチンの2重定義です。"); + } + m_now_Patch->iSub = MML->GetInt(); + m_now_Patch->fSub = true; + break; + + //unknown command + default: + MML->Err(L"unknown command"); + break; + } + } + + //Debug message (うざい程出力するので注意。) + if(cOptionSW->cDebug & 0x01){ + DebugMsg(); + } +} + +//============================================================== +// デストラクタ +//-------------------------------------------------------------- +// ●引数 +// 無し +// ●返値 +// 無し +//============================================================== +Patch::~Patch(void) +{ + //---------------------- + //Local変数 + map::iterator itPatch; + + //---------------------- + //Delete Class + if(!m_Patch.empty()){ + itPatch = m_Patch.begin(); + while(itPatch != m_Patch.end()){ + delete itPatch->second; + itPatch++; + } + m_Patch.clear(); + } +} + +//============================================================== +// デバッグ用 +//-------------------------------------------------------------- +// ●引数 +// 無し +// ●返値 +// 無し +//============================================================== +void Patch::DebugMsg(void) +{ + //---------------------- + //Local変数 + map::iterator itPatch; + + //---------------------- + //Delete Class + cout << "==== [ Patch(" << m_id << ") ] ====" << endl; + + if(!m_Patch.empty()){ + itPatch = m_Patch.begin(); + while(itPatch != m_Patch.end()){ + m_now_Patch = itPatch->second; + + cout << " n" << itPatch->first; + if(get_fSub()){ cout << " S" << get_iSub(); }; + if(get_fKey()){ cout << " _" << get_iKey(); }; + if(get_fSweep()){cout << " s" << (int)get_iSweep(); }; + if(get_fVoi()){ cout << " @" << get_iVoi(); }; + if(get_fEvoi()){cout << " E@" << get_iEvoi(); }; + + if(get_fEvol()){ + if(get_sw_Evol()){ + cout << " Ev*"; + } else { + cout << " Ev" << get_iEvol(); + } + }; + + if(get_fEm()){ + if(get_sw_Em()){ + cout << " Em*"; + } else { + cout << " Em" << get_iEm(); + } + }; + + if(get_fEn()){ + if(get_sw_En()){ + cout << " En*"; + } else { + cout << " En" << get_iEn(); + } + }; + + cout << endl; + itPatch++; + } + } +} + +//============================================================== +// 設定 +//-------------------------------------------------------------- +// ●引数 +// MMLfile* MML MMLファイルのオブジェクト +// int key キー番号(0:C / 1:Cis / ...) +// ●返値 +// 無し +//============================================================== +void Patch::setKey(MMLfile* MML, int key) +{ + setN(MML, ((MML->GetInt()-1) * 12) + key); +} + +//============================================================== +// 設定 +//-------------------------------------------------------------- +// ●引数 +// MMLfile* MML MMLファイルのオブジェクト +// int note ノート番号 +// ●返値 +// 無し +//============================================================== +void Patch::setN(MMLfile* MML, int note) +{ + + if((note<0) || (note>255)){ + MML->Err(L"音階の範囲を超えています。"); + } + + //パッチの設定 + m_kn = note; + + if(m_Patch.count(m_kn) != 0){ + //既存パッチのロード + m_now_Patch = m_Patch[m_kn]; + } else { + //パッチの新規作成 + m_now_Patch = new patch_scrap; + m_Patch[m_kn] = m_now_Patch; + + m_now_Patch->fVoi = false; + m_now_Patch->fEvoi = false; + m_now_Patch->fEvol = false; + m_now_Patch->fEm = false; + m_now_Patch->fEn = false; + m_now_Patch->fSub = false; + + m_now_Patch->sw_Evoi= false; + m_now_Patch->sw_Evol= false; + m_now_Patch->sw_Em = false; + m_now_Patch->sw_En = false; + } + +} + +//============================================================== +// +//-------------------------------------------------------------- +// ●引数 +// int note ノート番号 +// ●返値 +// +//============================================================== +void Patch::setNote(int i) +{ + bool f_set = false; + + m_kn = i; + + while(m_kn > 0){ + if(m_Patch.count(m_kn) != 0){ + f_set = true; + break; + } else { + m_kn--; + } + } + + m_now_Patch = m_Patch[m_kn]; + +} diff --git a/src/nsc/Patch.h b/src/nsc/Patch.h new file mode 100644 index 0000000..0ba9079 --- /dev/null +++ b/src/nsc/Patch.h @@ -0,0 +1,93 @@ +#pragma once + +/****************************************************************/ +/* */ +/* 構造体定義 */ +/* */ +/****************************************************************/ +typedef struct{ + + //設定数値 + unsigned int iVoi; // + unsigned int iEvoi; // + unsigned int iEvol; // + unsigned int iEm; // + unsigned int iEn; // + unsigned int iKey; //KeyShift + unsigned char iSweep; // + unsigned int iSub; // + + //設定するかどうか(defailt = false) + bool fVoi; // + bool fEvoi; // + bool fEvol; // + bool fEm; // + bool fEn; // + bool fKey; // + bool fSweep; // + bool fSub; // + + //エンベロープのsw(有る場合 true) + bool sw_Evoi; // + bool sw_Evol; // + bool sw_Em; // + bool sw_En; // + +} patch_scrap; + +/****************************************************************/ +/* */ +/* クラス定義 */ +/* */ +/****************************************************************/ +class Patch +{ +//メンバー変数 +protected: + + unsigned int m_id; //パッチ番号 + map m_Patch; //パッチの情報 + + unsigned int m_kn; //処理中のノート番号 + + patch_scrap* m_now_Patch; //処理中のパッチのポインタ + + +//メンバー関数 +public: + Patch( MMLfile* MML, int _id); + ~Patch(void); + + //Patch オブジェクト生成部 + void setKey( MMLfile* MML, int key); + void setN( MMLfile* MML, int note); + + void DebugMsg(void); + + //シーケンス記述ブロックから呼ぶ関数群 + void setNote(int i); //ノート番号のセット + + unsigned int get_iVoi(void){ return(m_now_Patch->iVoi);}; + unsigned int get_iEvoi(void){ return(m_now_Patch->iEvoi);}; + unsigned int get_iEvol(void){ return(m_now_Patch->iEvol);}; + unsigned int get_iEm(void){ return(m_now_Patch->iEm);}; + unsigned int get_iEn(void){ return(m_now_Patch->iEn);}; + unsigned int get_iKey(void){ return(m_now_Patch->iKey);}; + unsigned char get_iSweep(void){ return(m_now_Patch->iSweep);}; + unsigned int get_iSub(void){ return(m_now_Patch->iSub);}; + + bool get_fVoi(void){ return(m_now_Patch->fVoi);}; + bool get_fEvoi(void){ return(m_now_Patch->fEvoi);}; + bool get_fEvol(void){ return(m_now_Patch->fEvol);}; + bool get_fEm(void){ return(m_now_Patch->fEm);}; + bool get_fEn(void){ return(m_now_Patch->fEn);}; + bool get_fKey(void){ return(m_now_Patch->fKey);}; + bool get_fSweep(void){ return(m_now_Patch->fSweep);}; + bool get_fSub(void){ return(m_now_Patch->fSub);}; + + bool get_sw_Evoi(void){ return(m_now_Patch->sw_Evoi);}; + bool get_sw_Evol(void){ return(m_now_Patch->sw_Evol);}; + bool get_sw_Em(void){ return(m_now_Patch->sw_Em);}; + bool get_sw_En(void){ return(m_now_Patch->sw_En);}; + +}; diff --git a/src/nsc/Release/nsc.exe b/src/nsc/Release/nsc.exe index 4184576..4a9a61d 100644 Binary files a/src/nsc/Release/nsc.exe and b/src/nsc/Release/nsc.exe differ diff --git a/src/nsc/SE.h b/src/nsc/SE.h index f8fad53..d6cc874 100644 --- a/src/nsc/SE.h +++ b/src/nsc/SE.h @@ -16,7 +16,7 @@ class SE : public TrackSet public: - SE(MMLfile* MML, unsigned int _id, wchar_t _strName[] = L"==== [ SE ]===="); + SE(MMLfile* MML, unsigned int _id, wchar_t _strName[] = L"SE"); ~SE(); void getAsm(MusicFile* MUS); diff --git a/src/nsc/Sub.h b/src/nsc/Sub.h index 8eec33e..f4363d6 100644 --- a/src/nsc/Sub.h +++ b/src/nsc/Sub.h @@ -18,10 +18,9 @@ class Sub : public TrackSet private: bool f_Use; //MML中で使われるか? -//メンバー関数 public: - Sub(MMLfile* MML, unsigned int _id, wchar_t _strName[] = L"==== [ Sub ]===="); + Sub(MMLfile* MML, unsigned int _id, wchar_t _strName[] = L"Sub"); ~Sub(); void getAsm(MusicFile* MUS); diff --git a/src/nsc/TrackSet.cpp b/src/nsc/TrackSet.cpp index 494d938..0131af6 100644 --- a/src/nsc/TrackSet.cpp +++ b/src/nsc/TrackSet.cpp @@ -13,7 +13,7 @@ // 無し //============================================================== TrackSet::TrackSet(MMLfile* MML, unsigned int _id, bool _sub, bool _se, const wchar_t _strName[]): - MusicItem(_strName), + MusicItem(_id, _strName), iTempo(120), m_id(_id) { @@ -81,17 +81,22 @@ enum Command_ID_mml { mml_Envelop_Off_Frequency, mml_Envelop_Off_Note, + mml_Patch, + mml_Patch_Off, + mml_Release_mdoe, mml_Release_Voice, mml_Release_Volume, + mml_Voice, mml_FDSC, mml_FDSM, mml_FDSF, mml_FDSV, mml_VRC7, mml_N163, - mml_Voice, + mml_N163_Set, + mml_N163_Load, mml_N163_Channel, mml_FME7_frequency, @@ -247,11 +252,16 @@ const static Command_Info Command[] = { { "R@", mml_Release_Voice }, { "Rv", mml_Release_Volume }, + { "@P*", mml_Patch_Off }, + { "@P", mml_Patch }, + { "@FC", mml_FDSC }, { "@FM", mml_FDSM }, { "@FF", mml_FDSF }, { "@FV", mml_FDSV }, { "@V", mml_VRC7 }, + { "@NS", mml_N163_Set }, + { "@NL", mml_N163_Load }, { "@N", mml_N163 }, { "@", mml_Voice }, { "音色", mml_Voice }, @@ -398,7 +408,7 @@ const static Command_Info Command[] = { break; case(mml_Subroutine): - nowTrack->SetSubroutine(MML); + nowTrack->SetSubroutine(MML->GetInt()); break; case(mml_Loop): @@ -554,19 +564,23 @@ const static Command_Info Command[] = { break; case(mml_Envelop_Voice): - nowTrack->SetEnvelop(nsd_Envelop_Voice, MML, MML->offset_Ei); + nowTrack->SetEnvelop_Evoi(MML->GetInt() + MML->offset_Ei); + // nowTrack->SetEnvelop(nsd_Envelop_Voice, MML, MML->offset_Ei); break; case(mml_Envelop_Volume): - nowTrack->SetEnvelop(nsd_Envelop_Volume, MML, MML->offset_Ev); + nowTrack->SetEnvelop_Evol(MML->GetInt() + MML->offset_Ev); + // nowTrack->SetEnvelop(nsd_Envelop_Volume, MML, MML->offset_Ev); break; case(mml_Envelop_Frequency): - nowTrack->SetEnvelop(nsd_Envelop_Frequency, MML, MML->offset_Em); + nowTrack->SetEnvelop_Em(MML->GetInt() + MML->offset_Em); + // nowTrack->SetEnvelop(nsd_Envelop_Frequency, MML, MML->offset_Em); break; case(mml_Envelop_Note): - nowTrack->SetEnvelop(nsd_Envelop_Note, MML, MML->offset_En); + nowTrack->SetEnvelop_En(MML->GetInt() + MML->offset_En); + // nowTrack->SetEnvelop(nsd_Envelop_Note, MML, MML->offset_En); break; case(mml_Envelop_Off_Voice): @@ -574,15 +588,26 @@ const static Command_Info Command[] = { break; case(mml_Envelop_Off_Volume): - SetEvent(new mml_Address(nsd_Envelop_Volume)); + nowTrack->SetEnvelop_Evol(); + // SetEvent(new mml_Address(nsd_Envelop_Volume)); break; case(mml_Envelop_Off_Frequency): - SetEvent(new mml_Address(nsd_Envelop_Frequency)); + nowTrack->SetEnvelop_Em(); + // SetEvent(new mml_Address(nsd_Envelop_Frequency)); break; case(mml_Envelop_Off_Note): - SetEvent(new mml_Address(nsd_Envelop_Note)); + nowTrack->SetEnvelop_En(); + // SetEvent(new mml_Address(nsd_Envelop_Note)); + break; + + case(mml_Patch): + nowTrack->SetPatch(MML); + break; + + case(mml_Patch_Off): + nowTrack->SetPatch(); break; case(mml_Release_mdoe): @@ -598,7 +623,8 @@ const static Command_Info Command[] = { break; case(mml_Voice): - SetEvent(new mml_general(nsd_Voice, MML, L"Voice")); + nowTrack->SetVoice(MML->GetInt()); + // SetEvent(new mml_general(nsd_Voice, MML, L"Voice")); break; case(mml_FDSC): @@ -625,6 +651,14 @@ const static Command_Info Command[] = { nowTrack->SetN163(MML); break; + case(mml_N163_Set): + nowTrack->SetN163_Set(MML); + break; + + case(mml_N163_Load): + nowTrack->SetN163_Load(MML); + break; + case(mml_N163_Channel): SetN163Channel(MML); break; @@ -670,11 +704,17 @@ const static Command_Info Command[] = { break; case(mml_Transpose): - SetEvent(new mml_general(nsd_Transpose, MML, L"Transpose")); + i = MML->GetInt(); + if( (i < -128) || (i > 127) ){ + MML->Err(L"移調は-127〜128の範囲で指定してください。"); + } + nowTrack->SetTranspose(i); + //SetEvent(new mml_general(nsd_Transpose, MML, L"Transpose")); break; case(mml_Transpose_Relative): - SetEvent(new mml_general(nsd_Relative_Transpose, MML, L"Relative Transpose")); + nowTrack->SetTranspose_Relative(MML->GetInt()); + //SetEvent(new mml_general(nsd_Relative_Transpose, MML, L"Relative Transpose")); break; case(mml_KeyShift): @@ -769,6 +809,20 @@ TrackSet::~TrackSet(void) { } +//============================================================== +// クリア +//-------------------------------------------------------------- +// ●引数 +// 無し +// ●返値 +// 無し +//============================================================== +void TrackSet::clear(int _id) +{ + maxTrack = -1; + MusicItem::clear(_id); +} + //============================================================== // カウント //-------------------------------------------------------------- @@ -1295,8 +1349,7 @@ void TrackSet::SetSweep(MMLfile* MML) } _data = (unsigned char)(((iSpeed & 0x0F) << 4) | (iDepth & 0x0F)); } - - SetEvent(new mml_general(nsd_Sweep, _data, L"Sweep")); + nowTrack->SetSweep(_data); } //============================================================== diff --git a/src/nsc/TrackSet.h b/src/nsc/TrackSet.h index 66e9f58..7db4d3a 100644 --- a/src/nsc/TrackSet.h +++ b/src/nsc/TrackSet.h @@ -25,7 +25,6 @@ class TrackSet : unsigned int TrackPt; // unsigned int TrackLine; // unsigned char Priority; // - //メンバー関数 public: TrackSet(MMLfile* MML, unsigned int _id, bool _sub, bool _se, const wchar_t _strName[] = L"==== [ Track Set ]===="); @@ -35,6 +34,7 @@ class TrackSet : void getAsm(MusicFile* MUS); void Optimize(MusicFile* MUS); + void clear(int _id); void Fix_Address(MusicFile* MUS); void TrackChk(MMLfile* MML); diff --git a/src/nsc/VRC7.cpp b/src/nsc/VRC7.cpp index c1ac91d..e0759ea 100644 --- a/src/nsc/VRC7.cpp +++ b/src/nsc/VRC7.cpp @@ -12,7 +12,7 @@ // 無し //============================================================== VRC7::VRC7(MMLfile* MML, unsigned int _id, const wchar_t _strName[]): - MusicItem(_strName), + MusicItem(_id, _strName), f_Use(false), m_id(_id) { diff --git a/src/nsc/VRC7.h b/src/nsc/VRC7.h index 3772b62..4887874 100644 --- a/src/nsc/VRC7.h +++ b/src/nsc/VRC7.h @@ -18,9 +18,9 @@ class VRC7 : //メンバー関数 public: - VRC7(MMLfile* MML, unsigned int _id, const wchar_t _strName[] = L"==== [ VRC7 ]===="); + VRC7(MMLfile* MML, unsigned int _id, const wchar_t _strName[] = L"VRC7"); ~VRC7(void); - void getAsm(MusicFile* MUS); void setUse(void){f_Use = true;}; bool chkUse(void){return(f_Use);}; + void getAsm(MusicFile* MUS); }; diff --git a/src/nsc/nsc.cpp b/src/nsc/nsc.cpp index a483c8e..afe3823 100644 --- a/src/nsc/nsc.cpp +++ b/src/nsc/nsc.cpp @@ -49,6 +49,7 @@ int main(int argc, char* argv[]) wcout << L"----------------------------------------" << endl; wcout << L"*Address settlement process" << endl; + //MMLから呼ばれるオブジェクトの検索 & 呼ばれないオブジェクトの削除 cSND->Optimize(); @@ -61,8 +62,6 @@ int main(int argc, char* argv[]) //アドレスを引数にもつオペコードのアドレス解決 cSND->Fix_Address(); - - //================================== //保存 if(cOptionSW->cDebug & 0x04){ diff --git a/src/nsc/nsc.ncb b/src/nsc/nsc.ncb index 19c3c9b..5ac2b7e 100644 Binary files a/src/nsc/nsc.ncb and b/src/nsc/nsc.ncb differ diff --git a/src/nsc/nsc.suo b/src/nsc/nsc.suo index b9fb923..b62b396 100644 Binary files a/src/nsc/nsc.suo and b/src/nsc/nsc.suo differ diff --git a/src/nsc/nsc.vcproj b/src/nsc/nsc.vcproj index f3402e0..1353a34 100644 --- a/src/nsc/nsc.vcproj +++ b/src/nsc/nsc.vcproj @@ -183,6 +183,9 @@ + + @@ -313,6 +316,9 @@ + + diff --git a/src/nsc/stdafx.h b/src/nsc/stdafx.h index 341400a..328a70d 100644 --- a/src/nsc/stdafx.h +++ b/src/nsc/stdafx.h @@ -50,6 +50,8 @@ typedef struct { #include "MusicItem.h" +#include "Patch.h" + #include "FDSC.h" #include "FDSM.h" #include "VRC7.h" diff --git a/src/rom/crt0.s b/src/rom/crt0.s index fddba69..0090c3c 100644 --- a/src/rom/crt0.s +++ b/src/rom/crt0.s @@ -106,12 +106,12 @@ _play: .byte 0 .segment "DRVINFO" DRV_Name: .byte $4E, $53, $44, $4C, $20, $20 DRV_Version: .byte 1 - .byte 18 + .byte 19 .segment "STARTUP" DRV_Name2: .byte $4E, $53, $44, $4C, $20, $20 DRV_Version2: .byte 1 - .byte 18 + .byte 19 ; ------------------------------------------------------------------------ ; 実機ROM用 IRQ (DPCM)