![]() |
Routines |
| Prev: 45968 | Up: Map | Next: 46032 |
|
Used by the routine at 41386.
|
||||
| MessageTeleporting | 45987 | DI | Disable interrupts. | |
| 45988 | CALL 35749 | Call 35749. | ||
| 45991 | LD B,16 | B=16 (colour cycling counter). | ||
| MessageTeleporting_Loop | 45993 | PUSH BC | Stash BC (the colour cycling counter) on the stack. | |
|
Handle printing "
" messaging.
|
||||
| 45994 | LD HL,28760 | HL=28760 (screen buffer location). | ||
| 45997 | LD DE,46032 | DE=String_Teleporting. | ||
| 46000 | CALL PrintStringColour | Call PrintStringColour. | ||
|
Create a small pause so the player can read the messaging. This is an inner loop, as it's called for each time the INK is changed - hence it's 8192 * 16.
|
||||
| 46003 | LD HL,8192 | HL=8192 (counter). | ||
| Teleporting_Pause | 46006 | DEC HL | Decrease HL by one. | |
| 46007 | LD A,L | Jump back to Teleporting_Pause until HL is zero. | ||
| 46008 | OR H | |||
| 46009 | JR NZ,Teleporting_Pause | |||
|
Handle cycling the text INK colour.
|
||||
| 46011 | LD A,(46032) | A=the attribute byte of String_Teleporting. | ||
| 46014 | INC A | Increment A by one. | ||
| 46015 | AND %00000111 | Keep only bits 0-2 (INK). | ||
| 46017 | JR NZ,MsgTeleporting_Skip | Jump to MsgTeleporting_Skip if A was not zero. | ||
| 46019 | INC A | Increment A by one. | ||
| MsgTeleporting_Skip | 46020 | OR %01000000 | Set bit 6 (BRIGHT). | |
| 46022 | LD (46032),A | Store A at String_Teleporting to overwrite the attribute byte. | ||
| 46025 | POP BC | Restore BC (the colour cycling counter) from the stack. | ||
| 46026 | CALL 47336 | Call 47336. | ||
| 46029 | DJNZ MessageTeleporting_Loop | Decrease colour cycling counter by one and loop back to MessageTeleporting_Loop until the counter is zero. | ||
| 46031 | RET | Return. | ||
| Prev: 45968 | Up: Map | Next: 46032 |