( Dev/Controller )

%++ { #0001 ADD2 }
%-- { #0001 SUB2 }
%2/ { #0002 DIV2 }

( variables )

@slime [
	&color 00
	&end
]

( devices )

|0100 @System [
	&vector 0000 
	&pad    0000 
			0000 
			0000
	&r      0daf 
	&g      02ff 
	&b      035f 
	&end    
]

|0110 @Console [
	&pad    0000
			0000
			0000
			0000
	&char   00 
	&byte   00 
	&short  0000 
	&string 0000
	&end
]

|0120 @Screen [
	&vector 0000 
	&width  0000 
	&height 0000 
	&pad    0000 
	&x      0000 
	&y      0000 
	&addr   0000 
	&color  00 
	&end    
]

|0140 @Controller [
	&vector 0000 
	&button 00 
	&key    00 
	&end    
]

|0200
	
	( theme ) 
	#0daf ,System/r STR2 
	#02ff ,System/g STR2 
	#035f ,System/b STR2

	( vectors ) 
	,on-frame ,Screen/vector STR2
	
	( set origin )
	,Screen/width LDR2 2/ ,Screen/x STR2
	,Screen/height LDR2 2/ ,Screen/y STR2
	,default_icn ,Screen/addr STR2
	#31 ,Screen/color POK2
	#2a ,slime/color POK2

BRK

@on-frame

	#2a ,slime/color POK2
	,default_icn ,Screen/addr STR2

	( hold ctrl key to change slime color )

	,Controller/button PEK2 #0f AND
		DUP #01 NEQ ^&no-ctrl JNZ #25 ,slime/color POK2 &no-ctrl
		DUP #02 NEQ ^&no-alt JNZ #2f ,slime/color POK2 &no-alt
	POP

	( clear ) #30 ,Screen/color POK2

	( detect movement )
	,Controller/button PEK2 #f0 AND
		DUP #04 SFT #01 AND #01 NEQ ^&no-up JNZ 
			( move ) 
			,Screen/y LDR2 -- ,Screen/y STR2 
			,up_icn ,Screen/addr STR2 &no-up
		DUP #05 SFT #01 AND #01 NEQ ^&no-down JNZ 
			( move ) 
			,Screen/y LDR2 ++ ,Screen/y STR2 
			,down_icn ,Screen/addr STR2 &no-down
		DUP #06 SFT #01 AND #01 NEQ ^&no-left JNZ 
			( move ) 
			,Screen/x LDR2 -- ,Screen/x STR2 
			,left_icn ,Screen/addr STR2 &no-left
		DUP #07 SFT #01 AND #01 NEQ ^&no-right JNZ 
			( move ) 
			,Screen/x LDR2 ++ ,Screen/x STR2 
			,right_icn ,Screen/addr STR2 &no-right
	POP

	( draw face )
	#31 ,Screen/color POK2

	( draw slime )
	,slime_icn ,Screen/addr STR2
	,slime/color PEK2 ,Screen/color POK2

BRK

@default_icn [ 3c7e ffdb ffe7 7e3c ]
@up_icn      [ 2466 e7db ffff 7e3c ]
@down_icn    [ 3c7e ffff dbe7 6624 ]
@left_icn    [ 3c7e ef1f 1fef 7e3c ]
@right_icn   [ 3c7e f7f8 f8f7 7e3c ]
@slime_icn   [ 0000 183c 3c18 0000 ]