565 lines
6.8 KiB
Plaintext
565 lines
6.8 KiB
Plaintext
GAME_MAIN:
|
|
sep #$20 : .as
|
|
stz $4200 ; inhibit VBlank NMI
|
|
lda #$01
|
|
sta $420d ; fast cpu
|
|
jsr killdma
|
|
jsr waitblank
|
|
lda #$00
|
|
sta @$f00000
|
|
sta @$f00001
|
|
sta @$f00002
|
|
sta @$f00003
|
|
lda #$00
|
|
sta @$f01fff
|
|
jsr snes_init
|
|
jsr video_init
|
|
jsr linetest
|
|
jsr batest
|
|
jsr snes_init
|
|
jsr video_init
|
|
jsr copy_memtest
|
|
jsr irqtest
|
|
jsl $7e1800
|
|
- bra -
|
|
|
|
copy_memtest:
|
|
rep #$30 : .al : .xl
|
|
lda #$0300
|
|
ldx #!memtest
|
|
ldy #$1800
|
|
mvn $7e, ^memtest
|
|
rts
|
|
|
|
linetest
|
|
sep #$20 : .as
|
|
lda #$00
|
|
pha
|
|
plb
|
|
- lda $0000
|
|
lda $2100
|
|
sta $21ff
|
|
lda @$f01fff
|
|
cmp #$01
|
|
bne -
|
|
rts
|
|
|
|
irqtest:
|
|
cli
|
|
sep #$20 : .as
|
|
rep #$10 : .xl
|
|
lda #$0f
|
|
sta $2100
|
|
lda #$ff
|
|
sta $4209
|
|
lda #$ff
|
|
sta $420a
|
|
lda #$ff
|
|
sta $4200
|
|
sta @$f00000
|
|
lda #$01
|
|
sta @$002222
|
|
rts
|
|
|
|
batest:
|
|
sei
|
|
sep #$20 : .as
|
|
rep #$10 : .xl
|
|
lda #$00
|
|
ldx #$2100
|
|
- sta !$0, x
|
|
inx
|
|
inc
|
|
bne -
|
|
lda #$e0
|
|
pha
|
|
plb
|
|
lda #$00
|
|
ldx #$0000
|
|
- cmp !$0, x
|
|
bne batest_fail
|
|
inx
|
|
inc
|
|
bne -
|
|
lda #$5a
|
|
sta @$f00002
|
|
lda #$00
|
|
pha
|
|
plb
|
|
rts
|
|
batest_fail:
|
|
lda #$ff
|
|
sta @$f00002
|
|
lda #$00
|
|
pha
|
|
plb
|
|
rts
|
|
|
|
memtest:
|
|
; test 4 areas: 00-3f:8000-ffff
|
|
; 40-7d:0000-ffff
|
|
; 80-bf:8000-ffff
|
|
; 80-ff:0000-ffff
|
|
sep #$20 : .as
|
|
rep #$10 : .xl
|
|
|
|
lda #$01
|
|
sta @$003333 ; switch to linear memory mode
|
|
ldx #$8000
|
|
stx $00
|
|
ldx #$8000
|
|
stx $10
|
|
lda #$00
|
|
sta $03 ; bank no.
|
|
mem0_writeloop0:
|
|
; switch bank
|
|
pha
|
|
plb
|
|
lda #$01
|
|
sta @$003333
|
|
- lda $03
|
|
clc
|
|
adc $01
|
|
clc
|
|
adc $00
|
|
sta !$0000, x
|
|
inx
|
|
stx $00
|
|
bne -
|
|
ldx $10
|
|
inc $03
|
|
lda #$00
|
|
sta @$003333
|
|
lda $03
|
|
sta @$f00003
|
|
cmp #$40
|
|
bne mem0_writeloop0
|
|
|
|
ldx #$0000
|
|
stx $10
|
|
mem0_writeloop1:
|
|
; switch bank
|
|
lda #$01
|
|
sta @$003333
|
|
lda $03
|
|
pha
|
|
plb
|
|
- lda $03
|
|
clc
|
|
adc $01
|
|
clc
|
|
adc $00
|
|
sta !$0000, x
|
|
inx
|
|
stx $00
|
|
bne -
|
|
ldx $10
|
|
inc $03
|
|
lda #$00
|
|
sta @$003333
|
|
lda $03
|
|
sta @$f00003
|
|
cmp #$7e
|
|
bne mem0_writeloop1
|
|
|
|
ldx #$8000
|
|
stx $10
|
|
lda #$80
|
|
sta $03 ; bank no.
|
|
mem0_writeloop2:
|
|
; switch bank
|
|
lda #$01
|
|
sta @$003333
|
|
lda $03
|
|
pha
|
|
plb
|
|
- lda $03
|
|
clc
|
|
adc $01
|
|
clc
|
|
adc $00
|
|
sta !$0000, x
|
|
inx
|
|
stx $00
|
|
bne -
|
|
ldx $10
|
|
inc $03
|
|
lda #$00
|
|
sta @$003333
|
|
lda $03
|
|
sta @$f00003
|
|
cmp #$c0
|
|
bne mem0_writeloop2
|
|
ldx #$0000
|
|
stx $10
|
|
mem0_writeloop3:
|
|
; switch bank
|
|
lda #$01
|
|
sta @$003333
|
|
lda $03
|
|
pha
|
|
plb
|
|
- lda $03
|
|
clc
|
|
adc $01
|
|
clc
|
|
adc $00
|
|
sta !$0000, x
|
|
inx
|
|
stx $00
|
|
bne -
|
|
ldx $10
|
|
inc $03
|
|
lda #$00
|
|
sta @$003333
|
|
lda $03
|
|
sta @$f00003
|
|
bne mem0_writeloop3
|
|
|
|
lda #$00
|
|
sta @$002121
|
|
lda #$ff
|
|
sta @$002122
|
|
lda #$03
|
|
sta @$002122
|
|
|
|
ldx #$8000
|
|
stx $00
|
|
ldx #$8000
|
|
stx $10
|
|
lda #$00
|
|
sta $03 ; bank no.
|
|
mem0_verifyloop0:
|
|
; switch bank
|
|
lda #$01
|
|
sta @$f00001
|
|
lda #$01
|
|
sta @$003333
|
|
lda $03
|
|
pha
|
|
plb
|
|
- lda $03
|
|
clc
|
|
adc $01
|
|
clc
|
|
adc $00
|
|
cmp !$0000, x
|
|
bne mem0_fail
|
|
inx
|
|
stx $00
|
|
bne -
|
|
ldx $10
|
|
inc $03
|
|
lda #$00
|
|
sta @$003333
|
|
lda $03
|
|
sta @$f00003
|
|
cmp #$40
|
|
bne mem0_verifyloop0
|
|
|
|
ldx #$0000
|
|
stx $10
|
|
mem0_verifyloop1:
|
|
; switch bank
|
|
lda #$01
|
|
sta @$003333
|
|
lda $03
|
|
pha
|
|
plb
|
|
- lda $03
|
|
clc
|
|
adc $01
|
|
clc
|
|
adc $00
|
|
cmp !$0000, x
|
|
bne mem0_fail
|
|
inx
|
|
stx $00
|
|
bne -
|
|
ldx $10
|
|
inc $03
|
|
lda #$00
|
|
sta @$003333
|
|
lda $03
|
|
sta @$f00003
|
|
cmp #$7e
|
|
bne mem0_verifyloop1
|
|
|
|
ldx #$8000
|
|
stx $10
|
|
lda #$80
|
|
sta $03 ; bank no.
|
|
bra mem0_verifyloop2
|
|
mem0_fail:
|
|
lda #$00
|
|
pha
|
|
plb
|
|
sta @$003333
|
|
rep #$20 : .al
|
|
lda $00
|
|
sta @$f00004
|
|
sep #$20 : .as
|
|
lda $03
|
|
sta @$f00006
|
|
lda #$ff
|
|
sta @$f00001
|
|
rtl
|
|
mem0_verifyloop2:
|
|
; switch bank
|
|
lda #$01
|
|
sta @$003333
|
|
lda $03
|
|
pha
|
|
plb
|
|
- lda $03
|
|
clc
|
|
adc $01
|
|
clc
|
|
adc $00
|
|
cmp !$0000, x
|
|
bne mem0_fail
|
|
inx
|
|
stx $00
|
|
bne -
|
|
ldx $10
|
|
inc $03
|
|
lda #$00
|
|
sta @$003333
|
|
lda $03
|
|
sta @$f00003
|
|
cmp #$c0
|
|
bne mem0_verifyloop2
|
|
|
|
ldx #$0000
|
|
stx $10
|
|
mem0_verifyloop3:
|
|
; switch bank
|
|
lda #$01
|
|
sta @$003333
|
|
lda $03
|
|
pha
|
|
plb
|
|
- lda $03
|
|
clc
|
|
adc $01
|
|
clc
|
|
adc $00
|
|
cmp !$0000, x
|
|
bne mem0_fail
|
|
inx
|
|
stx $00
|
|
bne -
|
|
ldx $10
|
|
inc $03
|
|
lda #$00
|
|
sta @$003333
|
|
lda $03
|
|
sta @$f00003
|
|
bne mem0_verifyloop3
|
|
|
|
lda #$00
|
|
sta @$002121
|
|
lda #$e0
|
|
sta @$002122
|
|
lda #$03
|
|
sta @$002122
|
|
|
|
lda #$00
|
|
pha
|
|
plb
|
|
sta @$003333
|
|
lda #$5a
|
|
sta @$f00001
|
|
rtl
|
|
rtl
|
|
rtl
|
|
rtl
|
|
rtl
|
|
rtl
|
|
|
|
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
|
|
stz $4360
|
|
stz $4361
|
|
stz $4362
|
|
stz $4363
|
|
stz $4364
|
|
rts
|
|
|
|
|
|
|
|
|
|
waitblank:
|
|
- lda $4212
|
|
and #$80
|
|
bne -
|
|
- lda $4212
|
|
and #$80
|
|
beq -
|
|
rts
|
|
|
|
video_init:
|
|
sep #$20 : .as ;8-bit accumulator
|
|
rep #$10 : .xl ;16-bit index
|
|
lda #$03 ;mode 3, mode 5 via HDMA :D
|
|
sta $2105
|
|
lda #$58 ;Tilemap addr 0xB000
|
|
ora #$02 ;SC size 32x64
|
|
sta $2107 ;for BG1
|
|
lda #$50 ;Tilemap addr 0xA000
|
|
ora #$02 ;SC size 32x64
|
|
sta $2108 ;for BG2
|
|
lda #$40 ;chr base addr:
|
|
sta $210b ;BG1=0x0000, BG2=0x8000
|
|
lda #$01 ;cut off leftmost subscreen pixel garbage
|
|
sta $2126
|
|
lda #$fe
|
|
sta $2127
|
|
lda #$10
|
|
sta $2130
|
|
lda #$1f
|
|
sta $212e
|
|
sta $212f
|
|
stz $2121
|
|
lda #$0f
|
|
sta $2100 ;screen on, full brightness
|
|
stz $2121
|
|
lda #$1f ;red background
|
|
sta $2122
|
|
stz $2122
|
|
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 #$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 ;
|
|
stz $212f ;
|
|
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
|
|
|
|
|