uxn/projects/software/noodle.usm

804 lines
21 KiB
Plaintext
Raw Normal View History

2021-03-17 17:18:43 +00:00
(
app/noodle : illustration program
2021-03-18 23:05:10 +00:00
2021-03-19 20:41:59 +00:00
right-click - erase
2021-03-18 23:05:10 +00:00
alt-click - drag canvas
2021-03-19 20:41:59 +00:00
arrows - move zoom
space - toogle zoom
backspace - blank canvas
1-8 - select brush size
2021-03-18 17:13:55 +00:00
TODO
2021-03-19 02:01:33 +00:00
- Resize buttons
2021-03-19 16:41:23 +00:00
- Limit size
2021-03-19 18:29:46 +00:00
- Pixel cleanup brush
- Drag canvas content
2021-03-25 03:00:34 +00:00
BUGS
- Zoom drawing with other tools
2021-03-17 17:18:43 +00:00
)
%RTN { JMP2r }
2021-03-26 18:19:19 +00:00
%RTN? { #00 EQU #02 JNZ STH2r JMP2 }
%ABS2 { DUP2 #000f SFT2 EQU #04 JNZ #ffff MUL2 }
2021-03-27 03:16:48 +00:00
%CLN2r { DUP2 STH2 }
2021-03-22 16:56:33 +00:00
%STEP8 { #0033 SFT2 }
%MOD8 { #0007 AND2 }
%SFL { #40 SFT SFT }
2021-03-18 17:13:55 +00:00
%++ { #0001 ADD2 } %-- { #0001 SUB2 }
2021-03-20 03:41:45 +00:00
%2/ { #0001 SFT2 }
2021-03-20 04:13:09 +00:00
%8/ { #0003 SFT2 } %8* { #0030 SFT2 }
2021-03-19 18:49:57 +00:00
%8+ { #0008 ADD2 }
2021-03-17 17:18:43 +00:00
2021-03-21 20:58:32 +00:00
( variables )
2021-03-25 03:00:34 +00:00
;cursor { x 2 y 2 x0 2 y0 2 dx 2 dy 2 }
;brush { tool 1 size 1 patt 1 drag 1 last 1 oper 2 }
;zoom { active 1 x 2 y 2 }
2021-03-18 23:05:10 +00:00
;center { x 2 y 2 }
2021-03-25 03:00:34 +00:00
( interface )
2021-03-24 23:30:52 +00:00
;toolpane { x1 2 y1 2 x2 2 y2 2 }
;pattpane { x1 2 y1 2 x2 2 y2 2 }
;sizepane { x1 2 y1 2 x2 2 y2 2 }
2021-03-25 03:00:34 +00:00
;canvas { x1 2 y1 2 x2 2 y2 2 w 2 h 2 }
2021-03-18 17:13:55 +00:00
;rect { x1 2 y1 2 x2 2 y2 2 }
2021-03-25 16:24:26 +00:00
;line { x1 2 y1 2 x2 2 y2 2 sx 2 sy 2 dx 2 dy 2 e1 2 e2 2 }
2021-03-19 19:09:55 +00:00
;origin { x1 2 y1 2 x2 2 y2 2 }
2021-03-18 17:13:55 +00:00
;color { byte 1 }
2021-03-19 20:41:59 +00:00
;pt0 { x 2 y 2 }
;pt1 { x 2 y 2 }
2021-03-25 03:00:34 +00:00
;pt2 { x 2 y 2 } ( paint-rect )
2021-03-18 17:54:54 +00:00
;px { x 1 y 1 }
2021-03-17 17:18:43 +00:00
2021-03-21 20:58:32 +00:00
( devices )
|0100 ;Console { pad 8 char 1 byte 1 short 2 }
|0110 ;Screen { width 2 height 2 pad 4 x 2 y 2 color 1 }
|0120 ;Sprite { pad 8 x 2 y 2 addr 2 color 1 }
|0130 ;Controller { buttons 1 }
|0140 ;Keys { key 1 }
|0150 ;Mouse { x 2 y 2 state 1 chord 1 }
|0160 ;File { pad 8 name 2 length 2 load 2 save 2 }
|01F0 .RESET .FRAME .ERROR ( vectors )
2021-03-25 03:00:34 +00:00
|01F8 [ c0ef c07f c05f ] ( palette )
2021-03-21 20:58:32 +00:00
( program )
|0200 @RESET
2021-03-18 17:13:55 +00:00
2021-03-19 18:49:57 +00:00
( default canvas )
2021-03-25 16:24:26 +00:00
#0020 =canvas.w #0010 =canvas.h
2021-03-19 18:49:57 +00:00
( default brush )
2021-03-25 03:00:34 +00:00
#04 =brush.size
#00 =brush.patt
#00 =brush.tool
2021-03-19 18:49:57 +00:00
2021-03-18 23:05:10 +00:00
( load file )
2021-03-19 18:29:46 +00:00
,filepath ,load-file JSR2
2021-03-18 23:05:10 +00:00
( find screen center )
~Screen.width #0002 DIV2 =center.x
~Screen.height #0002 DIV2 =center.y
2021-03-19 03:53:47 +00:00
( center canvas )
~center.x ~canvas.w 8* 2/ SUB2 =canvas.x1
~center.y ~canvas.h 8* 2/ SUB2 =canvas.y1
2021-03-18 23:05:10 +00:00
2021-03-19 03:53:47 +00:00
,draw-background JSR2
2021-03-18 23:05:10 +00:00
,fit-canvas JSR2
2021-03-19 18:29:46 +00:00
2021-03-24 23:30:52 +00:00
( setup panes )
#0010 =toolpane.x1 #0010 =toolpane.y1
#0010 =pattpane.x1 ~Screen.height #0018 SUB2 =pattpane.y1
~Screen.width #0050 SUB2 =sizepane.x1 #0010 =sizepane.y1
2021-03-25 16:24:26 +00:00
~toolpane.x1 #0028 ADD2 =toolpane.x2
2021-03-24 23:30:52 +00:00
~toolpane.y1 #0008 ADD2 =toolpane.y2
,draw-toolpane JSR2
~pattpane.x1 #0040 ADD2 =pattpane.x2
~pattpane.y1 #0008 ADD2 =pattpane.y2
,draw-pattpane JSR2
~sizepane.x1 #0040 ADD2 =sizepane.x2
~sizepane.y1 #0008 ADD2 =sizepane.y2
,draw-sizepane JSR2
2021-03-17 17:18:43 +00:00
BRK
@FRAME
,draw-cursor JSR2
2021-03-18 23:05:10 +00:00
( release drag )
2021-03-27 02:41:19 +00:00
~Mouse.state #00 EQU ~brush.drag #01 EQU #0101 NEQ2 ^$no-release JNZ
2021-03-19 19:09:55 +00:00
~origin.x1 #0002 SUB2 ~origin.y1 #0002 SUB2 ~origin.x2 #0002 ADD2 ~origin.y2 #0002 ADD2 #00 ,fill-rect JSR2
2021-03-18 23:05:10 +00:00
~canvas.x1 -- ~canvas.y1 -- ~canvas.x2 ~canvas.y2 #10 ,line-rect JSR2
,draw-background JSR2
,fit-canvas JSR2
2021-03-24 23:30:52 +00:00
,draw-toolpane JSR2
,draw-pattpane JSR2
,draw-sizepane JSR2
2021-03-25 03:00:34 +00:00
#00 =brush.drag
2021-03-18 23:05:10 +00:00
$no-release
2021-03-25 00:22:03 +00:00
( operations on release line/rect )
2021-03-26 18:19:19 +00:00
~Mouse.state ~brush.last EQU ,$no-touch-change JNZ2
~Mouse.x CLN2r ~canvas.x1 GTS2 STH2r ~canvas.x2 LTS2 #0101 NEQ2 ,$no-touch-change JNZ2
~Mouse.y CLN2r ~canvas.y1 GTS2 STH2r ~canvas.y2 LTS2 #0101 NEQ2 ,$no-touch-change JNZ2
2021-03-27 02:41:19 +00:00
~Mouse.state #00 EQU ^$no-touch-ondown JNZ
2021-03-25 00:22:03 +00:00
( on down )
~Mouse.x =cursor.dx
~Mouse.y =cursor.dy
$no-touch-ondown
2021-03-27 02:41:19 +00:00
~Mouse.state #00 NEQ ^$no-touch-onup JNZ
2021-03-25 00:22:03 +00:00
( on up )
2021-03-27 02:41:19 +00:00
~brush.tool #02 NEQ ^$no-touch-line JNZ
2021-03-25 03:00:34 +00:00
~cursor.dx ~canvas.x1 SUB2 ~cursor.dy ~canvas.y1 SUB2 ~Mouse.x ~canvas.x1 SUB2 ~Mouse.y ~canvas.y1 SUB2 ,paint-line JSR2
2021-03-25 00:22:03 +00:00
,$touch-end JMP2
$no-touch-line
2021-03-27 02:41:19 +00:00
~brush.tool #03 NEQ ^$no-touch-rect JNZ
2021-03-25 03:00:34 +00:00
~cursor.dx ~canvas.x1 SUB2 ~cursor.dy ~canvas.y1 SUB2 ~Mouse.x ~canvas.x1 SUB2 ~Mouse.y ~canvas.y1 SUB2 ,paint-rect JSR2
2021-03-25 00:22:03 +00:00
,$touch-end JMP2
$no-touch-rect
$no-touch-onup
$no-touch-change
2021-03-26 18:19:19 +00:00
~Mouse.state #00 EQU ,$no-touch JNZ2
2021-03-18 23:05:10 +00:00
( drag )
2021-03-26 18:19:19 +00:00
~Controller #02 NEQ ,$no-drag JNZ2
2021-03-27 02:41:19 +00:00
~brush.drag #00 NEQ ^$no-drag-start JNZ
2021-03-19 19:09:55 +00:00
~canvas.x1 =origin.x1
~canvas.y1 =origin.y1
~canvas.x2 =origin.x2
~canvas.y2 =origin.y2
$no-drag-start
2021-03-18 23:05:10 +00:00
~canvas.x1 -- ~canvas.y1 -- ~canvas.x2 ~canvas.y2 #10 ,line-rect JSR2
~canvas.x1 ~Mouse.x ~cursor.x0 SUB2 ADD2 =canvas.x1
~canvas.y1 ~Mouse.y ~cursor.y0 SUB2 ADD2 =canvas.y1
~canvas.w 8* ~canvas.x1 ADD2 =canvas.x2
~canvas.h 8* ~canvas.y1 ADD2 =canvas.y2
~canvas.x1 -- ~canvas.y1 -- ~canvas.x2 ~canvas.y2 #13 ,line-rect JSR2
2021-03-25 03:00:34 +00:00
#01 =brush.drag
2021-03-18 23:05:10 +00:00
,$touch-end JMP2
$no-drag
2021-03-24 23:30:52 +00:00
( in sizepane )
2021-03-27 02:41:19 +00:00
~Mouse.x CLN2r ~sizepane.x1 GTH2 STH2r ~sizepane.x2 LTH2 #0101 NEQ2 ^$no-touch-sizepane JNZ
~Mouse.y CLN2r ~sizepane.y1 GTH2 STH2r ~sizepane.y2 LTH2 #0101 NEQ2 ^$no-touch-sizepane JNZ
2021-03-19 02:01:33 +00:00
( release ) #00 =Mouse.state
2021-03-25 03:00:34 +00:00
#01 =brush.tool
~Mouse.x ~sizepane.x1 SUB2 8/ SWP POP =brush.size
2021-03-24 23:30:52 +00:00
( draw ) ,draw-sizepane JSR2
( draw ) ,draw-toolpane JSR2
,$touch-end JMP2
$no-touch-sizepane
( in pattpane )
2021-03-27 02:41:19 +00:00
~Mouse.x CLN2r ~pattpane.x1 GTH2 STH2r ~pattpane.x2 LTH2 #0101 NEQ2 ^$no-touch-pattpane JNZ
~Mouse.y CLN2r ~pattpane.y1 GTH2 STH2r ~pattpane.y2 LTH2 #0101 NEQ2 ^$no-touch-pattpane JNZ
2021-03-24 23:30:52 +00:00
( release ) #00 =Mouse.state
2021-03-25 03:00:34 +00:00
~Mouse.x ~pattpane.x1 SUB2 8/ SWP POP =brush.patt
2021-03-24 23:30:52 +00:00
( draw ) ,draw-pattpane JSR2
,$touch-end JMP2
$no-touch-pattpane
( in toolpane )
2021-03-27 02:41:19 +00:00
~Mouse.x CLN2r ~toolpane.x1 GTH2 STH2r ~toolpane.x2 LTH2 #0101 NEQ2 ^$no-touch-toolpane JNZ
~Mouse.y CLN2r ~toolpane.y1 GTH2 STH2r ~toolpane.y2 LTH2 #0101 NEQ2 ^$no-touch-toolpane JNZ
2021-03-24 23:30:52 +00:00
( release ) #00 =Mouse.state
2021-03-25 03:00:34 +00:00
~Mouse.x ~toolpane.x1 SUB2 8/ SWP POP =brush.tool
2021-03-24 23:30:52 +00:00
( draw ) ,draw-toolpane JSR2
,$touch-end JMP2
$no-touch-toolpane
2021-03-18 23:05:10 +00:00
( in canvas )
2021-03-26 18:19:19 +00:00
~Mouse.x CLN2r ~canvas.x1 GTS2 STH2r ~canvas.x2 LTS2 #0101 NEQ2 ,$no-touch-canvas JNZ2
~Mouse.y CLN2r ~canvas.y1 GTS2 STH2r ~canvas.y2 LTS2 #0101 NEQ2 ,$no-touch-canvas JNZ2
2021-03-21 23:33:34 +00:00
( set cursor operation )
2021-03-26 18:19:19 +00:00
,add-pixel ~Mouse.state #01 EQU ,$no-oper JNZ2 POP2 ,remove-pixel $no-oper =brush.oper
2021-03-21 16:18:52 +00:00
2021-03-27 02:41:19 +00:00
~brush.tool #00 NEQ ^$no-touch-pen JNZ
2021-03-25 03:00:34 +00:00
~cursor.x0 ~canvas.x1 SUB2 ~cursor.y0 ~canvas.y1 SUB2 ~Mouse.x ~canvas.x1 SUB2 ~Mouse.y ~canvas.y1 SUB2 ,paint-line JSR2
2021-03-24 23:30:52 +00:00
,$touch-end JMP2
$no-touch-pen
2021-03-27 02:41:19 +00:00
~brush.tool #01 NEQ ^$no-touch-brush JNZ
2021-03-25 00:22:03 +00:00
~Mouse.x ~canvas.x1 SUB2 ~Mouse.y ~canvas.y1 SUB2 ,paint-brush JSR2
2021-03-24 23:30:52 +00:00
,$touch-end JMP2
$no-touch-brush
2021-03-27 02:41:19 +00:00
~brush.tool #04 NEQ ^$no-touch-zoom JNZ
2021-03-25 16:24:26 +00:00
~zoom.active #00 EQU =zoom.active
( release ) #00 =Mouse.state
~Mouse.x ~canvas.x1 SUB2 ~canvas.w 2/ SUB2 =zoom.x
~Mouse.y ~canvas.y1 SUB2 ~canvas.h 2/ SUB2 =zoom.y
,redraw JSR2
,$touch-end JMP2
$no-touch-zoom
2021-03-18 23:05:10 +00:00
$no-touch-canvas
2021-03-19 03:53:47 +00:00
( background interface )
2021-03-27 02:41:19 +00:00
~Mouse.y STEP8 ~Screen.height #0010 SUB2 NEQ2 ^$no-touch-background JNZ
2021-03-22 16:56:33 +00:00
~Mouse.x ~Screen.width #0020 SUB2 SUB2 8/
2021-03-27 02:41:19 +00:00
DUP2 #0001 NEQ2 ^$no-load-button JNZ
2021-03-22 16:56:33 +00:00
,filepath ,load-file JSR2
,draw-canvas JSR2
( release ) #00 =Mouse.state
$no-load-button
2021-03-27 02:41:19 +00:00
DUP2 #0002 NEQ2 ^$no-save-button JNZ
2021-03-22 16:56:33 +00:00
,filepath ,save-file JSR2
( release ) #00 =Mouse.state
$no-save-button
POP2
$no-touch-background
( jump label )
2021-03-18 23:05:10 +00:00
$touch-end
2021-03-18 17:13:55 +00:00
2021-03-18 23:05:10 +00:00
$no-touch
2021-03-18 17:13:55 +00:00
2021-03-19 20:41:59 +00:00
~Controller.buttons #f0 AND
2021-03-27 02:41:19 +00:00
DUP #04 SFT #01 AND #01 NEQ ^$no-up JNZ
2021-03-19 20:41:59 +00:00
( move ) ~zoom.y -- =zoom.y $no-up
2021-03-27 02:41:19 +00:00
DUP #05 SFT #01 AND #01 NEQ ^$no-down JNZ
2021-03-19 20:41:59 +00:00
( move ) ~zoom.y ++ =zoom.y $no-down
2021-03-27 02:41:19 +00:00
DUP #06 SFT #01 AND #01 NEQ ^$no-left JNZ
2021-03-19 20:41:59 +00:00
( move ) ~zoom.x -- =zoom.x $no-left
2021-03-27 02:41:19 +00:00
DUP #07 SFT #01 AND #01 NEQ ^$no-right JNZ
2021-03-19 20:41:59 +00:00
( move ) ~zoom.x ++ =zoom.x $no-right
2021-03-26 18:19:19 +00:00
#00 EQU #04 JNZ ,draw-canvas JSR2
2021-03-19 20:41:59 +00:00
2021-03-26 18:19:19 +00:00
~Keys #00 EQU ,$no-keys JNZ2
2021-03-20 00:40:15 +00:00
~Keys
2021-03-27 02:41:19 +00:00
DUP #20 NEQ ^$no-space JNZ
2021-03-20 00:40:15 +00:00
( toggle zoom ) ~zoom.active #00 EQU =zoom.active ,redraw JSR2 $no-space
2021-03-27 02:41:19 +00:00
DUP #08 NEQ ^$no-backspace JNZ
2021-03-20 00:40:15 +00:00
( erase ) ,clear JSR2 $no-backspace
2021-03-27 02:41:19 +00:00
DUP #71 NEQ ^$no-qkey JNZ
2021-03-25 03:00:34 +00:00
( tool0 ) #00 =brush.tool ,draw-toolpane JSR2 $no-qkey
2021-03-27 02:41:19 +00:00
DUP #77 NEQ ^$no-wkey JNZ
2021-03-25 03:00:34 +00:00
( tool0 ) #01 =brush.tool ,draw-toolpane JSR2 $no-wkey
2021-03-27 02:41:19 +00:00
DUP #65 NEQ ^$no-ekey JNZ
2021-03-25 03:00:34 +00:00
( tool0 ) #02 =brush.tool ,draw-toolpane JSR2 $no-ekey
2021-03-27 02:41:19 +00:00
DUP #72 NEQ ^$no-rkey JNZ
2021-03-25 03:00:34 +00:00
( tool0 ) #03 =brush.tool ,draw-toolpane JSR2 $no-rkey
2021-03-27 02:41:19 +00:00
DUP #74 NEQ ^$no-tkey JNZ
2021-03-25 16:24:26 +00:00
( tool0 ) #04 =brush.tool ,draw-toolpane JSR2 $no-tkey
DUP
2021-03-27 02:41:19 +00:00
DUP #30 GTH SWP #39 LTH #0101 NEQ2 ^$no-numkey JNZ
2021-03-25 03:00:34 +00:00
( size ) ~Keys #31 SUB =brush.size ,draw-sizepane JSR2 $no-numkey
2021-03-20 00:40:15 +00:00
POP
2021-03-19 19:43:29 +00:00
( release ) #00 =Keys
$no-keys
2021-03-18 23:05:10 +00:00
~Mouse.x =cursor.x0
~Mouse.y =cursor.y0
2021-03-25 03:00:34 +00:00
~Mouse.state =brush.last
2021-03-18 17:13:55 +00:00
2021-03-18 23:05:10 +00:00
BRK
2021-03-18 17:54:54 +00:00
2021-03-20 00:40:15 +00:00
@clear
( from ) ,data
( to ) ~canvas.w ~canvas.h MUL2 #0008 MUL2 ,data ADD2
2021-03-27 02:41:19 +00:00
$loop
2021-03-24 16:39:19 +00:00
OVR2 #00 ROT ROT POK2
2021-03-20 00:40:15 +00:00
( incr ) SWP2 #0001 ADD2 SWP2
2021-03-26 18:19:19 +00:00
OVR2 OVR2 LTH2 ^$loop JNZ
2021-03-20 00:40:15 +00:00
POP2 POP2
,redraw JSR2
RTN
2021-03-18 23:05:10 +00:00
@load-file ( path )
2021-03-18 17:13:55 +00:00
2021-03-19 18:49:57 +00:00
=File.name ~canvas.w ~canvas.h MUL2 #0008 MUL2 =File.length ,data =File.load
RTN
@save-file
=File.name ~canvas.w ~canvas.h MUL2 #0008 MUL2 =File.length ,data =File.save
2021-03-18 17:13:55 +00:00
2021-03-18 23:05:10 +00:00
RTN
2021-03-17 17:18:43 +00:00
2021-03-19 18:29:46 +00:00
@fit-canvas
~canvas.w 8* ~canvas.x1 ADD2 =canvas.x2
~canvas.h 8* ~canvas.y1 ADD2 =canvas.y2
~canvas.x1 -- ~canvas.y1 -- ~canvas.x2 ~canvas.y2 #01 ,line-rect JSR2
,draw-canvas JSR2
RTN
2021-03-25 03:00:34 +00:00
@paint-line ( x1 y1 x2 y2 )
2021-03-24 23:30:52 +00:00
2021-03-25 16:24:26 +00:00
( load ) =line.y1 =line.x1 =line.y2 =line.x2
( trim if zoomed )
2021-03-27 02:41:19 +00:00
~zoom.active #01 NEQ ^$no-zoom JNZ
2021-03-25 16:24:26 +00:00
~line.x1 8/ ~zoom.x ADD2 =line.x1
~line.y1 8/ ~zoom.y ADD2 =line.y1
~line.x2 8/ ~zoom.x ADD2 =line.x2
~line.y2 8/ ~zoom.y ADD2 =line.y2
$no-zoom
~line.x1 ~line.x2 SUB2 ABS2 =line.dx
~line.y1 ~line.y2 SUB2 ABS2 #0000 SWP2 SUB2 =line.dy
#ffff #00 ~line.x2 ~line.x1 LTS2 #0002 MUL2 ADD2 =line.sx
#ffff #00 ~line.y2 ~line.y1 LTS2 #0002 MUL2 ADD2 =line.sy
2021-03-24 23:30:52 +00:00
~line.dx ~line.dy ADD2 =line.e1
$loop
2021-03-25 16:24:26 +00:00
( paint ) ~line.x2 ~line.y2 ~brush.oper JSR2
2021-03-27 02:41:19 +00:00
~line.x2 ~line.x1 EQU2 ~line.y2 ~line.y1 EQU2 #0101 EQU2 ^$end JNZ
2021-03-24 23:30:52 +00:00
~line.e1 #0002 MUL2 =line.e2
2021-03-27 02:41:19 +00:00
~line.e2 ~line.dy LTS2 ^$skipy JNZ
2021-03-24 23:30:52 +00:00
~line.e1 ~line.dy ADD2 =line.e1
2021-03-25 16:24:26 +00:00
~line.x2 ~line.sx ADD2 =line.x2
2021-03-24 23:30:52 +00:00
$skipy
2021-03-27 02:41:19 +00:00
~line.e2 ~line.dx GTS2 ^$skipx JNZ
2021-03-24 23:30:52 +00:00
~line.e1 ~line.dx ADD2 =line.e1
2021-03-25 16:24:26 +00:00
~line.y2 ~line.sy ADD2 =line.y2
2021-03-24 23:30:52 +00:00
$skipx
,$loop JMP2
$end
,draw-canvas JSR2
,draw-toolpane JSR2
,draw-pattpane JSR2
,draw-sizepane JSR2
RTN
2021-03-25 03:00:34 +00:00
@paint-rect ( x1 y1 x2 y2 )
2021-03-25 00:22:03 +00:00
2021-03-25 16:24:26 +00:00
( load ) =rect.y2 =rect.x2 =rect.y1 =rect.x1
( trim if zoomed )
2021-03-27 02:41:19 +00:00
~zoom.active #01 NEQ ^$no-zoom JNZ
2021-03-25 16:24:26 +00:00
~rect.x1 8/ ~zoom.x ADD2 =rect.x1
~rect.y1 8/ ~zoom.y ADD2 =rect.y1
~rect.x2 8/ ~zoom.x ADD2 #0001 ADD2 =rect.x2
~rect.y2 8/ ~zoom.y ADD2 #0001 ADD2 =rect.y2
$no-zoom
~rect.x1 =pt2.x
~rect.y1 =pt2.y
2021-03-25 00:22:03 +00:00
$ver
2021-03-25 03:00:34 +00:00
~rect.x1 =pt2.x
2021-03-25 00:22:03 +00:00
$hor
2021-03-25 03:00:34 +00:00
~pt2.x SWP POP =px.x ~pt2.y SWP POP =px.y
2021-03-27 02:41:19 +00:00
,patternize JSR2 #00 EQU ^$no-pixel JNZ
( draw ) ~pt2.x ~pt2.y ~brush.oper JSR2 $no-pixel
2021-03-25 03:00:34 +00:00
( incr ) ~pt2.x ++ =pt2.x
2021-03-27 02:41:19 +00:00
~pt2.x ~rect.x2 LTS2 ^$hor JNZ
2021-03-25 03:00:34 +00:00
~pt2.y ++ =pt2.y
2021-03-27 02:41:19 +00:00
~pt2.y ~rect.y2 LTS2 ^$ver JNZ
2021-03-25 00:22:03 +00:00
,draw-canvas JSR2
,draw-toolpane JSR2
,draw-pattpane JSR2
,draw-sizepane JSR2
RTN
@paint-brush ( x y )
2021-03-17 17:18:43 +00:00
2021-03-19 20:41:59 +00:00
#0003 SUB2 =pt0.y #0003 SUB2 =pt0.x ( cursor offset )
2021-03-18 17:54:54 +00:00
2021-03-19 18:29:46 +00:00
( trim if zoomed )
2021-03-27 02:41:19 +00:00
~zoom.active #01 NEQ ^$no-zoom JNZ
2021-03-19 20:41:59 +00:00
~pt0.x 8/ ~zoom.x ADD2 #0003 SUB2 =pt0.x
~pt0.y 8/ ~zoom.y ADD2 #0003 SUB2 =pt0.y
2021-03-19 18:29:46 +00:00
$no-zoom
2021-03-18 17:54:54 +00:00
#00 =px.x #00 =px.y
$ver
#00 =px.x
$hor
2021-03-25 03:00:34 +00:00
( addr ) ,size_icn #00 ~brush.size 8* ADD2
2021-03-24 16:39:19 +00:00
( byte ) #00 ~px.y ADD2 PEK2 #07 ~px.x SUB SFT #01 AND
2021-03-27 02:41:19 +00:00
#00 EQU ^$no-pixel JNZ
,patternize JSR2 #00 EQU ^$no-pixel JNZ
~pt0.x #00 ~px.x ADD2 ~pt0.y #00 ~px.y ADD2 ~brush.oper JSR2 $no-pixel
2021-03-18 17:54:54 +00:00
( incr ) ~px.x #01 ADD =px.x
2021-03-27 02:41:19 +00:00
~px.x #08 LTH ^$hor JNZ
2021-03-18 17:54:54 +00:00
( incr ) ~px.y #01 ADD =px.y
2021-03-27 02:41:19 +00:00
~px.y #08 LTH ^$ver JNZ
2021-03-18 17:54:54 +00:00
2021-03-18 23:05:10 +00:00
,draw-canvas JSR2
2021-03-24 23:30:52 +00:00
,draw-toolpane JSR2
,draw-pattpane JSR2
,draw-sizepane JSR2
2021-03-18 17:54:54 +00:00
2021-03-18 23:05:10 +00:00
RTN
2021-03-18 17:54:54 +00:00
2021-03-19 02:01:33 +00:00
@patternize
2021-03-27 02:41:19 +00:00
~brush.patt #00 NEQ ^$noplain JNZ
2021-03-19 02:01:33 +00:00
#01 RTN
$noplain
2021-03-27 02:41:19 +00:00
~brush.patt #01 NEQ ^$notone1 JNZ
2021-03-19 20:41:59 +00:00
~pt0.x #00 ~px.x ADD2 ~pt0.y #00 ~px.y ADD2 ADD2 #0001 AND2 #0000 EQU2
~pt0.x #00 ~px.x ADD2 ~pt0.y #00 ~px.y ADD2 SUB2 #0001 AND2 #0000 EQU2
2021-03-19 02:01:33 +00:00
#0101 EQU2
RTN
$notone1
2021-03-27 02:41:19 +00:00
~brush.patt #02 NEQ ^$notone2 JNZ
2021-03-19 20:41:59 +00:00
~pt0.x #00 ~px.x ADD2 ~pt0.y #00 ~px.y ADD2 ADD2 #0003 AND2 #0000 EQU2
~pt0.x #00 ~px.x ADD2 ~pt0.y #00 ~px.y ADD2 SUB2 #0003 AND2 #0000 EQU2
2021-03-19 02:01:33 +00:00
#0101 EQU2
RTN
$notone2
2021-03-27 02:41:19 +00:00
~brush.patt #03 NEQ ^$notone3 JNZ
2021-03-19 20:41:59 +00:00
~pt0.x #00 ~px.x ADD2 ~pt0.y #00 ~px.y ADD2 ADD2 #0005 AND2 #0000 EQU2
~pt0.x #00 ~px.x ADD2 ~pt0.y #00 ~px.y ADD2 SUB2 #0005 AND2 #0000 EQU2
2021-03-19 02:01:33 +00:00
#0101 EQU2
RTN
$notone3
2021-03-27 02:41:19 +00:00
~brush.patt #04 NEQ ^$notone4 JNZ
~pt0.x #00 ~px.x ADD2 ~pt0.y #00 ~px.y ADD2 ADD2 #0003 AND2 #0000 EQU2 RTN
2021-03-19 02:01:33 +00:00
$notone4
2021-03-27 02:41:19 +00:00
~brush.patt #05 NEQ ^$notone5 JNZ
~pt0.x #00 ~px.x ADD2 ~pt0.y #00 ~px.y ADD2 SUB2 #0003 AND2 #0000 EQU2 RTN
2021-03-19 02:01:33 +00:00
$notone5
2021-03-27 02:41:19 +00:00
~brush.patt #06 NEQ ^$notone6 JNZ
2021-03-19 20:41:59 +00:00
~pt0.x #00 ~px.x ADD2 #0001 AND2 SWP POP RTN
2021-03-19 02:01:33 +00:00
$notone6
2021-03-27 02:41:19 +00:00
~brush.patt #07 NEQ ^$notone7 JNZ
2021-03-19 20:41:59 +00:00
~pt0.y #00 ~px.y ADD2 #0001 AND2 SWP POP RTN
2021-03-19 02:01:33 +00:00
$notone7
#00
RTN
2021-03-25 03:00:34 +00:00
@get-pixel ( x y -- b )
2021-03-19 18:29:46 +00:00
SWP POP #07 AND =px.y
SWP POP #07 AND =px.x
2021-03-19 20:41:59 +00:00
( get tile ) ~pt1.x 8/ ~pt1.y 8/ ~canvas.w MUL2 ADD2 8*
2021-03-19 18:29:46 +00:00
( add addr ) ,data ADD2
2021-03-24 16:39:19 +00:00
#00 ~px.y ADD2 PEK2 #07 ~px.x SUB SFT #01 AND
2021-03-19 18:29:46 +00:00
RTN
2021-03-25 03:00:34 +00:00
@add-pixel ( x y )
2021-03-17 17:18:43 +00:00
2021-03-19 20:41:59 +00:00
=pt1.y =pt1.x
( get tile addr ) ,data ~pt1.x 8/ ~pt1.y 8/ ~canvas.w MUL2 ADD2 8* ~pt1.y MOD8 ADD2 ADD2
2021-03-24 16:39:19 +00:00
( load ) DUP2 PEK2
2021-03-20 04:00:41 +00:00
( mask ) #01 #07 ~pt1.x MOD8 SWP POP SUB SFL ORA
2021-03-24 16:39:19 +00:00
( save ) ROT ROT POK2
2021-03-19 03:53:47 +00:00
RTN
2021-03-17 17:18:43 +00:00
2021-03-19 03:53:47 +00:00
@remove-pixel ( x y )
2021-03-19 20:41:59 +00:00
=pt1.y =pt1.x
( get tile addr ) ,data ~pt1.x 8/ ~pt1.y 8/ ~canvas.w MUL2 ADD2 8* ~pt1.y MOD8 ADD2 ADD2
2021-03-24 16:39:19 +00:00
( load ) DUP2 PEK2
2021-03-20 04:13:09 +00:00
( mask ) #01 #07 ~pt1.x MOD8 SWP POP SUB SFL #ff EOR AND
2021-03-24 16:39:19 +00:00
( save ) ROT ROT POK2
2021-03-17 17:18:43 +00:00
2021-03-18 17:13:55 +00:00
RTN
2021-03-19 16:41:23 +00:00
( Drawing )
@redraw
,draw-background JSR2
,draw-canvas JSR2
2021-03-24 23:30:52 +00:00
,draw-toolpane JSR2
,draw-pattpane JSR2
,draw-sizepane JSR2
2021-03-19 16:41:23 +00:00
RTN
2021-03-18 17:54:54 +00:00
@draw-canvas
2021-03-17 17:18:43 +00:00
2021-03-26 18:19:19 +00:00
~zoom.active #01 EQU ,draw-canvas-zoom JNZ2
2021-03-19 18:29:46 +00:00
2021-03-18 17:13:55 +00:00
~canvas.y1 =Sprite.y
,data =Sprite.addr
$ver
~canvas.x1 =Sprite.x
$hor
( draw ) #09 =Sprite.color
( incr ) ~Sprite.x 8+ =Sprite.x
( incr ) ~Sprite.addr 8+ =Sprite.addr
2021-03-27 02:41:19 +00:00
~Sprite.x ~canvas.x2 NEQ2 ^$hor JNZ
2021-03-18 17:13:55 +00:00
( incr ) ~Sprite.y 8+ =Sprite.y
2021-03-27 02:41:19 +00:00
~Sprite.y ~canvas.y2 NEQ2 ^$ver JNZ
2021-03-18 17:13:55 +00:00
RTN
2021-03-17 17:18:43 +00:00
2021-03-19 18:29:46 +00:00
@draw-canvas-zoom
2021-03-19 20:41:59 +00:00
~zoom.y =pt1.y
2021-03-19 18:29:46 +00:00
~canvas.y1 =Sprite.y
,data =Sprite.addr
$ver
~canvas.x1 =Sprite.x
2021-03-19 20:41:59 +00:00
~zoom.x =pt1.x
2021-03-19 18:29:46 +00:00
$hor
2021-03-19 20:41:59 +00:00
( incr ) ,bigpixel_icn #0008 #00 ~pt1.x ~pt1.y ,get-pixel JSR2 MUL2 ADD2 =Sprite.addr
2021-03-19 18:29:46 +00:00
( draw ) #09 =Sprite.color
( incr ) ~Sprite.x 8+ =Sprite.x
2021-03-19 20:41:59 +00:00
( incr ) ~pt1.x ++ =pt1.x
2021-03-27 02:41:19 +00:00
~Sprite.x ~canvas.x2 NEQ2 ^$hor JNZ
2021-03-19 18:29:46 +00:00
( incr ) ~Sprite.y 8+ =Sprite.y
2021-03-19 20:41:59 +00:00
( incr ) ~pt1.y ++ =pt1.y
2021-03-27 02:41:19 +00:00
~Sprite.y ~canvas.y2 NEQ2 ^$ver JNZ
2021-03-19 18:29:46 +00:00
RTN
2021-03-17 17:18:43 +00:00
@draw-cursor
2021-03-27 11:30:23 +00:00
~cursor.x ~Mouse.x NEQ2
~cursor.y ~Mouse.y NEQ2
2021-03-19 16:41:23 +00:00
#0000 EQU2
~Mouse.state
#00 NEQ
2021-03-26 16:53:17 +00:00
#0101 EQU2 RTN? ( Return if unchanged )
2021-03-17 17:18:43 +00:00
2021-03-19 16:41:23 +00:00
,blank_icn =Sprite.addr
2021-03-17 17:18:43 +00:00
2021-03-19 16:41:23 +00:00
( clear brush size )
2021-03-19 03:53:47 +00:00
~cursor.x #0003 SUB2 =Sprite.x
~cursor.y #0003 SUB2 =Sprite.y
#10 =Sprite.color
2021-03-17 17:18:43 +00:00
( clear last cursor )
~cursor.x =Sprite.x
~cursor.y =Sprite.y
#10 =Sprite.color
( record cursor positions )
~Mouse.x =cursor.x
~Mouse.y =cursor.y
2021-03-24 23:30:52 +00:00
( draw size cursor )
2021-03-26 18:19:19 +00:00
~brush.tool #01 NEQ ,$outside-canvas JNZ2
~Mouse.x CLN2r ~canvas.x1 GTH2 STH2r ~canvas.x2 LTH2 #0101 NEQ2 ,$outside-canvas JNZ2
~Mouse.y CLN2r ~canvas.y1 GTH2 STH2r ~canvas.y2 LTH2 #0101 NEQ2 ,$outside-canvas JNZ2
2021-03-24 23:30:52 +00:00
( do not draw size in toolpane )
2021-03-26 18:19:19 +00:00
~Mouse.x CLN2r ~toolpane.x1 GTH2 STH2r ~toolpane.x2 LTH2 #0101 EQU2 ~Mouse.y CLN2r ~toolpane.y1 GTH2 STH2r ~toolpane.y2 LTH2 #0101 EQU2 #0101 EQU2 ,$outside-canvas JNZ2
~Mouse.x CLN2r ~sizepane.x1 GTH2 STH2r ~sizepane.x2 LTH2 #0101 EQU2 ~Mouse.y CLN2r ~sizepane.y1 GTH2 STH2r ~sizepane.y2 LTH2 #0101 EQU2 #0101 EQU2 ,$outside-canvas JNZ2
~Mouse.x CLN2r ~pattpane.x1 GTH2 STH2r ~pattpane.x2 LTH2 #0101 EQU2 ~Mouse.y CLN2r ~pattpane.y1 GTH2 STH2r ~pattpane.y2 LTH2 #0101 EQU2 #0101 EQU2 ,$outside-canvas JNZ2
( do not draw size when holding alt )
2021-03-27 02:41:19 +00:00
~Controller #02 EQU ^$outside-canvas JNZ
2021-03-19 03:53:47 +00:00
~cursor.x #0003 SUB2 =Sprite.x
~cursor.y #0003 SUB2 =Sprite.y
2021-03-25 03:00:34 +00:00
,brush_view #00 ~brush.size 8* ADD2 =Sprite.addr
2021-03-19 16:41:23 +00:00
#11 ~Mouse.state #02 MUL ADD =Sprite.color
2021-03-27 02:41:19 +00:00
~Mouse.state #00 EQU ^$outside-canvas JNZ
2021-03-19 16:41:23 +00:00
RTN
2021-03-19 03:53:47 +00:00
$outside-canvas
2021-03-17 17:18:43 +00:00
~cursor.x =Sprite.x
~cursor.y =Sprite.y
2021-03-19 18:49:57 +00:00
,pointers_icn #00 ~Controller #02 EQU 8* ADD2 =Sprite.addr
2021-03-19 03:53:47 +00:00
#1f =Sprite.color
2021-03-18 17:13:55 +00:00
RTN
2021-03-24 23:30:52 +00:00
@draw-toolpane
2021-03-18 17:13:55 +00:00
2021-03-24 23:30:52 +00:00
~toolpane.x1 -- ~toolpane.y1 -- ~toolpane.x2 ~toolpane.y2 #00 ,line-rect JSR2
~toolpane.x1 #0002 SUB2 ~toolpane.y1 #0002 SUB2 ~toolpane.x2 ~toolpane.y2 #01 ,line-rect JSR2
2021-03-18 17:13:55 +00:00
2021-03-24 23:30:52 +00:00
~toolpane.x1 =Sprite.x
~toolpane.y1 =Sprite.y
,tool_icn =Sprite.addr
2021-03-18 17:13:55 +00:00
2021-03-24 23:30:52 +00:00
$tools
2021-03-25 03:00:34 +00:00
( draw ) #01 ~Sprite.x ~pattpane.x1 SUB2 8/ SWP POP ~brush.tool EQU #02 MUL ADD =Sprite.color
2021-03-24 23:30:52 +00:00
( incr ) ~Sprite.x 8+ =Sprite.x
( incr ) ~Sprite.addr 8+ =Sprite.addr
2021-03-27 02:41:19 +00:00
~Sprite.x ~toolpane.x2 LTH2 ^$tools JNZ
2021-03-18 17:13:55 +00:00
2021-03-27 02:41:19 +00:00
~zoom.active #01 NEQ ^$no-zoom JNZ
2021-03-25 16:24:26 +00:00
~Sprite.x #0008 SUB2 =Sprite.x
,tool_icn #0028 ADD2 =Sprite.addr
#01 #04 ~brush.tool EQU #02 MUL ADD =Sprite.color
$no-zoom
2021-03-24 23:30:52 +00:00
RTN
@draw-pattpane
~pattpane.x1 -- ~pattpane.y1 -- ~pattpane.x2 ~pattpane.y2 #00 ,line-rect JSR2
~pattpane.x1 #0002 SUB2 ~pattpane.y1 #0002 SUB2 ~pattpane.x2 ~pattpane.y2 #01 ,line-rect JSR2
~pattpane.x1 =Sprite.x
~pattpane.y1 =Sprite.y
,patt_icn =Sprite.addr
$patterns
2021-03-25 03:00:34 +00:00
( draw ) #01 ~Sprite.x ~pattpane.x1 SUB2 8/ SWP POP ~brush.patt EQU #02 MUL ADD =Sprite.color
2021-03-24 23:30:52 +00:00
( incr ) ~Sprite.x 8+ =Sprite.x
2021-03-18 17:13:55 +00:00
( incr ) ~Sprite.addr 8+ =Sprite.addr
2021-03-27 02:41:19 +00:00
~Sprite.x ~pattpane.x2 LTH2 ^$patterns JNZ
2021-03-18 17:13:55 +00:00
2021-03-24 23:30:52 +00:00
RTN
@draw-sizepane
~sizepane.x1 -- ~sizepane.y1 -- ~sizepane.x2 ~sizepane.y2 #00 ,line-rect JSR2
~sizepane.x1 #0002 SUB2 ~sizepane.y1 #0002 SUB2 ~sizepane.x2 ~sizepane.y2 #01 ,line-rect JSR2
2021-03-18 17:13:55 +00:00
2021-03-24 23:30:52 +00:00
~sizepane.x1 =Sprite.x
~sizepane.y1 =Sprite.y
,size_icn =Sprite.addr
2021-03-19 02:01:33 +00:00
$patterns
2021-03-25 03:00:34 +00:00
( draw ) #01 ~Sprite.x ~sizepane.x1 SUB2 8/ SWP POP ~brush.size EQU #02 MUL ADD =Sprite.color
2021-03-24 23:30:52 +00:00
( incr ) ~Sprite.x 8+ =Sprite.x
2021-03-19 02:01:33 +00:00
( incr ) ~Sprite.addr 8+ =Sprite.addr
2021-03-27 02:41:19 +00:00
~Sprite.x ~sizepane.x2 LTH2 ^$patterns JNZ
2021-03-19 02:01:33 +00:00
2021-03-18 23:05:10 +00:00
RTN
@draw-background
( draw hor line )
#0000 =Screen.x ~center.y =Screen.y
#0000 ~Screen.width ( from/to )
2021-03-27 02:55:18 +00:00
$draw-hor
2021-03-18 23:05:10 +00:00
( draw ) #01 =Screen.color
( incr ) SWP2 #0002 ADD2 DUP2 =Screen.x SWP2
2021-03-26 18:19:19 +00:00
OVR2 OVR2 LTH2 ^$draw-hor JNZ
2021-03-18 23:05:10 +00:00
POP2 POP2
( draw ver line )
~center.x =Screen.x #0000 =Screen.y
#0000 ~Screen.height ( from/to )
2021-03-27 02:55:18 +00:00
$draw-ver
2021-03-18 23:05:10 +00:00
( draw ) #01 =Screen.color
( incr ) SWP2 #0002 ADD2 DUP2 =Screen.y SWP2
2021-03-26 18:19:19 +00:00
OVR2 OVR2 LTH2 ^$draw-ver JNZ
2021-03-18 23:05:10 +00:00
POP2 POP2
2021-03-19 03:53:47 +00:00
( draw save/load/guides icons )
2021-03-18 23:05:10 +00:00
~Screen.width #0018 SUB2 =Sprite.x
~Screen.height #0010 SUB2 =Sprite.y
,load_icn =Sprite.addr
#01 =Sprite.color
~Screen.width #0010 SUB2 =Sprite.x
,save_icn =Sprite.addr
#01 =Sprite.color
2021-03-19 03:53:47 +00:00
~Screen.width #0020 SUB2 =Sprite.x
2021-03-18 23:05:10 +00:00
( draw width )
2021-03-25 16:24:26 +00:00
~Screen.width #0040 SUB2 =Sprite.x
2021-03-20 03:41:45 +00:00
,font_hex ~canvas.w #f0 AND #04 SFT #08 MUL ADD2 =Sprite.addr
2021-03-18 23:05:10 +00:00
( draw ) #02 =Sprite.color
~Sprite.x 8+ =Sprite.x
,font_hex ~canvas.w #0f AND #08 MUL ADD2 =Sprite.addr
( draw ) #02 =Sprite.color
~Sprite.x 8+ =Sprite.x
( draw height )
2021-03-20 03:41:45 +00:00
,font_hex ~canvas.h #f0 AND #04 SFT #08 MUL ADD2 =Sprite.addr
2021-03-18 23:05:10 +00:00
( draw ) #02 =Sprite.color
~Sprite.x 8+ =Sprite.x
,font_hex ~canvas.h #0f AND #08 MUL ADD2 =Sprite.addr
( draw ) #02 =Sprite.color
2021-03-18 17:13:55 +00:00
RTN
2021-03-19 18:29:46 +00:00
( Generics )
2021-03-19 16:41:23 +00:00
@line-rect ( x1 y1 x2 y2 color )
( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1
$hor
( incr ) ~Screen.x ++ =Screen.x
( draw ) ~rect.y1 =Screen.y ~color =Screen.color
( draw ) ~rect.y2 =Screen.y ~color =Screen.color
2021-03-27 02:41:19 +00:00
~Screen.x ~rect.x2 NEQ2 ^$hor JNZ
2021-03-19 16:41:23 +00:00
~rect.y1 =Screen.y
$ver
( draw ) ~rect.x1 =Screen.x ~color =Screen.color
( draw ) ~rect.x2 =Screen.x ~color =Screen.color
( incr ) ~Screen.y ++ =Screen.y
2021-03-27 02:41:19 +00:00
~Screen.y ~rect.y2 ++ NEQ2 ^$ver JNZ
2021-03-19 16:41:23 +00:00
RTN
@fill-rect ( x1 y1 x2 y2 color )
( load ) =color =rect.y2 =rect.x2 DUP2 =Screen.y =rect.y1 DUP2 =Screen.x =rect.x1
$ver
~rect.x1 =Screen.x
$hor
( draw ) ~color =Screen.color
( incr ) ~Screen.x ++ =Screen.x
2021-03-27 02:41:19 +00:00
~Screen.x ~rect.x2 NEQ2 ^$hor JNZ
2021-03-19 16:41:23 +00:00
( incr ) ~Screen.y ++ =Screen.y
2021-03-27 02:41:19 +00:00
~Screen.y ~rect.y2 NEQ2 ^$ver JNZ
2021-03-19 16:41:23 +00:00
RTN
2021-03-19 02:01:33 +00:00
@size_icn
[ 0000 0010 0000 0000 ]
2021-03-19 20:41:59 +00:00
[ 0000 1038 1000 0000 ]
[ 0000 3838 3800 0000 ]
[ 0010 387c 3810 0000 ]
[ 0038 7c7c 7c38 0000 ]
[ 1038 7cfe 7c38 1000 ]
[ 387c fefe fe7c 3800 ]
[ 7cfe fefe fefe 7c00 ]
2021-03-19 02:01:33 +00:00
2021-03-24 23:30:52 +00:00
@patt_icn
[ fefe fefe fefe fe00 ]
2021-03-19 02:01:33 +00:00
[ fed6 aad6 aad6 fe00 ]
[ fe92 82d6 8292 fe00 ]
[ fe82 92aa 9282 fe00 ]
[ fea6 ca92 a6ca fe00 ]
[ feca a692 caa6 fe00 ]
[ feaa aaaa aaaa fe00 ]
[ fe82 fe82 fe82 fe00 ]
2021-03-18 17:13:55 +00:00
2021-03-24 23:30:52 +00:00
@tool_icn
[ c0e0 5028 140a 0400 ]
[ e0d0 a844 2212 0c00 ]
[ c0b8 4848 7804 0200 ]
[ 44ba 4444 44ba 4400 ]
2021-03-25 16:24:26 +00:00
[ 3048 8484 4834 0200 ] ( zoom )
[ 3245 8284 4834 0200 ] ( zoom out )
2021-03-24 23:30:52 +00:00
2021-03-19 03:53:47 +00:00
@brush_view
[ 0000 0010 0000 0000 ]
[ 0000 1028 1000 0000 ]
[ 0000 3828 3800 0000 ]
[ 0010 2844 2810 0000 ]
[ 0038 4444 4438 0000 ]
[ 1028 4482 4428 1000 ]
[ 3844 8282 8244 3800 ]
[ 7c82 8282 8282 7c00 ]
2021-03-19 20:41:59 +00:00
[ 7cfe fefe fefe 7c00 ]
2021-03-19 03:53:47 +00:00
2021-03-19 18:29:46 +00:00
@bigpixel_icn
[ 5580 0080 0080 0080 ]
[ 55ff 7fff 7fff 7fff ]
2021-03-19 18:49:57 +00:00
@pointers_icn
[ 80c0 e0f0 f8e0 1000 ]
[ 4040 4070 f8f8 f870 ]
2021-03-19 03:53:47 +00:00
2021-03-18 23:05:10 +00:00
@load_icn [ feaa d6aa d4aa f400 ]
@save_icn [ fe82 8282 848a f400 ]
2021-03-18 17:13:55 +00:00
2021-03-18 23:05:10 +00:00
@blank_icn [ 0000 0000 0000 0000 ]
2021-03-25 16:24:26 +00:00
@filepath [ projects/pictures/akane2010.bit 00 ]
2021-03-18 23:05:10 +00:00
2021-03-19 21:13:19 +00:00
@font_hex ( 0-F )
2021-03-18 23:05:10 +00:00
[
2021-03-19 21:13:19 +00:00
007c 8282 8282 827c 0030 1010 1010 1010
007c 8202 7c80 80fe 007c 8202 1c02 827c
000c 1424 4484 fe04 00fe 8080 7c02 827c
007c 8280 fc82 827c 007c 8202 1e02 0202
007c 8282 7c82 827c 007c 8282 7e02 827c
007c 8202 7e82 827e 00fc 8282 fc82 82fc
007c 8280 8080 827c 00fc 8282 8282 82fc
007c 8280 f080 827c 007c 8280 f080 8080
2021-03-18 23:05:10 +00:00
]
2021-03-18 17:13:55 +00:00
2021-03-21 21:37:39 +00:00
@ERROR BRK
2021-03-17 17:18:43 +00:00
2021-03-21 21:37:39 +00:00
@data [ ]