~rabbits/nasu

2f82dd42ab36daac7ef01a1b991dacc6e7f5aa18 — neauoire 11 months ago cc3a89f
Minor cleanup
1 files changed, 74 insertions(+), 105 deletions(-)

M src/nasu.tal
M src/nasu.tal => src/nasu.tal +74 -105
@@ 192,7 192,7 @@ BRK
		[ LIT 'q ] NEQk NIP ,&no-tool0 JCN #00 ;set-tool JSR2 &no-tool0
		[ LIT 'w ] NEQk NIP ,&no-tool1 JCN #01 ;set-tool JSR2 &no-tool1
		[ LIT 'e ] NEQk NIP ,&no-tool2 JCN #02 ;set-tool JSR2 &no-tool2
		[ #08 ] NEQk NIP ,&no-delete JCN ;op-erase ;run-selection JSR2 #01 .state/changed STZ ;draw-state JSR2 ;redraw JSR2 &no-delete
		[ #08 ] NEQk NIP ,&no-delete JCN ;op-erase ;run JSR2 #01 .state/changed STZ ;draw-state JSR2 ;redraw JSR2 &no-delete
		[ #20 ] NEQk NIP ,&no-zoom JCN ;toggle-zoom JSR2 &no-zoom
		[ #1b ] NEQk NIP ,&no-escape JCN .selection/x1 LDZ2 .selection/x2 STZ2 ;redraw JSR2 &no-escape
	POP


@@ 203,15 203,15 @@ BRK

	.Controller/button DEI
	( default )
	[ #10 ] NEQk NIP ,&no-up JCN #00 #ff ;mod-selection JSR2 POP BRK &no-up
	[ #20 ] NEQk NIP ,&no-down JCN #00 #01 ;mod-selection JSR2 POP BRK &no-down
	[ #40 ] NEQk NIP ,&no-left JCN #ff #00 ;mod-selection JSR2 POP BRK &no-left
	[ #80 ] NEQk NIP ,&no-right JCN #01 #00  ;mod-selection JSR2 POP BRK &no-right
	[ #10 ] NEQk NIP ,&no-u JCN #00 #ff ;mod-selection JSR2 POP BRK &no-u
	[ #20 ] NEQk NIP ,&no-d JCN #00 #01 ;mod-selection JSR2 POP BRK &no-d
	[ #40 ] NEQk NIP ,&no-l JCN #ff #00 ;mod-selection JSR2 POP BRK &no-l
	[ #80 ] NEQk NIP ,&no-r JCN #01 #00 ;mod-selection JSR2 POP BRK &no-r
	( shift )
	[ #14 ] NEQk NIP ,&no-shift-up JCN #00 #ff ;scale-selection JSR2 POP BRK &no-shift-up
	[ #24 ] NEQk NIP ,&no-shift-down JCN #00 #01 ;scale-selection JSR2 POP BRK &no-shift-down
	[ #44 ] NEQk NIP ,&no-shift-left JCN #ff #00 ;scale-selection JSR2 POP BRK &no-shift-left
	[ #84 ] NEQk NIP ,&no-shift-right JCN #01 #00 ;scale-selection JSR2 POP BRK &no-shift-right
	[ #14 ] NEQk NIP ,&no-su JCN #00 #ff ;scale-selection JSR2 POP BRK &no-su
	[ #24 ] NEQk NIP ,&no-sd JCN #00 #01 ;scale-selection JSR2 POP BRK &no-sd
	[ #44 ] NEQk NIP ,&no-sl JCN #ff #00 ;scale-selection JSR2 POP BRK &no-sl
	[ #84 ] NEQk NIP ,&no-sr JCN #01 #00 ;scale-selection JSR2 POP BRK &no-sr
	POP

BRK


@@ 315,22 315,12 @@ BRK

@on-touch-nametable ( -> )

	( get touch tile )
	( id )
	.Mouse/y DEI2 .nametable/y LDZ2 SUB2 #43 SFT2
	.Mouse/x DEI2 .nametable/x LDZ2 SUB2 #03 SFT2 ADD2 STH2
	( look for changes )
	STH2kr ;spritesheet/nametable ADD2 LDA
	.settings/focus LDZ2 ;spritesheet SUB2 #04 SFT2 NIP
	STH2kr ;spritesheet/color ADD2 LDA
	.settings/blend LDZ NEQ2 ,&continue JCN POP2r BRK &continue
	( set sprite )
	.settings/focus LDZ2 ;spritesheet SUB2 #04 SFT2 NIP
		STH2kr ;spritesheet/nametable ADD2 STA
	( set color )
	.settings/blend LDZ
		STH2r ;spritesheet/color ADD2 STA
	;draw-nametable JSR2
	#01 .state/changed STZ ;draw-state JSR2
	.Mouse/x DEI2 .nametable/x LDZ2 SUB2 #03 SFT2 ADD2 NIP
	( tile ) .settings/focus LDZ2 #04 SFT2 NIP
	( color ) .settings/blend LDZ
	;set-nametable JSR2

BRK



@@ 355,54 345,30 @@ BRK

	.Mouse/y DEI2 .zoomview/y1 LDZ2 SUB2 #03 SFT2 NIP #04 NEQ ;&no-mod JCN2
		.Mouse/x DEI2 .zoomview/x1 LDZ2 SUB2 #03 SFT2 NIP
		DUP #00 EQU .Mouse/state DEI #01 EQU #0101 NEQ2 ,&no-shiftup JCN
			;op-shift-tile-up ;run-selection JSR2
			#01 .state/changed STZ ;draw-state JSR2 &no-shiftup
		DUP #00 EQU .Mouse/state DEI #01 GTH #0101 NEQ2 ,&no-shiftdown JCN
			;op-shift-tile-down ;run-selection JSR2
			#01 .state/changed STZ ;draw-state JSR2 &no-shiftdown
		DUP #01 EQU .Mouse/state DEI #01 EQU #0101 NEQ2 ,&no-shiftright JCN
			;op-shift-tile-right ;run-selection JSR2
			#01 .state/changed STZ ;draw-state JSR2 &no-shiftright
		DUP #01 EQU .Mouse/state DEI #01 GTH #0101 NEQ2 ,&no-shiftleft JCN
			;op-shift-tile-left ;run-selection JSR2
			#01 .state/changed STZ ;draw-state JSR2 &no-shiftleft
		DUP #00 EQU .Mouse/state DEI #01 EQU #0101 NEQ2 ,&no-su JCN ;op-shiftu ;run JSR2 &no-su
		DUP #00 EQU .Mouse/state DEI #01 GTH #0101 NEQ2 ,&no-sd JCN ;op-shiftd ;run JSR2 &no-sd
		DUP #01 EQU .Mouse/state DEI #01 EQU #0101 NEQ2 ,&no-sr JCN ;op-shiftr ;run JSR2 &no-sr
		DUP #01 EQU .Mouse/state DEI #01 GTH #0101 NEQ2 ,&no-shiftleft JCN ;op-shiftl ;run JSR2 &no-shiftleft
		POP
		( release mouse ) #00 .Mouse/state DEO
		,&finish JMP
	&no-mod

	( paint )
	.Mouse/x DEI2 .zoomview/x1 LDZ2 SUB2 #02 SFT2
	.Mouse/y DEI2 .zoomview/y1 LDZ2 SUB2 #02 SFT2
	.settings/focus LDZ2 ADD2
	( detect erase )
	.settings/color LDZ .Mouse/state DEI #01 EQU MUL STH
	OVR2 OVR2 STHkr #00 ;toggle-pixel JSR2
	#0008 ADD2 STHr #01 ;toggle-pixel JSR2
	#01 .state/changed STZ ;draw-state JSR2

	.Mouse/x DEI2 .zoomview/x1 LDZ2 SUB2 #02 SFT2 #00 .selection/x1 LDZ #30 SFT2 ADD2
	.Mouse/y DEI2 .zoomview/y1 LDZ2 SUB2 #02 SFT2 #00 .selection/y1 LDZ #30 SFT2 ADD2
	.settings/color LDZ .Mouse/state DEI #01 EQU MUL
		;put-pixel JSR2
	&finish

	#01 .state/changed STZ ;draw-state JSR2
	;redraw JSR2

BRK

@on-touch-blendview ( -> )
@on-touch-preview ( -> )

	.Mouse/x DEI2 .blendview/x1 LDZ2 SUB2 #03 SFT2 NIP
	.Mouse/y DEI2 .blendview/y1 LDZ2 SUB2 #03 SFT2 NIP #20 SFT ADD
	DUP #0f GTH ,&no-set JCN
		DUP .settings/blend LDZ #b0 AND ADD .settings/blend STZ
		&no-set
	DUP #12 NEQ ,&no-ver JCN
		.settings/blend LDZ #20 EOR .settings/blend STZ
		&no-ver
	DUP #13 NEQ ,&no-hor JCN
		.settings/blend LDZ #10 EOR .settings/blend STZ
		&no-hor
	POP
	;draw-blendview JSR2
	( y ) .Mouse/y DEI2 .preview/y1 LDZ2 SUB2 #03 SFT2 NIP
	( x ) .Mouse/x DEI2 .preview/x1 LDZ2 SUB2 #03 SFT2 NIP
	#40 SFT ADD #11 ADD .settings/ratio STZ
	;draw-preview JSR2
	( release mouse ) #00 .Mouse/state DEO



@@ 411,26 377,17 @@ BRK
@on-touch-colorview ( -> )

	.Mouse/y DEI2 .colorview/y1 LDZ2 SUB2 #03 SFT2 NIP

	DUP #00 NEQ ,&no-r JCN
		.System/r STHk ,&set-color JSR
		STHr [ .settings/color LDZ #01 SFT ADD ] DEO
		&no-r
	DUP #01 NEQ ,&no-g JCN
		.System/g STHk ,&set-color JSR
		STHr [ .settings/color LDZ #01 SFT ADD ] DEO
		&no-g
	DUP #02 NEQ ,&no-b JCN
		.System/b STHk ,&set-color JSR
		STHr [ .settings/color LDZ #01 SFT ADD ] DEO
		&no-b
	[ #00 ] NEQk NIP ,&no-r JCN .System/r STHk ,&set-color JSR STHr ,&set-nibble JSR &no-r
	[ #01 ] NEQk NIP ,&no-g JCN .System/g STHk ,&set-color JSR STHr ,&set-nibble JSR &no-g
	[ #02 ] NEQk NIP ,&no-b JCN .System/b STHk ,&set-color JSR STHr ,&set-nibble JSR &no-b
	POP

	;redraw JSR2

	BRK

	&set-color
BRK
	&set-nibble ( -- )
		.settings/color LDZ #01 SFT ADD DEO
	JMP2r
	&set-color ( -- )
		.settings/color LDZ STHk #01 SFT ADD DEI
		STHr #01 AND STHk
		#0f SWP [ #60 SFT SFT ] AND


@@ 440,18 397,16 @@ BRK
		SWP [ #60 SFT SFT ] ADD
	JMP2r

BRK

@on-touch-preview ( -> )

	( y ) .Mouse/y DEI2 .preview/y1 LDZ2 SUB2 #03 SFT2 NIP
	( x ) .Mouse/x DEI2 .preview/x1 LDZ2 SUB2 #03 SFT2 NIP

	#40 SFT ADD #11 ADD
	.settings/ratio STZ

	;redraw JSR2
@on-touch-blendview ( -> )

	.Mouse/x DEI2 .blendview/x1 LDZ2 SUB2 #03 SFT2 NIP
	.Mouse/y DEI2 .blendview/y1 LDZ2 SUB2 #03 SFT2 NIP #20 SFT ADD
	[ #0f GTHk NIP ] ,&no-set JCN DUP .settings/blend STHk LDZ #b0 AND ADD STHr STZ &no-set
	[ #12 NEQk NIP ] ,&no-ver JCN .settings/blend STHk LDZ #20 EOR STHr STZ &no-ver
	[ #13 NEQk NIP ] ,&no-hor JCN .settings/blend STHk LDZ #10 EOR STHr STZ &no-hor
	POP
	;draw-blendview JSR2
	;draw-preview JSR2
	( release mouse ) #00 .Mouse/state DEO

BRK


@@ 516,6 471,16 @@ JMP2r

JMP2r

@set-nametable ( id tile color -- )

	ROT #00 SWP STH2
	;spritesheet/color STH2kr ADD2 STA
	;spritesheet/nametable STH2r ADD2 STA
	;draw-nametable JSR2
	#01 .state/changed STZ ;draw-state JSR2

JMP2r

@mod-selection ( x y -- )

	.settings/zoom LDZ ;mod-selection-zoom JCN2


@@ 575,7 540,7 @@ JMP2r

JMP2r

@run-selection ( op* -- )
@run ( op* -- )

	STH2
	.selection/y2 LDZ INC .selection/y1 LDZ


@@ 597,7 562,7 @@ JMP2r

JMP2r

@op-shift-tile-up ( addr* -- )
@op-shiftu ( addr* -- )

	DUP2
	DUP2 #0007 ADD2 SWP2 LDAk STH


@@ 617,7 582,7 @@ JMP2r

JMP2r

@op-shift-tile-down ( addr* -- )
@op-shiftd ( addr* -- )

	DUP2
	DUP2 #0007 ADD2 LDAk STH


@@ 637,7 602,7 @@ JMP2r

JMP2r

@op-shift-tile-left ( addr* -- )
@op-shiftl ( addr* -- )

	STH2
	#08 #00


@@ 654,7 619,7 @@ JMP2r

JMP2r

@op-shift-tile-right ( addr* -- )
@op-shiftr ( addr* -- )

	STH2
	#08 #00


@@ 771,17 736,21 @@ JMP2r
@draw-nametable ( -- )

	#01 .Screen/auto DEO
	.nametable/y LDZ2 .Screen/y DEO2
	#1000
	&ver
		#00 OVR #30 SFT2 .nametable/y LDZ2 ADD2 .Screen/y DEO2
		STHk
		.nametable/x LDZ2 .Screen/x DEO2
		#1000
		&hor
			OVR2 NIP OVR SWP [ #40 SFT ADD ] #00 SWP
				DUP2 ;spritesheet/nametable ADD2 LDA #00 SWP #40 SFT2 ;spritesheet ADD2 .Screen/addr DEO2
				;spritesheet/color ADD2 LDA .Screen/sprite DEO
			#00 OVR STHkr #40 SFT ADD 
			DUP2 ;spritesheet/nametable ADD2 LDA 
				#00 SWP #40 SFT2 ;spritesheet ADD2 .Screen/addr DEO2
			;spritesheet/color ADD2 LDA .Screen/sprite DEO
			INC GTHk ,&hor JCN
		POP2
		POPr
		.Screen/y DEI2k #0008 ADD2 ROT DEO2
		INC GTHk ,&ver JCN
	POP2
	#00 .Screen/auto DEO


@@ 946,9 915,9 @@ JMP2r
	.System/g ,&get-color JSR #03 ;draw-hex JSR2
	.System/b ,&get-color JSR #03 ;draw-hex JSR2

	.colorview/x1 LDZ2 .colorview/y1 LDZ2 
	.colorview/x1 LDZ2 .colorview/y1 LDZ2
		OVR2 OVR2 [ .System/r ,&get-color JSR ] ,&slider JSR
		OVR2 OVR2  #0008 ADD2 [ .System/g ,&get-color JSR ] ,&slider JSR
		OVR2 OVR2 #0008 ADD2 [ .System/g ,&get-color JSR ] ,&slider JSR
		#0010 ADD2 [ .System/b ,&get-color JSR ] ,&slider JSR

	JMP2r


@@ 1260,7 1229,7 @@ JMP2r
@cut-snarf ( -- )

	;copy-snarf JSR2
	;op-erase ;run-selection JSR2
	;op-erase ;run JSR2
	.selection/x1 LDZ2 .selection/x2 STZ2
	;redraw JSR2



@@ 1329,10 1298,10 @@ JMP2r
		.Screen/addr DEI2k #0008 ADD2 ROT DEO2
	JMP2r
	&repeat
		#00 
		&repeat-loop 
			#01 .Screen/sprite DEO 
			INC GTHk ,&repeat-loop JCN 
		#00
		&repeat-loop
			#01 .Screen/sprite DEO
			INC GTHk ,&repeat-loop JCN
		POP2
	JMP2r