keen: update start position
keen comes through the door, he doesn't drop in from the sky like that maniac duke nukem
This commit is contained in:
parent
fb1cf56ec9
commit
018f407828
|
@ -42,11 +42,13 @@ Status:
|
|||
* 11223344 * 20000 * 5 * N *
|
||||
|
||||
|
||||
Level1:
|
||||
in png: X=80 to 543, Y=12 to 80 (tiles 4x4)
|
||||
x=0 to 116 Y=0..17
|
||||
|
||||
start position: in png 88,65
|
||||
tile position = 0,5
|
||||
keen position = 2,24 (remember, tiles 2 bytes high)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
tilemap copies
|
||||
|
||||
|
|
|
@ -60,25 +60,24 @@ keen_start:
|
|||
lda #1
|
||||
sta FIREPOWER
|
||||
|
||||
; lda #2 ; draw twice (both pages)
|
||||
; sta UPDATE_STATUS
|
||||
|
||||
; lda #7
|
||||
; sta HEALTH
|
||||
|
||||
lda #4
|
||||
sta DRAW_PAGE
|
||||
|
||||
lda #18
|
||||
; Level 1
|
||||
; start at 2,24 (remember tiles 2 bytes high even though 4 pixels)
|
||||
; but with reference to starting tilemap (0,5) should be
|
||||
; 2,8?
|
||||
|
||||
lda #2
|
||||
sta KEEN_X
|
||||
lda #0
|
||||
lda #24
|
||||
sta KEEN_Y
|
||||
lda #1
|
||||
sta KEEN_DIRECTION
|
||||
|
||||
|
||||
; jsr update_status_bar
|
||||
|
||||
;====================================
|
||||
; load level1 background
|
||||
;====================================
|
||||
|
@ -107,15 +106,14 @@ keen_start:
|
|||
;====================================
|
||||
; copy in tilemap subset
|
||||
;====================================
|
||||
; copies local 16x10 tilemap to $bc00
|
||||
; we start out assuming position is 28,0
|
||||
; we copy in full screen, 40x48 = 20x12 tiles
|
||||
; we start out assuming position is 0,5
|
||||
|
||||
|
||||
; note 16x10 is 32*40
|
||||
; if we want full screen it should be 40x48 = 20x12
|
||||
|
||||
lda #28
|
||||
sta TILEMAP_X
|
||||
lda #0
|
||||
sta TILEMAP_X
|
||||
lda #5
|
||||
sta TILEMAP_Y
|
||||
|
||||
jsr copy_tilemap_subset
|
||||
|
@ -128,10 +126,6 @@ keen_start:
|
|||
|
||||
keen_loop:
|
||||
|
||||
; copy over background
|
||||
|
||||
; jsr gr_copy_to_current
|
||||
|
||||
; draw tilemap
|
||||
|
||||
jsr draw_tilemap
|
||||
|
@ -152,10 +146,6 @@ keen_loop:
|
|||
|
||||
; jsr check_open_door
|
||||
|
||||
; draw a status bar
|
||||
|
||||
; jsr draw_status_bar
|
||||
|
||||
jsr page_flip
|
||||
|
||||
jsr handle_keypress
|
||||
|
@ -185,9 +175,6 @@ no_frame_oflo:
|
|||
|
||||
jmp done_with_keen
|
||||
|
||||
|
||||
|
||||
|
||||
do_keen_loop:
|
||||
|
||||
; delay
|
||||
|
@ -201,7 +188,7 @@ done_with_keen:
|
|||
bit KEYRESET ; clear keypress
|
||||
|
||||
|
||||
lda #LOAD_TITLE
|
||||
lda #LOAD_MARS
|
||||
sta WHICH_LOAD
|
||||
|
||||
rts ; exit back
|
||||
|
|
|
@ -110,19 +110,32 @@ check_left:
|
|||
bne check_right
|
||||
left_pressed:
|
||||
|
||||
;===============================
|
||||
; left pressed
|
||||
; if facing left, walk left
|
||||
; if facing right and walking, stop
|
||||
; if facing right and not walking, face left
|
||||
|
||||
lda KEEN_DIRECTION
|
||||
cmp #$ff ; check if facing left
|
||||
bne face_left
|
||||
bne left_facing_right
|
||||
|
||||
lda #1
|
||||
lda #4
|
||||
sta KEEN_WALKING
|
||||
jmp done_left_pressed
|
||||
|
||||
face_left:
|
||||
lda #$ff
|
||||
sta KEEN_DIRECTION
|
||||
left_facing_right:
|
||||
lda KEEN_WALKING
|
||||
beq left_not_walking
|
||||
|
||||
lda #0
|
||||
sta KEEN_WALKING
|
||||
beq done_left_pressed ; bra
|
||||
|
||||
left_not_walking:
|
||||
|
||||
lda #$ff
|
||||
sta KEEN_DIRECTION
|
||||
|
||||
done_left_pressed:
|
||||
jmp done_keypress
|
||||
|
@ -131,25 +144,65 @@ check_right:
|
|||
cmp #'D'
|
||||
beq right_pressed
|
||||
cmp #$15 ; right key
|
||||
bne check_up
|
||||
bne check_jump_right
|
||||
|
||||
|
||||
;===============================
|
||||
; right pressed
|
||||
; if facing right, walk right
|
||||
; if facing left and walking, stop
|
||||
; if facing left and not walking, face right
|
||||
|
||||
right_pressed:
|
||||
lda KEEN_DIRECTION
|
||||
cmp #$1 ; check if facing right
|
||||
bne face_right
|
||||
bne right_facing_left
|
||||
|
||||
lda #1
|
||||
lda #4
|
||||
sta KEEN_WALKING
|
||||
jmp done_left_pressed
|
||||
|
||||
face_right:
|
||||
lda #$1
|
||||
sta KEEN_DIRECTION
|
||||
right_facing_left:
|
||||
lda KEEN_WALKING
|
||||
beq right_not_walking
|
||||
|
||||
lda #0
|
||||
sta KEEN_WALKING
|
||||
beq done_right_pressed ; bra
|
||||
|
||||
right_not_walking:
|
||||
lda #$1
|
||||
sta KEEN_DIRECTION
|
||||
|
||||
|
||||
done_right_pressed:
|
||||
jmp done_keypress
|
||||
|
||||
check_jump_right:
|
||||
cmp #'E'
|
||||
bne check_up
|
||||
|
||||
jump_right:
|
||||
|
||||
; jump
|
||||
lda KEEN_JUMPING
|
||||
bne done_right_pressed ; don't jump if already jumping
|
||||
|
||||
lda KEEN_FALLING
|
||||
bne done_right_pressed ; don't jump if falling
|
||||
|
||||
lda #JUMP_HEIGHT
|
||||
sta KEEN_JUMPING
|
||||
|
||||
jsr jump_noise
|
||||
|
||||
lda #1
|
||||
sta KEEN_DIRECTION
|
||||
lda #10
|
||||
sta KEEN_WALKING
|
||||
|
||||
jmp done_keypress
|
||||
|
||||
check_up:
|
||||
cmp #'W'
|
||||
beq up_pressed
|
||||
|
|
|
@ -14,7 +14,7 @@ TILE_COLS = 20
|
|||
move_keen:
|
||||
|
||||
lda #0
|
||||
sta SUPPRESS_WALK
|
||||
sta SUPPRESS_WALK ; ????
|
||||
|
||||
jsr keen_get_feet_location ; get location of feet
|
||||
|
||||
|
@ -24,60 +24,64 @@ move_keen:
|
|||
|
||||
jsr handle_jumping ; handle jumping
|
||||
|
||||
lda KEEN_WALKING
|
||||
|
||||
lda KEEN_WALKING ; if not walking, we're done
|
||||
beq done_move_keen
|
||||
|
||||
lda SUPPRESS_WALK
|
||||
dec KEEN_WALKING ; decrement walk count
|
||||
|
||||
lda SUPPRESS_WALK ; why????
|
||||
bne done_move_keen
|
||||
|
||||
lda KEEN_DIRECTION
|
||||
lda KEEN_DIRECTION ; check direction
|
||||
bmi move_left
|
||||
|
||||
lda KEEN_X
|
||||
cmp #22
|
||||
lda KEEN_X ; if X more than 22
|
||||
cmp #22 ; scroll screen rather than keen
|
||||
bcc keen_walk_right
|
||||
|
||||
keen_scroll_right:
|
||||
|
||||
clc
|
||||
clc ; location is 8:8 fixed point
|
||||
lda KEEN_XL
|
||||
adc #KEEN_SPEED
|
||||
adc #KEEN_SPEED ; add in speed
|
||||
sta KEEN_XL
|
||||
bcc skip_keen_scroll_right
|
||||
bcc skip_keen_scroll_right ; if carry out we scroll
|
||||
|
||||
inc TILEMAP_X
|
||||
inc TILEMAP_X ; scroll screen to right
|
||||
|
||||
jsr copy_tilemap_subset
|
||||
jsr copy_tilemap_subset ; update tilemap
|
||||
|
||||
skip_keen_scroll_right:
|
||||
|
||||
jmp done_move_keen
|
||||
|
||||
keen_walk_right:
|
||||
lda KEEN_XL
|
||||
lda KEEN_XL ; get 8:8 fixed
|
||||
clc
|
||||
adc #KEEN_SPEED
|
||||
adc #KEEN_SPEED ; add in speed
|
||||
sta KEEN_XL
|
||||
bcc dwr_noflo
|
||||
inc KEEN_X
|
||||
|
||||
bcc dwr_noflo ; if no overflow
|
||||
inc KEEN_X ; otherwise update X
|
||||
dwr_noflo:
|
||||
jmp done_move_keen
|
||||
|
||||
move_left:
|
||||
|
||||
lda KEEN_X
|
||||
lda KEEN_X ; get current X
|
||||
cmp #14
|
||||
bcs keen_walk_left
|
||||
bcs keen_walk_left ; bge ; if >=14 walk
|
||||
|
||||
keen_scroll_left:
|
||||
keen_scroll_left: ; otherwise scroll
|
||||
|
||||
sec
|
||||
sec ; 8.8 fixed point
|
||||
lda KEEN_XL
|
||||
sbc #KEEN_SPEED
|
||||
sta KEEN_XL
|
||||
bcs skip_keen_scroll_left
|
||||
|
||||
dec TILEMAP_X
|
||||
dec TILEMAP_X ; scroll left
|
||||
|
||||
jsr copy_tilemap_subset
|
||||
|
||||
|
@ -151,7 +155,7 @@ collide_left_right:
|
|||
;===================
|
||||
|
||||
lda KEEN_DIRECTION
|
||||
beq done_keen_collide
|
||||
beq done_keen_collide ; ?
|
||||
|
||||
bmi check_left_collide
|
||||
|
||||
|
|
Loading…
Reference in New Issue