@@ 62,6 62,9 @@
%ROL { DUP #07 SFT SWP #10 SFT + }
%ROR { DUP #70 SFT SWP #01 SFT + }
+%AUTO-X { #01 .Screen/auto DEO }
+%AUTO-NONE { #00 .Screen/auto DEO }
+
( defines )
%HOR { #10 } %VER { #10 }
@@ 107,7 110,7 @@
|00 @System [ &vector $2 &pad $6 &r $2 &g $2 &b $2 ]
|10 @Console [ &vector $2 &read $1 &pad $5 &write $1 ]
-|20 @Screen [ &vector $2 &width $2 &height $2 &pad $2 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ]
+|20 @Screen [ &vector $2 &width $2 &height $2 &auto $1 &pad $1 &x $2 &y $2 &addr $2 &pixel $1 &sprite $1 ]
|80 @Controller [ &vector $2 &button $1 &key $1 ]
|90 @Mouse [ &vector $2 &x $2 &y $2 &state $1 &chord $1 ]
|a0 @File [ &vector $2 &success $2 &offset $2 &pad $2 &name $2 &length $2 &load $2 &save $2 ]
@@ 121,12 124,13 @@
@settings
&depth $1 &color $1 &blend $1
&ratio $1 &tool $1 &focus $2
- &zoom $1
+ &zoom $1 &brush $1
@cursor
&x $2 &y $2 &last $1
@selection
&x1 $1 &y1 $1
&x2 $1 &y2 $1
+ &a $1
@path
&length $1 &name $20
@frame
@@ 143,8 147,7 @@
@zoomview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@tileview
&x1 $2 &y1 $2
- &x2 $2 &y2 $2
- &width $2 &height $2
+ &x2 $2 &y2 $2
@nametable
&x $2 &y $2
&x2 $2 &y2 $2
@@ 173,16 176,14 @@
( set defaults )
#0100 .frame/width STZ2
- #0080 #0040 ++ .frame/height STZ2
+ #00c0 .frame/height STZ2
#01 .settings/depth STZ
#01 .settings/color STZ
#81 .settings/blend STZ
#32 .settings/ratio STZ
#01 .settings/tool STZ
- BANK-SPRITESHEET .settings/focus STZ2
-
- #0100 .tileview/width STZ2
- #0080 .tileview/height STZ2
+ #00 .settings/brush STZ
+ #0000 ;select JSR2
.Screen/width DEI2 #01 SFT2 .frame/width LDZ2 #01 SFT2 --
.Screen/height DEI2 #01 SFT2 .frame/height LDZ2 #01 SFT2 --
@@ 442,7 443,7 @@ BRK
BRK &no-brush-mouse2
DUP2 #0101 !! ,&no-select-mouse1 JCN ( select default )
POP2
- ;get-tile-addr JSR2 .settings/focus STZ2
+ ;select JSR2
;redraw JSR2
BRK &no-select-mouse1
DUP2 #0110 !! ,&no-select-mouse2 JCN ( select copy )
@@ 467,7 468,7 @@ BRK
.Mouse/y DEI2 .tileview/y1 LDZ2 -- 8// NIP
DUP .selection/y1 STZ .selection/y2 STZ
;clamp-selection JSR2
- .selection LDZ2 GET-ADDR .settings/focus STZ2
+ .selection LDZ2 ;select JSR2
;redraw JSR2
,&end JMP
&no-down
@@ 503,18 504,17 @@ BRK
( skip ) .Mouse/state DEI #00 ! BRK?
( get touch tile )
-
.Mouse/y DEI2 .nametable/y LDZ2 -- 8// 10**
.Mouse/x DEI2 .nametable/x LDZ2 -- 8// ++ STH2
( look for changes )
-
- ( sprite ) STH2kr BANK-NAMETABLE ++ LDA
- ( color ) STH2kr BANK-COLOR ++ LDA
- ( sprite ) .settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP
- ( color ) .settings/blend LDZ
-
- ( stop ) NEQ2 ,&continue JCN POP2r BRK &continue
+ STH2kr BANK-NAMETABLE ++ LDA
+ .settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP
+ STH2kr BANK-COLOR ++ LDA
+ .settings/blend LDZ
+ !! ,&continue JCN
+ POP2r BRK
+ &continue
( set sprite )
.settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP
@@ 525,6 525,7 @@ BRK
STH2r BANK-COLOR ++ STA
;draw-nametable JSR2
+
SET-STATE
BRK
@@ 706,6 707,14 @@ BRK
( operations )
+@select ( x y -- )
+
+ DUP2
+ GET-ADDR .settings/focus STZ2
+ #40 SFT + .selection/a STZ
+
+RTN
+
@mod-selection ( x y -- )
DUP
@@ 722,7 731,8 @@ BRK
.selection/y1 LDZ .selection/y2 STZ
&no-y
( focus )
- .selection LDZ2 GET-ADDR .settings/focus STZ2
+ .selection LDZ2 ;select JSR2
+
;redraw JSR2
RTN
@@ 740,7 750,7 @@ RTN
.selection/y1 LDZ .selection/y2 STZ
&no-y
( focus )
- .selection LDZ2 GET-ADDR .settings/focus STZ2
+ .selection LDZ2 ;select JSR2
;redraw JSR2
RTN
@@ 906,20 916,21 @@ RTN
.settings/zoom LDZ ;draw-tileview-zoom JCN2
- VER #00
+ AUTO-X
+ #1000
&ver
DUP TOS 8** .tileview/y1 LDZ2 ++ .Screen/y DEO2
- HOR #00
+ .tileview/x1 LDZ2 .Screen/x DEO2
+ #1000
&hor
- DUP TOS 8** .tileview/x1 LDZ2 ++ .Screen/x DEO2
GET-ITER
DUP2 GET-ADDR .Screen/addr DEO2
- #0d00 SWP2 ;is-selected JSR2 SWP? POP
- #81 + .Screen/sprite DEO
+ ;is-selected JSR2 #0d * #81 + .Screen/sprite DEO
INC GTHk ,&hor JCN
POP2
INC GTHk ,&ver JCN
POP2
+ AUTO-NONE
.workspace-frame #03 ;line-rect JSR2
@@ 952,15 963,21 @@ RTN
@draw-nametable ( -- )
- #00
- &loop
- DUP TOS
- DUP2 10MOD2 8** .nametable/x LDZ2 ++ .Screen/x DEO2
- DUP2 10// 8** .nametable/y LDZ2 ++ .Screen/y DEO2
- DUP2 BANK-NAMETABLE ++ LDA TOS 10** BANK-SPRITESHEET ++ .Screen/addr DEO2
- BANK-COLOR ++ LDA .Screen/sprite DEO
- INC DUP ,&loop JCN
- POP
+ AUTO-X
+ #1000
+ &ver
+ DUP TOS 8** .nametable/y LDZ2 ++ .Screen/y DEO2
+ .nametable/x LDZ2 .Screen/x DEO2
+ #1000
+ &hor
+ GET-ITER [ #40 SFT + ] #00 SWP
+ DUP2 BANK-NAMETABLE ++ LDA TOS 10** BANK-SPRITESHEET ++ .Screen/addr DEO2
+ BANK-COLOR ++ LDA .Screen/sprite DEO
+ INC GTHk ,&hor JCN
+ POP2
+ INC GTHk ,&ver JCN
+ POP2
+ AUTO-NONE
RTN
@@ 1192,7 1209,7 @@ RTN
( position )
.dataview/x1 LDZ2 .Screen/x DEO2
.dataview/y2 LDZ2 INC2 .Screen/y DEO2
- .settings/focus LDZ2 BANK-SPRITESHEET -- #03 ;draw-short JSR2
+ .selection/a LDZ #03 ;draw-byte JSR2
( depth1 )
#04 #00