![]() |
Routines |
| Prev: 58131 | Up: Map | Next: 58266 |
|
Used by the routine at PrintHand.
|
||||||||
| CheckCardType | 58170 | LD B,A | B=the original card value. | |||||
| 58171 | AND %00001111 | Convert the card value into a suit-less value (by keeping only bits 0-3). | ||||||
| 58173 | CP 9 | Jump to PrintNumberCard if A is lower than 9. | ||||||
| 58175 | JR C,PrintNumberCard | |||||||
| 58177 | CP 12 | Jump to PrintAceCard if A is equal to 12. | ||||||
| 58179 | JR Z,PrintAceCard | |||||||
|
Anything else is a picture card, so work out what we're printing.
|
||||||||
| 58181 | LD HL,58904 | HL=58904. | ||||||
| 58184 | LD DE,1080 | DE=1080. | ||||||
| 58187 | SUB 8 | A-=8. | ||||||
| 58189 | SBC HL,DE | HL-=DE (with carry). | ||||||
| CheckCardType_0 | 58191 | ADD HL,DE | HL+=DE. | |||||
| 58192 | DEC A | Decrease A by one. | ||||||
| 58193 | JR NZ,CheckCardType_0 | Jump to CheckCardType_0 until A is zero. | ||||||
|
Work out the suit.
|
||||||||
| 58195 | LD A,4 | A=4. | ||||||
| CardTypeSuitShift_Loop | 58197 | SRL B | Shift B right. | |||||
| 58199 | DEC A | Decrease A by one. | ||||||
| 58200 | JR NZ,CardTypeSuitShift_Loop | Jump back to CardTypeSuitShift_Loop until A is zero. | ||||||
| 58202 | LD DE,270 | DE=0270. | ||||||
| 58205 | XOR A | Reset flags. | ||||||
| 58206 | SBC HL,DE | HL-=DE (with carry). | ||||||
| 58208 | INC B | Increment B by one. | ||||||
| CheckCardType_1 | 58209 | ADD HL,DE | HL+=DE. | |||||
| 58210 | DJNZ CheckCardType_1 | Decrease counter by one and loop back to CheckCardType_1 until counter is zero. | ||||||
| 58212 | LD (23606),HL | Write HL to *CHARS. | ||||||
| 58215 | LD DE,760 | HL+=0760. | ||||||
| 58218 | ADD HL,DE | |||||||
| 58219 | PUSH HL | Stash HL on the stack. | ||||||
| 58220 | LD HL,58266 | Write Graphics_PictureCard to *PointerCardUDGData. | ||||||
| 58223 | LD (58723),HL | |||||||
| 58226 | CALL PrintCard | Call PrintCard. | ||||||
|
Calculate the attribute buffer position for the card position currently being printed.
|
||||||||
| 58229 | LD A,(59423) | A=*CardPosition. | ||||||
| 58232 | LD HL,6 | HL=0006. | ||||||
| 58235 | LD DE,22907 | DE=22907 (attribute buffer location). | ||||||
| 58238 | EX DE,HL | Exchange the DE and HL registers. | ||||||
| FindCardAttributePosition_Loop | 58239 | ADD HL,DE | HL+=DE. | |||||
| 58240 | DEC A | Decrease A by one. | ||||||
| 58241 | JR NZ,FindCardAttributePosition_Loop | Jump to FindCardAttributePosition_Loop until A is zero. | ||||||
| 58243 | EX DE,HL | Exchange the DE and HL registers. | ||||||
| 58244 | POP HL | Restore the attributes pointer from the stack. | ||||||
| 58245 | LD C,5 | Set the card height (5) to C. | ||||||
| CopyCardAttributes_RowLoop | 58247 | LD B,6 | Set the card width (6) to B. | |||||
| CopyCardAttributes_Loop | 58249 | LD A,(HL) | Copy an attribute byte from *HL to *DE. | |||||
| 58250 | LD (DE),A | |||||||
| 58251 | INC HL | Increment both HL and DE by one. | ||||||
| 58252 | INC DE | |||||||
| 58253 | DJNZ CopyCardAttributes_Loop | Decrease the width counter by one and loop back to CopyCardAttributes_Loop until all the attributes in the row have been copied. | ||||||
| 58255 | PUSH HL | Stash HL on the stack. | ||||||
|
Move down one line, and to where the next row will start (6 less than one row ~ 32).
|
||||||||
| 58256 | LD HL,26 | DE+=0026. | ||||||
| 58259 | ADD HL,DE | |||||||
| 58260 | EX DE,HL | |||||||
| 58261 | POP HL | Restore HL from the stack. | ||||||
| 58262 | DEC C | Decrease the height counter by one. | ||||||
| 58263 | JR NZ,CopyCardAttributes_RowLoop | Jump to CopyCardAttributes_RowLoop until the entire card has been printed. | ||||||
| 58265 | RET | Return. | ||||||
| Prev: 58131 | Up: Map | Next: 58266 |