;============================== ; do the asplode routine ;============================== ; should move head to center ; player explosion happens ; do the "YOUR HEAD A SPLODE" animation ; try to interleave the sound ; in theory the background should pulse too but ; that might be too much do_asplode: lda #0 sta FRAME lda #16 sta STRONGBAD_X asplode_loop: ;=================== ; copy background ;=================== jsr hgr_copy ;========================== ; draw head ;========================== lda #big_head0_sprite sta INH lda #16 ; center sta SPRITE_X lda #36 sta SPRITE_Y jsr hgr_draw_sprite_big ;========================== ; draw new sprite ;========================== ldx FRAME lda asplode_sprite_l,X sta INL lda asplode_sprite_h,X sta INH lda asplode_sprite_x,X sta SPRITE_X lda asplode_sprite_y,X sta SPRITE_Y jsr hgr_draw_sprite_big ldx FRAME cpx #17 bcc done_extra_sprites ;========================== ; draw your ;========================== lda #your_sprite sta INH lda #8 sta SPRITE_X lda #133 sta SPRITE_Y jsr hgr_draw_sprite_big ldx FRAME cpx #23 bcc done_extra_sprites ;========================== ; draw head ;========================== lda #head_sprite sta INH lda #16 sta SPRITE_X lda #133 sta SPRITE_Y jsr hgr_draw_sprite_big ldx FRAME cpx #29 bcc done_extra_sprites ;========================== ; draw A ;========================== lda #a_sprite sta INH lda #22 sta SPRITE_X lda #133 sta SPRITE_Y jsr hgr_draw_sprite_big done_extra_sprites: jsr flip_page ldx FRAME cpx #17 bne sound_check_head sound_check_your: ; play sound ldy #0 beq do_play_asplode sound_check_head: cpx #23 bne sound_check_a ldy #1 bne do_play_asplode sound_check_a: cpx #29 bne sound_check_splode ldy #2 bne do_play_asplode sound_check_splode: cpx #34 bne sound_check_done ldy #3 do_play_asplode: jsr play_asplode sound_check_done: inc FRAME lda FRAME cmp #35 bcs done_asplode_head jmp asplode_loop done_asplode_head: lda #20 jsr long_wait ; tail call rts asplode_sprite_l: ; begining explosion .byte asploding1_sprite .byte >asploding1_sprite .byte >asploding2_sprite .byte >asploding3_sprite .byte >asploding4_sprite .byte >asploding2_sprite .byte >asploding3_sprite .byte >asploding4_sprite .byte >asploding2_sprite .byte >asploding3_sprite .byte >asploding4_sprite ; your .byte >your_sm_sprite .byte >your_sm_sprite .byte >your_med_sprite .byte >your_med_sprite .byte >your_sprite .byte >your_sprite ; head .byte >head_sm_sprite .byte >head_sm_sprite .byte >head_med_sprite .byte >head_med_sprite .byte >head_sprite .byte >head_sprite ; a .byte >a_sm_sprite .byte >a_sm_sprite .byte >a_med_sprite .byte >a_med_sprite .byte >a_sprite .byte >a_sprite ; splode .byte >splode_sm_sprite .byte >splode_sm_sprite .byte >splode_med_sprite .byte >splode_med_sprite .byte >splode_sprite .byte >splode_sprite asplode_sprite_x: .byte 19 ; FIXME: adjust for current pos .byte 19 .byte 19 .byte 19 .byte 19 .byte 19 .byte 19 .byte 19 .byte 19 .byte 19 .byte 19 ; your .byte 18 .byte 17 .byte 14 .byte 12 .byte 9 .byte 8 ; head .byte 18 .byte 18 .byte 17 .byte 17 .byte 16 .byte 16 ; a .byte 19 .byte 20 .byte 20 .byte 21 .byte 22 .byte 22 ; splode .byte 18 .byte 20 .byte 20 .byte 21 .byte 22 .byte 24 asplode_sprite_y: .byte 150 .byte 150 .byte 150 .byte 150 .byte 150 .byte 150 .byte 150 .byte 150 .byte 150 .byte 150 .byte 150 ; your .byte 80 .byte 90 .byte 100 .byte 111 .byte 122 .byte 133 ; head .byte 80 .byte 90 .byte 100 .byte 111 .byte 122 .byte 133 ; a .byte 80 .byte 90 .byte 100 .byte 111 .byte 122 .byte 133 ; splode .byte 80 .byte 90 .byte 100 .byte 111 .byte 122 .byte 133 long_wait: ldx #10 long_wait_loop: lda #255 jsr WAIT dex bne long_wait_loop rts