Routines |
Prev: 9516 | Up: Map | Next: 9540 |
Used by the routine at PlayGame.
|
||||||||
First, clear down any old values and evaluate fresh.
|
||||||||
CountDuplicates | 9518 | LD HL,$9540 | HL=Table_CardDuplicates. | |||||
951B | LD B,$0D | Set a counter in B of the number of possible values of cards there are in one suit. | ||||||
ClearDuplicatesTable_Loop | 951D | LD (HL),$00 | Write 00 to *HL. | |||||
951F | INC HL | Increment HL by one. | ||||||
9520 | DJNZ ClearDuplicatesTable_Loop | Decrease counter by one and loop back to ClearDuplicatesTable_Loop until counter is zero. | ||||||
9522 | PUSH IX | Stash the hand pointer on the stack. | ||||||
9524 | PUSH IX | Copy the hand pointer into HL from IX (using the stack). | ||||||
9526 | POP HL | |||||||
Using the duplicates table, count how many cards of each value are present in the given hand.
|
||||||||
9527 | LD B,$05 | Set a counter in B of the number of cards in a hand. | ||||||
CountDuplicates_Loop | 9529 | LD IX,$9540 | IX=Table_CardDuplicates. | |||||
952D | LD A,(HL) | Fetch the current card from the hand. | ||||||
952E | AND %00001111 | Convert it into a suit-less value (by keeping only bits 0-3). | ||||||
9530 | LD E,A | Create an offset using DE, this will help us to point to the relevant card value in the duplicates table. | ||||||
9531 | LD D,$00 | |||||||
9533 | ADD IX,DE | Add the card offset in DE to IX. | ||||||
9535 | INC (IX+$00) | Increment the card duplicate count in the duplicates table by one. | ||||||
9538 | INC HL | Move onto the next card in the hand. | ||||||
9539 | DJNZ CountDuplicates_Loop | Decrease the card counter by one and loop back to CountDuplicates_Loop until all the cards in the hand have been evaluated. | ||||||
953B | POP IX | Restore the hand pointer from the stack. | ||||||
953D | JP CountSuits | Jump to CountSuits. |
Prev: 9516 | Up: Map | Next: 9540 |