Prev: 94DD Up: Map Next: 9546
94F5: Turn about half the plain doors into timed doors
Used by the routine at START_GAME.
Called once, by START_GAME, on the runtime copy. H' and L' make a pointer into the ROM from TICKS and FRAMES, stepped a byte per record, and the byte there is the random number: for each sixteen-byte record from $EEE0 whose halves are both type 1 (cave door) or both type 2 (door), a byte below $70 turns both halves into $22 or $20 -- a timed cave door or door -- and marks them shut. In the first game after loading that converted 47 of the 82 doors and 21 of the 43 cave doors (measured in the simulator). The walk stops when the address carries past the top of memory.
CHOOSE_TIMED_DOORS 94F5 LD A,($5E12) The frame counter drives it.
94F8 LD L,A
94F9 LD A,($5C78) Low bits of the frame, with bit 4 forced on.
94FC AND $0F
94FE OR $10
9500 LD H,A
9501 EXX
9502 LD HL,$EEE0 The two halves of the first door, sixteen bytes to the next pair.
9505 LD DE,$EEE8
9508 LD BC,$0010
CHOOSE_TIMED_DOORS_0 950B EXX
950C LD A,(HL)
950D INC HL
950E EXX
950F CP $70
9511 JR NC,CHOOSE_TIMED_DOORS_1
9513 LD A,(DE)
9514 CP (HL)
9515 JR NZ,CHOOSE_TIMED_DOORS_1
9517 CP $01
9519 JR Z,CHOOSE_TIMED_DOORS_2
951B CP $02
951D JR Z,CHOOSE_TIMED_DOORS_4
CHOOSE_TIMED_DOORS_1 951F ADD HL,BC
9520 EX DE,HL
9521 ADD HL,BC
9522 RET C
9523 EX DE,HL
9524 JR CHOOSE_TIMED_DOORS_0
CHOOSE_TIMED_DOORS_2 9526 LD A,$22
CHOOSE_TIMED_DOORS_3 9528 LD (DE),A
9529 LD (HL),A
952A PUSH DE
952B INC DE
952C INC DE
952D INC DE
952E INC DE
952F INC DE
9530 LD A,(DE)
9531 OR $08
9533 LD (DE),A
9534 POP DE
9535 PUSH HL
9536 INC HL
9537 INC HL
9538 INC HL
9539 INC HL
953A INC HL
953B LD A,(HL)
953C OR $08
953E LD (HL),A
953F POP HL
9540 JR CHOOSE_TIMED_DOORS_1
CHOOSE_TIMED_DOORS_4 9542 LD A,$20
9544 JR CHOOSE_TIMED_DOORS_3
Prev: 94DD Up: Map Next: 9546