Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- .inesprg 1 ; 1 PRG banks
- .ineschr 1 ; 1 CHR banks
- .inesmap 119 ; TQROM board with Nintendo MMC3 mapper
- .inesmir 1 ; Mirroring setting
- .rsset $0000 ; Zero Page Memory
- pointerLo .rs 1
- pointerHi .rs 1
- spr_update_flag .rs 1
- bg_update_flag .rs 1
- frame_roll .rs 1
- scroll_x .rs 1
- scroll_y .rs 1
- sleeping .rs 1
- irq_scanline .rs 1
- irq_offset .rs 1
- sway_length .rs 1
- sway_pointer .rs 1
- sway_pointer_new .rs 1
- table_swap_timer .rs 1
- joy_1 .rs 1
- joy_1_prev .rs 1
- joy_1_frame .rs 1
- read_controllers .rs 1
- irq_enabled .rs 1
- irq_lo .rs 1
- irq_hi .rs 1
- palette_update_flag .rs 1
- brightness_current .rs 1
- brightness_target .rs 1
- fade_speed .rs 1
- fade_delay .rs 1
- .rsset $0100 ; Stack Memory
- .rsset $0200 ; Shadow OAM Memory
- .rsset $0300 ; Sound Engine Memory
- .rsset $0400 ; Others 1
- bg_colour_original .rs 1
- palette_original .rs 24
- bg_colour_modified .rs 1
- palette_modified .rs 24
- bonus_mode .rs 1
- .rsset $0500 ; Graphics Buffer Memory
- .rsset $0600 ; Object Memory
- .rsset $0700 ; Others 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:
- SEI
- 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(BgTitle00)
- STA <pointerLo
- LDA #HIGH(BgTitle00)
- STA <pointerHi
- VBwait2: ; Second PPU warm up wait
- BIT PPUStatus
- BPL VBwait2
- LDX #$00
- LDA BgColour, x
- STA bg_colour_original
- STA bg_colour_modified
- PaletteLoad:
- LDA Palette, x
- STA palette_original, x
- STA palette_modified, x
- INX
- CPX #$17
- BNE PaletteLoad
- LDA #$01
- STA <palette_update_flag
- 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 PPUStatus
- LDA #$24
- STA PPUAddr
- LDA #$00
- STA PPUAddr
- LDX #$04
- LDY #$00
- BgLoop2:
- LDA #$FF
- STA PPUData
- INY
- BNE BgLoop2
- DEX
- BNE BgLoop2
- LDA #LOW(TitleIRQ)
- STA <irq_lo
- LDA #HIGH(TitleIRQ)
- STA <irq_hi
- LDA #$00
- STA Mirroring
- STA <irq_offset
- LDA #$0F
- STA <sway_length
- LDA #$03
- STA <irq_scanline
- STA IRQLatch
- STA IRQEnable
- STA IRQReload
- LDA #$C0
- STA <brightness_current
- LDA #$00
- STA <brightness_target
- LDA #%10010000
- STA PPUCtrl
- LDA #%00011110
- STA PPUMask
- LDA #$02
- STA <fade_speed
- STA <fade_delay
- TitleFadeInLoop:
- JSR BrightnessControl
- LDA <brightness_current
- CMP <brightness_target
- BEQ TitleFadeInDone
- LDA #$01
- STA <sleeping
- TitleFadeInSleep:
- LDX <sleeping
- CPX #$00
- BNE TitleFadeInSleep
- JMP TitleFadeInLoop
- TitleFadeInDone:
- LDA #$01
- STA <read_controllers
- TitleLoop:
- LDA <joy_1_frame
- AND #%00001100
- CMP #%00001100
- BNE NoSelect
- LDA #$01
- STA bonus_mode
- JMP GameSetup
- NoSelect:
- LDA <joy_1_frame
- AND #%00001000
- CMP #%00001000
- BNE TitleLoop
- GameSetup:
- MainLoop:
- LDA #$01
- STA <sleeping
- MainSleep:
- LDX <sleeping
- CPX #$00
- BNE MainSleep
- JMP MainLoop
- BrightnessControl:
- LDA #$10
- LDX <brightness_current
- CPX <brightness_target
- BEQ BrightnessDone
- BMI BrightnessDelay
- LDA #$F0
- BrightnessDelay:
- DEC fade_delay
- BNE BrightnessDone
- CLC
- ADC brightness_current
- STA brightness_current
- JSR BrightnessModify
- LDA <fade_speed
- STA <fade_delay
- LDA #$01
- STA <palette_update_flag
- BrightnessDone:
- RTS
- BrightnessModify:
- LDA bg_colour_original
- JSR ColourModify
- STA bg_colour_modified
- LDX #$17
- PaletteModify:
- LDA palette_original, x
- JSR ColourModify
- STA palette_modified, x
- DEX
- BPL PaletteModify
- RTS
- ColourModify:
- CLC
- ADC brightness_current
- CMP #$0D
- BEQ UseBlack
- CMP #$C0
- BCS UseBlack
- CMP #$40
- BCS UseWhite
- RTS
- UseBlack:
- LDA #$0F
- RTS
- UseWhite:
- LDA #$30
- RTS
- IRQ:
- PHA
- TXA
- PHA
- TYA
- PHA
- LDX #$00
- STX IRQDisable
- STX IRQEnable
- JMP [irq_lo]
- IRQEnd:
- PLA
- TAY
- PLA
- TAX
- PLA
- RTI
- TitleIRQ:
- LDA <irq_scanline
- STA IRQLatch
- LDA <frame_roll
- CLC
- ADC <irq_offset
- AND <sway_length
- TAY
- LDA SwayTable00, y
- STA <scroll_x
- STA PPUScroll
- STX <scroll_y
- STX PPUScroll
- LDA NTSwap, y
- STA PPUCtrl
- INC <irq_offset
- JMP IRQEnd
- NMI:
- PHA
- TXA
- PHA
- TYA
- PHA
- SprUpdate:
- LDA #$00
- STA OAMAddr
- LDA #$02
- STA OAMDMA
- BgUpdate:
- LDX <bg_update_flag
- CPX #$01
- BNE ScrollUpdate
- ScrollUpdate:
- LDA <scroll_x
- STA PPUScroll
- LDA <scroll_y
- STA PPUScroll
- PaletteUpdate:
- LDX <palette_update_flag
- CPX #$01
- BNE Controller1
- LDA PPUStatus
- LDA #$3F
- STA PPUAddr
- LDA #$00
- STA PPUAddr
- LDX #$00
- LDA bg_colour_modified
- STA PPUData
- NMIPalLoop:
- INX
- LDA palette_modified, x
- STA PPUData
- INX
- LDA palette_modified, x
- STA PPUData
- INX
- LDA palette_modified, x
- STA PPUData
- INX
- CPX #$18
- BNE NMIPalLoop
- LDA #$00
- STA <palette_update_flag
- Controller1:
- LDA <joy_1
- STA <joy_1_prev
- LDY read_controllers
- CPY #$01
- BNE SkipController
- LDA #$01
- STA Joy1
- LDA #$00
- STA Joy1
- LDX #$08
- ControllerLoop:
- PHA
- LDA Joy1
- AND #$03
- CMP #$01
- PLA
- ROR A
- DEX
- BNE ControllerLoop
- STA <joy_1
- LDA <joy_1_prev
- EOR #$FF
- AND <joy_1
- STA <joy_1_frame
- JMP IRQReset
- SkipController:
- LDA #$00
- STA <joy_1
- LDA <joy_1_prev
- EOR #$FF
- AND <joy_1
- STA <joy_1_frame
- IRQReset:
- LDY <irq_enabled
- CPY #$01
- BNE NMIFinish
- STA <irq_offset
- LDA <irq_scanline
- STA IRQLatch
- STA IRQReload
- NMIFinish:
- LDA #$00
- STA <sleeping
- INC <frame_roll
- PLA
- TAY
- PLA
- TAX
- PLA
- RTI
- BgTitle00:
- .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
- .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
- .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
- .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
- .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
- .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
- .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$D4,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
- .db $FF,$FF,$FF,$FF,$FF,$FF,$E3,$F5,$F0,$F0,$F0,$F4,$E5,$FF,$D5,$F0,$F4,$F0,$E5,$FF,$FF,$FF,$FF,$FF,$FF,$D4,$FF,$FF,$FF,$FF,$FF,$FF
- .db $FF,$FF,$FF,$FF,$FF,$FF,$E0,$E2,$FF,$FF,$FF,$F1,$FF,$FF,$FF,$FF,$F1,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$F1,$FF,$FF,$FF,$FF,$FF,$FF
- .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$F1,$FF,$FF,$D5,$F0,$F3,$F0,$E5,$FF,$FF,$FF,$FF,$FF,$E3,$D1,$FF,$FF,$FF,$FF,$FF,$FF
- .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$E3,$D1,$FF,$FF,$FF,$FF,$F1,$FF,$FF,$FF,$FF,$FF,$FF,$E3,$F2,$E2,$FF,$FF,$FF,$FF,$FF,$FF
- .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$E3,$F2,$E2,$FF,$FF,$FF,$FF,$D0,$E4,$FF,$FF,$FF,$FF,$E3,$F2,$E2,$FF,$FF,$FF,$FF,$FF,$FF,$FF
- .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$D5,$F0,$D3,$E2,$FF,$FF,$FF,$FF,$FF,$E1,$D2,$E5,$FF,$D5,$F0,$D3,$E2,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
- .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
- .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
- .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
- .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
- .db $FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$19,$1B,$0E,$1C,$1C,$FF,$1C,$1D,$0A,$1B,$1D,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF,$FF
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- .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
- Attributes:
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- .db $00,$00,$00,$00,$00,$00,$00,$00
- BgColour:
- .db $0F
- Palette:
- .db $31,$21,$11,$34,$24,$14,$36,$26,$16,$39,$29,$19
- .db $31,$21,$11,$34,$24,$14,$36,$26,$16,$39,$29,$19
- SwayTable00:
- .db $00,$03,$05,$07,$08,$07,$05,$03
- .db $00,$FD,$FB,$F9,$F8,$F9,$FB,$FD
- NTSwap:
- .db $90,$90,$90,$90,$90,$90,$90,$90
- .db $90,$91,$91,$91,$91,$91,$91,$91
- .bank 1
- .org $FFFA
- .dw NMI
- .dw RESET
- .dw IRQ
- .bank 2
- .org $0000
- .incbin "Kemono.chr"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement