Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .inesprg 1 ; 2 PRG banks
- .ineschr 1 ; CHR RAM
- .inesmap 119 ; TQROM board with Nintendo MMC3 mapper
- .inesmir 1 ; Mirroring setting
- .rsset $0000
- pointerLo .rs 1
- pointerHi .rs 1
- controller .rs 1
- spr_update_flag .rs 1
- bg_update_flag .rs 1
- frame_roll .rs 1
- counter_0 .rs 1
- counter_1 .rs 1
- counter_10 .rs 1
- scroll_x .rs 1
- scroll_y .rs 1
- sleeping .rs 1
- irq_scanline .rs 1
- irq_splits .rs 1
- irq_increment .rs 1
- irq_offset .rs 20
- irq_skip .rs 1
- sway_offset .rs 1
- sway_length .rs 1
- irq_jmp_addr .rs 2
- PPUCtrl = $2000
- PPUMask = $2001
- PPUStatus = $2002
- OAMAddr = $2003
- OAMData = $2004
- PPUScroll = $2005
- PPUAddr = $2006
- PPUData = $2007
- DCMIRQ = $4010
- OAMDMA = $4014
- Joy1 = $4016
- Joy2 = $4017
- Mirroring = $A000
- RAMProtect = $A001
- IRQLatch = $C000
- IRQReload = $C001
- IRQDisable = $E000
- IRQEnable = $E001
- .bank 0
- .org $8000
- RESET:
- CLI
- CLD
- LDX #$40
- STX $4017
- LDX #$FF
- TXS
- INX
- STX PPUCtrl ; Disable NMI
- STX PPUMask ; Disable rendering
- STX DCMIRQ ; Disable DPCM
- VBwait1: ; First PPU warm up wait
- BIT PPUStatus
- BPL VBwait1
- ClearMem: ; Clear internal memory
- LDA #$FF
- STA $0200, x ; Set OAM to #$FF to render sprites off screen
- LDA #$00
- STA $0000, x ; Clear Zero Page
- STA $0100, x ; Clear Stack
- STA $0300, x ; Clear Sound Engine RAM
- STA $0400, x ; Clear Graphics Buffer RAM
- STA $0500, x
- STA $0600, x
- STA $0700, x
- DEX
- CPX #$00
- BNE ClearMem
- LDA #LOW(BgTable)
- STA pointerLo
- LDA #HIGH(BgTable)
- STA pointerHi
- VBwait2: ; Second PPU warm up wait
- BIT PPUStatus
- BPL VBwait2
- LDA PPUStatus
- LDA #$3F
- STA PPUAddr
- LDA #$00
- STA PPUAddr
- LDX #$00
- PaletteLoad:
- LDA Palettes, x
- STA PPUData
- INX
- CPX #$1F
- BNE PaletteLoad
- LDA PPUStatus
- LDA #$20
- STA PPUAddr
- LDA #$00
- STA PPUAddr
- LDX #$04
- LDY #$00
- BgLoop:
- LDA [pointerLo], y
- STA PPUData
- INY
- BNE BgLoop
- INC pointerHi
- DEX
- BNE BgLoop
- LDA #%10010000
- STA PPUCtrl
- LDA #%00011110
- STA PPUMask
- LDA #$00
- STA Mirroring
- MainLoop:
- LDA #$04
- STA irq_increment
- LDA #$1F
- STA sway_length
- LDA #$00
- STA sway_offset
- LDA #$1D
- STA irq_scanline
- LDA #$0F
- STA irq_splits
- LDA irq_scanline
- STA IRQLatch
- STA IRQEnable
- STA IRQReload
- LDA #$01
- STA sleeping
- MainSleep:
- LDX sleeping
- CPX #$00
- BNE MainSleep
- JMP MainLoop
- IRQ:
- PHA
- TXA
- PHA
- TYA
- PHA
- LDA #$01
- STA IRQDisable
- STA IRQEnable
- LDX #$00
- LDY sway_offset
- LDA (SwayTable), y
- STA scroll_x
- STA PPUScroll
- STX scroll_y
- STX PPUScroll
- INX
- CPX sway_length
- BNE WrapSkip
- LDX #$00
- STX sway_length
- WrapSkip:
- LDA irq_scanline
- STA IRQLatch
- STA IRQReload
- PLA
- TAY
- PLA
- TAX
- PLA
- RTI
- NMI:
- PHA
- TXA
- PHA
- TYA
- PHA
- SprUpdate:
- LDX spr_update_flag
- CPX #$01
- BNE BgUpdate
- LDA #$02
- STA OAMAddr
- LDA #$00
- STA OAMDMA
- BgUpdate:
- LDX bg_update_flag
- CPX #$01
- BNE ScrollUpdate
- ScrollUpdate:
- LDA scroll_x
- STA PPUScroll
- LDA scroll_y
- STA PPUScroll
- LDA #$00
- STA sleeping
- PLA
- TAY
- PLA
- TAX
- PLA
- RTI
- BgTable:
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- Attributes:
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $01,$01,$01,$01,$01,$01,$01,$01
- .db $01,$01,$01,$01,$01,$01,$01,$01
- .db $01,$01,$01,$01,$01,$01,$01,$01
- .db $01,$01,$01,$01,$01,$01,$01,$01
- .db $01,$01,$01,$01,$01,$01,$01,$01
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- Palettes:
- .db $0F,$30,$21,$31
- .db $0F,$30,$22,$32
- .db $0F,$30,$23,$33
- .db $0F,$30,$24,$34
- .db $0F,$30,$25,$35
- .db $0F,$30,$26,$36
- .db $0F,$30,$27,$37
- .db $0F,$30,$28,$38
- SwayTable:
- .db $00,$03,$06,$09,$0C,$0F,$12,$14,$15,$14,$12,$0F,$0C,$09,$06,$03
- .db $00,$FC,$F9,$F6,$F3,$F0,$ED,$EB,$EA,$EB,$ED,$F0,$F3,$F6,$F9,$FC
- .bank 1
- .org $FFFA
- .dw NMI
- .dw RESET
- .dw IRQ
- .bank 2
- .org $0000
- .incbin "Graphics.chr"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement