~rabbits/nasu

b9c425d06f54a3a5fd0fa1f5f320983d876fd9b0 — neauoire 1 year, 3 months ago a54e9a2
Improved nametable ui
1 files changed, 124 insertions(+), 123 deletions(-)

M src/main.tal
M src/main.tal => src/main.tal +124 -123
@@ 192,12 192,14 @@

	.frame/x1 LDZ2 #0001 -- .frame/y1 LDZ2 #0030 ++ HOR TOS 8** #0080 SIZE-TO-RECT ;tileview SET-RECT
	.frame/x1 LDZ2 #0082 ++ .frame/y1 LDZ2 #0030 ++ #007f #007f SIZE-TO-RECT ;nametable SET-RECT

	.frame/x1 LDZ2 #0001 -- .frame/y1 LDZ2 #0020 #0028 SIZE-TO-RECT ;zoomview SET-RECT
	.frame/x1 LDZ2 #002f ++ .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;preview SET-RECT
	.frame/x1 LDZ2 #005f ++ .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;colorview SET-RECT
	.frame/x1 LDZ2 #008f ++ .frame/y1 LDZ2 #0020 #0028 SIZE-TO-RECT ;blendview SET-RECT
	.frame/x1 LDZ2 #00bf ++ .frame/y1 LDZ2 #0048 #0020 SIZE-TO-RECT ;dataview SET-RECT

	.tileview/x1 LDZ2 .tileview/y2 LDZ2 #0008 ++ #0100 #0008 SIZE-TO-RECT ;toolview SET-RECT
	.frame/x1 LDZ2 .frame/y1 LDZ2 #0020 #0028 SIZE-TO-RECT ;blendview SET-RECT
	.frame/x1 LDZ2 #0030 ++ .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;preview SET-RECT
	.frame/x1 LDZ2 #0060 ++ .frame/y1 LDZ2 #0020 #0020 SIZE-TO-RECT ;colorview SET-RECT
	.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

	.frame/x1 LDZ2 #0002 -- .workspace-frame/x1 STZ2
	.tileview/y1 LDZ2 #0001 -- .workspace-frame/y1 STZ2


@@ 626,12 628,12 @@ BRK
	DUP #0f > ,&no-set JCN
		DUP .settings/blend LDZ #b0 AND + .settings/blend STZ
		&no-set
	DUP #12 ! ,&no-hor JCN
		.settings/blend LDZ #10 EOR .settings/blend STZ
		&no-hor
	DUP #13 ! ,&no-ver JCN
	DUP #12 ! ,&no-ver JCN
		.settings/blend LDZ #20 EOR .settings/blend STZ
		&no-ver
	DUP #13 ! ,&no-hor JCN
		.settings/blend LDZ #10 EOR .settings/blend STZ
		&no-hor
	POP
	;draw-blendview JSR2
	;draw-preview JSR2


@@ 873,7 875,7 @@ RTN
	;draw-nametable JSR2
	;draw-zoomview JSR2

	.frame/x1 LDZ2 #0080 ++ .tileview/y1 LDZ2 INC2 .tileview/y2 LDZ2 #03 ;line-ver JSR2
	.frame/x1 LDZ2 #0080 ++ .tileview/y1 LDZ2 .tileview/y2 LDZ2 INC2 #03 ;line-ver JSR2

RTN



@@ 1047,81 1049,47 @@ RTN

RTN

@draw-toolview ( -- )
		
	.toolview/y1 LDZ2 .Screen/y DEO2
	( colors )
	.toolview/x1 LDZ2 STH2k .Screen/x DEO2
	;circle-icns [ .settings/color LDZ #01 = TOS 8** ] ++ .Screen/addr DEO2
	#01 .Screen/sprite DEO
	STH2kr #0008 ++ .Screen/x DEO2
	;circle-icns [ .settings/color LDZ #02 = TOS 8** ] ++ .Screen/addr DEO2
	#02 .Screen/sprite DEO
	STH2kr #0010 ++ .Screen/x DEO2
	;circle-icns [ .settings/color LDZ #03 = TOS 8** ] ++ .Screen/addr DEO2
	#03 .Screen/sprite DEO
	( tools )
	STH2kr #0020 ++ .Screen/x DEO2
	;tool-brush .Screen/addr DEO2
	#01 .settings/tool LDZ #00 = + .Screen/sprite DEO
	STH2kr #0029 ++ .Screen/x DEO2
	;tool-selector .Screen/addr DEO2
	#01 .settings/tool LDZ #01 = + .Screen/sprite DEO
	STH2r #0030 ++ .Screen/x DEO2
	;zoom-icns [ .settings/zoom LDZ TOS 8** ++ ] .Screen/addr DEO2
	#01 .settings/zoom LDZ + .Screen/sprite DEO
	( file i/o )
	;draw-state JSR2
	.toolview/x2 LDZ2 STH2k #0018 -- .Screen/x DEO2
	;load-icn .Screen/addr DEO2
	#01 .Screen/sprite DEO
	STH2r #0020 -- .Screen/x DEO2
	;make-icn .Screen/addr DEO2
	#01 .Screen/sprite DEO
	( filepath )
	#03 ;draw-filepath JSR2

RTN
( panes )

@draw-blendview ( -- )
	
	( value )
	.blendview/x1 LDZ2 .Screen/x DEO2
	.blendview/y2 LDZ2 #0007 -- .Screen/y DEO2
	( get blending ) .settings/blend LDZ #01 ;draw-byte JSR2
@draw-zoomview ( -- )

	.settings/focus LDZ2 .Screen/addr DEO2
	#10 #00
	&loop
		DUP 4MOD TOS 8** .blendview/x1 LDZ2 ++ .Screen/x DEO2
		DUP 4/ TOS 8** .blendview/y1 LDZ2 ++ .Screen/y DEO2
		#00 .Screen/sprite DEO
		DUP #00 + .settings/blend LDZ #b0 AND + .Screen/sprite DEO
		INC GTHk ,&loop JCN
	;bigpixel-icn .Screen/addr DEO2
	#08 #00
	&ver
		DUP 4* TOS .zoomview/y1 LDZ2 ++ .Screen/y DEO2
		#08 #00
		&hor
			DUP 4* TOS .zoomview/x1 LDZ2 ++ .Screen/x DEO2
			( get pixel )
			GET-ITER
			( ch 1 )
			TOS .settings/focus LDZ2 ++ [ STH2k ] LDA
			SWP [ STHk ] #07 SWP - SFT #01 AND
			( ch2 )
			[ STHr ] [ STH2r ] #0008 ++ LDA SWP 
			#07 SWP - SFT #01 AND
			2* +
			.Screen/sprite DEO
			INC GTHk ,&hor JCN
		POP2
		INC GTHk ,&ver JCN
	POP2

	( x )
	.blendview/x1 LDZ2 #0010 ++ .Screen/x DEO2
	.blendview/y1 LDZ2 #0021 ++ .Screen/y DEO2
	.settings/blend LDZ #10 AND #00 ! STH
	;flipx-icns STHkr TOS 8** ++ .Screen/addr DEO2
	#03 STHr - .Screen/sprite DEO
	( x )
	.blendview/x1 LDZ2 #0018 ++ .Screen/x DEO2
	.blendview/y1 LDZ2 #0021 ++ .Screen/y DEO2
	.settings/blend LDZ #20 AND #00 ! STH
	;flipy-icns STHkr TOS 8** ++ .Screen/addr DEO2
	#03 STHr - .Screen/sprite DEO
	.zoomview-frame #03 ;line-rect JSR2

	( label )
	.zoomview/y1 LDZ2 #0021 ++ .Screen/y DEO2
	.zoomview/x1 LDZ2 .Screen/x DEO2
	;arrow-ver-icns .Screen/addr DEO2
	#03 .Screen/sprite DEO
	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	;arrow-hor-icns .Screen/addr DEO2
	#03 .Screen/sprite DEO

RTN

@draw-preview ( -- )

	( value )
	.preview/x1 LDZ2 .Screen/x DEO2
	.preview/y2 LDZ2 INC2 .Screen/y DEO2
	.settings/ratio LDZ #02 ;draw-byte JSR2

	( stash address )
	.settings/focus LDZ2 STH2k .Screen/addr DEO2
	#04 #00


@@ 1150,6 1118,11 @@ RTN
	POP2
	POP2r

	( label )
	.preview/x1 LDZ2 .Screen/x DEO2
	.preview/y2 LDZ2 INC2 .Screen/y DEO2
	.settings/ratio LDZ #03 ;draw-byte JSR2

RTN

@draw-colorview ( -- )


@@ 1157,13 1130,13 @@ RTN
	.colorview/y2 LDZ2 INC2 .Screen/y DEO2
	.colorview/x1 LDZ2 .Screen/x DEO2
	.System/r GET-COLOR GET-HEX-ADDR 
	#02 .Screen/sprite DEO
	#03 .Screen/sprite DEO
	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	.System/g GET-COLOR GET-HEX-ADDR 
	#02 .Screen/sprite DEO
	#03 .Screen/sprite DEO
	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	.System/b GET-COLOR GET-HEX-ADDR 
	#02 .Screen/sprite DEO
	#03 .Screen/sprite DEO

	.colorview/x1 LDZ2 .colorview/y1 LDZ2 
		[ .System/r GET-COLOR ] ,&slider JSR


@@ 1189,12 1162,45 @@ RTN

RTN

@draw-blendview ( -- )

	.settings/focus LDZ2 .Screen/addr DEO2
	#10 #00
	&loop
		DUP 4MOD TOS 8** .blendview/x1 LDZ2 ++ .Screen/x DEO2
		DUP 4/ TOS 8** .blendview/y1 LDZ2 ++ .Screen/y DEO2
		#00 .Screen/sprite DEO
		DUP #00 + .settings/blend LDZ #b0 AND + .Screen/sprite DEO
		INC GTHk ,&loop JCN
	POP2

	( label )
	.blendview/x1 LDZ2 .Screen/x DEO2
	.blendview/y2 LDZ2 #0007 -- .Screen/y DEO2
	( get blending ) .settings/blend LDZ #03 ;draw-byte JSR2

	( y )
	.blendview/x1 LDZ2 #0010 ++ .Screen/x DEO2
	.blendview/y1 LDZ2 #0021 ++ .Screen/y DEO2
	.settings/blend LDZ #20 AND #00 ! STH
	;arrow-ver-icns STHkr TOS 8** ++ .Screen/addr DEO2
	#02 STHr - .Screen/sprite DEO

	( x )
	.blendview/x1 LDZ2 #0018 ++ .Screen/x DEO2
	.blendview/y1 LDZ2 #0021 ++ .Screen/y DEO2
	.settings/blend LDZ #10 AND #00 ! STH
	;arrow-hor-icns STHkr TOS 8** ++ .Screen/addr DEO2
	#02 STHr - .Screen/sprite DEO

RTN

@draw-dataview ( -- )
	
	( position )
	.dataview/x1 LDZ2 .Screen/x DEO2
	.dataview/y2 LDZ2 INC2 .Screen/y DEO2
	.settings/focus LDZ2 BANK-SPRITESHEET -- #02 ;draw-short JSR2
	.settings/focus LDZ2 BANK-SPRITESHEET -- #03 ;draw-short JSR2

	( depth1 )
	#04 #00


@@ 1203,47 1209,45 @@ RTN
		DUP 8* TOS .dataview/y1 LDZ2 ++ .Screen/y DEO2
		DUP 2* TOS .settings/focus LDZ2 ++ LDA2 #01 ;draw-short JSR2
		.dataview/x1 LDZ2 #0020 ++ .Screen/x DEO2
		DUP 2* TOS .settings/focus LDZ2 ++ #0008 ++ LDA2 #03 ;draw-short JSR2
		DUP 2* TOS .settings/focus LDZ2 ++ #0008 ++ LDA2 #02 ;draw-short JSR2
		INC GTHk ,&loop JCN
	POP2

RTN

@draw-zoomview ( -- )

	;bigpixel-icn .Screen/addr DEO2
	#08 #00
	&ver
		DUP 4* TOS .zoomview/y1 LDZ2 ++ .Screen/y DEO2
		#08 #00
		&hor
			DUP 4* TOS .zoomview/x1 LDZ2 ++ .Screen/x DEO2
			( get pixel )
			GET-ITER
			( ch 1 )
			TOS .settings/focus LDZ2 ++ [ STH2k ] LDA
			SWP [ STHk ] #07 SWP - SFT #01 AND
			( ch2 )
			[ STHr ] [ STH2r ] #0008 ++ LDA SWP 
			#07 SWP - SFT #01 AND
			2* +
			.Screen/sprite DEO
			INC GTHk ,&hor JCN
		POP2
		INC GTHk ,&ver JCN
	POP2

	.zoomview-frame #03 ;line-rect JSR2

	( effects )
	.zoomview/y1 LDZ2 #0021 ++ .Screen/y DEO2
	.zoomview/x1 LDZ2 .Screen/x DEO2
	;opshift-icn .Screen/addr DEO2
@draw-toolview ( -- )
		
	.toolview/y1 LDZ2 .Screen/y DEO2
	( colors )
	.toolview/x1 LDZ2 STH2k .Screen/x DEO2
	;circle-icns [ .settings/color LDZ #01 = TOS 8** ] ++ .Screen/addr DEO2
	#01 .Screen/sprite DEO

	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	;oproll-icn .Screen/addr DEO2
	STH2kr #0008 ++ .Screen/x DEO2
	;circle-icns [ .settings/color LDZ #02 = TOS 8** ] ++ .Screen/addr DEO2
	#02 .Screen/sprite DEO
	STH2kr #0010 ++ .Screen/x DEO2
	;circle-icns [ .settings/color LDZ #03 = TOS 8** ] ++ .Screen/addr DEO2
	#03 .Screen/sprite DEO
	( tools )
	STH2kr #0020 ++ .Screen/x DEO2
	;tool-brush .Screen/addr DEO2
	#01 .settings/tool LDZ #00 = + .Screen/sprite DEO
	STH2kr #0029 ++ .Screen/x DEO2
	;tool-selector .Screen/addr DEO2
	#01 .settings/tool LDZ #01 = + .Screen/sprite DEO
	STH2r #0030 ++ .Screen/x DEO2
	;zoom-icns [ .settings/zoom LDZ TOS 8** ++ ] .Screen/addr DEO2
	#01 .settings/zoom LDZ + .Screen/sprite DEO
	( file i/o )
	;draw-state JSR2
	.toolview/x2 LDZ2 STH2k #0018 -- .Screen/x DEO2
	;load-icn .Screen/addr DEO2
	#01 .Screen/sprite DEO
	STH2r #0020 -- .Screen/x DEO2
	;make-icn .Screen/addr DEO2
	#01 .Screen/sprite DEO
	( filepath )
	#03 ;draw-filepath JSR2

RTN



@@ 1538,9 1542,6 @@ RTN
@bigpixel-icn  f0f0 f0f0 0000 0000
@halftone-icn  aa55 aa55 aa55 aa55

@opshift-icn   0010 387c fe10 1000
@oproll-icn    0008 0c0e 7f0e 0c08

@save-icn      1054 28c6 2854 1000 
@make-icn      fe82 8282 848a f400 
@load-icn      feaa d6aa d4aa f400 


@@ 1566,12 1567,12 @@ RTN
@zoom-icns
	3048 8484 4834 0200 ( in )
	3245 8284 4834 0200 ( out )
@flipx-icns
	0000 0000 aa00 0000
	0000 0000 fe00 0000
@flipy-icns
	0008 0008 0008 0008
	0008 0808 0808 0808
@arrow-hor-icns
	0010 181c fe1c 1810
	0010 3070 fe70 3010
@arrow-ver-icns
	0010 387c fe10 1010
	0010 1010 fe7c 3810
@font ( specter8-frag font )
	0000 0000 0000 0000 0008 0808 0800 0800
	0014 1400 0000 0000 0024 7e24 247e 2400