Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .inesprg 1 ; 1 PRG Bank
- .ineschr 1 ; 1 CHR Bank
- .inesmap 0 ; Mapper 0 used
- .inesmir 1 ; Mirroring enabled
- .rsset $0000 ; Variables start from $0000
- pointerLo .rs 1 ; Hi/Lo bytes for background data pointers
- pointerHi .rs 1
- counterLo .rs 1 ; Hi/Lo bytes for 16 bit counter
- counterHi .rs 1
- .bank 0 ; PRG Bank
- .org $8000 ; starts from $8000
- RESET: ; Reset routine
- SEI
- CLD
- LDX #$40
- STX $4017
- LDX #$FF
- TXS
- INX
- STX $2000 ; Disable NMI
- STX $2001 ; Disable rendering
- STX $4010 ; Disable DPCM
- VBwait1: ; First PPU warm up wait
- BIT $2002
- BPL VBwait1
- ClearMem: ;Clear internal memory $0000 - $07FF
- LDA #$00
- STA $0000, x
- STA $0100, x
- STA $0200, x
- STA $0300, x
- STA $0400, x
- STA $0500, x
- STA $0600, x
- STA $0700, x
- DEX
- CPX #$00
- BNE ClearMem
- VBwait2: ; Second PPU warm up wait
- BIT $2002
- BPL VBwait2
- LDA $2002 ; Reset PPU Hi/Lo latch
- LDA #$3F ; Store Hi/Lo bytes of the palette address
- STA $2006
- LDA #$00
- STA $2006
- LDX #$00
- PaletteLoad1: ; Load palettes
- LDA palette, x
- STA $2007
- INX
- CPX #$1F
- BNE PaletteLoad1
- SetBg: ; Set up information for NMI to update background
- LDA LOW(background)
- STA pointerLo
- LDA HIGH(background)
- STA pointerHi
- LDA #$01 ; Enable NMI flag
- STA $1E
- LDA #%10001000 ; Enable NMI
- STA $2000
- LDA #$00
- STA $2005
- STA $2005
- MainLoop: ; Main loop
- JMP MainLoop
- ReadP1: ; Set up controller reading
- LDA #$01
- STA $4016
- LDA #$00
- STA $4016
- LDX #$08
- ReadP1Loop: ; Read each button and roll them to ZP $1F
- LDA $4016
- AND #$01
- LSR A
- ROL $1F
- DEX
- BNE ReadP1Loop
- RTS
- NMI:
- PHA ; Push Accumulator, X register and Y register to Stack
- TXA
- PHA
- TYA
- PHA
- LDX $1E
- CPX #$01
- BNE FlagClear ; Check if NMI flag $1E is set
- FlagSet: ; Set up background update
- LDA #$00 ; Disable Rendering
- STA $2001
- LDA $2002 ; Reset PPU Hi/Lo latch
- LDA #$20 ; Store Hi/Lo bytes of the background nametables
- STA $2006
- LDA #$00
- STA $2006
- LDY #$00
- LDX #$04
- LDA #%00001000 ; Disable NMI
- STA $2000
- BgLoop: ; 16 bit loop for drawing background and loading attributes
- LDA (pointerLo), y
- STA $2007
- INY
- BNE BgLoop
- INC pointerHi
- DEX
- BNE BgLoop
- LDA #$00
- STA $1E ; Clear NMI flag
- LDA #%10001000 ; Enable NMI
- STA $2000
- JMP ExitNMI ; End NMI
- FlagClear: ; Read controller and draw background
- LDA #%00011110 ; Enable rendering
- STA $2001
- LDA #$00
- STA $2005
- STA $2005
- ExitNMI:
- JSR ReadP1
- PLA ; Pull Accumulator, X register and Y register from Stack
- TAY
- PLA
- TAX
- PLA
- RTI ; End NMI
- background:
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- .db $00,$01,$02,$03,$04,$05,$06,$07,$08,$09,$0A,$0B,$0C,$0D,$0E,$0F
- .db $0F,$0E,$0D,$0C,$0B,$0A,$09,$08,$07,$06,$05,$04,$03,$02,$01,$00
- attributes:
- .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00
- palette:
- .db $0F,$31,$21,11
- .db $0F,$31,$21,11
- .db $0F,$31,$21,11
- .db $0F,$31,$21,11
- .db $0F,$31,$21,11
- .db $0F,$31,$21,11
- .db $0F,$31,$21,11
- .db $0F,$31,$21,11
- .bank 1
- .org $FFFA
- .dw NMI
- .dw RESET
- .dw 0
- .bank 2
- .org $0000
- .incbin "Font.chr"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement