Prev: 99C4 Up: Map Next: 9AEE
9A7E: Redraws an object, on stage. If the object is already there then it is Xor'd out.
Used by the routine at Obj_DrawOrClearByIndex.
Input
Output
The bitmap info cache holds info based on bitmap to draw.
Obj_DrawOrClear 9A7E LD HL,Bitmap_InfoCache_Width
9A81 RES 7,(HL)
9A83 DEC HL
9A84 LD A,(HL)
9A85 RLA
9A86 RLA
9A87 RLA
9A88 AND $F8
9A8A LD (HL),A
9A8B LD L,B
9A8C LD H,$00
9A8E ADD HL,HL
9A8F LD E,L
9A90 LD D,H
9A91 ADD HL,HL
9A92 ADD HL,HL
9A93 ADD HL,HL
9A94 ADD HL,HL
9A95 ADD HL,DE
9A96 LD E,C
9A97 SRL E
9A99 SRL E
9A9B SRL E
9A9D LD D,$00
9A9F ADD HL,DE
9AA0 LD DE,Offscreen_TopLine
9AA3 ADD HL,DE
9AA4 LD DE,(Bitmap_InfoCache)
9AA8 BIT 2,C
9AAA JR NZ,Obj_DrawOrClear_2
9AAC LD BC,(Bitmap_InfoCache_Height) B = width, C = height
Obj_DrawOrClear_0 9AB0 PUSH BC
9AB1 PUSH HL
Blit mask
Obj_DrawOrClear_1 9AB2 LD A,(DE)
9AB3 XOR (HL)
9AB4 LD (HL),A
9AB5 INC DE
9AB6 INC HL
9AB7 DJNZ Obj_DrawOrClear_1
9AB9 POP HL
9ABA LD BC,$0022
9ABD ADD HL,BC
9ABE POP BC
9ABF DEC C
9AC0 JR NZ,Obj_DrawOrClear_0
9AC2 RET
Obj_DrawOrClear_2 9AC3 LD BC,(Bitmap_InfoCache_Height)
Obj_DrawOrClear_3 9AC7 PUSH BC
9AC8 PUSH HL
9AC9 EX DE,HL
9ACA XOR A
Obj_DrawOrClear_4 9ACB RRD
9ACD LD C,A
9ACE LD A,(DE)
9ACF XOR (HL)
9AD0 LD (DE),A
9AD1 LD A,C
9AD2 RLD
9AD4 LD A,C
9AD5 INC HL
9AD6 INC DE
9AD7 DJNZ Obj_DrawOrClear_4
9AD9 RLA
9ADA RLA
9ADB RLA
9ADC RLA
9ADD AND $F0
9ADF LD C,A
9AE0 LD A,(DE)
9AE1 XOR C
9AE2 LD (DE),A
9AE3 POP DE
9AE4 EX DE,HL
9AE5 LD BC,$0022
9AE8 ADD HL,BC
9AE9 POP BC
9AEA DEC C
9AEB JR NZ,Obj_DrawOrClear_3
9AED RET
Prev: 99C4 Up: Map Next: 9AEE