Column updating
This commit is contained in:
153
plat.s
153
plat.s
@@ -82,6 +82,7 @@ nmi_count: .res 1
|
|||||||
nmi_ready: .res 1
|
nmi_ready: .res 1
|
||||||
nmt_update_len: .res 1
|
nmt_update_len: .res 1
|
||||||
nmt_column: .res 1
|
nmt_column: .res 1
|
||||||
|
nmt_update_frame: .res 1
|
||||||
scroll_x: .res 1
|
scroll_x: .res 1
|
||||||
scroll_y: .res 1
|
scroll_y: .res 1
|
||||||
scroll_nmt: .res 1
|
scroll_nmt: .res 1
|
||||||
@@ -155,59 +156,43 @@ nmi:
|
|||||||
sta $2000
|
sta $2000
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
ldx #0
|
||||||
@nmt_update_loop:
|
@nmt_update_loop:
|
||||||
lda #6
|
lda nmt_update_frame
|
||||||
jsr mul_y
|
cmp #0
|
||||||
tax
|
bne :+
|
||||||
|
lda nmt_update+0, X
|
||||||
|
sta $2006
|
||||||
|
lda nmt_update+1, X
|
||||||
|
sta $2006
|
||||||
|
|
||||||
lda $2002
|
lda nmt_update+2, X
|
||||||
|
sta $2007
|
||||||
|
lda nmt_update+3, X
|
||||||
|
sta $2007
|
||||||
|
|
||||||
lda nmt_update+0, X
|
jmp :++
|
||||||
sta $2006
|
:
|
||||||
lda nmt_update+1, X
|
lda nmt_update+0, X
|
||||||
sta $2006
|
sta $2006
|
||||||
|
lda nmt_update+1, X
|
||||||
|
clc
|
||||||
|
adc #32
|
||||||
|
sta $2006
|
||||||
|
|
||||||
lda nmt_update+2, X
|
lda nmt_update+4, X
|
||||||
sta $2007
|
sta $2007
|
||||||
lda nmt_update+3, X
|
lda nmt_update+5, X
|
||||||
sta $2007
|
sta $2007
|
||||||
|
:
|
||||||
|
|
||||||
|
|
||||||
lda $2002
|
inx
|
||||||
|
inx
|
||||||
lda nmt_update+0, X
|
inx
|
||||||
sta $2006
|
inx
|
||||||
lda nmt_update+1, X
|
inx
|
||||||
clc
|
inx
|
||||||
adc #32
|
|
||||||
sta $2006
|
|
||||||
|
|
||||||
lda nmt_update+4, X
|
|
||||||
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
|
|
||||||
|
|
||||||
iny
|
iny
|
||||||
cpy nmt_update_len
|
cpy nmt_update_len
|
||||||
@@ -216,8 +201,14 @@ nmi:
|
|||||||
lda PPUCTRL_default
|
lda PPUCTRL_default
|
||||||
sta $2000
|
sta $2000
|
||||||
|
|
||||||
lda #0
|
inc nmt_update_frame
|
||||||
sta nmt_update_len
|
lda nmt_update_frame
|
||||||
|
cmp #2
|
||||||
|
bne :+
|
||||||
|
lda #0
|
||||||
|
sta nmt_update_frame
|
||||||
|
sta nmt_update_len
|
||||||
|
:
|
||||||
@scroll:
|
@scroll:
|
||||||
lda scroll_nmt
|
lda scroll_nmt
|
||||||
and #%00000011
|
and #%00000011
|
||||||
@@ -428,6 +419,8 @@ last_frame_moving: .res 1
|
|||||||
|
|
||||||
tile_update_pos_r: .res 1
|
tile_update_pos_r: .res 1
|
||||||
|
|
||||||
|
pointer: .res 2
|
||||||
|
|
||||||
.segment "BSS"
|
.segment "BSS"
|
||||||
level: .res 240
|
level: .res 240
|
||||||
level2: .res 240
|
level2: .res 240
|
||||||
@@ -1495,15 +1488,54 @@ check_column_update:
|
|||||||
rts
|
rts
|
||||||
|
|
||||||
update_nmt_column:
|
update_nmt_column:
|
||||||
|
; X represents the row of the current tile being updated
|
||||||
ldx #0
|
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
|
lda #16
|
||||||
jsr mul_x
|
jsr mul_x
|
||||||
clc
|
clc
|
||||||
adc tile_update_pos_r
|
adc var_p
|
||||||
tay
|
tay
|
||||||
lda #%10000001
|
; Specifies what tile gets written to the column
|
||||||
sta level, Y
|
lda #%10000011
|
||||||
|
sta (pointer), Y
|
||||||
|
|
||||||
and #%01111111
|
and #%01111111
|
||||||
ldy #5
|
ldy #5
|
||||||
@@ -1511,6 +1543,7 @@ update_nmt_column:
|
|||||||
tay
|
tay
|
||||||
|
|
||||||
|
|
||||||
|
; Preserve X
|
||||||
txa
|
txa
|
||||||
pha
|
pha
|
||||||
|
|
||||||
@@ -1528,21 +1561,23 @@ update_nmt_column:
|
|||||||
sta nmt_update+5, X
|
sta nmt_update+5, X
|
||||||
|
|
||||||
|
|
||||||
|
; Recover X (to Y)
|
||||||
pla
|
pla
|
||||||
tay
|
tay
|
||||||
|
|
||||||
lsr
|
lsr
|
||||||
lsr
|
lsr
|
||||||
|
; Add nametable base
|
||||||
clc
|
clc
|
||||||
adc #$20
|
adc var_o
|
||||||
sta nmt_update+0, X
|
sta nmt_update+0, X
|
||||||
|
|
||||||
lda #64
|
lda #64
|
||||||
jsr mul_y
|
jsr mul_y
|
||||||
clc
|
clc
|
||||||
adc tile_update_pos_r
|
adc var_p
|
||||||
clc
|
clc
|
||||||
adc tile_update_pos_r
|
adc var_p
|
||||||
sta nmt_update+1, X
|
sta nmt_update+1, X
|
||||||
|
|
||||||
|
|
||||||
@@ -1552,10 +1587,12 @@ update_nmt_column:
|
|||||||
|
|
||||||
inx
|
inx
|
||||||
cpx #15
|
cpx #15
|
||||||
bne :-
|
beq :+
|
||||||
|
jmp @row_loop
|
||||||
|
:
|
||||||
|
|
||||||
|
|
||||||
lda #15
|
lda #1
|
||||||
sta nmt_update_len
|
sta nmt_update_len
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|||||||
Reference in New Issue
Block a user