From ab9ada307b4f9d826410fc5b1243f00abe7db326 Mon Sep 17 00:00:00 2001 From: Devine Lu Linvega Date: Wed, 11 Mar 2026 11:02:13 -0700 Subject: [PATCH] Faster state drawing --- src/nasu.tal | 66 ++++++++++++++++++++++++---------------------------- 1 file changed, 30 insertions(+), 36 deletions(-) diff --git a/src/nasu.tal b/src/nasu.tal index 194b5c5..d26a72b 100644 --- a/src/nasu.tal +++ b/src/nasu.tal @@ -9,7 +9,7 @@ |000 - @state/timer $1 &changed $1 + @state/timer $1 @settings/depth $1 &color $1 &blend $1 &ratio $1 &tool $1 &focus $2 &zoom $1 &brush $1 &dir $1 @cursor/x $2 &y $2 &last $1 @selection &x1 $1 &y1 $1 &x2 $1 &y2 $1 &zx $1 &zy $1 &a $1 @@ -204,8 +204,7 @@ #01 .settings/tool LDZ EQU ?&select ( | paint ) .settings/color LDZ .Mouse/state DEI #01 EQU MUL - [ LIT2 01 -state/changed ] STZ - + state/ BRK @@ -218,8 +217,7 @@ &zoomed ( x* y* -> ) SWP2 #03 SFT2 #00 .selection/zx LDZ ADD2 SWP2 #03 SFT2 #00 .selection/zy LDZ ADD2 .settings/color LDZ .Mouse/state DEI #01 EQU MUL - [ LIT2 01 -state/changed ] STZ - + state/ BRK @@ -239,8 +237,7 @@ .settings/focus LDZ2 ;spritesheet SUB2 STH2kr STA2 .settings/blend LDZ INC2r INC2r STH2r STA - [ LIT2 01 -state/changed ] STZ - + state/ BRK @on-touch-toolview ( -> ) @@ -271,9 +268,7 @@ POP ( release mouse ) [ LIT2 00 -Mouse/state ] DEO !&finish } .Mouse/x DEI2 .zoomview/x1 LDZ2 SUB2 #02 SFT2 #00 .selection/x1 LDZ #30 SFT2 ADD2 - ( ) .Mouse/y DEI2 .zoomview/y1 LDZ2 SUB2 #02 SFT2 #00 .selection/y1 LDZ #30 SFT2 ADD2 .settings/color LDZ .Mouse/state DEI #01 EQU MUL - &finish [ LIT2 01 -state/changed ] STZ - + ( ) .Mouse/y DEI2 .zoomview/y1 LDZ2 SUB2 #02 SFT2 #00 .selection/y1 LDZ #30 SFT2 ADD2 .settings/color LDZ .Mouse/state DEI #01 EQU MUL &finish state/ BRK @@ -456,6 +451,20 @@ @get-strw ( str* -- width* ) slen #30 SFT2 JMP2r +@state/ ( -- ) + [ LIT2 01 _&changed ] STR !/ + +@state/ ( -- ) + [ LIT2 03 _&changed ] STR + ( >> ) + +@state/ ( -- ) + .toolview/x2 LDZ2 #0008 SUB2 .Screen/x DEO2 + .toolview/y1 LDZ2 .Screen/y DEO2 + ;save-icn .Screen/addr DEO2 + [ LIT2 &changed $1 -Screen/sprite ] DEO + JMP2r + ( @|filter ) @@ -864,7 +873,7 @@ ;zoom-icns [ #00 .settings/zoom LDZ #30 SFT2 ADD2 ] .Screen/addr DEO2 #01 .settings/tool LDZ #02 EQU ADD .Screen/sprite DEO ( | file i/o ) - + state/ .toolview/x2 LDZ2 STH2k #0018 SUB2 .Screen/x DEO2 ;load-icn .Screen/addr DEO2 [ LIT2 01 -Screen/sprite ] DEO @@ -874,13 +883,6 @@ ( | filepath ) #01 ! -@ ( -- ) - .toolview/x2 LDZ2 #0008 SUB2 .Screen/x DEO2 - .toolview/y1 LDZ2 .Screen/y DEO2 - ;save-icn .Screen/addr DEO2 - #05 .state/changed LDZ #0a MUL ADD .Screen/sprite DEO - JMP2r - @ ( color -- ) .toolview/x1 LDZ2 #0040 ADD2 .Screen/x DEO2 .toolview/y1 LDZ2 INC2 .Screen/y DEO2 @@ -1012,8 +1014,7 @@ ( | rename to untitled.txt ) ;filepath #0040 ;untitled-txt ;filepath - #00 .state/changed STZ - ! + state/ ! @file-open ( -- ) ;filepath is-mono ?file-open-mono @@ -1030,8 +1031,7 @@ #0300 .File/length DEO2 ;nametable .File/read DEO2 ;filepath scap #0004 SUB2 #0004 - #00 .state/changed STZ - ! + state/ ! @file-open-mono ( -- ) ;spritesheet #1300 @@ -1042,8 +1042,7 @@ &>loop #00 OVR #40 SFT2 ;spritesheet ADD2 .File/read DEO2 INC NEQk ?&>loop - POP2 #00 .state/changed STZ - ! + POP2 state/ ! @file-save ( -- ) ;filepath is-mono ?file-save-mono @@ -1058,7 +1057,7 @@ #0300 .File/length DEO2 ;nametable .File/write DEO2 ;filepath scap #0004 SUB2 #0004 } - #00 .state/changed STZ ! + !state/ @file-save-mono ( -- ) ;filepath .File/name DEO2 @@ -1067,7 +1066,7 @@ &>loop #00 OVR #40 SFT2 ;spritesheet ADD2 .File/write DEO2 INC NEQk ?&>loop - POP2 #00 .state/changed STZ ! + POP2 !state/ @save-theme ( -- ) .System/r DEI2 #fffa STA2 @@ -1105,28 +1104,23 @@ @edit-erase ( -- ) ;op-erase - [ LIT2 01 -state/changed ] STZ - ! + state/ ! @edit-invert ( -- ) ;op-invert - [ LIT2 01 -state/changed ] STZ - ! + state/ ! @edit-colorize ( -- ) ;filter-colorize - [ LIT2 01 -state/changed ] STZ - ! + state/ ! @edit-flipx ( -- ) ;filter-flipx - [ LIT2 01 -state/changed ] STZ - ! + state/ ! @edit-flipy ( -- ) ;filter-flipy - [ LIT2 01 -state/changed ] STZ - ! + state/ ! @tool-brush ( -- ) #00 !