Prev: E3A9 Up: Map Next: E4FB
E3F5: Check The Character For Room Graphics
Used by the routine at ReadSourceDisplayPointer.
Checks the character id and returns when the room has nothing to draw. Reached through the display record at E40A, dispatched by DispatchLookedUpHandlerThird. A non-zero return means the script step succeeded.
CheckCharacterForRoomGraphics E3F5 CALL CheckFlagAndJumpToNewline Call CheckFlagAndJumpToNewline, then return if ApplyRoomDisplay returns zero.
E3F8 CALL ApplyRoomDisplay
E3FB RET Z
E3FC LD IX,($A017) Read the current character record and read the current object.
E400 LD IY,($A013)
E404 LD A,($A034) Take the room display parameter and jump back to CombineCharacterRoom.
E407 JP CombineCharacterRoom
E40A DEFB $78,$20,$F5,$E3,$90,$40,$28,$00 Display record read by ProcessDisplayRecord: flags 78 value 20 handler CheckCharacterForRoomGraphics, parameters 90 40 28 00 00.
E412 DEFB $00
This entry point is used by the routine at ReadSourceDisplayPointer.
Run by CA64 after the display record at E40A.
CheckCharacterForRoomGraphics_CharacterRecord E413 LD IY,($A017) Read the current character record.
E417 LD A,($A034)
E41A LD (IY+$01),A Store the room display parameter at IY+01.
E41D OR %00000001 Reset the zero flag.
E41F RET Return.
Reached through the display record at E432, dispatched by DispatchLookedUpHandlerThird.
E420 CALL CheckFlagAndJumpToNewline Call CheckFlagAndJumpToNewline to move to the next line when the flag is set.
E423 LD A,($A036) Read the character being processed and take the room display parameter, then call D278 to test character id range.
E426 LD HL,$A034
E429 CALL $D278
E42C JP NC,ParseInputNumber_ReturnZero Go to ParseInputNumber_ReturnZero if D278 rejects this character.
E42F OR %00000001 Reset the zero flag.
E431 RET Return.
E432 DEFB $78,$20,$20,$E4,$10,$80,$28,$00 Display record read by ProcessDisplayRecord: flags 78 value 20 handler E420, parameters 10 80 28 00 00.
E43A DEFB $00
Run by CA64 after the display record at E432.
CheckCharacterForRoomGraphics_CurrentObject E43B LD IY,($A013) Read the current object.
E43F LD A,(IY+$01) Keep the object's marker and read the current character record.
E442 LD IY,($A017)
E446 LD (IY+$01),A Store the object's marker on the character at IY+01.
E449 OR %00000001 Reset the zero flag.
E44B RET Return.
Reached through the display record at E452, dispatched by DispatchLookedUpHandlerThird.
E44C CALL CheckFlagAndJumpToNewline Check the flag at CheckFlagAndJumpToNewline and compare the character from TestCharacterAgainstRoom.
E44F JP TestCharacterAgainstRoom
E452 DEFB $EC,$00,$4C,$E4 Display record read by ProcessDisplayRecord: flags EC value 00 handler E44C.
E456 DEFB $07,$2F,$E5,$0A,$FF Refresh the room from the text at E52F, using Maid, FF.
E45B DEFB $47,$88,$E4,$FD,$FF Refresh the room from the text at E488, using the low byte of the location, FF.
E460 DEFB $57,$52,$DD,$FA,$FF,$6B,$E4 Refresh the room from the text at DD52, using the current room, FF and otherwise continue at E46B.
E467 DEFB $43,$88,$E5 Show the message at E588.
E46A DEFB $0B Run the nested character script.
E46B DEFB $C7,$FD,$E5,$FD,$FF,$81,$E4 Refresh the room from the text at E5FD, using the low byte of the location, FF and otherwise continue at E481.
E472 DEFB $C1,$0D,$81,$E4 Perform the simple action for Tricia Fender and otherwise continue at E481.
E476 DEFB $57,$84,$DD,$FD,$FF,$81,$E4 Refresh the room from the text at DD84, using the low byte of the location, FF and otherwise continue at E481.
E47D DEFB $42,$0C,$FA,$FF Copy room parameters Local Police Man, the current room, FF into the display.
E481 DEFB $0F Mark a script error and carry on.
E482 DEFB $C3,$7A,$E5,$5B,$E4 Show the message at E57A and otherwise continue at E45B.
E487 DEFB $0A Run the nested character script.
E488 DEFB $27,$00 Display record read by ProcessDisplayRecord: flags 27 value 00.
Run by CA64 after the display record at E488.
E48A LD IX,($A013) Read the current object.
E48E LD A,(IX+$0F) Record the current room.
E491 LD ($9FD6),A
E494 OR %00000001 Reset the zero flag.
E496 RET Return.
E497 DEFB $47,$24,$B0,$E4 Display record read by ProcessDisplayRecord: flags 47 value 24 handler E4B0.
Run by CA64 after the display record at E497.
E49B LD A,($A035) Read the room graphics parameter and keep it in B.
E49E LD B,A
E49F LD A,($A034) Read the room display parameter.
E4A2 LD IX,($A013) Read the current object.
E4A6 LD (IX+$01),$FF Store FF in the moved marker, then call StoreMatchedCharacterRoom to compare the room display parameter with the current character.
E4AA CALL StoreMatchedCharacterRoom
E4AD OR %00000001 Reset the zero flag.
E4AF RET Return.
Reached through the display record at E497, dispatched by DispatchLookedUpHandlerThird.
E4B0 LD IX,($A013) Read the current object.
E4B4 BIT 6,(IX+$05) Jump to CheckCharacterForRoomGraphics_Succeed if the special-description flag is clear.
E4B8 JR Z,CheckCharacterForRoomGraphics_Succeed
E4BA LD A,(IX+$0F) Read the character attribute, then call FetchLocationDataPointer to look up this room.
E4BD CALL FetchLocationDataPointer
E4C0 LD A,(IX+$09) Record the saved character.
E4C3 LD ($A033),A
CheckCharacterForRoomGraphics_Succeed E4C6 OR %00000001 Reset the zero flag.
E4C8 RET Return.
E4C9 DEFB $04,$00 Display record read by ProcessDisplayRecord: flags 04 value 00.
Run by CA64 after the display record at E4C9.
E4CB LD HL,$9C56 Point HL at SetObjectHeldMark and read the room display parameter.
E4CE LD A,($A034)
E4D1 PUSH AF
E4D2 CP $02 Jump ahead to CheckCharacterForRoomGraphics_PrintMessage if the room display parameter is 02.
E4D4 JR Z,CheckCharacterForRoomGraphics_PrintMessage
E4D6 CP $03 Jump ahead to CheckCharacterForRoomGraphics_PrintMessage if the room display parameter is 03.
E4D8 JR Z,CheckCharacterForRoomGraphics_PrintMessage
E4DA CP $04 Jump ahead to CheckCharacterForRoomGraphics_ReadCharacter if the room display parameter is not 04.
E4DC JR NZ,CheckCharacterForRoomGraphics_ReadCharacter
CheckCharacterForRoomGraphics_PrintMessage E4DE LD HL,$7611 Take the message, then call PrintTextAndHandleControlCharacters to print the message.
E4E1 CALL PrintTextAndHandleControlCharacters
E4E4 LD HL,$9C60 Take the routine at ClearObjectHeldMark.
CheckCharacterForRoomGraphics_ReadCharacter E4E7 LD A,($A036) Keep the current character, call DispatchLookedUpHandler.
E4EA PUSH AF
E4EB CALL DispatchLookedUpHandler
E4EE POP AF Restore that character from the stack.
E4EF POP BC Restore the room display parameter from the stack.
E4F0 CALL StoreMatchedCharacterRoom Call StoreMatchedCharacterRoom.
E4F3 LD HL,($DCFF) Read the record at DCFF and clear its marker.
E4F6 RES 6,(HL)
E4F8 OR %00000001 Reset the zero flag.
E4FA RET Return.
Prev: E3A9 Up: Map Next: E4FB