summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIan C <ianc@noddybox.co.uk>2018-09-11 17:20:27 +0000
committerIan C <ianc@noddybox.co.uk>2018-09-11 17:20:27 +0000
commit2ceabcaee4920928c4d0230fa7b570f80c1d66ae (patch)
treeb8afa66c9d9759c2da16f5273e952bbb3add79b9
parent3b5ebdfe6a006f51682292c44415525e178f8a4c (diff)
Rejigged initialisation and removed green background code.
-rw-r--r--init.asm95
-rw-r--r--init.inc82
-rw-r--r--main.asm37
-rwxr-xr-xsnes.inc200
4 files changed, 302 insertions, 112 deletions
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