ref: 35493bef27ba0425860a0f419c64371b824b6981
dir: /home/vblank.asm/
VBlank:: push af push bc push de push hl ld a, [H_LOADEDROMBANK] ld [wd122], a ld a, [$ffae] ld [rSCX], a ld a, [$ffaf] ld [rSCY], a ld a, [wd0a0] and a jr nz, .ok ld a, [$ffb0] ld [rWY], a .ok call AutoBgMapTransfer call VBlankCopyBgMap call RedrawExposedScreenEdge call VBlankCopy call VBlankCopyDouble call UpdateMovingBgTiles call $ff80 ; hOAMDMA ld a, Bank(PrepareOAMData) ld [H_LOADEDROMBANK], a ld [MBC3RomBank], a call PrepareOAMData ; VBlank-sensitive operations end. call Random ld a, [H_VBLANKOCCURRED] and a jr z, .vblanked xor a ld [H_VBLANKOCCURRED], a .vblanked ld a, [H_FRAMECOUNTER] and a jr z, .decced dec a ld [H_FRAMECOUNTER], a .decced call Func_28cb ld a, [wc0ef] ; music ROM bank ld [H_LOADEDROMBANK], a ld [MBC3RomBank], a cp BANK(Func_9103) jr nz, .notbank2 .bank2 call Func_9103 jr .afterMusic .notbank2 cp 8 jr nz, .bank1F .bank8 call Func_2136e call Func_21879 jr .afterMusic .bank1F call Func_7d177 .afterMusic callba Func_18dee ; keep track of time played ld a, [$fff9] and a call z, ReadJoypad ld a, [wd122] ld [H_LOADEDROMBANK], a ld [MBC3RomBank], a pop hl pop de pop bc pop af reti DelayFrame:: ; Wait for the next vblank interrupt. ; As a bonus, this saves battery. NOT_VBLANKED EQU 1 ld a, NOT_VBLANKED ld [H_VBLANKOCCURRED], a .halt halt ld a, [H_VBLANKOCCURRED] and a jr nz, .halt ret