Working with cards and vblanking
This commit is contained in:
		@@ -186,8 +186,8 @@ void main() {
 | 
			
		||||
  pokerInit();
 | 
			
		||||
 | 
			
		||||
  // Fill screen white
 | 
			
		||||
  for(j = 0; j < GB_BACKGROUND_COLUMNS * GB_BACKGROUND_ROWS; j++) filled[j] = TILESET_WHITE;
 | 
			
		||||
  set_bkg_tiles(0x00, 0x00, GB_BACKGROUND_COLUMNS, GB_BACKGROUND_ROWS, filled);
 | 
			
		||||
  for(j = 0; j < GB_BACKGROUND_COLUMNS * GB_BACKGROUND_ROWS; j++) filled[j] = SPRITE_TILESET_BLACK_LOW;
 | 
			
		||||
  spriteBufferBackgroundLow(0x00, 0x00, GB_BACKGROUND_COLUMNS, GB_BACKGROUND_ROWS, filled);
 | 
			
		||||
  SCX_REG = 0x00;
 | 
			
		||||
  SCY_REG = 0x00;
 | 
			
		||||
 | 
			
		||||
@@ -198,7 +198,7 @@ void main() {
 | 
			
		||||
    cardTiles,
 | 
			
		||||
    CARD_HEARTS_TWO
 | 
			
		||||
  );
 | 
			
		||||
  set_bkg_tiles(0x00, 0x00, 4, 6, cardTiles);
 | 
			
		||||
  // set_bkg_tiles(0x00, 0x00, 4, 6, cardTiles);
 | 
			
		||||
 | 
			
		||||
  // Now turn the screen on
 | 
			
		||||
  DISPLAY_ON;
 | 
			
		||||
@@ -206,13 +206,15 @@ void main() {
 | 
			
		||||
  wait_vbl_done();
 | 
			
		||||
 | 
			
		||||
  // Begin game
 | 
			
		||||
  conversationQueueNext();
 | 
			
		||||
  // conversationQueueNext();
 | 
			
		||||
 | 
			
		||||
  // Begin the loop
 | 
			
		||||
  while(1) {
 | 
			
		||||
    // Perform non-graphical code updates
 | 
			
		||||
    wait_vbl_done();
 | 
			
		||||
 | 
			
		||||
    continue;
 | 
			
		||||
 | 
			
		||||
    // Update the input state
 | 
			
		||||
    INPUT_LAST = INPUT_STATE;
 | 
			
		||||
    INPUT_STATE = joypad();
 | 
			
		||||
 
 | 
			
		||||
										
											Binary file not shown.
										
									
								
							| 
		 Before Width: | Height: | Size: 832 B After Width: | Height: | Size: 4.2 KiB  | 
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							@@ -8,7 +8,8 @@
 | 
			
		||||
  "scripts": {
 | 
			
		||||
    "clean": "node ./scripts/clean",
 | 
			
		||||
    "build": "npm run clean && node ./scripts/build",
 | 
			
		||||
    "start": "npm run build && wine ./bgb/bgb64.exe ./build/Penny.gb"
 | 
			
		||||
    "bgb": "wine ./bgb/bgb64.exe ./build/Penny.gb",
 | 
			
		||||
    "start": "npm run build && npm run bgb"
 | 
			
		||||
  },
 | 
			
		||||
  "dependencies": {
 | 
			
		||||
    "pngjs": "^6.0.0",
 | 
			
		||||
 
 | 
			
		||||
@@ -10,8 +10,8 @@ const {
 | 
			
		||||
 | 
			
		||||
const getPixelValue = (pixel) => {
 | 
			
		||||
  if(pixel.g === 188) return 0;
 | 
			
		||||
  if(pixel.g === 172) return 1;
 | 
			
		||||
  if(pixel.g === 98 || pixel.g === 145) return 2;
 | 
			
		||||
  if(pixel.g === 172 || pixel.g === 145) return 1;
 | 
			
		||||
  if(pixel.g === 98) return 2;
 | 
			
		||||
  if(pixel.g === 56) return 3;
 | 
			
		||||
  if(pixel.a === 0) return 0;
 | 
			
		||||
  throw new Error();
 | 
			
		||||
 
 | 
			
		||||
@@ -44,7 +44,7 @@ void questionBoxSetOptions(char *title, char **options, uint8_t count) {
 | 
			
		||||
 | 
			
		||||
  // Repurpose old array and draw arrow
 | 
			
		||||
  spaces[0] = spriteFontTileFromChar(QUESTION_BOX_CURSOR);
 | 
			
		||||
  set_bkg_tiles(0x01, TEXTBOX_WIN_Y + 0x02, 1, 1, spaces);
 | 
			
		||||
  spriteBufferBackgroundHigh(0x01, TEXTBOX_WIN_Y + 0x02, 1, 1, spaces);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void questionBoxUpdate() {
 | 
			
		||||
@@ -76,7 +76,7 @@ inline void questionBoxUpdate() {
 | 
			
		||||
    } else {
 | 
			
		||||
      tiles[0] = spriteFontTileFromChar(' ');
 | 
			
		||||
    }
 | 
			
		||||
    set_bkg_tiles(
 | 
			
		||||
    spriteBufferBackgroundHigh(
 | 
			
		||||
      0x01 + ((i % 0x02) * QUESTION_BOX_QUESTION_SPACES),
 | 
			
		||||
      TEXTBOX_WIN_Y + 0x02 + (i / 0x02),
 | 
			
		||||
      1, 1,
 | 
			
		||||
 
 | 
			
		||||
@@ -83,10 +83,10 @@ inline void textboxFillBlank() {
 | 
			
		||||
  uint8_t tiles[TEXTBOX_WIDTH_IN_TILES * TEXTBOX_HEIGHT_IN_TILES];
 | 
			
		||||
 | 
			
		||||
  spriteBorderBufferEdges(
 | 
			
		||||
    tiles, TEXTBOX_WIDTH_IN_TILES, TEXTBOX_HEIGHT_IN_TILES, SPRITE_TILESET_WHITE
 | 
			
		||||
    tiles, TEXTBOX_WIDTH_IN_TILES, TEXTBOX_HEIGHT_IN_TILES, SPRITE_TILESET_WHITE_HIGH
 | 
			
		||||
  );
 | 
			
		||||
 | 
			
		||||
  set_bkg_tiles(
 | 
			
		||||
  spriteBufferBackgroundHigh(
 | 
			
		||||
    0x00, TEXTBOX_WIN_Y,
 | 
			
		||||
    TEXTBOX_WIDTH_IN_TILES, TEXTBOX_HEIGHT_IN_TILES,
 | 
			
		||||
    tiles
 | 
			
		||||
@@ -129,7 +129,7 @@ inline void conversationTextboxUpdate() {
 | 
			
		||||
  } else {
 | 
			
		||||
    tile = spriteFontTileFromChar(c);
 | 
			
		||||
 | 
			
		||||
    set_bkg_tiles(
 | 
			
		||||
    spriteBufferBackgroundHigh(
 | 
			
		||||
      0x01 + (TEXTBOX_SCROLL % TEXTBOX_CHARS_PER_ROW),
 | 
			
		||||
      TEXTBOX_WIN_Y + 0x01 + (TEXTBOX_SCROLL / TEXTBOX_CHARS_PER_ROW),
 | 
			
		||||
      1, 1,
 | 
			
		||||
 
 | 
			
		||||
@@ -13,3 +13,6 @@
 | 
			
		||||
#include <stdbool.h>
 | 
			
		||||
#include <rand.h>
 | 
			
		||||
#include <string.h>
 | 
			
		||||
 | 
			
		||||
#define TILE_WIDTH 8
 | 
			
		||||
#define TILE_HEIGHT 8
 | 
			
		||||
							
								
								
									
										30
									
								
								src/main.c
									
									
									
									
									
								
							
							
						
						
									
										30
									
								
								src/main.c
									
									
									
									
									
								
							@@ -7,14 +7,36 @@
 | 
			
		||||
 | 
			
		||||
#include "main.h"
 | 
			
		||||
 | 
			
		||||
#define TEXTBOX_INTERRUPT_Y ((TEXTBOX_WIN_Y * TILE_HEIGHT) - 1)
 | 
			
		||||
 | 
			
		||||
// TODO: cleanup
 | 
			
		||||
void scanline_isr() {
 | 
			
		||||
  if(LYC_REG == 0) {
 | 
			
		||||
    LYC_REG = TEXTBOX_INTERRUPT_Y;
 | 
			
		||||
    LCDC_REG |= LCDCF_BG8000;
 | 
			
		||||
  } else if(LYC_REG == TEXTBOX_INTERRUPT_Y) {
 | 
			
		||||
    LYC_REG = 0;
 | 
			
		||||
    LCDC_REG &= ~LCDCF_BG8000;
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void main() {
 | 
			
		||||
  int16_t j;
 | 
			
		||||
  uint8_t filled[GB_BACKGROUND_COLUMNS*GB_BACKGROUND_ROWS];
 | 
			
		||||
 | 
			
		||||
  // Set up the GAMEBOY's registers.
 | 
			
		||||
  disable_interrupts();
 | 
			
		||||
 | 
			
		||||
  // Create a critical section
 | 
			
		||||
  CRITICAL {
 | 
			
		||||
    DISPLAY_OFF;
 | 
			
		||||
    LCDC_REG = LCDCF_OFF | LCDCF_BG8000 | LCDCF_BG9800 | LCDCF_BGON;
 | 
			
		||||
    STAT_REG |= STATF_LYC;
 | 
			
		||||
    LYC_REG = 0;
 | 
			
		||||
 | 
			
		||||
    add_LCD(scanline_isr);
 | 
			
		||||
  }
 | 
			
		||||
  set_interrupts(VBL_IFLAG | LCD_IFLAG);
 | 
			
		||||
 | 
			
		||||
  // Set the background color palette register
 | 
			
		||||
  BGP_REG = OBP0_REG = OBP1_REG = 0xE4U;
 | 
			
		||||
@@ -24,9 +46,9 @@ void main() {
 | 
			
		||||
 | 
			
		||||
  // Init things
 | 
			
		||||
  spriteTilesetBuffer();
 | 
			
		||||
  spriteCardsBuffer();
 | 
			
		||||
  spriteFontBuffer();
 | 
			
		||||
  spriteBorderBuffer();
 | 
			
		||||
  spriteCardsBuffer();
 | 
			
		||||
 | 
			
		||||
  conversationTextboxInit();
 | 
			
		||||
  conversationQueueInit();
 | 
			
		||||
@@ -34,16 +56,16 @@ void main() {
 | 
			
		||||
 | 
			
		||||
  // Fill screen white
 | 
			
		||||
  for(j = 0; j < GB_BACKGROUND_COLUMNS * GB_BACKGROUND_ROWS; j++) {
 | 
			
		||||
    filled[j] = SPRITE_TILESET_WHITE;
 | 
			
		||||
    filled[j] = SPRITE_TILESET_WHITE_LOW;
 | 
			
		||||
  }
 | 
			
		||||
  set_bkg_tiles(0x00, 0x00, GB_BACKGROUND_COLUMNS, GB_BACKGROUND_ROWS, filled);
 | 
			
		||||
  spriteBufferBackgroundLow(0x00, 0x00, GB_BACKGROUND_COLUMNS, GB_BACKGROUND_ROWS, filled);
 | 
			
		||||
  SCX_REG = 0x00;
 | 
			
		||||
  SCY_REG = 0x00;
 | 
			
		||||
 | 
			
		||||
  // Card Test
 | 
			
		||||
  uint8_t cardTiles[SPRITE_CARD_TILE_COUNT];
 | 
			
		||||
  spriteCardBufferTiles(cardTiles, CARD_HEARTS_TWO);
 | 
			
		||||
  set_bkg_tiles(0x00, 0x00, SPRITE_CARD_WIDTH, SPRITE_CARD_HEIGHT, cardTiles);
 | 
			
		||||
  spriteBufferBackgroundLow(0x00, 0x00, SPRITE_CARD_WIDTH, SPRITE_CARD_HEIGHT, cardTiles);
 | 
			
		||||
 | 
			
		||||
  // Now turn the screen on
 | 
			
		||||
  DISPLAY_ON;
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
#include "spriteborder.h"
 | 
			
		||||
 | 
			
		||||
inline void spriteBorderBuffer() {
 | 
			
		||||
  spriteBuffer(SPRITE_BORDER_VRAM_START, BORDER_IMAGE_TILES, BORDER_IMAGE);
 | 
			
		||||
  spriteBufferHigh(SPRITE_BORDER_VRAM_START, BORDER_IMAGE_TILES, BORDER_IMAGE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void spriteBorderBufferEdges(
 | 
			
		||||
 
 | 
			
		||||
@@ -9,9 +9,9 @@
 | 
			
		||||
#include "../libs.h"
 | 
			
		||||
#include "sprites.h"
 | 
			
		||||
#include "BORDER.h"
 | 
			
		||||
#include "spritefont.h"
 | 
			
		||||
#include "spritetileset.h"
 | 
			
		||||
 | 
			
		||||
#define SPRITE_BORDER_VRAM_START SPRITE_FONT_VRAM_END
 | 
			
		||||
#define SPRITE_BORDER_VRAM_START SPRITE_TILESET_VRAM_END_HIGH
 | 
			
		||||
#define SPRITE_BORDER_VRAM_END SPRITE_BORDER_VRAM_START + BORDER_IMAGE_TILES
 | 
			
		||||
 | 
			
		||||
#define SPRITE_BORDER_TOP_LEFT 0x00
 | 
			
		||||
 
 | 
			
		||||
@@ -10,22 +10,374 @@
 | 
			
		||||
const uint8_t SPRITE_HEARTS_ACE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_ACE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEART_BIG_TOP_LEFT, SPRITE_CARD_HEART_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEART_BIG_BOTTOM_LEFT, SPRITE_CARD_HEART_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEARTS_BIG_TOP_LEFT, SPRITE_CARD_HEARTS_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEARTS_BIG_BOTTOM_LEFT, SPRITE_CARD_HEARTS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM_RIGHT
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_ACE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_HEARTS_TWO[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_TWO_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEARTS_BIG_TOP_LEFT, SPRITE_CARD_HEARTS_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEARTS_BIG_BOTTOM_LEFT, SPRITE_CARD_HEARTS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEARTS_BIG_TOP_LEFT, SPRITE_CARD_HEARTS_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEARTS_BIG_BOTTOM_LEFT, SPRITE_CARD_HEARTS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_TWO_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_HEARTS_THREE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_THREE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEARTS_MED_LEFT, SPRITE_CARD_HEARTS_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEARTS_BIG_TOP_LEFT, SPRITE_CARD_HEARTS_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEARTS_BIG_BOTTOM_LEFT, SPRITE_CARD_HEARTS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEARTS_MED_LEFT, SPRITE_CARD_HEARTS_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_THREE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_HEARTS_FOUR[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_FOUR_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_EDGE_LEFT_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_EDGE_LEFT_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_FOUR_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_HEARTS_FIVE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_FIVE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_EDGE_LEFT_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEARTS_BIG_TOP_LEFT, SPRITE_CARD_HEARTS_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEARTS_BIG_BOTTOM_LEFT, SPRITE_CARD_HEARTS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_EDGE_LEFT_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_FIVE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_HEARTS_SIX[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_SIX_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_EDGE_LEFT_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEARTS_MED_LEFT, SPRITE_CARD_HEARTS_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEARTS_MED_LEFT, SPRITE_CARD_HEARTS_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_EDGE_LEFT_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_SIX_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_HEARTS_SEVEN[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_SEVEN_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_MIDDLE_TOP_LEFT, SPRITE_CARD_HEARTS_MIDDLE_TOP_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_HEARTS_BIG_BOTTOM_LEFT, SPRITE_CARD_HEARTS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_EDGE_LEFT_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_EDGE_LEFT_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_SEVEN_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_HEARTS_EIGHT[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_EIGHT_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_EDGE_LEFT_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_EDGE_LEFT_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_EDGE_LEFT_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_EDGE_LEFT_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_EIGHT_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_HEARTS_NINE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_NINE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_EDGE_LEFT_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_MIDDLE_TOP_LEFT, SPRITE_CARD_HEARTS_MIDDLE_TOP_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_MIDDLE_BOTTOM_LEFT, SPRITE_CARD_HEARTS_MIDDLE_BOTTOM_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_EDGE_LEFT_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_NINE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_HEARTS_TEN[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_TEN_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_MIDDLE_TOP_LEFT, SPRITE_CARD_HEARTS_MIDDLE_TOP_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_MIDDLE_BOTTOM_LEFT, SPRITE_CARD_HEARTS_MIDDLE_BOTTOM_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_MIDDLE_TOP_LEFT, SPRITE_CARD_HEARTS_MIDDLE_TOP_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT, SPRITE_CARD_HEARTS_MIDDLE_BOTTOM_LEFT, SPRITE_CARD_HEARTS_MIDDLE_BOTTOM_RIGHT, SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_TEN_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_DIAMONDS_ACE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_ACE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_DIAMONDS_BIG_TOP_LEFT, SPRITE_CARD_DIAMONDS_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_DIAMONDS_BIG_BOTTOM_LEFT, SPRITE_CARD_DIAMONDS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_ACE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_DIAMONDS_TWO[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_TWO_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_DIAMONDS_BIG_TOP_LEFT, SPRITE_CARD_DIAMONDS_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_DIAMONDS_BIG_BOTTOM_LEFT, SPRITE_CARD_DIAMONDS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_DIAMONDS_BIG_TOP_LEFT, SPRITE_CARD_DIAMONDS_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_DIAMONDS_BIG_BOTTOM_LEFT, SPRITE_CARD_DIAMONDS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_TWO_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_DIAMONDS_THREE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_THREE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_DIAMONDS_MED_LEFT, SPRITE_CARD_DIAMONDS_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_DIAMONDS_BIG_TOP_LEFT, SPRITE_CARD_DIAMONDS_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_DIAMONDS_BIG_BOTTOM_LEFT, SPRITE_CARD_DIAMONDS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_DIAMONDS_MED_LEFT, SPRITE_CARD_DIAMONDS_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_THREE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_DIAMONDS_FOUR[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_FOUR_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_LEFT_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_LEFT_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_FOUR_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_DIAMONDS_FIVE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_FIVE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_LEFT_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_DIAMONDS_BIG_TOP_LEFT, SPRITE_CARD_DIAMONDS_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_DIAMONDS_BIG_BOTTOM_LEFT, SPRITE_CARD_DIAMONDS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_LEFT_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_FIVE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_DIAMONDS_SIX[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_SIX_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_LEFT_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_DIAMONDS_MED_LEFT, SPRITE_CARD_DIAMONDS_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_DIAMONDS_MED_LEFT, SPRITE_CARD_DIAMONDS_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_LEFT_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_SIX_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_DIAMONDS_SEVEN[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_SEVEN_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_MIDDLE_TOP_LEFT, SPRITE_CARD_DIAMONDS_MIDDLE_TOP_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_DIAMONDS_BIG_BOTTOM_LEFT, SPRITE_CARD_DIAMONDS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_LEFT_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_LEFT_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_SEVEN_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_DIAMONDS_EIGHT[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_EIGHT_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_LEFT_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_LEFT_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_LEFT_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_LEFT_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_EIGHT_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_DIAMONDS_NINE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_NINE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_LEFT_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_MIDDLE_TOP_LEFT, SPRITE_CARD_DIAMONDS_MIDDLE_TOP_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_MIDDLE_BOTTOM_LEFT, SPRITE_CARD_DIAMONDS_MIDDLE_BOTTOM_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_LEFT_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_NINE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_DIAMONDS_TEN[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_TEN_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_MIDDLE_TOP_LEFT, SPRITE_CARD_DIAMONDS_MIDDLE_TOP_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_MIDDLE_BOTTOM_LEFT, SPRITE_CARD_DIAMONDS_MIDDLE_BOTTOM_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_MIDDLE_TOP_LEFT, SPRITE_CARD_DIAMONDS_MIDDLE_TOP_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT, SPRITE_CARD_DIAMONDS_MIDDLE_BOTTOM_LEFT, SPRITE_CARD_DIAMONDS_MIDDLE_BOTTOM_RIGHT, SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_TEN_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_SPADES_ACE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_ACE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_SPADES_BIG_TOP_LEFT, SPRITE_CARD_SPADES_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_SPADES_BIG_BOTTOM_LEFT, SPRITE_CARD_SPADES_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_ACE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_SPADES_TWO[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_TWO_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_SPADES_BIG_TOP_LEFT, SPRITE_CARD_SPADES_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_SPADES_BIG_BOTTOM_LEFT, SPRITE_CARD_SPADES_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_SPADES_BIG_TOP_LEFT, SPRITE_CARD_SPADES_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_SPADES_BIG_BOTTOM_LEFT, SPRITE_CARD_SPADES_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_TWO_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_SPADES_THREE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_THREE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_SPADES_MED_LEFT, SPRITE_CARD_SPADES_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_SPADES_BIG_TOP_LEFT, SPRITE_CARD_SPADES_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_SPADES_BIG_BOTTOM_LEFT, SPRITE_CARD_SPADES_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_SPADES_MED_LEFT, SPRITE_CARD_SPADES_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_THREE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_SPADES_FOUR[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_FOUR_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_EDGE_LEFT_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_EDGE_LEFT_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_FOUR_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_SPADES_FIVE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_FIVE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_EDGE_LEFT_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_SPADES_BIG_TOP_LEFT, SPRITE_CARD_SPADES_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_SPADES_BIG_BOTTOM_LEFT, SPRITE_CARD_SPADES_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_EDGE_LEFT_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_FIVE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_SPADES_SIX[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_SIX_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_EDGE_LEFT_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_SPADES_MED_LEFT, SPRITE_CARD_SPADES_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_SPADES_MED_LEFT, SPRITE_CARD_SPADES_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_EDGE_LEFT_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_SIX_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_SPADES_SEVEN[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_SEVEN_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_MIDDLE_TOP_LEFT, SPRITE_CARD_SPADES_MIDDLE_TOP_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_SPADES_BIG_BOTTOM_LEFT, SPRITE_CARD_SPADES_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_EDGE_LEFT_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_EDGE_LEFT_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_SEVEN_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_SPADES_EIGHT[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_EIGHT_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_EDGE_LEFT_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_EDGE_LEFT_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_EDGE_LEFT_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_EDGE_LEFT_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_EIGHT_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_SPADES_NINE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_NINE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_EDGE_LEFT_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_MIDDLE_TOP_LEFT, SPRITE_CARD_SPADES_MIDDLE_TOP_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_MIDDLE_BOTTOM_LEFT, SPRITE_CARD_SPADES_MIDDLE_BOTTOM_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_EDGE_LEFT_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_NINE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_SPADES_TEN[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_TEN_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_MIDDLE_TOP_LEFT, SPRITE_CARD_SPADES_MIDDLE_TOP_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_MIDDLE_BOTTOM_LEFT, SPRITE_CARD_SPADES_MIDDLE_BOTTOM_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_MIDDLE_TOP_LEFT, SPRITE_CARD_SPADES_MIDDLE_TOP_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_SPADES_EDGE_LEFT_LEFT, SPRITE_CARD_SPADES_MIDDLE_BOTTOM_LEFT, SPRITE_CARD_SPADES_MIDDLE_BOTTOM_RIGHT, SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_TEN_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_CLUBS_ACE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_ACE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_CLUBS_BIG_TOP_LEFT, SPRITE_CARD_CLUBS_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_CLUBS_BIG_BOTTOM_LEFT, SPRITE_CARD_CLUBS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_ACE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_CLUBS_TWO[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_TWO_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_CLUBS_BIG_TOP_LEFT, SPRITE_CARD_CLUBS_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_CLUBS_BIG_BOTTOM_LEFT, SPRITE_CARD_CLUBS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_CLUBS_BIG_TOP_LEFT, SPRITE_CARD_CLUBS_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_CLUBS_BIG_BOTTOM_LEFT, SPRITE_CARD_CLUBS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_TWO_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_CLUBS_THREE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_THREE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_CLUBS_MED_LEFT, SPRITE_CARD_CLUBS_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_CLUBS_BIG_TOP_LEFT, SPRITE_CARD_CLUBS_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_CLUBS_BIG_BOTTOM_LEFT, SPRITE_CARD_CLUBS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_CLUBS_MED_LEFT, SPRITE_CARD_CLUBS_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_THREE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_CLUBS_FOUR[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_FOUR_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_EDGE_LEFT_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_BLANK, SPRITE_CARD_BLANK, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_EDGE_LEFT_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_FOUR_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_CLUBS_FIVE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_FIVE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_EDGE_LEFT_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_CLUBS_BIG_TOP_LEFT, SPRITE_CARD_CLUBS_BIG_TOP_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_CLUBS_BIG_BOTTOM_LEFT, SPRITE_CARD_CLUBS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_EDGE_LEFT_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_FIVE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_CLUBS_SIX[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_SIX_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_EDGE_LEFT_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_CLUBS_MED_LEFT, SPRITE_CARD_CLUBS_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_CLUBS_MED_LEFT, SPRITE_CARD_CLUBS_MED_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_EDGE_LEFT_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_SIX_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_CLUBS_SEVEN[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_SEVEN_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_MIDDLE_TOP_LEFT, SPRITE_CARD_CLUBS_MIDDLE_TOP_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_LEFT, SPRITE_CARD_CLUBS_BIG_BOTTOM_LEFT, SPRITE_CARD_CLUBS_BIG_BOTTOM_RIGHT, SPRITE_CARD_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_EDGE_LEFT_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_EDGE_LEFT_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_SEVEN_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_CLUBS_EIGHT[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_EIGHT_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_EDGE_LEFT_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_EDGE_LEFT_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_EDGE_LEFT_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_EDGE_LEFT_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_EIGHT_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_CLUBS_NINE[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_NINE_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_EDGE_LEFT_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_MIDDLE_TOP_LEFT, SPRITE_CARD_CLUBS_MIDDLE_TOP_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_MIDDLE_BOTTOM_LEFT, SPRITE_CARD_CLUBS_MIDDLE_BOTTOM_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_EDGE_LEFT_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_NINE_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
const uint8_t SPRITE_CLUBS_TEN[SPRITE_CARD_TILE_COUNT] = {
 | 
			
		||||
  SPRITE_CARD_TEN_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP, SPRITE_CARD_TOP_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_MIDDLE_TOP_LEFT, SPRITE_CARD_CLUBS_MIDDLE_TOP_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_MIDDLE_BOTTOM_LEFT, SPRITE_CARD_CLUBS_MIDDLE_BOTTOM_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_MIDDLE_TOP_LEFT, SPRITE_CARD_CLUBS_MIDDLE_TOP_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT, SPRITE_CARD_CLUBS_MIDDLE_BOTTOM_LEFT, SPRITE_CARD_CLUBS_MIDDLE_BOTTOM_RIGHT, SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT,
 | 
			
		||||
  SPRITE_CARD_BOTTOM_LEFT, SPRITE_CARD_BOTTOM, SPRITE_CARD_BOTTOM, SPRITE_CARD_TEN_BOTTOM
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
// const uint8_t *SPRITE_CARD_LIST[] = {
 | 
			
		||||
//   SPRITE_HEARTS_ACE
 | 
			
		||||
// };
 | 
			
		||||
 | 
			
		||||
inline void spriteCardsBuffer() {
 | 
			
		||||
  spriteBuffer(SPRITE_CARD_VRAM_START, CARDS_TILES_IMAGE_TILES, CARDS_TILES_IMAGE);
 | 
			
		||||
  spriteBufferLow(SPRITE_CARD_VRAM_START, CARDS_TILES_IMAGE_TILES, CARDS_TILES_IMAGE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline uint8_t * spriteCardsForCard(uint8_t card) {
 | 
			
		||||
  return SPRITE_HEARTS_ACE;
 | 
			
		||||
  return SPRITE_CLUBS_ACE;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void spriteCardBufferTiles(uint8_t *buffer, uint8_t card) {
 | 
			
		||||
 
 | 
			
		||||
@@ -11,55 +11,179 @@
 | 
			
		||||
#include "../poker/card.h"
 | 
			
		||||
#include "spritetileset.h"
 | 
			
		||||
#include "sprites.h"
 | 
			
		||||
#include "spriteborder.h"
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_VRAM_START SPRITE_BORDER_VRAM_END
 | 
			
		||||
#define SPRITE_CARD_VRAM_START SPRITE_TILESET_VRAM_END_LOW
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_BLANK SPRITE_TILESET_WHITE
 | 
			
		||||
#define SPRITE_CARD_BLANK SPRITE_TILESET_WHITE_LOW
 | 
			
		||||
 | 
			
		||||
// Numbers (normal)
 | 
			
		||||
#define SPRITE_CARD_ACE_TOP SPRITE_CARD_VRAM_START + 0
 | 
			
		||||
#define SPRITE_CARD_ACE_BOTTOM SPRITE_CARD_ACE_TOP/* ref */
 | 
			
		||||
#define SPRITE_CARD_TWO_TOP SPRITE_CARD_VRAM_START + 1
 | 
			
		||||
#define SPRITE_CARD_TWO_BOTTOM SPRITE_CARD_TWO_TOP/* ref */
 | 
			
		||||
#define SPRITE_CARD_THREE_TOP SPRITE_CARD_VRAM_START + 2
 | 
			
		||||
#define SPRITE_CARD_THREE_BOTTOM SPRITE_CARD_THREE_TOP/* ref */
 | 
			
		||||
#define SPRITE_CARD_FOUR_TOP SPRITE_CARD_VRAM_START + 3
 | 
			
		||||
#define SPRITE_CARD_FOUR_BOTTOM SPRITE_CARD_THREE_TOP/* ref */
 | 
			
		||||
#define SPRITE_CARD_FIVE_TOP SPRITE_CARD_VRAM_START + 4
 | 
			
		||||
#define SPRITE_CARD_FIVE_BOTTOM SPRITE_CARD_FIVE_TOP/* ref */
 | 
			
		||||
#define SPRITE_CARD_SIX_TOP SPRITE_CARD_VRAM_START + 5
 | 
			
		||||
#define SPRITE_CARD_SIX_BOTTOM SPRITE_CARD_SIX_TOP/* ref */
 | 
			
		||||
#define SPRITE_CARD_SEVEN_TOP SPRITE_CARD_VRAM_START + 6
 | 
			
		||||
#define SPRITE_CARD_SEVEN_BOTTOM SPRITE_CARD_SEVEN_TOP/* ref */
 | 
			
		||||
#define SPRITE_CARD_EIGHT_TOP SPRITE_CARD_VRAM_START + 7
 | 
			
		||||
#define SPRITE_CARD_EIGHT_BOTTOM SPRITE_CARD_EIGHT_TOP/* ref */
 | 
			
		||||
#define SPRITE_CARD_NINE_TOP SPRITE_CARD_VRAM_START + 8
 | 
			
		||||
#define SPRITE_CARD_NINE_BOTTOM SPRITE_CARD_NINE_TOP/* ref */
 | 
			
		||||
#define SPRITE_CARD_TEN_TOP SPRITE_CARD_VRAM_START + 9
 | 
			
		||||
#define SPRITE_CARD_TEN_BOTTOM/* ref */
 | 
			
		||||
#define SPRITE_CARD_TWO_TOP SPRITE_CARD_ACE_TOP + 1
 | 
			
		||||
#define SPRITE_CARD_THREE_TOP SPRITE_CARD_ACE_TOP + 2
 | 
			
		||||
#define SPRITE_CARD_FOUR_TOP SPRITE_CARD_ACE_TOP + 3
 | 
			
		||||
#define SPRITE_CARD_FIVE_TOP SPRITE_CARD_ACE_TOP + 4
 | 
			
		||||
#define SPRITE_CARD_SIX_TOP SPRITE_CARD_ACE_TOP + 5
 | 
			
		||||
#define SPRITE_CARD_SEVEN_TOP SPRITE_CARD_ACE_TOP + 6
 | 
			
		||||
#define SPRITE_CARD_EIGHT_TOP SPRITE_CARD_ACE_TOP + 7
 | 
			
		||||
#define SPRITE_CARD_NINE_TOP SPRITE_CARD_ACE_TOP + 8
 | 
			
		||||
#define SPRITE_CARD_TEN_TOP SPRITE_CARD_ACE_TOP + 9
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_TOP SPRITE_CARD_VRAM_START + 11
 | 
			
		||||
#define SPRITE_CARD_TOP_RIGHT SPRITE_CARD_VRAM_START + 10
 | 
			
		||||
#define SPRITE_CARD_LEFT SPRITE_CARD_TOP/* ref */
 | 
			
		||||
#define SPRITE_CARD_RIGHT SPRITE_CARD_TOP/* ref */
 | 
			
		||||
#define SPRITE_CARD_BOTTOM_LEFT SPRITE_CARD_TOP_RIGHT/* ref */
 | 
			
		||||
#define SPRITE_CARD_BOTTOM_RIGHT SPRITE_CARD_TOP_RIGHT/* ref */
 | 
			
		||||
#define SPRITE_CARD_BOTTOM SPRITE_CARD_TOP/* ref */
 | 
			
		||||
// Numbers (flipped)
 | 
			
		||||
#define SPRITE_CARD_ACE_BOTTOM SPRITE_CARD_VRAM_START + 16
 | 
			
		||||
#define SPRITE_CARD_TWO_BOTTOM SPRITE_CARD_ACE_BOTTOM + 1
 | 
			
		||||
#define SPRITE_CARD_THREE_BOTTOM SPRITE_CARD_ACE_BOTTOM + 2
 | 
			
		||||
#define SPRITE_CARD_FOUR_BOTTOM SPRITE_CARD_ACE_BOTTOM + 3
 | 
			
		||||
#define SPRITE_CARD_FIVE_BOTTOM SPRITE_CARD_ACE_BOTTOM + 4
 | 
			
		||||
#define SPRITE_CARD_SIX_BOTTOM SPRITE_CARD_ACE_BOTTOM + 5
 | 
			
		||||
#define SPRITE_CARD_SEVEN_BOTTOM SPRITE_CARD_ACE_BOTTOM + 6
 | 
			
		||||
#define SPRITE_CARD_EIGHT_BOTTOM SPRITE_CARD_ACE_BOTTOM + 7
 | 
			
		||||
#define SPRITE_CARD_NINE_BOTTOM SPRITE_CARD_ACE_BOTTOM + 8
 | 
			
		||||
#define SPRITE_CARD_TEN_BOTTOM SPRITE_CARD_ACE_BOTTOM + 9
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_DIAMOND_BIG_TOP_LEFT SPRITE_CARD_VRAM_START + 12
 | 
			
		||||
#define SPRITE_CARD_DIAMOND_BIG_TOP_RIGHT SPRITE_CARD_DIAMOND_BIG_TOP_LEFT/* ref */
 | 
			
		||||
#define SPRITE_CARD_DIAMOND_BIG_BOTTOM_LEFT SPRITE_CARD_DIAMOND_BIG_TOP_LEFT/* ref */
 | 
			
		||||
#define SPRITE_CARD_DIAMOND_BIG_BOTTOM_RIGHT SPRITE_CARD_DIAMOND_BIG_TOP_LEFT/* ref */
 | 
			
		||||
#define SPRITE_CARD_HEART_BIG_TOP_LEFT SPRITE_CARD_VRAM_START + 13
 | 
			
		||||
#define SPRITE_CARD_HEART_BIG_TOP_RIGHT SPRITE_CARD_HEART_BIG_TOP_LEFT/* ref */
 | 
			
		||||
#define SPRITE_CARD_HEART_BIG_BOTTOM_LEFT SPRITE_CARD_DIAMOND_BIG_BOTTOM_LEFT
 | 
			
		||||
#define SPRITE_CARD_HEART_BIG_BOTTOM_RIGHT SPRITE_CARD_DIAMOND_BIG_BOTTOM_RIGHT
 | 
			
		||||
// Edges
 | 
			
		||||
#define SPRITE_CARD_TOP SPRITE_CARD_VRAM_START + 10
 | 
			
		||||
#define SPRITE_CARD_BOTTOM SPRITE_CARD_TOP + 1
 | 
			
		||||
#define SPRITE_CARD_RIGHT SPRITE_CARD_BOTTOM + 1
 | 
			
		||||
#define SPRITE_CARD_LEFT SPRITE_CARD_RIGHT + 1
 | 
			
		||||
 | 
			
		||||
// Corners (no numbers)
 | 
			
		||||
#define SPRITE_CARD_TOP_RIGHT SPRITE_CARD_VRAM_START + 14
 | 
			
		||||
#define SPRITE_CARD_BOTTOM_LEFT SPRITE_CARD_TOP_RIGHT + 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Jacks
 | 
			
		||||
#define SPRITE_CARD_JACKS_TOP_LEFT SPRITE_CARD_VRAM_START + 112
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Large Suits (Ace/Two)
 | 
			
		||||
#define SPRITE_CARD_DIAMONDS_BIG_TOP_LEFT SPRITE_CARD_VRAM_START + 32
 | 
			
		||||
#define SPRITE_CARD_DIAMONDS_BIG_TOP_RIGHT SPRITE_CARD_DIAMONDS_BIG_TOP_LEFT + 1
 | 
			
		||||
#define SPRITE_CARD_DIAMONDS_BIG_BOTTOM_LEFT SPRITE_CARD_VRAM_START + 40
 | 
			
		||||
#define SPRITE_CARD_DIAMONDS_BIG_BOTTOM_RIGHT SPRITE_CARD_DIAMONDS_BIG_BOTTOM_LEFT + 1
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_HEARTS_BIG_TOP_LEFT SPRITE_CARD_VRAM_START + 34
 | 
			
		||||
#define SPRITE_CARD_HEARTS_BIG_TOP_RIGHT SPRITE_CARD_HEARTS_BIG_TOP_LEFT + 1
 | 
			
		||||
#define SPRITE_CARD_HEARTS_BIG_BOTTOM_LEFT SPRITE_CARD_VRAM_START + 42
 | 
			
		||||
#define SPRITE_CARD_HEARTS_BIG_BOTTOM_RIGHT SPRITE_CARD_HEARTS_BIG_BOTTOM_LEFT + 1
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_SPADES_BIG_TOP_LEFT SPRITE_CARD_VRAM_START + 36
 | 
			
		||||
#define SPRITE_CARD_SPADES_BIG_TOP_RIGHT SPRITE_CARD_SPADES_BIG_TOP_LEFT + 1
 | 
			
		||||
#define SPRITE_CARD_SPADES_BIG_BOTTOM_LEFT SPRITE_CARD_VRAM_START + 44
 | 
			
		||||
#define SPRITE_CARD_SPADES_BIG_BOTTOM_RIGHT SPRITE_CARD_SPADES_BIG_BOTTOM_LEFT + 1
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_CLUBS_BIG_TOP_LEFT SPRITE_CARD_VRAM_START + 38
 | 
			
		||||
#define SPRITE_CARD_CLUBS_BIG_TOP_RIGHT SPRITE_CARD_CLUBS_BIG_TOP_LEFT + 1
 | 
			
		||||
#define SPRITE_CARD_CLUBS_BIG_BOTTOM_LEFT SPRITE_CARD_VRAM_START + 46
 | 
			
		||||
#define SPRITE_CARD_CLUBS_BIG_BOTTOM_RIGHT SPRITE_CARD_CLUBS_BIG_BOTTOM_LEFT + 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Medium Suits (Three)
 | 
			
		||||
#define SPRITE_CARD_DIAMONDS_MED_LEFT SPRITE_CARD_VRAM_START + 48
 | 
			
		||||
#define SPRITE_CARD_DIAMONDS_MED_RIGHT SPRITE_CARD_DIAMONDS_MED_LEFT + 1
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_HEARTS_MED_LEFT SPRITE_CARD_VRAM_START + 50
 | 
			
		||||
#define SPRITE_CARD_HEARTS_MED_RIGHT SPRITE_CARD_HEARTS_MED_LEFT + 1
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_SPADES_MED_LEFT SPRITE_CARD_VRAM_START + 52
 | 
			
		||||
#define SPRITE_CARD_SPADES_MED_RIGHT SPRITE_CARD_SPADES_MED_LEFT + 1
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_CLUBS_MED_LEFT SPRITE_CARD_VRAM_START + 54
 | 
			
		||||
#define SPRITE_CARD_CLUBS_MED_RIGHT SPRITE_CARD_CLUBS_MED_LEFT + 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Edge Suits (Four, Five, Six, Seven, Eight, Nine, Ten)
 | 
			
		||||
#define SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT SPRITE_CARD_VRAM_START + 56
 | 
			
		||||
#define SPRITE_CARD_DIAMONDS_EDGE_LEFT_RIGHT SPRITE_CARD_DIAMONDS_EDGE_LEFT_LEFT + 1
 | 
			
		||||
#define SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT SPRITE_CARD_VRAM_START + 64
 | 
			
		||||
#define SPRITE_CARD_DIAMONDS_EDGE_RIGHT_RIGHT SPRITE_CARD_DIAMONDS_EDGE_RIGHT_LEFT + 1 
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT SPRITE_CARD_VRAM_START + 58
 | 
			
		||||
#define SPRITE_CARD_HEARTS_EDGE_LEFT_RIGHT SPRITE_CARD_HEARTS_EDGE_LEFT_LEFT + 1
 | 
			
		||||
#define SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT SPRITE_CARD_VRAM_START + 66
 | 
			
		||||
#define SPRITE_CARD_HEARTS_EDGE_RIGHT_RIGHT SPRITE_CARD_HEARTS_EDGE_RIGHT_LEFT + 1 
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_SPADES_EDGE_LEFT_LEFT SPRITE_CARD_VRAM_START + 60
 | 
			
		||||
#define SPRITE_CARD_SPADES_EDGE_LEFT_RIGHT SPRITE_CARD_SPADES_EDGE_LEFT_LEFT + 1
 | 
			
		||||
#define SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT SPRITE_CARD_VRAM_START + 68
 | 
			
		||||
#define SPRITE_CARD_SPADES_EDGE_RIGHT_RIGHT SPRITE_CARD_SPADES_EDGE_RIGHT_LEFT + 1 
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT SPRITE_CARD_VRAM_START + 62
 | 
			
		||||
#define SPRITE_CARD_CLUBS_EDGE_LEFT_RIGHT SPRITE_CARD_CLUBS_EDGE_LEFT_LEFT + 1
 | 
			
		||||
#define SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT SPRITE_CARD_VRAM_START + 70
 | 
			
		||||
#define SPRITE_CARD_CLUBS_EDGE_RIGHT_RIGHT SPRITE_CARD_CLUBS_EDGE_RIGHT_LEFT + 1 
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Edge Suits With Middle (Seven, Eight, Nine, Ten)
 | 
			
		||||
#define SPRITE_CARD_DIAMONDS_MIDDLE_TOP_LEFT SPRITE_CARD_VRAM_START + 72
 | 
			
		||||
#define SPRITE_CARD_DIAMONDS_MIDDLE_TOP_RIGHT SPRITE_CARD_DIAMONDS_MIDDLE_TOP_LEFT + 1
 | 
			
		||||
#define SPRITE_CARD_DIAMONDS_MIDDLE_BOTTOM_LEFT SPRITE_CARD_VRAM_START + 80
 | 
			
		||||
#define SPRITE_CARD_DIAMONDS_MIDDLE_BOTTOM_RIGHT SPRITE_CARD_DIAMONDS_MIDDLE_BOTTOM_LEFT + 1
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_HEARTS_MIDDLE_TOP_LEFT SPRITE_CARD_VRAM_START + 74
 | 
			
		||||
#define SPRITE_CARD_HEARTS_MIDDLE_TOP_RIGHT SPRITE_CARD_HEARTS_MIDDLE_TOP_LEFT + 1
 | 
			
		||||
#define SPRITE_CARD_HEARTS_MIDDLE_BOTTOM_LEFT SPRITE_CARD_VRAM_START + 82
 | 
			
		||||
#define SPRITE_CARD_HEARTS_MIDDLE_BOTTOM_RIGHT SPRITE_CARD_HEARTS_MIDDLE_BOTTOM_LEFT + 1
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_SPADES_MIDDLE_TOP_LEFT SPRITE_CARD_VRAM_START + 76
 | 
			
		||||
#define SPRITE_CARD_SPADES_MIDDLE_TOP_RIGHT SPRITE_CARD_SPADES_MIDDLE_TOP_LEFT + 1
 | 
			
		||||
#define SPRITE_CARD_SPADES_MIDDLE_BOTTOM_LEFT SPRITE_CARD_VRAM_START + 84
 | 
			
		||||
#define SPRITE_CARD_SPADES_MIDDLE_BOTTOM_RIGHT SPRITE_CARD_SPADES_MIDDLE_BOTTOM_LEFT + 1
 | 
			
		||||
 | 
			
		||||
#define SPRITE_CARD_CLUBS_MIDDLE_TOP_LEFT SPRITE_CARD_VRAM_START + 78
 | 
			
		||||
#define SPRITE_CARD_CLUBS_MIDDLE_TOP_RIGHT SPRITE_CARD_CLUBS_MIDDLE_TOP_LEFT + 1
 | 
			
		||||
#define SPRITE_CARD_CLUBS_MIDDLE_BOTTOM_LEFT SPRITE_CARD_VRAM_START + 86
 | 
			
		||||
#define SPRITE_CARD_CLUBS_MIDDLE_BOTTOM_RIGHT SPRITE_CARD_CLUBS_MIDDLE_BOTTOM_LEFT + 1
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Information about the card as a tilemap
 | 
			
		||||
#define SPRITE_CARD_WIDTH 4
 | 
			
		||||
#define SPRITE_CARD_HEIGHT 6
 | 
			
		||||
#define SPRITE_CARD_TILE_COUNT (SPRITE_CARD_WIDTH * SPRITE_CARD_HEIGHT)
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
extern const uint8_t SPRITE_HEARTS_ACE[];
 | 
			
		||||
extern const uint8_t SPRITE_HEARTS_TWO[];
 | 
			
		||||
extern const uint8_t SPRITE_HEARTS_THREE[];
 | 
			
		||||
extern const uint8_t SPRITE_HEARTS_FOUR[];
 | 
			
		||||
extern const uint8_t SPRITE_HEARTS_FIVE[];
 | 
			
		||||
extern const uint8_t SPRITE_HEARTS_SIX[];
 | 
			
		||||
extern const uint8_t SPRITE_HEARTS_SEVEN[];
 | 
			
		||||
extern const uint8_t SPRITE_HEARTS_EIGHT[];
 | 
			
		||||
extern const uint8_t SPRITE_HEARTS_NINE[];
 | 
			
		||||
extern const uint8_t SPRITE_HEARTS_TEN[];
 | 
			
		||||
 | 
			
		||||
extern const uint8_t SPRITE_DIAMONDS_ACE[];
 | 
			
		||||
extern const uint8_t SPRITE_DIAMONDS_TWO[];
 | 
			
		||||
extern const uint8_t SPRITE_DIAMONDS_THREE[];
 | 
			
		||||
extern const uint8_t SPRITE_DIAMONDS_FOUR[];
 | 
			
		||||
extern const uint8_t SPRITE_DIAMONDS_FIVE[];
 | 
			
		||||
extern const uint8_t SPRITE_DIAMONDS_SIX[];
 | 
			
		||||
extern const uint8_t SPRITE_DIAMONDS_SEVEN[];
 | 
			
		||||
extern const uint8_t SPRITE_DIAMONDS_EIGHT[];
 | 
			
		||||
extern const uint8_t SPRITE_DIAMONDS_NINE[];
 | 
			
		||||
extern const uint8_t SPRITE_DIAMONDS_TEN[];
 | 
			
		||||
 | 
			
		||||
extern const uint8_t SPRITE_SPADES_ACE[];
 | 
			
		||||
extern const uint8_t SPRITE_SPADES_TWO[];
 | 
			
		||||
extern const uint8_t SPRITE_SPADES_THREE[];
 | 
			
		||||
extern const uint8_t SPRITE_SPADES_FOUR[];
 | 
			
		||||
extern const uint8_t SPRITE_SPADES_FIVE[];
 | 
			
		||||
extern const uint8_t SPRITE_SPADES_SIX[];
 | 
			
		||||
extern const uint8_t SPRITE_SPADES_SEVEN[];
 | 
			
		||||
extern const uint8_t SPRITE_SPADES_EIGHT[];
 | 
			
		||||
extern const uint8_t SPRITE_SPADES_NINE[];
 | 
			
		||||
extern const uint8_t SPRITE_SPADES_TEN[];
 | 
			
		||||
 | 
			
		||||
extern const uint8_t SPRITE_CLUBS_ACE[];
 | 
			
		||||
extern const uint8_t SPRITE_CLUBS_TWO[];
 | 
			
		||||
extern const uint8_t SPRITE_CLUBS_THREE[];
 | 
			
		||||
extern const uint8_t SPRITE_CLUBS_FOUR[];
 | 
			
		||||
extern const uint8_t SPRITE_CLUBS_FIVE[];
 | 
			
		||||
extern const uint8_t SPRITE_CLUBS_SIX[];
 | 
			
		||||
extern const uint8_t SPRITE_CLUBS_SEVEN[];
 | 
			
		||||
extern const uint8_t SPRITE_CLUBS_EIGHT[];
 | 
			
		||||
extern const uint8_t SPRITE_CLUBS_NINE[];
 | 
			
		||||
extern const uint8_t SPRITE_CLUBS_TEN[];
 | 
			
		||||
 | 
			
		||||
inline void spriteCardsBuffer();
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -8,7 +8,7 @@
 | 
			
		||||
#include "spritefont.h"
 | 
			
		||||
 | 
			
		||||
inline void spriteFontBuffer() {
 | 
			
		||||
  spriteBuffer(SPRITE_FONT_VRAM_START, FONT_IMAGE_TILES, FONT_IMAGE);
 | 
			
		||||
  spriteBufferHigh(SPRITE_FONT_VRAM_START, FONT_IMAGE_TILES, FONT_IMAGE);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline uint8_t spriteFontTileFromChar(char character) {
 | 
			
		||||
 
 | 
			
		||||
@@ -10,10 +10,11 @@
 | 
			
		||||
#include "FONT.h"
 | 
			
		||||
#include "sprites.h"
 | 
			
		||||
#include "spritetileset.h"
 | 
			
		||||
#include "spriteborder.h"
 | 
			
		||||
 | 
			
		||||
#define SPRITE_FONT_FIRST_CHARACTER 33
 | 
			
		||||
 | 
			
		||||
#define SPRITE_FONT_VRAM_START SPRITE_TILESET_VRAM_END
 | 
			
		||||
#define SPRITE_FONT_VRAM_START SPRITE_BORDER_VRAM_END
 | 
			
		||||
#define SPRITE_FONT_VRAM_END SPRITE_FONT_VRAM_START + FONT_IMAGE_TILES
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 
 | 
			
		||||
@@ -7,6 +7,41 @@
 | 
			
		||||
 | 
			
		||||
#include "sprites.h"
 | 
			
		||||
 | 
			
		||||
inline void spriteBuffer(uint8_t position, uint8_t length, uint8_t *tiles) {
 | 
			
		||||
  set_bkg_data(position, length, tiles);
 | 
			
		||||
inline void spriteBufferLow(uint8_t position, uint8_t length, uint8_t *tiles) {
 | 
			
		||||
  uint16_t vramPosition = SPRITE_VRAM_LOW;
 | 
			
		||||
  vramPosition += position * SPRITE_VRAM_SIZE_PER_TILE;
 | 
			
		||||
  vmemcpy(vramPosition, tiles, SPRITE_VRAM_SIZE_PER_TILE * length);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void spriteBufferHigh(uint8_t position, uint8_t length, uint8_t *tiles) {
 | 
			
		||||
  uint16_t vramPosition = SPRITE_VRAM_HIGH;
 | 
			
		||||
  vramPosition += position * SPRITE_VRAM_SIZE_PER_TILE;
 | 
			
		||||
  vramPosition += SPRITE_VRAM_DISTANCE_BETWEEN_LOW_AND_HIGH;
 | 
			
		||||
  vmemcpy(vramPosition, tiles, SPRITE_VRAM_SIZE_PER_TILE * length);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void spriteBufferBackgroundLow(
 | 
			
		||||
  uint8_t x, uint8_t y,
 | 
			
		||||
  uint8_t width, uint8_t height,
 | 
			
		||||
  uint8_t *tiles
 | 
			
		||||
) {
 | 
			
		||||
  set_tiles(
 | 
			
		||||
    x, y,
 | 
			
		||||
    height, width,// Bug?
 | 
			
		||||
    SPRITE_VRAM_TILEMAP_LOW,
 | 
			
		||||
    tiles
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
inline void spriteBufferBackgroundHigh(
 | 
			
		||||
  uint8_t x, uint8_t y,
 | 
			
		||||
  uint8_t width, uint8_t height,
 | 
			
		||||
  uint8_t *tiles
 | 
			
		||||
) {
 | 
			
		||||
  set_tiles(
 | 
			
		||||
    x, y,
 | 
			
		||||
    height, width,// Bug?
 | 
			
		||||
    SPRITE_VRAM_TILEMAP_LOW,
 | 
			
		||||
    tiles
 | 
			
		||||
  );
 | 
			
		||||
}
 | 
			
		||||
@@ -8,11 +8,38 @@
 | 
			
		||||
#pragma once
 | 
			
		||||
#include "../libs.h"
 | 
			
		||||
 | 
			
		||||
#define SPRITE_VRAM_LOW 0x8000
 | 
			
		||||
#define SPRITE_VRAM_HIGH 0x8800
 | 
			
		||||
#define SPRITE_VRAM_DISTANCE_BETWEEN_LOW_AND_HIGH 0x0800
 | 
			
		||||
#define SPRITE_VRAM_SIZE_PER_TILE 0x10
 | 
			
		||||
#define SPRITE_VRAM_TILEMAP_LOW 0x9800
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Buffer tiles data into VRAM
 | 
			
		||||
 * Buffer tiles data into VRAM in the HIGH space (The upper bounds of VRAM)
 | 
			
		||||
 * 
 | 
			
		||||
 * @param position Position in VRAM to buffer in to. 
 | 
			
		||||
 * @param length Length of the data being buffered (count of tiles).
 | 
			
		||||
 * @param tiles Pointer to array of tiles to be bufffered.
 | 
			
		||||
 */
 | 
			
		||||
inline void spriteBuffer(uint8_t position, uint8_t length, uint8_t *tiles);
 | 
			
		||||
inline void spriteBufferHigh(uint8_t position, uint8_t length, uint8_t *tiles);
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Buffer tiles data into VRAM in the LOW space (The start of VRAM)
 | 
			
		||||
 * 
 | 
			
		||||
 * @param position Position in VRAM to buffer in to. 
 | 
			
		||||
 * @param length Length of the data being buffered (count of tiles).
 | 
			
		||||
 * @param tiles Pointer to array of tiles to be bufffered.
 | 
			
		||||
 */
 | 
			
		||||
inline void spriteBufferLow(uint8_t position, uint8_t length, uint8_t *tiles);
 | 
			
		||||
 | 
			
		||||
inline void spriteBufferBackgroundLow(
 | 
			
		||||
  uint8_t x, uint8_t y,
 | 
			
		||||
  uint8_t width, uint8_t height,
 | 
			
		||||
  uint8_t *tiles
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
inline void spriteBufferBackgroundHigh(
 | 
			
		||||
  uint8_t x, uint8_t y,
 | 
			
		||||
  uint8_t width, uint8_t height,
 | 
			
		||||
  uint8_t *tiles
 | 
			
		||||
);
 | 
			
		||||
@@ -8,5 +8,6 @@
 | 
			
		||||
#include "spritetileset.h"
 | 
			
		||||
 | 
			
		||||
void spriteTilesetBuffer() {
 | 
			
		||||
  spriteBuffer(SPRITE_TILESET_VRAM_START, TILESET_IMAGE_TILES, TILESET_IMAGE);
 | 
			
		||||
  spriteBufferLow(SPRITE_TILESET_VRAM_START_LOW, TILESET_IMAGE_TILES, TILESET_IMAGE);
 | 
			
		||||
  spriteBufferHigh(SPRITE_TILESET_VRAM_START_HIGH, TILESET_IMAGE_TILES, TILESET_IMAGE);
 | 
			
		||||
}
 | 
			
		||||
@@ -10,18 +10,31 @@
 | 
			
		||||
#include "TILESET.h"
 | 
			
		||||
#include "sprites.h"
 | 
			
		||||
 | 
			
		||||
#define SPRITE_TILESET_VRAM_START 0x00
 | 
			
		||||
#define SPRITE_TILESET_VRAM_END SPRITE_TILESET_VRAM_START + TILESET_IMAGE_TILES
 | 
			
		||||
#define SPRITE_TILESET_VRAM_START_LOW 0x00
 | 
			
		||||
#define SPRITE_TILESET_VRAM_END_LOW SPRITE_TILESET_VRAM_START_LOW + TILESET_IMAGE_TILES
 | 
			
		||||
 | 
			
		||||
#define SPRITE_TILESET_TILE_0 SPRITE_TILESET_VRAM_START + 0x00
 | 
			
		||||
#define SPRITE_TILESET_TILE_1 SPRITE_TILESET_VRAM_START + 0x01
 | 
			
		||||
#define SPRITE_TILESET_TILE_2 SPRITE_TILESET_VRAM_START + 0x02
 | 
			
		||||
#define SPRITE_TILESET_TILE_3 SPRITE_TILESET_VRAM_START + 0x03
 | 
			
		||||
#define SPRITE_TILESET_VRAM_START_HIGH 0x00
 | 
			
		||||
#define SPRITE_TILESET_VRAM_END_HIGH SPRITE_TILESET_VRAM_START_HIGH + TILESET_IMAGE_TILES
 | 
			
		||||
 | 
			
		||||
#define SPRITE_TILESET_WHITE SPRITE_TILESET_TILE_0
 | 
			
		||||
#define SPRITE_TILESET_BLACK SPRITE_TILESET_TILE_3
 | 
			
		||||
#define SPRITE_TILESET_LIGHT SPRITE_TILESET_TILE_1
 | 
			
		||||
#define SPRITE_TILESET_DARK SPRITE_TILESET_TILE_2
 | 
			
		||||
#define SPRITE_TILESET_TILE_0_LOW SPRITE_TILESET_VRAM_START_LOW + 0x00
 | 
			
		||||
#define SPRITE_TILESET_TILE_1_LOW SPRITE_TILESET_VRAM_START_LOW + 0x01
 | 
			
		||||
#define SPRITE_TILESET_TILE_2_LOW SPRITE_TILESET_VRAM_START_LOW + 0x02
 | 
			
		||||
#define SPRITE_TILESET_TILE_3_LOW SPRITE_TILESET_VRAM_START_LOW + 0x03
 | 
			
		||||
 | 
			
		||||
#define SPRITE_TILESET_TILE_0_HIGH SPRITE_TILESET_VRAM_START_HIGH + 0x00
 | 
			
		||||
#define SPRITE_TILESET_TILE_1_HIGH SPRITE_TILESET_VRAM_START_HIGH + 0x01
 | 
			
		||||
#define SPRITE_TILESET_TILE_2_HIGH SPRITE_TILESET_VRAM_START_HIGH + 0x02
 | 
			
		||||
#define SPRITE_TILESET_TILE_3_HIGH SPRITE_TILESET_VRAM_START_HIGH + 0x03
 | 
			
		||||
 | 
			
		||||
#define SPRITE_TILESET_WHITE_LOW SPRITE_TILESET_TILE_0_LOW
 | 
			
		||||
#define SPRITE_TILESET_BLACK_LOW SPRITE_TILESET_TILE_3_LOW
 | 
			
		||||
#define SPRITE_TILESET_LIGHT_LOW SPRITE_TILESET_TILE_1_LOW
 | 
			
		||||
#define SPRITE_TILESET_DARK_LOW SPRITE_TILESET_TILE_2_LOW
 | 
			
		||||
 | 
			
		||||
#define SPRITE_TILESET_WHITE_HIGH SPRITE_TILESET_TILE_0_HIGH
 | 
			
		||||
#define SPRITE_TILESET_BLACK_HIGH SPRITE_TILESET_TILE_3_HIGH
 | 
			
		||||
#define SPRITE_TILESET_LIGHT_HIGH SPRITE_TILESET_TILE_1_HIGH
 | 
			
		||||
#define SPRITE_TILESET_DARK_HIGH SPRITE_TILESET_TILE_2_HIGH
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
// Shades are mapped where each set of 4 colors is mapped to two bits that will
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user