bgmodes.asm 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. .Section "BGmode" superfree
  2. BgModeLut:
  3. .dw BgModeTable0
  4. .dw BgModeTable1
  5. .dw BgModeTable2
  6. .dw BgModeTable3
  7. .dw BgModeTable4
  8. .dw BgModeTable5
  9. .dw BgModeTable6
  10. .dw BgModeTable7
  11. .dw BgModeTable8
  12. ;normal mode1 16color background mode. debug menu
  13. BgModeTable0:
  14. .db $00 ;00 SetIni Hires screen settings (reg $2133)
  15. .db %00001001 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
  16. .db %00010100 ;02 MainScreen mainscreen designation (reg $212c)
  17. .db %00000000 ;03 SubScreen subscreen designation (reg $212d)
  18. .db %00000000 ;04 CGWsel color add/sub settings (reg $2130)
  19. .db %00111111 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
  20. .db $25 ;06 BGTilesVram12 bg1/bg2 tile base adress (reg $210b)
  21. .db $01 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
  22. .db $00 ;08 BG1TilemapVram bg1 screen size and tilemap base adress (reg $2107)
  23. .db $08 ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
  24. .db $10 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
  25. .db $18 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
  26. .db %00100011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
  27. .db $00 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
  28. .db %00000000 ;14 W12SEL $2123 window enable/inverse bg1,2
  29. .db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
  30. .db %00100000 ;16 WOBJSEL $2125 window enable/inverse obj/col
  31. .db 1 ;17 W1L $2126 window 1 left pos
  32. .db 0 ;18 W1R $2127 window 1 right pos
  33. .db $00 ;19 W2L $2128 window 2 left pos
  34. .db $00 ;20 W2R $2129 window 2 right pos
  35. .db %00000000 ;21 WBGLOG $212a window mask logic bg
  36. .db $00 ;22 WOBJLOG $212b window mask logic obj/col
  37. .db %00000000 ;23 WMS $212e window main screen designation
  38. .db %00000000 ;24 WSS $212f window sub screen designation
  39. ;normal levels. player select, battle level, results screen
  40. ;mode3 256color level mode with overscan and irq cutoff for dma transfers with sprites. sprites=8x8 + 32x32
  41. BgModeTable1:
  42. .db %00000100 ;00 SetIni Hires/overscan screen settings (reg $2133)
  43. .db $03 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
  44. .db %00010001 ;02 MainScreen mainscreen designation (reg $212c)
  45. .db %00010001 ;03 SubScreen subscreen designation (reg $212d)
  46. .db %10100000 ;04 CGWsel color add/sub settings (reg $2130)
  47. .db $00 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
  48. .db $70 ;06 BGTilesVram12 bg1/bg2 tile base adress (reg $210b)
  49. .db $00 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
  50. .db $5c ;08 BG1TilemapVram bg1 screen size and tilemap base adress (reg $2107)
  51. .db $7c ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
  52. .db $00 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
  53. .db $00 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
  54. .db %00100011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
  55. .db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
  56. .db %00000011 ;14 W12SEL $2123 window enable/inverse bg1,2
  57. .db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
  58. .db %00000011 ;16 WOBJSEL $2125 window enable/inverse obj/col
  59. .db 16 ;17 W1L $2126 window 1 left pos
  60. .db 239 ;18 W1R $2127 window 1 right pos
  61. .db $00 ;19 W2L $2128 window 2 left pos
  62. .db $00 ;20 W2R $2129 window 2 right pos
  63. .db %00000000 ;21 WBGLOG $212a window mask logic bg
  64. .db $00 ;22 WOBJLOG $212b window mask logic obj/col
  65. .db %00010001 ;23 WMS $212e window main screen designation
  66. .db %00000000 ;24 WSS $212f window sub screen designation
  67. ;battles
  68. ;mode3 256color level mode with overscan and irq cutoff for dma transfers with sprites. sprites=8x8 + 32x32
  69. BgModeTable2:
  70. .db %00000100 ;00 SetIni Hires/overscan screen settings (reg $2133)
  71. .db $03 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
  72. .db %00010011 ;02 MainScreen mainscreen designation (reg $212c)
  73. .db %00010011 ;03 SubScreen subscreen designation (reg $212d)
  74. .db %10100000 ;04 CGWsel color add/sub settings (reg $2130)
  75. .db $00 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
  76. .db $40 ;06 BGTilesVram12 bit0-3:bg1/bit4-7:bg2 tile base adress (reg $210b)
  77. .db $00 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
  78. .db %1011001 ;08 BG1TilemapVram bg1 screen size and tilemap base adress (reg $2107)
  79. .db %111100 ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
  80. .db $00 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
  81. .db $00 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
  82. .db %00100011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
  83. .db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
  84. .db %00110011 ;14 W12SEL $2123 window enable/inverse bg1,2
  85. .db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
  86. .db %00110011 ;16 WOBJSEL $2125 window enable/inverse obj/col
  87. .db 16 ;17 W1L $2126 window 1 left pos
  88. .db 239 ;18 W1R $2127 window 1 right pos
  89. .db $00 ;19 W2L $2128 window 2 left pos
  90. .db $00 ;20 W2R $2129 window 2 right pos
  91. .db %00000000 ;21 WBGLOG $212a window mask logic bg
  92. .db $00 ;22 WOBJLOG $212b window mask logic obj/col
  93. .db %00010011 ;23 WMS $212e window main screen designation
  94. .db %00000000 ;24 WSS $212f window sub screen designation
  95. ;intro scene 2, moon with corona
  96. ;mode3 256color level mode with overscan and irq cutoff for dma transfers with sprites. sprites=8x8 + 64x64
  97. BgModeTable3:
  98. .db %00000100 ;00 SetIni Hires/overscan screen settings (reg $2133)
  99. .db $03 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
  100. .db %00010000 ;02 MainScreen mainscreen designation (reg $212c)
  101. .db %00010001 ;03 SubScreen subscreen designation (reg $212d)
  102. .db %00000010 ;04 CGWsel color add/sub settings (reg $2130)
  103. .db %00110001 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
  104. .db $00 ;06 BGTilesVram12 bg1/bg2 tile base adress (reg $210b)
  105. .db $00 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
  106. .db $5c ;08 BG1TilemapVram bg1 screen size and tilemap base adress (reg $2107)
  107. .db $00 ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
  108. .db $00 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
  109. .db $00 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
  110. .db %01000011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
  111. .db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
  112. .db %00000011 ;14 W12SEL $2123 window enable/inverse bg1,2
  113. .db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
  114. .db %00000011 ;16 WOBJSEL $2125 window enable/inverse obj/col
  115. .db 16 ;17 W1L $2126 window 1 left pos
  116. .db 239 ;18 W1R $2127 window 1 right pos
  117. .db $00 ;19 W2L $2128 window 2 left pos
  118. .db $00 ;20 W2R $2129 window 2 right pos
  119. .db %00000000 ;21 WBGLOG $212a window mask logic bg
  120. .db $00 ;22 WOBJLOG $212b window mask logic obj/col
  121. .db %00010001 ;23 WMS $212e window main screen designation
  122. .db %00010001 ;24 WSS $212f window sub screen designation
  123. ;titlescreen
  124. ;mode3 256color level mode with overscan and irq cutoff for dma transfers with sprites. sprites=8x8 + 32x32
  125. BgModeTable4:
  126. .db %00000100 ;00 SetIni Hires/overscan screen settings (reg $2133)
  127. .db $03 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
  128. .db %00010011 ;02 MainScreen mainscreen designation (reg $212c)
  129. .db %00010011 ;03 SubScreen subscreen designation (reg $212d)
  130. .db %10100000 ;04 CGWsel color add/sub settings (reg $2130)
  131. .db %10100001 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
  132. .db $50 ;06 BGTilesVram12 bit0-3:bg1/bit4-7:bg2 tile base adress (reg $210b)
  133. .db $00 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
  134. .db %01011100 ;08 BG1TilemapVram bg1 screen size and tilemap base adress (reg $2107)
  135. .db %01001100 ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
  136. .db $00 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
  137. .db $00 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
  138. .db %01000011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
  139. .db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
  140. .db %00110011 ;14 W12SEL $2123 window enable/inverse bg1,2
  141. .db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
  142. .db %00110011 ;16 WOBJSEL $2125 window enable/inverse obj/col
  143. .db 16 ;17 W1L $2126 window 1 left pos
  144. .db 239 ;18 W1R $2127 window 1 right pos
  145. .db $00 ;19 W2L $2128 window 2 left pos
  146. .db $00 ;20 W2R $2129 window 2 right pos
  147. .db %00000000 ;21 WBGLOG $212a window mask logic bg
  148. .db $00 ;22 WOBJLOG $212b window mask logic obj/col
  149. .db %00010011 ;23 WMS $212e window main screen designation
  150. .db %00000000 ;24 WSS $212f window sub screen designation
  151. ;normal mode1 16color background mode. gra logo
  152. BgModeTable5:
  153. .db $00 ;00 SetIni Hires screen settings (reg $2133)
  154. .db %00001001 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
  155. .db %00010001 ;02 MainScreen mainscreen designation (reg $212c)
  156. .db %00000000 ;03 SubScreen subscreen designation (reg $212d)
  157. .db %00000000 ;04 CGWsel color add/sub settings (reg $2130)
  158. .db %00110011 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
  159. .db $25 ;06 BGTilesVram12 bg1/bg2 tile base adress (reg $210b)
  160. .db $01 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
  161. .db $00 ;08 BG1TilemapVram bg1 screen size and tilemap base adress (reg $2107)
  162. .db $08 ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
  163. .db $10 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
  164. .db $18 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
  165. .db %01000011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
  166. .db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
  167. .db %00000000 ;14 W12SEL $2123 window enable/inverse bg1,2
  168. .db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
  169. .db %00100000 ;16 WOBJSEL $2125 window enable/inverse obj/col
  170. .db 1 ;17 W1L $2126 window 1 left pos
  171. .db 0 ;18 W1R $2127 window 1 right pos
  172. .db $00 ;19 W2L $2128 window 2 left pos
  173. .db $00 ;20 W2R $2129 window 2 right pos
  174. .db %00000000 ;21 WBGLOG $212a window mask logic bg
  175. .db $00 ;22 WOBJLOG $212b window mask logic obj/col
  176. .db %00000000 ;23 WMS $212e window main screen designation
  177. .db %00000000 ;24 WSS $212f window sub screen designation
  178. ;titlescreen flash
  179. ;mode3 256color level mode with overscan and irq cutoff for dma transfers with sprites. sprites=8x8 + 32x32
  180. BgModeTable6:
  181. .db %00000100 ;00 SetIni Hires/overscan screen settings (reg $2133)
  182. .db $03 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
  183. .db %00010011 ;02 MainScreen mainscreen designation (reg $212c)
  184. .db %00010011 ;03 SubScreen subscreen designation (reg $212d)
  185. .db %10100000 ;04 CGWsel color add/sub settings (reg $2130)
  186. .db %00111111 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
  187. .db $50 ;06 BGTilesVram12 bit0-3:bg1/bit4-7:bg2 tile base adress (reg $210b)
  188. .db $00 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
  189. .db %01011100 ;08 BG1TilemapVram bg1 screen size and tilemap base adress (reg $2107)
  190. .db %01001100 ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
  191. .db $00 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
  192. .db $00 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
  193. .db %01000011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
  194. .db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
  195. .db %00110011 ;14 W12SEL $2123 window enable/inverse bg1,2
  196. .db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
  197. .db %00110011 ;16 WOBJSEL $2125 window enable/inverse obj/col
  198. .db 16 ;17 W1L $2126 window 1 left pos
  199. .db 239 ;18 W1R $2127 window 1 right pos
  200. .db $00 ;19 W2L $2128 window 2 left pos
  201. .db $00 ;20 W2R $2129 window 2 right pos
  202. .db %00000000 ;21 WBGLOG $212a window mask logic bg
  203. .db $00 ;22 WOBJLOG $212b window mask logic obj/col
  204. .db %00010011 ;23 WMS $212e window main screen designation
  205. .db %00000000 ;24 WSS $212f window sub screen designation
  206. ;16 color videos, 256 cc background 64x32 bg1
  207. BgModeTable7:
  208. .db $00 ;00 SetIni Hires screen settings (reg $2133)
  209. .db %00001011 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
  210. .db %00010011 ;02 MainScreen mainscreen designation (reg $212c)
  211. .db %00000000 ;03 SubScreen subscreen designation (reg $212d)
  212. .db %00000000 ;04 CGWsel color add/sub settings (reg $2130)
  213. .db %00110011 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
  214. .db $12 ;06 BGTilesVram12 bg1/bg2 tile base adress (reg $210b)
  215. .db $00 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
  216. .db $01 ;08 BG1TilemapVram bg1 screen size and tilemap base adress aaaaaayx (reg $2107)
  217. .db $0c ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
  218. .db $00 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
  219. .db $00 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
  220. .db %00100011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
  221. .db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
  222. .db %00000000 ;14 W12SEL $2123 window enable/inverse bg1,2
  223. .db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
  224. .db %00100000 ;16 WOBJSEL $2125 window enable/inverse obj/col
  225. .db 1 ;17 W1L $2126 window 1 left pos
  226. .db 0 ;18 W1R $2127 window 1 right pos
  227. .db $00 ;19 W2L $2128 window 2 left pos
  228. .db $00 ;20 W2R $2129 window 2 right pos
  229. .db %00000000 ;21 WBGLOG $212a window mask logic bg
  230. .db $00 ;22 WOBJLOG $212b window mask logic obj/col
  231. .db %00000000 ;23 WMS $212e window main screen designation
  232. .db %00000000 ;24 WSS $212f window sub screen designation
  233. ;16 color videos, 256 cc background 32x32 bg1, credits
  234. BgModeTable8:
  235. .db $00 ;00 SetIni Hires screen settings (reg $2133)
  236. .db %00001011 ;01 ScreenMode screen mode/bg tilesize/bg3 priority (reg $2105)
  237. .db %00010011 ;02 MainScreen mainscreen designation (reg $212c)
  238. .db %00000000 ;03 SubScreen subscreen designation (reg $212d)
  239. .db %00000000 ;04 CGWsel color add/sub settings (reg $2130)
  240. .db %00110011 ;05 CgadsubConfig color add/sub settings 2 (reg $2131)
  241. .db $12 ;06 BGTilesVram12 bg1/bg2 tile base adress (reg $210b)
  242. .db $00 ;07 BGTilesVram34 bg3/bg4 tile base adress (reg $210c)
  243. .db $00 ;08 BG1TilemapVram bg1 screen size and tilemap base adress aaaaaayx (reg $2107)
  244. .db $0c ;09 BG2TilemapVram bg2 screen size and tilemap base adress (reg $2107)
  245. .db $00 ;10 BG3TilemapVram bg3 screen size and tilemap base adress (reg $2107)
  246. .db $00 ;11 BG4TilemapVram bg4 screen size and tilemap base adress (reg $2107)
  247. .db %01000011 ;12 ObjSel Sprite size, name and base adress (reg $2101)
  248. .db $01 ;13 IrqRoutineNumber number of irq routine to use. 0 means irq disabled
  249. .db %00000000 ;14 W12SEL $2123 window enable/inverse bg1,2
  250. .db $00 ;15 W34SEL $2124 window enable/inverse bg3,4
  251. .db %00100000 ;16 WOBJSEL $2125 window enable/inverse obj/col
  252. .db 1 ;17 W1L $2126 window 1 left pos
  253. .db 0 ;18 W1R $2127 window 1 right pos
  254. .db $00 ;19 W2L $2128 window 2 left pos
  255. .db $00 ;20 W2R $2129 window 2 right pos
  256. .db %00000000 ;21 WBGLOG $212a window mask logic bg
  257. .db $00 ;22 WOBJLOG $212b window mask logic obj/col
  258. .db %00000000 ;23 WMS $212e window main screen designation
  259. .db %00000000 ;24 WSS $212f window sub screen designation
  260. .ends