Advertisement
Guest User

MMC5 woes

a guest
Apr 2nd, 2015
320
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.05 KB | None | 0 0
  1. .inesprg 2 ; 2x 16KB PRG code
  2. .ineschr 2 ; 1x 8KB CHR data
  3. .inesmap 5 ; mapper 5 = MMC5, AKA NES beast mode!
  4. .inesmir 1 ; background mirroring
  5.  
  6. ;;;;;;;;;;;;;;;;;;;;;;;;;VARIABLES;;;;;;;;;;;;;;;;;;;;;;;
  7.  
  8. .rsset $0000
  9.  
  10. PointerLo .rs 1
  11. PointerHi .rs 1
  12. DrawHi .rs 1
  13. DrawLo .rs 1
  14. scroll .rs 7
  15. frames .rs 1
  16. bonziscroll .rs 1
  17. bonzi .rs 80
  18. scrollpos .rs 1
  19. nametablescroll .rs 1
  20.  
  21. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  22.  
  23. .bank 0
  24. .org $8000
  25.  
  26. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  27.  
  28. .bank 1
  29. .org $A000
  30.  
  31. palettes:
  32. .db $0F,$28,$38,$20,$0F,$28,$38,$20,$0F,$28,$38,$20,$0F,$28,$38,$20
  33. .db $0F,$22,$32,$20,$0F,$28,$38,$20,$0F,$28,$38,$20,$0F,$28,$38,$20
  34.  
  35. screen:
  36. .incbin "jetskititle.bin"
  37.  
  38.  
  39. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  40.  
  41. .bank 2
  42. .org $C000
  43.  
  44. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  45.  
  46. .bank 3
  47. .org $E000
  48.  
  49. RESET:
  50. SEI ; disable IRQs
  51. CLD ; disable decimal mode
  52. LDX #$40
  53. STX $4017 ; disable APU frame IRQ
  54. LDX #$FF
  55. TXS ; Set up stack
  56. INX ; now X = 0
  57. STX $2000 ; disable NMI
  58. STX $2001 ; disable rendering
  59. STX $4010 ; disable DMC IRQs
  60.  
  61. JSR vblankwait
  62.  
  63. clrmem:
  64. LDA #$00
  65. STA $0000, x
  66. STA $0100, x
  67. STA $0300, x
  68. STA $0400, x
  69. STA $0500, x
  70. STA $0600, x
  71. STA $0700, x
  72. LDA #$FE
  73. STA $0200, x
  74. INX
  75. BNE clrmem
  76.  
  77. JSR vblankwait
  78.  
  79. LDA #%00000011
  80. STA $5100 ;Four 8KB PRG ROM/RAM banks plus one ROM bank
  81. LDA #%00000000
  82. STA $5101 ;8 x 1KB CHR Banks
  83.  
  84. LDA #%00000010
  85. STA $5102
  86.  
  87. LDA #%00000001
  88. STA $5104 ;Extended nametables :)
  89. STA $5103 ;Data protection zapped
  90.  
  91. LDA #$44
  92. STA $5105 ;Vertical mirroring
  93.  
  94. LDA #%00000000
  95. STA $5113 ;PRG RAM chip stuff
  96.  
  97. LDA #%10000000
  98. STA $5114
  99.  
  100. LDA #%10000001
  101. STA $5115
  102.  
  103. LDA #%10000010
  104. STA $5116
  105.  
  106. LDA #%00000011
  107. STA $5117 ;PRG ROM everywhere, Banks 0-1-2-3
  108.  
  109. LDA #$00
  110. STA $5200
  111. STA $5201
  112. STA $5202
  113. STA $5130
  114. STA $5204
  115.  
  116. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMC5 ready
  117.  
  118. LDA $2002 ;Wake up PPU
  119.  
  120. LDX #$00
  121. LDY #$00
  122. LDA #$20
  123. STA $2006
  124. LDA #$00
  125. STA $2006
  126. ScreenLoopINNER:
  127. STY $2007
  128. INY
  129. CPY #$00
  130. BNE ScreenLoopINNER
  131. LDA DrawHi
  132. CLC
  133. ADC #$04
  134. STA DrawHi
  135. INC PointerHi
  136. INX
  137. CPX #$04
  138. BNE ScreenLoopINNER
  139.  
  140. JSR vblankwait
  141.  
  142. LDX #$00
  143. .titlerender
  144. LDA #%00000000
  145. STA $5C00,x
  146. LDA #%00000001
  147. STA $5D00,x
  148. LDA #%00000010
  149. STA $5E00,x
  150. LDA #%00000011
  151. STA $5F00,x
  152. INX
  153. CPX #$00
  154. BNE .titlerender
  155.  
  156. JSR vblankwait
  157.  
  158. LDA #$3F
  159. STA $2006
  160. LDA #$00
  161. STA $2006
  162. PalLoop:
  163. LDA palettes,y
  164. STA $2007
  165. INY
  166. CPY #$20
  167. BNE PalLoop
  168.  
  169. JSR PPUCleanup
  170.  
  171. Forever:
  172.  
  173. JMP Forever
  174.  
  175. NMI:
  176.  
  177. LDA #$00
  178. STA $2003 ; set the low byte (00) of the RAM address
  179. LDA #$02
  180. STA $4014 ; set the high byte (02) of the RAM address, start the transfer
  181.  
  182. RTI
  183.  
  184. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  185. ;;Wait for a vblank to happen;;
  186. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  187.  
  188. vblankwait: ; First wait for vblank to make sure PPU is ready
  189. BIT $2002
  190. BPL vblankwait
  191. RTS
  192.  
  193. ;;;;;;;;;;;;;;;;;;;;;;;
  194. ;;PPU Cleanup routine;;
  195. ;;;;;;;;;;;;;;;;;;;;;;;
  196.  
  197. PPUCleanup:
  198. LDA #%10110000 ; enable NMI, 16x8 sprites from Pattern Table 0, background from Pattern Table 1
  199. STA $2000
  200. LDA #%00011110 ; Enable sprites, enable background, no clipping on left side
  201. STA $2001
  202. LDA #$00 ; no scrolling
  203. STA $2005
  204. STA $2005
  205.  
  206. RTS
  207.  
  208. .org $FFFA ;first of the three vectors starts here
  209. .dw NMI ;when an NMI happens (once per frame if enabled) the
  210. ;processor will jump to the label NMI:
  211. .dw RESET ;when the processor first turns on or is reset, it will jump
  212. ;to the label RESET:
  213. .dw 0 ;external interrupt IRQ is not used in this game
  214.  
  215. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  216.  
  217. .bank 4
  218. .org $0000
  219.  
  220. .incbin "commiemmc5.chr"
  221.  
  222. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement