Skip to content
Permalink
3bd2417d89
Switch branches/tags
Go to file
 
 
Cannot retrieve contributors at this time
executable file 865 lines (673 sloc) 12.1 KB
;Initial settings for screen
.MACRO SNES_INIDISP ARGS arg
lda #arg
sta $2100
.ENDM
;OBJECT SIZE & OBJECT DATA AREA DESIGNATION
.MACRO SNES_OBJSEL ARGS arg
lda #arg
sta $2101
.ENDM
;ADDRESS FOR ACCESSING OAM (OBJECT ATTRIBUTE MEMORY)
.MACRO SNES_OAMADD ARGS arg
ldy #arg
sty $2102
.ENDM
;DATA FOR OAM WRITE
.MACRO SNES_OAMDATA ARGS arg
lda #arg
sta $2104
.ENDM
;BG MODE & CHARACTER SIZE SETTINGS
.MACRO SNES_BGMODE ARGS arg
lda #arg
sta $2105
.ENDM
;SIZE & SCREEN DESIGNATION FOR MOSAIC DISPLAY
.MACRO SNES_MOSAIC ARGS arg
lda #arg
sta $2106
.ENDM
;ADDRESS FOR STORING SC-DATA OF EACH BG & SC SIZE DESIGNATION
.MACRO SNES_BG1SC ARGS arg
lda #arg
sta $2107
.ENDM
.MACRO SNES_BG2SC ARGS arg
lda #arg
sta $2108
.ENDM
.MACRO SNES_BG3SC ARGS arg
lda #arg
sta $2109
.ENDM
.MACRO SNES_BG4SC ARGS arg
lda #arg
sta $210A
.ENDM
;BG CHARACTER DATA AREA DESTINATION
.MACRO SNES_BGNBA ARGS arg1,arg2
lda #arg1
sta $210B
lda #arg2
sta $210C
.ENDM
.MACRO SNES_BG12NBA ARGS arg
lda #arg
sta $210B
.ENDM
.MACRO SNES_BG34NBA ARGS arg
lda #arg
sta $210C
.ENDM
;H/V SCROLL VALUE DESIGNATION FOR BG-1,2,3,4
.MACRO SNES_BG1H0FS ARGS arg
lda #arg
sta $210D
.ENDM
.MACRO SNES_BG1V0FS ARGS arg
lda #arg
sta $210E
.ENDM
.MACRO SNES_BG2H0FS ARGS arg
lda #arg
sta $210F
.ENDM
.MACRO SNES_BG2V0FS ARGS arg
lda #arg
sta $2110
.ENDM
.MACRO SNES_BG3H0FS ARGS arg
lda #arg
sta $2111
.ENDM
.MACRO SNES_BG3V0FS ARGS arg
lda #arg
sta $2112
.ENDM
.MACRO SNES_BG4H0FS ARGS arg
lda #arg
sta $2113
.ENDM
.MACRO SNES_BG4V0FS ARGS arg
lda #arg
sta $2114
.ENDM
;VRAM ADRESS INCREMENT VALUE DESIGNATION
.MACRO SNES_VMAINC ARGS arg
lda #arg
sta $2115
.ENDM
;VRAM ADRESS INCREMENT VALUE DESIGNATION
.MACRO SNES_VMADD ARGS arg
ldy #arg
sty $2116
.ENDM
;DATA FOR VRAM WRITE
.MACRO SNES_VMDATA
ldy #\1
sty $2118
.ENDM
;INITIAL SETTING IN SCREEN MODE-7
.MACRO SNES_M7SEL ARGS arg
lda #arg
sta $211A
.ENDM
;ROTATION/ENLARGEMENT/REDUCTION/ IN MODE-7 , CENTER COORDINATE
;SETTINGS & MULTIPLICAND/MULTIPLIER SETTINGS OF COMPLEMENTARY
;MULTIPLICATION
.MACRO SNES_M7
lda #\1&$FF
sta $211B
lda #\1/$100
sta $211B
lda #\2&$FF
sta $211BC
lda #\2/$100
sta $211C
lda #\3&$FF
sta $211D
lda #\3/$100
sta $211D
lda #\4&$FF
sta $211E
lda #\4/$100
sta $211E
lda #\5&$FF
sta $211F
lda #\5/$100
sta $211F
lda #\6&$FF
sta $2120
lda #\6/$100
sta $2120
.ENDM
;ADDRES FOR CG-RAM READ AND WRITE
.MACRO SNES_CGADD ARGS arg
lda #arg
sta $2121
.ENDM
;DATA FOR CG-RAM WRITE
.MACRO SNES_CGDATA ARGS arg
lda #arg
sta $2122
.ENDM
;WINDOWS MASK SETTINGS BG1-BG4, OBJ COLOR)
.MACRO SNES_W12SEL ARGS arg
lda #arg
sta $2123
.ENDM
.MACRO SNES_W34SEL ARGS arg
lda #arg
sta $2124
.ENDM
.MACRO SNES_WOBJSEL ARGS arg
lda #arg
sta $2125
.ENDM
;WINDOWS POSITION DESIGNATION
.MACRO SNES_WH0 ARGS arg
lda #arg
sta $2126
.ENDM
.MACRO SNES_WH1 ARGS arg
lda #arg
sta $2127
.ENDM
.MACRO SNES_WH2 ARGS arg
lda #arg
sta $2128
.ENDM
.MACRO SNES_WH3 ARGS arg
lda #arg
sta $2129
.ENDM
;MAIN SCREEN DESIGNATION
.MACRO SNES_TM ARGS arg
lda #arg
sta $212C
.ENDM
;SUB SCREEN DESIGNATION
.MACRO SNES_TS ARGS arg
lda #arg
sta $212D
.ENDM
.MACRO SNES_TMW ARGS arg
lda #arg
sta $212E
.ENDM
;INITIAL SETTINGS FOR FIXED COLOR ADDITION OR SCREEN ADDITION
.MACRO SNES_CGSWSEL ARGS arg
lda #arg
sta $2130
.ENDM
;ADDITION/SUBTRACTION & SUBTRACTION DESIGNATION FOR EACH BG SCREEN OBJ & BACKGROUND COLOR
.MACRO SNES_CGADSUB ARGS arg
lda #arg
sta $2131
.ENDM
;FIXED COLOR DATA FOR FIXED COLOR ADDITION/SUBTRACTION
.MACRO SNES_COLDATA ARGS arg
lda #arg
sta $2132
.ENDM
;SCREEN INITIAL SETTINGS
.MACRO SNES_SETINI ARGS arg
lda #arg
sta $2133
.ENDM
.MACRO SNES_WMADD ARGS arg,arg2
ldy #arg
sty $2181
lda #arg2
sta $2183
.ENDM
;ENABLE FLAG FOR V-BLANK, TIMER INTERRUPT & STANDARD CONTROLLER
.MACRO SNES_NMITIMEN ARGS arg
lda #arg
sta $4200
.ENDM
;PROGRAMMABLE I/O PORT
.MACRO SNES_WRIO ARGS arg
lda #arg
sta $4201
.ENDM
;MULTIPLIER & MULTIPLICAND BY MULTIPLICATION
.MACRO SNES_WRMPYA ARGS arg
lda #arg
sta $4202
.ENDM
.MACRO SNES_WRMPYB ARGS arg
lda #arg
sta $4203
.ENDM
;DIVISOR & DIVIDEND BY DIVIDE
.MACRO SNES_WRDIVL ARGS arg
lda #arg
sta $4204
.ENDM
.MACRO SNES_WRDIVH ARGS arg
lda #arg
sta $4205
.ENDM
.MACRO SNES_WRDIVB ARGS arg
lda #arg
sta $4206
.ENDM
;DMA Enable Register
.MACRO SNES_MDMAEN ARGS arg
lda #arg
sta $420B
.ENDM
;HDMA Enable Register
.MACRO SNES_HDMAEN ARGS arg
lda #arg
sta $420C
.ENDM
;MAIN SCREEN DESIGNATION
.MACRO SNES_MEMSEL ARGS arg
lda #arg
sta $420D
.ENDM
;QUOTIENT OF DIVIDE RESULT
.MACRO SNES_RDDIVL ARGS arg
lda #arg
sta $4214
.ENDM
.MACRO SNES_RDDIVH ARGS arg
lda #arg
sta $4215
.ENDM
;PRODUCT OF MULTIPLICATION RESULT OR REMAINDER OF DIVIDE RESULT
.MACRO SNES_RDMPYL ARGS arg
lda #arg
sta $4216
.ENDM
.MACRO SNES_RDMPYH ARGS arg
lda #arg
sta $4217
.ENDM
;DATA FOR STANDARD CONTROLLER I, II, III & IV
;PARAMETER FOR DMA TRANSFER
.MACRO SNES_DMAX ARGS arg
lda #arg
sta $4300
sta $4310
sta $4320
sta $4330
sta $4340
sta $4350
sta $4360
sta $4370
.ENDM
.MACRO SNES_DMA0 ARGS arg
lda #arg
sta $4300
.ENDM
.MACRO SNES_DMA1 ARGS arg
lda #arg
sta $4310
.ENDM
.MACRO SNES_DMA2 ARGS arg
lda #arg
sta $4320
.ENDM
.MACRO SNES_DMA3 ARGS arg
lda #arg
sta $4330
.ENDM
.MACRO SNES_DMA4 ARGS arg
lda #arg
sta $4340
.ENDM
.MACRO SNES_DMA5 ARGS arg
lda #arg
sta $4350
.ENDM
.MACRO SNES_DMA6 ARGS arg
lda #arg
sta $4360
.ENDM
.MACRO SNES_DMA7 ARGS arg
lda #arg
sta $4370
.ENDM
;B-BUS ADRESS FOR DMA
.MACRO SNES_DMAX_BADD ARGS arg
lda #arg
sta $4301
sta $4311
sta $4321
sta $4331
sta $4341
sta $4351
sta $4361
sta $4371
.ENDM
.MACRO SNES_DMA0_BADD ARGS arg
lda #arg
sta $4301
.ENDM
.MACRO SNES_DMA1_BADD ARGS arg
lda #arg
sta $4311
.ENDM
.MACRO SNES_DMA2_BADD ARGS arg
lda #arg
sta $4321
.ENDM
.MACRO SNES_DMA3_BADD ARGS arg
lda #arg
sta $4331
.ENDM
.MACRO SNES_DMA4_BADD ARGS arg
lda #arg
sta $4341
.ENDM
.MACRO SNES_DMA5_BADD ARGS arg
lda #arg
sta $4351
.ENDM
.MACRO SNES_DMA6_BADD ARGS arg
lda #arg
sta $4361
.ENDM
.MACRO SNES_DMA7_BADD ARGS arg
lda #arg
sta $4371
.ENDM
;TABLE ADDRESS OF A-BUS FOR DMA
.MACRO SNES_DMA0_ADD
lda #:\1
ldx #\1
ldy #\2
stx $4302
sta $4304
sty $4305
.ENDM
.MACRO SNES_DMA1_ADD
lda #:\1
ldx #\1
ldy #\2
stx $4312
sta $4314
sty $4315
.ENDM
.MACRO SNES_DMA2_ADD
lda #:\1
ldx #\1
ldy #\2
stx $4322
sta $4324
sty $4325
.ENDM
.MACRO SNES_DMA3_ADD
lda #:\1
ldx #\1
ldy #\2
stx $4332
sta $4334
sty $4335
.ENDM
.MACRO SNES_DMA4_ADD
lda #:\1
ldx #\1
ldy #\2
stx $4342
sta $4344
sty $4345
.ENDM
.MACRO SNES_DMA5_ADD
lda #:\1
ldx #\1
ldy #\2
stx $4352
sta $4354
sty $4355
.ENDM
.MACRO SNES_DMA6_ADD
lda #:\1
ldx #\1
ldy #\2
stx $4362
sta $4364
sty $4365
.ENDM
.MACRO SNES_DMA7_ADD
lda #:\1
ldx #\1
ldy #\2
stx $4372
sta $4374
sty $4375
.ENDM
.MACRO SNES_DMA_ADD
lda \1+2
ldx \1
ldy #\2
stx $4302+(\3*$10)
sta $4304+(\3*$10)
sty $4305+(\3*$10)
.ENDM
.MACRO SNES_DMA_ADDM
lda #:\1
ldx #\1+\4
ldy #\2
stx $4302+(\3*$10)
sta $4304+(\3*$10)
sty $4305+(\3*$10)
.ENDM
;DATA ADDRESS STORE BY H-DMA & NUMBER OF BYTE TO BE TRANSFERRED SETTINGS BY GENERAL PURPOSE DMA
.MACRO SNES_HDMA0_ADD
ldy #\1
lda #:\1
sty $4302
sta $4304
.ENDM
.MACRO SNES_HDMA1_ADD
ldy #\1
lda #:\1
sty $4312
sta $4314
.ENDM
.MACRO SNES_HDMA_ADD
ldx #\1
lda #\2
stx $4302+(\7*16)
sta $4304+(\7*16)
ldx #\3
lda #\4
stx $4305+(\7*16)
sta $4307+(\7*16)
ldx #\5
stx $4308+(\7*16)
lda #\6
sta $430A+(\7*16)
.ENDM
.MACRO SNES_HDMA1_ADD2
ldx #\1
lda #\2
ldy #\3
sty $4312
stz $4314
stx $4315
sta $4317
stz $4318
stz $4319
stz $431A
.ENDM
;SNES INIT
.MACRO SNES_INIT
stz $2100
stz $2101
stz $2102
stz $2103
;stz $2104
stz $2105
stz $2106
stz $2107
stz $2108
stz $2109
stz $210A
stz $210B
stz $210C
stz $210D
stz $210E
stz $210F
stz $2110
stz $2111
stz $2112
stz $2113
stz $2114
stz $2115
stz $2116
stz $2117
;stz $2118
;stz $2119
stz $211A
stz $211B
stz $211C
stz $211D
stz $211E
stz $211F
stz $2120
stz $2121
;stz $2122
stz $2123
stz $2124
stz $2125
stz $2126
stz $2127
stz $2128
stz $2129
stz $212A
stz $212B
stz $212C
stz $212D
stz $212E
stz $212F
stz $2130
stz $2131
stz $2132
stz $2133
stz $4200
stz $4201
stz $4202
stz $4203
stz $4204
stz $4205
stz $4206
stz $4207
stz $4208
stz $4209
stz $420A
stz $420B
stz $420C
stz $420D
stz $4016
lda $4210
.ENDM
;---------------------------------------------
.DEFINE INIDISP $2100
.DEFINE OBJSEL $2101
.DEFINE OAMADDL $2102
.DEFINE OAMADDH $2103
.DEFINE OAMDATA $2104
.DEFINE BGMODE $2105
.DEFINE MOSAIC $2106
.DEFINE BG1SC $2107
.DEFINE BG2SC $2108
.DEFINE BG3SC $2109
.DEFINE BG4SC $210A
.DEFINE BG12NBA $210B
.DEFINE BG34NBA $210C
.DEFINE BG1H0FS $210D
.DEFINE BG1V0FS $210E
.DEFINE BG2H0FS $210F
.DEFINE BG2V0FS $2110
.DEFINE BG3H0FS $2111
.DEFINE BG3V0FS $2112
.DEFINE BG4H0FS $2113
.DEFINE BG4V0FS $2114
.DEFINE VMAINC $2115
.DEFINE VMADDL $2116
.DEFINE VMADDH $2117
.DEFINE VMDATAL $2118
.DEFINE VMDATAH $2119
.DEFINE M7SEL $211A
.DEFINE M7A $211B
.DEFINE M7B $211C
.DEFINE M7C $211D
.DEFINE M7D $211E
.DEFINE M7X $211F
.DEFINE M7Y $2120
.DEFINE CGADD $2121
.DEFINE CGDATA $2122
.DEFINE TM $212C
.DEFINE TS $212D
.DEFINE CGSWSEL $2130
.DEFINE CGADSUB $2131
.DEFINE COLDATA $2132
.DEFINE SETINI $2133
.DEFINE OAMDATAR $2138
.DEFINE APUIO0 $2140
.DEFINE APUIO1 $2141
.DEFINE APUIO2 $2142
.DEFINE APUIO3 $2143
.DEFINE WMDATA $2180
.DEFINE WMADDL $2181
.DEFINE WMADDM $2182
.DEFINE WMADDH $2183
.DEFINE MPYL $2134
.DEFINE MPYM $2135
.DEFINE MPYH $2136
.DEFINE SLHV $2137
.DEFINE OPHCT $213C
.DEFINE OPVCT $213D
.DEFINE JOYSER0 $4016
.DEFINE JOYSER1 $4017
.DEFINE NMITIMEN $4200
.DEFINE WRIO $4201
.DEFINE WRMPYA $4202
.DEFINE WRMPYB $4203
.DEFINE WRDIVL $4204
.DEFINE WRDIVH $4205
.DEFINE WRDIVB $4206
.DEFINE HTIMEL $4207
.DEFINE HTIMEH $4208
.DEFINE VTIMEL $4209
.DEFINE VTIMEH $420A
.DEFINE MDMAEN $420B
.DEFINE HDMAEN $420C
.DEFINE MEMSEL $420D
.DEFINE RDDIVL $4214
.DEFINE RDDIVH $4215
.DEFINE RDMPYL $4216
.DEFINE RDMPYH $4217
.DEFINE STDCONTROL1L $4218
.DEFINE STDCONTROL1H $4219
.DEFINE STDCONTROL2L $421A
.DEFINE STDCONTROL2H $421B
.DEFINE STDCONTROL3L $421C
.DEFINE STDCONTROL3H $421D
.DEFINE STDCONTROL4L $421E
.DEFINE STDCONTROL4H $421F
.DEFINE DMA $4300
.DEFINE DMA_BADD $4301
.DEFINE DMA_ADDL $4302
.DEFINE DMA_ADDH $4303
.DEFINE DMA_BANK $4304
.DEFINE DMA_SIZEL $4305
.DEFINE DMA_SIZEH $4306
.DEFINE DMA_BANKHDMA $4307
.DEFINE DMA_ADDL2 $4308
.DEFINE DMA_ADDH2 $4309
.DEFINE DMA_LINES $430A
.DEFINE CHANNEL0 $00
.DEFINE CHANNEL1 $10
.DEFINE CHANNEL2 $20
.DEFINE CHANNEL3 $30
.DEFINE CHANNEL4 $40
.DEFINE CHANNEL5 $50
.DEFINE CHANNEL6 $60
.DEFINE CHANNEL7 $70