diff options
-rw-r--r-- | Makefile | 7 | ||||
-rw-r--r-- | init.inc | 82 | ||||
-rw-r--r-- | link.asm | 1 | ||||
-rw-r--r-- | macros.inc | 20 | ||||
-rw-r--r-- | main.asm | 173 | ||||
-rw-r--r-- | maps.asm | 42 | ||||
-rw-r--r-- | tiles.asm | 1 | ||||
-rw-r--r-- | vram-usage | 6 |
8 files changed, 241 insertions, 91 deletions
@@ -1,14 +1,17 @@ TARGET = tll-snes.sfc -LIBS = main.lib tiles.lib +LIBS = main.lib tiles.lib maps.lib $(TARGET): $(LIBS) link.asm casm link.asm -main.lib: main.asm +main.lib: main.asm macros.inc snes.inc tiles.lib maps.lib casm main.asm tiles.lib: tiles.asm casm tiles.asm +maps.lib: maps.asm + casm maps.asm + clean: rm -f $(TARGET) $(LIBS) diff --git a/init.inc b/init.inc deleted file mode 100644 index b276cac..0000000 --- a/init.inc +++ /dev/null @@ -1,82 +0,0 @@ - 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
@@ -8,3 +8,4 @@ import "main.lib" import "tiles.lib" + import "maps.lib" @@ -22,3 +22,23 @@ DMA: macro mode,source,dest,len pla
endm
+
+ACC16: macro
+ .m16
+ rep #$20
+ endm
+
+ACC8: macro
+ .m8
+ sep #$20
+ endm
+
+INDEX16:macro
+ .x16
+ rep #$10
+ endm
+
+INDEX8: macro
+ .x8
+ sep #$10
+ endm
@@ -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 diff --git a/maps.asm b/maps.asm new file mode 100644 index 0000000..c83f538 --- /dev/null +++ b/maps.asm @@ -0,0 +1,42 @@ + processor 65c816 + + option output-file,"maps.lib" + option output-format,lib + option +address24 + + org $8000 + bank 2 + +BG3Map: + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,1,40,40,40,40,0,0,40,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,1,40,0,40,0,0,40,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,1,40,0,40,0,0,40,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,1,40,0,40,40,40,40,40,40,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,21,16,19,15,2,5,16,0,13,16,24,0,13,6,23,6,13,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,30,28,29,36,0,10,2,15,0,4,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,15,16,5,5,26,3,16,25,39,4,16,39,22,12,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,16,19,10,8,10,15,2,13,0,8,2,14,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,38,29,37,36,32,0,4,16,20,21,2,0,17,2,15,2,26,10,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 + db 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 @@ -2,6 +2,7 @@ option output-file,"tiles.lib" option output-format,lib + option +address24 org $8000 bank 1 diff --git a/vram-usage b/vram-usage new file mode 100644 index 0000000..304fe8b --- /dev/null +++ b/vram-usage @@ -0,0 +1,6 @@ +0x0000 4-colour character set +0x1000 16-colour character set +0x4000 4-color map +0x6000 16-colour map (background) +0x8000 16-colour map (foreground) +0xa000 Sprites |