animation preparations done

This commit is contained in:
~d6 2024-07-30 23:24:57 -04:00
parent 1cacc983c7
commit 4baecc3a4c
1 changed files with 38 additions and 13 deletions

View File

@ -243,7 +243,6 @@
INC GTHk ?&loop ( lim^ zp+1^ )
&done POP POP2 JMP2r ( )
( TODO: handle held cards in foundation by drawing one lower, or blank if ace held )
@draw-foundation ( -> )
#0030 ,&y STR2 ( ; y0<-48 )
.foundation #04 OVR ADD SWP ( lim^ zp^ )
@ -258,7 +257,7 @@
@draw-tableau
#0700 &loop DUP draw-column INC GTHk ?&loop POP2 JMP2r
@column-x ( idx^ -> x* )
@column-x ( col^ -> x* )
#00 SWP #0018 MUL2 #0030 ADD2 JMP2r
@column-y ( col^ -> y* )
@ -304,11 +303,30 @@
DUP #31 LTH #03 MUL ADD #24 SUB JMP2r
&lt DUP #11 LTH #1d MUL ADD #09 ADD JMP2r
@stock-pos ( card^ -> x* y* )
#00 SWP #0008 SWP2 .stock SUB ( x=8* i* )
#03 SFT2 #fff8 SUB2 JMP2r ( x*, y=8-i/8* )
@waste-pos ( card^ -> x* y* )
#00 SWP .waste SUB #30 SFT2 ( 8i* )
#001c ADD2 #0008 JMP2r ( x=28+8i* y=8* )
@foundation-pos ( card^ -> x* y* )
#00 SWP #0008 SWP2 .foundation SUB ( x=8* i* )
#50 SFT2 #0020 ADD2 #0008 SWP2 JMP2r ( x*, y=48+32i* )
@tableau-pos ( card^ -> x* y* )
STHk #13 DIV STHk column-x ( x* [card^ col^] )
#00 STH2r #13 MUL SUB #30 SFT2 ( x* 8pos* )
#0024 ADD2 JMP2r ( x* y=36+8pos* )
@card-pos-xy ( card^ -> x* y* )
( TODO )
( - copy from other implementations )
( - consider refactoring them to use this intead )
POP #ffff #ffff JMP2r ( FIXME )
#00 SWP .stock
#33 ADD GTHk ?{ POP !stock-pos }
#18 ADD GTHk ?{ POP !waste-pos }
#04 ADD GTHk ?{ POP !foundation-pos }
#85 ADD GTHk ?{ POP !tableau-pos }
POP2 #010e DEO #0000 #0000 JMP2r ( ; error, x=0, y=0 )
( we expect 0 <= time <= 16 )
@move-pos-xy ( -> x* y* )
@ -338,25 +356,32 @@
.move/src LDZ LDZ !draw-c ( ; draw card )
@end-move ( -> )
( TODO )
( - copy the card over )
( - do any necessary flipping, i.e. remove-card )
( - zero out moving )
.move/src LDZ STH LDZ ( card^ [src^] )
.move/dst LDZ STZ ( [src^] ; dst<-card )
STHr remove-card ( ; remove card, flip, etc. )
.move #0b initialize ( ; zero out move )
post-move draw ( ; finish move and draw )
!auto-move ( ; start another auto move maybe? )
@on-refresh ( -> brk )
.move/src LDZ #00 EQU ?{ update-move }
on-refresh-bear ( ; possibly refresh bear )
.frame LDZk INC SWP STZ ( ; increment frame counter )
BRK
@on-refresh-bear ( -> )
.frame LDZ
DUP #e8 NEQ ?{ ;sprites #0040 ADD2 !&update }
DUP #f0 NEQ ?{ ;sprites #0080 ADD2 !&update }
DUP #f8 NEQ ?{ ;sprites #0040 ADD2 !&update }
DUP #00 NEQ ?{ ;sprites !&update }
!&done
JMP2r
&update .Screen/addr DEO2 ( ; s/addr<-addr )
#0098 .Screen/y DEO2 ( ; s/x<-0x98 )
#00e8 .Screen/x DEO2 ( ; s/y<-0xe8 )
#16 .Screen/auto DEO ( ; draw 2 tiles, inc addr and y )
#80 .Screen/sprite DEO ( ; draw it! )
&done .frame LDZk INC SWP STZ BRK
JMP2r
@on-mouse ( -> brk )
on-move
@ -429,6 +454,7 @@
#01 AND ?&ok JMP2r &ok
maybe-select-stock ?&skip
maybe-select-waste ?&found
( TODO: maybe-select-foundation )
maybe-select-tableau ?&found
( not found ) .dragging #05 !initialize
&found clear-prev-mouse !draw-curr-hold
@ -600,7 +626,6 @@
start-drag draw #01 JMP2r ( 1^ )
&no2 POP2r POPr &no1 #00 JMP2r ( 0^ )
( TODO: handle empty column )
@maybe-select-tableau ( -> bool^ )
.Mouse/y DEI2 #0024 LTH2 ?&no1 ( )
.Mouse/x DEI2 #0030 LTH2 ?&no1 ( )