eventroutines.asm 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216
  1. .include "routines/main.h"
  2. .section "events" semifree
  3. EventPtTable:
  4. .dw EventRoutine0
  5. .dw EventRoutine1
  6. .dw EventRoutine2
  7. .dw EventRoutine3
  8. .dw EventRoutine4
  9. ;boot init, also debug menu check
  10. EventRoutine0:
  11. rep #$31
  12. lda.w #200
  13. sta.w GravityCutOffYPos
  14. sep #$20
  15. lda.b #0
  16. sta.b ScreenBrightness
  17. lda.b #$80
  18. sta.l $2100
  19. ; jsr InitOam
  20. jsr InitHdma
  21. jsr ResetScrollOffsets
  22. jsr InitDmaFifo
  23. ; jsr ClearColObjList
  24. ; jsr ClearZBuffer
  25. jsr PalEffectInit
  26. jsr ClearVRAM
  27. jsr ClearBg3TilemapBuffer ;cls
  28. jsr ClearBg2TilemapBuffer ;cls
  29. jsr ClearBg1TilemapBuffer ;cls
  30. inc.b NMIBg1UploadFlag
  31. inc.b NMIBg2UploadFlag
  32. inc.b NMIBg3UploadFlag
  33. stz.b FocusScreenFlags
  34. lda.b #0
  35. sta.b CheckJoypadMode ;set joypad check to 8 players
  36. lda.b #$80
  37. sta.w IrqBrightnessIncDec
  38. lda.b #20
  39. sta.w MaxGravObjCount
  40. lda.b #0 ;load bgmode config #1
  41. jsr SetBGMode
  42. ; jsr DMATilesToVramBG3
  43. ; jsr ClearBg3TilemapBuffer ;cls
  44. lda.b #0
  45. jsr SpcPlaySong
  46. stz.b LoadMenuDoInit
  47. inc.b CurrentEvent
  48. lda.b #13 ;window effect
  49. jsr CreateHdmaEffect
  50. lda.b #14 ;wavy scroll
  51. jsr CreateHdmaEffect
  52. rep #$31
  53. lda.w #%00100100
  54. ldx.w #0
  55. ldy.w #0
  56. jsr UploadBgObject
  57. lda.w #%00101001+$0100
  58. ldx.w #0
  59. ldy.w #0
  60. jsr UploadBgObject
  61. lda.w #0
  62. jsr VwfCreateTextbox
  63. lda.w #11
  64. jsr PalEffectCreate
  65. lda.w #12
  66. jsr PalEffectCreate
  67. lda.w #$0504
  68. sta.w SpcReportType
  69. jsr SpcSetReportType
  70. rts
  71. ;wait for rom upload to start
  72. EventRoutine1:
  73. sep #$20
  74. lda.w Qd16Flags
  75. lsr a
  76. bcc EventNoRomLoad
  77. inc.b CurrentEvent
  78. rep #$31
  79. lda.w #1
  80. jsr VwfCreateTextbox ;print "loading rom"
  81. sep #$20
  82. EventNoRomLoad:
  83. jsr ShakeShake
  84. jsr QD16CommandPoll
  85. jsr VwfHandler
  86. jsr ProcessHdmaList
  87. jsr PalEffectHandler
  88. rts
  89. ;seek rom header:
  90. EventRoutine2:
  91. jsr QD16CheckHeaderValid
  92. bcc SeekHeaderNotFound
  93. rep #$31
  94. lda.l RomHeaderSize,x ;get romsize
  95. txy
  96. sec
  97. sbc.w #8
  98. and.w #7
  99. tax
  100. lda.l RomSizeLUT+BaseAdress,x
  101. sta.w Qd16Mbit
  102. tya
  103. bne SeekHeaderHirom
  104. lda.w #5
  105. jsr VwfCreateTextbox ;print lorom header
  106. bra SeekHeaderNotFound
  107. SeekHeaderHirom:
  108. lda.w #6
  109. jsr VwfCreateTextbox ;print hirom header
  110. SeekHeaderNotFound:
  111. jsr ShakeShake
  112. jsr QD16CommandPoll
  113. jsr VwfHandler
  114. jsr ProcessHdmaList
  115. jsr PalEffectHandler
  116. rts
  117. RomSizeLUT:
  118. .db 2
  119. .db 4
  120. .db 8
  121. .db 16
  122. .db 32
  123. .db 64
  124. .db 0
  125. .db 0
  126. ShakeShake:
  127. php
  128. sep #$20
  129. lda.b #$0f
  130. sta.b ScreenBrightness
  131. lda.l SpcReportBuffer+8
  132. beq event1Noshake
  133. lda.b Mosaic
  134. clc
  135. adc.b #$80
  136. sta.b Mosaic
  137. event1Noshake:
  138. ; jsr ObjectProcessor
  139. lda.b Mosaic
  140. and.b #$f0
  141. beq Event1MosDec
  142. sec
  143. sbc.b #$10
  144. Event1MosDec:
  145. ora.b #%10
  146. sta.b Mosaic
  147. plp
  148. rts
  149. ;wait some frames
  150. EventRoutine3:
  151. sep #$20
  152. dec.w FrameWait
  153. bne EventRoutine3Wait
  154. lda.w EventBuffer
  155. sta.b CurrentEvent
  156. EventRoutine3Wait:
  157. rts
  158. ;fade out, dont accept any new commands
  159. EventRoutine4:
  160. jsr VwfHandler
  161. jsr ProcessHdmaList
  162. jsr PalEffectHandler
  163. rts
  164. WaitFrameEvent:
  165. pha
  166. php
  167. sep #$20
  168. sta.w FrameWait
  169. lda.b CurrentEvent
  170. sta.w EventBuffer
  171. lda.b #3
  172. sta.b CurrentEvent
  173. plp
  174. pla
  175. rts
  176. .ends