mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-05-31 21:41:32 +00:00
keen: more fixes to scrolling
This commit is contained in:
parent
2c2d0cf017
commit
bc6f040d71
|
@ -28,7 +28,7 @@ laser_check_tiles:
|
|||
sta INH
|
||||
lda tilemap_lookup_low,Y
|
||||
clc
|
||||
adc LASTER_TILEX
|
||||
adc LASER_TILEX
|
||||
sta INL
|
||||
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
; Level 1 (Border Town)
|
||||
|
||||
MAX_TILE_X = 96 ; 116 - 20
|
||||
MAX_TILE_Y = 5 ; (34 - 24)/2 (maybe?)
|
||||
MAX_TILE_X = 116 ; 116 wide
|
||||
MAX_TILE_Y = 16 ; 16 tall
|
||||
|
||||
START_KEEN_TILEX = 1
|
||||
START_KEEN_TILEY = 13
|
||||
|
@ -10,3 +10,6 @@ START_TILEMAP_X = 0
|
|||
START_TILEMAP_Y = 5
|
||||
|
||||
NUM_ENEMIES = 8
|
||||
|
||||
HARDTOP_TILES = 32 ; start at 32
|
||||
ALLHARD_TILES = 40 ; start at 40
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
; Level 2 (First Shrine)
|
||||
|
||||
MAX_TILE_X = 96 ; 116 - 20
|
||||
MAX_TILE_Y = 26 ; 26 (maybe?)
|
||||
MAX_TILE_X = 20 ; 20 wide
|
||||
MAX_TILE_Y = 26 ; 26 high
|
||||
|
||||
START_KEEN_TILEX = 1
|
||||
START_KEEN_TILEY = 13
|
||||
|
@ -10,3 +10,7 @@ START_TILEMAP_X = 0
|
|||
START_TILEMAP_Y = 5
|
||||
|
||||
NUM_ENEMIES = 8
|
||||
|
||||
HARDTOP_TILES = 32 ; start at 32
|
||||
ALLHARD_TILES = 40 ; start at 40
|
||||
|
||||
|
|
|
@ -2,9 +2,6 @@ KEEN_SPEED = $80
|
|||
|
||||
YDEFAULT = 20
|
||||
|
||||
HARDTOP_TILES = 32 ; start at 32
|
||||
ALLHARD_TILES = 40 ; start at 40
|
||||
|
||||
TILE_COLS = 20
|
||||
|
||||
|
||||
|
@ -40,11 +37,11 @@ move_keen_early_out:
|
|||
;==============================
|
||||
; Move Keen Right
|
||||
;==============================
|
||||
; if (keen_tilex-tilemap_x<11) || (tilemap_x>96) walk
|
||||
; if (keen_tilex-tilemap_x<11) || (tilemap_x> (maxtile-20) ) walk
|
||||
; otherwise, scroll
|
||||
move_right:
|
||||
lda TILEMAP_X
|
||||
cmp #96 ; 540-80 = 460/4 = 115-20 = 95
|
||||
cmp #(MAX_TILE_X-20)
|
||||
bcs keen_walk_right
|
||||
|
||||
sec
|
||||
|
@ -180,6 +177,7 @@ keen_check_head:
|
|||
sec
|
||||
lda KEEN_TILEY
|
||||
sbc #1
|
||||
; bmi offscreen?
|
||||
|
||||
tay
|
||||
lda tilemap_lookup_high,Y
|
||||
|
@ -204,6 +202,8 @@ collide_head_l:
|
|||
cmp #ALLHARD_TILES
|
||||
bcc collide_left_right ; blt
|
||||
|
||||
; fallthrough to get other
|
||||
|
||||
collide_head_r:
|
||||
iny
|
||||
lda (INL),Y
|
||||
|
@ -230,6 +230,7 @@ collide_left_right:
|
|||
; collide left/right
|
||||
;===================
|
||||
|
||||
|
||||
clc
|
||||
lda KEEN_TILEY
|
||||
adc #1 ; look at feet
|
||||
|
@ -253,6 +254,12 @@ collide_left_right:
|
|||
|
||||
check_right_collide:
|
||||
|
||||
lda KEEN_TILEY
|
||||
cmp #(MAX_TILE_X-1) ; stop at right edge of screen
|
||||
beq keen_stop
|
||||
|
||||
|
||||
|
||||
; if KEEN_X=0, collide +1
|
||||
; if KEEN_X=1, collide +2
|
||||
|
||||
|
@ -268,12 +275,17 @@ right_collide_noextra:
|
|||
cmp #ALLHARD_TILES
|
||||
bcc done_keen_collide ; blt
|
||||
|
||||
lda #1 ;
|
||||
sta SUPPRESS_WALK
|
||||
jmp done_keen_collide
|
||||
bcs keen_stop
|
||||
; lda #1 ;
|
||||
; sta SUPPRESS_WALK
|
||||
; jmp done_keen_collide
|
||||
|
||||
check_left_collide:
|
||||
|
||||
lda KEEN_TILEX ; stop at left edge of screen
|
||||
beq keen_stop
|
||||
|
||||
|
||||
ldy #0
|
||||
lda (INL),Y
|
||||
|
||||
|
@ -282,6 +294,7 @@ check_left_collide:
|
|||
cmp #ALLHARD_TILES
|
||||
bcc done_keen_collide ; blt
|
||||
|
||||
keen_stop:
|
||||
lda #1
|
||||
sta SUPPRESS_WALK
|
||||
jmp done_keen_collide
|
||||
|
@ -310,16 +323,17 @@ actually_jumping:
|
|||
; check if hit top of screen (shouldn't happen if collision working)
|
||||
|
||||
lda KEEN_TILEY ;
|
||||
cmp #1 ; if hit top of screen, start falling
|
||||
bcc start_falling
|
||||
cmp #0 ; if hit top of screen, start falling
|
||||
beq start_falling
|
||||
|
||||
lda TILEMAP_Y ; if tilemap==0, scroll keen
|
||||
lda TILEMAP_Y ; if tilemap==0, move keen
|
||||
cmp #0 ; instead of scrolling screen
|
||||
beq keen_rising
|
||||
|
||||
sec
|
||||
lda TILEMAP_Y
|
||||
sbc KEEN_TILEY
|
||||
lda KEEN_TILEY
|
||||
sbc TILEMAP_Y
|
||||
|
||||
|
||||
cmp #4 ; compare to middle of screen
|
||||
bcc scroll_rising ; blt
|
||||
|
@ -445,7 +459,7 @@ do_full_falling_check:
|
|||
|
||||
; if tilemap_y >= max_tile, keen_fall
|
||||
lda TILEMAP_Y
|
||||
cmp #MAX_TILE_Y
|
||||
cmp #(MAX_TILE_Y-6)
|
||||
bcs keen_fall ; bge
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue
Block a user