Routines |
Prev: 38166 | Up: Map | Next: 38208 |
Used by the routine at PlayGame.
|
||||||||
First, clear down any old values and evaluate fresh.
|
||||||||
CountDuplicates | 38168 | LD HL,38208 | HL=Table_CardDuplicates. | |||||
38171 | LD B,13 | Set a counter in B of the number of possible values of cards there are in one suit. | ||||||
ClearDuplicatesTable_Loop | 38173 | LD (HL),0 | Write 0 to *HL. | |||||
38175 | INC HL | Increment HL by one. | ||||||
38176 | DJNZ ClearDuplicatesTable_Loop | Decrease counter by one and loop back to ClearDuplicatesTable_Loop until counter is zero. | ||||||
38178 | PUSH IX | Stash the hand pointer on the stack. | ||||||
38180 | PUSH IX | Copy the hand pointer into HL from IX (using the stack). | ||||||
38182 | POP HL | |||||||
Using the duplicates table, count how many cards of each value are present in the given hand.
|
||||||||
38183 | LD B,5 | Set a counter in B of the number of cards in a hand. | ||||||
CountDuplicates_Loop | 38185 | LD IX,38208 | IX=Table_CardDuplicates. | |||||
38189 | LD A,(HL) | Fetch the current card from the hand. | ||||||
38190 | AND %00001111 | Convert it into a suit-less value (by keeping only bits 0-3). | ||||||
38192 | LD E,A | Create an offset using DE, this will help us to point to the relevant card value in the duplicates table. | ||||||
38193 | LD D,0 | |||||||
38195 | ADD IX,DE | Add the card offset in DE to IX. | ||||||
38197 | INC (IX+0) | Increment the card duplicate count in the duplicates table by one. | ||||||
38200 | INC HL | Move onto the next card in the hand. | ||||||
38201 | 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. | ||||||
38203 | POP IX | Restore the hand pointer from the stack. | ||||||
38205 | JP CountSuits | Jump to CountSuits. |
Prev: 38166 | Up: Map | Next: 38208 |