Prev: 38137 Up: Map Next: 38276
38196: Deal with special rooms (Master Bedroom, The Bathroom)
Used by the routine at 35245.
38196 LD A,(33824) Pick up the number of the current room from 33824
38199 CP 35 Are we in Master Bedroom?
38201 JR NZ,38298 Jump if not
38203 LD A,(34271) Pick up the game mode indicator from 34271
38206 OR A Has Willy collected all the items?
38207 JR NZ,38262 Jump if so
Willy hasn't collected all the items yet, so Maria is on guard.
38209 LD A,(34251) Pick up the minute counter from 34251; this will determine Maria's animation frame
38212 AND 2 Keep only bit 1, move it to bit 5, and set bit 7
38214 RRCA
38215 RRCA
38216 RRCA
38217 RRCA
38218 OR 128
38220 LD E,A Now E=128 (foot down) or 160 (foot raised)
38221 LD A,(34255) Pick up Willy's y-coordinate from 34255
38224 CP 208 Is Willy on the floor below the ramp?
38226 JR Z,38236 Jump if so
38228 LD E,192 E=192 (raising arm)
38230 CP 192 Is Willy 8 or fewer pixels above floor level?
38232 JR NC,38236 Jump if so
38234 LD E,224 E=224 (arm raised)
38236 LD D,156 Point DE at the sprite graphic data for Maria (40064, 40096, 40128 or 40160)
38238 LD HL,26734 Draw Maria at (11,14) in the screen buffer at 24576
38241 LD C,1
38243 CALL 37974
38246 JP NZ,37047 Kill Willy if Maria collided with him
38249 LD HL,17733 H=L=69 (INK 5: PAPER 0: BRIGHT 1)
38252 LD (23918),HL Set the attribute bytes for the top half of Maria's sprite in the buffer at 23552
38255 LD HL,1799 H=L=7 (INK 7: PAPER 0: BRIGHT 0)
38258 LD (23950),HL Set the attribute bytes for the bottom half of Maria's sprite in the buffer at 23552
38261 RET
Willy has collected all the items, so Maria is gone.
38262 LD A,(34259) Pick up Willy's screen x-coordinate from 34259
38265 AND 31
38267 CP 6 Has Willy reached the bed (at x=5) yet?
38269 RET NC Return if not
38270 LD A,2 Update the game mode indicator at 34271 to 2 (Willy is running to the toilet)
38272 LD (34271),A
38275 RET
Prev: 38137 Up: Map Next: 38276