Routines |
Prev: 8D99 | Up: Map | Next: 8FAD |
Used by the routine at Action_Run.
|
||||
Action_Dir | 8D9D | CALL LocationLit | Jump to Action_Dir_0 if LocationLit reports that it is light. | |
8DA0 | JR NC,Action_Dir_0 | |||
8DA2 | LD A,$09 | |||
8DA4 | CALL GetRandomNum | |||
8DA7 | INC A | |||
8DA8 | LD ($B6E7),A | |||
This entry point is used by the routine at ActionUntie.
|
||||
Action_Dir_0 | 8DAB | LD IY,($B70C) | ||
8DAF | LD A,(IY+$01) | |||
8DB2 | CP $FF | |||
8DB4 | JR Z,Action_Dir_1 | |||
8DB6 | CALL LocateObject | |||
8DB9 | BIT 6,(IX+$07) | |||
8DBD | JR Z,Action_Dir_2 | |||
8DBF | LD (IY+$01),$FF | |||
Action_Dir_1 | 8DC3 | LD A,($B6EA) | ||
8DC6 | CALL $9CE8 | |||
8DC9 | ADD A,(IY+$02) | |||
8DCC | LD ($8D9C),A | |||
8DCF | LD A,($B6E7) | |||
8DD2 | CALL $9F08 | |||
8DD5 | CP $FF | |||
8DD7 | JR NZ,Action_Dir_3 | |||
Action_Dir_2 | 8DD9 | CALL LocationLit | Jump to 9F76 if LocationLit reports that it is light. | |
8DDC | JP NC,$9F76 | |||
8DDF | CALL $9D44 | Call 9D44. | ||
8DE2 | LD IX,$C11B | IX=Objects. | ||
8DE6 | AND A | |||
8DE7 | LD HL,$AD7D | HL="but fall and hit your head[0x15]" | ||
8DEA | RR (IX+$05) | |||
8DEE | JP NZ,PrintMsg | |||
8DF1 | LD HL,$AD8A | HL="but fall and smash your skull" | ||
8DF4 | CALL PrintMsg | Call PrintMsg. | ||
8DF7 | JP YouAreDead | Jump to YouAreDead. | ||
Action_Dir_3 | 8DFA | LD A,(IX+$02) | ||
8DFD | AND A | |||
8DFE | JR Z,Action_Dir_2 | |||
8E00 | LD ($8D9B),A | |||
8E03 | LD A,(IX+$01) | |||
8E06 | CALL Action_Dir_8 | |||
8E09 | DEC A | |||
8E0A | JR Z,Action_Dir_2 | |||
8E0C | DEC A | |||
8E0D | JR Z,Action_Dir_5 | |||
8E0F | DEC A | |||
8E10 | JR Z,Action_Dir_6 | |||
This entry point is used by the routine at 9BDC.
|
||||
Action_Dir_4 | 8E12 | CALL $9D44 | Call 9D44. | |
8E15 | LD (IY+$10),B | Update the location. | ||
8E18 | LD A,($B6EA) | A=CurrentCharacter. | ||
8E1B | CALL $9BDD | Call 9BDD. | ||
8E1E | LD A,($B6EA) | A=CurrentCharacter. | ||
8E21 | CP $00 | Return if the character is not $00 - "You". | ||
8E23 | RET NZ | |||
8E24 | LD IX,$C78E | Call IndexIdTable using the events table, looking for a match with ActionLocationID. | ||
8E28 | LD A,($8D9B) | |||
8E2B | CALL IndexIdTable | |||
8E2E | JR Z,PercentageLocation | Jump to PercentageLocation if no event was found. | ||
8E30 | LD L,(IX+$01) | Load the event from the events table. | ||
8E33 | LD H,(IX+$02) | |||
8E36 | CALL TriggerAction | Call TriggerAction to execute it. | ||
The game adds a one-time only value to the completion percentage once certain locations are reached (as long as it's not dark).
|
||||
PercentageLocation | 8E39 | CALL LocationLit | Return if LocationLit reports that it is dark. | |
8E3C | RET C | |||
8E3D | LD A,($B6EA) | A=CurrentCharacter. | ||
8E40 | AND A | Set zero flag if the character is $00 - "You". | ||
8E41 | LD A,($8D9B) | A=ActionLocationID. | ||
8E44 | JR NZ,PercentageLocation_Skip | Jump to PercentageLocation_Skip to deal with any other object. | ||
8E46 | LD HL,($8D99) | HL=ActionLocationData. | ||
8E49 | BIT 6,(HL) | If bit 6 is already (percentage is already added) set jump to YouSeeController. | ||
8E4B | JP NZ,YouSeeController | |||
8E4E | SET 6,(HL) | Set bit 6 of the location attributes, this sets that the percentage has already been added and hence will be skipped the next time this location is accessed. | ||
8E50 | PUSH AF | Stash AF on the stack. | ||
8E51 | LD IX,$8D6E | Call IndexIdTable with PercentageLocationTable. | ||
8E55 | CALL IndexIdTable | |||
8E58 | JR Z,PercentageLocation_Return | Jump to PercentageLocation_Return if there was no match. | ||
8E5A | PUSH DE | Stash DE on the stack. | ||
8E5B | LD E,(IX+$01) | DE=the percentage value to add from the match of PercentageLocationTable. | ||
8E5E | LD D,(IX+$02) | |||
8E61 | LD HL,($B6F7) | Add the percentage value to PercentageComplete and write it. | ||
8E64 | ADD HL,DE | |||
8E65 | LD ($B6F7),HL | |||
8E68 | POP DE | Restore DE from the stack. | ||
PercentageLocation_Return | 8E69 | POP AF | Restore AF from the stack. | |
PercentageLocation_Skip | 8E6A | JP YouSeePreposition | Jump to YouSeePreposition. | |
Action_Dir_5 | 8E6D | LD HL,$AE23 | HL="[0x04] is too small for you to enter". | |
8E70 | JR Action_Dir_7 | |||
Action_Dir_6 | 8E72 | LD IX,($8D99) | ||
8E76 | LD HL,$AE2E | HL="[0x04] is too full for you to{5} enter[0x15]". | ||
Action_Dir_7 | 8E79 | PUSH HL | ||
8E7A | LD L,(IX+$02) | |||
8E7D | LD H,(IX+$03) | |||
8E80 | EX (SP),HL | |||
8E81 | CALL PrintMsg | Call PrintMsg. | ||
8E84 | RET | Return. | ||
Action_Dir_8 | 8E85 | AND A | ||
8E86 | JR Z,Action_Dir_10 | |||
8E88 | CALL LocateObject | |||
8E8B | LD A,(IX+$07) | |||
8E8E | AND $28 | |||
8E90 | JR Z,Action_Dir_14 | |||
8E92 | LD A,($B6EA) | |||
8E95 | AND A | |||
8E96 | JR NZ,Action_Dir_9 | |||
8E98 | BIT 7,(IX+$04) | |||
8E9C | JR NZ,Action_Dir_14 | |||
Action_Dir_9 | 8E9E | LD A,($8D9C) | ||
8EA1 | LD B,(IX+$02) | |||
8EA4 | SUB B | |||
8EA5 | JR NC,Action_Dir_13 | |||
Action_Dir_10 | 8EA7 | LD A,($8D9B) | ||
8EAA | LD B,A | |||
8EAB | CALL LocateLocation | |||
8EAE | LD ($8D99),IX | |||
8EB2 | LD A,$FF | |||
8EB4 | CP (IX+$01) | |||
8EB7 | JR Z,Action_Dir_11 | |||
8EB9 | LD A,B | |||
8EBA | CALL $9C41 | |||
8EBD | LD C,A | |||
8EBE | LD A,($8D9C) | |||
8EC1 | SUB C | |||
8EC2 | JR NC,Action_Dir_12 | |||
Action_Dir_11 | 8EC4 | XOR A | ||
8EC5 | RET | |||
Action_Dir_12 | 8EC6 | LD A,$03 | ||
8EC8 | AND A | |||
8EC9 | RET | |||
Action_Dir_13 | 8ECA | LD A,$02 | ||
8ECC | AND A | |||
8ECD | RET | |||
Action_Dir_14 | 8ECE | LD A,$01 | ||
8ED0 | AND A | |||
8ED1 | RET | |||
Action_Dir_15 | 8ED2 | PUSH IX | ||
8ED4 | CALL LocateObject | |||
Action_Dir_16 | 8ED7 | LD A,(IX+$01) | ||
8EDA | CP $FF | |||
8EDC | JR Z,Action_Dir_17 | |||
8EDE | CALL LocateObject | |||
8EE1 | BIT 5,(IX+$07) | |||
8EE5 | JR NZ,Action_Dir_16 | |||
8EE7 | OR $01 | |||
Action_Dir_17 | 8EE9 | POP IX | ||
8EEB | RET | |||
This entry point is used by the routine at A55F.
|
||||
Action_Dir_18 | 8EEC | LD A,($B6E8) | ||
8EEF | CALL LocateObject | |||
8EF2 | CALL $A5CA | |||
8EF5 | JP Z,DisplayExits_3 | |||
8EF8 | LD A,($B6EA) | |||
8EFB | CALL Action_Dir_15 | |||
8EFE | RET NZ | |||
8EFF | CALL $9F25 | |||
8F02 | CP $FF | |||
8F04 | JP Z,$9F76 | |||
8F07 | LD A,(IX+$02) | |||
8F0A | CP $00 | |||
8F0C | JP Z,$9F76 | |||
8F0F | CALL $9D44 | |||
8F12 | PUSH IX | |||
8F14 | CALL LocateLocation | |||
8F17 | BIT 7,(IX+$00) | |||
8F1B | POP IX | |||
8F1D | JR Z,Action_Dir_19 | |||
8F1F | LD IY,($B70C) | |||
8F23 | LD A,(IY+$10) | |||
8F26 | PUSH AF | |||
8F27 | LD A,(IX+$02) | |||
8F2A | LD (IY+$10),A | |||
8F2D | CALL YouSeeEntry | |||
8F30 | POP AF | |||
8F31 | LD (IY+$10),A | |||
8F34 | RET | |||
Action_Dir_19 | 8F35 | LD HL,$AE1F | HL="it is dark" | |
8F38 | JP PrintMsg | Jump to PrintMsg. | ||
This entry point is used by the routine at A55F.
|
||||
Action_Dir_20 | 8F3B | CALL $9F25 | ||
This entry point is used by the routines at Action_Enter and Action_Follow.
|
||||
Action_Dir_21 | 8F3E | CP $FF | ||
8F40 | JP Z,$9F76 | |||
8F43 | LD A,(IX+$02) | |||
8F46 | CP $00 | |||
8F48 | JP Z,$9F76 | |||
8F4B | LD A,(IX+$01) | |||
8F4E | PUSH IX | |||
8F50 | CALL Action_Dir_8 | |||
8F53 | POP IX | |||
8F55 | JP NZ,$9F76 | |||
8F58 | CALL $9D44 | |||
8F5B | LD A,(IX+$00) | |||
8F5E | LD ($B6E7),A | |||
8F61 | LD A,$FF | |||
8F63 | LD ($B6E8),A | |||
8F66 | JP Action_Dir_0 | |||
8F69 | LD IX,($B708) | |||
8F6D | LD A,($B6E9) | |||
8F70 | CP $17 | |||
8F72 | JR Z,Action_Dir_23 | |||
8F74 | CP $18 | |||
8F76 | JR Z,Action_Dir_24 | |||
Action_Dir_22 | 8F78 | LD IY,($B70A) | ||
8F7C | BIT 1,(IY+$07) | |||
8F80 | JP Z,$9F76 | |||
8F83 | BIT 2,(IX+$07) | |||
8F87 | LD A,$82 | |||
8F89 | JP NZ,DisplayExits_3 | |||
8F8C | LD HL,$924F | |||
8F8F | JP $9F4A | |||
Action_Dir_23 | 8F92 | LD A,$15 | ||
8F94 | LD IY,$C454 | |||
8F98 | JR Action_Dir_25 | |||
Action_Dir_24 | 8F9A | LD A,$16 | ||
8F9C | LD IY,$C469 | |||
Action_Dir_25 | 8FA0 | LD ($B6E9),A | ||
8FA3 | LD ($B70A),IY | |||
8FA7 | LD (IY+$01),$FF | |||
8FAB | JR Action_Dir_22 |
Prev: 8D99 | Up: Map | Next: 8FAD |