|  | Routines | 
| Prev: 38221 | Up: Map | Next: 38265 | 
| 
Used by the routine at PlayGame.
 
 | ||||||||
| 
If a card value in the players hand is 255 this indicates that a card needs to be drawn.
 
If a card value in CardDeck is 255 this indicates that the card has already been chosen.
 | ||||||||
| DrawCards | 38222 | PUSH IX | Stash IX on the stack. | |||||
| 38224 | PUSH IX | DE=IX (using the stack). | ||||||
| 38226 | POP DE | |||||||
| 38227 | LD B,5 | A hand consists of 5 cards. | ||||||
| DrawCards_Loop | 38229 | PUSH BC | Stash the card count on the stack. | |||||
| DrawCards_RePick | 38230 | LD HL,38331 | HL=CardDeck. | |||||
| 
Only draw a card if the current position in the hand is marked as needing to be picked.
 | ||||||||
| 38233 | LD A,(DE) | Jump to DrawCards_Next if the hand pointer is not equal to 255. | ||||||
| 38234 | CP 255 | |||||||
| 38236 | JR NZ,DrawCards_Next | |||||||
| 38238 | PUSH DE | Stash the hand and deck pointers on the stack temporarily. | ||||||
| 38239 | PUSH HL | |||||||
| 38240 | CALL GetRandomNumber | Call GetRandomNumber. | ||||||
| 38243 | POP HL | Restore the deck and hand pointers from the stack. | ||||||
| 38244 | POP DE | |||||||
| 38245 | LD C,A | Create an offset in BC. | ||||||
| 38246 | LD B,0 | |||||||
| 38248 | DEC BC | Decrease the card count by one. | ||||||
| 38249 | ADD HL,BC | HL+=BC. | ||||||
| 38250 | LD A,(HL) | Jump to DrawCards_RePick if this card has already been picked (if the chosen card "value" is equal to 255). | ||||||
| 38251 | CP 255 | |||||||
| 38253 | JR Z,DrawCards_RePick | |||||||
| 
The picked card is valid and able to be drawn into the hand.
 | ||||||||
| 38255 | LD (DE),A | Write the drawn card to the current hand position. | ||||||
| 38256 | LD (HL),255 | Now mark the card in the deck as being unavailable so it can't be chosen again. | ||||||
| DrawCards_Next | 38258 | POP BC | Restore the card count from the stack. | |||||
| 38259 | INC DE | Increment the hand pointer by one. | ||||||
| 38260 | DJNZ DrawCards_Loop | Decrease the card count by one and loop back to DrawCards_Loop until the deck is filled. | ||||||
| 38262 | POP IX | Restore IX from the stack. | ||||||
| 38264 | RET | Return. | ||||||
| Prev: 38221 | Up: Map | Next: 38265 |