~rabbits/nasu

5891f9d09e4f46a629147ecd1e3e806b76d1c228 — neauoire 1 year, 3 months ago f76462e
Highlight state on nametable edit
1 files changed, 58 insertions(+), 45 deletions(-)

M src/main.tal
M src/main.tal => src/main.tal +58 -45
@@ 17,55 17,53 @@
	ctrl+v - paste
 )

%+  { ADD }  %-  { SUB }
%+  { ADD }  %-  { SUB }  %*  { MUL }  %/  { DIV }
%<  { LTH }  %>  { GTH }  %=  { EQU }  %!  { NEQ }
%++ { ADD2 } %-- { SUB2 }
%++ { ADD2 } %-- { SUB2 } %** { MUL2 } %// { DIV2 }
%<< { LTH2 } %>> { GTH2 } %== { EQU2 } %!! { NEQ2 }
%!~ { NEQk NIP }

%DEBUG  { ;print-hex JSR2 #0a .Console/write DEO }
%DEBUG2 { SWP ;print-hex JSR2 ;print-hex JSR2 #0a .Console/write DEO }
%2*  { #10 SFT } %2/  { #01 SFT } %2**  { #10 SFT2 } %2//  { #01 SFT2 }
%4*  { #20 SFT } %4/  { #02 SFT } %4**  { #20 SFT2 } %4//  { #02 SFT2 }
%8*  { #30 SFT } %8/  { #03 SFT } %8**  { #30 SFT2 } %8//  { #03 SFT2 }
%10* { #40 SFT } %10/ { #04 SFT } %10** { #40 SFT2 } %10// { #04 SFT2 }
%20* { #50 SFT } %20/ { #05 SFT } %20** { #50 SFT2 } %20// { #05 SFT2 }

%2*  { #10 SFT } %2/  { #01 SFT }
%4*  { #20 SFT } %4/  { #02 SFT }
%8*  { #30 SFT } %8/  { #03 SFT }
%20* { #50 SFT } 
%40* { #60 SFT }
%80* { #70 SFT }

%2**  { #10 SFT2 } %2//  { #01 SFT2 }
%4//  { #02 SFT2 }
%8**  { #30 SFT2 } %8//  { #03 SFT2 }
%10** { #40 SFT2 } %10// { #04 SFT2 } 
%20** { #50 SFT2 } 
%80** { #70 SFT2 }
%100** { #80 SFT2 }
%200** { #90 SFT2 }

%2INC2 { INC2 INC2 }
%2MOD { #01 AND }
%4MOD { #03 AND }
%8MOD { #07 AND }
%10MOD { #0f AND }
%2MOD  { #01 AND } %2MOD2  { #0001 AND2 }
%4MOD  { #03 AND } %4MOD2  { #0003 AND2 }
%8MOD  { #07 AND } %8MOD2  { #0007 AND2 }
%10MOD { #0f AND } %10MOD2 { #000f AND2 }

%20MOD { #1f AND }
%8MOD2 { #0007 AND2 }
%100MOD2 { #00ff AND2 }
%10MOD2 { #000f AND2 }

%TOS  { #00 SWP }
%SWP2? { #01 JCN SWP2 }

%STEP8 { #33 SFT2 }

%!~ { NEQk NIP }

%DEBUG  { ;print-hex/byte JSR2 #0a #18 DEO }
%DEBUG2 { ;print-hex JSR2 #0a #18 DEO }

%RTN { JMP2r }
%ROL { DUP #07 SFT SWP #10 SFT + }
%ROR { DUP #70 SFT SWP #01 SFT + }
%SFL { #40 SFT SFT }
%GTS2 { #8000 ++ SWP2 #8000 ++ << }
%STEP8 { #33 SFT2 }
%TOGGLE { LDZk #00 = SWP STZ }
%GET-ITER { OVR2 NIP OVR SWP }
%BRK? { #01 JCN BRK }
%SWP? { #01 JCN SWP }

%ROL { DUP #07 SFT SWP #10 SFT + }
%ROR { DUP #70 SFT SWP #01 SFT + }

( defines )

%HOR    { #10 }    %VER    { #10 } 
%LENGTH { #1000 }



@@ 79,6 77,7 @@
%BANK-COLOR { #9100 }

( todo )

%DATA-CLIP { #6000 }

%GET-HEX-ADDR  { TOS 8** ;font-hex ++ .Screen/addr DEO2 }


@@ 502,19 501,31 @@ BRK
@on-touch-nametable ( -> )

	( skip ) .Mouse/state DEI #00 ! BRK?
	
	.settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP 

	( get touch tile )
	
	.Mouse/y DEI2 .nametable/y LDZ2 -- 8// 10** 
	.Mouse/x DEI2 .nametable/x LDZ2 -- 8// ++
	BANK-NAMETABLE ++ STA
	.Mouse/x DEI2 .nametable/x LDZ2 -- 8// ++ STH2

	( get blending ) .settings/blend LDZ
	.Mouse/y DEI2 .nametable/y LDZ2 -- 8// 10** 
	.Mouse/x DEI2 .nametable/x LDZ2 -- 8// ++
	BANK-COLOR ++ STA
	( look for changes )

	;redraw JSR2
	( sprite ) STH2kr BANK-NAMETABLE ++ LDA
	( color ) STH2kr BANK-COLOR ++ LDA
	( sprite ) .settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP 
	( color ) .settings/blend LDZ 
	
	( stop ) NEQ2 ,&continue JCN POP2r BRK &continue

	( set sprite )
	.settings/focus LDZ2 BANK-SPRITESHEET -- 10// NIP 
		STH2kr BANK-NAMETABLE ++ STA

	( set color ) 
	.settings/blend LDZ 
		STH2r BANK-COLOR ++ STA

	;draw-nametable JSR2
	SET-STATE

BRK



@@ 1136,7 1147,7 @@ RTN
		&loop
			DUP STHkr > 8* TOS ;slider-icns ++ .Screen/addr DEO2
			#02 .Screen/sprite DEO
			.Screen/x DEI2 2INC2 .Screen/x DEO2
			.Screen/x DEI2 INC2 INC2 .Screen/x DEO2
			INC GTHk ,&loop JCN
		POP2
		POPr


@@ 1454,7 1465,7 @@ RTN

	STH STH
	( y2 ) STHkr #06 + LDZ2
	( y1 ) STHkr #02 + LDZ2 #0001 -- ( flip sign ) GTH2k SWP2?
	( y1 ) STHkr #02 + LDZ2 #0001 -- ( flip sign ) GTH2k #01 JCN SWP2
	&ver
		( save ) DUP2 .Screen/y DEO2
		( x1 ) STHkr LDZ2 #0001 -- .Screen/x DEO2 


@@ 1465,7 1476,7 @@ RTN
		INC2 GTH2k ,&ver JCN
	POP2
	( x2 ) STHkr #04 + LDZ2
	( x1 ) STHkr LDZ2 #0001 -- ( flip sign ) GTH2k SWP2?
	( x1 ) STHkr LDZ2 #0001 -- ( flip sign ) GTH2k #01 JCN SWP2
	&hor
		( save ) DUP2 .Screen/x DEO2
		( y1 ) STHkr #02 + LDZ2 #0001 -- .Screen/y DEO2 


@@ 1488,7 1499,7 @@ RTN
	&loop
		( save ) DUP2 .Screen/x DEO2
		( draw ) STHkr .Screen/pixel DEO
		2INC2 GTH2k ,&loop JCN
		INC2 INC2 GTH2k ,&loop JCN
	POP2 POP2 POPr

RTN


@@ 1499,18 1510,20 @@ RTN
	&loop
		( save ) DUP2 .Screen/y DEO2
		( draw ) STHkr .Screen/pixel DEO
		2INC2 GTH2k ,&loop JCN
		INC2 INC2 GTH2k ,&loop JCN
	POP2 POP2 POPr

RTN

@print-hex ( value -- )
@print-hex ( value* -- )
	
	STHk #04 SFT ,&parse JSR .Console/write DEO
	STHr #0f AND ,&parse JSR .Console/write DEO
	SWP ,&byte JSR 
	&byte ( byte -- )
		STHk #04 SFT ,&parse JSR #18 DEO
		STHr #0f AND ,&parse JSR #18 DEO
	RTN
	&parse ( value -- char )
		DUP #09 GTH ,&above JCN #30 ADD RTN &above #09 SUB #60 ADD RTN
	&parse ( byte -- char ) DUP #09 GTH ,&above JCN #30 + RTN 
	&above #57 + RTN

RTN