Movement climb check replaced with better gap check

This commit is contained in:
blondie7575 2023-12-23 16:43:17 -07:00
parent aef29be0f8
commit 1dde996981
1 changed files with 7 additions and 39 deletions

View File

@ -8,8 +8,6 @@
GAMEOBJECTWIDTH = 16 GAMEOBJECTWIDTH = 16
GAMEOBJECTHEIGHT = 16 GAMEOBJECTHEIGHT = 16
MAXGAMEOBJECTS = 6 ; Size of general purpose object pool MAXGAMEOBJECTS = 6 ; Size of general purpose object pool
MAXCLIMB = 16 ; Highest pixel cliff we can climb
; Base class sample: ; Base class sample:
;gameobjectData: ;gameobjectData:
@ -132,49 +130,20 @@ moveGameObjectOnTerrain:
lda (PARAML0),y lda (PARAML0),y
clc clc
adc SCRATCHL2 ; Apply X delta adc SCRATCHL2 ; Apply X delta
clc ; Map into reversed terrain X space
adc #GAMEOBJECTWIDTH
sta SCRATCHL
lda #TERRAINWIDTH
sec
sbc SCRATCHL
sta SCRATCHL ; Desired X position
ldy #GO_POSY
lda (PARAML0),y
sec
sbc #GAMEOBJECTHEIGHT
sta SCRATCHL2 ; Current Y position
lda SCRATCHL ; Check terrain height at new position
pha pha
jsr terrainHeightAtGameObjectPos
; Check for impassable gaps
sec sec
sbc SCRATCHL2 sbc #GAMEOBJECTWIDTH/2
bmi moveGameObjectOnTerrainStepDown
moveGameObjectOnTerrainCheckHeight: moveGameObjectOnTerrainCheckHeight:
cmp #MAXCLIMB jsr terrainHeightAtGameObjectPos
bcs moveGameObjectOnTerrainTooFar cmp #0
bra moveGameObjectOnTerrainStore beq moveGameObjectOnTerrainTooFar
moveGameObjectOnTerrainStepDown:
dec
eor #$ffff
bra moveGameObjectOnTerrainCheckHeight
moveGameObjectOnTerrainStore: moveGameObjectOnTerrainStore:
pla
sta SCRATCHL
; Reverse X position again
lda #TERRAINWIDTH
sec
sbc #GAMEOBJECTWIDTH
sbc SCRATCHL
ldy #GO_POSX ldy #GO_POSX
pla
sta (PARAML0),y sta (PARAML0),y
jsr placeGameObjectOnTerrain jsr placeGameObjectOnTerrain
@ -186,7 +155,6 @@ moveGameObjectOnTerrainTooFar:
pla pla
bra moveGameObjectOnTerrainTooDone bra moveGameObjectOnTerrainTooDone
moveGameObjectLeftOffset: moveGameObjectLeftOffset:
.word 0 .word 0
moveGameObjectRightOffset: moveGameObjectRightOffset: