Improve per-scanline demo

This commit is contained in:
Lucas Scharenbroich 2023-03-09 16:17:55 -06:00
parent e3409f92fa
commit 5cfefc350c
1 changed files with 117 additions and 42 deletions

View File

@ -38,6 +38,9 @@ MaxBG0Y equ 22
frameCount equ 24 frameCount equ 24
OldOneSecondCounter equ 26 OldOneSecondCounter equ 26
appTmp0 equ 28 appTmp0 equ 28
seg1x equ 30
seg2x equ 32
seg3x equ 34
phk phk
plb plb
@ -51,12 +54,6 @@ appTmp0 equ 28
lda #ENGINE_MODE_USER_TOOL ; Engine in Fast Mode as a User Tool lda #ENGINE_MODE_USER_TOOL ; Engine in Fast Mode as a User Tool
jsr GTEStartUp ; Load and install the GTE User Tool jsr GTEStartUp ; Load and install the GTE User Tool
; Initialize local variables
stz StartX
stz StartY
stz frameCount
; Load a tileset ; Load a tileset
pea 0 pea 0
@ -72,11 +69,25 @@ appTmp0 equ 28
; Set up our level data ; Set up our level data
jsr BG0SetUp ; jsr BG0SetUp
pea 416
pea 30
pea ^App_TileMapBG0
pea App_TileMapBG0+{10*416}
_GTESetBG0TileMapInfo
jsr SetLimits jsr SetLimits
pea #80 ; Initialize local variables
pei MaxBG0Y
lda #56
sta StartX
lda #0
sta StartY
stz frameCount
pei StartX
pei StartY
_GTESetBG0Origin _GTESetBG0Origin
lda #193 ; Tile ID of '0' lda #193 ; Tile ID of '0'
@ -89,8 +100,9 @@ appTmp0 equ 28
; Set up the per-scanline rendering ; Set up the per-scanline rendering
lda #0 lda StartX
jsr InitOffsets jsr InitOffsets
pea #scanlineHorzOffset pea #scanlineHorzOffset
pea #^BG0Offsets pea #^BG0Offsets
pea #BG0Offsets pea #BG0Offsets
@ -114,13 +126,14 @@ EvtLoop
:do_more :do_more
cmp #'d' cmp #'d'
bne :not_d bne :not_d
lda StartX ; lda StartX
cmp MaxBG0X ; cmp MaxBG0X
bcc *+5 ; bcc *+5
brl :do_render ; brl :do_render
inc StartX
lda StartX jsr DecRanges
jsr SetOffsets jsr SetOffsets
; pei StartX ; pei StartX
; pei StartY ; pei StartY
; _GTESetBG0Origin ; _GTESetBG0Origin
@ -129,12 +142,13 @@ EvtLoop
cmp #'a' cmp #'a'
bne :not_a bne :not_a
lda StartX ; lda StartX
bne *+5 ; bne *+5
brl :do_render ; brl :do_render
dec StartX
lda StartX jsr IncRanges
jsr SetOffsets jsr SetOffsets
; pei StartX ; pei StartX
; pei StartY ; pei StartY
; _GTESetBG0Origin ; _GTESetBG0Origin
@ -255,38 +269,99 @@ SetLimits
rts rts
SetOffsets DecRanges
and #$00FF lda seg1x
brl _SetOffsets bne *+5
lda #164
dec
sta seg1x
bit #1
bne :out
lda seg2x
bne *+5
lda #164
dec
sta seg2x
bit #1
bne :out
lda seg3x
bne *+5
lda #164
dec
sta seg3x
:out
rts
IncRanges
lda seg1x
inc
cmp #164
bcc *+5
lda #0
sta seg1x
bit #1
bne :out
lda seg2x
inc
cmp #164
bcc *+5
lda #0
sta seg2x
bit #1
bne :out
lda seg3x
inc
cmp #164
bcc *+5
lda #0
sta seg3x
:out
rts
InitOffsets InitOffsets
and #$00FF pha
sta appTmp0
ldx #0 ldx #0
ldy #40
jsr _InitRange
ldx #40
ldy #80 ldy #80
jsr _InitRange jsr _InitRange
ldx #80 ldx #120
ldy #80 ldy #88
jsr _InitRange
ldx #160
ldy #48
jsr _InitRange jsr _InitRange
lda appTmp0 pla
_SetOffsets sta seg1x
ldx #160 jsr SetOffset1
ldy #48
jsr _SetRange
lsr lsr
ldx #80 sta seg2x
jsr SetOffset2
lsr
sta seg3x
jmp SetOffset3
SetOffsets
lda seg1x
jsr SetOffset1
lda seg2x
jsr SetOffset2
lda seg3x
jmp SetOffset3
SetOffset1
ldx #120
ldy #88
jmp _SetRange
SetOffset2
ldx #40
ldy #80 ldy #80
jsr _SetRange jmp _SetRange
lsr SetOffset3
ldx #0 ldx #0
ldy #80 ldy #40
jsr _SetRange jmp _SetRange
rts
_SetRange _SetRange
pha pha