Routines |
Prev: 9218 | Up: Map | Next: 92A7 |
Used by the routine at MainMenu.
|
||||||||
Creates a "zipper" transition effect that reveals the dartboard from the selected menu item expanding both upwards and downwards simultaneously.
The zipper trails behind the dartboard pointer.
|
||||||||
RevealDartboard | 9253 | DEC E | Move one position left to start the reveal. | |||||
9254 | LD ($9AB9),DE | Store this position to *ZipperPosition_Upper. | ||||||
9258 | INC D | Move one position down. | ||||||
9259 | LD ($9ABB),DE | Store this position to *ZipperPosition_Lower. | ||||||
Process the upper half of the reveal.
|
||||||||
RevealDartboard_Loop | 925D | LD DE,($9AB9) | DE=*ZipperPosition_Upper. | |||||
9261 | LD A,E | Jump to RevealDartboard_Done if E becomes negative (if it's gone past the left edge). | ||||||
9262 | AND A | |||||||
9263 | JP M,RevealDartboard_Done | |||||||
9266 | PUSH DE | Stash the upper position on the stack. | ||||||
9267 | LD A,D | Jump to UpperReveal_Done if D becomes negative (if it's gone past the top of the screen). | ||||||
9268 | AND A | |||||||
9269 | JP M,UpperReveal_Done | |||||||
Set up the right-shifting mask for the upper reveal.
Self-modifying code;
|
||||||||
RevealDartboard_ModifyMaskForUpper | 926C | LD HL,$92C7 | Set the mask value to FF at *92C7. | |||||
926F | LD (HL),$FF | |||||||
RevealDartboard_ModifyToShiftRight | 9271 | LD HL,$92CD | Write SRL C (CB+39) to *Reveal_ShiftCommand. |
|||||
9274 | LD (HL),$CB | |||||||
9276 | INC HL | |||||||
9277 | LD (HL),$39 | |||||||
9279 | CALL ProcessRevealLine | Call ProcessRevealLine. | ||||||
UpperReveal_Done | 927C | POP DE | Restore the original upper position from the stack. | |||||
927D | DEC D | Move up one line and left one column for the next upper reveal position. | ||||||
927E | DEC E | |||||||
927F | LD ($9AB9),DE | Store the updated upper position at *ZipperPosition_Upper. | ||||||
Process the lower half of the reveal.
|
||||||||
9283 | LD DE,($9ABB) | DE=*ZipperPosition_Lower. | ||||||
9287 | LD A,D | Jump to RevealDartboard_Done if D is greater than or equal to 18 (if it's gone past the bottom of the screen). | ||||||
9288 | CP $18 | |||||||
928A | JR NC,RevealDartboard_Done | |||||||
Set up the left-shifting mask for the lower reveal.
|
||||||||
928C | PUSH DE | Stash the lower position on the stack. | ||||||
Self-modifying code;
|
||||||||
RevealDartboard_ModifyMaskForLower | 928D | LD HL,$92C7 | Set the mask value to 01 at *92C7. | |||||
9290 | LD (HL),$01 | |||||||
RevealDartboard_ModifyToShiftLeft | 9292 | LD HL,$92CD | Write SLL C (CB+31) to *Reveal_ShiftCommand. |
|||||
9295 | LD (HL),$CB | |||||||
9297 | INC HL | |||||||
9298 | LD (HL),$31 | |||||||
929A | CALL ProcessRevealLine | Call ProcessRevealLine. | ||||||
929D | POP DE | Restore the original lower position from the stack. | ||||||
929E | INC D | Move down one line and left one column for the next lower reveal position. | ||||||
929F | DEC E | |||||||
92A0 | LD ($9ABB),DE | Store the updated lower position at *ZipperPosition_Lower. | ||||||
92A4 | JR RevealDartboard_Loop | Jump to RevealDartboard_Loop. | ||||||
All finished for this frame, so return.
|
||||||||
RevealDartboard_Done | 92A6 | RET | Return. |
Prev: 9218 | Up: Map | Next: 92A7 |