Advertisement
Guest User

Untitled

a guest
Jan 29th, 2015
262
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.85 KB | None | 0 0
  1. .inesprg 1 ; 2 PRG banks
  2. .ineschr 1 ; CHR RAM
  3. .inesmap 119 ; TQROM board with Nintendo MMC3 mapper
  4. .inesmir 1 ; Mirroring setting
  5.  
  6. .rsset $0000
  7. pointerLo .rs 1
  8. pointerHi .rs 1
  9. controller .rs 1
  10. spr_update_flag .rs 1
  11. bg_update_flag .rs 1
  12. frame_roll .rs 1
  13. counter_0 .rs 1
  14. counter_1 .rs 1
  15. counter_10 .rs 1
  16. scroll_x .rs 1
  17. scroll_y .rs 1
  18. sleeping .rs 1
  19. irq_scanline .rs 1
  20. irq_splits .rs 1
  21. irq_increment .rs 1
  22. irq_offset .rs 20
  23. irq_skip .rs 1
  24. sway_offset .rs 1
  25. sway_length .rs 1
  26. irq_jmp_addr .rs 2
  27.  
  28. PPUCtrl = $2000
  29. PPUMask = $2001
  30. PPUStatus = $2002
  31. OAMAddr = $2003
  32. OAMData = $2004
  33. PPUScroll = $2005
  34. PPUAddr = $2006
  35. PPUData = $2007
  36.  
  37. DCMIRQ = $4010
  38. OAMDMA = $4014
  39. Joy1 = $4016
  40. Joy2 = $4017
  41.  
  42. Mirroring = $A000
  43. RAMProtect = $A001
  44. IRQLatch = $C000
  45. IRQReload = $C001
  46. IRQDisable = $E000
  47. IRQEnable = $E001
  48.  
  49.  
  50. .bank 0
  51. .org $8000
  52.  
  53. RESET:
  54. CLI
  55. CLD
  56. LDX #$40
  57. STX $4017
  58. LDX #$FF
  59. TXS
  60. INX
  61. STX PPUCtrl ; Disable NMI
  62. STX PPUMask ; Disable rendering
  63. STX DCMIRQ ; Disable DPCM
  64.  
  65. VBwait1: ; First PPU warm up wait
  66. BIT PPUStatus
  67. BPL VBwait1
  68.  
  69. ClearMem: ; Clear internal memory
  70. LDA #$FF
  71. STA $0200, x ; Set OAM to #$FF to render sprites off screen
  72. LDA #$00
  73. STA $0000, x ; Clear Zero Page
  74. STA $0100, x ; Clear Stack
  75. STA $0300, x ; Clear Sound Engine RAM
  76. STA $0400, x ; Clear Graphics Buffer RAM
  77. STA $0500, x
  78. STA $0600, x
  79. STA $0700, x
  80. DEX
  81. CPX #$00
  82. BNE ClearMem
  83.  
  84. LDA #LOW(BgTable)
  85. STA pointerLo
  86. LDA #HIGH(BgTable)
  87. STA pointerHi
  88.  
  89. VBwait2: ; Second PPU warm up wait
  90. BIT PPUStatus
  91. BPL VBwait2
  92.  
  93. LDA PPUStatus
  94. LDA #$3F
  95. STA PPUAddr
  96. LDA #$00
  97. STA PPUAddr
  98. LDX #$00
  99.  
  100. PaletteLoad:
  101. LDA Palettes, x
  102. STA PPUData
  103. INX
  104. CPX #$1F
  105. BNE PaletteLoad
  106.  
  107. LDA PPUStatus
  108. LDA #$20
  109. STA PPUAddr
  110. LDA #$00
  111. STA PPUAddr
  112.  
  113. LDX #$04
  114. LDY #$00
  115. BgLoop:
  116. LDA [pointerLo], y
  117. STA PPUData
  118. INY
  119. BNE BgLoop
  120. INC pointerHi
  121. DEX
  122. BNE BgLoop
  123.  
  124. LDA #%10010000
  125. STA PPUCtrl
  126. LDA #%00011110
  127. STA PPUMask
  128.  
  129. LDA #$00
  130. STA Mirroring
  131.  
  132. MainLoop:
  133. LDA #$04
  134. STA irq_increment
  135. LDA #$1F
  136. STA sway_length
  137. LDA #$00
  138. STA sway_offset
  139. LDA #$1D
  140. STA irq_scanline
  141. LDA #$0F
  142. STA irq_splits
  143. LDA irq_scanline
  144. STA IRQLatch
  145. STA IRQEnable
  146. STA IRQReload
  147.  
  148. LDA #$01
  149. STA sleeping
  150. MainSleep:
  151. LDX sleeping
  152. CPX #$00
  153. BNE MainSleep
  154. JMP MainLoop
  155.  
  156. IRQ:
  157. PHA
  158. TXA
  159. PHA
  160. TYA
  161. PHA
  162. LDA #$01
  163. STA IRQDisable
  164. STA IRQEnable
  165. LDX #$00
  166. LDY sway_offset
  167. LDA (SwayTable), y
  168. STA scroll_x
  169. STA PPUScroll
  170. STX scroll_y
  171. STX PPUScroll
  172. INX
  173. CPX sway_length
  174. BNE WrapSkip
  175. LDX #$00
  176. STX sway_length
  177. WrapSkip:
  178. LDA irq_scanline
  179. STA IRQLatch
  180. STA IRQReload
  181. PLA
  182. TAY
  183. PLA
  184. TAX
  185. PLA
  186. RTI
  187.  
  188. NMI:
  189. PHA
  190. TXA
  191. PHA
  192. TYA
  193. PHA
  194. SprUpdate:
  195. LDX spr_update_flag
  196. CPX #$01
  197. BNE BgUpdate
  198. LDA #$02
  199. STA OAMAddr
  200. LDA #$00
  201. STA OAMDMA
  202.  
  203. BgUpdate:
  204. LDX bg_update_flag
  205. CPX #$01
  206. BNE ScrollUpdate
  207.  
  208.  
  209. ScrollUpdate:
  210. LDA scroll_x
  211. STA PPUScroll
  212. LDA scroll_y
  213. STA PPUScroll
  214.  
  215. LDA #$00
  216. STA sleeping
  217. PLA
  218. TAY
  219. PLA
  220. TAX
  221. PLA
  222. RTI
  223.  
  224. BgTable:
  225. .db $00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$35,$36,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01 ; 00
  226. .db $02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$37,$38,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03 ; 01
  227. .db $00,$01,$00,$01,$35,$36,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$35,$36,$00,$01,$00,$01,$00,$01 ; 02
  228. .db $02,$03,$02,$03,$37,$38,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$37,$38,$02,$03,$02,$03,$02,$03 ; 03
  229. .db $B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1 ; 04
  230. .db $B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3 ; 05
  231. .db $B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1 ; 06
  232. .db $B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3 ; 07
  233. .db $B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1 ; 08
  234. .db $B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3 ; 09
  235. .db $B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1 ; 0A
  236. .db $B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3 ; 0B
  237. .db $B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1 ; 0C
  238. .db $B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3 ; 0D
  239. .db $B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1 ; 0E
  240. .db $B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3 ; 0F
  241. .db $B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1 ; 10
  242. .db $B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3 ; 11
  243. .db $B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1 ; 12
  244. .db $B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3 ; 13
  245. .db $B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1 ; 14
  246. .db $B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3 ; 15
  247. .db $B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1,$B0,$B1 ; 16
  248. .db $B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3,$B2,$B3 ; 17
  249. .db $00,$01,$00,$01,$35,$36,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$35,$36,$00,$01,$00,$01,$00,$01 ; 18
  250. .db $02,$03,$02,$03,$37,$38,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$37,$38,$02,$03,$02,$03,$02,$03 ; 19
  251. .db $00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$35,$36,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01 ; 1A
  252. .db $02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$37,$38,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03 ; 1B
  253. .db $00,$01,$00,$01,$35,$36,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$00,$01,$35,$36,$00,$01,$00,$01,$00,$01 ; 1C
  254. .db $02,$03,$02,$03,$37,$38,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$02,$03,$37,$38,$02,$03,$02,$03,$02,$03 ; 1D
  255.  
  256. Attributes:
  257. .db $00,$00,$00,$00,$00,$00,$00,$00
  258. .db $01,$01,$01,$01,$01,$01,$01,$01
  259. .db $01,$01,$01,$01,$01,$01,$01,$01
  260. .db $01,$01,$01,$01,$01,$01,$01,$01
  261. .db $01,$01,$01,$01,$01,$01,$01,$01
  262. .db $01,$01,$01,$01,$01,$01,$01,$01
  263. .db $00,$00,$00,$00,$00,$00,$00,$00
  264. .db $00,$00,$00,$00,$00,$00,$00,$00
  265.  
  266. Palettes:
  267. .db $0F,$30,$21,$31
  268. .db $0F,$30,$22,$32
  269. .db $0F,$30,$23,$33
  270. .db $0F,$30,$24,$34
  271. .db $0F,$30,$25,$35
  272. .db $0F,$30,$26,$36
  273. .db $0F,$30,$27,$37
  274. .db $0F,$30,$28,$38
  275.  
  276. SwayTable:
  277. .db $00,$03,$06,$09,$0C,$0F,$12,$14,$15,$14,$12,$0F,$0C,$09,$06,$03
  278. .db $00,$FC,$F9,$F6,$F3,$F0,$ED,$EB,$EA,$EB,$ED,$F0,$F3,$F6,$F9,$FC
  279.  
  280.  
  281. .bank 1
  282. .org $FFFA
  283.  
  284. .dw NMI
  285. .dw RESET
  286. .dw IRQ
  287.  
  288. .bank 2
  289. .org $0000
  290. .incbin "Graphics.chr"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement