Routines |
Prev: 961E | Up: Map | Next: 9680 |
Used by the routine at 95C8.
|
||||||||
9637 | LD A,($85CF) | Pick up Willy's y-coordinate from 85CF | ||||||
963A | ADD A,B | Add the y-coordinate offset (to get Willy's true y-coordinate if he's standing on a ramp) | ||||||
963B | LD IXh,$82 | Point IX at the entry in the screen buffer address lookup table at 8200 that corresponds to Willy's y-coordinate | ||||||
963E | LD IXl,A | |||||||
9640 | LD A,($85D0) | Pick up Willy's direction and movement flags from 85D0 | ||||||
9643 | AND $01 | Now E=0x00 if Willy is facing right, or 0x80 if he's facing left | ||||||
9645 | RRCA | |||||||
9646 | LD E,A | |||||||
9647 | LD A,($85D2) | Pick up Willy's animation frame (0-3) from 85D2 | ||||||
964A | AND $03 | Point DE at the sprite graphic data for Willy's current animation frame (see 9D00) | ||||||
964C | RRCA | |||||||
964D | RRCA | |||||||
964E | RRCA | |||||||
964F | OR E | |||||||
9650 | LD E,A | |||||||
9651 | LD D,$9D | |||||||
9653 | LD A,($8420) | Pick up the number of the current room from 8420 | ||||||
9656 | CP $1D | Are we in the The Nightmare Room? | ||||||
9658 | JR NZ,$9660 | Jump if not | ||||||
965A | LD D,$B6 | Point DE at the graphic data for the flying pig sprite (B600+E) | ||||||
965C | LD A,E | |||||||
965D | XOR $80 | |||||||
965F | LD E,A | |||||||
9660 | LD B,$10 | There are 16 rows of pixels to copy | ||||||
9662 | LD A,($85D3) | Pick up Willy's screen x-coordinate (0-31) from 85D3 | ||||||
9665 | AND $1F | |||||||
9667 | LD C,A | Copy it to C | ||||||
This entry point is used by the routine at 959A to draw the toilet in The Bathroom.
|
||||||||
9668 | LD A,(IX+$00) | Set HL to the address in the screen buffer at 6000 that corresponds to where we are going to draw the next pixel row of the sprite graphic | ||||||
966B | LD H,(IX+$01) | |||||||
966E | OR C | |||||||
966F | LD L,A | |||||||
9670 | LD A,(DE) | Pick up a sprite graphic byte | ||||||
9671 | OR (HL) | Merge it with the background | ||||||
9672 | LD (HL),A | Save the resultant byte to the screen buffer | ||||||
9673 | INC HL | Move HL along to the next cell to the right | ||||||
9674 | INC DE | Point DE at the next sprite graphic byte | ||||||
9675 | LD A,(DE) | Pick it up in A | ||||||
9676 | OR (HL) | Merge it with the background | ||||||
9677 | LD (HL),A | Save the resultant byte to the screen buffer | ||||||
9678 | INC IX | Point IX at the next entry in the screen buffer address lookup table at 8200 | ||||||
967A | INC IX | |||||||
967C | INC DE | Point DE at the next sprite graphic byte | ||||||
967D | DJNZ $9668 | Jump back until all 16 rows of pixels have been drawn | ||||||
967F | RET |
Prev: 961E | Up: Map | Next: 9680 |