216 lines
3.2 KiB
NASM
Executable File
216 lines
3.2 KiB
NASM
Executable File
.include "routines/main.h"
|
|
.section "events" semifree
|
|
|
|
EventPtTable:
|
|
.dw EventRoutine0
|
|
.dw EventRoutine1
|
|
.dw EventRoutine2
|
|
.dw EventRoutine3
|
|
.dw EventRoutine4
|
|
|
|
;boot init, also debug menu check
|
|
EventRoutine0:
|
|
rep #$31
|
|
lda.w #200
|
|
sta.w GravityCutOffYPos
|
|
|
|
sep #$20
|
|
lda.b #0
|
|
sta.b ScreenBrightness
|
|
lda.b #$80
|
|
sta.l $2100
|
|
|
|
|
|
; jsr InitOam
|
|
jsr InitHdma
|
|
jsr ResetScrollOffsets
|
|
jsr InitDmaFifo
|
|
; jsr ClearColObjList
|
|
; jsr ClearZBuffer
|
|
jsr PalEffectInit
|
|
|
|
jsr ClearVRAM
|
|
jsr ClearBg3TilemapBuffer ;cls
|
|
jsr ClearBg2TilemapBuffer ;cls
|
|
jsr ClearBg1TilemapBuffer ;cls
|
|
|
|
inc.b NMIBg1UploadFlag
|
|
inc.b NMIBg2UploadFlag
|
|
inc.b NMIBg3UploadFlag
|
|
stz.b FocusScreenFlags
|
|
lda.b #0
|
|
sta.b CheckJoypadMode ;set joypad check to 8 players
|
|
lda.b #$80
|
|
sta.w IrqBrightnessIncDec
|
|
lda.b #20
|
|
sta.w MaxGravObjCount
|
|
|
|
|
|
lda.b #0 ;load bgmode config #1
|
|
jsr SetBGMode
|
|
; jsr DMATilesToVramBG3
|
|
; jsr ClearBg3TilemapBuffer ;cls
|
|
|
|
lda.b #0
|
|
jsr SpcPlaySong
|
|
|
|
stz.b LoadMenuDoInit
|
|
|
|
inc.b CurrentEvent
|
|
lda.b #13 ;window effect
|
|
jsr CreateHdmaEffect
|
|
lda.b #14 ;wavy scroll
|
|
jsr CreateHdmaEffect
|
|
|
|
rep #$31
|
|
lda.w #%00100100
|
|
ldx.w #0
|
|
ldy.w #0
|
|
jsr UploadBgObject
|
|
lda.w #%00101001+$0100
|
|
ldx.w #0
|
|
ldy.w #0
|
|
jsr UploadBgObject
|
|
|
|
lda.w #0
|
|
jsr VwfCreateTextbox
|
|
|
|
lda.w #11
|
|
jsr PalEffectCreate
|
|
|
|
lda.w #12
|
|
jsr PalEffectCreate
|
|
|
|
lda.w #$0504
|
|
sta.w SpcReportType
|
|
|
|
jsr SpcSetReportType
|
|
rts
|
|
|
|
;wait for rom upload to start
|
|
EventRoutine1:
|
|
sep #$20
|
|
lda.w Qd16Flags
|
|
lsr a
|
|
bcc EventNoRomLoad
|
|
|
|
inc.b CurrentEvent
|
|
|
|
rep #$31
|
|
lda.w #1
|
|
jsr VwfCreateTextbox ;print "loading rom"
|
|
sep #$20
|
|
|
|
EventNoRomLoad:
|
|
jsr ShakeShake
|
|
jsr QD16CommandPoll
|
|
jsr VwfHandler
|
|
jsr ProcessHdmaList
|
|
jsr PalEffectHandler
|
|
rts
|
|
|
|
;seek rom header:
|
|
EventRoutine2:
|
|
jsr QD16CheckHeaderValid
|
|
bcc SeekHeaderNotFound
|
|
|
|
rep #$31
|
|
lda.l RomHeaderSize,x ;get romsize
|
|
txy
|
|
sec
|
|
sbc.w #8
|
|
and.w #7
|
|
tax
|
|
lda.l RomSizeLUT+BaseAdress,x
|
|
sta.w Qd16Mbit
|
|
tya
|
|
bne SeekHeaderHirom
|
|
|
|
lda.w #5
|
|
jsr VwfCreateTextbox ;print lorom header
|
|
bra SeekHeaderNotFound
|
|
|
|
SeekHeaderHirom:
|
|
|
|
lda.w #6
|
|
jsr VwfCreateTextbox ;print hirom header
|
|
|
|
SeekHeaderNotFound:
|
|
jsr ShakeShake
|
|
jsr QD16CommandPoll
|
|
jsr VwfHandler
|
|
jsr ProcessHdmaList
|
|
jsr PalEffectHandler
|
|
rts
|
|
|
|
RomSizeLUT:
|
|
.db 2
|
|
.db 4
|
|
.db 8
|
|
.db 16
|
|
.db 32
|
|
.db 64
|
|
.db 0
|
|
.db 0
|
|
ShakeShake:
|
|
php
|
|
sep #$20
|
|
lda.b #$0f
|
|
sta.b ScreenBrightness
|
|
|
|
lda.l SpcReportBuffer+8
|
|
beq event1Noshake
|
|
|
|
lda.b Mosaic
|
|
clc
|
|
adc.b #$80
|
|
sta.b Mosaic
|
|
event1Noshake:
|
|
; jsr ObjectProcessor
|
|
|
|
lda.b Mosaic
|
|
and.b #$f0
|
|
beq Event1MosDec
|
|
|
|
sec
|
|
sbc.b #$10
|
|
Event1MosDec:
|
|
ora.b #%10
|
|
sta.b Mosaic
|
|
plp
|
|
rts
|
|
|
|
;wait some frames
|
|
EventRoutine3:
|
|
sep #$20
|
|
dec.w FrameWait
|
|
bne EventRoutine3Wait
|
|
|
|
lda.w EventBuffer
|
|
sta.b CurrentEvent
|
|
|
|
EventRoutine3Wait:
|
|
rts
|
|
|
|
;fade out, dont accept any new commands
|
|
EventRoutine4:
|
|
jsr VwfHandler
|
|
jsr ProcessHdmaList
|
|
jsr PalEffectHandler
|
|
rts
|
|
|
|
WaitFrameEvent:
|
|
pha
|
|
php
|
|
sep #$20
|
|
sta.w FrameWait
|
|
lda.b CurrentEvent
|
|
sta.w EventBuffer
|
|
lda.b #3
|
|
sta.b CurrentEvent
|
|
plp
|
|
pla
|
|
rts
|
|
|
|
.ends
|
|
|