Prev: C989 Up: Map Next: CB28
C996: Process Object Display Entry
ProcessObjectDisplayEntry C996 PUSH IY
C998 PUSH BC
C999 CALL ProcessObjectDisplayEntry_1
C99C POP BC
C99D POP IY
C99F JR C,ProcessObjectDisplayEntry_0
C9A1 JP Z,ProcessDisplayWithLocationCheck
C9A4 OR $01
C9A6 RET
ProcessObjectDisplayEntry_0 C9A7 PUSH HL
C9A8 PUSH BC
C9A9 LD HL,($9FD9)
C9AC LD B,$01
C9AE CALL AllocateMemoryAndStoreCharacter
C9B1 POP BC
C9B2 POP HL
C9B3 LD IX,($9FDB)
C9B7 LD (IX+$01),L
C9BA LD (IX+$02),H
C9BD SCF
C9BE RET
ProcessObjectDisplayEntry_1 C9BF PUSH HL
C9C0 POP IY
C9C2 CALL CheckObjectVisibility
C9C5 JR NC,ProcessObjectDisplayEntry_3
C9C7 LD A,(IY+$00)
C9CA AND $20
C9CC JR Z,ProcessObjectDisplayEntry_3
C9CE LD HL,$CBBB
ProcessObjectDisplayEntry_2 C9D1 XOR A
C9D2 RET
ProcessObjectDisplayEntry_3 C9D3 CALL ProcessDisplayAction_28
C9D6 JR Z,ProcessObjectDisplayEntry_2
C9D8 CALL ProcessDisplayAction_39
C9DB JR Z,ProcessObjectDisplayEntry_2
C9DD BIT 6,(IY+$00)
C9E1 JR Z,ProcessObjectDisplayEntry_4
C9E3 LD L,(IY+$02)
C9E6 LD H,(IY+$03)
C9E9 PUSH IY
C9EB CALL SaveAndRestorePointers_0
C9EE POP IY
C9F0 JR Z,ProcessObjectDisplayEntry_2
ProcessObjectDisplayEntry_4 C9F2 LD A,($A00B)
C9F5 AND A
C9F6 JR NZ,ProcessObjectDisplayEntry_5
C9F8 OR $01
C9FA RET
ProcessObjectDisplayEntry_5 C9FB PUSH IY
C9FD LD A,(IY+$01)
CA00 RRCA
CA01 RRCA
CA02 RRCA
CA03 RRCA
CA04 AND $0F
CA06 LD L,A
CA07 LD H,$00
CA09 LD ($A01F),HL
CA0C POP HL
CA0D LD DE,$0002
CA10 ADD HL,DE
CA11 BIT 6,(IY+$00)
CA15 JR Z,ProcessObjectDisplayEntry_6
CA17 ADD HL,DE
ProcessObjectDisplayEntry_6 CA18 LD DE,$0005
CA1B BIT 4,(IY+$00)
CA1F JR Z,ProcessObjectDisplayEntry_7
CA21 ADD HL,DE
ProcessObjectDisplayEntry_7 CA22 LD A,($A00A)
CA25 LD ($C491),A
CA28 LD IX,($A013)
CA2C LD A,(IX+$0F)
CA2F LD ($C492),A
CA32 PUSH HL
CA33 PUSH IY
CA35 LD A,$01
CA37 LD ($A00C),A
CA3A CALL ProcessObjectDisplayEntry_11
CA3D POP IY
CA3F POP HL
CA40 BIT 7,(IY+$00)
CA44 JR Z,ProcessObjectDisplayEntry_8
CA46 SCF
CA47 RET
ProcessObjectDisplayEntry_8 CA48 LD A,($9FD7)
CA4B INC A
CA4C JR NZ,ProcessObjectDisplayEntry_9
CA4E LD A,($A034)
CA51 LD ($9FD7),A
ProcessObjectDisplayEntry_9 CA54 LD A,($9FD8)
CA57 INC A
CA58 JR NZ,ProcessObjectDisplayEntry_10
CA5A LD A,($A035)
CA5D LD ($9FD8),A
ProcessObjectDisplayEntry_10 CA60 XOR A
CA61 LD ($CAAE),A
CA64 CALL SaveAndRestorePointers
CA67 PUSH AF
CA68 PUSH HL
CA69 CALL ProcessObjectDisplayEntry_12
CA6C LD A,($CAAE)
CA6F AND A
CA70 CALL Z,ProcessObjectDisplayEntry_14
CA73 POP HL
CA74 POP AF
CA75 RET
This entry point is used by the routine at ProcessDisplayWithLocationCheck.
ProcessObjectDisplayEntry_11 CA76 LD A,($A033)
CA79 AND $80
CA7B CALL Z,ProcessObjectDisplay
CA7E RET
ProcessObjectDisplayEntry_12 CA7F LD A,($9860)
CA82 CALL FetchObjectDataPointer
CA85 LD A,($A009)
CA88 CP (IX+$0F)
CA8B RET Z
CA8C LD A,($A036)
CA8F PUSH AF
CA90 LD A,($9860)
CA93 LD ($A036),A
CA96 CALL ProcessObjectDisplayEntry_13
CA99 POP AF
CA9A LD ($A036),A
CA9D RET
ProcessObjectDisplayEntry_13 CA9E LD A,($DD01)
CAA1 LD HL,($DCFF)
CAA4 BIT 6,(HL)
CAA6 JP NZ,ProcessObjectDisplayWithCheck
CAA9 SET 6,(HL)
CAAB JP ProcessLocationTokenDisplay
CAAE NOP
ProcessObjectDisplayEntry_14 CAAF CALL CheckCharacterID
CAB2 RET Z
CAB3 LD A,($C491)
CAB6 LD HL,$A009
CAB9 CP (HL)
CABA RET Z
CABB LD A,($A036)
CABE CALL IsCharacterTheChinaMan
CAC1 LD HL,$A009
CAC4 CP (HL)
CAC5 JR NZ,ProcessObjectDisplayEntry_15
CAC7 LD A,($A036)
CACA LD DE,$68ED
CACD CALL ProcessCharacterDisplay_CBC2
ProcessObjectDisplayEntry_15 CAD0 LD A,($A00F)
CAD3 CP $07
CAD5 RET C
CAD6 LD A,($A034)
CAD9 CALL IsCharacterTheChinaMan
CADC CP $FF
CADE JR NZ,ProcessObjectDisplayEntry_18
CAE0 LD B,(IX+$00)
CAE3 LD A,($A009)
ProcessObjectDisplayEntry_16 CAE6 CP (IX+$0F)
CAE9 JR Z,ProcessObjectDisplayEntry_17
CAEB INC IX
CAED DJNZ ProcessObjectDisplayEntry_16
CAEF RET
ProcessObjectDisplayEntry_17 CAF0 LD A,($A036)
CAF3 LD B,A
CAF4 LD A,$FF
CAF6 LD ($A036),A
CAF9 LD A,$01
CAFB LD ($5C3C),A
CAFE LD A,($A009)
CB01 CALL ProcessObjectDisplayType
CB04 CP $FF
CB06 CALL NZ,ProcessObjectDisplayEntry_11
CB09 SUB A
CB0A LD ($5C3C),A
CB0D LD A,B
CB0E LD ($A036),A
CB11 RET
ProcessObjectDisplayEntry_18 CB12 LD A,($C492)
CB15 LD HL,$A009
CB18 CP (HL)
CB19 RET Z
CB1A LD A,($A034)
CB1D LD HL,$A036
CB20 CP (HL)
CB21 RET Z
CB22 LD DE,$68ED
CB25 JP ProcessCharacterDisplay_CBC2
Prev: C989 Up: Map Next: CB28