![]() |
Routines |
Prev: 36266 | Up: Map |
Used by the routine at 34574. First we move Eugene up or down, or change his direction.
|
||||||||
36344 | LD A,(32884) | Pick up the attribute of the last item drawn from 32884 | ||||||
36347 | OR A | Have all the items been collected? | ||||||
36348 | JR Z,36367 | Jump if so | ||||||
36350 | LD A,(32987) | Pick up Eugene's direction from 32987 | ||||||
36353 | OR A | Is Eugene moving downwards? | ||||||
36354 | JR Z,36367 | Jump if so | ||||||
36356 | LD A,(32988) | Pick up Eugene's pixel y-coordinate from 32988 | ||||||
36359 | DEC A | Decrement it (moving Eugene up) | ||||||
36360 | JR Z,36380 | Jump if Eugene has reached the top of the cavern | ||||||
36362 | LD (32988),A | Update Eugene's pixel y-coordinate at 32988 | ||||||
36365 | JR 36388 | |||||||
36367 | LD A,(32988) | Pick up Eugene's pixel y-coordinate from 32988 | ||||||
36370 | INC A | Increment it (moving Eugene down) | ||||||
36371 | CP 88 | Has Eugene reached the portal yet? | ||||||
36373 | JR Z,36380 | Jump if so | ||||||
36375 | LD (32988),A | Update Eugene's pixel y-coordinate at 32988 | ||||||
36378 | JR 36388 | |||||||
36380 | LD A,(32987) | Toggle Eugene's direction at 32987 | ||||||
36383 | XOR 1 | |||||||
36385 | LD (32987),A | |||||||
Now that Eugene's movement has been dealt with, it's time to draw him.
|
||||||||
36388 | LD A,(32988) | Pick up Eugene's pixel y-coordinate from 32988 | ||||||
36391 | AND 127 | Point DE at the entry in the screen buffer address lookup table at 33536 that corresponds to Eugene's y-coordinate | ||||||
36393 | RLCA | |||||||
36394 | LD E,A | |||||||
36395 | LD D,131 | |||||||
36397 | LD A,(DE) | Point HL at the address of Eugene's location in the screen buffer at 24576 | ||||||
36398 | OR 15 | |||||||
36400 | LD L,A | |||||||
36401 | INC DE | |||||||
36402 | LD A,(DE) | |||||||
36403 | LD H,A | |||||||
36404 | LD DE,32992 | Draw Eugene to the screen buffer at 24576 | ||||||
36407 | LD C,1 | |||||||
36409 | CALL 36852 | |||||||
36412 | JP NZ,36102 | Kill Willy if Eugene collided with him | ||||||
36415 | LD A,(32988) | Pick up Eugene's pixel y-coordinate from 32988 | ||||||
36418 | AND 120 | Point HL at the address of Eugene's location in the attribute buffer at 23552 | ||||||
36420 | RLCA | |||||||
36421 | OR 7 | |||||||
36423 | SCF | |||||||
36424 | RL A | |||||||
36426 | LD L,A | |||||||
36427 | LD A,0 | |||||||
36429 | ADC A,92 | |||||||
36431 | LD H,A | |||||||
36432 | LD A,(32884) | Pick up the attribute of the last item drawn from 32884 | ||||||
36435 | OR A | Set the zero flag if all the items have been collected | ||||||
36436 | LD A,7 | Assume we will draw Eugene with white INK | ||||||
36438 | JR NZ,36447 | Jump if there are items remaining to be collected | ||||||
36440 | LD A,(32957) | Pick up the value of the game clock at 32957 | ||||||
36443 | RRCA | Move bits 2-4 into bits 0-2 and clear the other bits; this value (which decreases by one on each pass through the main loop) will be Eugene's INK colour | ||||||
36444 | RRCA | |||||||
36445 | AND 7 | |||||||
36447 | LD (HL),A | Save the INK colour in the attribute buffer temporarily | ||||||
36448 | LD A,(32800) | Pick up the attribute byte of the background tile for the current cavern from 32800 | ||||||
36451 | AND 248 | Combine its PAPER colour with the chosen INK colour | ||||||
36453 | OR (HL) | |||||||
36454 | LD (HL),A | Set the attribute byte for the top-left cell of the sprite in the attribute buffer at 23552 | ||||||
36455 | LD DE,31 | Prepare DE for addition | ||||||
36458 | INC HL | Set the attribute byte for the top-right cell of the sprite in the attribute buffer at 23552 | ||||||
36459 | LD (HL),A | |||||||
36460 | ADD HL,DE | Set the attribute byte for the middle-left cell of the sprite in the attribute buffer at 23552 | ||||||
36461 | LD (HL),A | |||||||
36462 | INC HL | Set the attribute byte for the middle-right cell of the sprite in the attribute buffer at 23552 | ||||||
36463 | LD (HL),A | |||||||
36464 | ADD HL,DE | Set the attribute byte for the bottom-left cell of the sprite in the attribute buffer at 23552 | ||||||
36465 | LD (HL),A | |||||||
36466 | INC HL | Set the attribute byte for the bottom-right cell of the sprite in the attribute buffer at 23552 | ||||||
36467 | LD (HL),A | |||||||
36468 | RET |
Prev: 36266 | Up: Map |