mirror of
https://github.com/blondie7575/GSCats.git
synced 2024-09-28 09:54:53 +00:00
Working terrain scrolling
This commit is contained in:
parent
e7f4a0b256
commit
39395c40bb
BIN
gscats.2mg
BIN
gscats.2mg
Binary file not shown.
62
gscats.s
62
gscats.s
@ -30,36 +30,82 @@ mainBank2:
|
|||||||
jsr colorFill
|
jsr colorFill
|
||||||
|
|
||||||
jsr generateTerrain
|
jsr generateTerrain
|
||||||
|
|
||||||
|
mainGameLoop:
|
||||||
|
ldy mapScrollPos
|
||||||
jsr renderTerrainColumns
|
jsr renderTerrainColumns
|
||||||
|
|
||||||
jsr kbdWait
|
jsr kbdScan
|
||||||
CLASSICVIDEO
|
|
||||||
|
|
||||||
|
lda quitRequested
|
||||||
|
beq mainGameLoop
|
||||||
|
|
||||||
|
|
||||||
|
CLASSICVIDEO
|
||||||
jml (proDOSLongJump)
|
jml (proDOSLongJump)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; kbdWait
|
; kbdScan
|
||||||
; Waits for a keystroke
|
; Processes keyboard input
|
||||||
;
|
;
|
||||||
kbdWait:
|
; Trashes A
|
||||||
|
;
|
||||||
|
|
||||||
|
kbdScan:
|
||||||
EMULATION
|
EMULATION
|
||||||
|
|
||||||
kbdWaitLoop:
|
kbdScanLoop:
|
||||||
lda KBD
|
lda KBD
|
||||||
bpl kbdWaitLoop
|
bpl kbdScanLoop
|
||||||
sta KBDSTROBE
|
sta KBDSTROBE
|
||||||
|
|
||||||
|
cmp #(8 + $80)
|
||||||
|
beq kbdScanLeftArrow
|
||||||
|
|
||||||
|
cmp #(21 + $80)
|
||||||
|
beq kbdScanRightArrow
|
||||||
|
|
||||||
|
cmp #(32 + $80)
|
||||||
|
beq kbdScanSpace
|
||||||
NATIVE
|
NATIVE
|
||||||
|
|
||||||
|
kbdScanDone:
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
kbdScanLeftArrow:
|
||||||
|
NATIVE
|
||||||
|
lda mapScrollPos
|
||||||
|
beq kbdScanDone
|
||||||
|
dec
|
||||||
|
sta mapScrollPos
|
||||||
|
bra kbdScanDone
|
||||||
|
|
||||||
|
kbdScanRightArrow:
|
||||||
|
NATIVE
|
||||||
|
lda mapScrollPos
|
||||||
|
cmp #TERRAINWIDTH/4-80
|
||||||
|
beq kbdScanDone
|
||||||
|
inc
|
||||||
|
sta mapScrollPos
|
||||||
|
bra kbdScanDone
|
||||||
|
|
||||||
|
kbdScanSpace:
|
||||||
|
NATIVE
|
||||||
|
lda #1
|
||||||
|
sta quitRequested
|
||||||
|
bra kbdScanDone
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
basePalette:
|
basePalette:
|
||||||
.word $0000,$0080,$0000,$000F,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
|
.word $0000,$0080,$0000,$000F,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000,$0000
|
||||||
|
mapScrollPos: ; 4-pixel columns
|
||||||
|
.word $0000
|
||||||
|
quitRequested:
|
||||||
|
.word $0000
|
||||||
|
|
||||||
.include "graphics.s"
|
.include "graphics.s"
|
||||||
.include "terrain.s"
|
.include "terrain.s"
|
||||||
|
37
terrain.s
37
terrain.s
@ -5,8 +5,8 @@
|
|||||||
;
|
;
|
||||||
|
|
||||||
|
|
||||||
TERRAINWIDTH = 320 ; In pixels
|
TERRAINWIDTH = 640 ; In pixels
|
||||||
MAXTERRAINHEIGHT = 80 ; In pixels
|
MAXTERRAINHEIGHT = 128 ; In pixels
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; renderTerrainColumn
|
; renderTerrainColumn
|
||||||
@ -30,15 +30,23 @@ renderTerrainColumn:
|
|||||||
sta renderTerrainColumnSMC+1
|
sta renderTerrainColumnSMC+1
|
||||||
pha ; Cache 16-bit VRAM pointer on the stack
|
pha ; Cache 16-bit VRAM pointer on the stack
|
||||||
|
|
||||||
lda terrainData,y
|
lda terrainData,y ; Cache terrain height on the stack
|
||||||
and #$00ff
|
and #$00ff
|
||||||
tax
|
sta renderTerrainColumnHeight
|
||||||
inx ; Prevent x from going negative upon entry to loop
|
ldx #0
|
||||||
|
|
||||||
renderTerrainColumnLoop:
|
renderTerrainColumnLoop:
|
||||||
dex
|
inx
|
||||||
|
cpx #MAXTERRAINHEIGHT
|
||||||
beq renderTerrainColumnDone
|
beq renderTerrainColumnDone
|
||||||
|
cpx renderTerrainColumnHeight
|
||||||
|
bpl renderTerrainColumnBlack
|
||||||
|
|
||||||
lda #$1111
|
lda #$1111
|
||||||
|
bra renderTerrainColumnSMC
|
||||||
|
|
||||||
|
renderTerrainColumnBlack:
|
||||||
|
lda #$0000
|
||||||
|
|
||||||
renderTerrainColumnSMC:
|
renderTerrainColumnSMC:
|
||||||
sta $e19c60
|
sta $e19c60
|
||||||
@ -53,23 +61,32 @@ renderTerrainColumnDone:
|
|||||||
pla
|
pla
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
renderTerrainColumnHeight:
|
||||||
|
.word 0
|
||||||
|
|
||||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||||
; renderTerrainColumns
|
; renderTerrainColumns
|
||||||
;
|
;
|
||||||
; This is not fast- probably only useful for debugging
|
; This is not fast- probably only useful for debugging
|
||||||
;
|
;
|
||||||
|
; Y = Start column
|
||||||
|
;
|
||||||
|
; Trashes all registers
|
||||||
|
;
|
||||||
|
|
||||||
renderTerrainColumns:
|
renderTerrainColumns:
|
||||||
LOADPARAM24 $e1e1,$9c60
|
LOADPARAM24 $e1e1,$9c60
|
||||||
ldy #0
|
tya
|
||||||
|
clc
|
||||||
|
adc #80
|
||||||
|
sta SCRATCHL
|
||||||
|
|
||||||
renderTerrainColumnsLoop:
|
renderTerrainColumnsLoop:
|
||||||
jsr renderTerrainColumn
|
jsr renderTerrainColumn
|
||||||
iny
|
iny
|
||||||
cpy #TERRAINWIDTH/4
|
cpy SCRATCHL
|
||||||
beq renderTerrainColumnsDone
|
beq renderTerrainColumnsDone
|
||||||
|
|
||||||
inc PARAM24
|
inc PARAM24
|
||||||
inc PARAM24
|
inc PARAM24
|
||||||
bra renderTerrainColumnsLoop
|
bra renderTerrainColumnsLoop
|
||||||
@ -109,6 +126,6 @@ generateTerrainLoop:
|
|||||||
; Terrain data, stored as height values 4 pixels wide
|
; Terrain data, stored as height values 4 pixels wide
|
||||||
|
|
||||||
terrainData:
|
terrainData:
|
||||||
.repeat TERRAINWIDTH/4
|
.repeat TERRAINWIDTH/2
|
||||||
.byte 0
|
.byte 0
|
||||||
.endrepeat
|
.endrepeat
|
||||||
|
Loading…
Reference in New Issue
Block a user