Routines |
Prev: 6400 | Up: Map | Next: 647B |
Used by the routine at 64BD. Animatory states 0x09, 0x0A, 0x0F and 0x1F - corresponding to the sprites of Sam rolling and somersaulting - use sprite tiles 0xEF-0xF7. These sprite tiles are initialised before Sam starts his acrobatic manoeuvre, and later rotated as he moves through each phase of animation.
|
||||
6412 | LD L,$02 | Copy sprite tiles 0x02-0x07 over sprite tiles 0xEF-0xF4 | ||
6414 | LD E,$EF | |||
6416 | LD C,$06 | |||
6418 | CALL $6400 | |||
641B | LD E,$F2 | Copy sprite tile 0xAA over sprite tile 0xF2 | ||
641D | LD L,$AA | |||
641F | INC C | |||
6420 | CALL $6400 | |||
6423 | LD A,$B5 | Copy sprite tiles 0xB5, 0xBD and 0xC5 from base page 0xD7 over sprite tiles 0xF5-0xF7 | ||
6425 | LD E,$F5 | |||
6427 | LD L,A | |||
6428 | LD H,$D7 | |||
642A | INC C | |||
642B | CALL $6402 | |||
642E | LD A,L | |||
642F | ADD A,$07 | |||
6431 | CP $CD | |||
6433 | JR NZ,$6427 | |||
6435 | LD B,$08 | Superimpose sprite tile 0xCD from base page 0xD7 over sprite tile 0xF3 (which is currently a copy of sprite tile 0x06, the centre tile of Sam's base animatory state); this makes Sam appear to bend his arms and hold his knees while performing the acrobatic feat, at the expense of losing some detail from his current disguise | ||
6437 | LD HL,$D7CD | |||
643A | LD DE,$C7F3 | |||
643D | LD A,(DE) | |||
643E | OR (HL) | |||
643F | INC H | |||
6440 | AND (HL) | |||
6441 | INC H | |||
6442 | LD (DE),A | |||
6443 | INC D | |||
6444 | LD (DE),A | |||
6445 | INC D | |||
6446 | DJNZ $643D | |||
This entry point is used by the routine at 64BD. Here we rotate sprite tiles 0xEF-0xF7 and store the results in sprite tile slots 0xEE-0xF6.
|
||||
6448 | LD L,$EF | Tile 0xEF is the first source tile | ||
644A | LD E,L | E=0xEE (the first target tile) | ||
644B | DEC E | |||
644C | LD D,$C7 | The base page for these tiles is 0xC7 | ||
644E | LD B,$08 | Rotate the source sprite tile 90 degrees anticlockwise and copy it over the target sprite tile | ||
6450 | LD H,$C6 | |||
6452 | LD C,$01 | |||
6454 | INC H | |||
6455 | RRC (HL) | |||
6457 | RLA | |||
6458 | INC H | |||
6459 | RRC (HL) | |||
645B | RL C | |||
645D | JR NC,$6454 | |||
645F | LD (DE),A | |||
6460 | INC D | |||
6461 | LD A,C | |||
6462 | LD (DE),A | |||
6463 | INC D | |||
6464 | DJNZ $6450 | |||
6466 | INC L | Move to the next source sprite tile reference | ||
6467 | BIT 3,L | Have we rotated sprite tiles 0xEF-0xF7 yet? | ||
6469 | JR Z,$644A | Jump back if not | ||
Next we move sprite tiles 0xEE-0xF6 up to 0xEF-0xF7.
|
||||
646B | LD A,$10 | There are 16 bytes of graphic and mask data in each tile | ||
646D | LD E,$F7 | Copy sprite tiles 0xEE-0xF6 into slots 0xEF-0xF7 | ||
646F | LD L,$F6 | |||
6471 | LD C,$09 | |||
6473 | DEC D | |||
6474 | LD H,D | |||
6475 | LDDR | |||
6477 | DEC A | |||
6478 | JR NZ,$646D | |||
647A | RET | Return with the zero flag set |
Prev: 6400 | Up: Map | Next: 647B |