![]()  | 
Routines | 
| Prev: A880 | Up: Map | Next: B3DC | 
| 
 
Used by the routine at A0F8.
 
 | 
||||
| MessageTeleporting | B3A3 | DI | Disable interrupts. | |
| B3A4 | CALL $8BA5 | Call 8BA5. | ||
| B3A7 | LD B,$10 | B=10 (colour cycling counter). | ||
| MessageTeleporting_Loop | B3A9 | PUSH BC | Stash BC (the colour cycling counter) on the stack. | |
| 
 
Handle printing " 
 " messaging.
 | 
||||
| B3AA | LD HL,$7058 | HL=7058 (screen buffer location). | ||
| B3AD | LD DE,$B3D0 | DE=String_Teleporting. | ||
| B3B0 | 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 2000 * 10.
 
 | 
||||
| B3B3 | LD HL,$2000 | HL=2000 (counter). | ||
| Teleporting_Pause | B3B6 | DEC HL | Decrease HL by one. | |
| B3B7 | LD A,L | Jump back to Teleporting_Pause until HL is zero. | ||
| B3B8 | OR H | |||
| B3B9 | JR NZ,Teleporting_Pause | |||
| 
 
Handle cycling the text INK colour.
 
 | 
||||
| B3BB | LD A,($B3D0) | A=the attribute byte of String_Teleporting. | ||
| B3BE | INC A | Increment A by one. | ||
| B3BF | AND %00000111 | Keep only bits 0-2 (INK). | ||
| B3C1 | JR NZ,MsgTeleporting_Skip | Jump to MsgTeleporting_Skip if A was not zero. | ||
| B3C3 | INC A | Increment A by one. | ||
| MsgTeleporting_Skip | B3C4 | OR %01000000 | Set bit 6 (BRIGHT). | |
| B3C6 | LD ($B3D0),A | Store A at String_Teleporting to overwrite the attribute byte. | ||
| B3C9 | POP BC | Restore BC (the colour cycling counter) from the stack. | ||
| B3CA | CALL $B8E8 | Call B8E8. | ||
| B3CD | DJNZ MessageTeleporting_Loop | Decrease colour cycling counter by one and loop back to MessageTeleporting_Loop until the counter is zero. | ||
| B3CF | RET | Return. | ||
| 
 
Messaging data.
 
 | 
||||
| String_Teleporting | B3D0 | DEFM $41 | Attribute: 41 + "TELEPORTING". | |
| B3D1 | DEFM "TELEPORTIN","G"+$80 | |||
| Prev: A880 | Up: Map | Next: B3DC |