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