Prev: DA69 Up: Map Next: DB7E
DA71: Routine at DA71
Used by the routine at FindScene.
Input
IX Buildings Table
DA71 LD ($D213),A Write A to *D213.
DA74 LD (IX+$00),$01 Write 01 to *IX+00.
DA78 LD (IX+$07),A Write A to *IX+07.
DA7B LD (IX+$08),D Write D to *IX+08.
DA7E PUSH DE Stash DE on the stack.
DA7F LD D,A D=A.
DA80 LD E,$00 E=00.
DA82 CALL $DA3D Call DA3D.
DA85 LD (IX+$03),E Write E to *IX+03.
DA88 LD (IX+$04),D Write D to *IX+04.
DA8B POP DE Restore DE from the stack.
DA8C LD A,C A=C.
DA8D AND %00011111 Keep only bits 0-4.
DA8F LD (IX+$01),A Write A to *IX+01.
DA92 LD HL,$CB29 HL=Buildings_Data.
DA95 LD A,(HL) A=*HL.
DA96 INC HL Increment HL by one.
DA97 CP $FF Jump to DA95 if A is not equal to FF.
DA99 JR NZ,$DA95
DA9B DEC E Decrease E by one.
DA9C JR NZ,$DA95 Jump to DA95 until E is zero.
DA9E LD ($DB52),HL Write HL to *DB52.
DAA1 LD A,(HL) A=*HL.
DAA2 AND %11000000 Keep only bits 6-7.
DAA4 RLCA Rotate A left two positions (bits 6 to 7 are now in positions 0 to 1).
DAA5 RLCA
DAA6 CP $00 Jump to DAB1 if A is not equal to 00.
DAA8 JR NZ,$DAB1
DAAA LD HL,$C99E HL=C99E.
DAAD LD E,$06 E=06.
DAAF JR $DAC1 Jump to DAC1.
DAB1 CP $01 Jump to DABC if A is not equal to 01.
DAB3 JR NZ,$DABC
DAB5 LD HL,$C9F9 HL=C9F9.
DAB8 LD E,$07 E=07.
DABA JR $DAC1 Jump to DAC1.
DABC LD HL,$CA57 HL=CA57.
DABF LD E,$08 E=08.
DAC1 LD A,(IX+$01) A=*IX+01.
DAC4 ADD A,E A+=E.
DAC5 DEC A Decrease A by one.
DAC6 LD (IX+$02),A Write A to *IX+02.
DAC9 LD (IX+$06),E Write E to *IX+06.
DACC DEC E Decrease E by two.
DACD DEC E
DACE PUSH HL Stash HL on the stack.
DACF LD HL,($DB52) HL=*DB52.
DAD2 LD A,(HL) A=*HL.
DAD3 CP $FF Jump to DB2B if A is equal to FF.
DAD5 JP Z,$DB2B
DAD8 POP HL Restore HL from the stack.
DAD9 INC (IX+$05) Increment *IX+05 by one.
DADC AND %00111111 Keep only bits 0-5.
DADE PUSH HL Stash HL and DE (twice) on the stack.
DADF PUSH DE
DAE0 PUSH DE
DAE1 LD D,$00 D=00.
DAE3 ADD HL,DE HL+=DE.
DAE4 DEC A Decrease A by one.
DAE5 JR NZ,$DAE3 Jump to DAE3 until A is zero.
DAE7 POP DE Restore DE from the stack.
DAE8 PUSH BC Stash BC on the stack.
DAE9 LD A,(HL) A=*HL.
DAEA CP $0E Jump to DAF7 if A is higher than 0E.
DAEC JR NC,$DAF7
DAEE CP $09 Jump to DAF7 if A is lower than 09.
DAF0 JR C,$DAF7
DAF2 CALL $DB43 Call DB43.
DAF5 JR $DAFC Jump to DAFC.
DAF7 LD A,$11 A=11.
DAF9 CALL $DB43 Call DB43.
DAFC LD A,(HL) A=*HL.
DAFD CALL $DB43 Call DB43.
DB00 INC HL Increment HL by one.
DB01 DEC E Decrease E by one.
DB02 JR NZ,$DAFC Jump to DAFC until E is zero.
DB04 DEC HL Decrease HL by one.
DB05 LD A,(HL) A=*HL.
DB06 CP $0E Jump to DB13 if A is higher than 0E.
DB08 JR NC,$DB13
DB0A CP $09 Jump to DB13 if A is lower than 09.
DB0C JR C,$DB13
DB0E CALL $DB43 Call DB43.
DB11 JR $DB18 Jump to DB18.
DB13 LD A,$14 A=14.
DB15 CALL $DB43 Call DB43.
DB18 POP BC Restore BC from the stack.
DB19 LD HL,$0020 HL=0020.
DB1C ADD HL,BC HL+=BC.
DB1D LD B,H B=H.
DB1E LD C,L C=L.
DB1F POP DE Restore DE from the stack.
DB20 LD HL,($DB52) HL=*DB52.
DB23 INC HL Increment HL by one.
DB24 LD ($DB52),HL Write HL to *DB52.
DB27 POP HL Restore HL from the stack.
DB28 JP $DACE Jump to DACE.
DB2B POP HL Restore HL from the stack.
DB2C LD A,(IX+$05) A=*IX+05.
DB2F INC A Increment A by one.
DB30 LD (IX+$0A),A Write A to *IX+0A.
DB33 LD (IX+$0B),A Write A to *IX+0B.
DB36 ADD A,A A+=A.
DB37 ADD A,A A+=A.
DB38 ADD A,$0A A+=0A.
DB3A LD (IX+$0C),A Write A to *IX+0C.
DB3D LD A,$02 A=02.
DB3F LD (IX+$0D),A Write A to *IX+0D.
DB42 RET Return.
DB43 PUSH DE Stash DE on the stack.
DB44 LD E,A E=A.
DB45 LD A,($D213) A=*D213.
DB48 LD D,A D=A.
DB49 CALL $DA3D Call DA3D.
DB4C INC (IX+$09) Increment *IX+09 by one.
DB4F INC BC Increment BC by one.
DB50 POP DE Restore DE from the stack.
DB51 RET Return.
DB52 DEFW $0000
This entry point is used by the routines at E971, E982 and EF86.
DB54 LD IX,($D253) IX=D253.
DB58 LD A,($D24D) A=*Active_MonsterXPosition.
DB5B LD (IX+$01),A Write A to *IX+01.
DB5E LD (IX+$02),A Write A to *IX+02.
DB61 LD (IX+$0D),A Write A to *IX+0D.
DB64 LD (IX+$17),A Write A to *IX+17.
DB67 LD A,($D24E) A=*Active_MonsterYPosition.
DB6A LD (IX+$03),A Write A to *IX+03.
DB6D LD (IX+$0B),A Write A to *IX+0B.
DB70 LD (IX+$0C),A Write A to *IX+0C.
DB73 LD (IX+$15),A Write A to *IX+15.
DB76 LD (IX+$16),A Write A to *IX+16.
DB79 LD DE,($D253) DE=*D253.
DB7D RET Return.
Prev: DA69 Up: Map Next: DB7E