![]() |
Routines |
| Prev: 38430 | Up: Map | Next: 38528 |
|
Used by the routine at 38344.
|
||||||||
| 38455 | LD A,(34255) | Pick up Willy's y-coordinate from 34255 | ||||||
| 38458 | ADD A,B | Add the y-coordinate offset (to get Willy's true 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 | Next: 38528 |