![]() |
Routines |
| Prev: 977F | Up: Map | Next: 97F4 |
|
Used by the routine at START.
Called by START for every new game. One of HIDDEN_ROADS is picked at random and its exit wiped from the room, so a different way is shut each time until Elrond reads the curious map (ELROND_READS_MAP); and one of RIDDLES is picked for Gollum.
|
||||
| NEW_GAME_CHOICES | 97AD | SUB A | The player acts; ROAD_OPEN cleared, which nothing ever sets again; no riddle asked yet (RIDDLE_ASKED) | |
| 97AE | LD (ACTING),A | |||
| 97B1 | LD (ROAD_OPEN),A | |||
| 97B4 | LD (RIDDLE_ASKED),A | |||
| 97B7 | LD HL,PLAYER | The player's record | ||
| 97BA | LD (ACTOR),HL | |||
| 97BD | LD A,$04 | IY = one of HIDDEN_ROADS at random | ||
| 97BF | CALL RANDOM_POSITIVE | |||
| 97C2 | INC A | |||
| 97C3 | LD B,A | |||
| 97C4 | LD IY,$C808 | |||
| 97C8 | LD DE,$0006 | |||
| NEW_GAME_CHOICES_0 | 97CB | ADD IY,DE | ||
| 97CD | DJNZ NEW_GAME_CHOICES_0 | |||
| 97CF | LD ($A7D1),IY | Kept in the operand of ELROND_READS_MAP's LD IY | ||
| 97D3 | LD L,(IY+$01) | Wipe that exit: all three bytes zero, so no direction matches it | ||
| 97D6 | LD H,(IY+$02) | |||
| 97D9 | LD B,$03 | |||
| NEW_GAME_CHOICES_1 | 97DB | LD (HL),$00 | ||
| 97DD | INC HL | |||
| 97DE | DJNZ NEW_GAME_CHOICES_1 | |||
| 97E0 | LD A,$03 | And one of RIDDLES at random, in RIDDLE | ||
| 97E2 | CALL RANDOM_POSITIVE | |||
| 97E5 | LD E,A | |||
| 97E6 | LD D,$00 | |||
| 97E8 | SLA E | |||
| 97EA | SLA E | |||
| 97EC | LD HL,RIDDLES | |||
| 97EF | ADD HL,DE | |||
| 97F0 | LD (RIDDLE),HL | |||
| 97F3 | RET | |||
| Prev: 977F | Up: Map | Next: 97F4 |