Advertisement
Guest User

Backround Not Loading with ChangeColor

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