![]() |
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 from 34258 | |||||||
| 38474 | AND 3 | Point DE at the sprite graphic data for Willy's current animation frame (40192+8*A) | |||||||
| 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 |