![]() |
Routines |
| Prev: 38604 | Up: Map | Next: 38686 |
|
Used by the routine at PlayGame.
|
||||
|
The hand has been "evaluated" at this point, so don't do anything if there is already a chance of winning.
|
||||
| GirlMarkCards | 38609 | LD A,(38043) | A=*TableHandEvaluation_Type. | |
| 38612 | LD HL,38686 | HL=OutcomeTypes. | ||
| 38615 | LD B,4 | Set a counter in B of the number of game "outcome" types we want to check against. | ||
|
Loop through each outcome type and see if the current hand contains this outcome.
|
||||
| CheckOutcomes_Loop | 38617 | CP (HL) | Return if the current hand has a positive outcome type. | |
| 38618 | RET Z | |||
| 38619 | INC HL | Increment the outcomes pointer by one. | ||
| 38620 | DJNZ CheckOutcomes_Loop | Decrease counter by one and loop back to CheckOutcomes_Loop until counter is zero. | ||
|
The girls hand has no cards which form one of the "special" outcomes (special, as in, which aren't able to be found by counting duplicate card face values).
|
||||
| 38622 | CALL GetRandomNumber | Call GetRandomNumber. | ||
| 38625 | CP 10 | Jump to FindCardsToMark if the random number is lower than 10. | ||
| 38627 | JR C,FindCardsToMark | |||
|
Two pairs is also somewhat of a "special" outcome, so handle it separately.
|
||||
| 38629 | LD A,(38043) | Jump to FindLowestSingleCard if *TableHandEvaluation_Type is equal to "Two Pairs". | ||
| 38632 | CP 3 | |||
| 38634 | JR Z,FindLowestSingleCard | |||
|
Handle all other cases.
|
||||
| FindCardsToMark | 38636 | LD A,(38044) | Fetch the "special" card from *TableHandEvaluation_BaseCard and store it in D. | |
| 38639 | LD D,A | |||
| 38640 | LD HL,38604 | HL=GirlsHand. | ||
| 38643 | LD B,5 | Set a counter in B for the total number of cards in a hand. | ||
| 38645 | LD C,3 | Set a counter in C of 3 this is how many cards we want to select to be redrawn. | ||
| FindCardsToMark_Loop | 38647 | LD A,(HL) | Fetch the card. | |
| 38648 | AND %00001111 | Convert it into a suit-less value (by keeping only bits 0-3). | ||
| 38650 | CP D | If this card is the "special card" stored in D, jump to FindCardsToMark_Next. | ||
| 38651 | JR Z,FindCardsToMark_Next | |||
|
Set the card in the hand to be redrawn.
|
||||
| 38653 | LD (HL),255 | Write 255 to *HL. | ||
| 38655 | DEC C | Decrease the selection counter by one. | ||
| 38656 | RET Z | Return if the selection counter is zero. | ||
| FindCardsToMark_Next | 38657 | INC HL | Increment the girls hand pointer by one. | |
| 38658 | DJNZ FindCardsToMark_Loop | Decrease the card counter by one and loop back to FindCardsToMark_Loop until the counter is zero and all cards in the hand have been checked. | ||
| 38660 | RET | Return. | ||
|
Find the lowest card value which doesn't have any duplicates.
|
||||
| FindLowestSingleCard | 38661 | LD HL,38207 | HL=38207 (e.g. Table_CardDuplicates-1). | |
| FindLowestSingleCard_Loop | 38664 | INC HL | Increment duplicate table pointer by one. | |
| 38665 | LD A,(HL) | Fetch the duplicate count value. | ||
| 38666 | DEC A | Keep jumping back to FindLowestSingleCard_Loop if there's more than one of this value in the hand. | ||
| 38667 | JR NZ,FindLowestSingleCard_Loop | |||
|
The card is a single and has no other duplicate face values in the hand.
|
||||
| 38669 | CALL CalculateCard | Call CalculateCard to convert the position in the duplicate count table to a card value. | ||
| 38672 | LD D,A | Store the card value in D. | ||
| 38673 | LD HL,38603 | HL=38603 (e.g. GirlsHand-1). | ||
| FindCard_Loop | 38676 | INC HL | Increment the girls hand pointer by one. | |
| 38677 | LD A,(HL) | Fetch the card. | ||
| 38678 | AND %00001111 | Convert it into a suit-less value (by keeping only bits 0-3). | ||
| 38680 | CP D | Keep jumping back to FindCard_Loop until this card matches the stored card value in D. | ||
| 38681 | JR NZ,FindCard_Loop | |||
|
Set the card in the hand to be redrawn.
|
||||
| 38683 | LD (HL),255 | Write 255 to *HL. | ||
| 38685 | RET | Return. | ||
| Prev: 38604 | Up: Map | Next: 38686 |