From 0f8152a8033dadf99d9f95fdc96e8bc7e5dffc26 Mon Sep 17 00:00:00 2001 From: shoofle Date: Sun, 28 Sep 2025 13:01:18 -0400 Subject: [PATCH] reversed cards now integrated into shuffling etc --- CardHelpers.inc | 16 +++++++++------- ScreenCardBrowse.inc | 19 +++++++++++++++++++ ScreenCardRead.inc | 2 ++ ScreenShuffle.inc | 38 ++++++++++++++++++++++++-------------- cups11page.inc | 9 ++++++--- main.asm | 33 ++++++++++++++++++++++----------- source.zip | Bin 524487 -> 525528 bytes 7 files changed, 82 insertions(+), 35 deletions(-) diff --git a/CardHelpers.inc b/CardHelpers.inc index e11d8e1..1b12c11 100644 --- a/CardHelpers.inc +++ b/CardHelpers.inc @@ -113,11 +113,13 @@ LoadCardDataAsync: ld [cvCardAddress + 1], a ld b, a - ld a, [vCurrentCardReversed] - call OneRandomByte - ld a, [rLFSR] - and a, 1 - ld [vCurrentCardReversed], a + ld a, [vSelectedCardIndex] + ld b, 0 + ld c, a ; bc from a, the number of the card in the cards list + ld hl, DECK_FLIPS + 1 + add hl, bc + ld a, [hl] + ld [vCurrentCardReversed], a cp a, 0 jp z, LoadUpright @@ -428,11 +430,11 @@ CardInit: ld [rOBP0], a ld [rOBP1], a + call CARD_INIT - 1 + ld a, [vCurrentCardReversed] cp a, 0 call nz, RotateSprites180 - - call CARD_INIT - 1 ret CardUpdate: diff --git a/ScreenCardBrowse.inc b/ScreenCardBrowse.inc index 48b04d2..fdb5383 100644 --- a/ScreenCardBrowse.inc +++ b/ScreenCardBrowse.inc @@ -93,6 +93,21 @@ CardBrowseUpdate: ret .doneWithB + ld hl, rMYBTNP + bit 4, [hl] + jp z, .doneWithA + ld a, [vSelectedCardIndex] + ld b, 0 + ld c, a + ld hl, DECK_FLIPS+1 + add hl, bc + ld a, [hl] + xor a, %10000000 + ld [hl], a + + jr .attemptCardChange + .doneWithA + ld a, [vSelectedCardIndex] ld hl, rMYBTNP bit 0, [hl] @@ -103,6 +118,8 @@ CardBrowseUpdate: jp z, :+ ; skip the following code if right is not pressed dec a : + .doneWithButtons + ld [vSelectedCardIndex], a ld hl, Cards call ArrayClampLooping @@ -113,6 +130,8 @@ CardBrowseUpdate: cp a, [hl] ret z ; if the selected card diddn't change, nothing to do + .attemptCardChange + ld a, [vBlocked] cp a, 0 ret nz diff --git a/ScreenCardRead.inc b/ScreenCardRead.inc index 6f5096d..ed78d97 100644 --- a/ScreenCardRead.inc +++ b/ScreenCardRead.inc @@ -91,6 +91,7 @@ CardReadUpdate: ret .doneWithB + ld a, [vSelectedSpreadCard] ld hl, rMYBTNP bit 1, [hl] @@ -181,6 +182,7 @@ ChangedCardTask: ld b, 0 add hl, bc ld a, [hl] + ld [vSelectedCardIndex], a ld [vPreviousCardIndex], a diff --git a/ScreenShuffle.inc b/ScreenShuffle.inc index e843a16..85a91ef 100644 --- a/ScreenShuffle.inc +++ b/ScreenShuffle.inc @@ -27,8 +27,7 @@ ScreenShuffle: dw ShuffleTeardown ShuffleSetup: - ld hl, SHUFFLED_DECK - ld a, [hl] + ld a, [SHUFFLED_DECK] dec a ld [vShuffleIndex], a @@ -164,24 +163,20 @@ CenterButtonHandler: ld hl, rMYBTNP : bit 0, [hl] jp z, :+ - - ld a, S_RightOut - ld [vState], a + ld a, S_RightOut + ld [vState], a : bit 1, [hl] jp z, :+ - - ld a, S_LeftOut - ld [vState], a + ld a, S_LeftOut + ld [vState], a : bit 2, [hl] jp z, :+ - - ld a, S_UpOut - ld [vState], a + ld a, S_UpOut + ld [vState], a : bit 3, [hl] jp z, :+ - - ld a, S_DownOut - ld [vState], a + ld a, S_DownOut + ld [vState], a : ret RightButtonHandler: @@ -353,6 +348,10 @@ DoSomeShuffling: call OneSwap call OneSwap call OneSwap + call OneSwap + call OneSwap + call OneSwap + call OneSwap ret OneSwap: ; shuffles once and decrements vshuffleindex @@ -370,6 +369,17 @@ OneSwap: ; shuffles once and decrements vshuffleindex ld hl, SHUFFLED_DECK call SwapCards ; arguments c and e as indices to swap, hl as array in memory + call ClockLFSR + ld a, [vShuffleIndex] + ld b, 0 + ld c, a + ld hl, DECK_FLIPS+1 + add hl, bc + ld a, [rLFSR] + and a, %10000000 + ld [hl], a + + ld a, [vShuffleIndex] dec a ld [vShuffleIndex], a ; decrement vshuffleindex so the next time around diff --git a/cups11page.inc b/cups11page.inc index 67638e3..d9a9e1b 100644 --- a/cups11page.inc +++ b/cups11page.inc @@ -7,9 +7,15 @@ TheFool: db 10, "PAGE OF " db 10, "CUPS " + db 9, "dreamer " db 9, "new love " db 9, "imagine " + + db 9, "childish " + db 9, "seduction" + db 9, "envy " + dw .BackgroundCopyEnd - .BackgroundCopy dw .BackgroundCopy dw .KeyArtTilesEnd - .KeyArtTiles @@ -26,12 +32,9 @@ TheFool: .fDraw: ret .fPrintPrep: ret - - .SpriteTiles: .SpriteTilesEnd: - .KeyArtTiles: db $00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00,$00 db $00,$00,$00,$00,$01,$01,$03,$03,$07,$07,$0f,$0f,$0f,$0f,$0f,$0f diff --git a/main.asm b/main.asm index aa015f0..60817db 100644 --- a/main.asm +++ b/main.asm @@ -7,9 +7,6 @@ ; fae for all your help on music and sound and sunday mornings ; sadie for hardware and packaging help - - - def MY_OAM equ $c000 ; $c100 - c120 call handles, scene stack, interrupt, card functions @@ -41,7 +38,8 @@ def CARD_VARS_START equ $c700 ; variables for animation of individual cards def CVS equ CARD_VARS_START ; handy to be able to refer to CVS by a short name def AUDIO_VARS_START equ $c800 ; variables for the audio subsystem def PRINTER_VARS_START equ $c900 -def SHUFFLED_DECK equ $ca00 ; location for the shuffled deck +def SHUFFLED_DECK equ $cb00 ; location for the shuffled deck +def DECK_FLIPS equ $cb80 ; location for the flips pushs "work spaces", WRAMX[$D000] ZEROES: ds $200 @@ -138,16 +136,29 @@ EntryPoint: ld a, 0 ld [vSelectedSpreadIndex], a ld [vSelectedCardIndex], a + + ; set up the SHUFFLED_DECK ld hl, Cards - ld b, [hl] + ld b, [hl] ; b holds the length of the card array ld hl, SHUFFLED_DECK ld [hl], b - inc hl -.writeCard - ld [hl+], a - inc a - cp a, b - jr nz, .writeCard + inc hl + .writeCard + ld [hl+], a + inc a + cp a, b + jr nz, .writeCard + + ld c, 0 ; c holds the thing to write to each flip + ld a, b ; a holds the length of the array + ld hl, DECK_FLIPS + ld [hl+], a + .writeFlip + ld [hl], c ; write a zero to a spot in the array + inc hl + dec a ; decrement our length counter + jr nz, .writeFlip + ld a, %1010_1010 ld [rLFSR], a diff --git a/source.zip b/source.zip index 3fc0943381c0ad33f2d2f6ab081e43ed254db08b..73d1ec61965a49ffbecfb964b64eeebe2a148b6f 100644 GIT binary patch delta 2842 zcmZuzeNa@_6~FK8#{~n3upkR8UQtLa3t`!4fCX0qf+A5AZA}T%x4RE^?XpXD-&Q~? zVOnOS(N0WaPbYuGnlY_0nQ3e?eRZ5Tqs>GU$(SZMwW*r4aWZLTV$>-rAoQNMAgs7E zhx5DloO?cg_v3M!2%7$W<@S7b@b@ z81s7=_h@R}1Ut=wIc3JYrE_YTW<1V~v)0xG zcLZk4W_7|W*yG`wT%kg>EfMS@9Hzno@Z<>@P%|uK&%**+Ya7-!Hi6BoPq$$8p@!O~ zO)b1IDWDabXDg2Wz&0tER4Gr`lZYf-D-nVk8_&9h?0t#I#;(_o=A5-~Hq`#_1(#91 zIwE{(gr#928FugDiA`BF6TV9qDGZrKi<&$k{5V;o@nr7c^8-1A4CJU?N#c_fR-}n3 z!V~cPh>)SLLXviw#YOP-D~9xCj1M(BynZX2X`sNS%}X8+LxaoBVEm6ho@%cYXqUOA$P*06Kk_NwD!7qJ^IlcC32PpHInb_nS+GqTxq0VI3WcO@xatrK^RfROA)g{6 zB^piq_;TI~qQv1g_yTS?pCzV2b%ki|bz2!0>7JEA@%jSoObIeA5CU0pd$qE8#OQT! z@io${HL+D`1x0;hcRV^bT@N26Mysvml<*O-HkxLUSdSbEVqS@bJA(?ZSnD;~=I@@N zY4G1tA*mo339+fX?qDRK$RQqrF@7!rJ=Q52rUI)?6=FsuUV)Bo(Txv-`q_YZc_D&h zhs52b2y9=7aW({wM|3NT5bP||(d7t!8PH`^A$aYNx_x#8g$)P;Z`An zzh5&vo`)cAfw94g;D?n)sRqIEKI8d11i$*oc&J{x$bE+vZ#=PzkP~XDiC&0<$xNC7 zb;H7Z!2$JIbY;@ay<-K;2KyWIsqmU8B*9h-%@CN{X`$WOP*Tq6y;@G!s&(bGFB5Zo zyqT88BQR{E-X#cvee@3uLB{KJ`7#6>&QUq~E?hkIgQ4^+LejI;)BmK~1z2{OI?MRZ zcwDT^%5vRapWovPds*(xTv+x*+;~T3&B=kEb@SbXzISx*!Sz*!<=_wL;-K*gwL`&8 zV-o!43Qd8}7U`Pd`$~NxymLlp0CvQf3ys&PQC;~Z-HF=^Cq^jlF8ptVI#I852!w3-Il2iU$F*?$B)A+jarQON5NXb%JOj)889t+oX|I`QlMvIigQo5C;ocpZtHqjmYzT>q@%pY1oOfw@FJ^pmP2;iBWI|Bp z$9R3aOC;$s#+y-y@n;qHL@VatvuZ}`Wi zQUXJFX{u;_1O9WD<{(w^qnwVnFT@svJ2MVi}n)0ao?|DFKXV) zQPeG`;4Ie~jom$e9W-(ZQDSM_be$)9l6TysNTG+MT0Fr+{lWy!37UnWpT+UtRzc4M z&1}IQ9Oce+hwBJIi9Nqh^czV@aec(oE_cX*hmtw`(OcJc)Dwb|6hnaF6S%=sX{Yf1 ztGMdH6h{_9;be4w8zy;SFK&hHlQgRt3;W=B8BP+Uzo>hf(U-B#?SQj25L1PO>bx|K;7F@5{g>-HEe;RWe3l_tqZXlQ%h6& zp?fffkii)Fl%6|Dp~y)i1y{UOT2(D~8M!hY=%Tq`-70ToRsG6_`XI1Iaq;RI%lE9u zBM7r_)1W4bi^gLE|NkQa?wdJ@Wz}r)jUUUmqqxO7*)x-KP}v^KwHmOaV-BuHZEa2k zXK6QJYY%!YfAv@i>5*66;mQSB?&nSkaM(m=$eknH?ohS=HOXB^yo!_8D(4yLA_m?4 zoB{ewG#oDWb0P3yBs~m!{#DMtGSM)2!$i-(j{{tZ+#5v`!_^emL&SuP0zxthWFdhz zb6k-8+I;$^mUBUH5}hTxlIS)OBSXRBq(M;Nr1SJrP{J0!x8AeV<*xweK`ugaNkNk2 zu9Xz-$`!Q1FZs5{OA}u5`E+VZ!)Lw!3U%W+LG84G})WP~-AdAWQZj zc>Yz+2IcFu)8rBxb6em!Co2+jR^${*^CY_*;bgCyvBJI*mZC#&*2Su3BFJoIA4>?X zce1282yCaBXKW?H))d#BH4}2yEbqF^HgLfG$x`8mXEc4V?h0F?k(5Efo-51-SAqA! zPOny!=U!#+<0RnZLxzI@VUVSx&K^|Rho(pRi$S(<(u)HFgA8W|@k7i)FDF9o5SxW| zE!u@{*gnK0DPW_Og?&PORmcDM{()ZFIHOwp}u0~35XY;+~ewV*7!RvERPWEiuvb)D32|>{XB?W;3vwc|@^e&O`FZm|cSQ{9t%-WQ?4BXxF4b_Xxu!gbQfD z}uaw<{$)RT0k4`9EPVxnXMGb+S{{Lx})4*D24zp+f|;}?YRwg^C~DhB z9hIV0o!sst4>DKA5`q#qxf>TXu%k~iy`x*yW8lw9U^U-yO~fSzkrOS}jpesKv`S3l*6&XW3MnXo#GJUH6k1eV zo^lb9@>K|9~=J8K%Y{?}AB_v=LO~;jByVC9I8h>@g<6?8}njc*|8Ivp9 z!okUl>LAzhO26L}!^`|w|GO1CZD1`UOKWNyi@nvJy2s_dx7ShHED?gD59rI?0(W>3 zuO~2Ql+^kUAWkFN&|ZP|(i2dv5o4DlH4`_|_00%C!7B