Column updating

This commit is contained in:
RochesterX
2026-03-18 14:56:40 -04:00
parent b44a0c4cb6
commit 930b34dadc
2 changed files with 95 additions and 58 deletions

BIN
plat.nes

Binary file not shown.

111
plat.s
View File

@@ -82,6 +82,7 @@ nmi_count: .res 1
nmi_ready: .res 1
nmt_update_len: .res 1
nmt_column: .res 1
nmt_update_frame: .res 1
scroll_x: .res 1
scroll_y: .res 1
scroll_nmt: .res 1
@@ -155,13 +156,11 @@ nmi:
sta $2000
ldy #0
ldx #0
@nmt_update_loop:
lda #6
jsr mul_y
tax
lda $2002
lda nmt_update_frame
cmp #0
bne :+
lda nmt_update+0, X
sta $2006
lda nmt_update+1, X
@@ -172,9 +171,8 @@ nmi:
lda nmt_update+3, X
sta $2007
lda $2002
jmp :++
:
lda nmt_update+0, X
sta $2006
lda nmt_update+1, X
@@ -186,28 +184,15 @@ nmi:
sta $2007
lda nmt_update+5, X
sta $2007
:
; lda $2002
; lda #$20
; sta $2006
; lda nmt_update, Y
; sec
; rol
; sta $2006
; ldx nmt_update
; lda level, X
; and #%01111111
; ldx #5
; jsr mul_x
; tax
;
; lda metatiles+1, X
; sta $2007
; lda metatiles+3, X
; sta $2007
inx
inx
inx
inx
inx
inx
iny
cpy nmt_update_len
@@ -216,8 +201,14 @@ nmi:
lda PPUCTRL_default
sta $2000
inc nmt_update_frame
lda nmt_update_frame
cmp #2
bne :+
lda #0
sta nmt_update_frame
sta nmt_update_len
:
@scroll:
lda scroll_nmt
and #%00000011
@@ -428,6 +419,8 @@ last_frame_moving: .res 1
tile_update_pos_r: .res 1
pointer: .res 2
.segment "BSS"
level: .res 240
level2: .res 240
@@ -1495,15 +1488,54 @@ check_column_update:
rts
update_nmt_column:
; X represents the row of the current tile being updated
ldx #0
@row_loop:
lda tile_update_pos_r
clc
adc #8
sta var_n
; Nametable base
lda #$20
sta var_o
lda #<level
sta pointer
lda #>level
sta pointer+1
lda var_n
and #%00010000
cmp #0
beq:+
lda pointer
clc
adc #240
sta pointer
lda pointer+1
adc #0
sta pointer+1
lda #$24
sta var_o
:
lda var_n
and #%00001111
sta var_p
lda #16
jsr mul_x
clc
adc tile_update_pos_r
adc var_p
tay
lda #%10000001
sta level, Y
; Specifies what tile gets written to the column
lda #%10000011
sta (pointer), Y
and #%01111111
ldy #5
@@ -1511,6 +1543,7 @@ update_nmt_column:
tay
; Preserve X
txa
pha
@@ -1528,21 +1561,23 @@ update_nmt_column:
sta nmt_update+5, X
; Recover X (to Y)
pla
tay
lsr
lsr
; Add nametable base
clc
adc #$20
adc var_o
sta nmt_update+0, X
lda #64
jsr mul_y
clc
adc tile_update_pos_r
adc var_p
clc
adc tile_update_pos_r
adc var_p
sta nmt_update+1, X
@@ -1552,10 +1587,12 @@ update_nmt_column:
inx
cpx #15
bne :-
beq :+
jmp @row_loop
:
lda #15
lda #1
sta nmt_update_len
rts