![]() |
Routines |
| Prev: 9EC5 | Up: Map | Next: 9F27 |
|
Used by the routine at Action_LoadGame.
|
||||
| LoadTape | 9EDB | PUSH IX | Stash IX, HL, DE and BC on the stack. | |
| 9EDD | PUSH HL | |||
| 9EDE | PUSH DE | |||
| 9EDF | PUSH BC | |||
|
Print "LOADING...Start Tape.".
|
||||
| 9EE0 | LD HL,$9EC5 | HL=Messaging_LoadingPressPlay. | ||
| 9EE3 | CALL PrintStringAndNewline | Call PrintStringAndNewline. | ||
| 9EE6 | LD IX,$9F88 | Load the starting address into IX at Table_ItemLocations. | ||
| 9EEA | LD DE,$0181 | Set the block length in DE to 0181 bytes. | ||
| 9EED | LD A,$FF | Set A to FF which indicates this is a data block. | ||
| 9EEF | SCF | Set the carry flag to indicate this is loading. | ||
| 9EF0 | CALL $0556 | Call LD_BYTES. | ||
| 9EF3 | JR C,LoadTape_0 | Jump to LoadTape_0 if the block loaded without error (carry flag set). | ||
|
Print "Status file not found.".
|
||||
| 9EF5 | LD HL,$0013 | HL=Messaging_StatusFileNotFound. | ||
|
The tape load failed.
|
||||
| 9EF8 | CALL PrintCompressedStringAndNewline | Print "Status file not found." and leave the game state unchanged. | ||
| 9EFB | JR LoadTape_Return | |||
|
There is nothing to unpack when no state bytes were saved.
|
||||
| LoadTape_0 | 9EFD | LD A,($BBD1) | Jump to LoadTape_Return if there are no saved state bytes. | |
| 9F00 | OR A | |||
| 9F01 | JR Z,LoadTape_Return | |||
|
Write the packed bytes at SavedStateBytes back through the addresses in Table_SavedStateAddresses.
|
||||
| 9F03 | LD B,A | The addresses are listed in Table_SavedStateAddresses and the copies sit at SavedStateBytes. | ||
| 9F04 | LD IX,$BAF9 | |||
| 9F08 | LD DE,$A0D4 | |||
| 9F0B | JR LoadTape_1 | Start with the first address. | ||
|
The next saved address.
|
||||
| RestoreState_Loop | 9F0D | INC IX | Advance to the next saved address. | |
| 9F0F | INC IX | |||
| 9F11 | INC DE | |||
| LoadTape_1 | 9F12 | LD L,(IX+$00) | Write that byte back into the game. | |
| 9F15 | LD H,(IX+$01) | |||
| 9F18 | LD A,(DE) | |||
| 9F19 | LD (HL),A | |||
| 9F1A | DJNZ RestoreState_Loop | Repeat until every saved byte is restored. | ||
|
Describe the room the save returned to.
|
||||
| 9F1C | LD E,$00 | Show the room as the player last saw it. | ||
| 9F1E | CALL Handler_RoomExits | Call Handler_RoomExits. | ||
| LoadTape_Return | 9F21 | POP BC | Restore BC, DE, HL and IX from the stack. | |
| 9F22 | POP DE | |||
| 9F23 | POP HL | |||
| 9F24 | POP IX | |||
| 9F26 | RET | Return. | ||
|
View the equivalent code in;
|
||||
| Prev: 9EC5 | Up: Map | Next: 9F27 |