keen: sorta of working controls on mars again

This commit is contained in:
Vince Weaver 2024-04-11 22:03:05 -04:00
parent 5bd0d77d18
commit 358b05229e
2 changed files with 103 additions and 67 deletions

View File

@ -42,23 +42,9 @@ plenty_of_keens:
sta FRAMEL sta FRAMEL
sta FRAMEH 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 lda #4
sta DRAW_PAGE sta DRAW_PAGE
; lda #18
; sta KEEN_X
; lda #11
; sta KEEN_Y
; see if returning and it game over ; see if returning and it game over
lda LEVEL_OVER lda LEVEL_OVER
@ -224,53 +210,33 @@ return_to_title:
;========================= ;=========================
; draw keen ; draw keen
;========================= ;=========================
; D32
draw_keen: draw_keen:
lda MARS_Y sec
and #1 lda MARS_TILEX
beq draw_keen_even sbc TILEMAP_X
asl
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
clc clc
adc DRAW_PAGE adc MARS_X
sta OUTH sta XPOS
ldy MARS_X sec
lda MARS_TILEY
lda (OUTL),Y sbc TILEMAP_Y
and #$0f asl
ora #$D0 asl
sta (OUTL),Y
lda MARS_Y
clc clc
adc #2 adc MARS_Y
sta YPOS
and #$FE ldx #<keen_sprite_tiny
tay lda #>keen_sprite_tiny
lda gr_offsets,Y stx INL
sta OUTL sta INH
lda gr_offsets+1,Y jsr put_sprite_crop
clc
adc DRAW_PAGE
sta OUTH
ldy MARS_X rts ; tail call
lda #$23
sta (OUTL),Y
rts
@ -482,7 +448,7 @@ parts_zx02:
.include "mars_sfx.s" .include "mars_sfx.s"
.include "longer_sound.s" .include "longer_sound.s"
.include "gr_putsprite_crop.s"
mars_data_zx02: mars_data_zx02:
.incbin "maps/mars_new.zx02" .incbin "maps/mars_new.zx02"
@ -490,3 +456,9 @@ mars_data_zx02:
; dummy ; dummy
enemy_data_out: enemy_data_out:
enemy_data_tilex: enemy_data_tilex:
keen_sprite_tiny:
.byte 1,2
.byte $DA
.byte $23

View File

@ -1,3 +1,5 @@
MAX_TILE_Y = 57 ; 69-12
;============================== ;==============================
; Handle Keypress ; Handle Keypress
;============================== ;==============================
@ -200,12 +202,45 @@ check_up:
bne check_down bne check_down
up_pressed: up_pressed:
ldy MARS_X lda MARS_TILEY
ldx MARS_Y cmp #0 ; not needed
dex beq move_keen_up
jsr check_valid_feet
bcc done_up_pressed sec
dec MARS_Y 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: done_up_pressed:
jmp done_keypress jmp done_keypress
@ -215,12 +250,41 @@ check_down:
cmp #$0A cmp #$0A
bne check_space bne check_space
down_pressed: down_pressed:
ldy MARS_X
ldx MARS_Y sec
inx lda MARS_TILEY
jsr check_valid_feet sbc TILEMAP_Y
bcc done_up_pressed cmp #8
inc MARS_Y 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: done_down_pressed:
jmp done_keypress jmp done_keypress