Advertisement
Guest User

Code :>

a guest
Mar 31st, 2015
134
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 10.83 KB | None | 0 0
  1. .inesprg 1 ; 1 PRG banks
  2. .ineschr 1 ; 1 CHR banks
  3. .inesmap 119 ; TQROM board with Nintendo MMC3 mapper
  4. .inesmir 1 ; Mirroring setting
  5.  
  6. .rsset $0000 ; Zero Page Memory
  7. pointerLo .rs 1
  8. pointerHi .rs 1
  9. spr_update_flag .rs 1
  10. bg_update_flag .rs 1
  11. frame_roll .rs 1
  12. scroll_x .rs 1
  13. scroll_y .rs 1
  14. sleeping .rs 1
  15. irq_scanline .rs 1
  16. irq_offset .rs 1
  17. sway_length .rs 1
  18. sway_pointer .rs 1
  19. sway_pointer_new .rs 1
  20. table_swap_timer .rs 1
  21. joy_1 .rs 1
  22. joy_1_prev .rs 1
  23. joy_1_frame .rs 1
  24. read_controllers .rs 1
  25. irq_enabled .rs 1
  26. irq_lo .rs 1
  27. irq_hi .rs 1
  28. palette_update_flag .rs 1
  29. brightness_current .rs 1
  30. brightness_target .rs 1
  31. fade_speed .rs 1
  32. fade_delay .rs 1
  33.  
  34. .rsset $0100 ; Stack Memory
  35.  
  36. .rsset $0200 ; Shadow OAM Memory
  37.  
  38. .rsset $0300 ; Sound Engine Memory
  39.  
  40. .rsset $0400 ; Others 1
  41. bg_colour_original .rs 1
  42. palette_original .rs 24
  43. bg_colour_modified .rs 1
  44. palette_modified .rs 24
  45. bonus_mode .rs 1
  46.  
  47. .rsset $0500 ; Graphics Buffer Memory
  48.  
  49. .rsset $0600 ; Object Memory
  50.  
  51. .rsset $0700 ; Others 2
  52.  
  53. PPUCtrl = $2000
  54. PPUMask = $2001
  55. PPUStatus = $2002
  56. OAMAddr = $2003
  57. OAMData = $2004
  58. PPUScroll = $2005
  59. PPUAddr = $2006
  60. PPUData = $2007
  61.  
  62. DCMIRQ = $4010
  63. OAMDMA = $4014
  64. Joy1 = $4016
  65. Joy2 = $4017
  66.  
  67. Mirroring = $A000
  68. RAMProtect = $A001
  69. IRQLatch = $C000
  70. IRQReload = $C001
  71. IRQDisable = $E000
  72. IRQEnable = $E001
  73.  
  74. .bank 0
  75. .org $8000
  76.  
  77. RESET:
  78. SEI
  79. CLD
  80. LDX #$40
  81. STX $4017
  82. LDX #$FF
  83. TXS
  84. INX
  85. STX PPUCtrl ; Disable NMI
  86. STX PPUMask ; Disable rendering
  87. STX DCMIRQ ; Disable DPCM
  88.  
  89. VBwait1: ; First PPU warm up wait
  90. BIT PPUStatus
  91. BPL VBwait1
  92.  
  93. ClearMem: ; Clear internal memory
  94. LDA #$FF
  95. STA $0200, x ; Set OAM to #$FF to render sprites off screen
  96. LDA #$00
  97. STA $0000, x ; Clear Zero Page
  98. STA $0100, x ; Clear Stack
  99. STA $0300, x ; Clear Sound Engine RAM
  100. STA $0400, x ; Clear Graphics Buffer RAM
  101. STA $0500, x
  102. STA $0600, x
  103. STA $0700, x
  104. DEX
  105. CPX #$00
  106. BNE ClearMem
  107.  
  108. LDA #LOW(BgTitle00)
  109. STA <pointerLo
  110. LDA #HIGH(BgTitle00)
  111. STA <pointerHi
  112.  
  113. VBwait2: ; Second PPU warm up wait
  114. BIT PPUStatus
  115. BPL VBwait2
  116.  
  117. LDX #$00
  118. LDA BgColour, x
  119. STA bg_colour_original
  120. STA bg_colour_modified
  121.  
  122. PaletteLoad:
  123. LDA Palette, x
  124. STA palette_original, x
  125. STA palette_modified, x
  126. INX
  127. CPX #$17
  128. BNE PaletteLoad
  129.  
  130. LDA #$01
  131. STA <palette_update_flag
  132.  
  133. LDA PPUStatus
  134. LDA #$20
  135. STA PPUAddr
  136. LDA #$00
  137. STA PPUAddr
  138.  
  139. LDX #$04
  140. LDY #$00
  141. BgLoop:
  142. LDA [pointerLo], y
  143. STA PPUData
  144. INY
  145. BNE BgLoop
  146. INC <pointerHi
  147. DEX
  148. BNE BgLoop
  149.  
  150. LDA PPUStatus
  151. LDA #$24
  152. STA PPUAddr
  153. LDA #$00
  154. STA PPUAddr
  155.  
  156. LDX #$04
  157. LDY #$00
  158. BgLoop2:
  159. LDA #$FF
  160. STA PPUData
  161. INY
  162. BNE BgLoop2
  163. DEX
  164. BNE BgLoop2
  165.  
  166. LDA #LOW(TitleIRQ)
  167. STA <irq_lo
  168. LDA #HIGH(TitleIRQ)
  169. STA <irq_hi
  170.  
  171. LDA #$00
  172. STA Mirroring
  173. STA <irq_offset
  174. LDA #$0F
  175. STA <sway_length
  176. LDA #$03
  177. STA <irq_scanline
  178. STA IRQLatch
  179. STA IRQEnable
  180. STA IRQReload
  181.  
  182. LDA #$C0
  183. STA <brightness_current
  184. LDA #$00
  185. STA <brightness_target
  186.  
  187. LDA #%10010000
  188. STA PPUCtrl
  189. LDA #%00011110
  190. STA PPUMask
  191.  
  192. LDA #$02
  193. STA <fade_speed
  194. STA <fade_delay
  195.  
  196. TitleFadeInLoop:
  197. JSR BrightnessControl
  198. LDA <brightness_current
  199. CMP <brightness_target
  200. BEQ TitleFadeInDone
  201. LDA #$01
  202. STA <sleeping
  203. TitleFadeInSleep:
  204. LDX <sleeping
  205. CPX #$00
  206. BNE TitleFadeInSleep
  207. JMP TitleFadeInLoop
  208.  
  209. TitleFadeInDone:
  210. LDA #$01
  211. STA <read_controllers
  212.  
  213. TitleLoop:
  214. LDA <joy_1_frame
  215. AND #%00001100
  216. CMP #%00001100
  217. BNE NoSelect
  218. LDA #$01
  219. STA bonus_mode
  220. JMP GameSetup
  221.  
  222. NoSelect:
  223. LDA <joy_1_frame
  224. AND #%00001000
  225. CMP #%00001000
  226. BNE TitleLoop
  227.  
  228. GameSetup:
  229.  
  230.  
  231.  
  232. MainLoop:
  233.  
  234. LDA #$01
  235. STA <sleeping
  236. MainSleep:
  237. LDX <sleeping
  238. CPX #$00
  239. BNE MainSleep
  240. JMP MainLoop
  241.  
  242. BrightnessControl:
  243. LDA #$10
  244. LDX <brightness_current
  245. CPX <brightness_target
  246. BEQ BrightnessDone
  247. BMI BrightnessDelay
  248. LDA #$F0
  249. BrightnessDelay:
  250. DEC fade_delay
  251. BNE BrightnessDone
  252. CLC
  253. ADC brightness_current
  254. STA brightness_current
  255. JSR BrightnessModify
  256. LDA <fade_speed
  257. STA <fade_delay
  258. LDA #$01
  259. STA <palette_update_flag
  260. BrightnessDone:
  261. RTS
  262.  
  263. BrightnessModify:
  264. LDA bg_colour_original
  265. JSR ColourModify
  266. STA bg_colour_modified
  267. LDX #$17
  268. PaletteModify:
  269. LDA palette_original, x
  270. JSR ColourModify
  271. STA palette_modified, x
  272. DEX
  273. BPL PaletteModify
  274. RTS
  275.  
  276. ColourModify:
  277. CLC
  278. ADC brightness_current
  279. CMP #$0D
  280. BEQ UseBlack
  281. CMP #$C0
  282. BCS UseBlack
  283. CMP #$40
  284. BCS UseWhite
  285. RTS
  286. UseBlack:
  287. LDA #$0F
  288. RTS
  289. UseWhite:
  290. LDA #$30
  291. RTS
  292.  
  293. IRQ:
  294. PHA
  295. TXA
  296. PHA
  297. TYA
  298. PHA
  299. LDX #$00
  300. STX IRQDisable
  301. STX IRQEnable
  302. JMP [irq_lo]
  303. IRQEnd:
  304. PLA
  305. TAY
  306. PLA
  307. TAX
  308. PLA
  309. RTI
  310.  
  311. TitleIRQ:
  312. LDA <irq_scanline
  313. STA IRQLatch
  314. LDA <frame_roll
  315. CLC
  316. ADC <irq_offset
  317. AND <sway_length
  318. TAY
  319. LDA SwayTable00, y
  320. STA <scroll_x
  321. STA PPUScroll
  322. STX <scroll_y
  323. STX PPUScroll
  324. LDA NTSwap, y
  325. STA PPUCtrl
  326. INC <irq_offset
  327. JMP IRQEnd
  328.  
  329. NMI:
  330. PHA
  331. TXA
  332. PHA
  333. TYA
  334. PHA
  335.  
  336. SprUpdate:
  337. LDA #$00
  338. STA OAMAddr
  339. LDA #$02
  340. STA OAMDMA
  341.  
  342. BgUpdate:
  343. LDX <bg_update_flag
  344. CPX #$01
  345. BNE ScrollUpdate
  346.  
  347.  
  348.  
  349.  
  350. ScrollUpdate:
  351. LDA <scroll_x
  352. STA PPUScroll
  353. LDA <scroll_y
  354. STA PPUScroll
  355.  
  356. PaletteUpdate:
  357. LDX <palette_update_flag
  358. CPX #$01
  359. BNE Controller1
  360.  
  361. LDA PPUStatus
  362. LDA #$3F
  363. STA PPUAddr
  364. LDA #$00
  365. STA PPUAddr
  366. LDX #$00
  367. LDA bg_colour_modified
  368. STA PPUData
  369.  
  370. NMIPalLoop:
  371. INX
  372. LDA palette_modified, x
  373. STA PPUData
  374. INX
  375. LDA palette_modified, x
  376. STA PPUData
  377. INX
  378. LDA palette_modified, x
  379. STA PPUData
  380. INX
  381. CPX #$18
  382. BNE NMIPalLoop
  383. LDA #$00
  384. STA <palette_update_flag
  385.  
  386. Controller1:
  387. LDA <joy_1
  388. STA <joy_1_prev
  389. LDY read_controllers
  390. CPY #$01
  391. BNE SkipController
  392. LDA #$01
  393. STA Joy1
  394. LDA #$00
  395. STA Joy1
  396. LDX #$08
  397. ControllerLoop:
  398. PHA
  399. LDA Joy1
  400. AND #$03
  401. CMP #$01
  402. PLA
  403. ROR A
  404. DEX
  405. BNE ControllerLoop
  406. STA <joy_1
  407. LDA <joy_1_prev
  408. EOR #$FF
  409. AND <joy_1
  410. STA <joy_1_frame
  411. JMP IRQReset
  412.  
  413. SkipController:
  414. LDA #$00
  415. STA <joy_1
  416. LDA <joy_1_prev
  417. EOR #$FF
  418. AND <joy_1
  419. STA <joy_1_frame
  420.  
  421. IRQReset:
  422. LDY <irq_enabled
  423. CPY #$01
  424. BNE NMIFinish
  425. STA <irq_offset
  426. LDA <irq_scanline
  427. STA IRQLatch
  428. STA IRQReload
  429.  
  430. NMIFinish:
  431. LDA #$00
  432. STA <sleeping
  433. INC <frame_roll
  434.  
  435. PLA
  436. TAY
  437. PLA
  438. TAX
  439. PLA
  440. RTI
  441.  
  442. BgTitle00:
  443. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  444. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  445. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  446. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  447. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  448. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  449. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$D4,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  450. .db $FF,$FF,$FF,$FF,$FF,$FF,$E3,$F5,$F0,$F0,$F0,$F4,$E5,$FF,$D5,$F0,$F4,$F0,$E5,$FF,$FF,$FF,$FF,$FF,$FF,$D4,$FF,$FF,$FF,$FF,$FF,$FF
  451. .db $FF,$FF,$FF,$FF,$FF,$FF,$E0,$E2,$FF,$FF,$FF,$F1,$FF,$FF,$FF,$FF,$F1,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$F1,$FF,$FF,$FF,$FF,$FF,$FF
  452. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$F1,$FF,$FF,$D5,$F0,$F3,$F0,$E5,$FF,$FF,$FF,$FF,$FF,$E3,$D1,$FF,$FF,$FF,$FF,$FF,$FF
  453. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$E3,$D1,$FF,$FF,$FF,$FF,$F1,$FF,$FF,$FF,$FF,$FF,$FF,$E3,$F2,$E2,$FF,$FF,$FF,$FF,$FF,$FF
  454. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$E3,$F2,$E2,$FF,$FF,$FF,$FF,$D0,$E4,$FF,$FF,$FF,$FF,$E3,$F2,$E2,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  455. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$D5,$F0,$D3,$E2,$FF,$FF,$FF,$FF,$FF,$E1,$D2,$E5,$FF,$D5,$F0,$D3,$E2,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  456. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  457. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  458. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  459. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  460. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$19,$1B,$0E,$1C,$1C,$FF,$1C,$1D,$0A,$1B,$1D,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  461. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  462. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  463. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  464. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  465. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  466. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  467. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  468. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  469. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  470. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  471. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  472. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
  473.  
  474. Attributes:
  475. .db $00,$00,$00,$00,$00,$00,$00,$00
  476. .db $00,$00,$00,$00,$00,$00,$00,$00
  477. .db $00,$00,$00,$00,$00,$00,$00,$00
  478. .db $00,$00,$00,$00,$00,$00,$00,$00
  479. .db $00,$00,$00,$00,$00,$00,$00,$00
  480. .db $00,$00,$00,$00,$00,$00,$00,$00
  481. .db $00,$00,$00,$00,$00,$00,$00,$00
  482. .db $00,$00,$00,$00,$00,$00,$00,$00
  483.  
  484. BgColour:
  485. .db $0F
  486.  
  487. Palette:
  488. .db $31,$21,$11,$34,$24,$14,$36,$26,$16,$39,$29,$19
  489. .db $31,$21,$11,$34,$24,$14,$36,$26,$16,$39,$29,$19
  490.  
  491. SwayTable00:
  492. .db $00,$03,$05,$07,$08,$07,$05,$03
  493. .db $00,$FD,$FB,$F9,$F8,$F9,$FB,$FD
  494.  
  495. NTSwap:
  496. .db $90,$90,$90,$90,$90,$90,$90,$90
  497. .db $90,$91,$91,$91,$91,$91,$91,$91
  498.  
  499. .bank 1
  500. .org $FFFA
  501.  
  502. .dw NMI
  503. .dw RESET
  504. .dw IRQ
  505.  
  506. .bank 2
  507. .org $0000
  508. .incbin "Kemono.chr"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement