Column updating
This commit is contained in:
111
plat.s
111
plat.s
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user