Prev: B92F Up: Map Next: B984
B965: Print Pint Frame
Used by the routine at Animation_BarMaid.
Input
HL Screen buffer address for drawing
Draws the pint glass to the screen at the location provided by HL.
pint-frame
Print_Pint_Frame B965 LD B,$10 Set a counter in B for the height of the graphic (10).
B967 LD DE,$CA54 DE=Graphics_Pint.
Print_Pint_Frame_Loop B96A LD A,(HL) Fetch the current byte in the screen buffer and stash it on the stack.
B96B PUSH AF
B96C LD A,(DE) Fetch a byte from the graphic pointer in *DE and write it to the screen buffer pointer held by *HL.
B96D LD (HL),A
B96E CALL NextScreenBufferLine Call NextScreenBufferLine.
B971 INC DE Increment the graphic pointer by one.
B972 DJNZ Print_Pint_Frame_Loop Decrease the height counter by one and loop back to Print_Pint_Frame_Loop until the whole of the graphic has been drawn to the screen.
Make sure the player sees the drawn pint before removing it.
B974 HALT Halt operation (suspend CPU until the next interrupt) three times.
B975 HALT
B976 HALT
Next all the stashed bytes are returned to the screen, ready for the next frame of the animation.
B977 CALL $A8DB Call A8DB.
B97A LD B,$10 Set a counter in B for the height of the graphic (10).
Restore_Background_Loop B97C POP AF Restore the stashed byte from the stack and write it to the screen buffer pointer held by *HL.
B97D LD (HL),A
B97E CALL $A8DB Call A8DB.
B981 DJNZ Restore_Background_Loop Decrease the height counter by one and loop back to Restore_Background_Loop until all the stashed bytes have been drawn back to the screen.
B983 RET Return.
Prev: B92F Up: Map Next: B984