sd2snes/snes/tests/tests.a65
2011-12-19 22:22:51 +01:00

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