Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .inesprg 2 ; 2x 16KB PRG code
- .ineschr 2 ; 1x 8KB CHR data
- .inesmap 5 ; mapper 5 = MMC5, AKA NES beast mode!
- .inesmir 1 ; background mirroring
- ;;;;;;;;;;;;;;;;;;;;;;;;;VARIABLES;;;;;;;;;;;;;;;;;;;;;;;
- .rsset $0000
- PointerLo .rs 1
- PointerHi .rs 1
- DrawHi .rs 1
- DrawLo .rs 1
- scroll .rs 7
- frames .rs 1
- bonziscroll .rs 1
- bonzi .rs 80
- scrollpos .rs 1
- nametablescroll .rs 1
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .bank 0
- .org $8000
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .bank 1
- .org $A000
- palettes:
- .db $0F,$28,$38,$20,$0F,$28,$38,$20,$0F,$28,$38,$20,$0F,$28,$38,$20
- .db $0F,$22,$32,$20,$0F,$28,$38,$20,$0F,$28,$38,$20,$0F,$28,$38,$20
- screen:
- .incbin "jetskititle.bin"
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .bank 2
- .org $C000
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .bank 3
- .org $E000
- RESET:
- SEI ; disable IRQs
- CLD ; disable decimal mode
- LDX #$40
- STX $4017 ; disable APU frame IRQ
- LDX #$FF
- TXS ; Set up stack
- INX ; now X = 0
- STX $2000 ; disable NMI
- STX $2001 ; disable rendering
- STX $4010 ; disable DMC IRQs
- JSR vblankwait
- clrmem:
- LDA #$00
- STA $0000, x
- STA $0100, x
- STA $0300, x
- STA $0400, x
- STA $0500, x
- STA $0600, x
- STA $0700, x
- LDA #$FE
- STA $0200, x
- INX
- BNE clrmem
- JSR vblankwait
- LDA #%00000011
- STA $5100 ;Four 8KB PRG ROM/RAM banks plus one ROM bank
- LDA #%00000000
- STA $5101 ;8 x 1KB CHR Banks
- LDA #%00000010
- STA $5102
- LDA #%00000001
- STA $5104 ;Extended nametables :)
- STA $5103 ;Data protection zapped
- LDA #$44
- STA $5105 ;Vertical mirroring
- LDA #%00000000
- STA $5113 ;PRG RAM chip stuff
- LDA #%10000000
- STA $5114
- LDA #%10000001
- STA $5115
- LDA #%10000010
- STA $5116
- LDA #%00000011
- STA $5117 ;PRG ROM everywhere, Banks 0-1-2-3
- LDA #$00
- STA $5200
- STA $5201
- STA $5202
- STA $5130
- STA $5204
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;MMC5 ready
- LDA $2002 ;Wake up PPU
- LDX #$00
- LDY #$00
- LDA #$20
- STA $2006
- LDA #$00
- STA $2006
- ScreenLoopINNER:
- STY $2007
- INY
- CPY #$00
- BNE ScreenLoopINNER
- LDA DrawHi
- CLC
- ADC #$04
- STA DrawHi
- INC PointerHi
- INX
- CPX #$04
- BNE ScreenLoopINNER
- JSR vblankwait
- LDX #$00
- .titlerender
- LDA #%00000000
- STA $5C00,x
- LDA #%00000001
- STA $5D00,x
- LDA #%00000010
- STA $5E00,x
- LDA #%00000011
- STA $5F00,x
- INX
- CPX #$00
- BNE .titlerender
- JSR vblankwait
- LDA #$3F
- STA $2006
- LDA #$00
- STA $2006
- PalLoop:
- LDA palettes,y
- STA $2007
- INY
- CPY #$20
- BNE PalLoop
- JSR PPUCleanup
- Forever:
- JMP Forever
- NMI:
- LDA #$00
- STA $2003 ; set the low byte (00) of the RAM address
- LDA #$02
- STA $4014 ; set the high byte (02) of the RAM address, start the transfer
- RTI
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- ;;Wait for a vblank to happen;;
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- vblankwait: ; First wait for vblank to make sure PPU is ready
- BIT $2002
- BPL vblankwait
- RTS
- ;;;;;;;;;;;;;;;;;;;;;;;
- ;;PPU Cleanup routine;;
- ;;;;;;;;;;;;;;;;;;;;;;;
- PPUCleanup:
- LDA #%10110000 ; enable NMI, 16x8 sprites from Pattern Table 0, background from Pattern Table 1
- STA $2000
- LDA #%00011110 ; Enable sprites, enable background, no clipping on left side
- STA $2001
- LDA #$00 ; no scrolling
- STA $2005
- STA $2005
- RTS
- .org $FFFA ;first of the three vectors starts here
- .dw NMI ;when an NMI happens (once per frame if enabled) the
- ;processor will jump to the label NMI:
- .dw RESET ;when the processor first turns on or is reset, it will jump
- ;to the label RESET:
- .dw 0 ;external interrupt IRQ is not used in this game
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
- .bank 4
- .org $0000
- .incbin "commiemmc5.chr"
- ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement