From 2bc81347411083d519bfe9753630b8b4f68ff66b Mon Sep 17 00:00:00 2001 From: shoofle Date: Sat, 4 Oct 2025 12:41:25 -0400 Subject: [PATCH] upgrade navigation on browse screen and start adding minor arcana --- CardLibrary.inc | 28 ++++++++-- ScreenCardBrowse.inc | 91 ++++++++++++++++++++++---------- ScreenCardRead.inc | 18 +++++++ card_art/screendesigns.aseprite | Bin 4337 -> 4268 bytes cups11page.inc | 2 +- source.zip | Bin 525528 -> 527530 bytes 6 files changed, 107 insertions(+), 32 deletions(-) diff --git a/CardLibrary.inc b/CardLibrary.inc index cbdcec7..4ecaabc 100644 --- a/CardLibrary.inc +++ b/CardLibrary.inc @@ -123,9 +123,20 @@ Spreads: db 18, " Month by month " .end - +AdjacentCards: +.Downs: + db 26 + db 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, + db 22, 23, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, + db 0, 1, 2, 3 +.Ups: + db 26 + db 22, 23, 24, 25, 25, 25, 25, 25, 25, 25 + db 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9, 9, + db 10, 11, 12, 13, + Cards: - db 22 ; length + db 26 ; length db BANK(TheFool) dw TheFool db BANK(TheMagician) @@ -170,6 +181,16 @@ Cards: dw Judgement db BANK(TheWorld) dw TheWorld + + db BANK(Cups11Page) + dw Cups11Page + db BANK(Cups11Page) + dw Cups11Page + db BANK(Cups11Page) + dw Cups11Page + db BANK(Cups11Page) + dw Cups11Page + SECTION "First Eight Cards", ROMX INCLUDE "00TheFool.inc" @@ -201,4 +222,5 @@ INCLUDE "19TheSun.inc" SECTION "FIFTH EIGHT CARDS", ROMX INCLUDE "20Judgement.inc" -INCLUDE "21TheWorld.inc" \ No newline at end of file +INCLUDE "21TheWorld.inc" +INCLUDE "cups11page.inc" \ No newline at end of file diff --git a/ScreenCardBrowse.inc b/ScreenCardBrowse.inc index fdb5383..5cea491 100644 --- a/ScreenCardBrowse.inc +++ b/ScreenCardBrowse.inc @@ -118,17 +118,42 @@ CardBrowseUpdate: jp z, :+ ; skip the following code if right is not pressed dec a : - .doneWithButtons + ld [vSelectedCardIndex], a + ld hl, Cards + call ArrayClampLooping + ld [vSelectedCardIndex], a + + ld hl, rMYBTNP + bit 2, [hl] ; up + jp z, :+ + ld hl, AdjacentCards.Ups+1 + ld b, 0 + ld c, a + add hl, bc + ld a, [hl] + : + + ld hl, rMYBTNP + bit 3, [hl] ; up + jp z, :+ + ld hl, AdjacentCards.Downs+1 + ld b, 0 + ld c, a + add hl, bc + ld a, [hl] + : ld [vSelectedCardIndex], a ld hl, Cards call ArrayClampLooping ld [vSelectedCardIndex], a + .doneWithButtons + ld a, [vSelectedCardIndex] ld hl, vPreviousCardIndex cp a, [hl] - ret z ; if the selected card diddn't change, nothing to do + ret z ; if the selected card didn't change, nothing to do .attemptCardChange @@ -184,44 +209,54 @@ DrawDeckMinimap: ld hl, Cards ld c, [hl] ; count of cards srl c - set 0, c + ;set 0, c ld hl, vSelectedCardIndex ld d, [hl] ; selected card! ld b, $ff ; start at -1 lol - ld hl, _SCRN0 + 32 + 11 + ld hl, _SCRN0 + 32 + 10 + ; for this loop, c holds the total tile count + ; d holds the card which is currently selected + ; b holds the index of the TILE (two cards) we're currently drawing + ; hl points to the place we're drawing .loop + inc hl inc b ld a, b - cp a, 5 - jp nz, .noNewLine - ld [hl], $13 - ld hl, _SCRN0 + 32*2 + 11 + cp a, 5 ; after we've drawn 5 tiles (10 cards), draw a newline + jp nz, :+ + ld [hl], $13 + ld hl, _SCRN0 + 32*2 + 11 + : + cp a, 11 ; after we've drawn 11 tiles (5 + 6) draw a newline + jp nz, :+ + ld [hl], $13 + ld hl, _SCRN0 + 32*3 + 11 + : + ; add more conditions here to define newlines! .noNewLine ld a, b cp a, c - jp nc, .doneDrawing + jp nc, .doneDrawing ; if b - c doesn't underflow, then we're done; jump to the end + ld a, d - srl a - cp a, b - jp z, .drawSelectedCard - .drawUnselectedCards - ld [hl], $12 - inc hl - jp .loop - .drawSelectedCard - bit 0, d - jp nz, .drawSelectedSecond - ld [hl], $14 - inc hl - jp .loop - .drawSelectedSecond - ld [hl], $15 - inc hl - jp .loop + srl a ; divide current index by two + cp a, b ; check if the currently selected card is in current tile + jp z, .drawSelectedCard + .drawUnselectedCards ; if it's not, then draw unselected cards + ld [hl], $12 + jp .loop + .drawSelectedCard ; if it's in this tile, draw it + bit 0, d + jp nz, .drawSelectedSecond ; if the 1 bit of the current selection is zero, draw the left-selected-tile + ld [hl], $14 + jp .loop + .drawSelectedSecond ; if the 1 bit is nonzero draw the right-selected-tile + ld [hl], $15 + jp .loop .doneDrawing - ld [hl], $13 + ld [hl], $13 ; when we're done, draw a cap ret CardBrowse.UpdatePrintUI: @@ -305,13 +340,13 @@ CardBrowse.UITilemap: db $0e, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0a, $0f, $09, $02, $02, $02, $02, $02, $02, $02, $02, $08 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $03, $00, $00, $00, $00, $00, $00, $00, $00, $04 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $03, $00, $00, $00, $00, $00, $00, $00, $00, $04 + db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $03, $00, $00, $00, $00, $00, $00, $00, $00, $04 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $06, $05, $05, $05, $05, $05, $05, $05, $05, $07 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 - db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $01, $01, $01, $01, $01, $01, $01, $01, $01, $01 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $02, $02, $02, $02, $02, $02, $02, $02, $02, $02 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 db $0b, $00, $00, $00, $00, $00, $00, $00, $00, $0c, $00, $00, $00, $00, $00, $00, $00, $00, $00, $00 diff --git a/ScreenCardRead.inc b/ScreenCardRead.inc index ed78d97..c1e1427 100644 --- a/ScreenCardRead.inc +++ b/ScreenCardRead.inc @@ -91,6 +91,21 @@ CardReadUpdate: 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, [vSelectedSpreadCard] ld hl, rMYBTNP @@ -102,6 +117,8 @@ CardReadUpdate: jp z, :+ ; skip the following code if right is not pressed inc a : + + .doneWithButtons ld [vSelectedSpreadCard], a ld a, [vCurrentSpread] ld l, a @@ -115,6 +132,7 @@ CardReadUpdate: 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/card_art/screendesigns.aseprite b/card_art/screendesigns.aseprite index 1a2e9e8dcbc0f2dfeb5cf28b78b7829994f24262..55b8104b838fe649c42d06a8cbc63ab59d7ad44d 100644 GIT binary patch delta 804 zcmV+<1Ka%ZA*>+*tdRkK4J;4<0Q&K>0Av6F0JD*eFAuo_001K(000001^@s6T#?Hs ze}4i10C=3OSP7EkFbGQ(|NrwGi9yH+(?@EzNgNI#z;VrWed98FggwIYW9U4ZE`RU- z|NSjklK1i~xP`R)8ZIvcf%<zed4a8y_W*HRzV5p5-+u~9 zy%;n4oB%e=^ngQ4Zw{}I?imK;|D=iZf0u^jCdFHIuUc<-y-9Fx|IaUtzsFZUZZrZ* zHjt1P$Eo4$cyb~u{)uleXM65IE*(kIAEzS2?3`sotHs6g8k@}%MvsvKJa-BcQ`AM}-`TDtq@@EX( zHYd4%0XhdB+WSo7UwV(4=a26<{I9?-0l@jLmMwqlIMvx(V~=xG)eHKz!rzWh)lZY} zH^q-UmVN-3#4qZ{1n&KhW6tRlfBdHe7^#y@_ltTjx0e0H!=j|-jnDsk`%;}#9PSUw zK(!3C3C*G64`^g;b`wvS+pQ`&|?y delta 849 zcmV-X1Frn6A@Lyr@sR<44RH_v0Q&K_0Av6F0Jo8iFAvrN001K(000001^@s6V3VE* z7k>@_Y-x0KY-J#9Wps39a&w#l004NLtyl?i#4rf+4FCUgkHjEkf$5QHm#hOufFN$y z`j5-(74{0tUqk2BboqJr{qwb8Nj}Rn=N8hQYq-1-1nTc~(DP^(tXtB5LX2nIO@wOn zaDlBS?*-zxeBE{9*FQu`y%@9fc>>rlr+)`FwDjci__{sAfcW1qG5ykzwn_eW-4*qQ z*Dn*C>Hqhu#^2-9Uyn3GmTVv)F7~70oOp5|+y5=!V9xf;KrTR9XZsz<24J99MMCa5 zPYBCEU-CkOhYjiiB>%DjV8f#RH#cg%tDm8N8ClgA70<{0JKW$bzvdZPiyPX7j!{|e^Eb9;K_d+6C6Il ze@lR#I@z$l$$v3FuJ$W%FAL3uX5Jh+@BH`6Nq^!=^27Y13{;^)oYcov{=s7<4D`#n zd6RKqkqVQAw9yYSoaeGOzyEcC+nhLc^GgS5pX~;|%Z*im_IFFtdR)Z|Q-2MF4guj7 ze7?Fzxahw0FZj>|QtmS8!*l+ztkPfcf>x`pXyQL2QPLLW{{Wz~yVJLAyDJN){40@M`u9SAHs^U%(r?^$eFCp_yUdT;ZkPSm{%f_o zE5)oUk_u$A7Y8;8UoZsXP#|^%;vgvP2gD%^Ll>9; zu?7&ULir%JCJ?Jb*&tv5#70nYkUC?iJ{a4W1p9&+AmQfBfC$47s5lJx0&yf%EQA3O b-jPUZK=A+ydv7T155(b6HV6O!pi&D?2`{MZ diff --git a/cups11page.inc b/cups11page.inc index d9a9e1b..2e58fc4 100644 --- a/cups11page.inc +++ b/cups11page.inc @@ -4,7 +4,7 @@ ; then the 16bit address of the tile set ; then a 16bit value of the offset between tile map and end ; then the 16bit address of the tile map -TheFool: +Cups11Page: db 10, "PAGE OF " db 10, "CUPS " diff --git a/source.zip b/source.zip index 73d1ec61965a49ffbecfb964b64eeebe2a148b6f..9a711a6bcb7d0b8e0d4eafb021c38dff657025a3 100644 GIT binary patch delta 3609 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