899 lines
20 KiB
Text
899 lines
20 KiB
Text
|
|
#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
|