Prev: D08A Up: Map Next: D0D4
D0AC: Animate Title Screen
Used by the routine at DisplayIntroductionScreen.
AnimateTitleScreen D0AC LD HL,$4000 HL=4000 (screen buffer destination).
D0AF LD DE,$6978 DE=IntroductionScreen (source).
Find the next instance of "05" in the source data.
AnimateTitleScreen_Loop D0B2 LD A,(DE) Jump to AnimateTitleScreen_Increment if *DE is not equal to 05.
D0B3 CP $05
D0B5 JR NZ,AnimateTitleScreen_Increment
D0B7 LD A,(HL) Seems to do nothing; as both A and the flags are overwritten in the UpdateAnimationCounter call.
D0B8 CP $00
D0BA CALL UpdateAnimationCounter Call UpdateAnimationCounter.
On returning; A=(*D86F*05)+01.
D0BD CP $80 Jump to AnimateTitleScreen_Reset if A is higher than 80.
D0BF JR NC,AnimateTitleScreen_Reset
D0C1 LD (HL),A Write A to the screen buffer pointer address.
D0C2 JR AnimateTitleScreen_Increment Jump to AnimateTitleScreen_Increment.
This byte has finished its cycle, so reset it.
AnimateTitleScreen_Reset D0C4 LD A,$00 Reset the current byte in the screen buffer back to 00.
D0C6 LD (HL),A
Increment both source and destination pointers and loop back until the entire screen buffer has been processed.
AnimateTitleScreen_Increment D0C7 INC HL Increment screen buffer pointer by one.
D0C8 INC DE Increment source data pointer by one.
D0C9 LD A,H Jump to AnimateTitleScreen_Loop if H is not equal to 58.
D0CA CP $58
D0CC JR NZ,AnimateTitleScreen_Loop
D0CE LD A,L Jump to AnimateTitleScreen_Loop if L is not equal to 00.
D0CF CP $00
D0D1 JR NZ,AnimateTitleScreen_Loop
The end of the screen buffer has been reached, so return.
D0D3 RET Return.
Prev: D08A Up: Map Next: D0D4