2013-02-05 12:33:57 -08:00
|
|
|
; VBlank is the interrupt responsible for updating VRAM.
|
|
|
|
|
|
|
|
; In Pokemon Crystal, VBlank has been hijacked to act as the
|
|
|
|
; main loop. After time-sensitive graphics operations have been
|
|
|
|
; performed, joypad input and sound functions are executed.
|
|
|
|
|
|
|
|
; This prevents the display and audio output from lagging.
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
VBlank::
|
2013-02-05 12:33:57 -08:00
|
|
|
push af
|
|
|
|
push bc
|
|
|
|
push de
|
|
|
|
push hl
|
2015-01-19 21:31:29 -08:00
|
|
|
|
|
|
|
ld a, [hVBlank]
|
|
|
|
and 7
|
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
ld e, a
|
2015-01-19 21:31:29 -08:00
|
|
|
ld d, 0
|
2013-02-05 12:33:57 -08:00
|
|
|
ld hl, .VBlanks
|
|
|
|
add hl, de
|
2016-05-04 08:46:23 -07:00
|
|
|
add hl, de
|
2013-02-05 12:33:57 -08:00
|
|
|
ld a, [hli]
|
|
|
|
ld h, [hl]
|
|
|
|
ld l, a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-08-27 15:16:42 -07:00
|
|
|
call _hl_
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
call GameTimer
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
pop hl
|
|
|
|
pop de
|
|
|
|
pop bc
|
|
|
|
pop af
|
|
|
|
reti
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
.VBlanks:
|
2015-01-19 21:31:29 -08:00
|
|
|
dw VBlank0
|
|
|
|
dw VBlank1
|
|
|
|
dw VBlank2
|
|
|
|
dw VBlank3
|
|
|
|
dw VBlank4
|
|
|
|
dw VBlank5
|
|
|
|
dw VBlank6
|
|
|
|
dw VBlank0 ; just in case
|
2013-02-05 12:33:57 -08:00
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
VBlank0::
|
2013-02-05 12:33:57 -08:00
|
|
|
; normal operation
|
|
|
|
|
|
|
|
; rng
|
|
|
|
; scx, scy, wy, wx
|
|
|
|
; bg map buffer
|
|
|
|
; palettes
|
|
|
|
; dma transfer
|
|
|
|
; bg map
|
|
|
|
; tiles
|
|
|
|
; oam
|
|
|
|
; joypad
|
|
|
|
; sound
|
|
|
|
|
2015-01-19 21:31:29 -08:00
|
|
|
; inc frame counter
|
2015-11-09 20:01:45 -08:00
|
|
|
ld hl, hVBlankCounter
|
2013-02-05 12:33:57 -08:00
|
|
|
inc [hl]
|
2015-01-19 21:31:29 -08:00
|
|
|
|
|
|
|
; advance random variables
|
2013-02-19 23:46:40 -08:00
|
|
|
ld a, [rDIV]
|
2013-02-05 12:33:57 -08:00
|
|
|
ld b, a
|
2013-08-19 17:49:16 -07:00
|
|
|
ld a, [hRandomAdd]
|
2013-02-05 12:33:57 -08:00
|
|
|
adc b
|
2013-08-19 17:49:16 -07:00
|
|
|
ld [hRandomAdd], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-19 23:46:40 -08:00
|
|
|
ld a, [rDIV]
|
2013-02-05 12:33:57 -08:00
|
|
|
ld b, a
|
2013-08-19 17:49:16 -07:00
|
|
|
ld a, [hRandomSub]
|
2013-02-05 12:33:57 -08:00
|
|
|
sbc b
|
2013-08-19 17:49:16 -07:00
|
|
|
ld [hRandomSub], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
|
|
|
ld a, [hROMBank]
|
|
|
|
ld [hROMBankBackup], a
|
|
|
|
|
2013-08-19 15:46:56 -07:00
|
|
|
ld a, [hSCX]
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rSCX], a
|
2013-08-19 15:46:56 -07:00
|
|
|
ld a, [hSCY]
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rSCY], a
|
2013-08-19 15:42:26 -07:00
|
|
|
ld a, [hWY]
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rWY], a
|
2013-08-19 15:42:26 -07:00
|
|
|
ld a, [hWX]
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rWX], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
|
|
|
; There's only time to call one of these in one vblank.
|
|
|
|
; Calls are in order of priority.
|
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
call UpdateBGMapBuffer
|
2015-01-19 21:31:29 -08:00
|
|
|
jr c, .done
|
2013-02-05 12:33:57 -08:00
|
|
|
call UpdatePalsIfCGB
|
2015-01-19 21:31:29 -08:00
|
|
|
jr c, .done
|
2013-02-05 12:33:57 -08:00
|
|
|
call DMATransfer
|
2015-01-19 21:31:29 -08:00
|
|
|
jr c, .done
|
2013-02-05 12:33:57 -08:00
|
|
|
call UpdateBGMap
|
2015-01-19 21:31:29 -08:00
|
|
|
|
|
|
|
; These have their own timing checks.
|
|
|
|
|
2013-08-31 21:02:35 -07:00
|
|
|
call Serve2bppRequest
|
|
|
|
call Serve1bppRequest
|
2013-08-31 21:07:10 -07:00
|
|
|
call AnimateTileset
|
2015-01-19 21:31:29 -08:00
|
|
|
|
|
|
|
.done
|
|
|
|
|
2013-08-19 17:49:16 -07:00
|
|
|
ld a, [hOAMUpdate]
|
2013-02-05 12:33:57 -08:00
|
|
|
and a
|
2015-01-19 21:31:29 -08:00
|
|
|
jr nz, .done_oam
|
2018-01-30 11:47:14 -08:00
|
|
|
call hTransferVirtualOAM
|
2015-01-19 21:31:29 -08:00
|
|
|
.done_oam
|
|
|
|
|
|
|
|
; vblank-sensitive operations are done
|
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
xor a
|
2018-01-23 14:39:09 -08:00
|
|
|
ld [wVBlankOccurred], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2018-01-23 14:39:09 -08:00
|
|
|
ld a, [wOverworldDelay]
|
2013-02-05 12:33:57 -08:00
|
|
|
and a
|
2015-01-19 21:31:29 -08:00
|
|
|
jr z, .ok
|
2013-02-05 12:33:57 -08:00
|
|
|
dec a
|
2018-01-23 14:39:09 -08:00
|
|
|
ld [wOverworldDelay], a
|
2015-01-19 21:31:29 -08:00
|
|
|
.ok
|
|
|
|
|
2018-01-23 14:39:09 -08:00
|
|
|
ld a, [wTextDelayFrames]
|
2013-02-05 12:33:57 -08:00
|
|
|
and a
|
2015-01-19 21:31:29 -08:00
|
|
|
jr z, .ok2
|
2013-02-05 12:33:57 -08:00
|
|
|
dec a
|
2018-01-23 14:39:09 -08:00
|
|
|
ld [wTextDelayFrames], a
|
2015-01-19 21:31:29 -08:00
|
|
|
.ok2
|
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
call Joypad
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-10-10 23:49:08 -07:00
|
|
|
ld a, BANK(_UpdateSound)
|
2015-01-19 21:31:29 -08:00
|
|
|
rst Bankswitch
|
2013-10-10 23:49:08 -07:00
|
|
|
call _UpdateSound
|
2015-01-19 21:31:29 -08:00
|
|
|
ld a, [hROMBankBackup]
|
|
|
|
rst Bankswitch
|
|
|
|
|
2013-08-19 17:49:16 -07:00
|
|
|
ld a, [hSeconds]
|
2015-10-16 10:35:43 -07:00
|
|
|
ld [hSecondsBackup], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
ret
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
VBlank2::
|
2013-02-05 12:33:57 -08:00
|
|
|
; sound only
|
|
|
|
|
2013-08-19 17:49:16 -07:00
|
|
|
ld a, [hROMBank]
|
2015-01-19 21:31:29 -08:00
|
|
|
ld [hROMBankBackup], a
|
|
|
|
|
2013-10-10 23:49:08 -07:00
|
|
|
ld a, BANK(_UpdateSound)
|
2015-01-19 21:31:29 -08:00
|
|
|
rst Bankswitch
|
2013-10-10 23:49:08 -07:00
|
|
|
call _UpdateSound
|
2015-01-19 21:31:29 -08:00
|
|
|
|
|
|
|
ld a, [hROMBankBackup]
|
2013-02-05 12:33:57 -08:00
|
|
|
rst Bankswitch
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
xor a
|
2018-01-23 14:39:09 -08:00
|
|
|
ld [wVBlankOccurred], a
|
2013-02-05 12:33:57 -08:00
|
|
|
ret
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
VBlank1::
|
2013-02-05 12:33:57 -08:00
|
|
|
; scx, scy
|
|
|
|
; palettes
|
|
|
|
; bg map
|
|
|
|
; tiles
|
|
|
|
; oam
|
|
|
|
; sound / lcd stat
|
|
|
|
|
2013-08-19 17:49:16 -07:00
|
|
|
ld a, [hROMBank]
|
2015-01-19 21:31:29 -08:00
|
|
|
ld [hROMBankBackup], a
|
|
|
|
|
2013-08-19 15:46:56 -07:00
|
|
|
ld a, [hSCX]
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rSCX], a
|
2013-08-19 15:46:56 -07:00
|
|
|
ld a, [hSCY]
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rSCY], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
call UpdatePals
|
2015-01-19 21:31:29 -08:00
|
|
|
jr c, .done
|
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
call UpdateBGMap
|
2018-01-03 12:28:13 -08:00
|
|
|
call Serve2bppRequest_VBlank
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2018-01-30 11:47:14 -08:00
|
|
|
call hTransferVirtualOAM
|
2015-01-19 21:31:29 -08:00
|
|
|
.done
|
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
xor a
|
2018-01-23 14:39:09 -08:00
|
|
|
ld [wVBlankOccurred], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
|
|
|
; get requested ints
|
2013-02-19 23:46:40 -08:00
|
|
|
ld a, [rIF]
|
2013-02-05 12:33:57 -08:00
|
|
|
ld b, a
|
2015-01-19 21:31:29 -08:00
|
|
|
; discard requested ints
|
2013-02-05 12:33:57 -08:00
|
|
|
xor a
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIF], a
|
2015-01-19 21:31:29 -08:00
|
|
|
; enable lcd stat
|
2013-02-05 12:33:57 -08:00
|
|
|
ld a, %10 ; lcd stat
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIE], a
|
2015-01-19 21:31:29 -08:00
|
|
|
; rerequest serial int if applicable (still disabled)
|
|
|
|
; request lcd stat
|
2013-02-05 12:33:57 -08:00
|
|
|
ld a, b
|
|
|
|
and %1000 ; serial
|
|
|
|
or %10 ; lcd stat
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIF], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
ei
|
2013-10-10 23:49:08 -07:00
|
|
|
ld a, BANK(_UpdateSound)
|
2015-01-19 21:31:29 -08:00
|
|
|
rst Bankswitch
|
2013-10-10 23:49:08 -07:00
|
|
|
call _UpdateSound
|
2015-01-19 21:31:29 -08:00
|
|
|
ld a, [hROMBankBackup]
|
2013-02-05 12:33:57 -08:00
|
|
|
rst Bankswitch
|
|
|
|
di
|
2015-01-19 21:31:29 -08:00
|
|
|
|
|
|
|
; get requested ints
|
2013-02-19 23:46:40 -08:00
|
|
|
ld a, [rIF]
|
2013-02-05 12:33:57 -08:00
|
|
|
ld b, a
|
2015-01-19 21:31:29 -08:00
|
|
|
; discard requested ints
|
2013-02-05 12:33:57 -08:00
|
|
|
xor a
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIF], a
|
2015-01-19 21:31:29 -08:00
|
|
|
; enable ints besides joypad
|
2013-02-05 12:33:57 -08:00
|
|
|
ld a, %1111 ; serial timer lcdstat vblank
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIE], a
|
2015-01-19 21:31:29 -08:00
|
|
|
; rerequest ints
|
2013-02-05 12:33:57 -08:00
|
|
|
ld a, b
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIF], a
|
2013-02-05 12:33:57 -08:00
|
|
|
ret
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
UpdatePals::
|
2013-02-05 12:33:57 -08:00
|
|
|
; update pals for either dmg or cgb
|
|
|
|
|
2013-08-19 17:49:16 -07:00
|
|
|
ld a, [hCGB]
|
2013-02-05 12:33:57 -08:00
|
|
|
and a
|
|
|
|
jp nz, UpdateCGBPals
|
2015-01-19 21:31:29 -08:00
|
|
|
|
|
|
|
; update gb pals
|
2015-12-23 11:00:29 -08:00
|
|
|
ld a, [wBGP]
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rBGP], a
|
2015-12-23 11:00:29 -08:00
|
|
|
ld a, [wOBP0]
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rOBP0], a
|
2015-12-23 11:00:29 -08:00
|
|
|
ld a, [wOBP1]
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rOBP1], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
and a
|
|
|
|
ret
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
VBlank3::
|
2013-02-05 12:33:57 -08:00
|
|
|
; scx, scy
|
|
|
|
; palettes
|
|
|
|
; bg map
|
|
|
|
; tiles
|
|
|
|
; oam
|
|
|
|
; sound / lcd stat
|
|
|
|
|
2013-08-19 17:49:16 -07:00
|
|
|
ld a, [hROMBank]
|
2015-01-19 21:31:29 -08:00
|
|
|
ld [hROMBankBackup], a
|
|
|
|
|
2013-08-19 15:46:56 -07:00
|
|
|
ld a, [hSCX]
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rSCX], a
|
2013-08-19 15:46:56 -07:00
|
|
|
ld a, [hSCY]
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rSCY], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-08-19 17:49:16 -07:00
|
|
|
ld a, [hCGBPalUpdate]
|
2013-02-05 12:33:57 -08:00
|
|
|
and a
|
|
|
|
call nz, ForceUpdateCGBPals
|
2015-01-19 21:31:29 -08:00
|
|
|
jr c, .done
|
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
call UpdateBGMap
|
2018-01-03 12:28:13 -08:00
|
|
|
call Serve2bppRequest_VBlank
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2018-01-30 11:47:14 -08:00
|
|
|
call hTransferVirtualOAM
|
2015-01-19 21:31:29 -08:00
|
|
|
.done
|
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
xor a
|
2018-01-23 14:39:09 -08:00
|
|
|
ld [wVBlankOccurred], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-19 23:46:40 -08:00
|
|
|
ld a, [rIF]
|
2013-02-05 12:33:57 -08:00
|
|
|
push af
|
|
|
|
xor a
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIF], a
|
2013-02-05 12:33:57 -08:00
|
|
|
ld a, %10 ; lcd stat
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIE], a
|
|
|
|
ld [rIF], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
ei
|
2013-10-10 23:49:08 -07:00
|
|
|
ld a, BANK(_UpdateSound)
|
2015-01-19 21:31:29 -08:00
|
|
|
rst Bankswitch
|
2013-10-10 23:49:08 -07:00
|
|
|
call _UpdateSound
|
2015-01-19 21:31:29 -08:00
|
|
|
ld a, [hROMBankBackup]
|
2013-02-05 12:33:57 -08:00
|
|
|
rst Bankswitch
|
|
|
|
di
|
2015-01-19 21:31:29 -08:00
|
|
|
|
|
|
|
; request lcdstat
|
2013-02-19 23:46:40 -08:00
|
|
|
ld a, [rIF]
|
2013-02-05 12:33:57 -08:00
|
|
|
ld b, a
|
2015-01-19 21:31:29 -08:00
|
|
|
; and any other ints
|
2013-02-05 12:33:57 -08:00
|
|
|
pop af
|
|
|
|
or b
|
|
|
|
ld b, a
|
2015-01-19 21:31:29 -08:00
|
|
|
; reset ints
|
2013-02-05 12:33:57 -08:00
|
|
|
xor a
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIF], a
|
2015-01-19 21:31:29 -08:00
|
|
|
; enable ints besides joypad
|
2013-02-05 12:33:57 -08:00
|
|
|
ld a, %1111 ; serial timer lcdstat vblank
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIE], a
|
2015-01-19 21:31:29 -08:00
|
|
|
; request ints
|
2013-02-05 12:33:57 -08:00
|
|
|
ld a, b
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIF], a
|
2013-02-05 12:33:57 -08:00
|
|
|
ret
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
VBlank4::
|
2013-02-05 12:33:57 -08:00
|
|
|
; bg map
|
|
|
|
; tiles
|
|
|
|
; oam
|
|
|
|
; joypad
|
|
|
|
; serial
|
|
|
|
; sound
|
|
|
|
|
2013-08-19 17:49:16 -07:00
|
|
|
ld a, [hROMBank]
|
2015-01-19 21:31:29 -08:00
|
|
|
ld [hROMBankBackup], a
|
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
call UpdateBGMap
|
2013-08-31 21:02:35 -07:00
|
|
|
call Serve2bppRequest
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2018-01-30 11:47:14 -08:00
|
|
|
call hTransferVirtualOAM
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
call Joypad
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
xor a
|
2018-01-23 14:39:09 -08:00
|
|
|
ld [wVBlankOccurred], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
call AskSerial
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-10-10 23:49:08 -07:00
|
|
|
ld a, BANK(_UpdateSound)
|
2015-01-19 21:31:29 -08:00
|
|
|
rst Bankswitch
|
2013-10-10 23:49:08 -07:00
|
|
|
call _UpdateSound
|
2015-01-19 21:31:29 -08:00
|
|
|
|
|
|
|
ld a, [hROMBankBackup]
|
2013-02-05 12:33:57 -08:00
|
|
|
rst Bankswitch
|
|
|
|
ret
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
VBlank5::
|
2013-02-05 12:33:57 -08:00
|
|
|
; scx
|
|
|
|
; palettes
|
|
|
|
; bg map
|
|
|
|
; tiles
|
|
|
|
; joypad
|
2015-07-18 20:45:39 -07:00
|
|
|
;
|
2013-02-05 12:33:57 -08:00
|
|
|
|
2013-08-19 17:49:16 -07:00
|
|
|
ld a, [hROMBank]
|
2015-01-19 21:31:29 -08:00
|
|
|
ld [hROMBankBackup], a
|
|
|
|
|
2013-08-19 15:46:56 -07:00
|
|
|
ld a, [hSCX]
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rSCX], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
call UpdatePalsIfCGB
|
2015-01-19 21:31:29 -08:00
|
|
|
jr c, .done
|
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
call UpdateBGMap
|
2013-08-31 21:02:35 -07:00
|
|
|
call Serve2bppRequest
|
2015-01-19 21:31:29 -08:00
|
|
|
.done
|
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
xor a
|
2018-01-23 14:39:09 -08:00
|
|
|
ld [wVBlankOccurred], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
call Joypad
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
xor a
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIF], a
|
2013-02-05 12:33:57 -08:00
|
|
|
ld a, %10 ; lcd stat
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIE], a
|
2015-01-19 21:31:29 -08:00
|
|
|
; request lcd stat
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIF], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
ei
|
2013-10-10 23:49:08 -07:00
|
|
|
ld a, BANK(_UpdateSound)
|
2015-01-19 21:31:29 -08:00
|
|
|
rst Bankswitch
|
2013-10-10 23:49:08 -07:00
|
|
|
call _UpdateSound
|
2015-01-19 21:31:29 -08:00
|
|
|
ld a, [hROMBankBackup]
|
2013-02-05 12:33:57 -08:00
|
|
|
rst Bankswitch
|
|
|
|
di
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
xor a
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIF], a
|
2015-01-19 21:31:29 -08:00
|
|
|
; enable ints besides joypad
|
2013-02-05 12:33:57 -08:00
|
|
|
ld a, %1111 ; serial timer lcdstat vblank
|
2013-02-19 23:46:40 -08:00
|
|
|
ld [rIE], a
|
2013-02-05 12:33:57 -08:00
|
|
|
ret
|
|
|
|
|
2018-06-24 07:09:41 -07:00
|
|
|
VBlank6::
|
2013-02-05 12:33:57 -08:00
|
|
|
; palettes
|
|
|
|
; tiles
|
|
|
|
; dma transfer
|
|
|
|
; sound
|
|
|
|
|
2013-08-19 17:49:16 -07:00
|
|
|
ld a, [hROMBank]
|
2015-01-19 21:31:29 -08:00
|
|
|
ld [hROMBankBackup], a
|
|
|
|
|
|
|
|
; inc frame counter
|
2015-11-09 20:01:45 -08:00
|
|
|
ld hl, hVBlankCounter
|
2013-02-05 12:33:57 -08:00
|
|
|
inc [hl]
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
call UpdateCGBPals
|
2015-01-19 21:31:29 -08:00
|
|
|
jr c, .done
|
|
|
|
|
2013-08-31 21:02:35 -07:00
|
|
|
call Serve2bppRequest
|
|
|
|
call Serve1bppRequest
|
2013-02-05 12:33:57 -08:00
|
|
|
call DMATransfer
|
2015-01-19 21:31:29 -08:00
|
|
|
.done
|
|
|
|
|
2013-02-05 12:33:57 -08:00
|
|
|
xor a
|
2018-01-23 14:39:09 -08:00
|
|
|
ld [wVBlankOccurred], a
|
2015-01-19 21:31:29 -08:00
|
|
|
|
2013-10-10 23:49:08 -07:00
|
|
|
ld a, BANK(_UpdateSound)
|
2015-01-19 21:31:29 -08:00
|
|
|
rst Bankswitch
|
2013-10-10 23:49:08 -07:00
|
|
|
call _UpdateSound
|
2015-01-19 21:31:29 -08:00
|
|
|
|
|
|
|
ld a, [hROMBankBackup]
|
2013-02-05 12:33:57 -08:00
|
|
|
rst Bankswitch
|
|
|
|
ret
|