Remove memory copying from wireworld
- Store two world buffers and swap between them each update
This commit is contained in:
parent
0932e4165b
commit
774dd27a53
|
@ -64,6 +64,10 @@
|
||||||
( setup )
|
( setup )
|
||||||
#01 .timer/play STZ
|
#01 .timer/play STZ
|
||||||
#01 .color STZ
|
#01 .color STZ
|
||||||
|
|
||||||
|
;world-a ;get-addr/current STA2
|
||||||
|
LENGTH ;run/future-offset STA2
|
||||||
|
|
||||||
;redraw JSR2
|
;redraw JSR2
|
||||||
|
|
||||||
BRK
|
BRK
|
||||||
|
@ -75,7 +79,12 @@ BRK
|
||||||
.timer/frame LDZk
|
.timer/frame LDZk
|
||||||
#03 AND ,&no-run JCN
|
#03 AND ,&no-run JCN
|
||||||
;run JSR2
|
;run JSR2
|
||||||
;past-world LENGTH ++ ;past-world LENGTH ;mcpy JSR2
|
|
||||||
|
( Swap worlds )
|
||||||
|
;get-addr/current LDA2k ;run/future-offset LDA2 STH2k ( ;current current* offest* )
|
||||||
|
++ SWP2 STA2 ( Set new current page )
|
||||||
|
#0000 STH2r -- ;run/future-offset STA2 ( Invert offest )
|
||||||
|
|
||||||
;redraw JSR2
|
;redraw JSR2
|
||||||
&no-run
|
&no-run
|
||||||
LDZk INC SWP STZ
|
LDZk INC SWP STZ
|
||||||
|
@ -149,7 +158,7 @@ RTN
|
||||||
&hor
|
&hor
|
||||||
( x,y ) DUP STHkr
|
( x,y ) DUP STHkr
|
||||||
( cell ) DUP2 ,get-addr JSR STH2k LDA
|
( cell ) DUP2 ,get-addr JSR STH2k LDA
|
||||||
( transform ) ,transform JSR STH2r ( future ) LENGTH ++ STA
|
( transform ) ,transform JSR STH2r ( future ) LIT2 &future-offset 0000 ++ STA
|
||||||
INC GTHk ,&hor JCN
|
INC GTHk ,&hor JCN
|
||||||
POP2
|
POP2
|
||||||
POPr
|
POPr
|
||||||
|
@ -160,7 +169,7 @@ RTN
|
||||||
|
|
||||||
@get-addr ( x y -- addr* )
|
@get-addr ( x y -- addr* )
|
||||||
|
|
||||||
TOS [ #00 WIDTH ] ** ROT TOS ++ ;past-world ++
|
TOS [ #00 WIDTH ] ** ROT TOS ++ LIT2 ¤t 0000 ++
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
|
@ -190,18 +199,6 @@ RTN
|
||||||
|
|
||||||
RTN
|
RTN
|
||||||
|
|
||||||
@mcpy ( src* dst* len* -- )
|
|
||||||
|
|
||||||
SWP2 STH2
|
|
||||||
OVR2 ++ SWP2
|
|
||||||
&loop
|
|
||||||
LDAk STH2kr STA INC2r
|
|
||||||
INC2 GTH2k ,&loop JCN
|
|
||||||
POP2 POP2
|
|
||||||
POP2r
|
|
||||||
|
|
||||||
JMP2r
|
|
||||||
|
|
||||||
@mclr ( addr* len* -- )
|
@mclr ( addr* len* -- )
|
||||||
|
|
||||||
OVR2 ++ SWP2
|
OVR2 ++ SWP2
|
||||||
|
@ -223,4 +220,4 @@ JMP2r
|
||||||
What do I do?
|
What do I do?
|
||||||
How do I find peace? )
|
How do I find peace? )
|
||||||
|
|
||||||
@past-world
|
@world-a
|
||||||
|
|
Loading…
Reference in New Issue