Prev: 9394 Up: Map Next: 9806
939A: Routine at 939A
Input
IX Path Data (Link List Node)
_939a 939A LD BC,$0024 Width of camera view. Used to test distances.
939D CALL Path_InGivenRange See if data is within the viewable area.
93A0 JR Z,_939a_0
93A2 LD (IX+$02),$00
93A6 RET
_939a_0 93A7 ADD HL,BC Get back difference between data and position.
93A8 LD A,L
93A9 LD HL,_9391_data
93AC LD B,(IX+$0C)
93AF RLC B
93B1 JR NZ,_939a_1
93B3 INC B
_939a_1 93B4 LD (HL),B
93B5 CP $14
93B7 JR C,_939a_2
93B9 SET 5,(HL)
_939a_2 93BB CP $0B
93BD JR NC,_939a_3
93BF SET 6,(HL)
_939a_3 93C1 LD A,($C3CE)
93C4 CP $61
93C6 JR Z,_939a_4
93C8 CP $67
93CA JR NZ,_939a_5
_939a_4 93CC SET 7,(HL)
_939a_5 93CE LD A,(IX+$0D)
93D1 LD ($9393),A
93D4 AND A
93D5 JR NZ,_939a_6
93D7 SET 4,(HL)
_939a_6 93D9 CP $06
93DB JR NZ,_939a_7
93DD SET 3,(HL)
_939a_7 93DF INC HL
93E0 LD (HL),$00
93E2 LD A,($BD1D)
93E5 AND A
93E6 JR Z,_939a_8
93E8 LD A,($BD1E)
93EB CP (IX+$02)
93EE JR NZ,_939a_8
93F0 SET 1,(HL)
_939a_8 93F2 LD A,(IX+$0F)
93F5 AND A
93F6 JR Z,_939a_9
93F8 SET 2,(HL)
_939a_9 93FA EX DE,HL
93FB LD A,(IX+$02)
93FE LD ($BD4C),A
9401 LD C,A
9402 LD B,$00
9404 LD HL,(Handle_Lockers)
9407 ADD HL,BC
9408 LD (Locker_Ptr),HL
940B EX DE,HL
940C BIT 7,(IX+$0E)
9410 JR Z,_939a_10
9412 EX DE,HL
9413 DEC HL
9414 LD A,(HL)
9415 DEC HL
9416 CP (HL)
9417 EX DE,HL
9418 JR Z,_939a_10
941A SET 0,(HL)
_939a_10 941C LD A,(IX+$10)
941F AND A
9420 JR Z,_939a_11
9422 SET 3,(HL)
_939a_11 9424 LD A,(IX+$02)
9427 CP $03
9429 JR NZ,_939a_12
942B LD DE,(Locker_Ptr)
942F LD A,(DE)
9430 AND A
9431 JR NZ,_939a_12
9433 SET 4,(HL)
_939a_12 9435 LD A,(IX+$0E)
9438 AND $7F
943A LD E,$01
943C CP $09
943E JR Z,_939a_13
9440 LD E,$07
9442 CP $08
9444 JR Z,_939a_13
9446 LD E,A
_939a_13 9447 LD A,E
9448 RLCA
9449 RLCA
944A RLCA
944B RLCA
944C RLCA
944D OR (HL)
944E LD (HL),A
944F LD DE,(_9391_data)
_9453 9453 LD HL,9295_Data
_939a_14 9456 LD A,E
9457 AND (HL)
9458 CP (HL)
9459 INC HL
945A JR NZ,_939a_15
945C LD A,D
945D AND (HL)
945E CP (HL)
945F JR Z,_939a_16
_939a_15 9461 INC HL
9462 INC HL
9463 INC HL
9464 JR _939a_14
_939a_16 9466 INC HL
9467 LD A,(HL)
9468 AND $03
946A LD (IX+$0C),A
946D LD A,(IX+$0D)
9470 BIT 2,(HL)
9472 JR Z,_939a_17
9474 LD A,$06
_939a_17 9476 BIT 3,(HL)
9478 JR Z,_939a_18
947A XOR A
_939a_18 947B BIT 0,(HL)
947D JR Z,_939a_19
947F CP $06
9481 JR Z,_939a_19
9483 INC A
_939a_19 9484 BIT 1,(HL)
9486 JR Z,_939a_20
9488 AND A
9489 JR Z,_939a_20
948B DEC A
_939a_20 948C LD (IX+$0D),A
948F BIT 4,(HL)
9491 JR Z,_939a_21
9493 LD (IX+$0F),$01
_939a_21 9497 BIT 6,(HL)
9499 JR Z,_939a_22
949B LD (IX+$0F),$00
_939a_22 949F BIT 5,(HL)
94A1 CALL NZ,_922c
94A4 BIT 7,(HL)
94A6 CALL NZ,Locker_DisplayMsg
94A9 INC HL
94AA LD B,(HL)
94AB BIT 0,B
94AD JR Z,_939a_23
94AF LD (IX+$10),$0E
_939a_23 94B3 BIT 1,B
94B5 JR Z,_939a_24
94B7 DEC (IX+$10)
_939a_24 94BA BIT 2,B
94BC JR Z,_939a_25
94BE LD A,$03
94C0 LD ($BD2C),A
_939a_25 94C3 BIT 3,B
94C5 JR Z,_939a_26
94C7 LD A,$FF
94C9 LD ($BD2C),A
_939a_26 94CC BIT 4,B
94CE JR Z,_939a_27
94D0 LD A,($BD1D)
94D3 AND $7F
94D5 LD (IX+$0F),A
_939a_27 94D8 LD A,(IX+$0F)
94DB BIT 5,B
94DD JR NZ,_939a_28
94DF XOR A
94E0 BIT 6,B
94E2 JR Z,_939a_29
_939a_28 94E4 LD HL,(Locker_Ptr)
94E7 LD (HL),A
_939a_29 94E8 BIT 7,B
94EA JR Z,_939a_31
94EC LD HL,(Locker_Ptr)
94EF LD A,(HL)
94F0 CP $13
94F2 JR Z,_939a_30
94F4 CP $01
94F6 JR NZ,_939a_31
_939a_30 94F8 CALL Gun_ChargeUnit
_939a_31 94FB LD A,(IX+$0E)
94FE AND $7F
9500 CP $04
9502 JR Z,_939a_32
9504 CP $07
9506 JR Z,_939a_32
9508 LD A,($BD1D)
950B AND A
950C JR NZ,_939a_32
950E LD A,($9393)
9511 CP (IX+$0D)
9514 RET Z
_939a_32 9515 LD A,(IX+$0E)
9518 CALL $A786
951B CALL $9067
951E LD HL,_5b00_buffer
9521 LD (Bitmap_Table),HL
9524 LD A,$83
9526 LD ($C58E),A
9529 LD A,$04
952B LD ($C58F),A
952E LD A,$01
9530 JP $B288
9533 LD BC,$0021
9536 LD A,(IX+$0B)
9539 CP $A0
953B JR Z,_939a_33
953D LD BC,$0022
_939a_33 9540 CALL Path_InGivenRange
9543 LD A,$01
9545 JP Z,$B288
9548 LD (IX+$02),$00
954C RET
954D NOP
_939a_34 954E LD BC,$0004
9551 LD DE,$C588
9554 LDIR
9556 LD A,(IX+$0D)
9559 LD L,(IX+$05)
955C LD H,(IX+$06)
955F LD E,(IX+$07)
9562 LD D,(IX+$08)
9565 BIT 0,A
9567 JR NZ,_939a_35
9569 EX DE,HL
956A LD BC,($C58A)
956E AND A
956F SBC HL,BC
9571 JR NZ,_939a_40
9573 LD BC,($C588)
9577 JR _939a_36
_939a_35 9579 LD BC,($C588)
957D AND A
957E SBC HL,BC
9580 JR NZ,_939a_40
9582 LD BC,($C58A)
_939a_36 9586 LD L,C
9587 LD H,B
9588 CP $01
958A JR Z,_939a_37
958C CP $02
958E JR Z,_939a_37
9590 EX DE,HL
_939a_37 9591 AND A
9592 SBC HL,DE
9594 JR C,_939a_40
9596 LD DE,$0005
9599 SBC HL,DE
959B JR NC,_939a_40
959D BIT 0,A
959F JR Z,_939a_38
95A1 LD (IX+$07),C
95A4 LD (IX+$08),B
95A7 JR _939a_39
_939a_38 95A9 LD (IX+$05),C
95AC LD (IX+$06),B
_939a_39 95AF LD (IX+$02),$04
95B3 LD (IX+$0F),$01
95B7 OR $01
95B9 RET
_939a_40 95BA XOR A
95BB RET
_939a_41 95BC LD (Bitmap_Table),HL
95BF LD DE,$000A
95C2 ADD HL,DE
95C3 LD A,(Level_Char)
95C6 CP (HL)
95C7 RET NZ
95C8 LD DE,$FFF9
95CB ADD HL,DE
95CC LD A,(IX+$0D)
95CF XOR (HL)
95D0 RRCA
95D1 RET C
95D2 INC HL
95D3 INC HL
95D4 CALL _939a_34
95D7 RET Z
95D8 LD HL,(Bitmap_Table)
95DB LD DE,$0013
95DE ADD HL,DE
95DF SET 0,(HL)
95E1 RET
_939a_42 95E2 LD A,($C3CE)
95E5 AND A
95E6 RET Z
95E7 LD HL,$C3D8
95EA LD A,(Level_Char)
95ED CP (HL)
95EE RET NZ
95EF DEC HL
95F0 LD A,(HL)
95F1 CP $24
95F3 RET C
95F4 LD HL,$C3CF
95F7 LD A,(IX+$0D)
95FA XOR (HL)
95FB RRCA
95FC RET C
95FD LD HL,$C3D3
9600 CALL _939a_34
9603 RET Z
9604 LD A,$6A
9606 LD ($C3CE),A
9609 XOR A
960A LD ($C3D0),A
960D RET
_939a_43 960E LD A,($C3DE)
9611 AND A
9612 RET Z
9613 LD A,(IX+$0D)
9616 LD L,(IX+$05)
9619 LD H,(IX+$06)
961C LD E,(IX+$07)
961F LD D,(IX+$08)
9622 LD BC,($C3E3)
9626 BIT 0,A
9628 JR NZ,_939a_44
962A EX DE,HL
_939a_44 962B CP $03
962D JR Z,_939a_45
962F CP $00
9631 JR Z,_939a_45
9633 DEC BC
9634 DEC BC
9635 DEC BC
9636 DEC BC
9637 LD L,C
9638 LD H,B
9639 AND A
963A SBC HL,DE
963C RET C
963D LD DE,$0005
9640 SBC HL,DE
9642 RET NC
9643 JR _939a_46
_939a_45 9645 INC BC
9646 INC BC
9647 INC BC
9648 INC BC
9649 EX DE,HL
964A AND A
964B SBC HL,BC
964D RET C
964E LD DE,$0005
9651 SBC HL,DE
9653 RET NC
_939a_46 9654 BIT 0,A
9656 JR Z,_939a_47
9658 LD (IX+$07),C
965B LD (IX+$08),B
965E JR _939a_48
_939a_47 9660 LD (IX+$05),C
9663 LD (IX+$06),B
_939a_48 9666 LD (IX+$02),$04
966A LD (IX+$0F),$01
966E LD A,$13
9670 CALL Obj_CarriedSearch
9673 RET NZ
9674 LD A,(Stat_ResetGame)
9677 AND A
9678 RET NZ
9679 LD HL,$C3DE
967C LD A,(HL)
967D CP $04
967F JR NC,_939a_49
9681 LD (HL),$04
9683 XOR A
9684 LD ($BD2C),A
9687 RET
_939a_49 9688 LD (IX+$02),$00
968C RET
_939a_50 968D LD HL,(PathPtr)
9690 LD A,(IX+$0D)
9693 CP $00
9695 JR Z,_939a_51
9697 CP $03
9699 JR Z,_939a_51
969B LD DE,$0004
969E ADD HL,DE
969F LD BC,$0002
96A2 JR _939a_52
_939a_51 96A4 INC HL
96A5 INC HL
96A6 LD BC,$FFFE
_939a_52 96A9 LD E,(HL)
96AA INC HL
96AB LD D,(HL)
96AC EX DE,HL
96AD ADD HL,BC
96AE LD C,L
96AF LD B,H
96B0 LD E,(IX+$07)
96B3 LD D,(IX+$08)
96B6 BIT 0,A
96B8 JR NZ,_939a_53
96BA LD E,(IX+$05)
96BD LD D,(IX+$06)
_939a_53 96C0 CP $01
96C2 JR Z,_939a_54
96C4 CP $02
96C6 JR Z,_939a_54
96C8 EX DE,HL
_939a_54 96C9 AND A
96CA SBC HL,DE
96CC JR C,_939a_55
96CE LD DE,$0006
96D1 SBC HL,DE
96D3 RET NC
_939a_55 96D4 BIT 0,A
96D6 JR Z,_939a_56
96D8 LD (IX+$07),C
96DB LD (IX+$08),B
96DE JR _939a_57
_939a_56 96E0 LD (IX+$05),C
96E3 LD (IX+$06),B
_939a_57 96E6 LD (IX+$02),$04
96EA LD (IX+$0F),$01
96EE LD A,$13
96F0 CALL Obj_CarriedSearch
96F3 RET NZ
96F4 LD HL,(PathPtr)
96F7 LD DE,($BE1F)
96FB AND A
96FC SBC HL,DE
96FE RET NZ
96FF LD HL,$BE1E
9702 LD A,(Level_Char)
9705 CP (HL)
9706 RET NZ
9707 DEC HL
9708 LD A,(HL)
9709 CP (IX+$0D)
970C RET NZ
970D DEC HL
970E LD A,(HL)
970F AND A
9710 RET Z
9711 DEC (HL)
9712 RET NZ
This entry point is used by the routine at 9880.
_939a_58 9713 LD A,(Area_Colour)
9716 PUSH AF
9717 LD B,$64
9719 EI
971A HALT
_939a_59 971B PUSH BC
971C LD A,(Area_Colour)
971F INC A
9720 AND $3F
9722 LD (Area_Colour),A
9725 CALL Stage_Colour
9728 POP BC
9729 DJNZ _939a_59
972B HALT
972C POP AF
972D LD (Area_Colour),A
9730 JP Stage_Colour
9733 DEC (IX+$02)
9736 LD A,(IX+$0F)
9739 AND A
973A JP NZ,_939a_70
973D LD A,(IX+$0B)
9740 LD (IX+$0C),A
9743 LD L,(IX+$05)
9746 LD H,(IX+$06)
9749 LD E,(IX+$07)
974C LD D,(IX+$08)
974F LD BC,$0004
9752 LD A,(IX+$0D)
9755 AND A
9756 JR NZ,_939a_60
9758 AND A
9759 SBC HL,BC
975B JR _939a_63
_939a_60 975D DEC A
975E JR NZ,_939a_61
9760 EX DE,HL
9761 ADD HL,BC
9762 EX DE,HL
9763 JR _939a_63
_939a_61 9765 DEC A
9766 JR NZ,_939a_62
9768 ADD HL,BC
9769 JR _939a_63
_939a_62 976B EX DE,HL
976C AND A
976D SBC HL,BC
976F EX DE,HL
_939a_63 9770 LD (IX+$05),L
9773 LD (IX+$06),H
9776 LD (IX+$07),E
9779 LD (IX+$08),D
977C LD A,(Stage_Compass)
977F CP (IX+$0A)
9782 RET NZ
9783 LD HL,$C3F2
9786 CALL _939a_41
9789 LD A,(IX+$0F)
978C AND A
978D RET NZ
978E LD HL,$C407
9791 CALL _939a_41
9794 LD A,(IX+$0F)
9797 AND A
9798 RET NZ
9799 CALL _939a_42
979C LD A,(IX+$0F)
979F AND A
97A0 RET NZ
97A1 CALL _939a_43
97A4 LD A,(IX+$0F)
97A7 AND A
97A8 RET NZ
97A9 CALL _939a_50
This entry point is used by the routine at 9806.
_939a_64 97AC LD A,(Stage_Compass)
97AF BIT 0,A
97B1 JR Z,_939a_65
97B3 LD E,(IX+$05)
97B6 LD D,(IX+$06)
97B9 LD HL,(Position_NS)
97BC JR _939a_66
_939a_65 97BE LD E,(IX+$07)
97C1 LD D,(IX+$08)
97C4 LD HL,(Position_EW)
_939a_66 97C7 BIT 1,A
97C9 JR NZ,_939a_67
97CB EX DE,HL
_939a_67 97CC AND A
97CD SBC HL,DE
97CF PUSH AF
97D0 LD DE,$0020
97D3 ADD HL,DE
97D4 SRL H
97D6 RR L
97D8 LD DE,$6908
97DB ADD HL,DE
97DC DEC HL
97DD LD A,(IX+$0E)
97E0 LD (HL),A
97E1 INC HL
97E2 LD (HL),A
97E3 POP AF
97E4 LD A,$80
97E6 JR NC,_939a_68
97E8 XOR A
_939a_68 97E9 PUSH AF
97EA LD L,(IX+$0B)
97ED CALL Bitmap_GetData
97F0 POP AF
97F1 XOR (HL)
97F2 JP M,_939a_69
97F5 LD L,(IX+$0B)
97F8 CALL _a345_28
_939a_69 97FB XOR A
97FC JP $B288
_939a_70 97FF CP $01
9801 JR NZ,$9812
9803 LD (IX+$0B),$4E
Prev: 9394 Up: Map Next: 9806