286 lines
4.7 KiB
Plaintext
286 lines
4.7 KiB
Plaintext
#include "memmap.i65"
|
|
#include "dma.i65"
|
|
|
|
GAME_MAIN:
|
|
sep #$20 : .as
|
|
lda #$01
|
|
sta $420d ; fast cpu
|
|
sep #$20 : .as
|
|
jsr snes_init
|
|
jsr setup_gfx
|
|
jsr colortest
|
|
jsr setup_hdma
|
|
jsr tests
|
|
sep #$20 : .as
|
|
lda #$00
|
|
sta @AVR_CMD
|
|
rep #$20 : .al
|
|
lda #$0000
|
|
sta @AVR_PARAM
|
|
sta @AVR_PARAM+2
|
|
jsr menu_init
|
|
sep #$20 : .as
|
|
sep #$20 : .as
|
|
- lda @$C00000
|
|
lda @$D00000
|
|
lda @$E00000
|
|
lda @$F00000
|
|
lda @$400000
|
|
lda @$500000
|
|
lda @$600000
|
|
lda @$700000
|
|
; bra -
|
|
jsr menuloop
|
|
cli
|
|
stz $4200
|
|
jmp @infloop ;infinite loop in WRAM
|
|
|
|
colortest:
|
|
sep #$20 : .as
|
|
rep #$10 : .xl
|
|
stz $2130
|
|
rts
|
|
|
|
setup_gfx:
|
|
sep #$20 : .as
|
|
rep #$10 : .xl
|
|
stz $420b
|
|
stz $420c
|
|
;clear tilemap buffers
|
|
ldx #$0000
|
|
stx $2181
|
|
lda #$01
|
|
sta $2183
|
|
DMA0(#$08, #0, #^zero, #!zero, #$80)
|
|
|
|
;copy 2bpp font (can be used as 4-bit lores font!)
|
|
ldx #$4000
|
|
stx $2116
|
|
DMA0(#$01, #$2000, #^font2, #!font2, #$18)
|
|
|
|
;copy 4bpp font
|
|
ldx #$0000
|
|
stx $2116
|
|
DMA0(#$01, #$4000, #^font4, #!font4, #$18)
|
|
|
|
;clear BG1 tilemap
|
|
ldx #BG1_TILE_BASE
|
|
stx $2116
|
|
DMA0(#$09, #$1000, #^zero, #!zero, #$18)
|
|
|
|
;clear BG2 tilemap
|
|
ldx #BG2_TILE_BASE
|
|
stx $2116
|
|
DMA0(#$09, #$1000, #^zero, #!zero, #$18)
|
|
|
|
;clear OAM tables
|
|
ldx #$0000
|
|
stx $2102
|
|
DMA0(#$08, #$544, #^zero, #!zero, #$04)
|
|
|
|
;copy logo tiles
|
|
ldx #$2000
|
|
stx $2116
|
|
DMA0(#$01, #$3740, #^logo, #!logo, #$18)
|
|
|
|
;copy logo tilemap
|
|
ldx #BG1_TILE_BASE
|
|
stx $2116
|
|
DMA0(#$01, #$280, #^logomap, #!logomap, #$18)
|
|
|
|
;copy sprites tiles
|
|
ldx #OAM_TILE_BASE
|
|
stx $2116
|
|
DMA0(#$01, #$400, #^logospr, #!logospr, #$18)
|
|
|
|
;set OAM tables
|
|
ldx #$0000
|
|
stx $2102
|
|
DMA0(#$00, #$5C, #^oam_data_l, #!oam_data_l, #$04)
|
|
ldx #$0100
|
|
stx $2102
|
|
DMA0(#$00, #$08, #^oam_data_h, #!oam_data_h, #$04)
|
|
|
|
;set palette
|
|
stz $2121
|
|
DMA0(#$00, #$200, #^palette, #!palette, #$22)
|
|
|
|
;copy hdma tables so we can work "without" the cartridge
|
|
;palette
|
|
lda #^hdma_pal
|
|
ldx #!hdma_pal
|
|
stx $2181
|
|
sta $2183
|
|
DMA0(#$00, #52, #^hdma_pal_src, #!hdma_pal_src, #$80)
|
|
|
|
;CG addr for palette
|
|
lda #^hdma_cg_addr
|
|
ldx #!hdma_cg_addr
|
|
stx $2181
|
|
sta $2183
|
|
DMA0(#$00, #227, #^hdma_cg_addr_src, #!hdma_cg_addr_src, #$80)
|
|
|
|
;screen mode
|
|
lda #^hdma_mode
|
|
ldx #!hdma_mode
|
|
stx $2181
|
|
sta $2183
|
|
DMA0(#$00, #5, #^hdma_mode_src, #!hdma_mode_src, #$80)
|
|
|
|
;bg scroll
|
|
lda #^hdma_scroll
|
|
ldx #!hdma_scroll
|
|
stx $2181
|
|
sta $2183
|
|
DMA0(#$00, #11, #^hdma_scroll_src, #!hdma_scroll_src, #$80);
|
|
|
|
;color math
|
|
lda #^hdma_math
|
|
ldx #!hdma_math
|
|
stx $2181
|
|
sta $2183
|
|
DMA0(#$00, #19, #^hdma_math_src, #!hdma_math_src, #$80);
|
|
|
|
;copy infinite loop to WRAM
|
|
lda #$80
|
|
sta infloop
|
|
lda #$fe
|
|
sta infloop+1
|
|
|
|
rts
|
|
|
|
tests:
|
|
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 #$13 ;enable BG1+BG2+OBJ
|
|
sta $212c ;BG Main
|
|
lda #$13 ;enable BG1+BG2+OBJ
|
|
sta $212d ;BG Sub
|
|
jsr setup_224
|
|
lda #$00
|
|
sta $2130
|
|
stz $2121
|
|
lda #$0f
|
|
sta $2100 ;screen on, full brightness
|
|
lda #9
|
|
sta bar_yl
|
|
rts
|
|
|
|
snes_init:
|
|
sep #$20 : .as ;8-bit accumulator
|
|
rep #$10 : .xl ;16-bit index
|
|
lda #$01
|
|
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 ;
|
|
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 ;
|
|
;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
|
|
|