early status messages
This commit is contained in:
parent
31d9e1a1d2
commit
2005d98a98
19
snes/boot/Makefile
Normal file
19
snes/boot/Makefile
Normal file
@ -0,0 +1,19 @@
|
||||
OBJS = header.ips reset.o65 main.o65 font.o65 palette.o65 data.o65 const.o65 text.o65 dma.o65 # gfx.o65 # vars.o65
|
||||
|
||||
all: menu.bin menu.smc
|
||||
|
||||
menu.smc: menu.bin
|
||||
cat menu.bin sd2snes.rom > $@
|
||||
menu.bin: $(OBJS)
|
||||
sneslink -fsmc -o $@ $^
|
||||
|
||||
# Generic rule to create .o65 out from .a65
|
||||
%.o65: %.a65
|
||||
snescom -J -Wall -o $@ $<
|
||||
|
||||
# Generic rule to create .ips out from .a65
|
||||
%.ips: %.a65
|
||||
snescom -I -J -Wall -o $@ $<
|
||||
|
||||
clean:
|
||||
rm -f *.ips *.o65 *~ menu.bin
|
||||
14
snes/boot/const.a65
Normal file
14
snes/boot/const.a65
Normal file
@ -0,0 +1,14 @@
|
||||
version .byt " v0.1",0
|
||||
zero .word 0
|
||||
bg2tile .byt $20
|
||||
|
||||
space64 .byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||
.byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||
.byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||
.byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||
.byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||
.byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||
.byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||
.byt $20, $20, $20, $20, $20, $20, $20, $20
|
||||
.byt $00
|
||||
text_dirmark .byt " <dir>", 0
|
||||
41
snes/boot/data.a65
Normal file
41
snes/boot/data.a65
Normal file
@ -0,0 +1,41 @@
|
||||
.data
|
||||
;don't anger the stack!
|
||||
;----------parameters for text output----------
|
||||
print_x .byt 0 ;x coordinate
|
||||
.byt 0
|
||||
print_y .byt 0 ;y coordinate
|
||||
.byt 0
|
||||
print_src .word 0 ;source data address
|
||||
print_bank .byt 0 ;source data bank
|
||||
print_pal .word 0 ;palette number for text output
|
||||
print_temp .word 0 ;work variable
|
||||
print_count .byt 0 ;how many characters may be printed?
|
||||
print_count_tmp .byt 0 ;work variable
|
||||
print_done .word 0 ;how many characters were printed?
|
||||
;----------parameters for dma----------
|
||||
dma_a_bank .byt 0
|
||||
dma_a_addr .word 0
|
||||
dma_b_reg .byt 0
|
||||
dma_len .word 0
|
||||
dma_mode .byt 0
|
||||
|
||||
;----------state information----------
|
||||
isr_done .byt 0 ; isr done flag
|
||||
;----------menu layout/system constants (224/448)
|
||||
textdmasize .word 0 ; number of bytes to copy each frame
|
||||
|
||||
infloop .byt 0,0 ; to be filled w/ 80 FE
|
||||
|
||||
printloop_wram .byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
|
||||
loprint_wram .byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
.byt 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
|
||||
30
snes/boot/dma.a65
Normal file
30
snes/boot/dma.a65
Normal file
@ -0,0 +1,30 @@
|
||||
|
||||
dma0:
|
||||
rep #$10 : .xl
|
||||
sep #$20 : .as
|
||||
lda dma_mode
|
||||
sta $4300
|
||||
lda dma_b_reg
|
||||
sta $4301
|
||||
lda dma_a_bank
|
||||
ldx dma_a_addr
|
||||
stx $4302
|
||||
sta $4304
|
||||
ldx dma_len
|
||||
stx $4305
|
||||
lda #$01
|
||||
sta $420b
|
||||
rts
|
||||
|
||||
setup_hdma:
|
||||
sep #$20 : .as
|
||||
rep #$10 : .xl
|
||||
stz $420b
|
||||
stz $420c
|
||||
|
||||
; lda #$06
|
||||
; sta $420c ;enable HDMA ch. 1+2
|
||||
stz $4200 ;disable V-BLANK NMI
|
||||
rts
|
||||
|
||||
|
||||
13
snes/boot/dma.i65
Normal file
13
snes/boot/dma.i65
Normal file
@ -0,0 +1,13 @@
|
||||
#define DMA0(mode, len, a_bank, a_addr, b_reg)\
|
||||
lda mode \
|
||||
: sta dma_mode \
|
||||
: ldx a_addr \
|
||||
: lda a_bank \
|
||||
: stx dma_a_addr \
|
||||
: sta dma_a_bank \
|
||||
: ldx len \
|
||||
: stx dma_len \
|
||||
: lda b_reg \
|
||||
: sta dma_b_reg \
|
||||
: jsr dma0
|
||||
|
||||
256
snes/boot/font.a65
Normal file
256
snes/boot/font.a65
Normal file
@ -0,0 +1,256 @@
|
||||
font7 .byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $30, $00, $30, $08, $30, $08, $30, $08
|
||||
.byt $20, $18, $00, $10, $30, $00, $00, $18
|
||||
.byt $6c, $00, $6c, $12, $24, $12, $00, $12
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $6c, $00, $6c, $12, $fe, $00, $6c, $13
|
||||
.byt $fe, $00, $6c, $13, $6c, $12, $00, $36
|
||||
.byt $10, $00, $7c, $44, $c6, $38, $f0, $03
|
||||
.byt $1e, $60, $c6, $09, $7c, $47, $10, $2e
|
||||
.byt $42, $00, $a4, $01, $48, $12, $10, $24
|
||||
.byt $24, $08, $4a, $10, $84, $21, $00, $42
|
||||
.byt $70, $40, $c0, $38, $c4, $24, $6e, $4a
|
||||
.byt $c4, $33, $c4, $22, $7c, $46, $00, $3e
|
||||
.byt $18, $00, $18, $04, $10, $0c, $00, $08
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $18, $00, $30, $2c, $30, $08, $30, $08
|
||||
.byt $30, $08, $30, $28, $18, $00, $00, $0c
|
||||
.byt $30, $00, $18, $08, $18, $04, $18, $04
|
||||
.byt $18, $04, $18, $0c, $30, $0c, $00, $18
|
||||
.byt $00, $00, $6c, $00, $38, $06, $7c, $00
|
||||
.byt $38, $06, $6c, $12, $00, $36, $00, $00
|
||||
.byt $00, $00, $30, $00, $30, $08, $fc, $00
|
||||
.byt $30, $4e, $30, $08, $00, $18, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $18, $00, $18, $04, $10, $08
|
||||
.byt $00, $00, $00, $00, $00, $00, $fc, $00
|
||||
.byt $00, $7e, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $18, $00, $18, $04, $00, $0c
|
||||
.byt $18, $00, $18, $04, $30, $0c, $30, $08
|
||||
.byt $30, $08, $60, $18, $60, $10, $00, $30
|
||||
.byt $7c, $44, $e6, $38, $c6, $31, $c6, $21
|
||||
.byt $c6, $21, $ce, $29, $7c, $47, $00, $3e
|
||||
.byt $08, $00, $18, $04, $18, $04, $18, $04
|
||||
.byt $18, $04, $18, $04, $18, $04, $00, $0c
|
||||
.byt $fc, $00, $00, $7e, $06, $00, $7c, $07
|
||||
.byt $c0, $be, $c0, $20, $fe, $00, $00, $7f
|
||||
.byt $fc, $00, $00, $7e, $06, $00, $3c, $07
|
||||
.byt $06, $18, $06, $01, $fc, $07, $00, $7e
|
||||
.byt $c6, $00, $c6, $21, $c0, $23, $7e, $40
|
||||
.byt $06, $39, $06, $01, $06, $01, $00, $03
|
||||
.byt $fe, $00, $00, $7f, $c0, $00, $fc, $04
|
||||
.byt $06, $78, $06, $01, $fc, $07, $00, $7e
|
||||
.byt $7c, $00, $00, $3e, $c0, $00, $fc, $04
|
||||
.byt $c6, $38, $c6, $a1, $7c, $07, $00, $3e
|
||||
.byt $fe, $00, $00, $7f, $06, $00, $06, $01
|
||||
.byt $06, $01, $06, $01, $06, $01, $00, $03
|
||||
.byt $7c, $04, $06, $38, $c6, $01, $7c, $47
|
||||
.byt $c6, $38, $c6, $21, $7c, $47, $00, $3e
|
||||
.byt $7c, $04, $06, $38, $c6, $01, $7e, $41
|
||||
.byt $06, $39, $06, $01, $7c, $07, $00, $3e
|
||||
.byt $00, $00, $00, $00, $30, $00, $00, $18
|
||||
.byt $00, $00, $30, $00, $00, $18, $00, $00
|
||||
.byt $00, $00, $00, $00, $30, $00, $00, $18
|
||||
.byt $00, $00, $30, $00, $20, $18, $00, $10
|
||||
.byt $00, $00, $18, $00, $30, $0c, $60, $18
|
||||
.byt $30, $00, $18, $00, $00, $0c, $00, $00
|
||||
.byt $00, $00, $00, $00, $3c, $00, $00, $1e
|
||||
.byt $00, $00, $3c, $00, $00, $1e, $00, $00
|
||||
.byt $00, $00, $30, $00, $18, $00, $0c, $00
|
||||
.byt $18, $06, $30, $0c, $00, $18, $00, $00
|
||||
.byt $f8, $08, $0c, $70, $0c, $02, $18, $06
|
||||
.byt $30, $0c, $00, $18, $30, $00, $00, $18
|
||||
.byt $7c, $04, $06, $38, $c6, $01, $de, $21
|
||||
.byt $de, $21, $c0, $2f, $7e, $40, $00, $3f
|
||||
.byt $7c, $04, $06, $38, $c6, $01, $de, $21
|
||||
.byt $c6, $29, $c6, $21, $c6, $21, $00, $63
|
||||
.byt $fc, $04, $06, $78, $c6, $01, $dc, $27
|
||||
.byt $c6, $28, $c6, $21, $fc, $07, $00, $7e
|
||||
.byt $7e, $00, $00, $3f, $c0, $00, $c0, $20
|
||||
.byt $c0, $20, $c0, $20, $7e, $40, $00, $3f
|
||||
.byt $fc, $00, $06, $7a, $c6, $01, $c6, $21
|
||||
.byt $c6, $21, $c6, $23, $fc, $03, $00, $7e
|
||||
.byt $fe, $00, $00, $7f, $c0, $00, $f8, $00
|
||||
.byt $c0, $3c, $c0, $20, $fe, $00, $00, $7f
|
||||
.byt $fe, $00, $00, $7f, $c0, $00, $f8, $00
|
||||
.byt $c0, $3c, $c0, $20, $c0, $20, $00, $60
|
||||
.byt $7e, $00, $00, $3f, $c0, $00, $ce, $20
|
||||
.byt $c6, $21, $c6, $21, $7c, $47, $00, $3e
|
||||
.byt $c6, $00, $06, $61, $c6, $01, $de, $21
|
||||
.byt $c6, $29, $c6, $21, $c6, $21, $00, $63
|
||||
.byt $18, $00, $18, $04, $18, $04, $18, $04
|
||||
.byt $18, $04, $18, $04, $18, $04, $00, $0c
|
||||
.byt $0c, $00, $0c, $02, $0c, $02, $0c, $02
|
||||
.byt $0c, $02, $0c, $06, $f8, $06, $00, $7c
|
||||
.byt $c6, $00, $c6, $21, $c0, $23, $fc, $04
|
||||
.byt $c6, $38, $c6, $21, $c6, $21, $00, $63
|
||||
.byt $c0, $00, $00, $60, $c0, $00, $c0, $20
|
||||
.byt $c0, $20, $c0, $20, $fc, $00, $00, $7e
|
||||
.byt $fc, $04, $16, $68, $d6, $09, $d6, $29
|
||||
.byt $c6, $29, $c6, $21, $c6, $21, $00, $63
|
||||
.byt $fc, $04, $06, $78, $c6, $01, $c6, $21
|
||||
.byt $c6, $21, $c6, $21, $c6, $21, $00, $63
|
||||
.byt $7c, $04, $06, $38, $c6, $01, $c6, $21
|
||||
.byt $c6, $21, $c6, $21, $7c, $47, $00, $3e
|
||||
.byt $fc, $04, $06, $78, $c6, $01, $c6, $01
|
||||
.byt $fc, $07, $c0, $3e, $c0, $20, $00, $60
|
||||
.byt $7c, $00, $06, $3a, $c6, $01, $c6, $21
|
||||
.byt $c6, $21, $ce, $21, $7e, $41, $00, $3f
|
||||
.byt $fc, $04, $06, $78, $c6, $01, $fc, $06
|
||||
.byt $c6, $39, $c6, $21, $c6, $21, $00, $63
|
||||
.byt $7e, $00, $00, $3f, $c0, $00, $7c, $44
|
||||
.byt $06, $38, $06, $01, $fc, $07, $00, $7e
|
||||
.byt $fe, $00, $00, $7f, $18, $00, $18, $04
|
||||
.byt $18, $04, $18, $04, $18, $04, $00, $0c
|
||||
.byt $c6, $00, $06, $61, $c6, $01, $c6, $21
|
||||
.byt $c6, $21, $c6, $21, $7c, $47, $00, $3e
|
||||
.byt $c6, $00, $06, $61, $c6, $01, $c6, $21
|
||||
.byt $66, $01, $36, $01, $1e, $01, $00, $0f
|
||||
.byt $c6, $00, $06, $61, $c6, $01, $d6, $21
|
||||
.byt $d6, $29, $d6, $29, $7e, $41, $00, $3f
|
||||
.byt $c6, $00, $06, $61, $c6, $01, $7c, $47
|
||||
.byt $c6, $38, $c6, $21, $c6, $21, $00, $63
|
||||
.byt $c6, $00, $06, $61, $c6, $01, $7e, $41
|
||||
.byt $06, $39, $06, $03, $fc, $03, $00, $7e
|
||||
.byt $fe, $00, $00, $7f, $06, $00, $7c, $47
|
||||
.byt $c0, $3e, $c0, $20, $fe, $00, $00, $7f
|
||||
.byt $3c, $00, $30, $0e, $30, $08, $30, $08
|
||||
.byt $30, $08, $30, $08, $3c, $00, $00, $1e
|
||||
.byt $30, $00, $30, $08, $18, $00, $18, $04
|
||||
.byt $18, $04, $0c, $00, $0c, $02, $00, $06
|
||||
.byt $3c, $00, $0c, $12, $0c, $02, $0c, $02
|
||||
.byt $0c, $02, $0c, $02, $3c, $02, $00, $1e
|
||||
.byt $18, $00, $3c, $24, $66, $18, $00, $33
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $fe, $00, $00, $7f
|
||||
.byt $30, $00, $18, $00, $18, $04, $00, $0c
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $7c, $04, $06, $38
|
||||
.byt $7e, $41, $c6, $39, $7e, $41, $00, $3f
|
||||
.byt $c0, $00, $c0, $20, $fc, $04, $c6, $38
|
||||
.byt $c6, $21, $c6, $21, $fc, $07, $00, $7e
|
||||
.byt $00, $00, $00, $00, $7e, $40, $c0, $3f
|
||||
.byt $c0, $20, $c0, $20, $7e, $40, $00, $3f
|
||||
.byt $06, $00, $06, $01, $7e, $41, $c6, $39
|
||||
.byt $c6, $21, $c6, $21, $7e, $41, $00, $3f
|
||||
.byt $00, $00, $00, $00, $7c, $44, $c6, $38
|
||||
.byt $de, $21, $c0, $2f, $7e, $40, $00, $3f
|
||||
.byt $1e, $00, $30, $2f, $30, $08, $3c, $00
|
||||
.byt $30, $0e, $30, $08, $30, $08, $30, $08
|
||||
.byt $00, $00, $00, $00, $7e, $40, $c6, $38
|
||||
.byt $c6, $21, $7e, $41, $06, $39, $7c, $03
|
||||
.byt $c0, $00, $c0, $20, $fc, $04, $c6, $38
|
||||
.byt $c6, $21, $c6, $21, $c6, $21, $00, $63
|
||||
.byt $00, $00, $18, $00, $00, $0c, $18, $00
|
||||
.byt $18, $04, $18, $04, $18, $04, $00, $0c
|
||||
.byt $00, $00, $18, $00, $00, $0c, $18, $00
|
||||
.byt $18, $04, $18, $04, $18, $0c, $30, $0c
|
||||
.byt $c0, $00, $c6, $20, $c6, $21, $fc, $07
|
||||
.byt $c6, $38, $c6, $21, $c6, $21, $00, $63
|
||||
.byt $30, $00, $30, $08, $30, $08, $30, $08
|
||||
.byt $30, $08, $30, $28, $18, $00, $00, $0c
|
||||
.byt $00, $00, $00, $00, $fc, $04, $d6, $28
|
||||
.byt $d6, $29, $d6, $29, $c6, $29, $00, $63
|
||||
.byt $00, $00, $00, $00, $fc, $04, $c6, $38
|
||||
.byt $c6, $21, $c6, $21, $c6, $21, $00, $63
|
||||
.byt $00, $00, $00, $00, $7c, $44, $c6, $38
|
||||
.byt $c6, $21, $c6, $21, $7c, $47, $00, $3e
|
||||
.byt $00, $00, $00, $00, $fc, $04, $c6, $38
|
||||
.byt $c6, $21, $fc, $07, $c0, $3e, $c0, $20
|
||||
.byt $00, $00, $00, $00, $7e, $40, $c6, $39
|
||||
.byt $c6, $21, $7e, $41, $06, $39, $06, $01
|
||||
.byt $00, $00, $00, $00, $7c, $40, $c0, $3e
|
||||
.byt $c0, $20, $c0, $20, $c0, $20, $00, $60
|
||||
.byt $00, $00, $00, $00, $7e, $40, $c0, $3f
|
||||
.byt $7c, $44, $06, $38, $fc, $07, $00, $7e
|
||||
.byt $30, $00, $30, $08, $3c, $00, $30, $0e
|
||||
.byt $30, $08, $30, $08, $1e, $10, $00, $0f
|
||||
.byt $00, $00, $00, $00, $c6, $00, $c6, $21
|
||||
.byt $c6, $21, $c6, $21, $7c, $47, $00, $3e
|
||||
.byt $00, $00, $00, $00, $c6, $00, $c6, $21
|
||||
.byt $66, $01, $36, $01, $1e, $01, $00, $0f
|
||||
.byt $00, $00, $00, $00, $c6, $00, $d6, $21
|
||||
.byt $d6, $29, $d6, $29, $7e, $41, $00, $3f
|
||||
.byt $00, $00, $00, $00, $c6, $00, $c6, $21
|
||||
.byt $7c, $47, $c6, $38, $c6, $21, $00, $63
|
||||
.byt $00, $00, $00, $00, $c6, $00, $c6, $21
|
||||
.byt $7e, $41, $06, $39, $06, $01, $fc, $07
|
||||
.byt $00, $00, $00, $00, $fe, $00, $06, $79
|
||||
.byt $7c, $47, $c0, $3e, $fe, $00, $00, $7f
|
||||
.byt $18, $00, $30, $0c, $30, $08, $70, $08
|
||||
.byt $30, $08, $30, $08, $18, $00, $00, $0c
|
||||
.byt $18, $00, $18, $04, $18, $04, $00, $0c
|
||||
.byt $18, $00, $18, $04, $18, $04, $00, $0c
|
||||
.byt $30, $00, $18, $00, $18, $04, $1c, $00
|
||||
.byt $18, $06, $18, $04, $30, $0c, $00, $18
|
||||
.byt $00, $00, $00, $00, $72, $10, $fe, $01
|
||||
.byt $9c, $73, $00, $4e, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
.byt $00, $00, $00, $00, $00, $00, $00, $00
|
||||
76
snes/boot/header.a65
Normal file
76
snes/boot/header.a65
Normal file
@ -0,0 +1,76 @@
|
||||
; This file is part of the snescom-asm demo - a demo of how to build a SNES program.
|
||||
; See http://bisqwit.iki.fi/source/snescom.html for details.
|
||||
|
||||
; Begin assembling to this address.
|
||||
*= $C0FF00
|
||||
|
||||
RESET:
|
||||
sei: clc: xce
|
||||
jmp @GAME_MAIN
|
||||
|
||||
IRQ_16bit:
|
||||
php
|
||||
rep #$30
|
||||
pha: phx: phy: phd: phb
|
||||
jsl @IRQ_ROUTINE
|
||||
rep #$30
|
||||
plb: pld: ply: plx: pla
|
||||
plp
|
||||
rti
|
||||
|
||||
NMI_16bit:
|
||||
php
|
||||
rep #$30
|
||||
pha: phx: phy: phd: phb
|
||||
jsl @NMI_ROUTINE
|
||||
rep #$30
|
||||
plb: pld: ply: plx: pla
|
||||
plp
|
||||
rti
|
||||
|
||||
|
||||
;error vectors
|
||||
ABT_8bit: ABT_16bit:
|
||||
BRK_8bit: BRK_16bit:
|
||||
COP_8bit: COP_16bit:
|
||||
IRQ_8bit:
|
||||
NMI_8bit:
|
||||
- wai: lda $ABCDEF : bra -
|
||||
|
||||
*= $C0FFB0
|
||||
; Zero the area from $FFB0 - $FFFF
|
||||
; to ensure that the linker won't get clever
|
||||
; and fill it with small pieces of code.
|
||||
.word 0,0,0,0, 0,0,0,0
|
||||
.word 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
|
||||
.word 0,0,0,0, 0,0,0,0, 0,0,0,0, 0,0,0,0
|
||||
|
||||
*= $C0FFB0
|
||||
|
||||
.byt "MR" ;2 bytes - company id
|
||||
.byt "BOOT" ;4 bytes - rom id
|
||||
|
||||
*= $C0FFC0
|
||||
.byt "SD2SNES BOOT "
|
||||
;123456789012345678901; - max 21 chars
|
||||
|
||||
*= $C0FFD5 .byt $31 ;rom speed
|
||||
*= $C0FFD6 .byt $02 ;rom type
|
||||
*= $C0FFD7 .byt $06 ;rom size 64 kByte
|
||||
*= $C0FFD8 .byt $03 ;sram size 8 kBit
|
||||
*= $C0FFD9 .byt $09 ;rom region 4 = Finland
|
||||
*= $C0FFDA .byt $33 ;company id flag
|
||||
|
||||
*= $C0FFDC .word 0,0 ;checksums
|
||||
|
||||
*= $C0FFE4 .word COP_16bit
|
||||
*= $C0FFE6 .word BRK_16bit
|
||||
*= $C0FFE8 .word ABT_16bit
|
||||
*= $C0FFEA .word NMI_16bit
|
||||
*= $C0FFEE .word IRQ_16bit
|
||||
*= $C0FFF4 .word COP_8bit
|
||||
*= $C0FFF8 .word ABT_8bit
|
||||
*= $C0FFFA .word NMI_8bit
|
||||
*= $C0FFFC .word RESET
|
||||
*= $C0FFFE .word BRK_8bit
|
||||
*= $C0FFFE .word IRQ_8bit
|
||||
284
snes/boot/main.a65
Normal file
284
snes/boot/main.a65
Normal file
@ -0,0 +1,284 @@
|
||||
#include "memmap.i65"
|
||||
#include "dma.i65"
|
||||
|
||||
GAME_MAIN:
|
||||
sep #$20 : .as
|
||||
stz $4200 ; inhibit VBlank NMI
|
||||
jsr killdma
|
||||
lda #$01
|
||||
sta $420d ; fast cpu
|
||||
jsr snes_init
|
||||
jsr setup_gfx
|
||||
jsr colortest
|
||||
jsr setup_hdma
|
||||
jsr tests
|
||||
|
||||
; copy routines to WRAM
|
||||
lda #^printloop_wram
|
||||
ldx #!printloop_wram
|
||||
sta $2183
|
||||
stx $2181
|
||||
DMA0(#$00, #$6F, #^printloop, #!printloop, #$80);
|
||||
|
||||
lda #^loprint_wram
|
||||
ldx #!loprint_wram
|
||||
sta $2183
|
||||
stx $2181
|
||||
DMA0(#$00, #$4F, #^loprint, #!loprint, #$80);
|
||||
|
||||
jsl @printloop_wram
|
||||
|
||||
printloop
|
||||
rep #$10 : .xl
|
||||
sep #$20 : .as
|
||||
lda #$00
|
||||
sta @print_x
|
||||
lda #13
|
||||
sta @print_y
|
||||
lda #^MCU_TXT
|
||||
sta @print_bank
|
||||
rep #$20 : .al
|
||||
lda #!MCU_TXT
|
||||
sta @print_src
|
||||
sep #$20 : .as
|
||||
lda #$00
|
||||
sta @print_pal
|
||||
jsr loprint_wram
|
||||
- lda @$4212
|
||||
and #$80
|
||||
bne -
|
||||
- lda @$4212
|
||||
and #$80
|
||||
beq -
|
||||
rep #$20 : .al
|
||||
lda #!BG1_TILE_BASE
|
||||
sta $2116
|
||||
sep #$20 : .as
|
||||
lda #$01
|
||||
sta $4300
|
||||
lda #$18
|
||||
sta $4301
|
||||
lda #^BG1_TILE_BUF
|
||||
sta $4304
|
||||
ldx #!BG1_TILE_BUF
|
||||
stx $4302
|
||||
ldx #36*64
|
||||
stx $4305
|
||||
lda #$01
|
||||
sta $420b
|
||||
bra printloop
|
||||
printloop_end
|
||||
|
||||
cli
|
||||
stz $4200
|
||||
jmp @infloop ;infinite loop in WRAM
|
||||
|
||||
killdma:
|
||||
stz $420b
|
||||
stz $420c
|
||||
stz $4310
|
||||
stz $4311
|
||||
stz $4312
|
||||
stz $4313
|
||||
stz $4314
|
||||
stz $4320
|
||||
stz $4321
|
||||
stz $4322
|
||||
stz $4323
|
||||
stz $4324
|
||||
stz $4330
|
||||
stz $4331
|
||||
stz $4332
|
||||
stz $4333
|
||||
stz $4334
|
||||
stz $4340
|
||||
stz $4341
|
||||
stz $4342
|
||||
stz $4343
|
||||
stz $4344
|
||||
stz $4350
|
||||
stz $4351
|
||||
stz $4352
|
||||
stz $4353
|
||||
stz $4354
|
||||
rts
|
||||
|
||||
|
||||
|
||||
|
||||
waitblank:
|
||||
- lda $4212
|
||||
and #$80
|
||||
bne -
|
||||
- lda $4212
|
||||
and #$80
|
||||
beq -
|
||||
rts
|
||||
|
||||
colortest:
|
||||
sep #$20 : .as
|
||||
rep #$10 : .xl
|
||||
stz $2130
|
||||
rts
|
||||
|
||||
setup_gfx:
|
||||
sep #$20 : .as
|
||||
rep #$10 : .xl
|
||||
stz $4200
|
||||
stz $420b
|
||||
stz $420c
|
||||
;clear tilemap buffers
|
||||
ldx #$B000
|
||||
stx $2181
|
||||
lda #$01
|
||||
sta $2183
|
||||
DMA0(#$08, #32*29*2, #^zero, #!zero, #$80)
|
||||
|
||||
;copy 2bpp font
|
||||
ldx #$0000
|
||||
stx $2116
|
||||
DMA0(#$01, #$800, #^font7, #!font7, #$18)
|
||||
|
||||
;clear BG1 tilemap
|
||||
ldx #BG1_TILE_BASE
|
||||
stx $2116
|
||||
DMA0(#$09, #32*29*2, #^zero, #!zero, #$18)
|
||||
|
||||
;clear OAM tables
|
||||
ldx #$0000
|
||||
stx $2102
|
||||
DMA0(#$08, #544, #^zero, #!zero, #$04)
|
||||
|
||||
;set palette
|
||||
stz $2121
|
||||
DMA0(#$00, #$10, #^palette, #!palette, #$22)
|
||||
|
||||
rts
|
||||
|
||||
tests:
|
||||
sep #$20 : .as ;8-bit accumulator
|
||||
rep #$10 : .xl ;16-bit index
|
||||
lda #$00 ;mode 0
|
||||
sta $2105
|
||||
lda #$58 ;Tilemap addr 0xB000
|
||||
ora #$02 ;SC size 32x64
|
||||
sta $2107 ;for BG1
|
||||
lda #$40 ;chr base addr:
|
||||
sta $210b ;BG1=0x0000, BG2=0x8000
|
||||
lda #$01 ;enable BG1
|
||||
sta $212c ;BG Main
|
||||
lda #$01 ;enable none
|
||||
sta $212d ;BG Sub
|
||||
lda #$00
|
||||
sta $2130
|
||||
stz $2121
|
||||
lda #$0f
|
||||
sta $2100 ;screen on, full brightness
|
||||
rts
|
||||
|
||||
snes_init:
|
||||
sep #$20 : .as ;8-bit accumulator
|
||||
rep #$10 : .xl ;16-bit index
|
||||
stz $4200 ;
|
||||
lda #$ff
|
||||
sta $4201 ;
|
||||
stz $4202 ;
|
||||
stz $4203 ;
|
||||
stz $4204 ;
|
||||
stz $4205 ;
|
||||
stz $4206 ;
|
||||
stz $4207 ;
|
||||
stz $4208 ;
|
||||
stz $4209 ;
|
||||
stz $420a ;
|
||||
stz $420b ;
|
||||
stz $420c ;
|
||||
lda #$00
|
||||
sta $420d ; FAAAAAST
|
||||
lda #$8f
|
||||
sta $2100 ;INIDISP: force blank
|
||||
lda #$03 ; 8x8+16x16; name=0; base=3
|
||||
sta $2101 ;
|
||||
stz $2102 ;
|
||||
stz $2103 ;
|
||||
; stz $2104 ; (OAM Data?!)
|
||||
; stz $2104 ; (OAM Data?!)
|
||||
stz $2105 ;
|
||||
stz $2106 ;
|
||||
stz $2107 ;
|
||||
stz $2108 ;
|
||||
stz $2109 ;
|
||||
stz $210a ;
|
||||
stz $210b ;
|
||||
stz $210c ;
|
||||
stz $210d ;
|
||||
stz $210d ;
|
||||
stz $210e ;
|
||||
stz $210e ;
|
||||
stz $210f ;
|
||||
stz $210f ;
|
||||
lda #$05
|
||||
sta $2110 ;
|
||||
stz $2110 ;
|
||||
stz $2111 ;
|
||||
stz $2111 ;
|
||||
stz $2112 ;
|
||||
stz $2112 ;
|
||||
stz $2113 ;
|
||||
stz $2113 ;
|
||||
stz $2114 ;
|
||||
stz $2114 ;
|
||||
lda #$80
|
||||
sta $2115 ;
|
||||
stz $2116 ;
|
||||
stz $2117 ;
|
||||
; stz $2118 ;(VRAM Data?!)
|
||||
; stz $2119 ;(VRAM Data?!)
|
||||
stz $211a ;
|
||||
stz $211b ;
|
||||
lda #$01
|
||||
sta $211b ;
|
||||
stz $211c ;
|
||||
stz $211c ;
|
||||
stz $211d ;
|
||||
stz $211d ;
|
||||
stz $211e ;
|
||||
sta $211e ;
|
||||
stz $211f ;
|
||||
stz $211f ;
|
||||
stz $2120 ;
|
||||
stz $2120 ;
|
||||
stz $2121 ;
|
||||
; stz $2122 ; (CG Data?!)
|
||||
; stz $2122 ; (CG Data?!)
|
||||
stz $2123 ;
|
||||
stz $2124 ;
|
||||
stz $2125 ;
|
||||
stz $2126 ;
|
||||
stz $2127 ;
|
||||
stz $2128 ;
|
||||
stz $2129 ;
|
||||
stz $212a ;
|
||||
stz $212b ;
|
||||
stz $212c ;
|
||||
stz $212d ;
|
||||
stz $212e ;
|
||||
lda #$30
|
||||
sta $2130 ;
|
||||
stz $2131 ;
|
||||
lda #$e0
|
||||
sta $2132 ;
|
||||
stz $2133 ;
|
||||
;clear WRAM lower page
|
||||
; ldx #$0200
|
||||
; stx $2181
|
||||
; lda #$00
|
||||
; sta $2183
|
||||
; DMA0(#$08, #$FF00, #^zero, #!zero, #$80)
|
||||
; ldx #$0000
|
||||
; stx $2181
|
||||
; lda #$00
|
||||
; sta $2183
|
||||
; DMA0(#$08, #$1e0, #^zero, #!zero, #$80)
|
||||
|
||||
rts
|
||||
17
snes/boot/memmap.i65
Normal file
17
snes/boot/memmap.i65
Normal file
@ -0,0 +1,17 @@
|
||||
#if 0 /* #if0'd because it's #included, and those don't get parsed properly by snescom */
|
||||
; This file is part of the snescom-asm demo - a demo of how to build a SNES program.
|
||||
; See http://bisqwit.iki.fi/source/snescom.html for details.
|
||||
#endif
|
||||
|
||||
/* These must be defined as constants, because they're used
|
||||
* in calculation that is sent to PPU as parameters */
|
||||
|
||||
#define BG1_TILE_BASE $5800
|
||||
#define BG2_TILE_BASE $5000
|
||||
|
||||
#define OAM_TILE_BASE $6000
|
||||
|
||||
#define BG1_TILE_BUF $7FB000
|
||||
#define BG2_TILE_BUF $7FA000
|
||||
|
||||
#define MCU_TXT $307000
|
||||
4
snes/boot/palette.a65
Normal file
4
snes/boot/palette.a65
Normal file
@ -0,0 +1,4 @@
|
||||
palette
|
||||
;fonts
|
||||
.byt $42, $08, $ff, $7f, $00, $00, $9c, $73
|
||||
.byt $42, $08, $ff, $43, $00, $00, $18, $63
|
||||
34
snes/boot/reset.a65
Normal file
34
snes/boot/reset.a65
Normal file
@ -0,0 +1,34 @@
|
||||
; This file is part of the snescom-asm demo - a demo of how to build a SNES program.
|
||||
; See http://bisqwit.iki.fi/source/snescom.html for details.
|
||||
|
||||
#include "memmap.i65"
|
||||
#include "dma.i65"
|
||||
|
||||
#define TILE_ADDR_REG_VAL(addr, scsize) \
|
||||
(((addr & $FC00) >> 8) + scsize)
|
||||
#define BMAP_ADDR_REG_VAL(addr, addr2) \
|
||||
(((addr & $F000) >> 12) | (((addr2 & $F000) >> 12) << 4))
|
||||
|
||||
; NMI - called on VBlank
|
||||
NMI_ROUTINE:
|
||||
sep #$20 : .as
|
||||
rep #$10 : .xl
|
||||
lda #$00
|
||||
pha
|
||||
plb
|
||||
lda $4210
|
||||
|
||||
ldx #BG1_TILE_BASE
|
||||
stx $2116
|
||||
DMA0(#$01, #36*64, #^BG1_TILE_BUF, #!BG1_TILE_BUF, #$18)
|
||||
|
||||
lda #$01
|
||||
sta isr_done
|
||||
rtl
|
||||
|
||||
; IRQ - called when triggered
|
||||
IRQ_ROUTINE:
|
||||
sep #$20 : .as
|
||||
lda $4211 ;Acknowledge irq
|
||||
rtl
|
||||
|
||||
47
snes/boot/text.a65
Normal file
47
snes/boot/text.a65
Normal file
@ -0,0 +1,47 @@
|
||||
.text
|
||||
#include "memmap.i65"
|
||||
loprint:
|
||||
rep #$30 : .xl : .al
|
||||
lda !print_x
|
||||
and #$00ff
|
||||
asl ;double the offset for WRAM addressing
|
||||
clc
|
||||
adc #!BG1_TILE_BUF
|
||||
sta !print_temp
|
||||
lda !print_y
|
||||
and #$00ff
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
asl ;double the offset for WRAM addressing
|
||||
clc
|
||||
adc !print_temp
|
||||
; we need to transfer to WRAM and from there to VRAM via DMA during VBLANK
|
||||
; because VRAM can only be accessed during VBLANK and forced blanking.
|
||||
sta @$2181
|
||||
sep #$20 : .as
|
||||
lda #$7f ;we really only need bit 0. full bank given for clarity
|
||||
sta @$2183
|
||||
ldx !print_src
|
||||
lda !print_bank
|
||||
pha
|
||||
plb
|
||||
loprint_loop_inner
|
||||
lda !0,x
|
||||
beq loprint_end
|
||||
sta @$2180
|
||||
lda #$00
|
||||
adc #$00
|
||||
ora #$20
|
||||
sta @$2180
|
||||
inx
|
||||
bra loprint_loop_inner
|
||||
loprint_end
|
||||
lda #$00
|
||||
pha
|
||||
plb
|
||||
rts
|
||||
loprint_endend
|
||||
.byt $ff
|
||||
Loading…
x
Reference in New Issue
Block a user