Prev: BA13 Up: Map Next: BBE5
BA20: Process Character Display
Used by the routine at ProcessScriptDisplay.
ProcessCharacterDisplay BA20 LD A,($A036)
BA23 LD HL,$BA67
BA26 CP $03
BA28 JR Z,ProcessCharacterDisplay_0
BA2A LD HL,$BB67
BA2D CP $02
BA2F JR NZ,ProcessCharacterDisplay_1
ProcessCharacterDisplay_0 BA31 CALL ProcessCharacterDisplay_2
ProcessCharacterDisplay_1 BA34 LD A,$01
BA36 POP HL
BA37 POP IY
BA39 POP IX
BA3B AND A
BA3C SCF
BA3D RET
ProcessCharacterDisplay_2 BA3E PUSH IX
BA40 XOR A
BA41 LD ($9FEB),A
BA44 LD E,(IX+$05)
BA47 LD D,(IX+$06)
BA4A PUSH DE
BA4B PUSH DE
BA4C POP IY
BA4E CALL JumpToHandler
BA51 POP IX
BA53 PUSH AF
BA54 CALL MoveIXToHLAndJump
BA57 POP AF
BA58 POP IX
BA5A PUSH AF
BA5B CALL CopyPointerToStack
BA5E POP AF
BA5F RET
BA60 NOP
BA61 NOP
BA62 NOP
BA63 NOP
BA64 NOP
BA65 NOP
BA66 NOP
BA67 LD ($BA60),A
BA6A LD ($BA61),A
ProcessCharacterDisplay_3 BA6D CALL CalculateObjectPointerOffset
BA70 JP C,ProcessCharacterDisplay_22
BA73 JR Z,ProcessCharacterDisplay_7
BA75 CALL SetObjectTablePointer
BA78 JR NZ,ProcessCharacterDisplay_5
BA7A LD A,$01
ProcessCharacterDisplay_4 BA7C CALL ProcessCharacterDisplay_14
BA7F LD ($BA65),IX
BA83 JR ProcessCharacterDisplay_8
ProcessCharacterDisplay_5 BA85 CALL SearchObjectTable
BA88 JR NZ,ProcessCharacterDisplay_6
BA8A LD A,$02
BA8C BIT 5,(IX+$03)
BA90 JR NZ,ProcessCharacterDisplay_4
BA92 CALL GetCharacterAttribute
BA95 CP $32
BA97 LD A,$03
BA99 JR C,ProcessCharacterDisplay_4
BA9B JR ProcessCharacterDisplay_7
ProcessCharacterDisplay_6 BA9D CALL GetCharacterAttribute
BAA0 CP $46
BAA2 LD A,$04
BAA4 JR C,ProcessCharacterDisplay_4
ProcessCharacterDisplay_7 BAA6 CALL $AEA9
BAA9 JR NZ,ProcessCharacterDisplay_3
ProcessCharacterDisplay_8 BAAB LD A,($BA60)
BAAE AND A
BAAF JP Z,ProcessCharacterDisplay_13
BAB2 LD A,($BA61)
BAB5 AND A
BAB6 JR Z,ProcessCharacterDisplay_12
BAB8 LD IX,$9FF6
ProcessCharacterDisplay_9 BABC CALL FetchObjectPointerFromStack
BABF JR Z,ProcessCharacterDisplay_10
BAC1 LD A,($BA62)
BAC4 CP (IX+$00)
BAC7 JR NZ,ProcessCharacterDisplay_9
BAC9 LD A,($BA63)
BACC CP (IX+$01)
BACF JR NZ,ProcessCharacterDisplay_9
BAD1 LD A,($BA64)
BAD4 CP (IX+$02)
BAD7 JR NZ,ProcessCharacterDisplay_9
BAD9 PUSH IY
BADB PUSH IX
BADD POP DE
BADE LD IY,$9FF4
BAE2 CALL IncrementPointerAndCompare
BAE5 LD A,(IX-$02)
BAE8 LD (IY-$02),A
BAEB LD A,(IX-$01)
BAEE LD (IY-$01),A
BAF1 POP IY
BAF3 JR ProcessCharacterDisplay_11
ProcessCharacterDisplay_10 BAF5 LD A,$05
BAF7 CALL AllocateMemory
ProcessCharacterDisplay_11 BAFA LD A,($BA62)
BAFD LD HL,($BA63)
BB00 LD (IX+$00),A
BB03 LD (IX+$01),L
BB06 LD (IX+$02),H
BB09 LD HL,($9FF4)
BB0C LD ($9FF4),IX
BB10 LD (IX-$02),L
BB13 LD (IX-$01),H
ProcessCharacterDisplay_12 BB16 LD A,($BA60)
BB19 CP $01
BB1B JR Z,ProcessCharacterDisplay_15
BB1D CALL GetCharacterAttribute
BB20 CP $19
BB22 JR C,ProcessCharacterDisplay_13
BB24 LD IX,$BA62
BB28 CALL ProcessObjectPointer
BB2B JR NZ,ProcessCharacterDisplay_13
BB2D LD A,C
BB2E PUSH BC
BB2F CALL PointToObjectAttributeByte
BB32 POP AF
BB33 PUSH HL
BB34 CALL PointToObjectAttributeByte
BB37 PUSH HL
BB38 LD HL,$6F62
BB3B CALL PrintTextAndHandleControlCharacters
BB3E RET
ProcessCharacterDisplay_13 BB3F LD HL,$6F54
BB42 CALL PrintTextAndHandleControlCharacters
BB45 RET
ProcessCharacterDisplay_14 BB46 PUSH AF
BB47 LD A,$01
BB49 LD ($BA61),A
BB4C POP AF
BB4D LD ($BA60),A
BB50 LD HL,$BA19
BB53 LD DE,$BA62
BB56 LD BC,$0003
BB59 LDIR
BB5B RET
ProcessCharacterDisplay_15 BB5C LD IX,($BA65)
BB60 LD L,(IX+$03)
BB63 LD H,(IX+$04)
BB66 JP (HL)
BB67 LD ($BA1D),A
BB6A LD ($BA1C),A
ProcessCharacterDisplay_16 BB6D CALL CalculateObjectPointerOffset
BB70 JP C,ProcessCharacterDisplay_22
BB73 CALL CheckObjectAttribute
BB76 JR Z,ProcessCharacterDisplay_17
BB78 LD HL,$BA1C
BB7B INC (HL)
ProcessCharacterDisplay_17 BB7C CALL $AEA9
BB7F JR NZ,ProcessCharacterDisplay_16
BB81 LD A,($BA1C)
BB84 AND A
BB85 JR NZ,ProcessCharacterDisplay_18
BB87 LD HL,$725F
BB8A CALL PrintTextAndHandleControlCharacters
BB8D RET
ProcessCharacterDisplay_18 BB8E LD A,($BA1D)
BB91 AND A
BB92 JR Z,ProcessCharacterDisplay_24
BB94 LD IX,($BA1E)
BB98 PUSH IX
BB9A CALL AdvancePointerAndCheckBit
ProcessCharacterDisplay_19 BB9D LD A,(IX+$03)
BBA0 AND $C0
BBA2 CP $80
BBA4 JR Z,ProcessCharacterDisplay_20
BBA6 BIT 3,(IX+$03)
BBAA JR NZ,ProcessCharacterDisplay_20
BBAC CALL ProcessEntryWithCounter
BBAF JR ProcessCharacterDisplay_19
ProcessCharacterDisplay_20 BBB1 POP IX
BBB3 JR NZ,ProcessCharacterDisplay_23
BBB5 LD HL,$7295
ProcessCharacterDisplay_21 BBB8 PUSH IX
BBBA CALL PrintTextAndHandleControlCharacters
BBBD RET
ProcessCharacterDisplay_22 BBBE LD HL,$7243
BBC1 JP PrintTextAndHandleControlCharacters
ProcessCharacterDisplay_23 BBC4 LD HL,$72A6
BBC7 JR ProcessCharacterDisplay_21
ProcessCharacterDisplay_24 BBC9 CALL ProcessGameStatusEntries
BBCC CALL ProcessGameStatusEntriesAlternate
BBCF LD A,B
BBD0 AND A
BBD1 JR NZ,PrintTextBasedOnFlag
BBD3 CALL ProcessGameStatusEntriesWithCounter
BBD6 AND A
BBD7 JR Z,ProcessCharacterDisplay_25
BBD9 LD HL,$72BD
BBDC JR ProcessCharacterDisplay_21
ProcessCharacterDisplay_25 BBDE LD HL,$727E
BBE1 CALL PrintTextAndHandleControlCharacters
BBE4 RET
Prev: BA13 Up: Map Next: BBE5