Routines |
Prev: D08A | Up: Map | Next: D0D4 |
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 |