1
0
mirror of https://github.com/sehugg/8bitworkshop.git synced 2024-12-23 03:29:39 +00:00

nes: update presets, famitone; show asm listing files

This commit is contained in:
Steven Hugg 2019-02-20 19:38:30 -05:00
parent 764b230599
commit e9d207fa84
15 changed files with 3387 additions and 23 deletions

View File

@ -90,12 +90,12 @@ TODO:
- HTTPS warning
- Safari: scope doesn't show while CRT in use
- recording video indicator
- verilog: support VGA/multisync monitor?
- stego shareable images (http://pico-8.wikia.com/wiki/P8PNGFileFormat)
- https://makecode.com/language?
- show .map file in listings?
- show .map file in listings? memory map view?
- open ROM from URL?
- NES: breakpoint on illegal instruction
- NES: disassembly not aligned on PC
- NES: listing for .s files
WEB WORKER FORMAT

70
presets/nes/demosounds.s Normal file
View File

@ -0,0 +1,70 @@
;this file for FamiTone2 libary generated by nsf2data tool
.export _demo_sounds
_demo_sounds:
.word @ntsc
.word @pal
@ntsc:
.word @sfx_ntsc_0
.word @sfx_ntsc_1
.word @sfx_ntsc_2
.word @sfx_ntsc_3
@pal:
.word @sfx_pal_0
.word @sfx_pal_1
.word @sfx_pal_2
.word @sfx_pal_3
@sfx_ntsc_0:
.byte $80,$bf,$81,$56,$82,$03,$83,$bf,$84,$a6,$85,$02,$04,$81,$3a,$82
.byte $02,$84,$c4,$85,$01,$04,$81,$ab,$82,$01,$84,$52,$04,$81,$1c,$84
.byte $e1,$85,$00,$04,$81,$d5,$82,$00,$84,$a9,$04,$80,$b8,$81,$1c,$82
.byte $01,$83,$b8,$84,$e1,$04,$81,$d5,$82,$00,$84,$a9,$04,$80,$30,$00
@sfx_pal_0:
.byte $80,$bf,$81,$19,$82,$03,$83,$bf,$84,$75,$85,$02,$04,$81,$11,$82
.byte $02,$84,$a4,$85,$01,$03,$81,$8c,$82,$01,$84,$3a,$03,$81,$08,$84
.byte $d1,$85,$00,$04,$81,$c6,$82,$00,$84,$9d,$03,$80,$b8,$81,$08,$82
.byte $01,$83,$b8,$84,$d1,$03,$81,$c6,$82,$00,$84,$9d,$04,$80,$30,$00
@sfx_ntsc_1:
.byte $89,$3f,$8a,$0d,$01,$8a,$0b,$01,$8a,$09,$01,$8a,$07,$01,$8a,$05
.byte $01,$8a,$03,$01,$89,$3e,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$8a
.byte $0b,$01,$89,$3d,$8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$8a,$03,$01
.byte $89,$3c,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$8a,$0b,$01,$89,$3b
.byte $8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$8a,$03,$01,$89,$3a,$8a,$01
.byte $01,$8a,$0f,$01,$8a,$0d,$01,$8a,$0b,$01,$89,$39,$8a,$09,$01,$8a
.byte $07,$01,$8a,$05,$01,$8a,$03,$01,$89,$38,$8a,$01,$01,$8a,$0f,$01
.byte $8a,$0d,$01,$8a,$0b,$01,$89,$37,$8a,$09,$01,$8a,$07,$01,$8a,$05
.byte $01,$8a,$03,$01,$89,$36,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$8a
.byte $0b,$01,$89,$35,$8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$8a,$03,$01
.byte $89,$34,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$8a,$0b,$01,$89,$33
.byte $8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$8a,$03,$01,$89,$32,$8a,$01
.byte $01,$8a,$0f,$01,$8a,$0d,$01,$8a,$0b,$01,$89,$31,$8a,$09,$01,$8a
.byte $07,$01,$8a,$05,$01,$8a,$03,$01,$8a,$01,$01,$8a,$0f,$01,$8a,$0d
.byte $01,$00
@sfx_pal_1:
.byte $89,$3f,$8a,$0d,$01,$8a,$0b,$01,$8a,$09,$01,$8a,$07,$01,$8a,$05
.byte $01,$89,$3e,$8a,$03,$01,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$89
.byte $3d,$8a,$0b,$01,$8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$89,$3c,$8a
.byte $03,$01,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$89,$3b,$8a,$0b,$01
.byte $8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$89,$3a,$8a,$03,$01,$8a,$01
.byte $01,$8a,$0f,$01,$8a,$0d,$01,$89,$39,$8a,$0b,$01,$8a,$09,$01,$8a
.byte $07,$01,$8a,$05,$01,$89,$38,$8a,$03,$01,$8a,$01,$01,$8a,$0f,$01
.byte $8a,$0d,$01,$89,$37,$8a,$0b,$01,$8a,$09,$01,$8a,$07,$01,$8a,$05
.byte $01,$89,$36,$8a,$03,$01,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$89
.byte $35,$8a,$0b,$01,$8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$89,$34,$8a
.byte $03,$01,$8a,$01,$01,$8a,$0f,$01,$8a,$0d,$01,$89,$33,$8a,$0b,$01
.byte $8a,$09,$01,$8a,$07,$01,$8a,$05,$01,$89,$32,$8a,$03,$01,$8a,$01
.byte $01,$8a,$0f,$01,$8a,$0d,$01,$89,$31,$8a,$0b,$01,$8a,$09,$01,$8a
.byte $07,$01,$8a,$05,$01,$8a,$03,$01,$8a,$01,$01,$8a,$0f,$01,$00
@sfx_ntsc_2:
.byte $80,$bf,$81,$d5,$82,$00,$02,$81,$6a,$02,$80,$b4,$04,$80,$b8,$81
.byte $d5,$02,$81,$6a,$02,$80,$b2,$04,$00
@sfx_pal_2:
.byte $80,$bf,$81,$c6,$82,$00,$02,$81,$62,$02,$80,$b4,$03,$80,$b8,$81
.byte $c6,$02,$81,$62,$01,$80,$b2,$04,$00
@sfx_ntsc_3:
.byte $86,$81,$87,$6a,$88,$00,$01,$87,$70,$01,$87,$6a,$01,$87,$70,$01
.byte $87,$6a,$01,$00
@sfx_pal_3:
.byte $86,$81,$87,$62,$88,$00,$01,$87,$68,$01,$87,$62,$01,$87,$68,$01
.byte $87,$62,$01,$00

55
presets/nes/fami.c Normal file
View File

@ -0,0 +1,55 @@
#include "neslib.h"
//#link "jroatch.c"
extern unsigned char jroatch_chr[0x1000];
#define TILESET jroatch_chr
//#link "famitone2.s"
void __fastcall__ famitone_update(void);
//#link "music_aftertherain.s"
extern char after_the_rain_music_data[];
//#link "music_dangerstreets.s"
extern char danger_streets_music_data[];
//#link "demosounds.s"
extern char demo_sounds[];
void main(void)
{
//copy tileset to RAM
vram_adr(0x0);
vram_write((unsigned char*)TILESET, sizeof(TILESET));
pal_col(1,0x04);
pal_col(2,0x20);
pal_col(3,0x30);
vram_adr(NTADR_A(2,2));
vram_write("FAMITONE2 DEMO", 14);
// initialize music system
//famitone_init(after_the_rain_music_data);
famitone_init(danger_streets_music_data);
sfx_init(demo_sounds);
// set music callback
nmi_set_callback(famitone_update);
// play music
music_play(0);
//enable rendering
ppu_on_all();
// repeat forever
while(1) {
// poll controller 0
char pad = pad_poll(0);
// play sounds when buttons pushed
if (pad & PAD_A) {
sfx_play(0,0);
}
if (pad & PAD_B) {
sfx_play(1,1);
}
if (pad & PAD_LEFT) {
sfx_play(2,2);
}
if (pad & PAD_RIGHT) {
sfx_play(3,3);
}
}
}

1322
presets/nes/famitone2.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -1,4 +1,5 @@
const unsigned char jroatch_chr[] = {
const unsigned char jroatch_chr[0x1000] = {
/*{w:8,h:8,bpp:1,count:256,brev:1,np:2,pofs:8,remap:[0,1,2,4,5,6,7,8,9,10,11,12]}*/
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,869 @@
FT_DPCM_PTR=$c000
.export _danger_streets_music_data
;this file for FamiTone2 library generated by text2data tool
_danger_streets_music_data:
.byte 1
.word @instruments
.word @samples-3
.word @song0ch0,@song0ch1,@song0ch2,@song0ch3,@song0ch4,307,256
@instruments:
.byte $30 ;instrument $00
.word @env1,@env0,@env0
.byte $00
.byte $30 ;instrument $01
.word @env2,@env0,@env0
.byte $00
.byte $30 ;instrument $02
.word @env3,@env14,@env0
.byte $00
.byte $30 ;instrument $03
.word @env4,@env15,@env0
.byte $00
.byte $70 ;instrument $04
.word @env5,@env16,@env0
.byte $00
.byte $70 ;instrument $05
.word @env5,@env17,@env0
.byte $00
.byte $70 ;instrument $06
.word @env6,@env0,@env20
.byte $00
.byte $70 ;instrument $07
.word @env10,@env16,@env21
.byte $00
.byte $70 ;instrument $08
.word @env10,@env17,@env21
.byte $00
.byte $30 ;instrument $09
.word @env1,@env18,@env0
.byte $00
.byte $30 ;instrument $0a
.word @env7,@env0,@env0
.byte $00
.byte $70 ;instrument $0b
.word @env8,@env0,@env20
.byte $00
.byte $70 ;instrument $0c
.word @env9,@env17,@env0
.byte $00
.byte $30 ;instrument $0d
.word @env6,@env0,@env20
.byte $00
.byte $30 ;instrument $0e
.word @env8,@env0,@env20
.byte $00
.byte $70 ;instrument $0f
.word @env5,@env19,@env0
.byte $00
.byte $70 ;instrument $10
.word @env9,@env16,@env0
.byte $00
.byte $70 ;instrument $11
.word @env11,@env16,@env21
.byte $00
.byte $b0 ;instrument $12
.word @env12,@env0,@env0
.byte $00
.byte $30 ;instrument $13
.word @env13,@env0,@env0
.byte $00
@samples:
.byte $00+<(FT_DPCM_PTR),$00,$00 ;1
.byte $00+<(FT_DPCM_PTR),$00,$00 ;2
.byte $00+<(FT_DPCM_PTR),$00,$00 ;3
.byte $00+<(FT_DPCM_PTR),$00,$00 ;4
.byte $00+<(FT_DPCM_PTR),$00,$00 ;5
.byte $00+<(FT_DPCM_PTR),$00,$00 ;6
.byte $00+<(FT_DPCM_PTR),$00,$00 ;7
.byte $00+<(FT_DPCM_PTR),$00,$00 ;8
.byte $00+<(FT_DPCM_PTR),$00,$00 ;9
.byte $00+<(FT_DPCM_PTR),$00,$00 ;10
.byte $00+<(FT_DPCM_PTR),$00,$00 ;11
.byte $00+<(FT_DPCM_PTR),$00,$00 ;12
.byte $00+<(FT_DPCM_PTR),$00,$00 ;13
.byte $00+<(FT_DPCM_PTR),$00,$00 ;14
.byte $00+<(FT_DPCM_PTR),$00,$00 ;15
.byte $00+<(FT_DPCM_PTR),$00,$00 ;16
.byte $00+<(FT_DPCM_PTR),$00,$00 ;17
.byte $00+<(FT_DPCM_PTR),$00,$00 ;18
.byte $00+<(FT_DPCM_PTR),$00,$00 ;19
.byte $00+<(FT_DPCM_PTR),$00,$00 ;20
.byte $00+<(FT_DPCM_PTR),$00,$00 ;21
.byte $00+<(FT_DPCM_PTR),$00,$00 ;22
.byte $00+<(FT_DPCM_PTR),$00,$00 ;23
.byte $00+<(FT_DPCM_PTR),$00,$00 ;24
.byte $00+<(FT_DPCM_PTR),$0c,$0f ;25
.byte $00+<(FT_DPCM_PTR),$00,$00 ;26
.byte $04+<(FT_DPCM_PTR),$1b,$0f ;27
.byte $00+<(FT_DPCM_PTR),$00,$00 ;28
.byte $0b+<(FT_DPCM_PTR),$22,$0f ;29
.byte $14+<(FT_DPCM_PTR),$0d,$0f ;30
.byte $00+<(FT_DPCM_PTR),$00,$00 ;31
.byte $18+<(FT_DPCM_PTR),$0a,$0f ;32
.byte $00+<(FT_DPCM_PTR),$00,$00 ;33
.byte $00+<(FT_DPCM_PTR),$00,$00 ;34
.byte $00+<(FT_DPCM_PTR),$00,$00 ;35
.byte $1b+<(FT_DPCM_PTR),$36,$0f ;36
.byte $00+<(FT_DPCM_PTR),$00,$00 ;37
.byte $00+<(FT_DPCM_PTR),$00,$00 ;38
.byte $00+<(FT_DPCM_PTR),$00,$00 ;39
.byte $00+<(FT_DPCM_PTR),$00,$00 ;40
.byte $00+<(FT_DPCM_PTR),$00,$00 ;41
.byte $00+<(FT_DPCM_PTR),$00,$00 ;42
.byte $00+<(FT_DPCM_PTR),$00,$00 ;43
.byte $00+<(FT_DPCM_PTR),$00,$00 ;44
.byte $00+<(FT_DPCM_PTR),$00,$00 ;45
.byte $00+<(FT_DPCM_PTR),$00,$00 ;46
.byte $00+<(FT_DPCM_PTR),$00,$00 ;47
.byte $00+<(FT_DPCM_PTR),$00,$00 ;48
.byte $00+<(FT_DPCM_PTR),$00,$00 ;49
.byte $00+<(FT_DPCM_PTR),$00,$00 ;50
.byte $00+<(FT_DPCM_PTR),$00,$00 ;51
.byte $00+<(FT_DPCM_PTR),$00,$00 ;52
.byte $00+<(FT_DPCM_PTR),$00,$00 ;53
.byte $00+<(FT_DPCM_PTR),$00,$00 ;54
.byte $00+<(FT_DPCM_PTR),$00,$00 ;55
.byte $00+<(FT_DPCM_PTR),$00,$00 ;56
.byte $00+<(FT_DPCM_PTR),$00,$00 ;57
.byte $00+<(FT_DPCM_PTR),$00,$00 ;58
.byte $00+<(FT_DPCM_PTR),$00,$00 ;59
.byte $00+<(FT_DPCM_PTR),$00,$00 ;60
.byte $00+<(FT_DPCM_PTR),$00,$00 ;61
.byte $00+<(FT_DPCM_PTR),$00,$00 ;62
.byte $00+<(FT_DPCM_PTR),$00,$00 ;63
@env0:
.byte $c0,$00,$00
@env1:
.byte $cf,$00,$00
@env2:
.byte $ca,$c6,$c4,$c3,$c2,$c1,$c1,$c0,$00,$07
@env3:
.byte $cb,$ca,$c9,$c0,$00,$03
@env4:
.byte $cf,$cb,$c7,$c6,$c5,$c4,$c3,$c2,$c1,$c0,$00,$09
@env5:
.byte $c7,$c7,$c6,$c5,$c5,$c4,$c4,$c3,$02,$c2,$02,$c1,$02,$c0,$00,$0d
@env6:
.byte $cc,$cb,$ca,$ca,$c9,$03,$c8,$03,$c7,$07,$c6,$08,$c5,$0a,$c4,$0c
.byte $c3,$0c,$c2,$12,$c1,$19,$c0,$00,$16
@env7:
.byte $c6,$c2,$c1,$03,$c0,$00,$04
@env8:
.byte $c4,$02,$c3,$0c,$c2,$0b,$c1,$12,$c0,$00,$08
@env9:
.byte $c3,$c3,$c2,$03,$c1,$06,$c0,$00,$06
@env10:
.byte $c3,$c3,$c2,$05,$c1,$05,$c0,$00,$06
@env11:
.byte $c3,$c3,$c2,$c2,$c1,$04,$c0,$00,$06
@env12:
.byte $c6,$c6,$c7,$c7,$c6,$c6,$c5,$c5,$c4,$c4,$c3,$03,$c2,$05,$c1,$05
.byte $c0,$00,$10
@env13:
.byte $cf,$c0,$cf,$c0,$00,$03
@env14:
.byte $cc,$c0,$00,$01
@env15:
.byte $c8,$c0,$c4,$00,$02
@env16:
.byte $c0,$c0,$c3,$c3,$c7,$c7,$00,$00
@env17:
.byte $c0,$c0,$c4,$c4,$c7,$c7,$00,$00
@env18:
.byte $c0,$05,$bf,$be,$bd,$bc,$bb,$ba,$b9,$b8,$b7,$b6,$b5,$b4,$b3,$b2
.byte $b1,$b0,$af,$ae,$ad,$ac,$ab,$aa,$a9,$a8,$a8,$a7,$a7,$a6,$a6,$a5
.byte $a5,$a4,$a4,$a3,$a3,$a2,$a2,$a1,$a1,$00,$28
@env19:
.byte $c0,$c0,$c3,$c3,$c8,$c8,$00,$00
@env20:
.byte $c0,$0f,$c1,$02,$c2,$02,$c1,$02,$c0,$c0,$c0,$00,$02
@env21:
.byte $c4,$00,$00
@song0ch0:
.byte $fb,$03
@song0ch0loop:
@ref0:
.byte $87,$88,$2c,$85,$2d,$2c,$85,$2c,$89,$2c,$85,$2d,$2c,$89,$a0,$2c
.byte $85,$88,$2c,$85,$2d,$2c,$85,$2c,$89,$8a,$32,$85,$37,$36,$85,$98
.byte $36,$81
@ref1:
.byte $87,$88,$2c,$85,$2d,$2c,$85,$2c,$89,$2c,$85,$2d,$2c,$89,$a0,$2c
.byte $85,$88,$2c,$85,$2d,$2c,$85,$2c,$89,$8a,$33,$32,$85,$98,$33,$8a
.byte $36,$85
.byte $ff,$1d
.word @ref0
@ref3:
.byte $87,$88,$2c,$85,$2d,$2c,$85,$2c,$89,$2c,$85,$2d,$2c,$89,$a0,$2c
.byte $85,$88,$2c,$85,$2d,$2c,$85,$2c,$89,$8a,$32,$85,$36,$85,$98,$36
.byte $85
@ref4:
.byte $87,$88,$2c,$85,$2d,$2c,$85,$2d,$96,$30,$85,$88,$2d,$96,$33,$88
.byte $2d,$2d,$96,$28,$85,$2c,$85,$88,$2d,$96,$2d,$88,$2d,$2d,$96,$2d
.byte $88,$2c,$89,$8a,$33,$96,$2d,$8a,$37,$37,$96,$22,$85
@ref5:
.byte $87,$88,$2d,$96,$1f,$88,$2d,$2c,$85,$2d,$96,$1e,$20,$23,$88,$2d
.byte $96,$23,$88,$2d,$2d,$96,$22,$8d,$88,$2c,$85,$2d,$2c,$85,$2c,$89
.byte $8a,$32,$85,$37,$36,$89
.byte $ff,$1e
.word @ref4
@ref7:
.byte $87,$88,$2d,$96,$1f,$88,$2d,$2d,$96,$1f,$88,$2c,$89,$2d,$96,$23
.byte $88,$2d,$2d,$96,$28,$85,$2c,$85,$88,$2d,$96,$2d,$88,$2d,$2d,$96
.byte $2d,$88,$2c,$89,$8a,$32,$85,$37,$36,$89
@ref8:
.byte $87,$24,$85,$25,$25,$9c,$33,$8a,$25,$9c,$34,$36,$83,$8a,$25,$9c
.byte $37,$8a,$25,$25,$9c,$28,$85,$2a,$2c,$83,$8a,$25,$9c,$2d,$8a,$25
.byte $24,$85,$24,$89,$29,$96,$33,$88,$2d,$2d,$96,$30,$85
@ref9:
.byte $2c,$85,$8a,$24,$85,$25,$25,$9c,$33,$8a,$25,$9c,$34,$36,$83,$8a
.byte $25,$9c,$37,$8a,$25,$25,$9c,$28,$85,$2a,$2c,$83,$8a,$25,$9c,$2d
.byte $8a,$25,$24,$85,$24,$89,$29,$96,$3b,$88,$2d,$2d,$96,$40,$85
@ref10:
.byte $4e,$85,$8a,$29,$96,$4f,$8a,$29,$28,$85,$29,$96,$48,$85,$8a,$29
.byte $96,$49,$8a,$29,$29,$96,$44,$85,$46,$48,$83,$8a,$29,$96,$49,$8a
.byte $29,$28,$85,$29,$9c,$46,$48,$83,$88,$2d,$9c,$4b,$8a,$33,$33,$9c
.byte $44,$85
@ref11:
.byte $48,$85,$8a,$29,$9c,$49,$8a,$29,$28,$85,$29,$9c,$4a,$85,$8a,$29
.byte $9c,$4b,$8a,$29,$29,$9c,$4e,$83,$4c,$4a,$85,$8a,$29,$9c,$4b,$8a
.byte $29,$28,$85,$29,$96,$48,$85,$88,$2d,$96,$4b,$8a,$33,$33,$96,$40
.byte $85
@ref12:
.byte $44,$85,$88,$2d,$96,$45,$88,$2d,$2d,$96,$45,$88,$2c,$89,$2c,$85
.byte $2d,$2c,$89,$a0,$2c,$85,$88,$2c,$85,$2d,$2c,$85,$2c,$85,$a0,$2d
.byte $8a,$32,$85,$37,$36,$85,$98,$36,$81
.byte $ff,$1c
.word @ref1
.byte $ff,$1d
.word @ref0
.byte $ff,$1c
.word @ref3
@ref16:
.byte $8a,$24,$85,$25,$96,$2d,$8a,$25,$25,$96,$2d,$8a,$25,$24,$85,$25
.byte $96,$31,$8a,$25,$25,$96,$32,$85,$8a,$25,$96,$2d,$8a,$25,$96,$2d
.byte $8a,$25,$24,$85,$25,$88,$2c,$85,$2d,$96,$49,$88,$2d,$2d,$96,$4a
.byte $85
@ref17:
.byte $8a,$25,$96,$45,$8a,$25,$96,$45,$8a,$25,$24,$85,$25,$24,$85,$25
.byte $96,$4f,$8a,$25,$25,$96,$44,$85,$8a,$25,$96,$49,$8a,$25,$96,$49
.byte $8a,$25,$24,$85,$25,$88,$2c,$85,$2d,$96,$41,$88,$2d,$2d,$96,$48
.byte $85
@ref18:
.byte $8a,$29,$96,$4f,$8a,$29,$96,$4f,$8a,$29,$28,$85,$29,$28,$85,$29
.byte $96,$4f,$8a,$29,$29,$96,$44,$85,$8a,$29,$96,$4b,$8a,$29,$96,$4b
.byte $8a,$29,$28,$85,$29,$9e,$30,$85,$31,$9c,$49,$9e,$31,$31,$9c,$40
.byte $85
@ref19:
.byte $8a,$29,$9c,$49,$8a,$29,$9c,$49,$8a,$29,$28,$85,$29,$28,$85,$29
.byte $96,$33,$8a,$29,$29,$96,$36,$85,$8a,$29,$96,$31,$8a,$29,$96,$31
.byte $8a,$29,$29,$9c,$37,$8a,$29,$9e,$31,$9c,$31,$9e,$31,$9c,$31,$9e
.byte $31,$31,$9c,$29,$1e,$81
.byte $ff,$20
.word @ref16
@ref21:
.byte $8a,$25,$96,$45,$8a,$25,$96,$45,$8a,$25,$24,$85,$25,$24,$85,$25
.byte $96,$37,$8a,$25,$25,$96,$2c,$85,$8a,$25,$96,$31,$8a,$25,$96,$31
.byte $8a,$25,$24,$85,$25,$88,$2c,$85,$2d,$9c,$31,$88,$2d,$9c,$33,$96
.byte $49,$9c,$36,$81
@ref22:
.byte $88,$23,$9c,$3b,$88,$23,$9c,$3b,$88,$23,$23,$9c,$41,$88,$23,$23
.byte $9c,$41,$88,$22,$85,$23,$23,$9c,$44,$85,$8a,$29,$9c,$49,$8a,$29
.byte $9c,$49,$8a,$29,$28,$85,$29,$28,$85,$29,$96,$49,$8a,$29,$29,$96
.byte $3a,$85
@ref23:
.byte $88,$2d,$96,$45,$88,$2d,$96,$45,$88,$2d,$2d,$96,$45,$88,$2d,$2c
.byte $85,$2c,$85,$2d,$2c,$85,$2d,$2c,$85,$2c,$85,$2d,$2c,$89,$2c,$8d
.byte $a0,$2c,$8d
@ref24:
.byte $8f,$2c,$85,$2c,$85,$2d,$2c,$85,$2c,$8d,$96,$16,$18,$87,$10,$95
.byte $a0,$2d,$96,$0b,$a0,$2d,$96,$0b,$a0,$2d,$2d,$96,$0a,$85
@ref25:
.byte $87,$06,$85,$a0,$2d,$96,$07,$a0,$2c,$85,$2d,$2d,$96,$0b,$a0,$2c
.byte $d1
.byte $ff,$17
.word @ref24
@ref27:
.byte $87,$12,$14,$83,$a0,$2d,$96,$15,$a0,$2d,$96,$15,$a0,$2d,$2d,$96
.byte $15,$a0,$2c,$b1,$1f,$1f,$37,$1f,$23,$23,$3b,$22,$81
@ref28:
.byte $8f,$2c,$85,$2c,$85,$2d,$2c,$85,$2c,$8d,$9c,$2e,$30,$87,$28,$95
.byte $a0,$2d,$9c,$23,$a0,$2d,$9c,$23,$a0,$2d,$2d,$9c,$22,$85
@ref29:
.byte $87,$1e,$85,$a0,$2c,$85,$2c,$85,$2d,$2d,$9c,$29,$a0,$2c,$99,$a4
.byte $12,$14,$83,$1a,$85,$1e,$85,$26,$28,$83,$22,$85,$1e,$85,$1a,$85
@ref30:
.byte $87,$9c,$30,$32,$83,$a0,$2d,$9c,$33,$a0,$2d,$9c,$33,$a0,$2d,$2d
.byte $9c,$33,$a0,$2c,$89,$9c,$34,$36,$83,$3a,$95,$40,$85,$a0,$2d,$9c
.byte $41,$a0,$2d,$9c,$41,$a0,$2d,$2d,$9c,$40,$85
@ref31:
.byte $87,$40,$42,$45,$a0,$2d,$9c,$45,$a0,$2d,$9c,$45,$a0,$2d,$2d,$9c
.byte $45,$a0,$2d,$9c,$3e,$40,$83,$44,$a5,$14,$9d
.byte $ff,$1e
.word @ref4
.byte $ff,$1c
.word @ref5
.byte $ff,$1e
.word @ref4
.byte $ff,$1c
.word @ref7
.byte $ff,$20
.word @ref8
.byte $ff,$21
.word @ref9
.byte $ff,$22
.word @ref10
.byte $ff,$21
.word @ref11
@ref40:
.byte $44,$8d,$a0,$2d,$96,$45,$a0,$2d,$96,$45,$a0,$2d,$2c,$85,$2c,$b1
.byte $2c,$85,$2c,$85,$2d,$2c,$89
@ref41:
.byte $8f,$2c,$85,$2c,$85,$2d,$2c,$85,$2c,$b1,$8e,$2d,$2d,$2d,$2d,$88
.byte $2d,$2d,$2d,$2c,$81
.byte $ff,$20
.word @ref16
.byte $ff,$20
.word @ref17
.byte $ff,$20
.word @ref18
.byte $ff,$21
.word @ref19
.byte $ff,$20
.word @ref16
.byte $ff,$21
.word @ref21
.byte $ff,$20
.word @ref22
.byte $ff,$1b
.word @ref23
.byte $fd
.word @song0ch0loop
@song0ch1:
@song0ch1loop:
@ref50:
.byte $87,$8e,$2c,$85,$2d,$2c,$85,$2c,$89,$2c,$85,$2d,$2c,$91,$2c,$85
.byte $2d,$2c,$85,$2c,$89,$90,$32,$85,$37,$36,$89
@ref51:
.byte $87,$8e,$2c,$85,$2d,$2c,$85,$2c,$89,$2c,$85,$2d,$2c,$91,$2c,$85
.byte $2d,$2c,$85,$2c,$89,$90,$33,$32,$89,$36,$85
.byte $ff,$19
.word @ref50
@ref53:
.byte $87,$8e,$2c,$85,$2d,$2c,$85,$2c,$89,$2c,$85,$2d,$2c,$91,$2c,$85
.byte $2d,$2c,$85,$2c,$89,$90,$32,$85,$36,$8d
@ref54:
.byte $97,$8c,$30,$83,$96,$30,$8c,$30,$32,$83,$30,$85,$28,$85,$2c,$a5
.byte $28,$2c,$83,$28,$85,$22,$8d
@ref55:
.byte $1e,$95,$1e,$20,$22,$e1
@ref56:
.byte $97,$30,$83,$96,$30,$8c,$30,$32,$83,$30,$85,$28,$85,$2c,$a5,$28
.byte $2c,$83,$28,$85,$22,$8d
@ref57:
.byte $1e,$9d,$1e,$22,$87,$28,$89,$2c,$c5
@ref58:
.byte $8f,$9a,$32,$85,$34,$36,$8b,$32,$85,$28,$85,$2a,$2c,$a3,$8c,$30
.byte $32,$87,$30,$89,$2c,$85
@ref59:
.byte $8f,$9a,$32,$85,$34,$36,$8b,$32,$85,$28,$85,$2a,$2c,$a3,$8c,$36
.byte $3a,$87,$40,$89,$4e,$85
@ref60:
.byte $97,$48,$95,$44,$85,$46,$48,$9b,$9a,$46,$48,$83,$4a,$85,$48,$85
.byte $44,$85,$48,$85
@ref61:
.byte $97,$4a,$95,$4e,$83,$4c,$4a,$9d,$8c,$48,$85,$4a,$85,$48,$85,$40
.byte $85,$44,$85
@ref62:
.byte $c7,$a2,$2c,$85,$2d,$2c,$85,$2c,$89,$90,$32,$85,$37,$36,$89
.byte $ff,$19
.word @ref51
.byte $ff,$19
.word @ref50
.byte $ff,$18
.word @ref53
@ref66:
.byte $8c,$28,$2c,$9b,$30,$89,$32,$87,$2e,$2c,$a5,$48,$89,$4a,$89,$40
.byte $44,$83
@ref67:
.byte $9f,$4e,$89,$44,$89,$48,$a5,$40,$85,$44,$85,$48,$85,$4e,$85
@ref68:
.byte $9f,$4e,$85,$4a,$85,$44,$85,$48,$4a,$a3,$9a,$48,$85,$44,$85,$40
.byte $85,$46,$48,$83
@ref69:
.byte $9f,$8c,$32,$89,$36,$89,$30,$8d,$9a,$49,$41,$37,$41,$37,$31,$37
.byte $31,$29,$31,$29,$1f,$29,$1e,$81
.byte $ff,$11
.word @ref66
@ref71:
.byte $9f,$36,$89,$2c,$89,$30,$a5,$9a,$2e,$30,$83,$32,$85,$36,$85,$3a
.byte $85
@ref72:
.byte $8f,$40,$95,$44,$8d,$46,$48,$a3,$8c,$46,$48,$83,$40,$89,$96,$41
.byte $8c,$42,$44,$83
@ref73:
.byte $f9,$85
@ref74:
.byte $8f,$a2,$2c,$85,$2c,$85,$2d,$2c,$85,$2c,$85,$8c,$16,$18,$87,$10
.byte $95,$0a,$a5
@ref75:
.byte $06,$95,$08,$0a,$e3
.byte $ff,$11
.word @ref74
@ref77:
.byte $12,$14,$f9,$81
@ref78:
.byte $8f,$a2,$2c,$85,$2c,$85,$2d,$2c,$85,$2c,$85,$9a,$2e,$30,$87,$28
.byte $95,$22,$a5
@ref79:
.byte $1e,$95,$26,$28,$93,$2c,$cd
@ref80:
.byte $30,$32,$ab,$34,$36,$83,$3a,$95,$40,$ad
@ref81:
.byte $40,$42,$44,$f9
.byte $ff,$14
.word @ref54
.byte $ff,$06
.word @ref55
.byte $ff,$14
.word @ref56
.byte $ff,$09
.word @ref57
.byte $ff,$14
.word @ref58
.byte $ff,$14
.word @ref59
.byte $ff,$13
.word @ref60
.byte $ff,$12
.word @ref61
@ref90:
.byte $f9,$85
@ref91:
.byte $f9,$85
@ref92:
.byte $28,$2c,$9b,$30,$89,$32,$87,$2e,$2c,$a5,$48,$89,$4a,$89,$40,$44
.byte $83
.byte $ff,$0f
.word @ref67
.byte $ff,$13
.word @ref68
.byte $ff,$16
.word @ref69
.byte $ff,$11
.word @ref66
.byte $ff,$10
.word @ref71
.byte $ff,$11
.word @ref72
@ref99:
.byte $f9,$85
.byte $fd
.word @song0ch1loop
@song0ch2:
@song0ch2loop:
@ref100:
.byte $80,$2c,$00,$2c,$00,$2d,$00,$a9,$28,$00,$28,$00,$2c,$00,$2c,$00
.byte $2d,$00,$99,$32,$00,$32,$00,$87,$37,$00,$81
@ref101:
.byte $2c,$00,$2c,$00,$2d,$00,$a9,$28,$00,$28,$00,$2c,$00,$2c,$00,$2d
.byte $00,$91,$1a,$00,$1a,$00,$33,$01,$1e,$00,$1e,$00,$37,$00,$81
@ref102:
.byte $2c,$00,$2c,$00,$2d,$00,$a9,$28,$00,$28,$00,$2c,$00,$2c,$00,$2d
.byte $00,$99,$32,$00,$32,$00,$87,$37,$00,$81
@ref103:
.byte $2c,$00,$2c,$00,$2d,$00,$a9,$28,$00,$28,$00,$2c,$00,$2c,$00,$2d
.byte $01,$2c,$00,$83,$2c,$00,$83,$32,$00,$83,$32,$00,$32,$00,$92,$36
.byte $8d
@ref104:
.byte $80,$2c,$00,$2c,$00,$2d,$01,$44,$00,$44,$00,$28,$00,$28,$00,$2c
.byte $00,$2c,$00,$2d,$01,$45,$2c,$00,$41,$28,$00,$2c,$00,$2c,$00,$2d
.byte $01,$44,$00,$83,$28,$00,$28,$00,$32,$00,$32,$00,$4b,$33,$36,$00
.byte $36,$00,$4f,$36,$81
@ref105:
.byte $2c,$00,$2c,$00,$2d,$01,$44,$00,$44,$00,$28,$00,$28,$00,$2c,$00
.byte $2c,$00,$2d,$01,$45,$2c,$00,$41,$28,$00,$2c,$00,$2c,$00,$2d,$01
.byte $44,$00,$83,$28,$00,$28,$00,$32,$00,$32,$00,$4b,$33,$36,$00,$36
.byte $00,$4f,$36,$81
.byte $ff,$34
.word @ref105
.byte $ff,$34
.word @ref105
@ref108:
.byte $24,$00,$24,$00,$25,$01,$3c,$00,$3c,$00,$20,$00,$20,$00,$24,$00
.byte $24,$00,$25,$01,$3d,$24,$00,$39,$20,$00,$24,$00,$24,$00,$25,$01
.byte $3c,$00,$83,$20,$00,$20,$00,$96,$28,$00,$28,$00,$41,$29,$2c,$00
.byte $2c,$00,$45,$2c,$81
@ref109:
.byte $80,$24,$00,$24,$00,$25,$01,$3c,$00,$3c,$00,$20,$00,$20,$00,$24
.byte $00,$24,$00,$25,$01,$3d,$24,$00,$39,$20,$00,$24,$00,$24,$00,$25
.byte $01,$3c,$00,$83,$20,$00,$20,$00,$96,$28,$00,$28,$00,$41,$29,$2c
.byte $00,$2c,$00,$45,$2c,$81
@ref110:
.byte $80,$28,$00,$28,$00,$29,$01,$40,$00,$40,$00,$24,$00,$24,$00,$28
.byte $00,$28,$00,$29,$01,$41,$28,$00,$3d,$24,$00,$28,$00,$28,$00,$29
.byte $01,$40,$00,$83,$24,$00,$24,$00,$2c,$00,$2c,$00,$45,$2d,$32,$00
.byte $32,$00,$4b,$32,$81
@ref111:
.byte $28,$00,$28,$00,$29,$01,$40,$00,$40,$00,$24,$00,$24,$00,$28,$00
.byte $28,$00,$29,$01,$41,$28,$00,$3d,$24,$00,$28,$00,$28,$00,$29,$01
.byte $40,$00,$83,$24,$00,$24,$00,$2c,$00,$2c,$00,$45,$2d,$32,$00,$32
.byte $00,$4b,$32,$81
.byte $ff,$1a
.word @ref102
.byte $ff,$1f
.word @ref101
.byte $ff,$1a
.word @ref102
.byte $ff,$20
.word @ref103
@ref116:
.byte $80,$24,$83,$00,$24,$00,$24,$00,$24,$00,$24,$00,$24,$00,$24,$00
.byte $24,$00,$24,$00,$24,$00,$24,$00,$24,$00,$24,$00,$20,$85,$24,$83
.byte $00,$24,$00,$24,$00,$24,$00,$24,$00,$24,$00,$24,$00,$2c,$00,$2c
.byte $00,$2c,$00,$2c,$00,$28,$00,$28,$00,$28,$00,$28,$00
@ref117:
.byte $24,$83,$00,$24,$00,$24,$00,$24,$00,$24,$00,$24,$00,$24,$00,$24
.byte $00,$24,$00,$24,$00,$24,$00,$24,$00,$24,$00,$20,$85,$24,$83,$00
.byte $24,$00,$24,$00,$24,$00,$24,$00,$24,$00,$24,$00,$2c,$00,$2c,$00
.byte $2c,$00,$2c,$00,$28,$00,$28,$00,$28,$00,$28,$00
@ref118:
.byte $28,$83,$00,$28,$00,$28,$00,$28,$00,$28,$00,$28,$00,$28,$00,$28
.byte $00,$28,$00,$28,$00,$28,$00,$28,$00,$28,$00,$24,$85,$28,$83,$00
.byte $28,$00,$28,$00,$28,$00,$28,$00,$28,$00,$28,$00,$30,$00,$30,$00
.byte $30,$00,$30,$00,$2c,$00,$2c,$00,$2c,$00,$2c,$00
.byte $ff,$3c
.word @ref118
.byte $ff,$3c
.word @ref117
.byte $ff,$3c
.word @ref117
@ref122:
.byte $22,$83,$00,$22,$00,$22,$00,$22,$00,$22,$00,$22,$00,$22,$00,$22
.byte $00,$22,$00,$22,$00,$22,$00,$22,$00,$22,$00,$1c,$85,$28,$83,$00
.byte $28,$00,$28,$00,$28,$00,$28,$00,$28,$00,$28,$00,$28,$00,$28,$00
.byte $28,$00,$28,$00,$28,$00,$28,$00,$20,$85
@ref123:
.byte $2c,$83,$00,$2c,$00,$2c,$00,$2c,$00,$2c,$00,$2c,$00,$2c,$00,$2c
.byte $00,$2c,$00,$2c,$00,$2c,$00,$2c,$00,$2c,$00,$28,$85,$2c,$83,$00
.byte $2c,$00,$2c,$00,$2c,$00,$2c,$00,$2c,$00,$2c,$00,$92,$44,$9d
@ref124:
.byte $80,$2c,$00,$2d,$00,$ed,$40,$00,$40,$00
@ref125:
.byte $2c,$00,$2d,$00,$d5,$1e,$00,$1e,$00,$37,$1e,$00,$22,$00,$22,$00
.byte $3b,$22,$00
@ref126:
.byte $2c,$00,$2d,$00,$ed,$40,$00,$40,$00
.byte $ff,$13
.word @ref125
.byte $ff,$09
.word @ref126
.byte $ff,$13
.word @ref125
.byte $ff,$09
.word @ref126
@ref131:
.byte $2c,$00,$2d,$00,$b5,$2c,$00,$2d,$00,$95,$2a,$2c,$87,$92,$2c,$91
.byte $ff,$34
.word @ref104
.byte $ff,$34
.word @ref105
.byte $ff,$34
.word @ref105
.byte $ff,$34
.word @ref105
.byte $ff,$34
.word @ref108
.byte $ff,$34
.word @ref109
.byte $ff,$34
.word @ref110
.byte $ff,$34
.word @ref111
@ref140:
.byte $2c,$00,$2d,$00,$85,$a6,$44,$9d,$44,$9d,$44,$9d,$44,$85,$94,$28
.byte $00,$28,$00
@ref141:
.byte $80,$2c,$00,$2d,$00,$85,$a6,$44,$9d,$44,$9d,$44,$8d,$80,$2c,$00
.byte $2c,$00,$2c,$00,$2c,$00,$44,$00,$44,$00,$44,$00,$44,$00
.byte $ff,$3c
.word @ref117
.byte $ff,$3c
.word @ref117
.byte $ff,$3c
.word @ref118
.byte $ff,$3c
.word @ref118
.byte $ff,$3c
.word @ref117
.byte $ff,$3c
.word @ref117
.byte $ff,$3a
.word @ref122
.byte $ff,$2e
.word @ref123
.byte $fd
.word @song0ch2loop
@song0ch3:
@song0ch3loop:
@ref150:
.byte $84,$21,$21,$94,$1d,$1f,$1d,$1f,$1d,$1f,$1d,$1f,$1d,$1f,$1d,$1f
.byte $84,$21,$94,$1f,$84,$21,$21,$94,$1d,$1f,$1d,$1f,$1d,$1f,$1d,$1f
.byte $84,$21,$94,$1f,$1d,$1f,$84,$21,$94,$1e,$81
@ref151:
.byte $84,$21,$21,$94,$1d,$1f,$1d,$1f,$1d,$1f,$1d,$1f,$1d,$1f,$1d,$1f
.byte $84,$21,$94,$1f,$84,$21,$21,$94,$1d,$1f,$1d,$1f,$1d,$1f,$84,$21
.byte $21,$86,$13,$82,$1f,$84,$21,$21,$86,$13,$82,$1e,$81
@ref152:
.byte $84,$21,$21,$82,$1d,$94,$1f,$86,$13,$82,$1f,$84,$21,$21,$82,$1d
.byte $94,$1f,$84,$21,$94,$1f,$86,$13,$94,$1f,$84,$21,$94,$1f,$84,$21
.byte $21,$82,$1d,$94,$1f,$86,$13,$94,$1f,$84,$21,$21,$82,$1d,$84,$21
.byte $86,$13,$94,$1f,$82,$1d,$84,$21,$86,$13,$94,$1e,$81
@ref153:
.byte $84,$21,$21,$82,$1d,$94,$1f,$86,$13,$94,$1f,$84,$21,$21,$82,$1d
.byte $94,$1f,$84,$21,$94,$1f,$86,$13,$94,$1f,$84,$21,$94,$1f,$84,$21
.byte $21,$82,$1d,$94,$1f,$86,$13,$94,$1f,$84,$21,$21,$82,$1d,$84,$21
.byte $86,$13,$94,$1f,$86,$12,$8d
@ref154:
.byte $84,$21,$82,$1f,$1d,$1f,$86,$13,$82,$1f,$1d,$1f,$84,$21,$82,$1f
.byte $1d,$1f,$86,$13,$82,$1f,$1d,$1f,$84,$21,$82,$1f,$1d,$1f,$86,$13
.byte $82,$1f,$1d,$1f,$84,$21,$82,$1f,$86,$13,$82,$1f,$84,$21,$82,$1f
.byte $86,$13,$82,$1e,$81
@ref155:
.byte $84,$21,$82,$1f,$1d,$1f,$86,$13,$82,$1f,$1d,$1f,$84,$21,$82,$1f
.byte $1d,$1f,$86,$13,$82,$1f,$1d,$1f,$84,$21,$82,$1f,$1d,$1f,$86,$13
.byte $82,$1f,$1d,$1f,$86,$13,$13,$84,$21,$86,$0b,$13,$13,$84,$21,$82
.byte $1e,$81
.byte $ff,$21
.word @ref154
.byte $ff,$21
.word @ref155
.byte $ff,$21
.word @ref154
.byte $ff,$21
.word @ref155
.byte $ff,$21
.word @ref154
@ref161:
.byte $84,$21,$82,$1f,$1d,$1f,$86,$13,$82,$1f,$1d,$1f,$84,$21,$82,$1f
.byte $1d,$1f,$86,$13,$82,$1f,$1d,$1f,$84,$21,$82,$1f,$1d,$1f,$86,$13
.byte $82,$1f,$1d,$1f,$86,$15,$13,$15,$13,$15,$13,$15,$12,$81
.byte $ff,$21
.word @ref150
.byte $ff,$21
.word @ref151
.byte $ff,$21
.word @ref152
.byte $ff,$1e
.word @ref153
@ref166:
.byte $84,$21,$21,$82,$1d,$1f,$86,$13,$82,$1f,$1d,$86,$13,$82,$1d,$1f
.byte $84,$21,$82,$1f,$86,$13,$82,$1f,$1d,$1f,$84,$21,$21,$82,$1d,$1f
.byte $86,$13,$82,$1f,$1d,$86,$13,$82,$1d,$1f,$84,$21,$82,$1f,$86,$13
.byte $82,$1f,$84,$21,$82,$1e,$81
@ref167:
.byte $84,$21,$21,$82,$1d,$1f,$86,$13,$82,$1f,$1d,$86,$13,$82,$1d,$1f
.byte $84,$21,$82,$1f,$86,$13,$82,$1f,$1d,$1f,$84,$21,$21,$82,$1d,$1f
.byte $86,$13,$82,$1f,$1d,$86,$13,$82,$1d,$1f,$86,$13,$82,$1f,$86,$13
.byte $13,$82,$1d,$1e,$81
.byte $ff,$21
.word @ref166
@ref169:
.byte $84,$21,$21,$82,$1d,$1f,$86,$13,$82,$1f,$1d,$86,$13,$82,$1d,$1f
.byte $84,$21,$82,$1f,$86,$13,$82,$1f,$1d,$1f,$84,$21,$21,$21,$21,$86
.byte $13,$82,$1f,$86,$13,$13,$84,$21,$82,$1f,$86,$13,$82,$1f,$86,$13
.byte $94,$1f,$1d,$1e,$81
.byte $ff,$21
.word @ref166
.byte $ff,$21
.word @ref167
.byte $ff,$21
.word @ref166
.byte $ff,$21
.word @ref169
@ref174:
.byte $84,$21,$94,$1f,$1d,$1f,$82,$1d,$94,$1f,$1d,$1f,$1d,$1f,$1d,$1f
.byte $82,$1d,$94,$1f,$1d,$1f,$1d,$1f,$1d,$1f,$82,$1d,$94,$1f,$1d,$82
.byte $1d,$94,$1d,$1f,$1d,$1f,$82,$1d,$94,$1f,$1d,$1e,$81
@ref175:
.byte $84,$21,$94,$1f,$1d,$1f,$82,$1d,$94,$1f,$1d,$82,$1d,$94,$1d,$1f
.byte $1d,$1f,$82,$1d,$94,$1f,$1d,$1f,$1d,$1f,$1d,$1f,$82,$1d,$94,$1f
.byte $1d,$1f,$82,$1d,$1d,$94,$1d,$1f,$82,$1d,$1d,$94,$1d,$1e,$81
.byte $ff,$21
.word @ref174
@ref177:
.byte $84,$21,$94,$1f,$1d,$1f,$82,$1d,$94,$1f,$1d,$82,$1d,$94,$1d,$1f
.byte $1d,$1f,$82,$1d,$94,$1f,$1d,$1f,$1d,$1f,$1d,$1f,$82,$1d,$94,$1f
.byte $1d,$1f,$82,$1d,$1d,$86,$13,$94,$1f,$82,$1d,$1d,$86,$13,$94,$1e
.byte $81
@ref178:
.byte $84,$21,$94,$1f,$1d,$1f,$86,$13,$94,$1f,$82,$1b,$1b,$94,$1d,$1f
.byte $82,$1b,$94,$1f,$86,$13,$94,$1f,$1d,$1f,$82,$1b,$94,$1f,$1d,$1f
.byte $86,$13,$94,$1f,$82,$1b,$1b,$94,$1d,$1f,$82,$1b,$94,$1f,$86,$13
.byte $94,$1f,$1d,$1e,$81
@ref179:
.byte $84,$21,$94,$1f,$1d,$1f,$86,$13,$94,$1f,$82,$1b,$1b,$94,$1d,$1f
.byte $82,$1b,$94,$1f,$86,$13,$94,$1f,$1d,$1f,$82,$1b,$94,$1f,$1d,$1f
.byte $86,$13,$94,$1f,$82,$1b,$1b,$1d,$1f,$86,$13,$82,$1f,$1d,$1f,$86
.byte $13,$82,$1e,$81
.byte $ff,$21
.word @ref178
@ref181:
.byte $84,$21,$94,$1f,$1d,$1f,$86,$13,$94,$1f,$82,$1b,$1b,$94,$1d,$1f
.byte $82,$1b,$94,$1f,$86,$13,$94,$1f,$1d,$1f,$84,$21,$94,$1f,$1d,$1f
.byte $86,$13,$94,$1f,$1c,$85,$86,$12,$85,$82,$1e,$8d,$86,$12,$85
.byte $ff,$21
.word @ref154
.byte $ff,$21
.word @ref155
.byte $ff,$21
.word @ref154
.byte $ff,$21
.word @ref155
.byte $ff,$21
.word @ref154
.byte $ff,$21
.word @ref155
.byte $ff,$21
.word @ref154
.byte $ff,$21
.word @ref161
@ref190:
.byte $84,$21,$94,$1f,$1d,$1f,$82,$1b,$94,$1f,$1d,$1f,$1d,$1f,$1d,$1f
.byte $82,$1b,$94,$1f,$1d,$1f,$84,$21,$94,$1f,$1d,$1f,$82,$1b,$94,$1f
.byte $1d,$82,$1b,$94,$1d,$1f,$1d,$1f,$82,$1b,$94,$1f,$1d,$1e,$81
@ref191:
.byte $84,$21,$94,$1f,$1d,$1f,$82,$1b,$94,$1f,$1d,$82,$1d,$94,$1d,$1f
.byte $1d,$1f,$82,$1b,$94,$1f,$1d,$1f,$84,$21,$94,$1f,$1d,$1f,$82,$1b
.byte $94,$1f,$1d,$1f,$86,$13,$13,$13,$13,$13,$13,$13,$12,$81
.byte $ff,$21
.word @ref166
.byte $ff,$21
.word @ref167
.byte $ff,$21
.word @ref166
.byte $ff,$21
.word @ref169
.byte $ff,$21
.word @ref166
.byte $ff,$21
.word @ref167
.byte $ff,$21
.word @ref166
.byte $ff,$21
.word @ref169
.byte $fd
.word @song0ch3loop
@song0ch4:
@song0ch4loop:
@ref200:
.byte $f9,$85
@ref201:
.byte $f9,$85
@ref202:
.byte $f9,$85
@ref203:
.byte $f9,$85
@ref204:
.byte $f9,$85
@ref205:
.byte $f9,$85
@ref206:
.byte $f9,$85
@ref207:
.byte $f9,$85
@ref208:
.byte $f9,$85
@ref209:
.byte $f9,$85
@ref210:
.byte $f9,$85
@ref211:
.byte $f9,$85
@ref212:
.byte $f9,$85
@ref213:
.byte $f9,$85
@ref214:
.byte $f9,$85
@ref215:
.byte $f9,$85
@ref216:
.byte $f9,$85
@ref217:
.byte $f9,$85
@ref218:
.byte $f9,$85
@ref219:
.byte $f9,$85
@ref220:
.byte $f9,$85
@ref221:
.byte $f9,$85
@ref222:
.byte $f9,$85
@ref223:
.byte $f9,$85
@ref224:
.byte $f9,$85
@ref225:
.byte $f9,$85
@ref226:
.byte $f9,$85
@ref227:
.byte $f9,$85
@ref228:
.byte $f9,$85
@ref229:
.byte $f9,$85
@ref230:
.byte $f9,$85
@ref231:
.byte $f9,$85
@ref232:
.byte $f9,$85
@ref233:
.byte $f9,$85
@ref234:
.byte $f9,$85
@ref235:
.byte $f9,$85
@ref236:
.byte $f9,$85
@ref237:
.byte $f9,$85
@ref238:
.byte $f9,$85
@ref239:
.byte $f9,$85
@ref240:
.byte $f9,$85
@ref241:
.byte $f9,$85
@ref242:
.byte $f9,$85
@ref243:
.byte $f9,$85
@ref244:
.byte $f9,$85
@ref245:
.byte $f9,$85
@ref246:
.byte $f9,$85
@ref247:
.byte $f9,$85
@ref248:
.byte $f9,$85
@ref249:
.byte $f9,$85
.byte $fd
.word @song0ch4loop

View File

@ -1,4 +1,4 @@

include "nesdefs.asm"
;;;;; VARIABLES
@ -9,13 +9,13 @@
; Famitracker constants
FT_TEMP ds 3 ;3 bytes in zeropage used by the library as a scratchpad
FT_BASE_ADR = $0300 ;page in the RAM used for FT2 variables, should be $xx00
FT_BASE_ADR = $0500 ;page in the RAM used for FT2 variables, should be $xx00
FT_DPCM_OFF = DMCSamples ;$c000..$ffc0, 64-byte steps
FT_SFX_STREAMS = 4 ;number of sound effects played at once, 1..4
FT_DPCM_ENABLE = 1 ;undefine to exclude all DMC code
;FT_SFX_ENABLE = 1 ;undefine to exclude all sound effects code
FT_SFX_ENABLE = 1 ;undefine to exclude all sound effects code
;FT_THREAD = 1 ;undefine if you are calling sound effects from the same thread as the sound update call
FT_PAL_SUPPORT = 1 ;undefine to exclude PAL support
;FT_PAL_SUPPORT = 1 ;undefine to exclude PAL support
FT_NTSC_SUPPORT = 1 ;undefine to exclude NTSC support
;;;;; NES CARTRIDGE HEADER

View File

@ -117,6 +117,11 @@ unsigned char __fastcall__ oam_meta_spr(unsigned char x, unsigned char y,
void __fastcall__ oam_hide_rest(unsigned char sprid);
// initialize the FamiTone system
void __fastcall__ famitone_init(void* music_data);
// initialize the FamiTone SFX system
void __fastcall__ sfx_init(void* sounds_data);
// play a music in FamiTone format
void __fastcall__ music_play(unsigned char song);

View File

@ -1,4 +1,4 @@

include "nesdefs.asm"
;;;;; ZERO-PAGE VARIABLES
@ -100,9 +100,9 @@ NMIHandler: subroutine
bvs .wait0
.wait1 bit PPU_STATUS
bvc .wait1
; alter horiz. scroll position for each scanline
ldy #0
.loop
; alter horiz. scroll position for each scanline
tya
sec
adc LineXLo,y
@ -113,9 +113,8 @@ NMIHandler: subroutine
sta PPU_SCROLL ; horiz byte
lda #0
sta PPU_SCROLL ; vert byte
REPEAT 25
bit $0000
REPEND
; pad out rest of scanline
SLEEP 72
iny
cpy #224
bne .loop

View File

@ -26,6 +26,7 @@ const JSNES_PRESETS = [
{id:'shoot2.c', name:'Solarian Game'},
{id:'climber.c', name:'Platform Game'},
{id:'scrollrt.asm', name:'Split Screen Scroll (ASM)'},
{id:'fami.c', name:'Famitone Demo'},
{id:'musicdemo.asm', name:'Famitone Demo (ASM)'},
];

View File

@ -292,9 +292,9 @@ export class CodeProject {
this.listings = data.listings;
for (var lstname in this.listings) {
var lst = this.listings[lstname];
if (lst.lines)
lst.sourcefile = new SourceFile(lst.lines);
if (lst.asmlines)
if (lst.lines && lst.text)
lst.sourcefile = new SourceFile(lst.lines, lst.text);
if (lst.asmlines && lst.text)
lst.assemblyfile = new SourceFile(lst.asmlines, lst.text);
}
}

View File

@ -174,7 +174,7 @@ function refreshWindowList() {
for (var lstfn in listings) {
var lst = listings[lstfn];
// TODO: add assembly listings? (lines, macrolines, sourcefile)
if (lst.assemblyfile) {
if (lst.assemblyfile || lst.sourcefile) {
addWindowItem(lstfn, getFilenameForPath(lstfn), (path) => {
return new Views.ListingView(path);
});

View File

@ -534,6 +534,9 @@ export class ListingView extends DisassemblerView implements ProjectView {
if (lst && lst.assemblyfile && lst.assemblyfile !== this.assemblyfile) {
this.assemblyfile = lst.assemblyfile;
}
else if (lst && lst.sourcefile && lst.sourcefile !== this.assemblyfile) {
this.assemblyfile = lst.sourcefile;
}
}
refresh(moveCursor: boolean) {

View File

@ -752,11 +752,11 @@ function parseCA65Listing(code, symbols, params, dbg) {
var segLineMatch = /[.]segment\s+"(\w+)"/;
//var dbgLineMatch = /^([0-9A-F]+)([r]?)\s+(\d+)\s+[.]dbg\s+line,\s+\S+,\s+(\d+)/;
var dbgLineMatch = /^([0-9A-F]+)([r]?)\s+(\d+)\s+[.]dbg\s+line,\s+"(\w+[.]\w+)", (\d+)/;
var insnLineMatch = /^([0-9A-F]+)([r]?)\s+(\d+)\s+([0-9A-F][0-9A-F ]*[0-9A-F])\s+/;
var insnLineMatch = /^([0-9A-F]+)([r]?)\s+(\d+)\s+([0-9A-Fr ]*)\s*(.*)/;
var lines = [];
var linenum = 0;
for (var line of code.split(re_crlf)) {
linenum++;
// TODO: not right when multiple .segment directives
var segm = segLineMatch.exec(line);
if (segm) {
var segname = segm[1];
@ -764,18 +764,19 @@ function parseCA65Listing(code, symbols, params, dbg) {
segofs = parseInt(symbols[segsym] || params[segsym]) || 0;
}
if (dbg) {
var linem = dbgLineMatch.exec(line);
if (linem && linem[1]) {
var offset = parseInt(linem[1], 16);
var dbgm = dbgLineMatch.exec(line);
if (dbgm && dbgm[1]) {
var offset = parseInt(dbgm[1], 16);
lines.push({
// TODO: sourcefile
line:parseInt(linem[5]),
line:parseInt(dbgm[5]),
offset:offset + segofs,
insns:null
});
}
} else {
var linem = insnLineMatch.exec(line);
if (linem) linenum++;
if (linem && linem[1]) {
var offset = parseInt(linem[1], 16);
var insns = linem[4].trim();
@ -785,6 +786,8 @@ function parseCA65Listing(code, symbols, params, dbg) {
offset:offset + segofs,
insns:insns
});
// take back one to honor the long .byte line
if (linem[5].length == 0) linenum--;
}
}
}