animation preparations done
This commit is contained in:
parent
1cacc983c7
commit
4baecc3a4c
51
kodiak.tal
51
kodiak.tal
|
@ -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
|
||||
< 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 ( )
|
||||
|
|
Loading…
Reference in New Issue