Advertisement
Guest User

MMC3 test :o

a guest
Dec 5th, 2014
201
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.42 KB | None | 0 0
  1. .inesprg 1 ; 1 PRG bank
  2. .ineschr 1 ; 1 CHR bank
  3. .inesmap 4 ; No mapper
  4. .inesmir 1 ; Vertical mirroring
  5.  
  6. .rsset $0000 ; Zero page variables
  7. pointerLo0 .rs 1 ; 16 bit poiner low bits for first nametable
  8. pointerHi0 .rs 1 ; 16 bit poiner high bits for first nametable
  9. pointerLo1 .rs 1 ; 16 bit poiner low bits for second nametable
  10. pointerHi1 .rs 1 ; 16 bit poiner high bits for second nametable
  11. counterLo .rs 1 ; 16 bit counter low bits
  12. counterHi .rs 1 ; 16 bit counter high bits
  13. updateBg0 .rs 1 ; Flag for triggering nametable 0 update in NMI
  14. updateBg1 .rs 1 ; Flag for triggering nametable 1 update in NMI
  15. updateSpr .rs 1 ; Flag for triggering sprite update in NMI
  16. updatePal .rs 1 ; Flag for triggering palette update in NMI
  17. mainWait .rs 1 ; Flag for waiting for NMI to finish
  18. scrollX .rs 1 ; Scroll position in X axis
  19. scrollY .rs 1 ; Scroll position in Y axis
  20. input1 .rs 1 ; Joypad 1 input data
  21. input1Temp .rs 1 ; Temporary joypad 1 data for comparsion
  22. input2 .rs 1 ; Joypad 2 input data
  23. input2Temp .rs 1 ; Temporary joypad 2 data for comparsion
  24. joy2Flag .rs 1 ; Check if joypad 2 is used in debug mode
  25. lives .rs 1 ; Lives display
  26. livesCounter .rs 1 ; Lives counter
  27. bombs .rs 1 ; Bombs display
  28. bombsCounter .rs 1 ; Bombs counter
  29. weapon .rs 1 ; Weapon type
  30. scr0 .rs 1 ; Score 1s
  31. scr1 .rs 1 ; Score 10s
  32. scr2 .rs 1 ; Score 100s
  33. scr3 .rs 1 ; Score 1000s
  34. scr4 .rs 1 ; Score 10000s
  35. scr5 .rs 1 ; Score 100000s
  36. scr6 .rs 1 ; Score 1000000s
  37. scr7 .rs 1 ; Score 10000000s
  38. hiScr0 .rs 1 ; High score 1s
  39. hiScr1 .rs 1 ; High score 10s
  40. hiScr2 .rs 1 ; High score 100s
  41. hiScr3 .rs 1 ; High score 1000s
  42. hiScr4 .rs 1 ; High score 10000s
  43. hiScr5 .rs 1 ; High score 100000s
  44. hiScr6 .rs 1 ; High score 1000000s
  45. hiScr7 .rs 1 ; High score 10000000s
  46. timer0 .rs 1 ; Timer for background scolling speed
  47. timer1 .rs 1 ; Global timer 1
  48. timer2 .rs 1 ; Global timer 2
  49. timer3 .rs 1 ; Global timer 3
  50. timer4 .rs 1 ; Global timer 4
  51. timer5 .rs 1 ; Global timer 5
  52. timer6 .rs 1 ; Global timer 6
  53. timer7 .rs 1 ; Global timer 7
  54. timer8 .rs 1 ; Global timer 8
  55. timer9 .rs 1 ; Global timer 9
  56. timerA .rs 1 ; Global timer A
  57. timerB .rs 1 ; Global timer B
  58. timerC .rs 1 ; Global timer C
  59. timerD .rs 1 ; Global timer D
  60. timerE .rs 1 ; Global timer E
  61. timerF .rs 1 ; Global timer F
  62.  
  63. .rsset $0300 ; Sound engine variables
  64. soundDisableFlag .rs 1 ; Flag for disabling sound
  65. SQ1StreamCurrSnd .rs 6 ; Current sound in stream
  66. SQ1StreamChan .rs 6 ; Channel stream uses
  67. SQ1StreamVol .rs 6 ; Volume and duty settings in stream
  68. SQ1StreamLo .rs 6 ; Low bytes of current period in stream
  69. SQ1StreamHi .rs 6 ; High bytes of current period in stream
  70.  
  71. PPUCtrl = $2000 ; PPU control port
  72. PPUMask = $2001 ; PPU mask
  73. PPUStatus = $2002 ; PPU status
  74. OAMAddr = $2003 ; Object attribute memory address
  75. OAMData = $2004 ; Object attribute memory data
  76. PPUScroll = $2005 ; PPU scolling registers
  77. PPUAddr = $2006 ; PPU address
  78. PPUData = $2007 ; PPU data
  79.  
  80. PAL00 = $3F00 ; Background palette 0 colour 0
  81. PAL01 = $3F01 ; Background palette 0 colour 1
  82. PAL02 = $3F02 ; Background palette 0 colour 2
  83. PAL03 = $3F03 ; Background palette 0 colour 3
  84. PAL04 = $3F04 ; Background palette 1 colour 0
  85. PAL05 = $3F05 ; Background palette 1 colour 1
  86. PAL06 = $3F06 ; Background palette 1 colour 2
  87. PAL07 = $3F07 ; Background palette 1 colour 3
  88. PAL08 = $3F08 ; Background palette 2 colour 0
  89. PAL09 = $3F09 ; Background palette 2 colour 1
  90. PAL0A = $3F0A ; Background palette 2 colour 2
  91. PAL0B = $3F0B ; Background palette 2 colour 3
  92. PAL0C = $3F0C ; Background palette 3 colour 0
  93. PAL0D = $3F0D ; Background palette 3 colour 1
  94. PAL0E = $3F0E ; Background palette 3 colour 2
  95. PAL0F = $3F0F ; Background palette 3 colour 3
  96.  
  97. PAL10 = $3F10 ; Sprite palette 0 colour 0
  98. PAL11 = $3F11 ; Sprite palette 0 colour 1
  99. PAL12 = $3F12 ; Sprite palette 0 colour 2
  100. PAL13 = $3F13 ; Sprite palette 0 colour 3
  101. PAL14 = $3F14 ; Sprite palette 1 colour 0
  102. PAL15 = $3F15 ; Sprite palette 1 colour 1
  103. PAL16 = $3F16 ; Sprite palette 1 colour 2
  104. PAL17 = $3F17 ; Sprite palette 1 colour 3
  105. PAL18 = $3F18 ; Sprite palette 2 colour 0
  106. PAL19 = $3F19 ; Sprite palette 2 colour 1
  107. PAL1A = $3F1A ; Sprite palette 2 colour 2
  108. PAL1B = $3F1B ; Sprite palette 2 colour 3
  109. PAL1C = $3F1C ; Sprite palette 3 colour 0
  110. PAL1D = $3F1D ; Sprite palette 3 colour 1
  111. PAL1E = $3F1E ; Sprite palette 3 colour 2
  112. PAL1F = $3F1F ; Sprite palette 3 colour 3
  113.  
  114. SQ1Vol = $4000 ; Pulse 1 volume
  115. SQ1Sweep = $4001 ; Pulse 1 sweep
  116. SQ1Lo = $4002 ; Pulse 1 counter low bits
  117. SQ1Hi = $4003 ; Pulse 1 counter high bits
  118. SQ2Vol = $4004 ; Pulse 2 volume
  119. SQ2Sweep = $4005 ; Pulse 2 sweep
  120. SQ2Lo = $4006 ; Pulse 2 counter low bits
  121. SQ2Hi = $4007 ; Pulse 2 counter high bits
  122. TriLinear = $4008 ; Triangle
  123. TriLo = $400A ; Triangle counter low bits
  124. TriHi = $400B ; Triangle counter high bits
  125. NoiseVol = $400C ; Noise volume
  126. NoiseLo = $400E ; Noise counter low bits
  127. NoiseHi = $400F ; Noise counter high bits
  128. DMCFreq = $4010 ; DMC sample frequency
  129. DMCLoad = $4011 ; DMC sample load counter
  130. DMCStart = $4012 ; DMC sample start address
  131. DMCLen = $4013 ; DMC sample length
  132. OAMDMA = $4014 ; Object attribute memory DMA
  133. APUStatus = $4015 ; APU channel control
  134. Joy1 = $4016 ; Joypad 1 port (A, B Select, Start, Up, Down, Left, Right)
  135. Joy2 = $4017 ; Joypad 2 port (A, B Select, Start, Up, Down, Left, Right)
  136.  
  137. MusicSQ1 = $00
  138. MusicSQ2 = $01
  139. MusicTri = $02
  140. MusicNoise = $03
  141. SFX1 = $04
  142. SFX2 = $05
  143.  
  144. IRQLacth = $C000
  145. IRQReload = $C001
  146. IRQDisable = $E000
  147. IRQEnable = $E001
  148.  
  149. ; Octave 0
  150. A_0 = $00
  151. As0 = $01
  152. Bb0 = $01
  153. B_0 = $02
  154. C_0 = $03
  155. Cs0 = $04
  156. Db0 = $04
  157. D_0 = $05
  158. Ds0 = $06
  159. Eb0 = $06
  160. E_0 = $07
  161. F_0 = $08
  162. Fs0 = $09
  163. Gb0 = $09
  164. G_0 = $0A
  165. Gs0 = $0B
  166. Ab0 = $0B
  167.  
  168. ; Octave 1
  169. A_1 = $0C
  170. As1 = $0D
  171. Bb1 = $0D
  172. B_1 = $0E
  173. C_1 = $0F
  174. Cs1 = $10
  175. Db1 = $10
  176. D_1 = $12
  177. Ds1 = $13
  178. Eb1 = $13
  179. E_1 = $14
  180. F_1 = $15
  181. Fs1 = $16
  182. Gb1 = $16
  183. G_1 = $17
  184. Gs1 = $18
  185. Ab1 = $18
  186.  
  187. ; Octave 2
  188. A_2 = $19
  189. As2 = $1A
  190. Bb2 = $1A
  191. B_2 = $1B
  192. C_2 = $1C
  193. Cs2 = $1D
  194. Db2 = $1D
  195. D_2 = $1E
  196. Ds2 = $1F
  197. Eb2 = $1F
  198. E_2 = $20
  199. F_2 = $21
  200. Fs2 = $22
  201. Gb2 = $22
  202. G_2 = $23
  203. Gs2 = $24
  204. Ab2 = $24
  205.  
  206. ; Octave 3
  207. A_3 = $25
  208. As3 = $26
  209. Bb3 = $26
  210. B_3 = $27
  211. C_3 = $28
  212. Cs3 = $29
  213. Db3 = $29
  214. D_3 = $2A
  215. Ds3 = $2B
  216. Eb3 = $2B
  217. E_3 = $2C
  218. F_3 = $2D
  219. Fs3 = $2E
  220. Gb3 = $2E
  221. G_3 = $2F
  222. Gs3 = $30
  223. Ab3 = $30
  224.  
  225. ; Octave 4
  226. A_4 = $31
  227. As4 = $32
  228. Bb4 = $32
  229. B_4 = $33
  230. C_4 = $34
  231. Cs4 = $35
  232. Db4 = $35
  233. D_4 = $36
  234. Ds4 = $37
  235. Eb4 = $37
  236. E_4 = $38
  237. F_4 = $39
  238. Fs4 = $3A
  239. Gb4 = $3A
  240. G_4 = $3B
  241. Gs4 = $3C
  242. Ab4 = $3C
  243.  
  244. ; Octave 5
  245. A5_ = $3D
  246. As5 = $3E
  247. Bb5 = $3E
  248. B_5 = $3F
  249. C_5 = $40
  250. Cs5 = $41
  251. Db5 = $41
  252. D_5 = $42
  253. Ds5 = $43
  254. Eb5 = $43
  255. E_5 = $44
  256. F_5 = $45
  257. Fs5 = $46
  258. Gb5 = $46
  259. G_5 = $47
  260. Gs5 = $48
  261. Ab5 = $48
  262.  
  263. ; Octave 6
  264. A_6 = $49
  265. As6 = $4A
  266. Bb6 = $4A
  267. B_6 = $4B
  268. C_6 = $4C
  269. Cs6 = $4D
  270. Db6 = $4D
  271. D_6 = $4E
  272. Ds6 = $4F
  273. Eb6 = $4F
  274. E_6 = $50
  275. F_6 = $51
  276. Fs6 = $52
  277. Gb6 = $52
  278. G_6 = $53
  279. Gs6 = $54
  280. Ab6 = $54
  281.  
  282. ; Octave 7
  283. A_7 = $55
  284. As7 = $56
  285. Bb7 = $56
  286. B_7 = $57
  287. C_7 = $58
  288. Cs7 = $59
  289. Db7 = $59
  290. D_7 = $5A
  291. Ds7 = $5B
  292. Eb7 = $5B
  293. E_7 = $5C
  294. F_7 = $5D
  295. Fs7 = $5E
  296. Gb7 = $5E
  297.  
  298. .bank 0 ; PRG bank
  299. .org $8000
  300.  
  301. RESET: ; Reset routine
  302. CLI
  303. CLD
  304. LDX #$40
  305. STX Joy2 ; disable APU IRQ
  306. LDX #$FF
  307. TXS ; Stack set up
  308. INX
  309. STX PPUCtrl
  310. STX PPUMask
  311. STX DMCFreq
  312.  
  313. vBlankWait1: ; vBlank wait 1
  314. BIT PPUStatus
  315. BPL vBlankWait1
  316.  
  317. ClearMemory: ; Clear internal memory $0000 - $07FF
  318. LDA #$FF
  319. STA $0200, x ; Move sprites out of view
  320. LDA #$00
  321. STA $0000, x
  322. STA $0100, x
  323. STA $0300, x
  324. STA $0400, x
  325. STA $0500, x
  326. STA $0600, x
  327. STA $0700, x
  328. DEX
  329. BNE ClearMemory
  330.  
  331. JSR SoundInitialize
  332.  
  333. LDA #LOW(Stage1Bg)
  334. STA pointerLo0
  335. LDA #HIGH(Stage1Bg)
  336. STA pointerHi0
  337. LDA #LOW(StatusBarBg)
  338. STA pointerLo1
  339. LDA #HIGH(StatusBarBg)
  340. STA pointerHi1
  341.  
  342. vBlankWait2: ; vBlank wait 2 - PPU should be in stable and usable state now
  343. BIT PPUStatus
  344. BPL vBlankWait2
  345.  
  346. UpdatePalette1:
  347. LDA PPUStatus ; Reset PPU Hi/Lo latch
  348. LDA #$3F ; Store Hi/Lo bytes of the background nametables
  349. STA PPUAddr
  350. LDA #$00
  351. STA PPUAddr
  352. TAX
  353. PalLoop1:
  354. LDA Stage1Palette, x
  355. STA PPUData
  356. INX
  357. CPX #$1F
  358. BNE PalLoop1
  359.  
  360. LDX #$01
  361. STX updateBg0
  362. STX updateBg1
  363. STX updateSpr
  364.  
  365. JSR BgUpdate0 ; Initialize nametables
  366. JSR BgUpdate1
  367.  
  368. LDA #%10001000
  369. STA PPUCtrl
  370. LDA #%00011110
  371. STA PPUMask
  372.  
  373. MainLoop: ; Main loop
  374.  
  375.  
  376.  
  377. LDY #$01
  378. STY mainWait
  379. MainLoopWait:
  380. LDY mainWait
  381. BNE MainLoopWait
  382. JMP MainLoop
  383.  
  384. SoundInitialize:
  385. LDA #%00011111 ; Enable all channels
  386. STA APUStatus
  387. LDA #%00110000 ; Silence square 1/2 and noise
  388. STA SQ1Vol
  389. STA SQ2Vol
  390. STA NoiseVol
  391. LDA #%10000000 ; Silence triangle
  392. STA TriLinear
  393. LDA #$00
  394. STA soundDisableFlag ; Reset flag
  395. RTS
  396.  
  397. SoundDisable: ; Disable Sound
  398. LDA #$00
  399. STA APUStatus
  400. LDA #$01
  401. STA soundDisableFlag
  402. RTS
  403.  
  404. SoundLoad:
  405.  
  406. RTS
  407.  
  408. SoundPlay:
  409. LDA soundDisableFlag
  410. BNE SkipSound
  411.  
  412. SkipSound:
  413. RTS
  414.  
  415. Joy1Read:
  416. LDA #$01
  417. STA Joy1
  418. LDA #$00
  419. STA Joy1
  420. LDX #$08
  421. Joy1Loop:
  422. PHA
  423. LDA Joy1
  424. AND #$03
  425. CMP #$01
  426. PLA
  427. ROR A
  428. DEX
  429. BNE Joy1Loop
  430. RTS
  431.  
  432. Joy2Read:
  433. LDA #$01
  434. STA Joy2
  435. LDA #$00
  436. STA Joy2
  437. LDX #$08
  438. Joy2Loop:
  439. PHA
  440. LDA Joy2
  441. AND #$03
  442. CMP #$01
  443. PLA
  444. ROR A
  445. DEX
  446. BNE Joy2Loop
  447. RTS
  448.  
  449. BgUpdate0: ; Background update code
  450. LDY updateBg0
  451. CPY #$01
  452. BNE SkipBg0
  453. LDA #%00001000
  454. STA PPUCtrl
  455. LDA #%00000000
  456. STA PPUMask
  457. LDA PPUStatus ; Reset PPU Hi/Lo latch
  458. LDA #$20 ; Store Hi/Lo bytes of the background nametables
  459. STA PPUAddr
  460. LDA #$00
  461. STA PPUAddr
  462. LDY #$00
  463. LDX #$04
  464. BgLoop0: ; 16 bit loop for drawing background and loading attributes
  465. LDA [pointerLo0], y
  466. STA PPUData
  467. INY
  468. BNE BgLoop0
  469. INC pointerHi0
  470. DEX
  471. BNE BgLoop0
  472. LDA #$00
  473. STA updateBg0 ; Clear NMI flag for background
  474. LDA #%10001000
  475. STA PPUCtrl
  476. LDA #%00011110
  477. STA PPUMask
  478. SkipBg0:
  479. RTS
  480.  
  481. BgUpdate1: ; Background update code
  482. LDY updateBg1
  483. CPY #$01
  484. BNE SkipBg1
  485. LDA #%00001000
  486. STA PPUCtrl
  487. LDA #%00000000
  488. STA PPUMask
  489. LDA PPUStatus ; Reset PPU Hi/Lo latch
  490. LDA #$24 ; Store Hi/Lo bytes of the background nametables
  491. STA PPUAddr
  492. LDA #$00
  493. STA PPUAddr
  494. LDY #$00
  495. LDX #$04
  496. BgLoop1: ; 16 bit loop for drawing background and loading attributes
  497. LDA [pointerLo1], y
  498. STA PPUData
  499. INY
  500. BNE BgLoop1
  501. INC pointerHi1
  502. DEX
  503. BNE BgLoop1
  504. LDA #$00
  505. STA updateBg1 ; Clear NMI flag for background
  506. LDA #%10001000
  507. STA PPUCtrl
  508. LDA #%00011110
  509. STA PPUMask
  510. SkipBg1:
  511. RTS
  512.  
  513. ScrollBg:
  514. LDY timer0
  515. CPY #$02
  516. BNE SkipScroll
  517. LDY #$00
  518. STY scrollX
  519. STY PPUScroll
  520. LDX scrollY
  521. DEX
  522. CPX #$F0
  523. BCC SkipScrollFix
  524. LDX #$EF
  525. SkipScrollFix:
  526. STX scrollY
  527. STX PPUScroll
  528. LDY #$00
  529. STY timer0 ; Reset timer0
  530. SkipScroll:
  531. RTS
  532.  
  533. SprUpdate: ; Sprite update code
  534. LDY updateSpr
  535. CPY #$01
  536. BNE SkipSpr
  537. LDA #%00001000
  538. STA PPUCtrl
  539. LDA #%00000000
  540. STA PPUMask
  541. LDA #$00
  542. STA OAMAddr
  543. LDA #$02
  544. STA OAMDMA
  545. LDA #$00
  546. STA updateSpr ; Clear NMI flag for sprites
  547. LDA #%10001000
  548. STA PPUCtrl
  549. LDA #%00011110
  550. STA PPUMask
  551. SkipSpr:
  552. RTS
  553.  
  554. Joy1Update: ; Joypad 1 update code
  555. JSR Joy1Read
  556. Joy1Matching:
  557. STA input1Temp
  558. JSR Joy1Read
  559. CMP input1Temp
  560. BNE Joy1Matching
  561. STA input1
  562. RTS
  563.  
  564. Joy2Update: ; Joypad 2 update code
  565. LDY joy2Flag
  566. CPY #$00
  567. BNE SkipJoy2
  568. JSR Joy2Read
  569. Joy2Matching:
  570. STA input2Temp
  571. JSR Joy2Read
  572. CMP input2Temp
  573. BNE Joy2Matching
  574. STA input2
  575. SkipJoy2:
  576. RTS
  577.  
  578. IncrementTimers:
  579. INC timer0
  580. INC timer1
  581. INC timer2
  582. INC timer3
  583. INC timer4
  584. INC timer5
  585. INC timer6
  586. INC timer7
  587. INC timer8
  588. INC timer9
  589. INC timerA
  590. INC timerB
  591. INC timerC
  592. INC timerD
  593. INC timerE
  594. INC timerF
  595. RTS
  596.  
  597. ScanlineIRQSet:
  598. LDA #$D8
  599. STA IRQLacth
  600. STA IRQReload
  601. STA IRQEnable
  602. RTS
  603.  
  604. IRQ: ; Scanline interrupt
  605. PHA ; Push A, X & Y to stack
  606. TXA
  607. PHA
  608. TYA
  609. PHA
  610. LDA #$FF
  611. STA IRQDisable
  612. STA scrollX
  613. STA PPUScroll
  614. LDA #$00
  615. STA PPUScroll
  616. PLA ; Pull A, X & Y from stack
  617. TAY
  618. PLA
  619. TAX
  620. PLA
  621. RTI
  622.  
  623. NMI: ; NMI code
  624. PHA ; Push A, X & Y to stack
  625. TXA
  626. PHA
  627. TYA
  628. PHA
  629. JSR SprUpdate ; Update sprites if necessary
  630. JSR BgUpdate0 ; Update nametable 0 if necessary
  631. JSR BgUpdate1 ; Update nametable 1 if necessary
  632. JSR ScrollBg ; Update background scrolling
  633. JSR ScanlineIRQSet ; Set up data for scanline IRQ
  634. JSR Joy1Update ; Update joypad 1 if necessary
  635. JSR Joy2Update ; Update joypad 2 if necessary
  636. JSR SoundPlay ; Update sound if necessary
  637. JSR IncrementTimers ; Increment timers
  638. LDY #$00 ; Reset mainWait to allow next main loop to happen
  639. STY mainWait
  640. PLA ; Pull A, X & Y from stack
  641. TAY
  642. PLA
  643. TAX
  644. PLA
  645. RTI
  646.  
  647. NoteTable:
  648. ; A Bb B C Db D Eb E F Gb G Ab
  649. .dw $07F1,$0780,$0713,$06AD,$064D,$05F3,$059D,$054D,$0500,$04B8,$0475,$0435 ; Octave 0
  650. .dw $03F8,$03BF,$0389,$0356,$0326,$02F9,$02CE,$02A6,$027F,$025C,$023A,$021A ; Octave 1
  651. .dw $01FB,$01DF,$01C4,$01AB,$0193,$017C,$0167,$0152,$013F,$012D,$011C,$010C ; Octave 2
  652. .dw $00FD,$00EF,$00E2,$00D2,$00C9,$00BD,$00B3,$00A9,$009F,$0096,$008E,$0086 ; Octave 3
  653. .dw $007E,$0077,$0070,$006A,$0064,$005E,$0059,$0054,$004F,$004B,$0046,$0042 ; Octave 4
  654. .dw $003F,$003B,$0038,$0034,$0031,$002F,$002C,$0029,$0027,$0025,$0023,$0021 ; Octave 5
  655. .dw $001F,$001D,$001B,$001A,$0018,$0017,$0015,$0014,$0013,$0012,$0011,$0010 ; Octave 6
  656. .dw $000F,$000E,$000D,$000C,$000C,$000B,$000A,$000A,$0009,$0008 ; Octave 7
  657.  
  658.  
  659.  
  660. StatusBarBg:
  661. .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 ; 00
  662. .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 ; 01
  663. .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 ; 02
  664. .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 ; 03
  665. .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 ; 04
  666. .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 ; 05
  667. .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 ; 06
  668. .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 ; 07
  669. .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 ; 08
  670. .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 ; 09
  671. .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 ; 0A
  672. .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 ; 0B
  673. .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 ; 0C
  674. .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 ; 0D
  675. .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 ; 0E
  676. .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 ; 0F
  677. .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 ; 10
  678. .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 ; 11
  679. .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 ; 12
  680. .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 ; 13
  681. .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 ; 14
  682. .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 ; 15
  683. .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 ; 16
  684. .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 ; 17
  685. .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 ; 18
  686. .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 ; 19
  687. .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 ; 1A
  688. .db $FF,$19,$15,$0A,$22,$0E,$1B,$FF,$24,$24,$24,$24,$24,$24,$24,$FF,$0B,$18,$16,$0B,$FF,$25,$25,$25,$25,$25,$25,$25,$FF,$FF,$FF,$FF ; 1B
  689. .db $FF,$1C,$0C,$1B,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$FF,$FF,$FF,$11,$12,$FF,$1C,$0C,$1B,$FF,$00,$00,$00,$00,$00,$00,$00,$00,$FF ; 1C
  690. .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 ; 1D
  691.  
  692. StatusBarAttributes:
  693. .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  694. .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  695. .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  696. .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  697.  
  698. Stage1Bg:
  699. .db $FF,$FF,$FF,$FF,$26,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$26,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$2A ; 00
  700. .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 ; 01
  701. .db $FF,$FF,$27,$FF,$FF,$28,$FF,$FF,$26,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$27,$FF,$FF,$28,$FF,$FF,$26,$FF,$FF,$FF,$FF,$FF,$FF,$FF ; 02
  702. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$26,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$26,$FF,$FF ; 03
  703. .db $FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$27,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$27,$FF,$FF,$FF,$FF ; 04
  704. .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 ; 05
  705. .db $FF,$FF,$FF,$26,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$26,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$2A,$FF ; 06
  706. .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 ; 07
  707. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$26,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$26,$FF,$FF,$2A ; 08
  708. .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 ; 09
  709. .db $26,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$27,$FF,$FF,$28,$FF,$FF,$26,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$27,$FF,$FF,$28,$FF,$FF ; 0A
  710. .db $FF,$FF,$FF,$FF,$FF,$26,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$26,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ; 0B
  711. .db $FF,$FF,$FF,$27,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$27,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF ; 0C
  712. .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 ; 0D
  713. .db $FF,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$26,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$26,$FF,$FF,$2A,$FF ; 0E
  714. .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 ; 0F
  715. .db $FF,$FF,$FF,$FF,$26,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$26,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$2A ; 10
  716. .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 ; 11
  717. .db $FF,$FF,$27,$FF,$FF,$28,$FF,$FF,$26,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$27,$FF,$FF,$28,$FF,$FF,$26,$FF,$FF,$FF,$FF,$FF,$FF,$FF ; 12
  718. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$26,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$26,$FF,$FF ; 13
  719. .db $FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$27,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$27,$FF,$FF,$FF,$FF ; 14
  720. .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 ; 15
  721. .db $FF,$FF,$FF,$26,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$26,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$2A,$FF ; 16
  722. .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 ; 17
  723. .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$26,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$26,$FF,$FF,$2A ; 18
  724. .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 ; 19
  725. .db $26,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$27,$FF,$FF,$28,$FF,$FF,$26,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$27,$FF,$FF,$28,$FF,$FF ; 1A
  726. .db $FF,$FF,$FF,$FF,$FF,$26,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$26,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF ; 1B
  727. .db $FF,$FF,$FF,$27,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$27,$FF,$FF,$FF,$FF,$FF,$2A,$FF,$FF,$FF,$FF,$FF,$FF ; 1C
  728. .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 ; 1D
  729.  
  730. Stage1Attributes:
  731. .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  732. .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  733. .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  734. .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
  735.  
  736. Stage1Palette:
  737. .db $0F,$20,$31,$21,$0F,$20,$32,$22,$0F,$20,$33,$23,$0F,$20,$34,$24
  738. .db $0F,$20,$31,$21,$0F,$20,$32,$22,$0F,$20,$33,$23,$0F,$20,$34,$24
  739.  
  740.  
  741. .bank 1 ; Vector bank
  742. .org $FFFA
  743. .dw NMI
  744. .dw RESET
  745. .dw IRQ
  746.  
  747. .bank 2 ; CHR bank
  748. .org $0000
  749. .incbin "Stg1set.chr"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement