Guest User

NES Assembly code 54

a guest
Oct 12th, 2014
451
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. .inesprg 1 ; 1 PRG Bank
  2. .ineschr 1 ; 1 CHR Bank
  3. .inesmap 0 ; Mapper 0 used
  4. .inesmir 1 ; Mirroring enabled
  5.  
  6. .rsset $0000 ; Variables start from $0000
  7. pointerLo .rs 1 ; Hi/Lo bytes for background data pointers
  8. pointerHi .rs 1
  9. counterLo .rs 1 ; Hi/Lo bytes for 16 bit counter
  10. counterHi .rs 1
  11.  
  12. .bank 0 ; PRG Bank
  13. .org $8000 ; starts from $8000
  14. RESET: ; Reset routine
  15. SEI
  16. CLD
  17. LDX #$40
  18. STX $4017
  19. LDX #$FF
  20. TXS
  21. INX
  22. STX $2000 ; Disable NMI
  23. STX $2001 ; Disable rendering
  24. STX $4010 ; Disable DPCM
  25.  
  26. VBwait1: ; First PPU warm up wait
  27. BIT $2002
  28. BPL VBwait1
  29.  
  30. ClearMem: ;Clear internal memory $0000 - $07FF
  31. LDA #$00
  32. STA $0000, x
  33. STA $0100, x
  34. STA $0200, x
  35. STA $0300, x
  36. STA $0400, x
  37. STA $0500, x
  38. STA $0600, x
  39. STA $0700, x
  40. DEX
  41. CPX #$00
  42. BNE ClearMem
  43.  
  44. VBwait2: ; Second PPU warm up wait
  45. BIT $2002
  46. BPL VBwait2
  47.  
  48. LDA $2002 ; Reset PPU Hi/Lo latch
  49. LDA #$3F ; Store Hi/Lo bytes of the palette address
  50. STA $2006
  51. LDA #$00
  52. STA $2006
  53. LDX #$00
  54.  
  55. PaletteLoad1: ; Load palettes
  56. LDA palette, x
  57. STA $2007
  58. INX
  59. CPX #$1F
  60. BNE PaletteLoad1
  61.  
  62. SetBg: ; Set up information for NMI to update background
  63. LDA LOW(background)
  64. STA pointerLo
  65. LDA HIGH(background)
  66. STA pointerHi
  67.  
  68. LDA #%10001000 ; Enable NMI
  69. STA $2000
  70. LDA #$00
  71. STA $2005
  72. STA $2005
  73.  
  74. LDA #$01 ; Enable NMI flag
  75. STA $1E
  76.  
  77. MainLoop: ; Main loop
  78. JMP MainLoop
  79.  
  80. ReadP1: ; Set up controller reading
  81. LDA #$01
  82. STA $4016
  83. LDA #$00
  84. STA $4016
  85. LDX #$08
  86.  
  87. ReadP1Loop: ; Read each button and roll them to ZP $1F
  88. LDA $4016
  89. AND #$01
  90. LSR A
  91. ROL $1F
  92. DEX
  93. BNE ReadP1Loop
  94. RTS
  95.  
  96. NMI:
  97. PHA ; Push Accumulator, X register and Y register to Stack
  98. TXA
  99. PHA
  100. TYA
  101. PHA
  102. LDX $1E
  103. CPX #$01
  104. BNE FlagClear ; Check if NMI flag $1E is set
  105.  
  106. FlagSet: ; Set up background update
  107. LDA #$00 ; Disable Rendering
  108. STA $2001
  109.  
  110. LDA $2002 ; Reset PPU Hi/Lo latch
  111. LDA #$20 ; Store Hi/Lo bytes of the background nametables
  112. STA $2006
  113. LDA #$00
  114. STA $2006
  115.  
  116. BgLoop: ; 16 bit loop for drawing background
  117.  
  118. ;Background update loop goes gere
  119.  
  120. LDA #$00
  121. STA $1E ; Clear NMI flag
  122. JMP ExitNMI: ; End NMI
  123.  
  124. FlagClear: ; Read controller and draw background
  125. LDA #%00011110 ; Enable rendering
  126. STA $2001
  127. LDA #$00
  128. STA $2005
  129. STA $2005
  130.  
  131. ExitNMI:
  132. JSR ReadP1
  133. PLA ; Pull Accumulator, X register and Y register from Stack
  134. TAY
  135. PLA
  136. TAX
  137. PLA
  138. RTI ; End NMI
  139.  
  140. background:
  141. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  142. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  143. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  144. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  145. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  146. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  147. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  148. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  149. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  150. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  151. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  152. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  153. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  154. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  155. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  156. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  157. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  158. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  159. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  160. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  161. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  162. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  163. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  164. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  165. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  166. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  167. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  168. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  169. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  170. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  171. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  172. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  173. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  174. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  175. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  176. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  177. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  178. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  179. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  180. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  181. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  182. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  183. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  184. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  185. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  186. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  187. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  188. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  189. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  190. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  191. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  192. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  193. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  194. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  195. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  196. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  197. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  198. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  199. .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
  200. .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
  201.  
  202. palette:
  203. .db $0F,$31,$21,11
  204. .db $0F,$31,$21,11
  205. .db $0F,$31,$21,11
  206. .db $0F,$31,$21,11
  207. .db $0F,$31,$21,11
  208. .db $0F,$31,$21,11
  209. .db $0F,$31,$21,11
  210. .db $0F,$31,$21,11
  211.  
  212. attributes:
  213. .db $00,$00,$00,$00,$00,$00,$00,$00
  214. .db $00,$00,$00,$00,$00,$00,$00,$00
  215.  
  216. .bank 1
  217. .org $FFFA
  218. .dw NMI
  219. .dw RESET
  220. .dw 0
  221.  
  222. .bank 2
  223. .org $0000
  224. .incbin "Font.chr"
RAW Paste Data