| jetpac | Routines | 
| Prev: 75fc | Up: Map | Next: 76a6 | 
| 
 
Used by the routine at 6094.
 
 | 
||||
| 7638 | ld b,$04 | Loop counter (4 platforms for draw) | ||
| 763a | ld hl,$6003 | Platform location/size params | ||
| 763d | push bc | Backup loop counter | ||
| 763e | ld a,(hl) | Process next platform if sprite colour is black/unused | ||
| 763f | and a | |||
| 7640 | jp z,$769e | |||
| 7643 | inc hl | C=X position | ||
| 7644 | ld c,(hl) | |||
| 7645 | inc hl | |||
| 7646 | inc hl | |||
| 7647 | ld a,(hl) | A=platform width | ||
| 7648 | and $fc | |||
| 764a | neg | |||
| 764c | add a,c | A += platform X position | ||
| 764d | add a,$10 | A += 16 | ||
| 764f | push hl | |||
| 7650 | dec hl | H=Y position byte | ||
| 7651 | ld h,(hl) | |||
| 7652 | ld l,a | L=new X position | ||
| 7653 | call $72d0 | HL=coord to screen address (using HL) | ||
| 7656 | ld de,$76ad | DE=address for LEFT platform sprite | ||
| 7659 | call $76a6 | Draw LEFT platform tile pixels | ||
| 765c | ex (sp),hl | Does this fetch the platform width value? | ||
| 765d | ld a,(hl) | |||
| 765e | ex (sp),hl | |||
| 765f | srl a | |||
| 7661 | srl a | |||
| 7663 | sub $04 | |||
| 7665 | ld b,a | B=loop counter for # of middle platform sprites | ||
| 7666 | ld de,$76b5 | DE=address for MIDDLE platform sprite | ||
| 7669 | call $76a6 | Draw (all) MIDDLE platform tiles pixels | ||
| 766c | djnz $7669 | |||
| 766e | ld de,$76bd | DE=address for RIGHT platform sprite | ||
| 7671 | call $76a6 | Draw RIGHT platform tile pixels | ||
| 7674 | pop hl | |||
| 7675 | ld a,(hl) | A=platform width | ||
| 7676 | and $fc | |||
| 7678 | neg | |||
| 767a | add a,c | A += X position | ||
| 767b | add a,$10 | A += 16 | ||
| 767d | push hl | |||
| 767e | dec hl | B=Y position | ||
| 767f | ld b,(hl) | |||
| 7680 | dec hl | C=colour attribute | ||
| 7681 | dec hl | |||
| 7682 | ld c,(hl) | |||
| 7683 | ld h,b | HL=Y,X position | ||
| 7684 | ld l,a | |||
| 7685 | push bc | |||
| 7686 | call $71d6 | HL=coord to attribute file address (using HL) | ||
| 7689 | pop bc | |||
| 768a | ex (sp),hl | Does this fetch the platform width value? | ||
| 768b | ld a,(hl) | |||
| 768c | ex (sp),hl | |||
| 768d | srl a | |||
| 768f | srl a | |||
| 7691 | sub $02 | |||
| 7693 | ld b,a | B=loop counter for # of middle platform sprites | ||
| 7694 | ld a,c | Apply platform colour to ATTRIBUTE_FILE | ||
| 7695 | ld (hl),a | |||
| 7696 | inc hl | HL=next sprite position | ||
| 7697 | djnz $7695 | Repeat until all sprites are coloured | ||
| 7699 | pop hl | Restore HL=platform object at "width" byte | ||
| 769a | inc hl | HL=beginning of next platform struct | ||
| 769b | pop bc | Restore BC for loop counter | ||
| 769c | jr $76a3 | Loop back and processing next platform | ||
| 
 
These instructions are only called if current platform colour was black. Why would a platform colour be black?
 
 | 
||||
| 769e | pop bc | restore loop counter | ||
| 769f | inc hl | Place HL to beginning of next platform struct | ||
| 76a0 | inc hl | |||
| 76a1 | inc hl | |||
| 76a2 | inc hl | |||
| 76a3 | djnz $763d | Loop back and process next platform | ||
| 76a5 | ret | |||
| Prev: 75fc | Up: Map | Next: 76a6 |