David Voswinkel 7f84c8d97a add loader
2009-07-28 08:37:40 +02:00

272 lines
16 KiB
NASM

.Section "BGmode" superfree
BgModeLut:
.dw BgModeTable0
.dw BgModeTable1
.dw BgModeTable2
.dw BgModeTable3
.dw BgModeTable4
.dw BgModeTable5
.dw BgModeTable6
.dw BgModeTable7
.dw BgModeTable8
;normal mode1 16color background mode. debug menu
BgModeTable0:
.db $00 ;00 SetIni Hires screen settings (reg $2133)
.db %00001001 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
.db %00010100 ;02 MainScreen mainscreen designation (reg $212c)
.db %00000000 ;03 SubScreen subscreen designation (reg $212d)
.db %00000000 ;04 CGWsel color add/sub settings (reg $2130)
.db %00111111 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
.db $25 ;06 BGTilesVram12 bg1/bg2 tile base adress (reg $210b)
.db $01 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
.db $00 ;08 BG1TilemapVram bg1 screen size and tilemap base adress (reg $2107)
.db $08 ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
.db $10 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
.db $18 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
.db %00100011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
.db $00 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
.db %00000000 ;14 W12SEL $2123 window enable/inverse bg1,2
.db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
.db %00100000 ;16 WOBJSEL $2125 window enable/inverse obj/col
.db 1 ;17 W1L $2126 window 1 left pos
.db 0 ;18 W1R $2127 window 1 right pos
.db $00 ;19 W2L $2128 window 2 left pos
.db $00 ;20 W2R $2129 window 2 right pos
.db %00000000 ;21 WBGLOG $212a window mask logic bg
.db $00 ;22 WOBJLOG $212b window mask logic obj/col
.db %00000000 ;23 WMS $212e window main screen designation
.db %00000000 ;24 WSS $212f window sub screen designation
;normal levels. player select, battle level, results screen
;mode3 256color level mode with overscan and irq cutoff for dma transfers with sprites. sprites=8x8 + 32x32
BgModeTable1:
.db %00000100 ;00 SetIni Hires/overscan screen settings (reg $2133)
.db $03 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
.db %00010001 ;02 MainScreen mainscreen designation (reg $212c)
.db %00010001 ;03 SubScreen subscreen designation (reg $212d)
.db %10100000 ;04 CGWsel color add/sub settings (reg $2130)
.db $00 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
.db $70 ;06 BGTilesVram12 bg1/bg2 tile base adress (reg $210b)
.db $00 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
.db $5c ;08 BG1TilemapVram bg1 screen size and tilemap base adress (reg $2107)
.db $7c ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
.db $00 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
.db $00 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
.db %00100011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
.db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
.db %00000011 ;14 W12SEL $2123 window enable/inverse bg1,2
.db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
.db %00000011 ;16 WOBJSEL $2125 window enable/inverse obj/col
.db 16 ;17 W1L $2126 window 1 left pos
.db 239 ;18 W1R $2127 window 1 right pos
.db $00 ;19 W2L $2128 window 2 left pos
.db $00 ;20 W2R $2129 window 2 right pos
.db %00000000 ;21 WBGLOG $212a window mask logic bg
.db $00 ;22 WOBJLOG $212b window mask logic obj/col
.db %00010001 ;23 WMS $212e window main screen designation
.db %00000000 ;24 WSS $212f window sub screen designation
;battles
;mode3 256color level mode with overscan and irq cutoff for dma transfers with sprites. sprites=8x8 + 32x32
BgModeTable2:
.db %00000100 ;00 SetIni Hires/overscan screen settings (reg $2133)
.db $03 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
.db %00010011 ;02 MainScreen mainscreen designation (reg $212c)
.db %00010011 ;03 SubScreen subscreen designation (reg $212d)
.db %10100000 ;04 CGWsel color add/sub settings (reg $2130)
.db $00 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
.db $40 ;06 BGTilesVram12 bit0-3:bg1/bit4-7:bg2 tile base adress (reg $210b)
.db $00 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
.db %1011001 ;08 BG1TilemapVram bg1 screen size and tilemap base adress (reg $2107)
.db %111100 ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
.db $00 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
.db $00 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
.db %00100011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
.db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
.db %00110011 ;14 W12SEL $2123 window enable/inverse bg1,2
.db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
.db %00110011 ;16 WOBJSEL $2125 window enable/inverse obj/col
.db 16 ;17 W1L $2126 window 1 left pos
.db 239 ;18 W1R $2127 window 1 right pos
.db $00 ;19 W2L $2128 window 2 left pos
.db $00 ;20 W2R $2129 window 2 right pos
.db %00000000 ;21 WBGLOG $212a window mask logic bg
.db $00 ;22 WOBJLOG $212b window mask logic obj/col
.db %00010011 ;23 WMS $212e window main screen designation
.db %00000000 ;24 WSS $212f window sub screen designation
;intro scene 2, moon with corona
;mode3 256color level mode with overscan and irq cutoff for dma transfers with sprites. sprites=8x8 + 64x64
BgModeTable3:
.db %00000100 ;00 SetIni Hires/overscan screen settings (reg $2133)
.db $03 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
.db %00010000 ;02 MainScreen mainscreen designation (reg $212c)
.db %00010001 ;03 SubScreen subscreen designation (reg $212d)
.db %00000010 ;04 CGWsel color add/sub settings (reg $2130)
.db %00110001 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
.db $00 ;06 BGTilesVram12 bg1/bg2 tile base adress (reg $210b)
.db $00 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
.db $5c ;08 BG1TilemapVram bg1 screen size and tilemap base adress (reg $2107)
.db $00 ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
.db $00 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
.db $00 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
.db %01000011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
.db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
.db %00000011 ;14 W12SEL $2123 window enable/inverse bg1,2
.db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
.db %00000011 ;16 WOBJSEL $2125 window enable/inverse obj/col
.db 16 ;17 W1L $2126 window 1 left pos
.db 239 ;18 W1R $2127 window 1 right pos
.db $00 ;19 W2L $2128 window 2 left pos
.db $00 ;20 W2R $2129 window 2 right pos
.db %00000000 ;21 WBGLOG $212a window mask logic bg
.db $00 ;22 WOBJLOG $212b window mask logic obj/col
.db %00010001 ;23 WMS $212e window main screen designation
.db %00010001 ;24 WSS $212f window sub screen designation
;titlescreen
;mode3 256color level mode with overscan and irq cutoff for dma transfers with sprites. sprites=8x8 + 32x32
BgModeTable4:
.db %00000100 ;00 SetIni Hires/overscan screen settings (reg $2133)
.db $03 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
.db %00010011 ;02 MainScreen mainscreen designation (reg $212c)
.db %00010011 ;03 SubScreen subscreen designation (reg $212d)
.db %10100000 ;04 CGWsel color add/sub settings (reg $2130)
.db %10100001 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
.db $50 ;06 BGTilesVram12 bit0-3:bg1/bit4-7:bg2 tile base adress (reg $210b)
.db $00 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
.db %01011100 ;08 BG1TilemapVram bg1 screen size and tilemap base adress (reg $2107)
.db %01001100 ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
.db $00 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
.db $00 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
.db %01000011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
.db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
.db %00110011 ;14 W12SEL $2123 window enable/inverse bg1,2
.db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
.db %00110011 ;16 WOBJSEL $2125 window enable/inverse obj/col
.db 16 ;17 W1L $2126 window 1 left pos
.db 239 ;18 W1R $2127 window 1 right pos
.db $00 ;19 W2L $2128 window 2 left pos
.db $00 ;20 W2R $2129 window 2 right pos
.db %00000000 ;21 WBGLOG $212a window mask logic bg
.db $00 ;22 WOBJLOG $212b window mask logic obj/col
.db %00010011 ;23 WMS $212e window main screen designation
.db %00000000 ;24 WSS $212f window sub screen designation
;normal mode1 16color background mode. gra logo
BgModeTable5:
.db $00 ;00 SetIni Hires screen settings (reg $2133)
.db %00001001 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
.db %00010001 ;02 MainScreen mainscreen designation (reg $212c)
.db %00000000 ;03 SubScreen subscreen designation (reg $212d)
.db %00000000 ;04 CGWsel color add/sub settings (reg $2130)
.db %00110011 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
.db $25 ;06 BGTilesVram12 bg1/bg2 tile base adress (reg $210b)
.db $01 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
.db $00 ;08 BG1TilemapVram bg1 screen size and tilemap base adress (reg $2107)
.db $08 ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
.db $10 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
.db $18 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
.db %01000011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
.db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
.db %00000000 ;14 W12SEL $2123 window enable/inverse bg1,2
.db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
.db %00100000 ;16 WOBJSEL $2125 window enable/inverse obj/col
.db 1 ;17 W1L $2126 window 1 left pos
.db 0 ;18 W1R $2127 window 1 right pos
.db $00 ;19 W2L $2128 window 2 left pos
.db $00 ;20 W2R $2129 window 2 right pos
.db %00000000 ;21 WBGLOG $212a window mask logic bg
.db $00 ;22 WOBJLOG $212b window mask logic obj/col
.db %00000000 ;23 WMS $212e window main screen designation
.db %00000000 ;24 WSS $212f window sub screen designation
;titlescreen flash
;mode3 256color level mode with overscan and irq cutoff for dma transfers with sprites. sprites=8x8 + 32x32
BgModeTable6:
.db %00000100 ;00 SetIni Hires/overscan screen settings (reg $2133)
.db $03 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
.db %00010011 ;02 MainScreen mainscreen designation (reg $212c)
.db %00010011 ;03 SubScreen subscreen designation (reg $212d)
.db %10100000 ;04 CGWsel color add/sub settings (reg $2130)
.db %00111111 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
.db $50 ;06 BGTilesVram12 bit0-3:bg1/bit4-7:bg2 tile base adress (reg $210b)
.db $00 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
.db %01011100 ;08 BG1TilemapVram bg1 screen size and tilemap base adress (reg $2107)
.db %01001100 ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
.db $00 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
.db $00 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
.db %01000011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
.db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
.db %00110011 ;14 W12SEL $2123 window enable/inverse bg1,2
.db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
.db %00110011 ;16 WOBJSEL $2125 window enable/inverse obj/col
.db 16 ;17 W1L $2126 window 1 left pos
.db 239 ;18 W1R $2127 window 1 right pos
.db $00 ;19 W2L $2128 window 2 left pos
.db $00 ;20 W2R $2129 window 2 right pos
.db %00000000 ;21 WBGLOG $212a window mask logic bg
.db $00 ;22 WOBJLOG $212b window mask logic obj/col
.db %00010011 ;23 WMS $212e window main screen designation
.db %00000000 ;24 WSS $212f window sub screen designation
;16 color videos, 256 cc background 64x32 bg1
BgModeTable7:
.db $00 ;00 SetIni Hires screen settings (reg $2133)
.db %00001011 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
.db %00010011 ;02 MainScreen mainscreen designation (reg $212c)
.db %00000000 ;03 SubScreen subscreen designation (reg $212d)
.db %00000000 ;04 CGWsel color add/sub settings (reg $2130)
.db %00110011 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
.db $12 ;06 BGTilesVram12 bg1/bg2 tile base adress (reg $210b)
.db $00 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
.db $01 ;08 BG1TilemapVram bg1 screen size and tilemap base adress aaaaaayx (reg $2107)
.db $0c ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
.db $00 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
.db $00 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
.db %00100011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
.db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
.db %00000000 ;14 W12SEL $2123 window enable/inverse bg1,2
.db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
.db %00100000 ;16 WOBJSEL $2125 window enable/inverse obj/col
.db 1 ;17 W1L $2126 window 1 left pos
.db 0 ;18 W1R $2127 window 1 right pos
.db $00 ;19 W2L $2128 window 2 left pos
.db $00 ;20 W2R $2129 window 2 right pos
.db %00000000 ;21 WBGLOG $212a window mask logic bg
.db $00 ;22 WOBJLOG $212b window mask logic obj/col
.db %00000000 ;23 WMS $212e window main screen designation
.db %00000000 ;24 WSS $212f window sub screen designation
;16 color videos, 256 cc background 32x32 bg1, credits
BgModeTable8:
.db $00 ;00 SetIni Hires screen settings (reg $2133)
.db %00001011 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
.db %00010011 ;02 MainScreen mainscreen designation (reg $212c)
.db %00000000 ;03 SubScreen subscreen designation (reg $212d)
.db %00000000 ;04 CGWsel color add/sub settings (reg $2130)
.db %00110011 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
.db $12 ;06 BGTilesVram12 bg1/bg2 tile base adress (reg $210b)
.db $00 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
.db $00 ;08 BG1TilemapVram bg1 screen size and tilemap base adress aaaaaayx (reg $2107)
.db $0c ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
.db $00 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
.db $00 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
.db %01000011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
.db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
.db %00000000 ;14 W12SEL $2123 window enable/inverse bg1,2
.db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
.db %00100000 ;16 WOBJSEL $2125 window enable/inverse obj/col
.db 1 ;17 W1L $2126 window 1 left pos
.db 0 ;18 W1R $2127 window 1 right pos
.db $00 ;19 W2L $2128 window 2 left pos
.db $00 ;20 W2R $2129 window 2 right pos
.db %00000000 ;21 WBGLOG $212a window mask logic bg
.db $00 ;22 WOBJLOG $212b window mask logic obj/col
.db %00000000 ;23 WMS $212e window main screen designation
.db %00000000 ;24 WSS $212f window sub screen designation
.ends