mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-06-08 00:29:35 +00:00
keen: more work on item pickup
This commit is contained in:
parent
e2327896d2
commit
afaea8e59c
|
@ -2,10 +2,67 @@
|
||||||
;==================
|
;==================
|
||||||
; check for items
|
; check for items
|
||||||
;==================
|
;==================
|
||||||
; X holds ??
|
; X holds tile offset of feet?
|
||||||
check_item:
|
check_item:
|
||||||
|
|
||||||
|
lda tilemap,X
|
||||||
|
cmp #27
|
||||||
|
bcc done_check_item ; not an item
|
||||||
|
cmp #32
|
||||||
|
bcs done_check_item ; not an item
|
||||||
|
|
||||||
|
sec
|
||||||
|
sbc #27 ; subtract off to get index
|
||||||
|
|
||||||
|
; 0 = laser gun
|
||||||
|
; 1 = lollipop 100 pts
|
||||||
|
; 2 = book 1000 pts
|
||||||
|
; 3 = pizza 500 pts
|
||||||
|
; 4 = carbonated beverage 200 pts
|
||||||
|
; ? = bear 5000 pts
|
||||||
|
|
||||||
|
; keycards go here too...
|
||||||
|
|
||||||
|
; use value to update score
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
; erase
|
||||||
|
|
||||||
|
; FIXME: only erases small tilemap
|
||||||
|
; also need to update big
|
||||||
|
|
||||||
|
lda #1 ; plain tile
|
||||||
|
sta tilemap,X
|
||||||
|
|
||||||
|
; big tilemap:
|
||||||
|
; tilemap
|
||||||
|
|
||||||
|
lda KEEN_Y ; divide by 4 as tile 4 blocks tall
|
||||||
|
lsr
|
||||||
|
lsr
|
||||||
|
|
||||||
|
clc
|
||||||
|
adc TILEMAP_Y ; add in tilemap Y (each row 256 bytes)
|
||||||
|
adc #>big_tilemap ; add in offset of start
|
||||||
|
sta btc_smc+2
|
||||||
|
|
||||||
|
lda TILEMAP_X ; add in X offset of tilemap
|
||||||
|
sta btc_smc+1
|
||||||
|
|
||||||
|
lda KEEN_X
|
||||||
|
lsr
|
||||||
|
tay
|
||||||
|
iny ; why add 1????
|
||||||
|
|
||||||
|
lda #0 ; background tile
|
||||||
|
btc_smc:
|
||||||
|
sta $b000,Y
|
||||||
|
|
||||||
|
; play sound
|
||||||
|
jsr pickup_noise
|
||||||
|
|
||||||
|
.if 0
|
||||||
check_red_key:
|
check_red_key:
|
||||||
lda tilemap,X
|
lda tilemap,X
|
||||||
cmp #31 ; red key
|
cmp #31 ; red key
|
||||||
|
@ -44,6 +101,6 @@ check_blue_key:
|
||||||
jsr update_status_bar
|
jsr update_status_bar
|
||||||
|
|
||||||
jmp keen_check_head
|
jmp keen_check_head
|
||||||
|
.endif
|
||||||
done_check_item:
|
done_check_item:
|
||||||
rts
|
rts
|
||||||
|
|
|
@ -7,6 +7,10 @@
|
||||||
.include "hardware.inc"
|
.include "hardware.inc"
|
||||||
.include "common_defines.inc"
|
.include "common_defines.inc"
|
||||||
|
|
||||||
|
|
||||||
|
MAX_TILE_X = 96 ; 116 - 20
|
||||||
|
MAX_TILE_Y = 5 ; (34 - 24)/2 (maybe?)
|
||||||
|
|
||||||
keen_start:
|
keen_start:
|
||||||
;===================
|
;===================
|
||||||
; init screen
|
; init screen
|
||||||
|
|
|
@ -76,7 +76,7 @@ dwr_noflo:
|
||||||
move_left:
|
move_left:
|
||||||
|
|
||||||
;==============================
|
;==============================
|
||||||
; Move Keen Right
|
; Move Keen Left
|
||||||
;==============================
|
;==============================
|
||||||
; if (keen_x>=14) || (tilemap_x=0) walk
|
; if (keen_x>=14) || (tilemap_x=0) walk
|
||||||
; otherwise, scroll
|
; otherwise, scroll
|
||||||
|
@ -124,7 +124,6 @@ done_move_keen:
|
||||||
;=========================
|
;=========================
|
||||||
; keen collide
|
; keen collide
|
||||||
;=========================
|
;=========================
|
||||||
|
|
||||||
keen_collide:
|
keen_collide:
|
||||||
;==================
|
;==================
|
||||||
; check for item
|
; check for item
|
||||||
|
@ -213,22 +212,25 @@ done_keen_collide:
|
||||||
|
|
||||||
|
|
||||||
;=========================
|
;=========================
|
||||||
; check_jumping
|
; handle_jumping
|
||||||
;=========================
|
;=========================
|
||||||
handle_jumping:
|
handle_jumping:
|
||||||
|
|
||||||
lda KEEN_JUMPING
|
lda KEEN_JUMPING
|
||||||
beq done_handle_jumping
|
beq done_handle_jumping ; skip if not actually jumping
|
||||||
|
|
||||||
lda KEEN_Y
|
lda KEEN_Y ; make sure not off screen
|
||||||
beq dont_wrap_jump
|
beq dont_wrap_jump
|
||||||
|
|
||||||
dec KEEN_Y
|
dec KEEN_Y ; move up
|
||||||
dec KEEN_Y
|
dec KEEN_Y
|
||||||
|
|
||||||
dont_wrap_jump:
|
dont_wrap_jump:
|
||||||
dec KEEN_JUMPING
|
|
||||||
bne done_handle_jumping
|
dec KEEN_JUMPING ; slow jump
|
||||||
|
bne done_handle_jumping ; if positive still going up
|
||||||
|
|
||||||
|
; otherwise hit peak, start falling
|
||||||
lda #1 ; avoid gap before falling triggered
|
lda #1 ; avoid gap before falling triggered
|
||||||
sta KEEN_FALLING
|
sta KEEN_FALLING
|
||||||
|
|
||||||
|
@ -358,12 +360,19 @@ check_falling:
|
||||||
lda #1
|
lda #1
|
||||||
sta KEEN_FALLING
|
sta KEEN_FALLING
|
||||||
|
|
||||||
; scroll but only if Y>=20 (YDEFAULT)
|
;===================================================
|
||||||
|
; scroll but only if KEEN_Y>=20 (YDEFAULT)
|
||||||
|
; and TILEMAP_Y < MAX_TILE_Y
|
||||||
|
|
||||||
|
lda TILEMAP_Y
|
||||||
|
cmp #MAX_TILE_Y
|
||||||
|
bcs keen_fall ; bge
|
||||||
|
|
||||||
lda KEEN_Y
|
lda KEEN_Y
|
||||||
cmp #YDEFAULT
|
cmp #YDEFAULT
|
||||||
bcs scroll_fall ; bge
|
bcs scroll_fall ; bge
|
||||||
|
|
||||||
|
keen_fall:
|
||||||
inc KEEN_Y
|
inc KEEN_Y
|
||||||
inc KEEN_Y
|
inc KEEN_Y
|
||||||
jmp done_check_falling
|
jmp done_check_falling
|
||||||
|
|
Loading…
Reference in New Issue
Block a user