~rabbits/nasu

668e67eb87957514635e62b3ec533620301b9bc9 — neauoire 1 year, 5 months ago 1d3493e
Optimized line-rect
2 files changed, 41 insertions(+), 35 deletions(-)

M README.md
M src/main.tal
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