Prev: 50354 Up: Map Next: 50498
50385: Process Display Action
Used by the routines at DispatchCharacterScript, 52760 and RunSimpleAction.
Jumps ahead when bit 7 of the saved character is set, otherwise finds the object's place in the table and checks the display flag.
ProcessDisplayAction 50385 LD A,(41011) Jump ahead to LookUpDisplayRecordForMovedMarker if bit 7 of flags: Saved Character (41011) is present.
50388 BIT 7,A
50390 JP NZ,LookUpDisplayRecordForMovedMarker
Calculate object table offset.
50393 CALL CalculateObjectTableOffset Call CalculateObjectTableOffset to find the object's place in the table.
50396 PUSH HL Call ExtractObjectAttributes to extract object attributes.
50397 POP IX
50399 CALL ExtractObjectAttributes
50402 CALL CheckDisplayBitsThreeAndSeven Call CheckDisplayBitsThreeAndSeven to test bits 3 and 7 of the object attribute, then call CheckDisplayBitsTwoAndSix to test bits 2 and 6.
50405 CALL CheckDisplayBitsTwoAndSix
50408 XOR A Clear the parser.
50409 LD (40971),A
None of the bits 12 are set in the object attribute value?
50412 LD A,(40989) Go to ProcessDisplayAction_RunObjectDisplay if bit 2 and bit 3 of the object attribute are clear.
50415 AND 12
50417 JR Z,ProcessDisplayAction_RunObjectDisplay
50419 LD A,(40975) Jump to ProcessDisplayAction_Next if the display mode is not 5.
50422 CP 5
50424 JR NZ,ProcessDisplayAction_Next
50426 LD A,(41012) Jump to DispatchLookedUpHandlerThird_0 if the room display parameter is not 254.
50429 CP 254
50431 JP NZ,DispatchLookedUpHandlerThird_0
ProcessDisplayAction_Next 50434 LD A,(40976) Jump to ProcessDisplayAction_DisplayModeZero if the display mode is not 5.
50437 CP 5
50439 JR NZ,ProcessDisplayAction_DisplayModeZero
50441 LD A,(41013) Jump to DispatchLookedUpHandlerThird_0 if the room graphics parameter is not 254.
50444 CP 254
50446 JP NZ,DispatchLookedUpHandlerThird_0
ProcessDisplayAction_DisplayModeZero 50449 LD A,(40975) Jump to ProcessDisplayAction_AcceptGraphicsParameter if the display mode is zero.
50452 AND A
50453 JR Z,ProcessDisplayAction_AcceptGraphicsParameter
50455 LD A,(41012) Jump to ProcessDisplayAction_AcceptGraphicsParameter if the room display parameter is not 255.
50458 CP 255
50460 JR NZ,ProcessDisplayAction_AcceptGraphicsParameter
50462 LD B,255 Start the count at 255 so the first step is 0.
ProcessDisplayAction_Loop 50464 INC B Count one more and return if ReadDisplayModeForPicture finds the last room for this display mode.
50465 CALL ReadDisplayModeForPicture
50468 RET Z
50469 LD (41012),A Record the room display parameter.
50472 PUSH BC Call RecordResultRoomGraphics to run display action.
50473 CALL RecordResultRoomGraphics
50476 POP BC
50477 JR NZ,ProcessDisplayAction_RunObjectDisplay Go to ProcessDisplayAction_RunObjectDisplay if RecordResultRoomGraphics found a picture.
50479 JR ProcessDisplayAction_Loop This picture did not match, so try the next one from ProcessDisplayAction_Loop.
Accept the graphics parameter, and return when it is empty.
ProcessDisplayAction_AcceptGraphicsParameter 50481 CALL AcceptGraphicsParameter Go to ProcessDisplayAction_RunObjectDisplay if the graphics parameter is not accepted.
50484 JR Z,ProcessDisplayAction_RunObjectDisplay
50486 CALL RecordResultRoomGraphics_CountCountRemaining Return if the graphics count has reached its limit.
50489 RET Z
ProcessDisplayAction_RunObjectDisplay 50490 LD A,1 Set the parser flag to 1 and draw the object from ProcessObjectDisplayLogic.
50492 LD (40971),A
50495 JP ProcessObjectDisplayLogic
Prev: 50354 Up: Map Next: 50498