123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252 |
- #include "memmap.i65"
- #include "dma.i65"
- GAME_MAIN:
- sep #$20 : .as
- jsr snes_init
- jsr setup_gfx
- jsr setup_hdma
- jsr tests
- jsr colortest
- 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
- 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)
- ;copy logo tiles
- ldx #$2000
- stx $2116
- DMA0(#$01, #$3480, #^logo, #!logo, #$18)
- ;copy logo tilemap
- ldx #BG1_TILE_BASE
- stx $2116
- DMA0(#$01, #$280, #^logomap, #!logomap, #$18)
- ;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 #$03 ;enable BG1+BG2
- sta $212c ;BG Main
- 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
- stz $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
|