Routines |
Prev: B9AC | Up: Map | Next: B9FB |
Write the current room ID for referring back to.
|
||||
Draw_Characters_CurrentRoom | B9D6 | LD A,(IY+$0F) | Write the current room (IY+0F) to TempStore_Room. | |
B9D9 | LD ($B951),A | |||
There are five characters, cycle through each of them in reverse.
|
||||
B9DC | LD B,$05 | B=05 (counter). | ||
Store the current character reference so it isn't corrupted.
|
||||
B9DE | PUSH IY | Stash IY on the stack. | ||
Starting at the end with Harry.
|
||||
B9E0 | LD IY,$BC6B | IY=FrameId_Harry. | ||
Draw_Characters_CurrentRoom_Loop | B9E4 | PUSH BC | Stash the counter in BC on the stack. | |
Don't draw the character if they're not in the current room.
|
||||
B9E5 | LD A,($B951) | A=*TempStore_Room. | ||
B9E8 | CP (IY+$0F) | If A is not equal to the current room (*IY+0F) jump to Draw_Characters_CurrentRoom_Skip. | ||
B9EB | JR NZ,Draw_Characters_CurrentRoom_Skip | |||
Draw the character in the shadow buffer as they are in the room with our current character.
|
||||
B9ED | CALL WriteSprite_ShadowBuffer | Call WriteSprite_ShadowBuffer. | ||
Move onto the next character.
|
||||
Draw_Characters_CurrentRoom_Skip | B9F0 | DEC IY | Decrease IY by one. | |
B9F2 | POP BC | Restore the counter (BC) from the stack. | ||
B9F3 | 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.
|
||||
B9F5 | POP IY | Restore IY from the stack. | ||
Update the screen buffer and return.
|
||||
B9F7 | CALL ShadowBufferToScreen | Call ShadowBufferToScreen. | ||
B9FA | RET | Return. |
Prev: B9AC | Up: Map | Next: B9FB |