Prev: E39C Up: Map Next: E3F5
E3A9: Read The Source At The Display Pointer
Used by the routine at ReadCharacterTextPointers.
Reads the display pointer and shifts it to the picture address. Always returns non-zero.
ReadSourceDisplayPointer E3A9 LD DE,($A02F) Read the display pointer.
E3AD RES 7,D
E3AF RL E
E3B1 SRA D Shift DE right one bit, keeping the sign of D.
E3B3 RR E
E3B5 OR $01
E3B7 RET Return.
Reached through the display record at E3EA, dispatched by DispatchLookedUpHandlerThird.
E3B8 CALL CheckCharacterForRoomGraphics Return if the room display parameter does not apply.
E3BB RET Z
E3BC LD A,($A036) Read the current character.
E3BF PUSH AF
E3C0 LD A,($A034) Call FindCharacterScriptEntry to find character script entry.
E3C3 INC A
E3C4 LD ($A036),A
E3C7 CALL FindCharacterScriptEntry
E3CA EX AF,AF' Record the current character.
E3CB POP AF
E3CC LD ($A036),A
E3CF EX AF,AF' Go to ReadSourceDisplayPointer_TestActionSucceeded if FindCharacterScriptEntry found no script entry for this character.
E3D0 JR Z,ReadSourceDisplayPointer_TestActionSucceeded
E3D2 LD A,(IX+$03) Take the object id at offset 03 and call FetchObjectDataPointer to look it up.
E3D5 CALL FetchObjectDataPointer
E3D8 LD IY,($A017) Read the current character record.
E3DC LD A,(IX+$04) Read the attribute type.
None of the bits 70 are set in the tested state?
E3DF AND (IY+$04) Return zero through ParseInputNumber_ReturnZero if none of the bits 70 are set in the tested state.
E3E2 AND $70
E3E4 JP Z,ParseInputNumber_ReturnZero
ReadSourceDisplayPointer_TestActionSucceeded E3E7 OR %00000001 Reset the zero flag.
E3E9 RET Return.
E3EA DEFB $78,$20,$B8,$E3,$90,$40,$28,$00 Display record read by ProcessDisplayRecord: flags 78 value 20 handler E3B8, parameters 90 40 28 00 00.
E3F2 DEFB $00
Run by CA64 after the display record at E3EA.
ReadSourceDisplayPointer_CurrentCharacterRecord E3F3 JR CheckCharacterForRoomGraphics_CharacterRecord Store the current room on the character from CheckCharacterForRoomGraphics_CharacterRecord.
Prev: E39C Up: Map Next: E3F5