Prev: 36979 Up: Map Next: 37051
37011: Mark Cards: Select Card
Used by the routine at MarkCards.
Count the number of cards marked already, there is a maximum limit of 3 markable cards.
MarkCards_SelectCard 37011 LD HL,36949 HL=MarkedCards.
37014 LD B,5 Set a counter of 5 for the total number of cards in a hand.
37016 LD C,0 Use C to count the number of already marked cards.
CountMarkedCards_Loop 37018 LD A,(HL) A=*HL.
37019 OR A Jump to CountMarkedCards_Next if this card isn't marked.
37020 JR Z,CountMarkedCards_Next
This card is marked, so increment the "already marked" counter.
37022 INC C Increment C by one.
CountMarkedCards_Next 37023 INC HL Move the marked card pointer to the next card.
37024 DJNZ CountMarkedCards_Loop Decrease the card count by one and loop back to CountMarkedCards_Loop until all card slots have been checked.
Find the marked card data.
37026 LD A,(36948) A=*SelectedMarkedCard.
37029 INC A Increment A by one for the loop below.
37030 LD HL,36948 HL=SelectedMarkedCard.
FindMarkedCard_Loop 37033 INC HL Increment HL by one.
37034 DEC A Decrease A by one.
37035 JR NZ,FindMarkedCard_Loop Jump to FindMarkedCard_Loop until A is zero.
Have less than 3 cards been marked already?
37037 LD A,C Jump to ToggleMarkedCard if there are less than 3 marked cards.
37038 CP 3
37040 JR C,ToggleMarkedCard
The maximum limit of 3 marked cards has already been reached, so don't allow this card to be marked.
37042 XOR A A=0.
37043 JR WriteMarkedCardData Jump to WriteMarkedCardData.
Switch the state of the card, if it was selected - make it now unselected, and if it was unselected - make it selected.
ToggleMarkedCard 37045 LD A,(HL) A=*HL.
37046 XOR %00111111 Flip bits 0-5.
WriteMarkedCardData 37048 LD (HL),A Write A to *HL.
37049 JR Alias_FindSelectedCardAttribute Jump to Alias_FindSelectedCardAttribute.
Prev: 36979 Up: Map Next: 37051