From 5475a19b4c2101940e774fef084d8469cdf65c1b Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Fri, 3 Nov 2023 20:23:14 -0400 Subject: [PATCH] second: explosion --- demos/second/part01_intropan/Makefile | 1 + .../part01_intropan/graphics/ship_sprites.png | Bin 5435 -> 2556 bytes demos/second/part01_intropan/intro.s | 115 +++++++++++++++++- 3 files changed, 111 insertions(+), 5 deletions(-) diff --git a/demos/second/part01_intropan/Makefile b/demos/second/part01_intropan/Makefile index dff32f13..bf0d4893 100644 --- a/demos/second/part01_intropan/Makefile +++ b/demos/second/part01_intropan/Makefile @@ -17,6 +17,7 @@ intro.o: intro.s ../zx02_optim.s \ graphics/igl.hgr.zx02 \ graphics/igr.hgr.zx02 \ graphics/fc_sr_logo.hgr.zx02 \ + graphics/ship_sprites.hgr.zx02 \ horiz_scroll.s hgr_partial.s \ ../zp.inc ../hardware.inc ../qload.inc ca65 -o intro.o intro.s -l intro.lst diff --git a/demos/second/part01_intropan/graphics/ship_sprites.png b/demos/second/part01_intropan/graphics/ship_sprites.png index 0e352d5acfb069fe7f70e6fb5ca5a072625c1440..22b86086085362b93c6669bb39c8783fbcdfb01e 100644 GIT binary patch delta 2130 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 diff --git a/demos/second/part01_intropan/intro.s b/demos/second/part01_intropan/intro.s index 04f816d9..14b326b4 100644 --- a/demos/second/part01_intropan/intro.s +++ b/demos/second/part01_intropan/intro.s @@ -210,10 +210,29 @@ draw_sprites_loop: inc BOARD_COUNT lda BOARD_COUNT - cmp #4 + cmp #5 bne draw_sprites_loop + ; load empty screen + + lda #intro_right_data + sta zx_src_h+1 + lda #$20 + jsr zx02_full_decomp + + ; load empty screen + + lda #intro_right_data + sta zx_src_h+1 + lda #$40 + jsr zx02_full_decomp + + ; wait a bit lda #5 @@ -224,11 +243,97 @@ draw_sprites_loop: ; draw explosion ;============================ - ; TODO + ; draw orange square + + bit PAGE1 + + ldx #87 +orange_loop: + lda hposn_low,X + sta OUTL + lda hposn_high,X + sta OUTH + + lda #$D5 + ldy #19 + sta (OUTL),Y + iny + lda #$AA + sta (OUTL),Y + + inx + cpx #105 + bne orange_loop + lda #1 jsr wait_seconds + ; draw white explosion + + lda #96 + sta HGR_Y1 + lda #96 + sta HGR_Y2 + + lda #0 + sta HGR_X1 + lda #39 + sta HGR_X2 + + ldx #40 +explosion_loop: + stx SAVEX + + ldx HGR_Y1 + lda hposn_low,X + sta OUTL + lda hposn_high,X + sta OUTH + + ldx HGR_Y2 + lda hposn_low,X + sta INL + lda hposn_high,X + sta INH + + lda #$ff + ldy HGR_X1 +explosion_inner_loop: + sta (OUTL),Y + sta (INL),Y + iny + cpy HGR_X2 + bcc explosion_inner_loop + + ldx SAVEX + + txa + and #$3 + bne no_shrink + + inc HGR_X1 + dec HGR_X2 + +no_shrink: + + dec HGR_Y1 + dec HGR_Y1 + inc HGR_Y2 + inc HGR_Y2 + + lda #15 + jsr wait_ticks + + dex + dex + bne explosion_loop + + + + + + lda #$FF jsr hgr_page1_clearscreen jsr hgr_page2_clearscreen @@ -280,8 +385,8 @@ sprite_data: .incbin "graphics/ship_sprites.hgr.zx02" board_desty: - .byte 17,17,71,33 + .byte 17,17,71,33,84 board_y_start: - .byte 0,38,93,110 + .byte 0,38,93,110,177 board_y_end: - .byte 36,92,108,176 + .byte 36,92,108,176,191