~rabbits/donsol

0df9753bfe807ed0356a1d91d452ddc6c1d0506c — neauoire 1 year, 4 months ago 94161c0
Optimizations
1 files changed, 74 insertions(+), 105 deletions(-)

M src/main.tal
M src/main.tal => src/main.tal +74 -105
@@ 24,9 24,6 @@
%10MOD { #0f AND } %10MOD2 { #000f AND2 }
%20MOD { #1f AND } %20MOD2 { #001f AND2 }

%DEBUG  { ;print-hex/byte JSR2 #0a .Console/write DEO }
%DEBUG2 { ;print-hex/short JSR2 #0a .Console/write DEO }

%RTN { JMP2r }
%TOB { NIP } %TOS  { #00 SWP }
%MOD  { DIVk MUL SUB } %MOD2 { DIV2k MUL2 SUB2 }


@@ 91,7 88,7 @@
	#0a .player/sp STZ
	#0b .player/xp STZ

	;go-menu JSR2
	,go-menu JSR

BRK



@@ 103,7 100,8 @@ BRK
	;on-mouse-menu    .Mouse/vector DEO2
	;on-frame-menu    .Screen/vector DEO2

	;start-menu JSR2
	;clear-screen JSR2
	;draw-menu JSR2

RTN



@@ 157,13 155,6 @@ BRK

BRK

@start-menu ( -- )

	;clear-screen JSR2
	;draw-menu JSR2

RTN

@draw-menu ( -- )

	( draw castle )


@@ 179,27 170,29 @@ RTN

	&options
	( easy )
	.frame/x LDZ2 WIDTH 2// #0048 -- ++ 
	.frame/y LDZ2 #0078 ++
		#0010 ++ ;easy-txt #02 [ .mode LDZ #00 = + ] ;draw-label JSR2
	.Screen/x DEI2 #002c -- .Screen/x DEO2
	;cursor-hor-icn .Screen/addr DEO2
	#01 [ .mode LDZ #00 = * ] .Screen/sprite DEO
	
	( normal )
	.frame/x LDZ2 WIDTH 2// #0018 -- ++ 
	.frame/y LDZ2 #0078 ++
		#0010 ++ ;normal-txt #02 [ .mode LDZ #01 = + ] ;draw-label JSR2
	.Screen/x DEI2 #003c -- .Screen/x DEO2
	;cursor-hor-icn .Screen/addr DEO2
	#01 [ .mode LDZ #01 = * ] .Screen/sprite DEO
	( hard )
	.frame/x LDZ2 WIDTH 2// #0028 ++ ++ 
	.frame/y LDZ2 #0078 ++
		#0010 ++ ;hard-txt #02 [ .mode LDZ #02 = + ] ;draw-label JSR2
	.Screen/x DEI2 #002c -- .Screen/x DEO2
	;cursor-hor-icn .Screen/addr DEO2
	#01 [ .mode LDZ #02 = * ] .Screen/sprite DEO
	.frame/x LDZ2 .frame/y LDZ2
		OVR2 WIDTH 2// #0048 -- ++ 
		OVR2 #0078 ++
			#0010 ++ ;easy-txt #02 [ .mode LDZ #00 = + ] ;draw-label JSR2
		.Screen/x DEI2 #002c -- .Screen/x DEO2
		;cursor-hor-icn .Screen/addr DEO2
		#01 [ .mode LDZ #00 = * ] .Screen/sprite DEO
		
		( normal )
		OVR2 WIDTH 2// #0018 -- ++ 
		OVR2 #0078 ++
			#0010 ++ ;normal-txt #02 [ .mode LDZ #01 = + ] ;draw-label JSR2
		.Screen/x DEI2 #003c -- .Screen/x DEO2
		;cursor-hor-icn .Screen/addr DEO2
		#01 [ .mode LDZ #01 = * ] .Screen/sprite DEO
		( hard )
		OVR2 WIDTH 2// #0028 ++ ++ 
		OVR2 #0078 ++
			#0010 ++ ;hard-txt #02 [ .mode LDZ #02 = + ] ;draw-label JSR2
		.Screen/x DEI2 #002c -- .Screen/x DEO2
		;cursor-hor-icn .Screen/addr DEO2
		#01 [ .mode LDZ #02 = * ] .Screen/sprite DEO
	POP2 POP2

RTN



@@ 305,16 298,6 @@ BRK

( core )

@set-mode ( mode -- )

	DUP .mode LDZ ! ,&changed JCN
		POP RTN
		&changed
	.mode STZ
	;draw-menu/options JSR2

RTN

@start-game ( -- )

	( reset player )


@@ 334,17 317,45 @@ RTN

RTN

@enter-room ( -- )
@set-mode ( mode -- )

	;pull-card JSR2 #00 ;put-card JSR2
	;pull-card JSR2 #01 ;put-card JSR2
	;pull-card JSR2 #02 ;put-card JSR2
	;pull-card JSR2 #03 ;put-card JSR2
	DUP .mode LDZ ! ,&changed JCN
		POP RTN
		&changed
	.mode STZ
	;draw-menu/options JSR2

RTN

@enter-room ( -- )

	#0400
	&loop
		,pull-card JSR OVR .table + STZ
		INC GTHk ,&loop JCN
	POP2
	;redraw JSR2

RTN

@pull-card ( -- card )

	.deck/length LDZ ,&continue JCN
		#36 RTN
		&continue
	( pull ) .deck/cards LDZ
	( decr ) .deck/length LDZ #01 - .deck/length STZ
	( shift left )
	#3600
	&loop
		DUP .deck/cards + 
		( get card ) INCk LDZ
		( put card ) SWP STZ
		INC GTHk ,&loop JCN
	POP2

RTN

@init-deck ( -- )

	#3600


@@ 379,31 390,6 @@ RTN

RTN

@pull-card ( -- card )

	.deck/length LDZ ,&continue JCN
		#36 RTN
		&continue
	( pull ) .deck/cards LDZ
	( decr ) .deck/length LDZ #01 - .deck/length STZ
	( shift left )
	#3600
	&loop
		DUP .deck/cards + 
		( get card ) INCk LDZ
		( put card ) SWP STZ
		INC GTHk ,&loop JCN
	POP2

RTN

@put-card ( card id -- )

	.table + STZ
	;draw-table JSR2

RTN

@return-card ( card -- )

	.deck/length LDZ .deck/cards + STZ


@@ 856,7 842,7 @@ RTN
	SWP2 .Screen/x DEO2
	( auto x ) #01 .Screen/auto DEO
	&loop
		LDAk ;get-char JSR2 .Screen/addr DEO2
		LDAk ,get-char JSR .Screen/addr DEO2
		STHkr .Screen/sprite DEO
		INC2 LDAk ,&loop JCN
	POP2


@@ 865,20 851,6 @@ RTN

RTN

@draw-value ( x* y* value color -- )

	STH STH
	.Screen/y DEO2
	.Screen/x DEO2

	STHkr #0a DIV TOS 8** ;numbers-icns ++ .Screen/addr DEO2
	OVRr STHr .Screen/sprite DEO
	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	STHr #0a MOD TOS 8** ;numbers-icns ++ .Screen/addr DEO2
	STHr .Screen/sprite DEO

RTN

@get-char ( char -- addr* )

	DUP #40 > OVR #5b < #0101 !! ,&no-uc JCN


@@ 897,6 869,20 @@ RTN

RTN

@draw-value ( x* y* value color -- )

	STH STH
	.Screen/y DEO2
	.Screen/x DEO2

	STHkr #0a DIV TOS 8** ;numbers-icns ++ .Screen/addr DEO2
	OVRr STHr .Screen/sprite DEO
	.Screen/x DEI2 #0008 ++ .Screen/x DEO2
	STHr #0a MOD TOS 8** ;numbers-icns ++ .Screen/addr DEO2
	STHr .Screen/sprite DEO

RTN

@clear-screen ( -- )

	;blank-icn .Screen/addr DEO2


@@ 914,22 900,5 @@ RTN

RTN

@print-hex ( value* -- )
	
	&short ( value* -- )
		SWP ,&echo JSR 
	&byte ( value -- )
		,&echo JSR
	RTN

	&echo ( value -- )
	STHk #04 SFT ,&parse JSR .Console/write DEO
	STHr #0f AND ,&parse JSR .Console/write DEO
	RTN
	&parse ( value -- char )
		DUP #09 GTH ,&above JCN #30 + RTN &above #09 - #60 + RTN

RTN

include src/strings.tal
include src/assets.tal