| Dun Darach | Routines |
| Prev: 7DCB | Up: Map |
|
Used by the routines at Room_Initialise and Skar_View.
|
|||||||
| Path_Find | 7DD4 | XOR A | |||||
| 7DD5 | LD (PathFound_IndexCount),A | ||||||
|
Get correct position based on compass.
|
|||||||
| 7DD8 | LD DE,(Coords_NS) | ||||||
| 7DDC | LD HL,(Coords_EW) | ||||||
| 7DDF | LD A,(Camera_Compass) | Check to E/W compass. | |||||
| 7DE2 | AND $01 | ||||||
| 7DE4 | JR NZ,Path_Find_0 | ||||||
| 7DE6 | LD IX,(CurrentRoom_Ptr_Path_EW) | N/W facing. | |||||
| 7DEA | JR Path_Find_1 | ||||||
| Path_Find_0 | 7DEC | LD IX,(CurrentRoom_Ptr_Path_NS) | E/W facing, swap round coords. | ||||
| 7DF0 | EX DE,HL | ||||||
| Path_Find_1 | 7DF1 | LD A,(Flag_DoorEntry) | |||||
| 7DF4 | AND A | ||||||
| 7DF5 | JR Z,Path_Find_4 | ||||||
| 7DF7 | LD A,(Camera_Compass) | ||||||
| 7DFA | LD BC,$0006 | ||||||
| 7DFD | CP $02 | ||||||
| 7DFF | JR C,Path_Find_2 | ||||||
| 7E01 | LD BC,$FFFA | ||||||
| Path_Find_2 | 7E04 | LD A,(Hero_LastDirection) | |||||
| 7E07 | CP $02 | ||||||
| 7E09 | JR Z,Path_Find_3 | ||||||
| 7E0B | ADD HL,BC | ||||||
| 7E0C | JR Path_Find_4 | ||||||
| Path_Find_3 | 7E0E | AND A | |||||
| 7E0F | SBC HL,BC | ||||||
|
Find path player is on.
|
|||||||
| Path_Find_4 | 7E11 | LD C,L | |||||
| 7E12 | LD B,H | ||||||
| Path_Find_5 | 7E13 | PUSH DE | |||||
| 7E14 | LD L,(IX+$00) | Match path axis. | |||||
| 7E17 | LD H,(IX+$01) | ||||||
| 7E1A | AND A | ||||||
| 7E1B | SBC HL,DE | ||||||
| 7E1D | JR NC,Path_Find_6 | Move not next path is not same position. | |||||
| 7E1F | LD DE,$0004 | ||||||
| 7E22 | AND A | ||||||
| 7E23 | ADC HL,DE | ||||||
| 7E25 | JP M,Path_Find_8 | ||||||
| 7E28 | JR Path_Find_7 | ||||||
| Path_Find_6 | 7E2A | LD DE,$0004 | |||||
| 7E2D | SCF | ||||||
| 7E2E | SBC HL,DE | ||||||
| 7E30 | JR NC,Path_Find_9 | ||||||
| Path_Find_7 | 7E32 | LD L,(IX+$02) | See if player is within the two ends of the path. | ||||
| 7E35 | LD H,(IX+$03) | ||||||
| 7E38 | SCF | ||||||
| 7E39 | SBC HL,BC | ||||||
| 7E3B | JR NC,Path_Find_8 | ||||||
| 7E3D | LD L,(IX+$04) | ||||||
| 7E40 | LD H,(IX+$05) | ||||||
| 7E43 | AND A | ||||||
| 7E44 | SBC HL,BC | ||||||
| 7E46 | JR NC,Path_Find_11 | ||||||
|
Next path.
|
|||||||
| Path_Find_8 | 7E48 | LD HL,PathFound_IndexCount | |||||
| 7E4B | INC (HL) | ||||||
| 7E4C | LD DE,$000C | ||||||
| 7E4F | ADD IX,DE | ||||||
| 7E51 | POP DE | ||||||
| 7E52 | JR Path_Find_5 | ||||||
|
Path found, running in and out of screen.
|
|||||||
| Path_Find_9 | 7E54 | POP DE | |||||
| 7E55 | LD DE,(Coords_NS) | ||||||
| 7E59 | LD HL,(Coords_EW) | ||||||
| 7E5C | LD A,(Camera_Compass) | ||||||
| 7E5F | BIT 0,A | ||||||
| 7E61 | JR Z,Path_Find_10 | ||||||
| 7E63 | EX DE,HL | ||||||
| Path_Find_10 | 7E64 | LD (PathFound_InOut_Axis),DE | |||||
| 7E68 | LD DE,$0004 | ||||||
| 7E6B | AND A | ||||||
| 7E6C | SBC HL,DE | ||||||
| 7E6E | LD (PathFound_InOut_Start),HL | ||||||
| 7E71 | ADD HL,DE | ||||||
| 7E72 | ADD HL,DE | ||||||
| 7E73 | LD (PathFound_InOut_End),HL | ||||||
| 7E76 | LD IX,PathFound_InOut_Axis | ||||||
| 7E7A | LD (Hero_PathPtr),IX | ||||||
| 7E7E | LD (PathFound_Compass),A | ||||||
| 7E81 | JR Path_Find_13 | ||||||
|
Path found, running left and right of screen.
|
|||||||
| Path_Find_11 | 7E83 | POP DE | |||||
| 7E84 | LD (Hero_PathPtr),IX | ||||||
| 7E88 | LD A,(Camera_Compass) | ||||||
| 7E8B | LD (PathFound_Compass),A | ||||||
| 7E8E | LD (PathFound_PathPtr),IX | ||||||
| 7E92 | LD ($B16A),A | ||||||
| 7E95 | LD A,(Camera_Compass) | ||||||
| 7E98 | LD L,(IX+$00) | ||||||
| 7E9B | LD H,(IX+$01) | ||||||
| 7E9E | BIT 0,A | ||||||
| 7EA0 | JR Z,Path_Find_12 | ||||||
| 7EA2 | LD (Coords_EW),HL | ||||||
| 7EA5 | JR Path_Find_13 | ||||||
| Path_Find_12 | 7EA7 | LD (Coords_NS),HL | |||||
| Path_Find_13 | 7EAA | LD DE,$0022 | Get the ends of the path and include a margin for the width of the screen to allow for overruns when drawing the screen. | ||||
| 7EAD | LD L,(IX+$02) | ||||||
| 7EB0 | LD H,(IX+$03) | ||||||
| 7EB3 | AND A | ||||||
| 7EB4 | SBC HL,DE | ||||||
| 7EB6 | SET 7,H | ||||||
| 7EB8 | LD (PathFound_StartMargin),HL | ||||||
| 7EBB | LD L,(IX+$04) | ||||||
| 7EBE | LD H,(IX+$05) | ||||||
| 7EC1 | ADD HL,DE | ||||||
| 7EC2 | SET 7,H | ||||||
| 7EC4 | LD (PathFound_EndMargin),HL | ||||||
|
Get background data.
|
|||||||
| 7EC7 | BIT 1,A | Determine which background to use based on camera direction. | |||||
| 7EC9 | JR NZ,Path_Find_14 | ||||||
| 7ECB | LD L,(IX+$06) | North / East background. | |||||
| 7ECE | LD H,(IX+$07) | ||||||
| 7ED1 | JR Path_Find_15 | ||||||
| Path_Find_14 | 7ED3 | LD L,(IX+$08) | South / West background. | ||||
| 7ED6 | LD H,(IX+$09) | ||||||
| Path_Find_15 | 7ED9 | LD (PathFound_BackgroundPtr),HL | |||||
| 7EDC | RET | ||||||
| Prev: 7DCB | Up: Map |