diff --git a/games/keen/mars.s b/games/keen/mars.s index e6084cd0..ba6e108c 100644 --- a/games/keen/mars.s +++ b/games/keen/mars.s @@ -42,23 +42,9 @@ plenty_of_keens: sta FRAMEL sta FRAMEH - sta KEEN_WALKING - sta KEEN_JUMPING -; sta LEVEL_OVER - sta LASER_OUT - sta KEEN_XL - sta KEEN_FALLING - sta KEEN_SHOOTING - - lda #4 sta DRAW_PAGE -; lda #18 -; sta KEEN_X -; lda #11 -; sta KEEN_Y - ; see if returning and it game over lda LEVEL_OVER @@ -224,53 +210,33 @@ return_to_title: ;========================= ; draw keen ;========================= - ; D32 + draw_keen: - lda MARS_Y - and #1 - beq draw_keen_even - -draw_keen_odd: - - ; calculate address of MARS_Y/2 - - lda MARS_Y - and #$FE - tay - lda gr_offsets,Y - sta OUTL - lda gr_offsets+1,Y + sec + lda MARS_TILEX + sbc TILEMAP_X + asl clc - adc DRAW_PAGE - sta OUTH + adc MARS_X + sta XPOS - ldy MARS_X - - lda (OUTL),Y - and #$0f - ora #$D0 - sta (OUTL),Y - - lda MARS_Y + sec + lda MARS_TILEY + sbc TILEMAP_Y + asl + asl clc - adc #2 + adc MARS_Y + sta YPOS - and #$FE - tay - lda gr_offsets,Y - sta OUTL - lda gr_offsets+1,Y - clc - adc DRAW_PAGE - sta OUTH + ldx #keen_sprite_tiny + stx INL + sta INH + jsr put_sprite_crop - ldy MARS_X - - lda #$23 - sta (OUTL),Y - - rts + rts ; tail call @@ -482,7 +448,7 @@ parts_zx02: .include "mars_sfx.s" .include "longer_sound.s" - + .include "gr_putsprite_crop.s" mars_data_zx02: .incbin "maps/mars_new.zx02" @@ -490,3 +456,9 @@ mars_data_zx02: ; dummy enemy_data_out: enemy_data_tilex: + + +keen_sprite_tiny: + .byte 1,2 + .byte $DA + .byte $23 diff --git a/games/keen/mars_keyboard.s b/games/keen/mars_keyboard.s index 00f31dce..92b3c4f3 100644 --- a/games/keen/mars_keyboard.s +++ b/games/keen/mars_keyboard.s @@ -1,3 +1,5 @@ +MAX_TILE_Y = 57 ; 69-12 + ;============================== ; Handle Keypress ;============================== @@ -200,12 +202,45 @@ check_up: bne check_down up_pressed: - ldy MARS_X - ldx MARS_Y - dex - jsr check_valid_feet - bcc done_up_pressed - dec MARS_Y + lda MARS_TILEY + cmp #0 ; not needed + beq move_keen_up + + sec + lda TILEMAP_Y + sbc MARS_TILEY + + cmp #4 + bcc scroll_keen_up + +move_keen_up: + + lda MARS_Y + beq keen_up_not2 +move_keen_up2: + lda #0 + sta MARS_Y + jmp done_check_up + +keen_up_not2: + dec MARS_TILEY + lda #2 + sta MARS_Y + jmp done_check_up + +scroll_keen_up: + dec TILEMAP_Y + dec MARS_TILEY + jsr copy_tilemap_subset + + +; ldy MARS_X +; ldx MARS_Y +; dex +; jsr check_valid_feet +; bcc done_up_pressed +; dec MARS_Y +done_check_up: done_up_pressed: jmp done_keypress @@ -215,12 +250,41 @@ check_down: cmp #$0A bne check_space down_pressed: - ldy MARS_X - ldx MARS_Y - inx - jsr check_valid_feet - bcc done_up_pressed - inc MARS_Y + + sec + lda MARS_TILEY + sbc TILEMAP_Y + cmp #8 + bcc move_keen_down + + lda TILEMAP_Y + cmp #MAX_TILE_Y + bcs move_keen_down + + jmp scroll_keen_down + +move_keen_down: + + lda #0 + sta MARS_Y + inc MARS_TILEY + jmp done_check_down + +scroll_keen_down: + lda #0 + sta MARS_Y + inc TILEMAP_Y + inc MARS_TILEY + jsr copy_tilemap_subset + +; ldy MARS_X +; ldx MARS_Y +; inx +; jsr check_valid_feet +; bcc done_up_pressed +; inc MARS_Y +done_check_down: + done_down_pressed: jmp done_keypress