summaryrefslogtreecommitdiff
path: root/main.asm
diff options
context:
space:
mode:
Diffstat (limited to 'main.asm')
-rw-r--r--main.asm173
1 files changed, 166 insertions, 7 deletions
diff --git a/main.asm b/main.asm
index 057bd9b..d16f991 100644
--- a/main.asm
+++ b/main.asm
@@ -2,6 +2,7 @@
option output-file,"main.lib"
option output-format,lib
+ option +address24
org $8000
bank 0
@@ -10,28 +11,183 @@
;
include "snes.inc"
include "macros.inc"
+ import "tiles.lib",labels
+ import "maps.lib",labels
sei
clc
xce
- .x16
- rep #$10
+ INDEX16
ldx #$1fff
txs
- .x8
- .m8
- sep #$30 ; X,Y,A are 8 bit numbers
+ ACC8
+ INDEX8
+ jsr InitSNES
+ cli
- include "init.inc"
+ ; Clear VRAM
+ ;
+ lda #$80
+ sta VMAIN
+ stz VMADDL
+ stz VMADDH
+ DMA 9,zero,$18,0
- cli
+ ; Copy 4-colour tiles
+ ;
+ stz VMADDL
+ stz VMADDH
+ DMA 1,Col4Tiles,$18,Col4TilesLen
+
+ ; Copy 16-colour tiles
+ ;
+ stz VMADDL
+ lda #$10
+ sta VMADDH
+ DMA 1,Col16Tiles,$18,Col16TilesLen
+
+ ; Copy sprites
+ ;
+ stz VMADDL
+ lda #$a0
+ sta VMADDH
+ DMA 1,SpriteData,$18,SpriteDataLen
+
+ ; Copy palette
+ ;
+ stz CGADD
+ DMA 0,PaletteData,$22,PaletteDataLen
+
+ ; Copy BG3
+ ;
+copybg3:
+ INDEX16
+ ldx #$0
+ ldy #32*32
+ stz VMADDL
+ lda #$40
+ sta VMADDH
+.loop
+ lda BG3Map,x
+ sta VMDATAL
+ stz VMDATAH
+ inx
+ dey
+ bne loop
+ X8
+
+ ; Initialise the screen
+ ;
+ lda #$01
+ sta BGMODE
+ lda #$1f
+ sta TM
+
+ lda #$44
+ sta BG12NBA
+ stz BG34NBA
+
+ lda #$60
+ sta BG1SC
+ lda #$80
+ sta BG2SC
+ lda #$40
+ sta BG3SC
+
+ lda #$0f
+ sta INIDISP
; Loop forever.
Forever:
jmp Forever
+InitSNES:
+ lda #$8F
+ sta INIDISP
+ stz OBSEL
+ stz OAMADDL
+ stz OAMADDH
+ stz BGMODE
+ stz MOSAIC
+ stz BG1SC
+ stz BG2SC
+ stz BG3SC
+ stz BG4SC
+ stz BG12NBA
+ stz BG34NBA
+ stz BG1VOFS
+ stz BG1VOFS
+ stz BG2VOFS
+ stz BG2VOFS
+ stz BG3VOFS
+ stz BG3VOFS
+ stz BG4VOFS
+ stz BG4VOFS
+ stz BG1HOFS
+ stz BG1HOFS
+ stz BG2HOFS
+ stz BG2HOFS
+ stz BG3HOFS
+ stz BG3HOFS
+ stz BG4HOFS
+ stz BG4HOFS
+ lda #$80
+ sta VMAIN
+ stz VMADDL
+ stz VMADDH
+ stz M7SEL
+ stz M7A
+ lda #$01
+ sta M7A
+ stz M7B
+ stz M7B
+ stz M7C
+ stz M7C
+ stz M7D
+ sta M7D
+ stz M7X
+ stz M7X
+ stz M7Y
+ stz M7Y
+ stz CGADD
+ stz W12SEL
+ stz W34SEL
+ stz WOBJSEL
+ stz WH0
+ stz WH1
+ stz WH2
+ stz WH3
+ stz WBGLOG
+ stz WOBJLOG
+ sta TM
+ stz TS
+ stz TMW
+ stz TSW
+ lda #$30
+ sta CGWSEL
+ stz CGADSUB
+ lda #$E0
+ sta COLDATA
+ stz SETINI
+ stz NMITIMEN
+ lda #$FF
+ sta WRIO
+ stz WRMPYA
+ stz WRMPYB
+ stz WRDIVL
+ stz WRDIVH
+ stz WRDIVB
+ stz HTIMEL
+ stz HTIMEH
+ stz VTIMEL
+ stz VTIMEH
+ stz MDMAEN
+ stz HDMAEN
+ stz MEMSEL
+ rts
+
; IRQ vectors
;
@@ -41,3 +197,6 @@ vbl_handler:
irq_handler:
rti
+
+zero:
+ db 0