#IFNDEF __lib_cardsprites #DEFINE __lib_cardsprites 1 GOTO __skip_lib_cardsprites // ============================================================================ // CARD RANK SPRITES (A-K) // ============================================================================ // Sprites for displaying card ranks in multiplexed border display // Each sprite is 64 bytes (21 rows of 3 bytes + 1 padding byte) // ============================================================================ // Sprite 0: Ace LABEL sprite_rank_ace ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $10, $00 !8 $00, $10, $00 !8 $00, $38, $00 !8 $00, $38, $00 !8 $00, $6c, $00 !8 $00, $6c, $00 !8 $00, $c6, $00 !8 $00, $fe, $00 !8 $01, $ff, $00 !8 $01, $83, $00 !8 $03, $c7, $80 !8 $03, $c7, $80 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $fe ENDASM // Sprite 1: 2 LABEL sprite_rank_2 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $7c, $00 !8 $00, $fe, $00 !8 $00, $c6, $00 !8 $00, $06, $00 !8 $00, $0e, $00 !8 $00, $1c, $00 !8 $00, $38, $00 !8 $00, $70, $00 !8 $00, $e6, $00 !8 $00, $c6, $00 !8 $00, $fe, $00 !8 $00, $fe, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $fe ENDASM // Sprite 2: 3 LABEL sprite_rank_3 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $fe, $00 !8 $00, $fe, $00 !8 $00, $cc, $00 !8 $00, $18, $00 !8 $00, $30, $00 !8 $00, $7c, $00 !8 $00, $7e, $00 !8 $00, $06, $00 !8 $00, $06, $00 !8 $00, $c6, $00 !8 $00, $fe, $00 !8 $00, $7c, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $fe ENDASM // Sprite 3: 4 LABEL sprite_rank_4 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $0c, $00 !8 $00, $1c, $00 !8 $00, $3c, $00 !8 $00, $7c, $00 !8 $00, $ec, $00 !8 $01, $cc, $00 !8 $01, $ff, $00 !8 $01, $ff, $00 !8 $00, $0c, $00 !8 $00, $0c, $00 !8 $00, $1e, $00 !8 $00, $1e, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $fe ENDASM // Sprite 4: 5 LABEL sprite_rank_5 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $fe, $00 !8 $00, $fe, $00 !8 $00, $c0, $00 !8 $00, $c0, $00 !8 $00, $fc, $00 !8 $00, $fe, $00 !8 $00, $06, $00 !8 $00, $06, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $fe, $00 !8 $00, $7c, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $fe ENDASM // Sprite 5: 6 LABEL sprite_rank_6 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $3c, $00 !8 $00, $7c, $00 !8 $00, $e0, $00 !8 $00, $c0, $00 !8 $00, $fc, $00 !8 $00, $fe, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $fe, $00 !8 $00, $7c, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $fe ENDASM // Sprite 6: 7 LABEL sprite_rank_7 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $fe, $00 !8 $00, $fe, $00 !8 $00, $c6, $00 !8 $00, $0c, $00 !8 $00, $0c, $00 !8 $00, $18, $00 !8 $00, $18, $00 !8 $00, $18, $00 !8 $00, $30, $00 !8 $00, $30, $00 !8 $00, $30, $00 !8 $00, $30, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $fe ENDASM // Sprite 7: 8 LABEL sprite_rank_8 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $7c, $00 !8 $00, $fe, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $7c, $00 !8 $00, $fe, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $fe, $00 !8 $00, $7c, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $fe ENDASM // Sprite 8: 9 LABEL sprite_rank_9 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $7c, $00 !8 $00, $fe, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $fe, $00 !8 $00, $7e, $00 !8 $00, $06, $00 !8 $00, $0e, $00 !8 $00, $7c, $00 !8 $00, $78, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $fe ENDASM // Sprite 9: 10 LABEL sprite_rank_10 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $01, $9e, $00 !8 $01, $bf, $00 !8 $01, $b3, $00 !8 $01, $b3, $00 !8 $01, $b3, $00 !8 $01, $b3, $00 !8 $01, $b3, $00 !8 $01, $b3, $00 !8 $01, $b3, $00 !8 $01, $b3, $00 !8 $01, $bf, $00 !8 $01, $9e, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $fe ENDASM // Sprite 10: Jack LABEL sprite_rank_jack ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $1e, $00 !8 $00, $1e, $00 !8 $00, $0c, $00 !8 $00, $0c, $00 !8 $00, $0c, $00 !8 $00, $0c, $00 !8 $00, $0c, $00 !8 $00, $0c, $00 !8 $00, $cc, $00 !8 $00, $cc, $00 !8 $00, $fc, $00 !8 $00, $78, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $fe ENDASM // Sprite 11: Queen LABEL sprite_rank_queen ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $7c, $00 !8 $00, $fe, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $c6, $00 !8 $00, $fe, $00 !8 $00, $7c, $00 !8 $00, $0e, $00 !8 $00, $06, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $fe ENDASM // Sprite 12: King LABEL sprite_rank_king ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $01, $ef, $00 !8 $01, $ef, $00 !8 $00, $cc, $00 !8 $00, $d8, $00 !8 $00, $f0, $00 !8 $00, $e0, $00 !8 $00, $f0, $00 !8 $00, $d8, $00 !8 $00, $cc, $00 !8 $00, $c6, $00 !8 $01, $ef, $00 !8 $01, $ef, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $fe ENDASM // ============================================================================ // CREDITS SPRITES // ============================================================================ // Two sprites that go together horizontally to display credits // ============================================================================ // Sprite 13: Credits (left part) LABEL sprite_credits_left ASM !8 $ae, $ea, $ee !8 $aa, $8a, $2a !8 $ee, $8c, $4a !8 $aa, $8a, $8a !8 $aa, $ea, $ee !8 $00, $00, $00 !8 $0e, $4c, $ee !8 $08, $4a, $8a !8 $0e, $4a, $ce !8 $02, $4a, $8c !8 $0e, $4c, $ea !8 $00, $00, $00 !8 $00, $ee, $ee !8 $00, $2a, $28 !8 $00, $ea, $ee !8 $00, $8a, $8a !8 $00, $ee, $ee !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $fe ENDASM // Sprite 14: Credits (right part) LABEL sprite_credits_right ASM !8 $4c, $00, $00 !8 $4a, $00, $00 !8 $4a, $00, $00 !8 $4a, $00, $00 !8 $4c, $00, $00 !8 $00, $00, $00 !8 $e0, $00, $00 !8 $80, $00, $00 !8 $e0, $00, $00 !8 $20, $00, $00 !8 $e0, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $fe ENDASM // ============================================================================ // SUIT COLOR SPRITES (Overlay pairs for multi-color display) // ============================================================================ // Each suit uses 2 sprites overlaid to allow for two screen colors // Hearts (sprites 15-16), Diamonds (17-18), Clubs (19-20), Spades (21-22) // ============================================================================ // Sprite 15: Hearts (layer 1) LABEL sprite_suit_hearts_1 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $01, $c7, $00 !8 $03, $ef, $80 !8 $07, $ff, $c0 !8 $07, $ff, $c0 !8 $07, $ff, $c0 !8 $03, $ff, $80 !8 $01, $ff, $00 !8 $00, $fe, $00 !8 $00, $7c, $00 !8 $00, $38, $00 !8 $00, $10, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $12 ENDASM // Sprite 16: Hearts (layer 2) LABEL sprite_suit_hearts_2 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $41, $00 !8 $00, $20, $80 !8 $00, $00, $80 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $0a ENDASM // Sprite 17: Diamonds (layer 1) LABEL sprite_suit_diamonds_1 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $10, $00 !8 $00, $38, $00 !8 $00, $7c, $00 !8 $00, $fe, $00 !8 $01, $ff, $00 !8 $03, $ff, $80 !8 $03, $ff, $80 !8 $01, $ff, $00 !8 $00, $fe, $00 !8 $00, $7c, $00 !8 $00, $38, $00 !8 $00, $10, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $12 ENDASM // Sprite 18: Diamonds (layer 2) LABEL sprite_suit_diamonds_2 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $08, $00 !8 $00, $04, $00 !8 $00, $02, $00 !8 $00, $01, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $0a ENDASM // Sprite 19: Clubs (layer 1) LABEL sprite_suit_clubs_1 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $38, $00 !8 $00, $7c, $00 !8 $00, $7c, $00 !8 $00, $7c, $00 !8 $03, $bb, $80 !8 $07, $d7, $c0 !8 $07, $ff, $c0 !8 $07, $d7, $c0 !8 $03, $93, $80 !8 $00, $10, $00 !8 $00, $38, $00 !8 $00, $7c, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $10 ENDASM // Sprite 20: Clubs (layer 2) LABEL sprite_suit_clubs_2 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $38, $00 !8 $00, $0c, $00 !8 $00, $04, $00 !8 $00, $04, $00 !8 $01, $83, $80 !8 $00, $c0, $c0 !8 $00, $00, $40 !8 $00, $00, $40 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $08, $00 !8 $00, $04, $00 ;!8 $08, $00, $00 ;!8 $04, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $0b ENDASM // Sprite 21: Spades (layer 1) LABEL sprite_suit_spades_1 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $10, $00 !8 $00, $38, $00 !8 $00, $7c, $00 !8 $00, $fe, $00 !8 $01, $ff, $00 !8 $03, $ff, $80 !8 $03, $ff, $80 !8 $03, $ff, $80 !8 $01, $d7, $00 !8 $00, $10, $00 !8 $00, $38, $00 !8 $00, $7c, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $10 ENDASM // Sprite 22: Spades (layer 2) LABEL sprite_suit_spades_2 ASM !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $10, $00 !8 $00, $18, $00 !8 $00, $0c, $00 !8 $00, $06, $00 !8 $00, $03, $00 !8 $00, $01, $80 !8 $00, $00, $80 !8 $00, $00, $80 !8 $00, $00, $00 !8 $00, $00, $00 ;!8 $08, $00, $00 !8 $00, $08, $00 ;!8 $04, $00, $00 !8 $00, $04, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $0b ENDASM // ============================================================================ // TEXT SPRITES - "SELECTED CARD" // ============================================================================ // Two sprites that display "SELECTED CARD" text // ============================================================================ // Sprite 23: "SELECTED CARD" (left part) LABEL sprite_text_selected_card_1 ASM !8 $77, $47, $77 !8 $44, $44, $42 !8 $76, $46, $42 !8 $14, $44, $42 !8 $77, $77, $72 !8 $00, $00, $00 !8 $00, $00, $00 !8 $77, $76, $00 !8 $45, $55, $00 !8 $47, $75, $00 !8 $45, $65, $00 !8 $75, $56, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00 ENDASM // Sprite 24: "SELECTED CARD" (right part) LABEL sprite_text_selected_card_2 ASM !8 $76, $00, $00 !8 $45, $00, $00 !8 $65, $00, $00 !8 $45, $00, $00 !8 $76, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00, $00, $00 !8 $00 ENDASM // ============================================================================ // CARD DISPLAY SPRITE MANAGEMENT // ============================================================================ // Functions to display selected card using sprites in upper right corner // Uses sprites 1-5 (sprite 0 is reserved for pointer) // ============================================================================ // VIC-II Sprite registers for card display (sprites 1-5) // Note: sprite_x_msb and sprite_enable already declared in pointer.c65 BYTE sprite_x1 @ $d002 // Sprite 1 X BYTE sprite_y1 @ $d003 // Sprite 1 Y BYTE sprite_x2 @ $d004 // Sprite 2 X BYTE sprite_y2 @ $d005 // Sprite 2 Y BYTE sprite_x3 @ $d006 // Sprite 3 X BYTE sprite_y3 @ $d007 // Sprite 3 Y BYTE sprite_x4 @ $d008 // Sprite 4 X BYTE sprite_y4 @ $d009 // Sprite 4 Y BYTE sprite_x5 @ $d00a // Sprite 5 X BYTE sprite_y5 @ $d00b // Sprite 5 Y BYTE sprite_color1 @ $d028 // Sprite 1 color BYTE sprite_color2 @ $d029 // Sprite 2 color BYTE sprite_color3 @ $d02a // Sprite 3 color BYTE sprite_color4 @ $d02b // Sprite 4 color BYTE sprite_color5 @ $d02c // Sprite 5 color BYTE sprite_pointer1 @ $07f9 // Sprite 1 pointer BYTE sprite_pointer2 @ $07fa // Sprite 2 pointer BYTE sprite_pointer3 @ $07fb // Sprite 3 pointer BYTE sprite_pointer4 @ $07fc // Sprite 4 pointer BYTE sprite_pointer5 @ $07fd // Sprite 5 pointer // Card display sprite positions (upper right corner) // Screen starts at (24,50), size 320x200 // Sprites are 24 pixels wide WORD CONST CARD_TEXT_X1 = 312 // "SELECTED CARD" left part WORD CONST CARD_TEXT_X2 = CARD_TEXT_X1+24 // "SELECTED CARD" right part BYTE CONST CARD_TEXT_Y = 50 // Top of screen WORD CONST CARD_RANK_X = 312 // Rank sprite X WORD CONST CARD_SUIT_X = CARD_RANK_X+14 // Suit sprites X (both layers) - side by side with rank BYTE CONST CARD_RANK_Y = 64 // Below text (50 + 21 pixel sprite height) // Sprite data block numbers (offset from base at $2240 / 64 = 137) BYTE CONST SPRITE_BLOCK_TEXT_LEFT = 160 // sprite_text_selected_card_1 (sprite 23) BYTE CONST SPRITE_BLOCK_TEXT_RIGHT = 161 // sprite_text_selected_card_2 (sprite 24) // Rank blocks: 137-149 (ace=137, 2=138, ... king=149) // Suit blocks: hearts1=152, hearts2=153, diamonds1=154, diamonds2=155, // clubs1=156, clubs2=157, spades1=158, spades2=159 // ============================================================================ // FUNC card_display_init // Initialize card display sprites (position and "SELECTED CARD" text) // Call this once during game initialization // ============================================================================ FUNC card_display_init BYTE temp // Set "SELECTED CARD" text sprites (sprites 1 & 2) sprite_pointer1 = SPRITE_BLOCK_TEXT_LEFT sprite_pointer2 = SPRITE_BLOCK_TEXT_RIGHT // Position text sprites sprite_x1 = CARD_TEXT_X1 sprite_y1 = CARD_TEXT_Y sprite_x2 = CARD_TEXT_X2 sprite_y2 = CARD_TEXT_Y // Set X MSB for sprites > 255 temp = sprite_x_msb IF CARD_TEXT_X1 > 255 temp = temp | %00000010 // Sprite 1 X MSB ENDIF IF CARD_TEXT_X2 > 255 temp = temp | %00000100 // Sprite 2 X MSB ENDIF sprite_x_msb = temp // Set text sprite colors (black) sprite_color1 = color_black sprite_color2 = color_black // Initially hide all card display sprites (1-5) temp = sprite_enable temp = temp & %11000001 // Keep sprite 0 (pointer), clear 1-5 sprite_enable = temp FEND // ============================================================================ // FUNC card_display_show // Show selected card using sprites // Parameters: // card_rank: Card rank (0-12: A,2-10,J,Q,K) // card_suit: Card suit (0-3: hearts, diamonds, clubs, spades) // ============================================================================ FUNC card_display_show({BYTE card_rank} {BYTE card_suit}) BYTE rank_block BYTE suit_block1 BYTE suit_block2 BYTE suit_color BYTE rank_color BYTE suit_color2 // Calculate sprite block for rank (137 = ace, 138 = 2, etc.) rank_block = 137 rank_block = rank_block + card_rank // Calculate sprite blocks for suit (2 layers each) // Sprite order: Hearts: 152-153, Diamonds: 154-155, Clubs: 156-157, Spades: 158-159 // Card suit order: 0=Hearts, 1=Diamonds, 2=Spades, 3=Clubs // Need to swap spades(2) and clubs(3) BYTE suit_index IF card_suit == 2 suit_index = 3 // Spades (card suit 2) -> sprite index 3 ELSE IF card_suit == 3 suit_index = 2 // Clubs (card suit 3) -> sprite index 2 ELSE suit_index = card_suit // Hearts and Diamonds map directly ENDIF ENDIF ASM lda |suit_index| asl // Multiply by 2 (shift left) clc adc #152 sta |suit_block1| ENDASM suit_block2 = suit_block1 + 1 //suit_block2 = suit_block2 + 1 // Determine suit colors // Rank and suit layer 1: red for hearts/diamonds, black for clubs/spades // Suit layer 2: pink for red suits, dark grey for black suits IF card_suit < 2 rank_color = color_red suit_color = color_red suit_color2 = color_pink ELSE rank_color = color_black suit_color = color_black suit_color2 = color_dark_grey ENDIF // Set sprite 3: Rank sprite_pointer3 = rank_block sprite_x3 = CARD_RANK_X sprite_y3 = CARD_RANK_Y sprite_color3 = rank_color // Set sprites 4 & 5: Suit (2 layers at same position) // Sprite 4 has higher priority (drawn on top), so it gets the overlay layer // Sprite 5 has lower priority (drawn behind), so it gets the base layer sprite_pointer4 = suit_block2 // Overlay layer (drawn on top) sprite_pointer5 = suit_block1 // Base layer (drawn behind) sprite_x4 = CARD_SUIT_X sprite_y4 = CARD_RANK_Y // Same Y as rank sprite_x5 = CARD_SUIT_X // Exactly same X/Y as sprite 4 sprite_y5 = CARD_RANK_Y sprite_color4 = suit_color2 // Overlay color (pink/dark grey) sprite_color5 = suit_color // Base color (red/black) // Set X MSB for rank and suit sprites IF CARD_RANK_X > 255 sprite_x_msb = sprite_x_msb | %00111110 ENDIF // Enable all card display sprites (1-5) sprite_enable = sprite_enable | %00111110 FEND // ============================================================================ // FUNC card_display_hide // Hide all card display sprites (when no card selected) // ============================================================================ FUNC card_display_hide BYTE temp // Disable sprites 1-5, keep sprite 0 (pointer) temp = sprite_enable temp = temp & %11000001 sprite_enable = temp FEND LABEL __skip_lib_cardsprites #IFEND