Compare commits

...

4 Commits

Author SHA1 Message Date
blondie7575 11b2cc9048 Cleaned up some magic numbers 2023-12-23 16:47:20 -07:00
blondie7575 1dde996981 Movement climb check replaced with better gap check 2023-12-23 16:43:17 -07:00
blondie7575 aef29be0f8 Fixed crosshair render glitch when overlapping terrain during scroll 2023-12-23 10:56:24 -07:00
blondie7575 0634837dbc Fixed player render glitch related to scrolling 2023-12-23 10:33:24 -07:00
2 changed files with 25 additions and 50 deletions

View File

@ -35,8 +35,6 @@ beginGameplay:
ldy #0
jsr renderPlayerHeader
jsr protectPlayers
jsr protectProjectiles
jsr prepareRowRendering
jsr compileTerrain
@ -44,6 +42,7 @@ beginGameplay:
jsr renderTerrain
jsr renderInventory
jsr protectPlayers
jsr renderPlayers
; Fade in from menu
@ -97,7 +96,6 @@ gameplayLoopScroll:
jsr scrollMap
jsr updateCrosshair
jsr protectCrosshair
gameplayLoopAngleCheck:
lda projectileActive ; Skip interactivity during shots
@ -153,6 +151,14 @@ gameplayLoopRender:
stz terrainDirty
; Render players
lda playersDirty ; Check if terrain moved since last protect
beq gameplayLoopRenderPlayersAnyway
jsr unrenderPlayers
jsr protectPlayers
jsr unrenderCrosshair
jsr protectCrosshair
gameplayLoopRenderPlayersAnyway:
jsr renderPlayers
gameplayLoopExplosions:
@ -348,14 +354,11 @@ scrollMapApplyScrolling:
lda #$ffff
sta mapScrollRequested
jsr protectPlayers
jsr protectProjectiles
jsr renderPlayers
jsr renderProjectiles ; Prevents flicker, but ads jitter to shot tracking
lda #1
sta playersDirty
sta projectilesDirty
sta terrainDirty
stz projectilesDirty
sta crosshairDirty
rts
@ -432,7 +435,7 @@ move:
beq moveParamsPlayer0
lda #-1
sta placeGameObjectRightOffset
lda #GAMEOBJECTWIDTH-7
lda #GAMEOBJECTWIDTH-(GAMEOBJECTWIDTH/2-1)
sta placeGameObjectLeftOffset
movePerformMove:
@ -440,7 +443,7 @@ movePerformMove:
bra moveCleanup
moveParamsPlayer0:
lda #-6
lda #-(GAMEOBJECTWIDTH/2-2)
sta placeGameObjectRightOffset
lda #GAMEOBJECTWIDTH-2
sta placeGameObjectLeftOffset
@ -482,6 +485,10 @@ playerMoveRequested:
.word $0000
terrainDirty:
.word 1
playersDirty:
.word 0
crosshairDirty:
.word 0
projectilesDirty:
.word 1
inventoryDirty:

View File

@ -8,8 +8,6 @@
GAMEOBJECTWIDTH = 16
GAMEOBJECTHEIGHT = 16
MAXGAMEOBJECTS = 6 ; Size of general purpose object pool
MAXCLIMB = 16 ; Highest pixel cliff we can climb
; Base class sample:
;gameobjectData:
@ -132,49 +130,20 @@ moveGameObjectOnTerrain:
lda (PARAML0),y
clc
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
jsr terrainHeightAtGameObjectPos
; Check for impassable gaps
sec
sbc SCRATCHL2
bmi moveGameObjectOnTerrainStepDown
sbc #GAMEOBJECTWIDTH/2
moveGameObjectOnTerrainCheckHeight:
cmp #MAXCLIMB
bcs moveGameObjectOnTerrainTooFar
bra moveGameObjectOnTerrainStore
moveGameObjectOnTerrainStepDown:
dec
eor #$ffff
bra moveGameObjectOnTerrainCheckHeight
jsr terrainHeightAtGameObjectPos
cmp #0
beq moveGameObjectOnTerrainTooFar
moveGameObjectOnTerrainStore:
pla
sta SCRATCHL
; Reverse X position again
lda #TERRAINWIDTH
sec
sbc #GAMEOBJECTWIDTH
sbc SCRATCHL
ldy #GO_POSX
pla
sta (PARAML0),y
jsr placeGameObjectOnTerrain
@ -186,7 +155,6 @@ moveGameObjectOnTerrainTooFar:
pla
bra moveGameObjectOnTerrainTooDone
moveGameObjectLeftOffset:
.word 0
moveGameObjectRightOffset: