Prev: 47532 Up: Map Next: 47611
47574: Draw Characters In The Current Room
Used by the routines at 33083, 33198 and 46014.
Write the current room ID for referring back to.
Draw_Characters_CurrentRoom 47574 LD A,(IY+15) Write the current room (IY+15) to TempStore_Room.
47577 LD (47441),A
There are five characters, cycle through each of them in reverse.
47580 LD B,5 B=5 (counter).
Store the current character reference so it isn't corrupted.
47582 PUSH IY Stash IY on the stack.
Starting at the end with Harry.
47584 LD IY,48235 IY=FrameId_Harry.
Draw_Characters_CurrentRoom_Loop 47588 PUSH BC Stash the counter in BC on the stack.
Don't draw the character if they're not in the current room.
47589 LD A,(47441) A=*TempStore_Room.
47592 CP (IY+15) If A is not equal to the current room (*IY+15) jump to Draw_Characters_CurrentRoom_Skip.
47595 JR NZ,Draw_Characters_CurrentRoom_Skip
Draw the character in the shadow buffer as they are in the room with our current character.
47597 CALL WriteSprite_ShadowBuffer Call WriteSprite_ShadowBuffer.
Move onto the next character.
Draw_Characters_CurrentRoom_Skip 47600 DEC IY Decrease IY by one.
47602 POP BC Restore the counter (BC) from the stack.
47603 DJNZ Draw_Characters_CurrentRoom_Loop Decrease counter by one and loop back to Draw_Characters_CurrentRoom_Loop until counter is zero.
Restores the current character pointer to IY.
47605 POP IY Restore IY from the stack.
Update the screen buffer and return.
47607 CALL ShadowBufferToScreen Call ShadowBufferToScreen.
47610 RET Return.
Prev: 47532 Up: Map Next: 47611