@@ 192,7 192,7 @@ BRK
[ LIT 'q ] NEQk NIP ,&no-tool0 JCN #00 ;set-tool JSR2 &no-tool0
[ LIT 'w ] NEQk NIP ,&no-tool1 JCN #01 ;set-tool JSR2 &no-tool1
[ LIT 'e ] NEQk NIP ,&no-tool2 JCN #02 ;set-tool JSR2 &no-tool2
- [ #08 ] NEQk NIP ,&no-delete JCN ;op-erase ;run-selection JSR2 #01 .state/changed STZ ;draw-state JSR2 ;redraw JSR2 &no-delete
+ [ #08 ] NEQk NIP ,&no-delete JCN ;op-erase ;run JSR2 #01 .state/changed STZ ;draw-state JSR2 ;redraw JSR2 &no-delete
[ #20 ] NEQk NIP ,&no-zoom JCN ;toggle-zoom JSR2 &no-zoom
[ #1b ] NEQk NIP ,&no-escape JCN .selection/x1 LDZ2 .selection/x2 STZ2 ;redraw JSR2 &no-escape
POP
@@ 203,15 203,15 @@ BRK
.Controller/button DEI
( default )
- [ #10 ] NEQk NIP ,&no-up JCN #00 #ff ;mod-selection JSR2 POP BRK &no-up
- [ #20 ] NEQk NIP ,&no-down JCN #00 #01 ;mod-selection JSR2 POP BRK &no-down
- [ #40 ] NEQk NIP ,&no-left JCN #ff #00 ;mod-selection JSR2 POP BRK &no-left
- [ #80 ] NEQk NIP ,&no-right JCN #01 #00 ;mod-selection JSR2 POP BRK &no-right
+ [ #10 ] NEQk NIP ,&no-u JCN #00 #ff ;mod-selection JSR2 POP BRK &no-u
+ [ #20 ] NEQk NIP ,&no-d JCN #00 #01 ;mod-selection JSR2 POP BRK &no-d
+ [ #40 ] NEQk NIP ,&no-l JCN #ff #00 ;mod-selection JSR2 POP BRK &no-l
+ [ #80 ] NEQk NIP ,&no-r JCN #01 #00 ;mod-selection JSR2 POP BRK &no-r
( shift )
- [ #14 ] NEQk NIP ,&no-shift-up JCN #00 #ff ;scale-selection JSR2 POP BRK &no-shift-up
- [ #24 ] NEQk NIP ,&no-shift-down JCN #00 #01 ;scale-selection JSR2 POP BRK &no-shift-down
- [ #44 ] NEQk NIP ,&no-shift-left JCN #ff #00 ;scale-selection JSR2 POP BRK &no-shift-left
- [ #84 ] NEQk NIP ,&no-shift-right JCN #01 #00 ;scale-selection JSR2 POP BRK &no-shift-right
+ [ #14 ] NEQk NIP ,&no-su JCN #00 #ff ;scale-selection JSR2 POP BRK &no-su
+ [ #24 ] NEQk NIP ,&no-sd JCN #00 #01 ;scale-selection JSR2 POP BRK &no-sd
+ [ #44 ] NEQk NIP ,&no-sl JCN #ff #00 ;scale-selection JSR2 POP BRK &no-sl
+ [ #84 ] NEQk NIP ,&no-sr JCN #01 #00 ;scale-selection JSR2 POP BRK &no-sr
POP
BRK
@@ 315,22 315,12 @@ BRK
@on-touch-nametable ( -> )
- ( get touch tile )
+ ( id )
.Mouse/y DEI2 .nametable/y LDZ2 SUB2 #43 SFT2
- .Mouse/x DEI2 .nametable/x LDZ2 SUB2 #03 SFT2 ADD2 STH2
- ( look for changes )
- STH2kr ;spritesheet/nametable ADD2 LDA
- .settings/focus LDZ2 ;spritesheet SUB2 #04 SFT2 NIP
- STH2kr ;spritesheet/color ADD2 LDA
- .settings/blend LDZ NEQ2 ,&continue JCN POP2r BRK &continue
- ( set sprite )
- .settings/focus LDZ2 ;spritesheet SUB2 #04 SFT2 NIP
- STH2kr ;spritesheet/nametable ADD2 STA
- ( set color )
- .settings/blend LDZ
- STH2r ;spritesheet/color ADD2 STA
- ;draw-nametable JSR2
- #01 .state/changed STZ ;draw-state JSR2
+ .Mouse/x DEI2 .nametable/x LDZ2 SUB2 #03 SFT2 ADD2 NIP
+ ( tile ) .settings/focus LDZ2 #04 SFT2 NIP
+ ( color ) .settings/blend LDZ
+ ;set-nametable JSR2
BRK
@@ 355,54 345,30 @@ BRK
.Mouse/y DEI2 .zoomview/y1 LDZ2 SUB2 #03 SFT2 NIP #04 NEQ ;&no-mod JCN2
.Mouse/x DEI2 .zoomview/x1 LDZ2 SUB2 #03 SFT2 NIP
- DUP #00 EQU .Mouse/state DEI #01 EQU #0101 NEQ2 ,&no-shiftup JCN
- ;op-shift-tile-up ;run-selection JSR2
- #01 .state/changed STZ ;draw-state JSR2 &no-shiftup
- DUP #00 EQU .Mouse/state DEI #01 GTH #0101 NEQ2 ,&no-shiftdown JCN
- ;op-shift-tile-down ;run-selection JSR2
- #01 .state/changed STZ ;draw-state JSR2 &no-shiftdown
- DUP #01 EQU .Mouse/state DEI #01 EQU #0101 NEQ2 ,&no-shiftright JCN
- ;op-shift-tile-right ;run-selection JSR2
- #01 .state/changed STZ ;draw-state JSR2 &no-shiftright
- DUP #01 EQU .Mouse/state DEI #01 GTH #0101 NEQ2 ,&no-shiftleft JCN
- ;op-shift-tile-left ;run-selection JSR2
- #01 .state/changed STZ ;draw-state JSR2 &no-shiftleft
+ DUP #00 EQU .Mouse/state DEI #01 EQU #0101 NEQ2 ,&no-su JCN ;op-shiftu ;run JSR2 &no-su
+ DUP #00 EQU .Mouse/state DEI #01 GTH #0101 NEQ2 ,&no-sd JCN ;op-shiftd ;run JSR2 &no-sd
+ DUP #01 EQU .Mouse/state DEI #01 EQU #0101 NEQ2 ,&no-sr JCN ;op-shiftr ;run JSR2 &no-sr
+ DUP #01 EQU .Mouse/state DEI #01 GTH #0101 NEQ2 ,&no-shiftleft JCN ;op-shiftl ;run JSR2 &no-shiftleft
POP
( release mouse ) #00 .Mouse/state DEO
,&finish JMP
&no-mod
- ( paint )
- .Mouse/x DEI2 .zoomview/x1 LDZ2 SUB2 #02 SFT2
- .Mouse/y DEI2 .zoomview/y1 LDZ2 SUB2 #02 SFT2
- .settings/focus LDZ2 ADD2
- ( detect erase )
- .settings/color LDZ .Mouse/state DEI #01 EQU MUL STH
- OVR2 OVR2 STHkr #00 ;toggle-pixel JSR2
- #0008 ADD2 STHr #01 ;toggle-pixel JSR2
- #01 .state/changed STZ ;draw-state JSR2
-
+ .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
+ ;put-pixel JSR2
&finish
-
+ #01 .state/changed STZ ;draw-state JSR2
;redraw JSR2
BRK
-@on-touch-blendview ( -> )
+@on-touch-preview ( -> )
- .Mouse/x DEI2 .blendview/x1 LDZ2 SUB2 #03 SFT2 NIP
- .Mouse/y DEI2 .blendview/y1 LDZ2 SUB2 #03 SFT2 NIP #20 SFT ADD
- DUP #0f GTH ,&no-set JCN
- DUP .settings/blend LDZ #b0 AND ADD .settings/blend STZ
- &no-set
- DUP #12 NEQ ,&no-ver JCN
- .settings/blend LDZ #20 EOR .settings/blend STZ
- &no-ver
- DUP #13 NEQ ,&no-hor JCN
- .settings/blend LDZ #10 EOR .settings/blend STZ
- &no-hor
- POP
- ;draw-blendview JSR2
+ ( y ) .Mouse/y DEI2 .preview/y1 LDZ2 SUB2 #03 SFT2 NIP
+ ( x ) .Mouse/x DEI2 .preview/x1 LDZ2 SUB2 #03 SFT2 NIP
+ #40 SFT ADD #11 ADD .settings/ratio STZ
;draw-preview JSR2
( release mouse ) #00 .Mouse/state DEO
@@ 411,26 377,17 @@ BRK
@on-touch-colorview ( -> )
.Mouse/y DEI2 .colorview/y1 LDZ2 SUB2 #03 SFT2 NIP
-
- DUP #00 NEQ ,&no-r JCN
- .System/r STHk ,&set-color JSR
- STHr [ .settings/color LDZ #01 SFT ADD ] DEO
- &no-r
- DUP #01 NEQ ,&no-g JCN
- .System/g STHk ,&set-color JSR
- STHr [ .settings/color LDZ #01 SFT ADD ] DEO
- &no-g
- DUP #02 NEQ ,&no-b JCN
- .System/b STHk ,&set-color JSR
- STHr [ .settings/color LDZ #01 SFT ADD ] DEO
- &no-b
+ [ #00 ] NEQk NIP ,&no-r JCN .System/r STHk ,&set-color JSR STHr ,&set-nibble JSR &no-r
+ [ #01 ] NEQk NIP ,&no-g JCN .System/g STHk ,&set-color JSR STHr ,&set-nibble JSR &no-g
+ [ #02 ] NEQk NIP ,&no-b JCN .System/b STHk ,&set-color JSR STHr ,&set-nibble JSR &no-b
POP
-
;redraw JSR2
- BRK
-
- &set-color
+BRK
+ &set-nibble ( -- )
+ .settings/color LDZ #01 SFT ADD DEO
+ JMP2r
+ &set-color ( -- )
.settings/color LDZ STHk #01 SFT ADD DEI
STHr #01 AND STHk
#0f SWP [ #60 SFT SFT ] AND
@@ 440,18 397,16 @@ BRK
SWP [ #60 SFT SFT ] ADD
JMP2r
-BRK
-
-@on-touch-preview ( -> )
-
- ( y ) .Mouse/y DEI2 .preview/y1 LDZ2 SUB2 #03 SFT2 NIP
- ( x ) .Mouse/x DEI2 .preview/x1 LDZ2 SUB2 #03 SFT2 NIP
-
- #40 SFT ADD #11 ADD
- .settings/ratio STZ
-
- ;redraw JSR2
+@on-touch-blendview ( -> )
+ .Mouse/x DEI2 .blendview/x1 LDZ2 SUB2 #03 SFT2 NIP
+ .Mouse/y DEI2 .blendview/y1 LDZ2 SUB2 #03 SFT2 NIP #20 SFT ADD
+ [ #0f GTHk NIP ] ,&no-set JCN DUP .settings/blend STHk LDZ #b0 AND ADD STHr STZ &no-set
+ [ #12 NEQk NIP ] ,&no-ver JCN .settings/blend STHk LDZ #20 EOR STHr STZ &no-ver
+ [ #13 NEQk NIP ] ,&no-hor JCN .settings/blend STHk LDZ #10 EOR STHr STZ &no-hor
+ POP
+ ;draw-blendview JSR2
+ ;draw-preview JSR2
( release mouse ) #00 .Mouse/state DEO
BRK
@@ 516,6 471,16 @@ JMP2r
JMP2r
+@set-nametable ( id tile color -- )
+
+ ROT #00 SWP STH2
+ ;spritesheet/color STH2kr ADD2 STA
+ ;spritesheet/nametable STH2r ADD2 STA
+ ;draw-nametable JSR2
+ #01 .state/changed STZ ;draw-state JSR2
+
+JMP2r
+
@mod-selection ( x y -- )
.settings/zoom LDZ ;mod-selection-zoom JCN2
@@ 575,7 540,7 @@ JMP2r
JMP2r
-@run-selection ( op* -- )
+@run ( op* -- )
STH2
.selection/y2 LDZ INC .selection/y1 LDZ
@@ 597,7 562,7 @@ JMP2r
JMP2r
-@op-shift-tile-up ( addr* -- )
+@op-shiftu ( addr* -- )
DUP2
DUP2 #0007 ADD2 SWP2 LDAk STH
@@ 617,7 582,7 @@ JMP2r
JMP2r
-@op-shift-tile-down ( addr* -- )
+@op-shiftd ( addr* -- )
DUP2
DUP2 #0007 ADD2 LDAk STH
@@ 637,7 602,7 @@ JMP2r
JMP2r
-@op-shift-tile-left ( addr* -- )
+@op-shiftl ( addr* -- )
STH2
#08 #00
@@ 654,7 619,7 @@ JMP2r
JMP2r
-@op-shift-tile-right ( addr* -- )
+@op-shiftr ( addr* -- )
STH2
#08 #00
@@ 771,17 736,21 @@ JMP2r
@draw-nametable ( -- )
#01 .Screen/auto DEO
+ .nametable/y LDZ2 .Screen/y DEO2
#1000
&ver
- #00 OVR #30 SFT2 .nametable/y LDZ2 ADD2 .Screen/y DEO2
+ STHk
.nametable/x LDZ2 .Screen/x DEO2
#1000
&hor
- OVR2 NIP OVR SWP [ #40 SFT ADD ] #00 SWP
- DUP2 ;spritesheet/nametable ADD2 LDA #00 SWP #40 SFT2 ;spritesheet ADD2 .Screen/addr DEO2
- ;spritesheet/color ADD2 LDA .Screen/sprite DEO
+ #00 OVR STHkr #40 SFT ADD
+ DUP2 ;spritesheet/nametable ADD2 LDA
+ #00 SWP #40 SFT2 ;spritesheet ADD2 .Screen/addr DEO2
+ ;spritesheet/color ADD2 LDA .Screen/sprite DEO
INC GTHk ,&hor JCN
POP2
+ POPr
+ .Screen/y DEI2k #0008 ADD2 ROT DEO2
INC GTHk ,&ver JCN
POP2
#00 .Screen/auto DEO
@@ 946,9 915,9 @@ JMP2r
.System/g ,&get-color JSR #03 ;draw-hex JSR2
.System/b ,&get-color JSR #03 ;draw-hex JSR2
- .colorview/x1 LDZ2 .colorview/y1 LDZ2
+ .colorview/x1 LDZ2 .colorview/y1 LDZ2
OVR2 OVR2 [ .System/r ,&get-color JSR ] ,&slider JSR
- OVR2 OVR2 #0008 ADD2 [ .System/g ,&get-color JSR ] ,&slider JSR
+ OVR2 OVR2 #0008 ADD2 [ .System/g ,&get-color JSR ] ,&slider JSR
#0010 ADD2 [ .System/b ,&get-color JSR ] ,&slider JSR
JMP2r
@@ 1260,7 1229,7 @@ JMP2r
@cut-snarf ( -- )
;copy-snarf JSR2
- ;op-erase ;run-selection JSR2
+ ;op-erase ;run JSR2
.selection/x1 LDZ2 .selection/x2 STZ2
;redraw JSR2
@@ 1329,10 1298,10 @@ JMP2r
.Screen/addr DEI2k #0008 ADD2 ROT DEO2
JMP2r
&repeat
- #00
- &repeat-loop
- #01 .Screen/sprite DEO
- INC GTHk ,&repeat-loop JCN
+ #00
+ &repeat-loop
+ #01 .Screen/sprite DEO
+ INC GTHk ,&repeat-loop JCN
POP2
JMP2r