Prev: B390 Up: Map Next: B3D0
B3A3: Message: Teleporting
Used by the routine at A1AA.
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 "teleporting" 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.
Prev: B390 Up: Map Next: B3D0