From 2ceabcaee4920928c4d0230fa7b570f80c1d66ae Mon Sep 17 00:00:00 2001 From: Ian C Date: Tue, 11 Sep 2018 17:20:27 +0000 Subject: Rejigged initialisation and removed green background code. --- init.asm | 95 ------------------------------ init.inc | 82 ++++++++++++++++++++++++++ main.asm | 37 ++++++------ snes.inc | 200 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 302 insertions(+), 112 deletions(-) delete mode 100644 init.asm create mode 100644 init.inc create mode 100755 snes.inc diff --git a/init.asm b/init.asm deleted file mode 100644 index bf71bde..0000000 --- a/init.asm +++ /dev/null @@ -1,95 +0,0 @@ - ; Initialise SNES - ; - sei - clc - xce - ldx #$1fff - txs - - sep #$30 ; X,Y,A are 8 bit numbers - lda #$8F ; screen off, full brightness - sta $2100 ; brightness + screen enable register - stz $2101 ; Sprite register (size + address in VRAM) - stz $2102 ; Sprite registers (address of sprite memory [OAM]) - stz $2103 ; "" "" - stz $2105 ; Mode 0, = Graphic mode register - stz $2106 ; noplanes, no mosaic, = Mosaic register - stz $2107 ; Plane 0 map VRAM location - stz $2108 ; Plane 1 map VRAM location - stz $2109 ; Plane 2 map VRAM location - stz $210A ; Plane 3 map VRAM location - stz $210B ; Plane 0+1 Tile data location - stz $210C ; Plane 2+3 Tile data location - stz $210D ; Plane 0 scroll x (first 8 bits) - stz $210D ; Plane 0 scroll x (last 3 bits) #$0 - #$07ff - lda #$FF ; The top pixel drawn on the screen isn't the top one in the tilemap, it's the one above that. - sta $210E ; Plane 0 scroll y (first 8 bits) - sta $2110 ; Plane 1 scroll y (first 8 bits) - sta $2112 ; Plane 2 scroll y (first 8 bits) - sta $2114 ; Plane 3 scroll y (first 8 bits) - lda #$07 ; Since this could get quite annoying, it's better to edit the scrolling registers to fix this. - sta $210E ; Plane 0 scroll y (last 3 bits) #$0 - #$07ff - sta $2110 ; Plane 1 scroll y (last 3 bits) #$0 - #$07ff - sta $2112 ; Plane 2 scroll y (last 3 bits) #$0 - #$07ff - sta $2114 ; Plane 3 scroll y (last 3 bits) #$0 - #$07ff - stz $210F ; Plane 1 scroll x (first 8 bits) - stz $210F ; Plane 1 scroll x (last 3 bits) #$0 - #$07ff - stz $2111 ; Plane 2 scroll x (first 8 bits) - stz $2111 ; Plane 2 scroll x (last 3 bits) #$0 - #$07ff - stz $2113 ; Plane 3 scroll x (first 8 bits) - stz $2113 ; Plane 3 scroll x (last 3 bits) #$0 - #$07ff - lda #$80 ; increase VRAM address after writing to $2119 - sta $2115 ; VRAM address increment register - stz $2116 ; VRAM address low - stz $2117 ; VRAM address high - stz $211A ; Initial Mode 7 setting register - stz $211B ; Mode 7 matrix parameter A register (low) - lda #$01 - sta $211B ; Mode 7 matrix parameter A register (high) - stz $211C ; Mode 7 matrix parameter B register (low) - stz $211C ; Mode 7 matrix parameter B register (high) - stz $211D ; Mode 7 matrix parameter C register (low) - stz $211D ; Mode 7 matrix parameter C register (high) - stz $211E ; Mode 7 matrix parameter D register (low) - sta $211E ; Mode 7 matrix parameter D register (high) - stz $211F ; Mode 7 center position X register (low) - stz $211F ; Mode 7 center position X register (high) - stz $2120 ; Mode 7 center position Y register (low) - stz $2120 ; Mode 7 center position Y register (high) - stz $2121 ; Color number register ($0-ff) - stz $2123 ; BG1 & BG2 Window mask setting register - stz $2124 ; BG3 & BG4 Window mask setting register - stz $2125 ; OBJ & Color Window mask setting register - stz $2126 ; Window 1 left position register - stz $2127 ; Window 2 left position register - stz $2128 ; Window 3 left position register - stz $2129 ; Window 4 left position register - stz $212A ; BG1, BG2, BG3, BG4 Window Logic register - stz $212B ; OBJ, Color Window Logic Register (or,and,xor,xnor) - sta $212C ; Main Screen designation (planes, sprites enable) - stz $212D ; Sub Screen designation - stz $212E ; Window mask for Main Screen - stz $212F ; Window mask for Sub Screen - lda #$30 - sta $2130 ; Color addition & screen addition init setting - stz $2131 ; Add/Sub sub designation for screen, sprite, color - lda #$E0 - sta $2132 ; color data for addition/subtraction - stz $2133 ; Screen setting (interlace x,y/enable SFX data) - stz $4200 ; Enable V-blank, interrupt, Joypad register - lda #$FF - sta $4201 ; Programmable I/O port - stz $4202 ; Multiplicand A - stz $4203 ; Multiplier B - stz $4204 ; Multiplier C - stz $4205 ; Multiplicand C - stz $4206 ; Divisor B - stz $4207 ; Horizontal Count Timer - stz $4208 ; Horizontal Count Timer MSB (most significant bit) - stz $4209 ; Vertical Count Timer - stz $420A ; Vertical Count Timer MSB - stz $420B ; General DMA enable (bits 0-7) - stz $420C ; Horizontal DMA (HDMA) enable (bits 0-7) - stz $420D ; Access cycle designation (slow/fast rom) - - cli ; Enable interrupts diff --git a/init.inc b/init.inc new file mode 100644 index 0000000..b276cac --- /dev/null +++ b/init.inc @@ -0,0 +1,82 @@ + 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/main.asm b/main.asm index 6863d3d..c7044a7 100644 --- a/main.asm +++ b/main.asm @@ -3,26 +3,29 @@ option output-file,"main.lib" option output-format,lib - option snes-irq,vbl,vbl_handler - option snes-irq,irq,irq_handler - - ; Initialise SNES - ; org $8000 bank 0 - include init.asm - - ; Set the background color to green. - sep #$20 ; Set the A register to 8-bit. - lda #%10000000 ; Force VBlank by turning off the screen. - sta $2100 - lda #%11100000 ; Load the low byte of the green color. - sta $2122 - lda #%00000000 ; Load the high byte of the green color. - sta $2122 - lda #%00001111 ; End VBlank, setting brightness to 15 (100%). - sta $2100 + ; Initialise SNES + ; + include "snes.inc" + + sei + clc + xce + + .x16 + rep #$10 + ldx #$1fff + txs + + .x8 + .m8 + sep #$30 ; X,Y,A are 8 bit numbers + + include "init.inc" + + cli ; Loop forever. Forever: diff --git a/snes.inc b/snes.inc new file mode 100755 index 0000000..9e10e57 --- /dev/null +++ b/snes.inc @@ -0,0 +1,200 @@ +INIDISP equ $2100 +OBSEL equ $2101 +OAMADDL equ $2102 +OAMADDH equ $2103 +OAMDATA equ $2104 +BGMODE equ $2105 +MOSAIC equ $2106 +BG1SC equ $2107 +BG2SC equ $2108 +BG3SC equ $2109 +BG4SC equ $210A +BG12NBA equ $210B +BG34NBA equ $210C +BG1HOFS equ $210D +BG1VOFS equ $210E +BG2HOFS equ $210F +BG2VOFS equ $2110 +BG3HOFS equ $2111 +BG3VOFS equ $2112 +BG4HOFS equ $2113 +BG4VOFS equ $2114 +VMAIN equ $2115 +VMADDL equ $2116 +VMADDH equ $2117 +VMDATAL equ $2118 +VMDATAH equ $2119 +M7SEL equ $211A +M7A equ $211B +M7B equ $211C +M7C equ $211D +M7D equ $211E +M7X equ $211F +M7Y equ $2120 +CGADD equ $2121 +CGDATA equ $2122 +W12SEL equ $2123 +W34SEL equ $2124 +WOBJSEL equ $2125 +WH0 equ $2126 +WH1 equ $2127 +WH2 equ $2128 +WH3 equ $2129 +WBGLOG equ $212A +WOBJLOG equ $212B +TM equ $212C +TS equ $212D +TMW equ $212E +TSW equ $212F +CGWSEL equ $2130 +CGADSUB equ $2131 +COLDATA equ $2132 +SETINI equ $2133 +MPYL equ $2134 +MPYM equ $2135 +MPYH equ $2136 +SLHV equ $2137 +OAMDATAREAD equ $2138 +VMDATALREAD equ $2139 +VMDATAHREAD equ $213A +CGDATAREAD equ $213B +OPHCT equ $213C +OPVCT equ $213D +STAT77 equ $213E +STAT78 equ $213F +APUIO0 equ $2140 +APUIO1 equ $2141 +APUIO2 equ $2142 +APUIO3 equ $2143 +WMDATA equ $2180 +WMADDL equ $2181 +WMADDM equ $2182 +WMADDH equ $2183 +JOYSER0 equ $4016 +JOYSER1 equ $4017 +NMITIMEN equ $4200 +WRIO equ $4201 +WRMPYA equ $4202 +WRMPYB equ $4203 +WRDIVL equ $4204 +WRDIVH equ $4205 +WRDIVB equ $4206 +HTIMEL equ $4207 +HTIMEH equ $4208 +VTIMEL equ $4209 +VTIMEH equ $420A +MDMAEN equ $420B +HDMAEN equ $420C +MEMSEL equ $420D +RDNMI equ $4210 +TIMEUP equ $4211 +HVBJOY equ $4212 +RDIO equ $4213 +RDDIVL equ $4214 +RDDIVH equ $4215 +RDMPYL equ $4216 +RDMPYH equ $4217 +JOY1L equ $4218 +JOY1H equ $4219 +JOY2L equ $421A +JOY2H equ $421B +JOY3L equ $421C +JOY3H equ $421D +JOY4L equ $421E +JOY4H equ $421F + +DMAP0 equ $4300 +BBAD0 equ $4301 +A1T0L equ $4302 +A1T0H equ $4303 +A1B0 equ $4304 +DAS0L equ $4305 +DAS0H equ $4306 +DASB0 equ $4307 +A2A0L equ $4308 +A2A0H equ $4309 +NTLR0 equ $430A + +DMAP1 equ $4310 +BBAD1 equ $4311 +A1T1L equ $4312 +A1T1H equ $4313 +A1B1 equ $4314 +DAS1L equ $4315 +DAS1H equ $4316 +DASB1 equ $4317 +A2A1L equ $4318 +A2A1H equ $4319 +NTLR1 equ $431A + +DMAP2 equ $4320 +BBAD2 equ $4321 +A1T2L equ $4322 +A1T2H equ $4323 +A1B2 equ $4324 +DAS2L equ $4325 +DAS2H equ $4326 +DASB2 equ $4327 +A2A2L equ $4328 +A2A2H equ $4329 +NTLR2 equ $432A + +DMAP3 equ $4330 +BBAD3 equ $4331 +A1T3L equ $4332 +A1T3H equ $4333 +A1B3 equ $4334 +DAS3L equ $4335 +DAS3H equ $4336 +DASB3 equ $4337 +A2A3L equ $4338 +A2A3H equ $4339 +NTLR3 equ $433A + +DMAP4 equ $4340 +BBAD4 equ $4341 +A1T4L equ $4342 +A1T4H equ $4343 +A1B4 equ $4344 +DAS4L equ $4345 +DAS4H equ $4346 +DASB4 equ $4347 +A2A4L equ $4348 +A2A4H equ $4349 +NTLR4 equ $434A + +DMAP5 equ $4350 +BBAD5 equ $4351 +A1T5L equ $4352 +A1T5H equ $4353 +A1B5 equ $4354 +DAS5L equ $4355 +DAS5H equ $4356 +DASB5 equ $4357 +A2A5L equ $4358 +A2A5H equ $4359 +NTLR5 equ $435A + +DMAP6 equ $4360 +BBAD6 equ $4361 +A1T6L equ $4362 +A1T6H equ $4363 +A1B6 equ $4364 +DAS6L equ $4365 +DAS6H equ $4366 +DASB6 equ $4367 +A2A6L equ $4368 +A2A6H equ $4369 +NTLR6 equ $436A + +DMAP7 equ $4370 +BBAD7 equ $4371 +A1T7L equ $4372 +A1T7H equ $4373 +A1B7 equ $4374 +DAS7L equ $4375 +DAS7H equ $4376 +DASB7 equ $4377 +A2A7L equ $4378 +A2A7H equ $4379 +NTLR7 equ $437A -- cgit v1.2.3