variables.asm 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328
  1. .ENUM $00 ;1byte direct page variables for kernel and game mechanics
  2. TempBuffer ds 20
  3. CurrentEvent db
  4. FrameCounterLo db
  5. FrameCounterHi db
  6. SetIni db
  7. ScreenMode db
  8. MainScreen db
  9. SubScreen db
  10. ScreenBrightness db
  11. BGTilesVram12 db
  12. BGTilesVram34 db
  13. BG1TilemapVram db
  14. BG2TilemapVram db
  15. BG3TilemapVram db
  16. BG4TilemapVram db
  17. SpriteTileOffsetVram dw
  18. ObjSel db
  19. BG1HOfLo db
  20. BG1HOfHi db
  21. BG1VOfLo db
  22. BG1VOfHi db
  23. BG2HOfLo db
  24. BG2HOfHi db
  25. BG2VOfLo db
  26. BG2VOfHi db
  27. HdmaFlags db
  28. HdmaPause db ;if msb is set, don't initiate further hdma transfers. this is useful when the rom hdma is trying to read from isnt present atm.
  29. ThreeBytePointerLo db
  30. ThreeBytePointerHi db
  31. ThreeBytePointerBank db
  32. ThreeBytePointerLo2 db
  33. ThreeBytePointerHi2 db
  34. ThreeBytePointerBank2 db
  35. BrightnessSpeed db
  36. LastFrameLo db
  37. LastFrameHi db
  38. CGWsel db
  39. CgadsubConfig db
  40. FixedColourR db
  41. FixedColourG db
  42. FixedColourB db
  43. InterruptEnableFlags db
  44. IrqRoutineNumber db
  45. IrqRoutineNumberBuffer db ;backup in case multiple irqs are executed per frame. nmi writes this number back to irq number every frame
  46. IrqVCounter dw
  47. IrqHCounter dw
  48. W12SEL db
  49. W34SEL db
  50. WOBJSEL db
  51. W1L db
  52. W1R db
  53. W2L db
  54. W2R db
  55. WBGLOG db
  56. WOBJLOG db
  57. WMS db
  58. WSS db
  59. Mosaic db
  60. BGTilesVram2 dw
  61. Bg3Status db
  62. PrintStringThreeBytePointerLo db
  63. PrintStringThreeBytePointerHi db
  64. PrintStringThreeBytePointerBank db
  65. VramBg1Tilemap dw
  66. VramBg2Tilemap dw
  67. VramBg3Tilemap dw
  68. VramBg4Tilemap dw
  69. VramBg1Tiles dw
  70. VramBg2Tiles dw
  71. VramBg3Tiles dw
  72. VramBg4Tiles dw
  73. SetBGThreeBytePointerLo db
  74. SetBGThreeBytePointerHi db
  75. SetBGThreeBytePointerBank db
  76. NMIOamUploadFlag db
  77. NMIPaletteUploadFlag db ;refresh palette during nmi?
  78. NMIBg1UploadFlag db ;refresh bg1 tilemap during nmi?
  79. NMIBg2UploadFlag db
  80. NMIBg3UploadFlag db ;UploadBg3Map db ;if this is not zero, upload tilemap to bg3
  81. CurrentMapNumber db ;number of currently loaded map
  82. CurrentMapPointer ds 3 ;24bit pointer to current map file
  83. CurrentColMapPointer ds 3 ;24 bit pointer to current collision map
  84. BgScrollCounterX db ;ranges from 0-7 inside one tile
  85. BgScrollCounterY db
  86. BgMapCurrentPositionX db ;current upper left tile on screen
  87. BgMapCurrentPositionY db
  88. ScreenPixelPositionX dw ;exact pixel position of upper left border for sprite position calculation
  89. ScreenPixelPositionY dw ;exact pixel position of upper left border for sprite position calculation
  90. BgScrollRowUploadDisplace db ;number of tiles to add/substract when uploading tilerows. this gets added to current position in map depending on the scrolling direction.(scroll right: add 28/scroll left: substract 1)
  91. BgScrollTilemapRowUploadDisplaceX db ;number of tiles to add/substract when uploading tilerows. this gets added to current position in map depending on the scrolling direction.(scroll right: add 28/scroll left: substract 1)
  92. BgScrollTilemapRowUploadDisplaceY db ;number of tiles to add/substract when uploading tilerows. this gets added to current position in map depending on the scrolling direction.(scroll right: add 28/scroll left: substract 1)
  93. BgScrollOffsetPointerTilesX db ;pointer to current vertical column that holds the leftmost tiles onscreen(goes from 0-27)
  94. BgScrollOffsetPointerTilesY db
  95. BgScrollOffsetPointerTilemapX db ;pointer to current vertical column that holds the leftmost tiles onscreen for tilemap (goes from 0-32)
  96. BgScrollOffsetPointerTilemapY db
  97. BgScrollTileSourcePointer ds 3 ;pointer to first tile of tileline to be uplodaded
  98. DmaFifoPointer dw ;relative pointer to current free entry in buffer
  99. DmaFifoPointerIrq dw
  100. DmaFifoSourcePointerLo dw
  101. DmaFifoSourcePointerBa db
  102. DmaFifoOverhang dw
  103. DmaFifoTotalBytesTransferred dw ;used to guesstimate how much time we have left for transfers
  104. ObjectListPointer dw ;pointer to next free object in object list
  105. ObjectListPointerCurrent dw ;pointer to current object in object list, used to set direct register
  106. CurrentObjectNumber db ;number of currently selected object in list
  107. OamBufferPointer dw ;pointer to current sprite in oam buffer
  108. OamZsortBufferPointer dw ;pointer to current sprite in oam zsort buffer
  109. OamZsortSpriteNumber db ;number of sprites to sort
  110. OamAniListStraightRepeatFlag dw
  111. FocusScreenFlags db ;flags for focus
  112. ;bit0=enable focus on object
  113. FocusScreenObject db ;number of object in object list to focus to
  114. FocusScreenSpline db ;number of preset table to use for scrolling depending on distance to object(linear,sine,exp etc)
  115. FocusScreenXWait db
  116. FocusScreenYWait db
  117. CollisionPixelX dw
  118. CollisionPixelY dw
  119. CollisionTemp dw
  120. PalTemp db ;used for object subroutine
  121. ExitCollisionPointer dw ;bits0-14 contain number of exit. old:;bits0-14 contain pointer to an entry in the exit list. if bit15 is set, this exit has been hit and needs to be procesed.
  122. R1 db ;random number generator buffers
  123. R2 db
  124. R3 db
  125. R4 db
  126. ColObjListPointer dw
  127. HdmaListPointer dw
  128. VwfFontPointerLo ds 3
  129. SpcTempBuffer ds 8 ;temp buffer for spc stuff
  130. SpcCurrentStreamSet db
  131. SpcHandlerState db
  132. SpcHandlerArgument0 db
  133. SpcHandlerArgument1 db
  134. SpcHandlerArgument2 db
  135. SpcCmdFifoStart db
  136. SpcCmdFifoEnd db
  137. PtPlayerDataPointerLo db ;assumes dreg: $0000
  138. PtPlayerDataPointerHi db ;assumes dreg: $0000
  139. PtPlayerDataPointerBa db ;assumes dreg: $0000
  140. PtPlayerCurrentSong db ;assumes dreg: $0000
  141. PtPlayerCurrentSamplePack db
  142. PtPlayerCurrentSoundEffect db
  143. PtPlayerSmplBufferPosLo db ;not needed at all
  144. PtPlayerSmplBufferPosHi db
  145. SpcUploadedFlag db ;msb set=song upload complete and playing. bit6 set=sample pack uploaded
  146. VideoHandlerState db
  147. CheckJoypadMode db ;0=1 player, 1=8 players, 2=instruments + 1 joypad
  148. FontSelector db
  149. FixedStringLength db
  150. PrintStringPalette db
  151. MenuFileThreeBytePointerLo db
  152. MenuFileThreeBytePointerHi db
  153. MenuFileThreeBytePointerBank db
  154. MenuRowsThreeBytePointerLo db
  155. MenuRowsThreeBytePointerHi db
  156. MenuRowsThreeBytePointerBank db
  157. MenuRowsThreeByteOptionPointerLo db
  158. MenuRowsThreeByteOptionPointerHi db
  159. MenuRowsThreeByteOptionPointerBank db
  160. MenuRowsThreeByteCodePointerLo db
  161. MenuRowsThreeByteCodePointerHi db
  162. MenuRowsThreeByteCodePointerBank db
  163. LoadMenuInitialOffset dw
  164. LoadMenuInitialOptionOffset dw
  165. LoadMenuVerticalSpacing dw
  166. LoadMenuNumberOfRows db
  167. LoadMenuCurrentRow db
  168. LoadMenuStringPosLo db
  169. LoadMenuStringPosHi db
  170. LoadMenuPalUnselSel db
  171. LoadMenuDoInit db
  172. BattleSubroutine db
  173. HdmaListCounter db ;counter used by hdma handler to switch through channels
  174. TempBufferIrq ds 8 ;Temporary Buffer for irq routines
  175. BattleMusicState db
  176. CurrentTablistPointer ds 3
  177. .ENDE
  178. .ENUM $200 ;2-byte adresses for game status stuff
  179. TempBufferTest ds 4
  180. Hdma3dScrollCountV db ;amount of lines to wait before hdma table
  181. CurrentBattleFile db
  182. MapStartPosX db ;map start position set by external routine
  183. MapStartPosY db
  184. MapSizeX db ;/must not be seperated cause they may be written to both at the same time in word-mode
  185. MapSizeY db ;\
  186. BGMapStartPosX db ;start position for bg upload(may differ from sprite location if near a border)
  187. BGMapStartPosY db
  188. CurrentStringTarget db ;current position in bg1 tilemap to write to, 2 bytes
  189. CurrentStringTargetHi db
  190. FixedColourRsave db
  191. FixedColourGsave db
  192. FixedColourBsave db
  193. CpuUsageScanline db
  194. SpcStreamVolume db
  195. SpcSEVolume db
  196. SpcSEPitch db
  197. SpcSongSpeed db ;default $a0
  198. SpcSongChMask db ;default $0f
  199. SpcReportType db ;0=none 1=timecode 2=channel-levels(vol out) 3=special mod command
  200. SpcCmdFifo ds 64
  201. MessageDeleteCounter dw ;inactive when zero, delete message when 1(then set zero), decrease each frame when not 0 or 1
  202. HdmaFadeInOutState db ;bit7set=fade in/bit7clear=fade out,bit6set=done fading bit0-5=current state in LUT for window and mosiac size
  203. MainCharaObjectNumber db
  204. MainCharaXPos dw
  205. MainCharaYPos dw
  206. ExitMapTarget dw ;target map
  207. ExitXTarget dw ;target x-pos on map
  208. ExitYTarget dw ;target y-pos on map
  209. Pseudo3dScrollUpdateFlag db ;if this isn't zero, update scroll table
  210. CurrentLevel dw
  211. PlayerState db ;current mode of player characters. 0=active battle 1=player select menu(start sitting. when start pressed for that player, switch to subroutine that is similar to battle, but without being able to fight) 2=results screen.
  212. PlayersPresentFlags db ;flags to signalize players connected.
  213. ActivePlayers db ;number of alive players
  214. WinningPlayer db ;number of player that has won the match. $ff=invalid
  215. IrqBrightnessIncDec db ;just a flag. bit0 set=increase. bit1 clear=decrease. bit8=ack/done
  216. BrightnessEventBuffer db ;buffer event routine to jum p to after brightness inc/dec
  217. SpcStreamFrame dw
  218. SpcSoundEffectFlipFlag dw ;flag alternating between each sound effect upload so that spc doesnt trigger the same one twice.
  219. BattleFinished db ;$80 if battle is finished
  220. IntroScene3ScrollPoint dw
  221. VideoFrames db
  222. VideoFrameRate dw ;ANDed with framecounter. 0=60hz, 1=30hz, 3=15hz etc.
  223. CurrentVideo db
  224. CurrentVideoFrame db
  225. PlayerSelectScrollCounter dw
  226. WinningPlayerPointer dw
  227. RandomLevelCounter db ;msb=shuffle direction. bits0-3 level number
  228. RandomStreamCounter db ;msb=shuffle direction. bits0-3 Streamset number
  229. SpecialReportOld db
  230. HdmaScrollPointerBuffer dw
  231. GravityCutOffYPos dw ;y-pos of object(with 4bit precision) that triggers delete if bigger and gravity affected
  232. GravObjectCounter db ;counter of particle/gravity objects to create to prevent slowdown and such
  233. MaxGravObjCount db ;max allowed particles per frame. dont create new ones if exceeded
  234. EventJumper db ;variable to select which event to jump to in debug menu
  235. CollisionObjPointer dw ;pointer to object that just has collided with calling obj
  236. Reg3000WriteVar db
  237. VIrqCounter dw
  238. ExtIrqCounter dw
  239. CartChecksum db
  240. .ENDE
  241. .ENUM $7e0300
  242. JoyPort1Data1Io0Buffer ds 4
  243. JoyPort1Data2Io0Buffer ds 4
  244. JoyPort2Data1Io0Buffer ds 4
  245. JoyPort2Data2Io0Buffer ds 4
  246. JoyPort1Data1Io1Buffer ds 4
  247. JoyPort1Data2Io1Buffer ds 4
  248. JoyPort2Data1Io1Buffer ds 4
  249. JoyPort2Data2Io1Buffer ds 4
  250. VectorAngleSMCode ds 9 ;8 inc/decs per frame + rtl
  251. LoadMenuStringBuffer ds 9
  252. PrintStringBuffer0 ds 16
  253. ;.ende
  254. ;.ENUM $7e0300
  255. JoyPortBuffer ds 16 ;8 joypads max, word entries.
  256. ;0=port1 joy 1
  257. ;2=port1 joy 2
  258. ;4=port1 joy 3
  259. ;6=port1 joy 4
  260. ;8=port2 joy 1
  261. ;a=port2 joy 2
  262. ;c=port2 joy 3
  263. ;e=port2 joy 4
  264. JoyPortBufferOld ds 16
  265. JoyPortBufferTrigger ds 16
  266. ;joypad buttons:
  267. ;15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
  268. ;b y se st U D L R a x l r 0 0 0 0
  269. PaletteBuffer ds $0200 ;bg3 palettes: buffer $0-$20 (4 different 4-color palettes, for text
  270. Bg1MapBuffer ds $1000
  271. Bg2MapBuffer ds $800
  272. Bg3MapBuffer ds $0800
  273. Bg4MapBuffer ds $1
  274. OamZSortBuffer ds $0500 ;256 entries, each 6 bytes
  275. OamZSortObjList ds 128*2 ;prioritized list of objects that need priority processing(2 byte relative pointers)
  276. ;ZSortOamPriorityBuffer ds $0040
  277. OamBuffer ds $0200
  278. OamPriorityBuffer ds $0020
  279. DmaFifoBuffer ds $1000 ;DmaFifoEntryLength*256
  280. ObjectList ds $0800 ;32 entries, each 32 bytes
  281. ExitList ds $0080 ;16 entries, each 8 bytes
  282. ColObjList ds $00c0 ;32 entries, each 4 bytes
  283. HdmaBuffer ds $0340
  284. HdmaBuffer1 ds $0340
  285. HdmaBuffer2 ds $0340
  286. HdmaBuffer3 ds $0340
  287. HdmaBuffer4 ds $0340
  288. HdmaBuffer5 ds $0340
  289. HdmaDataBuffer1 ds $0400
  290. HdmaSpcBuffer ds 200 ;streaming table, uses channel 7
  291. TextBoxMenuBuffer ds $0040 ;8 entries * 8
  292. SpcReportBuffer ds 16 ;8 entries, each 2 bytes
  293. ;0=none
  294. ;2=timecode
  295. ;4=channel levels
  296. ;6=special mod cmd
  297. Hdma3dScrollBuffer ds 400 ;80 entries, each 5 bytes
  298. WinnerArray ds 8*1
  299. .ENDE