From 02d916f862799af50512d2a9b428333b7eceed2a Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Mon, 4 Nov 2019 00:47:34 -0500 Subject: [PATCH] ds: more work on starbase --- demosplash/TODO | 24 ++ demosplash/gr_twoscreen_scroll.s | 130 ------- demosplash/graphics/sprites/astronaut.inc | 22 +- demosplash/graphics/starbase/jail.png | Bin 5158 -> 5385 bytes demosplash/graphics/starbase/starbase.inc | 17 +- demosplash/offsets_table2.s | 34 ++ demosplash/starbase.s | 8 - demosplash/starbase_action.s | 424 ++++------------------ demosplash/starbase_doors.s | 1 - 9 files changed, 151 insertions(+), 509 deletions(-) delete mode 100644 demosplash/gr_twoscreen_scroll.s create mode 100644 demosplash/offsets_table2.s diff --git a/demosplash/TODO b/demosplash/TODO index 075d089d..433a5d56 100644 --- a/demosplash/TODO +++ b/demosplash/TODO @@ -15,6 +15,30 @@ STARBASE: + Fix sprites + Keyboard emulation + + change colors of shield? laser? blast? + + + room0 + - open with wall blasting open + - run down steps + - blast open door + - run through + + room1 + - columns + - run in + - duck, start shield + - blash shield, alien + - run through doors + + + room2 (planet) + - shoot another alien? + - foreground animation (robot?) + + + room3 (ship) + - blast control / free ship/ + - run to ship + - engines start + - some sort of fade-to-white transition + ESCAPE: + Get working + Keyboard emulation diff --git a/demosplash/gr_twoscreen_scroll.s b/demosplash/gr_twoscreen_scroll.s deleted file mode 100644 index bf90920f..00000000 --- a/demosplash/gr_twoscreen_scroll.s +++ /dev/null @@ -1,130 +0,0 @@ - ;========================================================= - ; gr_twoscreen_scroll, 40x48 version - ;========================================================= - ; offset is in BG_SCROLL, must be multiple of 2 - ; - ; two screens, top is at $1000, bottom at $BC00 - ; copy lines Y-48 from $1000 to $c00 - ; copy lines 0 - (48-y) from $BC00 to $c00 - -gr_twoscreen_scroll: - - lda #0 - sta TEMPY ; dest - - ldy BG_SCROLL - cpy #48 - beq gr_twoscreen_bottom ; no top to draw - -gr_twoscreen_top: - - ; calculate source - - lda gr_offsets+1,Y - clc - adc #($10-4) - sta gr_twoscreen_smc_src+2 - lda gr_offsets,Y - sta gr_twoscreen_smc_src+1 - tya - pha - - ; calculate destination - - lda TEMPY - tay - lda gr_offsets+1,Y - clc - adc #($c-4) - sta gr_twoscreen_smc_dst+2 - lda gr_offsets,Y - sta gr_twoscreen_smc_dst+1 - - ldx #0 -gr_twoscreen_line_loop: - -gr_twoscreen_smc_src: - lda $1000,X -gr_twoscreen_smc_dst: - sta $c00,X - - inx - cpx #40 - bne gr_twoscreen_line_loop - - - inc TEMPY - inc TEMPY - - pla - tay - - iny - iny - - cpy #48 - - bne gr_twoscreen_top - - - ;=============================== - ; now copy the bottom from $BC00 - - lda BG_SCROLL - beq done_twoscreen_bottom ; if 0, no bottom - -gr_twoscreen_bottom: - - ldy #0 - -gr_twoscreen_bottom_loop: - - ; calculate source - - lda gr_offsets+1,Y - clc - adc #($bc-4) - sta gr_twoscreen_bottom_smc_src+2 - lda gr_offsets,Y - sta gr_twoscreen_bottom_smc_src+1 - tya - pha - - ; calculate destination - - lda TEMPY - tay - lda gr_offsets+1,Y - clc - adc #($c-4) - sta gr_twoscreen_bottom_smc_dst+2 - lda gr_offsets,Y - sta gr_twoscreen_bottom_smc_dst+1 - - ldx #0 -gr_twoscreen_bottom_line_loop: - -gr_twoscreen_bottom_smc_src: - lda $BC00,X -gr_twoscreen_bottom_smc_dst: - sta $c00,X - - inx - cpx #40 - bne gr_twoscreen_bottom_line_loop - - - inc TEMPY - inc TEMPY - - pla - tay - - iny - iny - - cpy BG_SCROLL - - bne gr_twoscreen_bottom_loop -done_twoscreen_bottom: - rts ; 6 diff --git a/demosplash/graphics/sprites/astronaut.inc b/demosplash/graphics/sprites/astronaut.inc index 153d3d39..77321274 100644 --- a/demosplash/graphics/sprites/astronaut.inc +++ b/demosplash/graphics/sprites/astronaut.inc @@ -14,7 +14,7 @@ astro_stand: .byte $aa,$8a,$8a,$aa,$aa .byte $aa,$bb,$88,$8a,$aa .byte $aa,$aa,$2b,$88,$aa - .byte $aa,$aa,$bb,$aa,$aa + .byte $aa,$a2,$bb,$aa,$aa .byte $aa,$aa,$bb,$aa,$aa .byte $aa,$aa,$22,$aa,$aa .byte $aa,$aa,$22,$aa,$aa @@ -46,7 +46,7 @@ astro_walk_left1: .byte $aa,$8a,$8a,$aa,$aa .byte $aa,$bb,$88,$8a,$aa .byte $aa,$aa,$2b,$88,$aa - .byte $aa,$aa,$bb,$aa,$aa + .byte $aa,$a2,$bb,$aa,$aa .byte $aa,$ab,$bb,$aa,$aa .byte $aa,$aa,$22,$aa,$aa .byte $aa,$22,$a2,$66,$aa @@ -57,7 +57,7 @@ astro_walk_left2: .byte $aa,$8a,$8a,$aa,$aa .byte $aa,$bb,$88,$8a,$aa .byte $aa,$aa,$2b,$88,$aa - .byte $aa,$aa,$bb,$aa,$aa + .byte $aa,$a2,$bb,$aa,$aa .byte $aa,$ba,$bb,$aa,$aa .byte $aa,$aa,$22,$aa,$aa .byte $aa,$22,$a2,$66,$aa @@ -68,7 +68,7 @@ astro_walk_left3: .byte $aa,$8a,$8a,$aa,$aa .byte $aa,$bb,$88,$8a,$aa .byte $aa,$aa,$2b,$88,$aa - .byte $aa,$aa,$bb,$aa,$aa + .byte $aa,$a2,$bb,$aa,$aa .byte $aa,$ba,$2b,$aa,$aa .byte $aa,$aa,$22,$aa,$aa .byte $aa,$22,$a2,$66,$aa @@ -79,7 +79,7 @@ astro_walk_left4: .byte $aa,$8a,$8a,$aa,$aa .byte $aa,$bb,$88,$8a,$aa .byte $aa,$aa,$2b,$88,$aa - .byte $aa,$aa,$bb,$aa,$aa + .byte $aa,$a2,$bb,$aa,$aa .byte $aa,$ba,$2b,$aa,$aa .byte $aa,$aa,$22,$aa,$aa .byte $aa,$22,$a2,$6a,$aa @@ -90,7 +90,7 @@ astro_walk_left5: .byte $aa,$8a,$8a,$aa,$aa .byte $aa,$bb,$88,$8a,$aa .byte $aa,$aa,$2b,$88,$aa - .byte $aa,$aa,$bb,$aa,$aa + .byte $aa,$a2,$bb,$aa,$aa .byte $aa,$bb,$22,$aa,$aa .byte $fa,$aa,$22,$aa,$aa .byte $aa,$66,$22,$aa,$aa @@ -101,7 +101,7 @@ astro_walk_left6: .byte $aa,$8a,$8a,$aa,$aa .byte $aa,$bb,$88,$8a,$aa .byte $aa,$aa,$2b,$88,$aa - .byte $aa,$aa,$bb,$aa,$aa + .byte $aa,$a2,$bb,$aa,$aa .byte $aa,$ba,$2b,$aa,$aa .byte $aa,$6a,$22,$aa,$aa .byte $fa,$66,$a2,$2a,$aa @@ -112,7 +112,7 @@ astro_walk_left7: .byte $aa,$8a,$8a,$aa,$aa .byte $aa,$bb,$88,$8a,$aa .byte $aa,$aa,$2b,$88,$aa - .byte $aa,$aa,$bb,$aa,$aa + .byte $aa,$a2,$bb,$aa,$aa .byte $aa,$aa,$2b,$aa,$aa .byte $aa,$6a,$22,$aa,$aa .byte $aa,$66,$a2,$2a,$aa @@ -123,7 +123,7 @@ astro_walk_left8: .byte $aa,$8a,$8a,$aa,$aa .byte $aa,$bb,$88,$8a,$aa .byte $aa,$aa,$2b,$88,$aa - .byte $aa,$aa,$bb,$aa,$aa + .byte $aa,$a2,$bb,$aa,$aa .byte $aa,$ba,$2b,$aa,$aa .byte $aa,$6a,$22,$aa,$aa .byte $aa,$66,$a2,$22,$aa @@ -134,7 +134,7 @@ astro_walk_left9: .byte $aa,$8a,$8a,$aa,$aa .byte $aa,$bb,$88,$8a,$aa .byte $aa,$aa,$2b,$88,$aa - .byte $aa,$aa,$bb,$aa,$aa + .byte $aa,$a2,$bb,$aa,$aa .byte $aa,$aa,$bb,$aa,$aa .byte $aa,$aa,$22,$aa,$aa .byte $aa,$aa,$62,$a2,$fa @@ -145,7 +145,7 @@ astro_walk_left10: .byte $aa,$8a,$8a,$aa,$aa .byte $aa,$bb,$88,$8a,$aa .byte $aa,$aa,$2b,$88,$aa - .byte $aa,$aa,$bb,$aa,$aa + .byte $aa,$a2,$bb,$aa,$aa .byte $aa,$ba,$bb,$aa,$aa .byte $aa,$aa,$22,$aa,$aa .byte $aa,$aa,$22,$aa,$aa diff --git a/demosplash/graphics/starbase/jail.png b/demosplash/graphics/starbase/jail.png index 916c74abce6349193047dcff3a315f519de2fe1f..6a4d8688bd01088e5bc31e2bb0078deef8cf4d5e 100644 GIT binary patch delta 4868 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,>($9613),>($9642),>($9671),>($96A0),>($96CF),>($96FE),>($972D) +.byte >($975C),>($978B),>($97BA),>($97E9),>($9818),>($9847),>($9876),>($98A5) +.byte >($98D4),>($9903),>($9932),>($9961),>($9990),>($99BF),>($99EE),>($9A1D) +.byte >($9A4C),>($9A7B),>($9AAA),>($9AD9),>($9B08),>($9B37),>($9B66),>($9B95) +.byte >($9BC4),>($9BF3),>($9C22),>($9C51),>($9C80),>($9CAF),>($9CDE),>($9D0D) +.byte >($9D3C),>($9D6B),>($9D9A),>($9DC9),>($9DF8),>($9E27),>($9E56),>($9E85) +.byte >($9EB4),>($9EE3),>($9F12),>($9F41),>($9F70),>($9F9F),>($9FCE),>($9FFD) +.byte >($A02C),>($A05B),>($A08A),>($A0B9),>($A0E8),>($A117),>($A146),>($A175) +.byte >($A1A4),>($A1D3),>($A202),>($A231),>($A260),>($A28F),>($A2BE),>($A2ED) +.byte >($A31C),>($A34B),>($A37A),>($A3A9),>($A3D8),>($A407),>($A436),>($A465) +.byte >($A494),>($A4C3),>($A4F2),>($A521),>($A550),>($A57F),>($A5AE),>($A5DD) +.byte >($A60C),>($A63B),>($A66A),>($A699),>($A6C8),>($A6F7),>($A726),>($A755) +.byte >($A784),>($A7B3),>($A7E2),>($A811),>($A840),>($A86F),>($A89E),>($A8CD) +.byte >($A8FC),>($A92B),>($A95A),>($A989),>($A9B8),>($A9E7),>($AA16),>($AA45) +.byte >($AA74),>($AAA3),>($AAD2),>($AB01),>($AB30),>($AB5F),>($AB8E),>($ABBD) +.byte >($ABEC),>($AC1B),>($AC4A),>($AC79),>($ACA8),>($ACD7),>($AD06),>($AD35) +y_lookup2_l: +.byte <($95E4),<($9613),<($9642),<($9671),<($96A0),<($96CF),<($96FE),<($972D) +.byte <($975C),<($978B),<($97BA),<($97E9),<($9818),<($9847),<($9876),<($98A5) +.byte <($98D4),<($9903),<($9932),<($9961),<($9990),<($99BF),<($99EE),<($9A1D) +.byte <($9A4C),<($9A7B),<($9AAA),<($9AD9),<($9B08),<($9B37),<($9B66),<($9B95) +.byte <($9BC4),<($9BF3),<($9C22),<($9C51),<($9C80),<($9CAF),<($9CDE),<($9D0D) +.byte <($9D3C),<($9D6B),<($9D9A),<($9DC9),<($9DF8),<($9E27),<($9E56),<($9E85) +.byte <($9EB4),<($9EE3),<($9F12),<($9F41),<($9F70),<($9F9F),<($9FCE),<($9FFD) +.byte <($A02C),<($A05B),<($A08A),<($A0B9),<($A0E8),<($A117),<($A146),<($A175) +.byte <($A1A4),<($A1D3),<($A202),<($A231),<($A260),<($A28F),<($A2BE),<($A2ED) +.byte <($A31C),<($A34B),<($A37A),<($A3A9),<($A3D8),<($A407),<($A436),<($A465) +.byte <($A494),<($A4C3),<($A4F2),<($A521),<($A550),<($A57F),<($A5AE),<($A5DD) +.byte <($A60C),<($A63B),<($A66A),<($A699),<($A6C8),<($A6F7),<($A726),<($A755) +.byte <($A784),<($A7B3),<($A7E2),<($A811),<($A840),<($A86F),<($A89E),<($A8CD) +.byte <($A8FC),<($A92B),<($A95A),<($A989),<($A9B8),<($A9E7),<($AA16),<($AA45) +.byte <($AA74),<($AAA3),<($AAD2),<($AB01),<($AB30),<($AB5F),<($AB8E),<($ABBD) +.byte <($ABEC),<($AC1B),<($AC4A),<($AC79),<($ACA8),<($ACD7),<($AD06),<($AD35) diff --git a/demosplash/starbase.s b/demosplash/starbase.s index 095c7483..f176a36b 100644 --- a/demosplash/starbase.s +++ b/demosplash/starbase.s @@ -57,17 +57,9 @@ wait_loop: rts .include "starbase_action.s" -;.include "text_print.s" -;.include "gr_pageflip.s" -;.include "gr_unrle.s" -;.include "gr_fast_clear.s" -;.include "gr_copy.s" .include "gr_hlin.s" -.include "gr_twoscreen_scroll.s" .include "gr_putsprite.s" -;.include "gr_putsprite_flipped.s" .include "gr_putsprite_crop.s" -;.include "gr_offsets.s" .include "keyboard.s" .include "starbase_astronaut.s" diff --git a/demosplash/starbase_action.s b/demosplash/starbase_action.s index 2f3f8142..965513cb 100644 --- a/demosplash/starbase_action.s +++ b/demosplash/starbase_action.s @@ -10,7 +10,6 @@ starbase_init: lda #0 sta WHICH_ROOM sta BG_SCROLL - sta DIRECTION ; left sta LASER_OUT sta BLAST_OUT sta CHARGER_COUNT @@ -21,18 +20,16 @@ starbase_init: sta ACTION_TRIGGERED sta ACTION_COUNT + lda #1 + sta DIRECTION ; right + lda #100 sta GUN_CHARGE ;==================== ; reset doors - lda #DOOR_STATUS_CLOSED - sta c4_r0_door0_status - sta c4_r0_door1_status lda #DOOR_STATUS_LOCKED - sta c4_r0_door2_status - sta c4_r0_door3_status - sta c4_r0_door4_status + sta c4_r0_door0_status ;=============== ; set up aliens @@ -61,21 +58,12 @@ starbase_init: lda #0 sta ASTRONAUT_X - lda #20 ; start offscreen + lda #10 sta ASTRONAUT_Y -; lda #28 -; sta fall_down_destination_smc+1 - -; lda #28 -; sta fall_sideways_destination_smc+1 - - lda #P_STANDING ; fall into level + lda #P_STANDING sta ASTRONAUT_STATE -; lda #$2c -; sta falling_stop_smc - rts @@ -115,12 +103,12 @@ starbase_setup_room: bne room1 ;====================== - ; Room0 with recharger + ; Room0 with ramp room0: ; set up doors - lda #5 + lda #2 sta NUM_DOORS lda #(jail_rle) @@ -344,47 +328,10 @@ ootw_room_already_set: ;============================ ;============================ - ; City Loop + ; starbase Loop ;============================ ;============================ -city_loop: - - ;====================================== - ; draw split screen if falling into pit - ;====================================== - - ; only fall in room3 - lda WHICH_ROOM - cmp #3 - bne no_scroll - - lda BG_SCROLL - beq no_scroll - - lda FRAMEL ; slow down a bit - and #$1 - bne no_scroll_progress - - inc BG_SCROLL - inc BG_SCROLL -no_scroll_progress: - - ldy BG_SCROLL - cpy #48 - bne scroll_it - - ; exit to next room when done scrolling - - lda #0 - sta BG_SCROLL - lda #4 - sta WHICH_ROOM - rts - -scroll_it: - jsr gr_twoscreen_scroll -no_scroll: - +starbase_loop: ;================================ ;================================ @@ -394,101 +341,6 @@ no_scroll: jsr gr_copy_to_current - - ;========================= - ;========================= - ; Handle Falling into Pit - ;========================= - ;========================= - - lda WHICH_ROOM - cmp #3 - beq check_falling - cmp #4 - beq check_falling - - jmp not_falling - -check_falling: - ; only fall if falling sideways/down - lda ASTRONAUT_STATE - cmp #P_FALLING_SIDEWAYS - beq falling_sideways - cmp #P_FALLING_DOWN - beq falling_down - - jmp not_falling - -falling_sideways: - ; if falling sideways - - lda BG_SCROLL - cmp #16 - bcc before ; blt - - lda FRAMEL - and #$3 - bne no_fall_undo - - dec ASTRONAUT_X - dec ASTRONAUT_Y - dec ASTRONAUT_Y - dec ASTRONAUT_Y - dec ASTRONAUT_Y -no_fall_undo: - jmp scroll_check -before: - - lda FRAMEL - and #$1 - bne extra_boost - - inc ASTRONAUT_X -extra_boost: - jmp scroll_check - - -falling_down: - ; if falling down, and Y>=32, then impale - lda ASTRONAUT_Y - cmp #32 - bcc scroll_check ; blt - - lda #9 - sta ASTRONAUT_X - - lda #38 - sta ASTRONAUT_Y - - lda #0 - sta GAIT - - lda #P_IMPALED - sta ASTRONAUT_STATE - - jmp not_falling - -scroll_check: - lda BG_SCROLL ; if done scrolling, re-enable falling - bne scroll_bg_check22 - - lda #$2c ; re-enable falling - sta falling_stop_smc - jmp not_far_enough - -scroll_bg_check22: - - lda ASTRONAUT_Y ; once Y=22, stop falling (scroll instead) - cmp #22 - bcc not_far_enough ; blt - - lda #$4c ; disable yinc in falling - sta falling_stop_smc - -not_far_enough: - -not_falling: - ;================================== ; draw background action ;================================== @@ -507,9 +359,9 @@ bg_room0: tay - lda #11 + lda #0 sta XPOS - lda #24 + lda #26 sta YPOS lda recharge_bg_progression,Y @@ -525,21 +377,6 @@ bg_room0: lsr tay - lda #5 - sta XPOS - lda #24 - sta YPOS - - lda recharge_sprite_progression,Y - sta INL - lda recharge_sprite_progression+1,Y - sta INH - - - - jsr put_sprite - - c4_no_bg_action: @@ -551,7 +388,7 @@ c4_no_bg_action: jsr handle_keypress ;=============================== - ; move physicist + ; move astronaut ;=============================== jsr move_astronaut @@ -569,84 +406,41 @@ c4_no_bg_action: done_room_limits: - ;============================= - ;============================= - ; Detect if falling off ledge - ;============================= - ;============================= + ;=============== + ; draw astronaut + ;=============== - ; only fall in room#3 + ; only have slope in room0 lda WHICH_ROOM - cmp #3 - bne regular_room - - ; don't start fall if impaled or already falling - lda ASTRONAUT_STATE - cmp #P_IMPALED - beq regular_room - cmp #P_FALLING_DOWN - beq regular_room - cmp #P_FALLING_SIDEWAYS - beq regular_room - - - ; only start falling if y>=18 - lda ASTRONAUT_Y - cmp #18 - bcc regular_room ; blt - - ; only start falling if x>=7 and positive - lda ASTRONAUT_X - bmi regular_room - cmp #7 - bcc regular_room ; blt - - lda ASTRONAUT_STATE - cmp #P_JUMPING - beq fall_sideways - - ; if not jumping then fall down - - lda #P_FALLING_DOWN - sta ASTRONAUT_STATE - - lda #2 - sta BG_SCROLL - - jmp regular_room - -fall_sideways: - - lda #P_FALLING_SIDEWAYS - sta ASTRONAUT_STATE - - lda #2 - sta BG_SCROLL - -regular_room: - - ;=============== - ; draw physicist - ;=============== - - ; if in charger, draw that - lda WHICH_ROOM ; charger only room0 bne just_draw_astronaut + ; adjust y for slope + lda ASTRONAUT_X - cmp #10 - bne just_draw_astronaut + cmp #11 + bcc asstr_above ; blt - lda GUN_CHARGE - cmp #200 - bcs just_draw_astronaut ; bge + cmp #22 + bcs asstr_below ; bge - lda #P_STANDING - sta ASTRONAUT_STATE + sec + sbc #11 + and #$fe ; our sprite code only draws even y + adc #11 - jsr draw_charger + jmp asstr_adjust_y - jmp after_draw_astronaut +asstr_below: + lda #22 + jmp asstr_adjust_y + +asstr_above: + lda #10 + +asstr_adjust_y: + sta ASTRONAUT_Y + + jsr recalc_walk_collision just_draw_astronaut: jsr draw_astronaut @@ -687,18 +481,18 @@ no_draw_alien: ;======================== lda WHICH_ROOM - cmp #2 - beq c4_room2_cover + beq c4_room0_cover cmp #4 beq c4_room4_cover jmp c4_no_fg_cover -c4_room2_cover: + +c4_room0_cover: lda #0 sta XPOS - lda #18 + lda #6 sta YPOS lda #