Advertisement
AlWes

NES do'h

Jan 24th, 2012
326
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.70 KB | None | 0 0
  1. .inesprg $01
  2. .ineschr $01
  3. .inesmap $00
  4. .inesmir $01
  5.  
  6. ; variables
  7. .rsset $0000
  8. gameState .rs 2
  9.  
  10. controller1 .rs 1
  11. controller2 .rs 1
  12.  
  13. pLo .rs 1
  14. pHi .rs 1
  15.  
  16. updatingBG .rs 1
  17.  
  18. ballXPos .rs 1
  19. ballYPos .rs 1
  20. ballXVel .rs 1
  21. ballYVel .rs 1
  22.  
  23. paddle1Y .rs 1
  24. paddle2Y .rs 1
  25. ; end variables
  26.  
  27. ; constants
  28. GSTITLE = $01
  29. GSPLAYING = $02
  30. GSGAMEOVER = $03
  31.  
  32. LEFTWALL = $20
  33. RIGHTWALL = $DA
  34. ROOF = $20
  35. FLOOR = $C0
  36.  
  37. PADDLE1X = $2A
  38. PADDLE2X = $D0
  39. ; end constants
  40.  
  41. .bank $00
  42. .org $C000
  43. ; subroutines
  44. VBlankWait:
  45. BIT $2002
  46. BPL VBlankWait
  47. RTS
  48.  
  49. SetBGPointer:
  50. TXA
  51. STA pLo
  52. TYA
  53. STA pHi
  54. RTS
  55.  
  56. LoadBG:
  57. LDA $2002
  58. LDA #$20
  59. STA $2006
  60. LDA #$00
  61. STA $2006
  62. LDX #$00
  63. LDY #$00
  64. LoadBGLoop:
  65. LDA [pLo], Y
  66. STA $2007
  67. INY
  68. BNE LoadBGLoop
  69. INC pHi
  70. INX
  71. CPX #$04
  72. BNE LoadBGLoop
  73. RTS
  74.  
  75. ReadController1:
  76. LDA #$01
  77. STA $4016
  78. LDA #$00
  79. STA $4016
  80. LDX #$08
  81. Controller1Loop:
  82. LDA $4016
  83. LSR A
  84. ROL controller1
  85. DEX
  86. BNE Controller1Loop
  87. RTS
  88.  
  89. ReadController2:
  90. LDA #$01
  91. STA $4016
  92. LDA #$00
  93. STA $4016
  94. LDX #$08
  95. Controller2Loop:
  96. LDA $4017
  97. LSR A
  98. ROL controller2
  99. DEX
  100. BNE Controller2Loop
  101. RTS
  102. ; end subroutines
  103.  
  104. Reset:
  105. SEI
  106. CLD
  107. LDX #$40
  108. STX $4017
  109. LDX #$FF
  110. TXS
  111. INX
  112. STX $2000
  113. STX $2001
  114. STX $4010
  115.  
  116. BIT $2002
  117. JSR VBlankWait
  118.  
  119. ClrMem:
  120. LDA #$00
  121. STA $0000, X
  122. STA $0100, X
  123. STA $0300, X
  124. STA $0400, X
  125. STA $0500, X
  126. STA $0600, X
  127. STA $0700, X
  128. LDA #$FE
  129. STA $0200, X
  130. INX
  131. BNE ClrMem
  132.  
  133. JSR VBlankWait
  134.  
  135. LDA $2002
  136. LDA #$3F
  137. STA $2006
  138. LDA #$00
  139. STA $2006
  140. LoadPalettes:
  141. LDA Palettes, X
  142. STA $2007
  143. INX
  144. CPX #$20
  145. BNE LoadPalettes
  146.  
  147. ; define some staring values
  148. LDA #GSTITLE
  149. STA gameState
  150.  
  151. LDA #$00
  152. STA $2003
  153.  
  154. LDA #%10010000
  155. STA $2000
  156.  
  157. Forever:
  158. LDA gameState
  159. CMP gameState+1
  160. BEQ GameStatesDone
  161.  
  162. JSR ReadController1
  163. JSR ReadController2
  164.  
  165. GameStates:
  166. LDA gameState
  167. CMP #GSTITLE
  168. BEQ TitleScreen
  169.  
  170. LDA gameState
  171. CMP #GSPLAYING
  172. BEQ PlayScreen
  173.  
  174. LDA gameState
  175. CMP #GSGAMEOVER
  176. BEQ GameOverScreen
  177. GameStatesDone:
  178.  
  179. JMP Forever
  180.  
  181. Nmi:
  182. PHA
  183. TXA
  184. PHA
  185. TYA
  186. PHA
  187.  
  188. LDA #$02
  189. STA $4014
  190.  
  191. LDA updatingBG
  192. BNE DoNotDraw
  193.  
  194. LDA #%00011110
  195. STA $2001
  196.  
  197. DoNotDraw:
  198.  
  199. LDA #$00
  200. STA $2005
  201. STA $2005
  202.  
  203. PLA
  204. TAY
  205. PLA
  206. TAX
  207. PLA
  208.  
  209. RTI
  210.  
  211. TitleScreen:
  212. LDA #$00
  213. STA $2001
  214.  
  215. LDA #$01
  216. STA updatingBG
  217.  
  218. LDA gameState
  219. STA gameState+1
  220.  
  221. LDX #LOW(TitleBG)
  222. LDY #HIGH(TitleBG)
  223. JSR SetBGPointer
  224. JSR LoadBG
  225.  
  226. LDA #$00
  227. STA updatingBG
  228.  
  229. LDA controller1
  230. AND #%00010000
  231. BEQ GameStatesDone
  232.  
  233. LDA #GSPLAYING
  234. STA gameState
  235. JMP GameStatesDone
  236.  
  237. PlayScreen:
  238. LDA #$00
  239. STA $2000
  240. STA $2001
  241. JMP GameStatesDone
  242.  
  243. GameOverScreen:
  244. JMP GameStatesDone
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement