Prev: DA23 Up: Map Next: DA5B
DA2D: Draw Dialogue Character
Used by the routine at Continue_Bad_Tempered_Thing_Dialogue.
Draw one ROM/charset glyph for Bad Tempered Thing dialogue. HL is the destination attribute-file address; E holds the character code Thickens the bitmap (byte OR byte>>01) and points Boney's graphic layout at GraphicLayoutScript_BoneyActions while the line is shown.
Input
HL Attribute-file address for the glyph
E Character code to draw
Stash callers' registers and paint the glyph attribute.
Draw_DialogueCharacter DA2D PUSH DE Stash DE, HL and BC on the stack.
DA2E PUSH HL
DA2F PUSH BC
DA30 LD A,$47 Set the dialogue glyph attribute to bright white on black (47).
DA32 LD (HL),A
Convert the attribute address into a screen-bitmap address and locate the glyph.
DA33 LD A,H Multiply the attribute address high byte by 08.
DA34 ADD A,A
DA35 ADD A,A
DA36 ADD A,A
DA37 AND %01011011 Keep only the screen-bitmap high bits (mask 5B).
DA39 LD H,A Write the result back to H.
DA3A PUSH HL Stash HL on the stack.
DA3B EX DE,HL Swap the character code into HL, multiply it by 08, and add the character-set base at Pointer_CurrentCharacterSet to get the glyph address.
DA3C ADD HL,HL
DA3D ADD HL,HL
DA3E ADD HL,HL
DA3F LD DE,($72F9)
DA43 ADD HL,DE
DA44 POP DE Restore DE from the stack.
Copy eight thickened glyph rows to the screen.
DA45 LD B,$08 There are 08 pixel rows in a character.
Copy one thickened glyph row (byte OR byte>>01) and point Berk at talking layout GraphicLayoutScript_BoneyActions.
Draw_DialogueCharacter_CopyThickRow DA47 LD A,(HL) Copy one thickened glyph row (byte OR byte>>01) to the screen and advance.
DA48 LD C,A
DA49 SRL C
DA4B OR C
DA4C LD (DE),A
DA4D INC D
DA4E INC HL
DA4F DJNZ Draw_DialogueCharacter_CopyThickRow
DA51 LD HL,$9C8A Point Boney's graphic layout pointer (Pointer_BoneyGraphicLayout) at GraphicLayoutScript_BoneyActions.
DA54 LD ($8EF3),HL
DA57 POP BC Restore BC, HL and DE from the stack.
DA58 POP HL
DA59 POP DE
DA5A RET Return.
Prev: DA23 Up: Map Next: DA5B