![]() |
Routines |
| Prev: DFCC | Up: Map | Next: E0EB |
|
Used by the routines at SpecialCaseObject_LooksBasilPhipps and DispatchRoomGraphics.
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. | ||
| 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 |