From f196ff1a43ce03decad5c693eb82992dde7c3dd0 Mon Sep 17 00:00:00 2001 From: Ian C Date: Tue, 18 Sep 2018 09:39:02 +0000 Subject: Initial (corrupted) title page. --- Makefile | 7 ++- init.inc | 82 ----------------------------- link.asm | 1 + macros.inc | 20 +++++++ main.asm | 173 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--- maps.asm | 42 +++++++++++++++ tiles.asm | 1 + vram-usage | 6 +++ 8 files changed, 241 insertions(+), 91 deletions(-) delete mode 100644 init.inc create mode 100644 maps.asm create mode 100644 vram-usage diff --git a/Makefile b/Makefile index 9c0a07b..a530129 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/link.asm b/link.asm index 91e381a..bd19b49 100644 --- a/link.asm +++ b/link.asm @@ -8,3 +8,4 @@ import "main.lib" import "tiles.lib" + import "maps.lib" diff --git a/macros.inc b/macros.inc index 78bbfad..d50c96f 100644 --- a/macros.inc +++ b/macros.inc @@ -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 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 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 diff --git a/tiles.asm b/tiles.asm index 0ed84df..805e763 100644 --- a/tiles.asm +++ b/tiles.asm @@ -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 -- cgit v1.2.3