@@ 21,11 21,17 @@
%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
+%HOR { #20 }
+%VER { #10 }
+%WIDTH { HOR TOS #0008 ** }
+%HEIGHT { VER TOS #0008 ** }
+
%RTN { JMP2r }
%STEP8 { #0033 SFT2 }
%SFL { #40 SFT SFT }
%MOD { DUP2 / * - }
+%MOD2 { OVR2 OVR2 // ** -- }
%TOB { SWP POP } %TOS { #00 SWP }
@@ 36,7 42,8 @@
%GTS2 { #8000 ++ SWP2 #8000 ++ << }
%INCR { SWP #01 + SWP }
-%GET-ITERATORS { OVR2 OVR2 POP SWP POP SWP } ( ? SWP2k POP SWP POP )
+%INCR2 { SWP2 #0001 ++ SWP2 }
+%GET-ITERATORS { SWP2k POP SWP POP }
%SIZE-TO-RECT {
STH2 STH2 OVR2 STH2r ++ OVR2 STH2r ++
@@ 81,10 88,12 @@
( interface )
@bankview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@editview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
+@toolview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@colorview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@blendview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@dataview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@preview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
+@tileview [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@rect [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
@mouse [ &x $2 &y $2 ]
@@ 107,8 116,8 @@
;on-transfer .File/vector DEO2
( set defaults )
- #0130 .frame/width STZ2
- #00a8 .frame/height STZ2
+ HOR TOS #0008 ** .frame/width STZ2
+ VER TOS #0008 ** #0040 ++ .frame/height STZ2
#01 .settings/brush STZ
#32 .settings/ratio STZ
BANK .settings/page STZ2
@@ 120,14 129,30 @@
.frame/width LDZ2 .frame/height LDZ2
SIZE-TO-RECT ;frame SET-RECT
- .frame/x1 LDZ2 #0010 ++ .frame/y1 LDZ2 #0080 #0080 SIZE-TO-RECT ;bankview SET-RECT
- .frame/x2 LDZ2 #0098 -- .frame/y1 LDZ2 #0080 #0080 SIZE-TO-RECT ;editview SET-RECT
- .frame/x1 LDZ2 #0010 ++ .frame/y2 LDZ2 #001a -- #0020 #0020 SIZE-TO-RECT ;blendview SET-RECT
- .frame/x1 LDZ2 #0040 ++ .frame/y2 LDZ2 #001a -- #0020 #0020 SIZE-TO-RECT ;preview SET-RECT
- .frame/x1 LDZ2 #0070 ++ .frame/y2 LDZ2 #001a -- #0020 #0020 SIZE-TO-RECT ;colorview SET-RECT
- .frame/x1 LDZ2 #00a0 ++ .frame/y2 LDZ2 #001a -- #0040 #0020 SIZE-TO-RECT ;dataview SET-RECT
+ .frame/x1 LDZ2 #0010 ++ .frame/y2 LDZ2 #0080 -- #0080 #0080 SIZE-TO-RECT ;bankview SET-RECT
+ .frame/x2 LDZ2 #0090 -- .frame/y2 LDZ2 #0080 -- #0080 #0080 SIZE-TO-RECT ;editview SET-RECT
+ .frame/x1 LDZ2 .frame/y2 LDZ2 #0008 -- HOR TOS #0008 ** #0008 SIZE-TO-RECT ;toolview SET-RECT
+
+ .frame/x1 LDZ2 .frame/y1 LDZ2 #0030 ++ #0100 #0080 SIZE-TO-RECT ;tileview SET-RECT
+
+ .frame/x1 LDZ2 .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;blendview SET-RECT
+ .frame/x1 LDZ2 #0030 ++ .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;preview SET-RECT
+ .frame/x1 LDZ2 #0060 ++ .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;colorview SET-RECT
+ .frame/x1 LDZ2 #0090 ++ .frame/y1 LDZ2 #0048 #0020 SIZE-TO-RECT ;dataview SET-RECT
+
+
+ .tileview/x1 LDZ2 #0002 --
+ .tileview/y1 LDZ2 #0002 --
+ .tileview/x2 LDZ2 #0001 ++
+ .tileview/y2 LDZ2 #0001 ++ #03 ;line-rect JSR2
+(
+
+
+ .frame/x1 LDZ2 #0002 --
+ .frame/y1 LDZ2 #0002 --
+ .frame/x2 LDZ2 #0001 ++
+ .frame/y2 LDZ2 #0001 ++ #02 ;line-rect JSR2
- ( editview grid )
.editview/x1 LDZ2 DUP2 #0080 ++ .editview/y1 LDZ2 #0020 ++ #03 ;line-hor JSR2
.editview/x1 LDZ2 DUP2 #0080 ++ .editview/y1 LDZ2 #0040 ++ #03 ;line-hor JSR2
.editview/x1 LDZ2 DUP2 #0080 ++ .editview/y1 LDZ2 #0060 ++ #03 ;line-hor JSR2
@@ 135,13 160,24 @@
.editview/x1 LDZ2 #0040 ++ .editview/y1 LDZ2 DUP2 #0080 ++ #03 ;line-ver JSR2
.editview/x1 LDZ2 #0060 ++ .editview/y1 LDZ2 DUP2 #0080 ++ #03 ;line-ver JSR2
- (
-
.bankview/x1 LDZ2 #0002 --
.bankview/y1 LDZ2 #0002 --
.bankview/x2 LDZ2 #0001 ++
.bankview/y2 LDZ2 #0001 ++ #03 ;line-rect JSR2
+ .editview/x1 LDZ2 #0002 --
+ .editview/y1 LDZ2 #0002 --
+ .editview/x2 LDZ2 #0001 ++
+ .editview/y2 LDZ2 #0001 ++ #03 ;line-rect JSR2
+
+ .frame/x1 LDZ2 .frame/x2 LDZ2 .frame/y1 LDZ2 #0032 ++ #03 ;line-hor JSR2
+
+ .toolview/x1 LDZ2 #0002 --
+ .toolview/y1 LDZ2 #0002 --
+ .toolview/x2 LDZ2 #0001 ++
+ .toolview/y2 LDZ2 #0001 ++ #03 ;line-rect JSR2
+
+
.blendview/x1 LDZ2 #0002 --
.blendview/y1 LDZ2 #0002 --
.blendview/x2 LDZ2 #0001 ++
@@ 160,15 196,14 @@
.dataview/x1 LDZ2 #0002 --
.dataview/y1 LDZ2 #0002 --
.dataview/x2 LDZ2 #0001 ++
- .dataview/y2 LDZ2 #0007 -- #03 ;line-rect JSR2
-
- .editview/x1 LDZ2 #0002 --
- .editview/y1 LDZ2 #0002 --
- .editview/x2 LDZ2 #0001 ++
- .editview/y2 LDZ2 #0001 ++ #03 ;line-rect JSR2
-
- )
+ .dataview/y2 LDZ2 #0001 ++ #03 ;line-rect JSR2
+ .frame/x1 LDZ2 #0002 --
+ .frame/y1 LDZ2 #0002 --
+ .frame/x2 LDZ2 #0001 ++
+ .frame/y2 LDZ2 #0001 ++ #02 ;line-rect JSR2
+
+)
#01 .settings/blending STZ
;filepath1 .File/name DEO2 #1000 .File/length DEO2 BANK .File/load DEO2
@@ 217,19 252,10 @@ BRK
( skip ) .Mouse/state DEI #00 ! #01 JCN [ BRK ]
- ( toolbar )
- .Mouse/y DEI2 .bankview/y1 LDZ2 #0010 -- -- #0008 // #0000 !! ;&no-toolbar-click JCN2
- ( brush )
- .Mouse/x DEI2 .bankview/x1 LDZ2 -- #0008 // #000d << ,&no-brush-click JCN
- .Mouse/x DEI2 .bankview/x1 LDZ2 -- #0008 // #000f >> ,&no-brush-click JCN
- ( select ) .mouse/x LDZ2 .bankview/x1 LDZ2 -- #0008 // #000d -- TOB .settings/tool STZ
- &no-brush-click
- .Mouse/x DEI2 .bankview/x1 LDZ2 -- #0008 // #0005 !! ,&no-toggle-depth JCN
- ;toggle-depth JSR2
- &no-toggle-depth
- ( release ) #00 .Mouse/state DEO
- ;redraw JSR2 BRK
- &no-toolbar-click
+ ( tileview )
+ .Mouse/x DEI2 DUP2 .tileview/x1 LDZ2 >> ROT ROT .tileview/x2 LDZ2 << #0101 ==
+ .Mouse/y DEI2 DUP2 .tileview/y1 LDZ2 >> ROT ROT .tileview/y2 LDZ2 << #0101 ==
+ #0101 == ;on-touch-tileview JCN2
( bankview )
.Mouse/x DEI2 DUP2 .bankview/x1 LDZ2 >> ROT ROT .bankview/x2 LDZ2 << #0101 ==
@@ 241,6 267,11 @@ BRK
.Mouse/y DEI2 DUP2 .editview/y1 LDZ2 >> ROT ROT .editview/y2 LDZ2 << #0101 ==
#0101 == ;on-touch-editview JCN2
+ ( toolview )
+ .Mouse/x DEI2 DUP2 .toolview/x1 LDZ2 >> ROT ROT .toolview/x2 LDZ2 << #0101 ==
+ .Mouse/y DEI2 DUP2 .toolview/y1 LDZ2 >> ROT ROT .toolview/y2 LDZ2 << #0101 ==
+ #0101 == ;on-touch-toolview JCN2
+
( dataview )
.Mouse/x DEI2 DUP2 .dataview/x1 LDZ2 >> ROT ROT .dataview/x2 LDZ2 << #0101 ==
.Mouse/y DEI2 DUP2 .dataview/y1 LDZ2 >> ROT ROT .dataview/y2 LDZ2 << #0101 ==
@@ 263,6 294,15 @@ BRK
BRK
+@on-touch-tileview ( -> )
+
+ .Mouse/x DEI2 .tileview/x1 LDZ2 --
+ .Mouse/y DEI2 .tileview/y1 LDZ2 --
+ ;get-addr JSR2 LDA
+ DEBUG
+
+BRK
+
@on-touch-bankview ( -> )
.settings/tool LDZ #01 ! ,¬-copy-mode JCN
@@ 310,6 350,12 @@ BRK
BRK
+@on-touch-toolview ( -> )
+
+ #aa DEBUG
+
+BRK
+
@on-touch-dataview ( -> )
.Mouse/x DEI2 .dataview/x1 LDZ2 -- #0008 // TOB
@@ 450,36 496,82 @@ RTN
@redraw ( -- )
+ (
;draw-bankview JSR2
;draw-editview JSR2
+ )
+
+ ;draw-toolview JSR2
;draw-blendview JSR2
;draw-colorview JSR2
;draw-dataview JSR2
;draw-preview JSR2
+
+ ;draw-tileview JSR2
+
RTN
-@draw-bankview ( -- )
+@draw-tileview ( -- )
+
+ #0000 HEIGHT
+ &ver
+ OVR2 STH2
+ #0000 WIDTH
+ &hor
+ ( have iterators )
+ OVR2 STH2kr
+ ( get pixel )
+ OVR2 OVR2 ,get-pixel JSR
+ ( put pixel )
+ ;put-pixel JSR2
+ INCR2
+ LTH2k ,&hor JCN
+ POP2 POP2
+ POP2r
+ INCR2
+ LTH2k ,&ver JCN
+ POP2 POP2
- ( toolbar )
+RTN
- .bankview/y1 LDZ2 #0010 -- .Screen/y DEO2
+@get-pixel ( x* y* -- color )
+
+ ( get address )
+ OVR2 SWP2 ,get-addr JSR LDA
+ ( get mod of x* )
+ ROT ROT TOB #08 MOD
+ ( get color )
+ #07 SWP - SFT #01 AND
- .bankview/x1 LDZ2 #0028 ++ .Screen/x DEO2
- ;depth_icns #00 .settings/depth LDZ #0008 ** ++ .Screen/addr DEO2
- #23 .Screen/color DEO
+RTN
- .bankview/x1 LDZ2 #0068 ++ .Screen/x DEO2
- ;tool_selector .Screen/addr DEO2
- #21 .settings/tool LDZ #00 = + .Screen/color DEO
+@put-pixel ( x* y* color -- )
- .Screen/x DEI2 #0008 ++ .Screen/x DEO2
- ;tool_hand .Screen/addr DEO2
- #21 .settings/tool LDZ #01 = + .Screen/color DEO
+ STH
+ .tileview/y1 LDZ2 ++ .Screen/y DEO2
+ .tileview/x1 LDZ2 ++ .Screen/x DEO2
+ STHr
+ .Screen/color DEO
- .Screen/x DEI2 #0008 ++ .Screen/x DEO2
- ;tool_eraser .Screen/addr DEO2
- #21 .settings/tool LDZ #02 = + .Screen/color DEO
+RTN
+
+@get-addr ( x* y* -- addr* )
+
+ ( get row )
+ DUP2 #0008 MOD2
+
+ ( get tile )
+ SWP2 #0008 // WIDTH #0002 ** ** ++
+
+ SWP2 STEP8
+ #0002 **
+ ++
+ BANK ++
+
+RTN
+
+@draw-bankview ( -- )
( guides )
.bankview/x1 LDZ2 #0010 -- .Screen/x DEO2
@@ 523,14 615,12 @@ RTN
#00 #04
&hor
OVR #20 * TOS .editview/x1 LDZ2 ++ .Screen/x DEO2
- ( get x,y )
GET-ITERATORS
- ( check if within ratio )
.settings/ratio LDZ #0f AND < STH
.settings/ratio LDZ #04 SFT < STHr
#0101 !! ,&outside JCN
STH2kr .Screen/addr DEO2
- #01 ,draw-tile JSR
+ ,draw-tile JSR
( incr ) STH2r #0010 ++ STH2
&outside
( incr ) INCR
@@ 543,14 633,12 @@ RTN
RTN
-@draw-tile ( color -- )
+@draw-tile ( -- )
- STH
- #00 #20
+ #00 #08
&ver
- #00 #20
+ #00 #08
&hor
-
( get x,y )
GET-ITERATORS
( get address )
@@ 558,23 646,40 @@ RTN
( after this, +R XY )
SWP2 SWP STH
( got sprite line )
- #04 / TOS ++ LDA
+ TOS ++ LDA
( get pixel )
- STHr #04 /
+ STHr
#07 SWP - SFT #01 AND
.Screen/color DEO
- #0001 .Screen/x DEI2 ++ .Screen/x DEO2
+ ( move ) #0004 .Screen/x DEI2 ++ .Screen/x DEO2
( incr ) INCR
LTHk ,&hor JCN
POP2
- #0001 .Screen/y DEI2 ++ .Screen/y DEO2
- .Screen/x DEI2 #0020 -- .Screen/x DEO2
+ ( move ) #0004 .Screen/y DEI2 ++ .Screen/y DEO2
+ ( rewind ) .Screen/x DEI2 #0020 -- .Screen/x DEO2
( incr ) INCR
LTHk ,&ver JCN
POP2
- .Screen/y DEI2 #0020 -- .Screen/y DEO2
- POPr
+ ( rewind ) .Screen/y DEI2 #0020 -- .Screen/y DEO2
+
+RTN
+
+@draw-toolview ( -- )
+
+ .toolview/y1 LDZ2 .Screen/y DEO2
+
+ .toolview/x1 LDZ2 .Screen/x DEO2
+ ;tool_selector .Screen/addr DEO2
+ #21 .settings/tool LDZ #00 = + .Screen/color DEO
+
+ .Screen/x DEI2 #0008 ++ .Screen/x DEO2
+ ;tool_hand .Screen/addr DEO2
+ #21 .settings/tool LDZ #01 = + .Screen/color DEO
+
+ .Screen/x DEI2 #0008 ++ .Screen/x DEO2
+ ;tool_eraser .Screen/addr DEO2
+ #21 .settings/tool LDZ #02 = + .Screen/color DEO
RTN
@@ 701,7 806,7 @@ RTN
.dataview/x1 LDZ2 .Screen/x DEO2
OVR #08 * TOS .dataview/y1 LDZ2 ++ .Screen/y DEO2
OVR #02 * TOS GET-ADDR ++ LDA2 #23 ;draw-short JSR2
- .dataview/x1 LDZ2 #0020 ++ .Screen/x DEO2
+ .dataview/x1 LDZ2 #0028 ++ .Screen/x DEO2
OVR #02 * TOS GET-ADDR ++ #0008 ++ LDA2 #23 ;draw-short JSR2
INCR
LTHk ,&loop JCN