Routines |
Prev: 954D | Up: Map | Next: 9579 |
Used by the routine at PlayGame.
|
||||||||
If a card value in the players hand is FF this indicates that a card needs to be drawn.
If a card value in CardDeck is FF this indicates that the card has already been chosen.
|
||||||||
DrawCards | 954E | PUSH IX | Stash IX on the stack. | |||||
9550 | PUSH IX | DE=IX (using the stack). | ||||||
9552 | POP DE | |||||||
9553 | LD B,$05 | A hand consists of 05 cards. | ||||||
DrawCards_Loop | 9555 | PUSH BC | Stash the card count on the stack. | |||||
DrawCards_RePick | 9556 | LD HL,$95BB | HL=CardDeck. | |||||
Only draw a card if the current position in the hand is marked as needing to be picked.
|
||||||||
9559 | LD A,(DE) | Jump to DrawCards_Next if the hand pointer is not equal to FF. | ||||||
955A | CP $FF | |||||||
955C | JR NZ,DrawCards_Next | |||||||
955E | PUSH DE | Stash the hand and deck pointers on the stack temporarily. | ||||||
955F | PUSH HL | |||||||
9560 | CALL GetRandomNumber | Call GetRandomNumber. | ||||||
9563 | POP HL | Restore the deck and hand pointers from the stack. | ||||||
9564 | POP DE | |||||||
9565 | LD C,A | Create an offset in BC. | ||||||
9566 | LD B,$00 | |||||||
9568 | DEC BC | Decrease the card count by one. | ||||||
9569 | ADD HL,BC | HL+=BC. | ||||||
956A | LD A,(HL) | Jump to DrawCards_RePick if this card has already been picked (if the chosen card "value" is equal to FF). | ||||||
956B | CP $FF | |||||||
956D | JR Z,DrawCards_RePick | |||||||
The picked card is valid and able to be drawn into the hand.
|
||||||||
956F | LD (DE),A | Write the drawn card to the current hand position. | ||||||
9570 | LD (HL),$FF | Now mark the card in the deck as being unavailable so it can't be chosen again. | ||||||
DrawCards_Next | 9572 | POP BC | Restore the card count from the stack. | |||||
9573 | INC DE | Increment the hand pointer by one. | ||||||
9574 | DJNZ DrawCards_Loop | Decrease the card count by one and loop back to DrawCards_Loop until the deck is filled. | ||||||
9576 | POP IX | Restore IX from the stack. | ||||||
9578 | RET | Return. |
Prev: 954D | Up: Map | Next: 9579 |