| jetpac | Routines |
| Prev: 76e5 | Up: Map | Next: 7747 |
|
||||||||||||||||||||
| 7705 | ld a,c | Jump if vertical position is zero | ||||||||||||||||||
| 7706 | and a | |||||||||||||||||||
| 7707 | jr z,$7742 | |||||||||||||||||||
| 7709 | dec c | else decrement | ||||||||||||||||||
| 770a | push bc | |||||||||||||||||||
| 770b | push hl | |||||||||||||||||||
|
Loop to create a mask of the sprite and it write to the screen.
|
||||||||||||||||||||
| 770c | ld a,(de) | A=sprite byte | ||||||||||||||||||
| 770d | cpl | Create mask and write to screen | ||||||||||||||||||
| 770e | and (hl) | |||||||||||||||||||
| 770f | ld (hl),a | |||||||||||||||||||
| 7710 | inc de | Next byte | ||||||||||||||||||
| 7711 | inc l | Next column | ||||||||||||||||||
| 7712 | ld a,l | |||||||||||||||||||
| 7713 | and $1f | |||||||||||||||||||
| 7715 | jr nz,$771b | If column is zero, subtract 32 | ||||||||||||||||||
| 7717 | ld a,l | |||||||||||||||||||
| 7718 | sub $20 | |||||||||||||||||||
| 771a | ld l,a | |||||||||||||||||||
| 771b | djnz $770c | Repeat and process for next byte | ||||||||||||||||||
| 771d | pop hl | Restore HL to be the display file address | ||||||||||||||||||
| 771e | call $72b6 | Calculate new pixel position | ||||||||||||||||||
| 7721 | pop bc | |||||||||||||||||||
| 7722 | exx | NOTE: what is in C' register before this swap? | ||||||||||||||||||
| 7723 | ld a,c | Jump back to the top of routine if C is zero | ||||||||||||||||||
| 7724 | and a | |||||||||||||||||||
| 7725 | jr z,$773f | |||||||||||||||||||
| 7727 | dec c | else decrement (vertical position?) | ||||||||||||||||||
| 7728 | push bc | |||||||||||||||||||
| 7729 | push hl | |||||||||||||||||||
|
Merging sprite with current on-screen sprite (the mask?)
|
||||||||||||||||||||
| 772a | ld a,(de) | Merge with current on-screen byte (mask?) | ||||||||||||||||||
| 772b | or (hl) | |||||||||||||||||||
| 772c | ld (hl),a | |||||||||||||||||||
| 772d | inc de | Next sprite byte | ||||||||||||||||||
| 772e | inc l | |||||||||||||||||||
| 772f | ld a,l | A=next column number | ||||||||||||||||||
| 7730 | and $1f | |||||||||||||||||||
| 7732 | jr nz,$7738 | Set L to beginning of line if > 0 && < 32, and repeat process for next byte | ||||||||||||||||||
| 7734 | ld a,l | |||||||||||||||||||
| 7735 | sub $20 | |||||||||||||||||||
| 7737 | ld l,a | |||||||||||||||||||
| 7738 | djnz $772a | Repeat and process next byte | ||||||||||||||||||
|
Calculate position for next pixel location
|
||||||||||||||||||||
| 773a | pop hl | |||||||||||||||||||
| 773b | call $72b6 | Calculate new pixel position | ||||||||||||||||||
| 773e | pop bc | |||||||||||||||||||
| 773f | exx | |||||||||||||||||||
| 7740 | jr $7705 | Loop back to top of routine | ||||||||||||||||||
| 7742 | exx | |||||||||||||||||||
| 7743 | ld a,c | Jump if C != 0 | ||||||||||||||||||
| 7744 | and a | |||||||||||||||||||
| 7745 | jr nz,$7727 | |||||||||||||||||||
| Prev: 76e5 | Up: Map | Next: 7747 |