Browse Source

Optimized line-rect

main
neauoire 5 years ago
parent
commit
668e67eb87
  1. 10
      README.md
  2. 66
      src/main.tal

10
README.md

@ -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
- `ctrl+s`, save

66
src/main.tal

@ -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

Loading…
Cancel
Save