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

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: