![]() |
Routines |
Prev: 38430 | Up: Map |
Used by the routine at 38344.
|
|||||||||
38455 | LD A,(34255) | Pick up Willy's pixel y-coordinate from 34255 | |||||||
38458 | ADD A,B | Add the y-coordinate offset (to get Willy's true pixel y-coordinate if he's standing on a ramp) | |||||||
38459 | LD IXh,130 | Point IX at the entry in the screen buffer address lookup table at 33280 that corresponds to Willy's y-coordinate | |||||||
38462 | LD IXl,A | ||||||||
38464 | LD A,(34256) | Pick up Willy's direction and movement flags from 34256 | |||||||
38467 | AND 1 | Now E=0 if Willy is facing right, or 128 if he's facing left | |||||||
38469 | RRCA | ||||||||
38470 | LD E,A | ||||||||
38471 | LD A,(34258) | Pick up Willy's animation frame (0-3) from 34258 | |||||||
38474 | AND 3 | Point DE at the sprite graphic data for Willy's current animation frame (see 40192) | |||||||
38476 | RRCA | ||||||||
38477 | RRCA | ||||||||
38478 | RRCA | ||||||||
38479 | OR E | ||||||||
38480 | LD E,A | ||||||||
38481 | LD D,157 | ||||||||
38483 | LD A,(33824) | Pick up the number of the current room from 33824 | |||||||
38486 | CP 29 | Are we in the The Nightmare Room? | |||||||
38488 | JR NZ,38496 | Jump if not | |||||||
38490 | LD D,182 | Point DE at the graphic data for the flying pig sprite (46592+E) | |||||||
38492 | LD A,E | ||||||||
38493 | XOR 128 | ||||||||
38495 | LD E,A | ||||||||
38496 | LD B,16 | There are 16 rows of pixels to copy | |||||||
38498 | LD A,(34259) | Pick up Willy's screen x-coordinate (0-31) from 34259 | |||||||
38501 | AND 31 | ||||||||
38503 | LD C,A | Copy it to C | |||||||
This entry point is used by the routine at 38298 to draw the toilet in The Bathroom.
|
|||||||||
38504 | LD A,(IX+0) | Set HL to the address in the screen buffer at 24576 that corresponds to where we are going to draw the next pixel row of the sprite graphic | |||||||
38507 | LD H,(IX+1) | ||||||||
38510 | OR C | ||||||||
38511 | LD L,A | ||||||||
38512 | LD A,(DE) | Pick up a sprite graphic byte | |||||||
38513 | OR (HL) | Merge it with the background | |||||||
38514 | LD (HL),A | Save the resultant byte to the screen buffer | |||||||
38515 | INC HL | Move HL along to the next cell to the right | |||||||
38516 | INC DE | Point DE at the next sprite graphic byte | |||||||
38517 | LD A,(DE) | Pick it up in A | |||||||
38518 | OR (HL) | Merge it with the background | |||||||
38519 | LD (HL),A | Save the resultant byte to the screen buffer | |||||||
38520 | INC IX | Point IX at the next entry in the screen buffer address lookup table at 33280 | |||||||
38522 | INC IX | ||||||||
38524 | INC DE | Point DE at the next sprite graphic byte | |||||||
38525 | DJNZ 38504 | Jump back until all 16 rows of pixels have been drawn | |||||||
38527 | RET |
Prev: 38430 | Up: Map |