Advertisement
Guest User

Gamestate and Color Palette Issues

a guest
Apr 21st, 2014
97
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.83 KB | None | 0 0
  1. ;HEADER, VARIABLE, AND CONSTANTS HERE
  2. ;-----------------------------------------------------------
  3. ;; DECLARE CONSTANTS
  4. ;-----------------------------------------------------------
  5. STATETITLE = $00 ; displaying title screen
  6. STATEPLAYING = $01 ; begin game
  7. STATEGAMEOVER = $02 ; displaying game over screen
  8. STATEPAUSE = $03 ; display pause screen
  9. ;MORE CONSTANTS
  10.  
  11. ;RESET, CLRMEM, AND VLANKS
  12. ;LOAD PALETTES
  13.  
  14. ;-----------------------------------------------------------
  15. ;---------------------LOAD BACKGROUND-----------------------
  16. ;-----------------------------------------------------------
  17. LDA #STATETITLE
  18. STA gamestate
  19. JSR LoadBackground
  20. ;LOAD ATTRIBUTES (THIS WILL BE MOVING ONCE I GET EVERYTHING WORKING)
  21.  
  22. LDA #%10010000 ; enable NMI, sprites from Pattern Table 0, background from Pattern Table 1
  23. STA $2000
  24. JSR EnablePPU
  25.  
  26.  
  27. NMI:
  28. LDA #$00
  29. STA $2003 ; set the low byte (00) of the RAM address
  30.  
  31. LDA #$02
  32. STA $4014 ; set the high byte (02) of the RAM address, start the transfer
  33.  
  34. ;SOME NMI CODE
  35. JSR UpdateColor ;;Update the Sprite Palette Color for new beer color
  36. ;SOME NMI CODE
  37.  
  38. LDA #$00 ;;tell the ppu there is no background scrolling
  39. STA $2005
  40. STA $2005
  41.  
  42. ;;;;;;;;;;;;;;;;;;GAME ENGINE;;;;;;;;;;;;;;;;;;;;;;;;;
  43.  
  44. GameEngine:
  45. LDA gamestate
  46. CMP #STATETITLE
  47. BEQ EngineTitle ;;game is displaying title screen
  48.  
  49. LDA gamestate
  50. CMP #STATEGAMEOVER
  51. BEQ EngineGameOver ;;game is displaying ending screen
  52.  
  53. LDA gamestate
  54. CMP #STATEPLAYING
  55. BEQ EnginePlaying ;;game is playing
  56.  
  57. LDA gamestate
  58. CMP #STATEPAUSE
  59. BEQ EnginePause ;;game is paused
  60.  
  61. GameEngineDone:
  62. RTI
  63.  
  64. EngineTitle:
  65. LDA #$01
  66. STA ChangeColor
  67. LDA #$29
  68. STA attribute_RAM
  69.  
  70. LDA buttons1_pressed ; player 1 - start
  71. AND #%00010000 ; only look at bit 5
  72. BEQ GameEngineDone
  73. JSR StartEnginePlaying
  74. ;SOME CODE TO RESET VARIABLES
  75.  
  76. JMP GameEngineDone
  77.  
  78. ;;;;;;;;;
  79.  
  80. EngineGameOver:
  81. LDA buttons1_pressed ; player 1 - start
  82. AND #%00010000 ; only look at bit 5
  83. BEQ GameEngineDone
  84. JSR StartTitle
  85.  
  86. JMP GameEngineDone
  87.  
  88. ;;;;;;;;;;;
  89.  
  90. EnginePlaying:
  91. ;SOME GAME PLAY CODE
  92. JSR handle_input
  93. JSR CheckGameOver ;Go to Game Over Subroutine to see if the clock is 00, if yes, then display game over screen and disable sprites
  94. EnginePlayingDone:
  95. JMP GameEngineDone
  96.  
  97. ;;;;;;;;;;;;;
  98.  
  99. EnginePause:
  100. LDA buttons1_pressed ; player 1 - start
  101. AND #%00010000 ; only look at bit 5
  102. BEQ GameEngineDone
  103. LDA #STATEPLAYING
  104. STA gamestate
  105.  
  106. JMP GameEngineDone
  107.  
  108.  
  109. ;-----------------------------------------------------------
  110. ;------------------START ENGINE PLAYING---------------------
  111. ;-----------------------------------------------------------
  112. StartEnginePlaying:
  113.  
  114. LDA #STATEPLAYING
  115. STA gamestate
  116. JSR DisablePPU
  117. JSR LoadBackground
  118. JSR EnablePPU
  119.  
  120. StartEnginePlayingDone:
  121. RTS
  122.  
  123. ;-----------------------------------------------------------
  124. ;-----------------------START TITLE-------------------------
  125. ;-----------------------------------------------------------
  126. StartTitle:
  127.  
  128. LDA #STATETITLE
  129. STA gamestate
  130. JSR DisablePPU
  131. JSR LoadBackground
  132. JSR EnablePPU
  133.  
  134. StartTitleDone:
  135. RTS
  136.  
  137. ;-----------------------------------------------------------
  138. ;----------------------GAME OVER----------------------------
  139. ;-----------------------------------------------------------
  140. CheckGameOver:
  141. LDA time1
  142. BNE CheckGameOverDone
  143.  
  144. LDA time10
  145. BNE CheckGameOverDone
  146.  
  147. LDA #STATEGAMEOVER
  148. STA gamestate
  149. JSR DisablePPU
  150. JSR LoadBackground
  151. JSR EnablePPU_nosprites
  152. CheckGameOverDone:
  153. RTS
  154.  
  155.  
  156.  
  157. ;-----------------------------------------------------------
  158. ;---------------------LOAD BACKGROUND-----------------------
  159. ;-----------------------------------------------------------
  160. LoadBackground:
  161. LDA $2002
  162. LDA #$20
  163. STA $2006 ; write the high byte of $2000 address
  164. LDA #$00
  165. STA $2006 ; write the low byte of $2000 address
  166. ;;;;;;
  167. LDA gamestate
  168. CMP #$02
  169. BEQ LoadGameOverBackground
  170.  
  171. LDA gamestate
  172. CMP #$01
  173. BEQ LoadMainBackground
  174.  
  175. LDA gamestate
  176. CMP #$00
  177. BEQ LoadTitleBackground
  178.  
  179. JMP LoadBackGroundDone
  180.  
  181. LoadGameOverBackground:
  182. LDA #LOW(GameOverScreen)
  183. STA AddrLow
  184. LDA #HIGH(GameOverScreen)
  185. STA AddrHigh
  186. JMP StartBGLoading
  187.  
  188. LoadMainBackground:
  189. LDA #LOW(MainScreen)
  190. STA AddrLow
  191. LDA #HIGH(MainScreen)
  192. STA AddrHigh
  193. JMP StartBGLoading
  194.  
  195. LoadTitleBackground:
  196. LDA #LOW(TitleScreen)
  197. STA AddrLow
  198. LDA #HIGH(TitleScreen)
  199. STA AddrHigh
  200. JMP StartBGLoading
  201.  
  202. StartBGLoading:
  203. LDX #$04 ; Loop X 4 times
  204. LDY #$00 ; Loop Y 256 times
  205. LoadBackgroundsLoop:
  206. LDA [AddrLow],y
  207. STA $2007
  208. INY
  209. BNE LoadBackgroundsLoop
  210. ; Outer loop
  211. INC AddrHigh ; increment high byte of address backg to next 256 byte chunk
  212. DEX ; one chunk done so X = X - 1.
  213. BNE LoadBackgroundsLoop ; if X isn't zero, do again
  214. LoadBackGroundDone:
  215. RTS
  216.  
  217.  
  218.  
  219. ;-----------------------------------------------------------
  220. ;----------------------PPU----------------------------------
  221. ;-----------------------------------------------------------
  222. EnablePPU:
  223. LDA #%00011110 ; enable sprites, enable background, no clipping on left side
  224. STA $2001
  225. RTS
  226. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  227.  
  228. EnablePPU_nosprites:
  229. LDA #%00001110 ; Disable sprites, enable background, no clipping on left side
  230. STA $2001
  231. RTS
  232. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  233.  
  234. DisablePPU:
  235. LDA #$00
  236. STA $2001
  237. RTS
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement