From f0631386b12743c0da5e25a103cf54a6f19e1f26 Mon Sep 17 00:00:00 2001 From: blondie7575 Date: Thu, 18 Jan 2018 18:15:42 -0800 Subject: [PATCH] Merged compile/span rendering working --- equates.s | 2 ++ gamemanager.s | 22 ++++++++++------------ gscats.2mg | Bin 819264 -> 819264 bytes terrain.s | 11 ++++++++--- terrain_e1.s | 2 ++ 5 files changed, 22 insertions(+), 15 deletions(-) diff --git a/equates.s b/equates.s index 8f7b9ae..b0c19a1 100644 --- a/equates.s +++ b/equates.s @@ -32,6 +32,8 @@ leftScreenEdge = $6E ; Reserved for leftScreenEdge (This is almost certainly m STACKPTR = $70 ; Cache for stack pointer in fast graphics SHADOWREGISTER = $72 ; Cache for shadow register in fast graphics STACKREGISTER = $73 ; Cache for stack register in fast graphics +lastCompiledTerrainY = $75 ; The highest Y value that the compiled renderer must handle + ; Terrain constants diff --git a/gamemanager.s b/gamemanager.s index af43025..7f0e59b 100644 --- a/gamemanager.s +++ b/gamemanager.s @@ -30,12 +30,8 @@ beginGameplay: stz leftScreenEdge jsr generateTerrain - jsr compileTerrain -; jsr clipTerrain - jsl renderTerrainSpans - ; Create players - lda #56 + lda #106;#56 ldy #0 jsr playerCreate @@ -50,18 +46,20 @@ beginGameplay: jsr protectProjectiles jsr prepareRowRendering + jsr compileTerrain + jsr clipTerrain + gameplayLoop: jsr syncVBL BORDER_COLOR #$0 ; Render the terrain if needed -; lda terrainDirty -; beq gameplayLoopKbd + lda terrainDirty + beq gameplayLoopKbd BORDER_COLOR #$3 - jsl unrenderTerrainSpans jsl renderTerrainSpans -; jsr renderTerrain + jsr renderTerrain stz terrainDirty BORDER_COLOR #$1 @@ -229,8 +227,8 @@ endGame: ; A = New map scroll position ; scrollMap: -; jsr unclipTerrain -; jsl unrenderTerrainSpans + jsr unclipTerrain + jsl unrenderTerrainSpans jsr unrenderPlayers jsr unrenderProjectiles @@ -241,7 +239,7 @@ scrollMap: adc #160-GAMEOBJECTWIDTH/4-1 sta rightScreenEdge -; jsr clipTerrain + jsr clipTerrain lda #$ffff sta mapScrollRequested diff --git a/gscats.2mg b/gscats.2mg index 7cdeefc667717b10e265d108b42025da88c40d6a..8519bc0846784ea739e2524c63f048b73dbc1f9b 100644 GIT binary patch delta 2230 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 diff --git a/terrain.s b/terrain.s index 3b33e94..5ee0020 100644 --- a/terrain.s +++ b/terrain.s @@ -16,7 +16,7 @@ renderTerrain: FASTGRAPHICS lda #0 sta SCRATCHL2 ; Row counter - lda #$5f1f ; 4 Point stack to end of VRAM + lda #$5f1f ; 4 Point stack to end of affected VRAM tcs ; 2 sec @@ -44,8 +44,11 @@ renderRowComplete: lda SCRATCHL2 inc - cmp #MAXTERRAINHEIGHT - beq renderTerrainDone + cmp lastCompiledTerrainY + beq renderRowCont + bcs renderTerrainDone + +renderRowCont: sta SCRATCHL2 bra renderTerrainLoop @@ -387,6 +390,7 @@ prepareRowRendering: ldx #199 stz SCRATCHL2 + stz lastCompiledTerrainY prepareRowRenderingLoop: lda #0 @@ -404,6 +408,7 @@ prepareRowRenderingLoop: prepareRowRenderingCompileMode: jsr disableFillMode + inc lastCompiledTerrainY prepareRowRenderingLoopNext: inc SCRATCHL2 diff --git a/terrain_e1.s b/terrain_e1.s index 728faa7..84b269f 100644 --- a/terrain_e1.s +++ b/terrain_e1.s @@ -29,6 +29,8 @@ renderTerrainSpans: tcs lda #MAXTERRAINHEIGHT-1 + sec + sbc lastCompiledTerrainY renderTerrainSpansLoop: sta PARAML1