Prev: 94F9 Up: Map Next: 9584
9534: Deal with special rooms (Master Bedroom, The Bathroom)
Used by the routine at 89AD.
9534 LD A,($8420) Pick up the number of the current room from 8420
9537 CP $23 Are we in Master Bedroom?
9539 JR NZ,$959A Jump if not
953B LD A,($85DF) Pick up the game mode indicator from 85DF
953E OR A Has Willy collected all the items?
953F JR NZ,$9576 Jump if so
Willy hasn't collected all the items yet, so Maria is on guard.
9541 LD A,($85CB) Pick up the minute counter from 85CB; this will determine Maria's animation frame
9544 AND $02 Keep only bit 1, move it to bit 5, and set bit 7
9546 RRCA
9547 RRCA
9548 RRCA
9549 RRCA
954A OR $80
954C LD E,A Now E=0x80 (foot down) or 0xA0 (foot raised)
954D LD A,($85CF) Pick up Willy's y-coordinate from 85CF
9550 CP $D0 Is Willy on the floor below the ramp?
9552 JR Z,$955C Jump if so
9554 LD E,$C0 E=0xC0 (raising arm)
9556 CP $C0 Is Willy 8 or fewer pixels above floor level?
9558 JR NC,$955C Jump if so
955A LD E,$E0 E=0xE0 (arm raised)
955C LD D,$9C Point DE at the sprite graphic data for Maria (9C80, 9CA0, 9CC0 or 9CE0)
955E LD HL,$686E Draw Maria at (11,14) in the screen buffer at 6000
9561 LD C,$01
9563 CALL $9456
9566 JP NZ,$90B7 Kill Willy if Maria collided with him
9569 LD HL,$4545 H=L=0x45 (INK 5: PAPER 0: BRIGHT 1)
956C LD ($5D6E),HL Set the attribute bytes for the top half of Maria's sprite in the buffer at 5C00
956F LD HL,$0707 H=L=0x07 (INK 7: PAPER 0: BRIGHT 0)
9572 LD ($5D8E),HL Set the attribute bytes for the bottom half of Maria's sprite in the buffer at 5C00
9575 RET
Willy has collected all the items, so Maria is gone.
9576 LD A,($85D3) Pick up Willy's screen x-coordinate from 85D3
9579 AND $1F
957B CP $06 Has Willy reached the bed (at x=5) yet?
957D RET NC Return if not
957E LD A,$02 Update the game mode indicator at 85DF to 2 (Willy is running to the toilet)
9580 LD ($85DF),A
9583 RET
Prev: 94F9 Up: Map Next: 9584