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 916c74ab..6a4d8688 100644 Binary files a/demosplash/graphics/starbase/jail.png and b/demosplash/graphics/starbase/jail.png differ diff --git a/demosplash/graphics/starbase/starbase.inc b/demosplash/graphics/starbase/starbase.inc index ccfecd41..7fc3c575 100644 --- a/demosplash/graphics/starbase/starbase.inc +++ b/demosplash/graphics/starbase/starbase.inc @@ -5,14 +5,14 @@ jail_rle: .byte $28 ; ysize=48 .byte $50, $A0,$01,$A0, $A0,$16,$55, $00, $A0,$01,$AA, $55, $A0,$01,$AA .byte $55, $76, $55, $00, $A0,$01,$AA, $55, $A0,$01,$AA .byte $55, $76, $55, $00, $A0,$01,$AA, $55, $A0,$01,$AA - .byte $55, $76, $A5,$55, $95, $99, $AD,$55, $00 + .byte $55, $76, $A9,$55, $95, $99, $A9,$55, $00 .byte $A0,$01,$AA, $55, $A0,$01,$AA, $55, $77, $55, $00 .byte $A0,$01,$AA, $55, $A0,$01,$AA, $55, $77, $55, $00 - .byte $A0,$01,$AA, $55, $A0,$01,$AA, $55, $77, $A6,$55, $99 - .byte $95, $AC,$55, $00, $A0,$01,$AA, $55, $A0,$01,$AA, $55 + .byte $A0,$01,$AA, $55, $A0,$01,$AA, $55, $77, $AA,$55, $99 + .byte $95, $A8,$55, $00, $A0,$01,$AA, $55, $A0,$01,$AA, $55 .byte $77, $55, $00, $A0,$01,$AA, $55, $A0,$01,$AA, $55 .byte $77, $55, $00, $A0,$01,$AA, $55, $A0,$01,$AA, $55 - .byte $77, $A6,$55, $59, $AD,$55, $00, $A0,$01,$AA, $55 + .byte $77, $AA,$55, $59, $A9,$55, $00, $A0,$01,$AA, $55 .byte $A0,$01,$AA, $55, $77, $55, $00, $A0,$01,$AA, $55 .byte $A0,$01,$AA, $55, $77, $55, $00, $A0,$01,$AA, $55 .byte $A0,$01,$AA, $55, $77, $A0,$14,$55, $00, $A0,$01,$AA, $55 @@ -26,10 +26,11 @@ jail_rle: .byte $28 ; ysize=48 .byte $44,$44, $94, $A6,$44, $AB,$55, $45, $A0,$10,$44, $49 .byte $94, $99, $44,$44, $99,$99, $A5,$44, $AA,$05, $04 .byte $A0,$11,$44, $49, $44, $49, $44,$44, $49, $A6,$44 - .byte $AB,$77, $70, $04, $A0,$1B,$44, $AD,$77, $70, $04 - .byte $A0,$19,$44, $AF,$77, $70, $04, $A0,$17,$44, $A0,$11,$77, $70 - .byte $04, $A0,$15,$44, $A0,$13,$77, $70, $04, $A0,$13,$44, $A0,$15,$77 - .byte $70, $A0,$12,$04, $A0,$C8,$77 + .byte $71,$71, $A9,$77, $70, $04, $A0,$1B,$44, $AD,$77, $70 + .byte $04, $A0,$19,$44, $AF,$77, $70, $04, $A0,$17,$44, $A0,$11,$77 + .byte $70, $04, $A0,$15,$44, $A0,$13,$77, $70, $04, $A0,$13,$44 + .byte $A0,$15,$77, $70, $A0,$12,$04, $A0,$78,$77, $17,$17, $A0,$26,$77, $A3,$11 + .byte $17, $A0,$24,$77 .byte $A1 hallway_rle: .byte $28 ; ysize=48 .byte $A3,$55, $A0,$11,$AA, $AD,$55, $A7,$AA, $55,$55, $A0,$01,$A5, $A0,$11,$AA diff --git a/demosplash/offsets_table2.s b/demosplash/offsets_table2.s new file mode 100644 index 00000000..3328f104 --- /dev/null +++ b/demosplash/offsets_table2.s @@ -0,0 +1,34 @@ +y_lookup2_h: +.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) +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 #