M README.md => README.md +2 -8
@@ 10,12 10,6 @@ You must have the [Uxn](https://git.sr.ht/~rabbits/uxn/) assembler and emulator.
uxnasm nasu.tal nasu.rom && uxnemu nasu.rom
```
-To build the C version(old), you must have [SDL2](https://wiki.libsdl.org/).
-
-```
-cc nasu.c -std=c89 -Os -DNDEBUG -g0 -s -Wall -L/usr/local/lib -lSDL2 -o nasu
-```
-
## Controls
- `arrows`, move selection
@@ 25,8 19,8 @@ cc nasu.c -std=c89 -Os -DNDEBUG -g0 -s -Wall -L/usr/local/lib -lSDL2 -o nasu
- `right-click`, remove pixel
- `1 2 3`, select color
- `q w e`, select tool
-- `ctrl+p`, export [theme file](https://wiki.xxiivv.com/themes)
+- `ctrl+p`, export [theme file](https://wiki.xxiivv.com/theme)
- `ctrl+n`, clear
- `ctrl+r`, rename
- `ctrl+o`, load
-- `ctrl+s`, save>
\ No newline at end of file
+- `ctrl+s`, save
M src/main.tal => src/main.tal +39 -27
@@ 50,6 50,7 @@
%100MOD2 { #00ff AND2 }
%TOS { #00 SWP }
+%SWP2? { #01 JCN SWP2 }
%RTN { JMP2r }
%ROL { DUP #07 SFT SWP #10 SFT + }
@@ 144,6 145,8 @@
&x1 $2 &y1 $2
&x2 $2 &y2 $2
&width $2 &height $2
+@tileview-frame [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
+@zoomview-frame [ &x1 $2 &y1 $2 &x2 $2 &y2 $2 ]
( program )
@@ 187,6 190,16 @@
.frame/x1 LDZ2 #0090 ++ .frame/y1 LDZ2 #0020 #0028 SIZE-TO-RECT ;zoomview SET-RECT
.frame/x1 LDZ2 #00c0 ++ .frame/y1 LDZ2 #0048 #0020 SIZE-TO-RECT ;dataview SET-RECT
+ .tileview/x1 LDZ2 #0002 -- .tileview-frame/x1 STZ2
+ .tileview/y1 LDZ2 #0002 -- .tileview-frame/y1 STZ2
+ .tileview/x2 LDZ2 INC2 .tileview-frame/x2 STZ2
+ .tileview/y2 LDZ2 INC2 .tileview-frame/y2 STZ2
+
+ .zoomview/x1 LDZ2 #0002 -- .zoomview-frame/x1 STZ2
+ .zoomview/y1 LDZ2 #0002 -- .zoomview-frame/y1 STZ2
+ .zoomview/x2 LDZ2 INC2 .zoomview-frame/x2 STZ2
+ .zoomview/y2 LDZ2 #0007 -- .zoomview-frame/y2 STZ2
+
;untitled-txt ;new-file JSR2
;load-theme JSR2
@@ 261,7 274,6 @@ BRK
@on-control ( -> )
.Controller/key DEI
-
DUP [ LIT 'a ] ! ,&no-expand JCN
#00 .selection/x1 STZ
#00 .selection/y1 STZ
@@ 810,11 822,7 @@ RTN
INC GTHk ,&ver JCN
POP2
- .tileview/x1 LDZ2 #0002 --
- .tileview/y1 LDZ2 #0002 --
- .tileview/x2 LDZ2 INC2
- .tileview/y2 LDZ2 INC2
- #03 ;line-rect JSR2
+ .tileview-frame #03 ;line-rect JSR2
RTN
@@ 1116,11 1124,7 @@ RTN
INC GTHk ,&ver JCN
POP2
- .zoomview/x1 LDZ2 #0002 --
- .zoomview/y1 LDZ2 #0002 --
- .zoomview/x2 LDZ2 INC2
- .zoomview/y2 LDZ2 #0007 --
- #03 ;line-rect JSR2
+ .zoomview-frame #03 ;line-rect JSR2
( effects )
.zoomview/y1 LDZ2 #0021 ++ .Screen/y DEO2
@@ 1350,27 1354,35 @@ RTN
RTN
-@line-rect ( x1* y1* x2* y2* color -- )
+@line-rect ( rect color -- )
- ( load ) .color STZ
- STH2k .rect/y2 STZ2 .rect/x2 STZ2
- STH2k .rect/y1 STZ2 .rect/x1 STZ2
- STH2r STH2r SWP2
+ STH STH
+ ( y2 ) STHkr #06 + LDZ2
+ ( y1 ) STHkr #02 + LDZ2 #0001 -- ( flip sign ) GTH2k SWP2?
&ver
( save ) DUP2 .Screen/y DEO2
- ( draw ) .rect/x1 LDZ2 .Screen/x DEO2 .color LDZ DUP .Screen/pixel DEO
- ( draw ) .rect/x2 LDZ2 .Screen/x DEO2 .Screen/pixel DEO
- ( incr ) INC2
- OVR2 OVR2 GTS2 ,&ver JCN
- POP2 POP2
- .rect/x1 LDZ2 .rect/x2 LDZ2 SWP2
+ ( x1 ) STHkr LDZ2 #0001 -- .Screen/x DEO2
+ OVRr STHr .Screen/pixel DEO
+ ( x2 ) STHkr #04 + LDZ2 .Screen/x DEO2
+ OVRr STHr .Screen/pixel DEO
+ ( incr )
+ INC2 GTH2k ,&ver JCN
+ POP2
+ ( x2 ) STHkr #04 + LDZ2
+ ( x1 ) STHkr LDZ2 #0001 -- ( flip sign ) GTH2k SWP2?
&hor
( save ) DUP2 .Screen/x DEO2
- ( draw ) .rect/y1 LDZ2 .Screen/y DEO2 .color LDZ DUP .Screen/pixel DEO
- ( draw ) .rect/y2 LDZ2 .Screen/y DEO2 .Screen/pixel DEO
- ( incr ) INC2
- OVR2 OVR2 GTS2 ,&hor JCN
- POP2 POP2
+ ( y1 ) STHkr #02 + LDZ2 #0001 -- .Screen/y DEO2
+ OVRr STHr .Screen/pixel DEO
+ ( y2 ) STHkr #06 + LDZ2 .Screen/y DEO2
+ OVRr STHr .Screen/pixel DEO
+ ( incr )
+ INC2 GTH2k ,&hor JCN
+ POP2
+ POPr
+ .Screen/x DEO2
+ .Screen/y DEO2
+ STHr .Screen/pixel DEO
RTN