Prev: DFCA Up: Map Next: E03A
DFCC: Special Case Object 06
Used by the routines at PrintObjectDescriptionText and MatchSherlockDisguise.
Looks up Basil Phipps and fails the match unless his attribute agrees with Sherlock's disguise. Run by CA64 after the display record at DFCA, from the show-message command at EF99. A non-zero return means the script step succeeded.
SpecialCaseObject_LooksBasilPhipps DFCC LD HL,$759C Call FetchObjectDataPointer to look up 06.
DFCF LD A,$06
DFD1 CALL FetchObjectDataPointer
DFD4 LD A,($A009) Print the message via PrintMessageAndInitialiseTimer if Sherlock's disguise does not match the character's attribute.
DFD7 CP (IX+$0F)
DFDA JP NZ,PrintMessageAndInitialiseTimer
DFDD LD HL,$75D2 Take the message at 75D2 and print it via PrintMessageAndInitialiseTimer.
DFE0 JP PrintMessageAndInitialiseTimer
Reached through the display record at DFEA, dispatched by DispatchLookedUpHandlerThird.
DFE3 LD A,($A036) Read the character being processed, compare it with Sherlock (64), and go to SpecialCaseObject_LooksBasilPhipps_0, which returns zero through ParseInputNumber_ReturnZero when they differ.
DFE6 CP $64
DFE8 JR SpecialCaseObject_LooksBasilPhipps_0
DFEA DEFB $47,$10,$E3,$DF Display record read by ProcessDisplayRecord: flags 47 value 10 handler DFE3.
Run by CA64 after the display record at DFEA.
DFEE JR SpecialCaseObject_LooksBasilPhipps_Next Go to SpecialCaseObject_LooksBasilPhipps_Next.
DFF0 DEFB $48,$10,$1C,$E0 Display record read by ProcessDisplayRecord: flags 48 value 10 handler E01C.
Run by CA64 after the display record at DFF0.
DFF4 LD A,$64 Place character 64 from SpecialCaseObject_LooksBasilPhipps_2.
DFF6 JR SpecialCaseObject_LooksBasilPhipps_2
Reached through the display record at E003, dispatched by DispatchLookedUpHandlerThird.
DFF8 LD A,($A036) Read the character being processed and compare it with 01.
DFFB CP $01
SpecialCaseObject_LooksBasilPhipps_0 DFFD JP NZ,ParseInputNumber_ReturnZero Return zero through ParseInputNumber_ReturnZero if the character being processed is not 01.
This entry point is used by the routine at PrintObjectDescriptionText.
SpecialCaseObject_LooksBasilPhipps_1 E000 OR %00000001 Reset the zero flag.
E002 RET Return.
E003 DEFB $47,$10,$F8,$DF Display record read by ProcessDisplayRecord: flags 47 value 10 handler DFF8.
Run by CA64 after the display record at E003.
SpecialCaseObject_LooksBasilPhipps_Next E007 XOR A Call PlaceCharacter to place character.
E008 CALL PlaceCharacter
E00B LD IX,($A013) Read the current object.
SpecialCaseObject_ClearMovedMarker E00F LD (IX+$01),$00 Clear the moved marker.
E013 LD A,($A00A)
E016 LD (IX+$0F),A Store the character attribute.
E019 OR %00000001 Reset the zero flag.
E01B RET Return.
Reached through the display record at DFA7, DFF0, E022 and E0AD, dispatched by DispatchLookedUpHandlerThird.
E01C LD A,($A036) Read the character being processed, then clear the borrow so the caller can trust the result.
E01F AND A
E020 JR SpecialCaseObject_LooksBasilPhipps_0
E022 DEFB $48,$10,$1C,$E0 Display record read by ProcessDisplayRecord: flags 48 value 10 handler E01C.
Run by CA64 after the display record at E022.
E026 LD A,$01 Take 01.
SpecialCaseObject_LooksBasilPhipps_2 E028 CALL PlaceCharacter Call PlaceCharacter to place the character.
E02B LD IX,($A013) Read the current object and clear the moved marker.
E02F LD (IX+$01),$00
E033 LD (IX+$0F),$00 Clear the location at IX+0F.
E037 OR $01
E039 RET Return.
Prev: DFCA Up: Map Next: E03A