Prev: DFCC Up: Map Next: E0EB
E03A: Place Character
Moves the character to the room the action names.
PlaceCharacter E03A LD C,A Call FindCharacter to find character.
E03B LD A,($A036)
E03E CALL FindCharacter
Store that byte in this character's id, then read the schedule entry from the current character's record, then read the low byte of the count.
E041 LD (IY+$00),C Store the character id and read the current character record.
E044 LD IY,($A017)
E048 LD A,C Call FetchObjectDataPointer to look up that object.
E049 CALL FetchObjectDataPointer
E04C LD ($A017),IX Remember this object record and read the marker at IY+01.
E050 LD A,(IY+$01)
E053 LD (IX+$01),A Store the moved marker.
E056 LD (IY+$01),$FF Write FF at IY+01 and read the location at IY+0F.
E05A LD A,(IY+$0F)
E05D LD (IX+$0F),A Store the character attribute.
E060 LD (IY+$0F),$00 Clear the character attribute.
E064 LD B,$00
PlaceCharacter_Loop E066 INC B Go to PlaceCharacter_WritesValueEach if the object count has reached 6E.
E067 LD A,B
E068 CP $6E
E06A JR Z,PlaceCharacter_WritesValueEach
E06C CALL FetchObjectDataPointer Call FetchObjectDataPointer to look that object up.
E06F LD A,($A036) Jump back to PlaceCharacter_Loop while the current character does not match the moved marker.
E072 CP (IX+$01)
E075 JR NZ,PlaceCharacter_Loop
E077 LD (IX+$01),C Store the room in the character's destination and go back to place them.
E07A JR PlaceCharacter_Loop
Writes this value into each matching script entry, then makes it the character being processed.
PlaceCharacter_WritesValueEach E07C CALL FindCharacterScriptEntry Go to PlaceCharacter_Next if FindCharacterScriptEntry found no script entry for this character.
E07F JR Z,PlaceCharacter_Next
E081 LD (IX+$00),C Store the room in the character's location and go back to place them.
E084 JR PlaceCharacter_WritesValueEach
Read the low byte of the count, then record the result in the character being processed, then return non-zero.
PlaceCharacter_Next E086 LD A,C Record the current character.
E087 LD ($A036),A
E08A OR %00000001 Reset the zero flag.
E08C RET Return.
E08D DEFB $8D,$04 Display record read by ProcessDisplayRecord: flags 8D value 04.
E08F DEFB $87,$FD,$E5,$FD,$FF,$9B,$E0 Refresh the room from the text at E5FD, using the low byte of the location, FF and otherwise continue at E09B.
E096 DEFB $05,$FD,$9E,$6B Describe the low byte of the location with the text at 6B9E.
E09A DEFB $0B Run the nested character script.
E09B DEFB $02,$1D,$FC,$FF Copy room parameters Hidden Door, the high byte of the location, FF into the display.
E09F DEFB $0B Run the nested character script.
E0A0 DEFB $88,$00 Display record read by ProcessDisplayRecord: flags 88 value 00.
E0A2 DEFB $07,$AD,$E0,$02,$5D Refresh the room from the text at E0AD, using Inspector Lestrade, Large Rock.
E0A7 DEFB $07,$35,$E1,$FD,$FF Refresh the room from the text at E135, using the low byte of the location, FF.
E0AC DEFB $0B Run the nested character script.
E0AD DEFB $4D,$07,$1C,$E0 Display record read by ProcessDisplayRecord: flags 4D value 07 handler E01C.
Run by CA64 after the display record at E0AD.
E0B1 LD A,($A00A) Jump ahead to PlaceCharacter_0 if the current character attribute is not 58.
E0B4 CP $58
E0B6 JR NZ,PlaceCharacter_0
E0B8 LD A,($9FE1) Jump to PlaceCharacter_0 if the day of the week is not 01.
E0BB CP $01
E0BD JR NZ,PlaceCharacter_0
E0BF LD IX,($A015) Read the secondary pointer and set bit 7 of its byte at offset 06.
E0C3 SET 7,(IX+$06)
E0C7 SET 7,(IX+$05) Mark the object-attribute flag and read the character attribute.
E0CB LD A,($A00A)
E0CE LD (IX+$0F),A Store the character attribute.
E0D1 LD A,($A034) Store the moved marker.
E0D4 LD (IX+$01),A
E0D7 LD HL,$7B5A Point HL at the message at 761D+053D.
E0DA CALL PrintTextAndHandleControlCharacters Call PrintTextAndHandleControlCharacters to print the message.
PlaceCharacter_0 E0DD OR %00000001 Reset the zero flag.
E0DF RET Return.
E0E0 DEFB $88,$00 Display record read by ProcessDisplayRecord: flags 88 value 00.
E0E2 DEFB $07,$35,$E1,$FD,$FF Refresh the room from the text at E135, using the low byte of the location, FF.
E0E7 DEFB $03,$EB,$E0 Show the message at E0EB.
E0EA DEFB $0B Run the nested character script.
Prev: DFCC Up: Map Next: E0EB