mirror of
https://github.com/blondie7575/GSCats.git
synced 2024-06-03 09:29:29 +00:00
Full range scrolling working with clipped compiled terrain
This commit is contained in:
parent
ce3c428c31
commit
4b4f322182
BIN
gscats.2mg
BIN
gscats.2mg
Binary file not shown.
25
gscats.s
25
gscats.s
|
@ -32,8 +32,9 @@ mainBank2:
|
||||||
; jsr generateTerrain
|
; jsr generateTerrain
|
||||||
jsr compileTerrain
|
jsr compileTerrain
|
||||||
jsr clipTerrain
|
jsr clipTerrain
|
||||||
jsr unclipTerrain
|
|
||||||
jsr clipTerrain
|
; jsr unclipTerrain
|
||||||
|
; jsr clipTerrain
|
||||||
|
|
||||||
mainGameLoop:
|
mainGameLoop:
|
||||||
|
|
||||||
|
@ -45,7 +46,7 @@ mainGameLoop:
|
||||||
; clc
|
; clc
|
||||||
; lda mapScrollPos
|
; lda mapScrollPos
|
||||||
; adc scrollV
|
; adc scrollV
|
||||||
; cmp #TERRAINWIDTH/4-80
|
; cmp #COMPILEDTERRAINROW-80
|
||||||
; beq reverseScroll
|
; beq reverseScroll
|
||||||
; sta mapScrollPos
|
; sta mapScrollPos
|
||||||
bra render
|
bra render
|
||||||
|
@ -63,11 +64,12 @@ render:
|
||||||
jsr kbdScan
|
jsr kbdScan
|
||||||
|
|
||||||
lda mapScrollRequested
|
lda mapScrollRequested
|
||||||
bne scrollMap
|
bpl scrollMap
|
||||||
|
|
||||||
lda quitRequested
|
lda quitRequested
|
||||||
beq mainGameLoop
|
beq mainGameLoop
|
||||||
|
|
||||||
|
quit:
|
||||||
CLASSICVIDEO
|
CLASSICVIDEO
|
||||||
jml (proDOSLongJump)
|
jml (proDOSLongJump)
|
||||||
|
|
||||||
|
@ -75,7 +77,8 @@ scrollMap:
|
||||||
jsr unclipTerrain
|
jsr unclipTerrain
|
||||||
sta mapScrollPos
|
sta mapScrollPos
|
||||||
jsr clipTerrain
|
jsr clipTerrain
|
||||||
stz mapScrollRequested
|
lda #$ffff
|
||||||
|
sta mapScrollRequested
|
||||||
jmp mainGameLoop
|
jmp mainGameLoop
|
||||||
|
|
||||||
reverseScroll:
|
reverseScroll:
|
||||||
|
@ -119,11 +122,11 @@ kbdScanDone:
|
||||||
kbdScanLeftArrow:
|
kbdScanLeftArrow:
|
||||||
NATIVE
|
NATIVE
|
||||||
lda mapScrollPos
|
lda mapScrollPos
|
||||||
cmp #TERRAINWIDTH/4-80
|
cmp #VISIBLETERRAINWIDTH-VISIBLETERRAINWINDOW
|
||||||
beq kbdScanDone
|
beq kbdScanDone
|
||||||
inc
|
inc
|
||||||
sta mapScrollRequested
|
sta mapScrollRequested
|
||||||
bra kbdScanDone
|
rts
|
||||||
|
|
||||||
kbdScanRightArrow:
|
kbdScanRightArrow:
|
||||||
NATIVE
|
NATIVE
|
||||||
|
@ -131,13 +134,13 @@ kbdScanRightArrow:
|
||||||
beq kbdScanDone
|
beq kbdScanDone
|
||||||
dec
|
dec
|
||||||
sta mapScrollRequested
|
sta mapScrollRequested
|
||||||
bra kbdScanDone
|
rts
|
||||||
|
|
||||||
kbdScanSpace:
|
kbdScanSpace:
|
||||||
NATIVE
|
NATIVE
|
||||||
lda #1
|
lda #1
|
||||||
sta quitRequested
|
sta quitRequested
|
||||||
bra kbdScanDone
|
rts
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -145,11 +148,11 @@ kbdScanSpace:
|
||||||
basePalette:
|
basePalette:
|
||||||
.word $0800,$0080,$0000,$000F,$0FFF,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
|
.word $0800,$0080,$0000,$000F,$0FFF,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
|
||||||
mapScrollPos: ; 4-pixel columns distance from right terrain edge
|
mapScrollPos: ; 4-pixel columns distance from right terrain edge
|
||||||
.word 5
|
.word 0
|
||||||
quitRequested:
|
quitRequested:
|
||||||
.word $0000
|
.word $0000
|
||||||
mapScrollRequested:
|
mapScrollRequested:
|
||||||
.word $0000
|
.word $FFFF
|
||||||
|
|
||||||
.include "graphics.s"
|
.include "graphics.s"
|
||||||
.include "terrain.s"
|
.include "terrain.s"
|
||||||
|
|
28
terrain.s
28
terrain.s
|
@ -7,6 +7,9 @@
|
||||||
|
|
||||||
TERRAINWIDTH = 640 ; In pixels
|
TERRAINWIDTH = 640 ; In pixels
|
||||||
MAXTERRAINHEIGHT = 100 ; In pixels
|
MAXTERRAINHEIGHT = 100 ; In pixels
|
||||||
|
COMPILEDTERRAINROW = TERRAINWIDTH/4+3 ; In words, +2 to make room for clipping jump at end of row
|
||||||
|
VISIBLETERRAINWIDTH = TERRAINWIDTH/4 ; In words- width minus jump return padding
|
||||||
|
VISIBLETERRAINWINDOW = 80 ; In words
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; renderTerrain
|
; renderTerrain
|
||||||
|
@ -23,7 +26,7 @@ renderTerrain:
|
||||||
tcs ; 2
|
tcs ; 2
|
||||||
|
|
||||||
sec
|
sec
|
||||||
lda #compiledTerrainEnd-80
|
lda #compiledTerrainEnd-VISIBLETERRAINWINDOW-3
|
||||||
sbc mapScrollPos
|
sbc mapScrollPos
|
||||||
sta PARAML0
|
sta PARAML0
|
||||||
|
|
||||||
|
@ -35,7 +38,7 @@ renderTerrainLoop:
|
||||||
renderRowComplete:
|
renderRowComplete:
|
||||||
lda PARAML0
|
lda PARAML0
|
||||||
sec
|
sec
|
||||||
sbc #TERRAINWIDTH/4
|
sbc #COMPILEDTERRAINROW
|
||||||
sta PARAML0
|
sta PARAML0
|
||||||
dey
|
dey
|
||||||
bne renderTerrainLoop
|
bne renderTerrainLoop
|
||||||
|
@ -58,7 +61,7 @@ clipTerrain:
|
||||||
SAVE_AXY
|
SAVE_AXY
|
||||||
|
|
||||||
sec
|
sec
|
||||||
lda #((TERRAINWIDTH/4)*MAXTERRAINHEIGHT)
|
lda #COMPILEDTERRAINROW*MAXTERRAINHEIGHT-3
|
||||||
sbc mapScrollPos
|
sbc mapScrollPos
|
||||||
tay
|
tay
|
||||||
ldx #MAXTERRAINHEIGHT
|
ldx #MAXTERRAINHEIGHT
|
||||||
|
@ -89,7 +92,7 @@ clipTerrainLoop:
|
||||||
|
|
||||||
tya
|
tya
|
||||||
sec
|
sec
|
||||||
sbc #TERRAINWIDTH/4+1
|
sbc #COMPILEDTERRAINROW+1
|
||||||
tay
|
tay
|
||||||
|
|
||||||
dex
|
dex
|
||||||
|
@ -107,7 +110,7 @@ unclipTerrain:
|
||||||
SAVE_AXY
|
SAVE_AXY
|
||||||
|
|
||||||
sec
|
sec
|
||||||
lda #((TERRAINWIDTH/4)*MAXTERRAINHEIGHT)
|
lda #COMPILEDTERRAINROW*MAXTERRAINHEIGHT-3
|
||||||
sbc mapScrollPos
|
sbc mapScrollPos
|
||||||
tay
|
tay
|
||||||
ldx #MAXTERRAINHEIGHT
|
ldx #MAXTERRAINHEIGHT
|
||||||
|
@ -131,7 +134,7 @@ unclipTerrainLoop:
|
||||||
|
|
||||||
tya
|
tya
|
||||||
sec
|
sec
|
||||||
sbc #TERRAINWIDTH/4+1
|
sbc #COMPILEDTERRAINROW+1
|
||||||
tay
|
tay
|
||||||
|
|
||||||
dex
|
dex
|
||||||
|
@ -160,7 +163,7 @@ compileTerrainLoop:
|
||||||
bmi compileTerrainDone
|
bmi compileTerrainDone
|
||||||
|
|
||||||
clc
|
clc
|
||||||
lda #TERRAINWIDTH/4
|
lda #COMPILEDTERRAINROW
|
||||||
adc PARAML0
|
adc PARAML0
|
||||||
sta PARAML0
|
sta PARAML0
|
||||||
|
|
||||||
|
@ -208,7 +211,7 @@ compileTerrainColumnStore:
|
||||||
inx
|
inx
|
||||||
iny
|
iny
|
||||||
iny
|
iny
|
||||||
cpy #TERRAINWIDTH/4
|
cpy #VISIBLETERRAINWIDTH
|
||||||
bne compileTerrainColumnLoop
|
bne compileTerrainColumnLoop
|
||||||
|
|
||||||
RESTORE_AXY
|
RESTORE_AXY
|
||||||
|
@ -268,15 +271,18 @@ terrainData:
|
||||||
.word 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
.word 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19
|
||||||
.word 20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39
|
.word 20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39
|
||||||
.word 40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21
|
.word 40,39,38,37,36,35,34,33,32,31,30,29,28,27,26,25,24,23,22,21
|
||||||
.word 20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,80
|
.word 20,19,18,17,16,15,14,13,12,11,10,9,8,7,6,5,4,3,2,80
|
||||||
.word 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
.word 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
||||||
|
.word 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
||||||
|
.word 1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1
|
||||||
|
.word 1,1,1,1,1,1,1,1,1,1,1,1,1,1,0,1,0,0,0,80
|
||||||
|
|
||||||
.repeat TERRAINWIDTH/2
|
.repeat TERRAINWIDTH/2
|
||||||
.word 0
|
.word 0
|
||||||
.endrepeat
|
.endrepeat
|
||||||
|
|
||||||
compiledTerrain:
|
compiledTerrain:
|
||||||
.repeat TERRAINWIDTH/4 * MAXTERRAINHEIGHT
|
.repeat COMPILEDTERRAINROW * MAXTERRAINHEIGHT
|
||||||
.byte 0
|
.byte 0
|
||||||
.endrepeat
|
.endrepeat
|
||||||
compiledTerrainEnd:
|
compiledTerrainEnd:
|
||||||
|
|
Loading…
Reference in New Issue
Block a user