Working with cards and vblanking

This commit is contained in:
2022-05-08 20:11:52 -07:00
parent 4ff43893d0
commit a6dbca6a90
20 changed files with 665 additions and 84 deletions

View File

@@ -186,8 +186,8 @@ void main() {
pokerInit(); pokerInit();
// Fill screen white // Fill screen white
for(j = 0; j < GB_BACKGROUND_COLUMNS * GB_BACKGROUND_ROWS; j++) filled[j] = TILESET_WHITE; for(j = 0; j < GB_BACKGROUND_COLUMNS * GB_BACKGROUND_ROWS; j++) filled[j] = SPRITE_TILESET_BLACK_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; SCX_REG = 0x00;
SCY_REG = 0x00; SCY_REG = 0x00;
@@ -198,7 +198,7 @@ void main() {
cardTiles, cardTiles,
CARD_HEARTS_TWO CARD_HEARTS_TWO
); );
set_bkg_tiles(0x00, 0x00, 4, 6, cardTiles); // set_bkg_tiles(0x00, 0x00, 4, 6, cardTiles);
// Now turn the screen on // Now turn the screen on
DISPLAY_ON; DISPLAY_ON;
@@ -206,13 +206,15 @@ void main() {
wait_vbl_done(); wait_vbl_done();
// Begin game // Begin game
conversationQueueNext(); // conversationQueueNext();
// Begin the loop // Begin the loop
while(1) { while(1) {
// Perform non-graphical code updates // Perform non-graphical code updates
wait_vbl_done(); wait_vbl_done();
continue;
// Update the input state // Update the input state
INPUT_LAST = INPUT_STATE; INPUT_LAST = INPUT_STATE;
INPUT_STATE = joypad(); 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.

View File

@@ -8,7 +8,8 @@
"scripts": { "scripts": {
"clean": "node ./scripts/clean", "clean": "node ./scripts/clean",
"build": "npm run clean && node ./scripts/build", "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": { "dependencies": {
"pngjs": "^6.0.0", "pngjs": "^6.0.0",

View File

@@ -10,8 +10,8 @@ const {
const getPixelValue = (pixel) => { const getPixelValue = (pixel) => {
if(pixel.g === 188) return 0; if(pixel.g === 188) return 0;
if(pixel.g === 172) return 1; if(pixel.g === 172 || pixel.g === 145) return 1;
if(pixel.g === 98 || pixel.g === 145) return 2; if(pixel.g === 98) return 2;
if(pixel.g === 56) return 3; if(pixel.g === 56) return 3;
if(pixel.a === 0) return 0; if(pixel.a === 0) return 0;
throw new Error(); throw new Error();

View File

@@ -44,7 +44,7 @@ void questionBoxSetOptions(char *title, char **options, uint8_t count) {
// Repurpose old array and draw arrow // Repurpose old array and draw arrow
spaces[0] = spriteFontTileFromChar(QUESTION_BOX_CURSOR); 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() { inline void questionBoxUpdate() {
@@ -76,7 +76,7 @@ inline void questionBoxUpdate() {
} else { } else {
tiles[0] = spriteFontTileFromChar(' '); tiles[0] = spriteFontTileFromChar(' ');
} }
set_bkg_tiles( spriteBufferBackgroundHigh(
0x01 + ((i % 0x02) * QUESTION_BOX_QUESTION_SPACES), 0x01 + ((i % 0x02) * QUESTION_BOX_QUESTION_SPACES),
TEXTBOX_WIN_Y + 0x02 + (i / 0x02), TEXTBOX_WIN_Y + 0x02 + (i / 0x02),
1, 1, 1, 1,

View File

@@ -83,10 +83,10 @@ inline void textboxFillBlank() {
uint8_t tiles[TEXTBOX_WIDTH_IN_TILES * TEXTBOX_HEIGHT_IN_TILES]; uint8_t tiles[TEXTBOX_WIDTH_IN_TILES * TEXTBOX_HEIGHT_IN_TILES];
spriteBorderBufferEdges( 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, 0x00, TEXTBOX_WIN_Y,
TEXTBOX_WIDTH_IN_TILES, TEXTBOX_HEIGHT_IN_TILES, TEXTBOX_WIDTH_IN_TILES, TEXTBOX_HEIGHT_IN_TILES,
tiles tiles
@@ -129,7 +129,7 @@ inline void conversationTextboxUpdate() {
} else { } else {
tile = spriteFontTileFromChar(c); tile = spriteFontTileFromChar(c);
set_bkg_tiles( spriteBufferBackgroundHigh(
0x01 + (TEXTBOX_SCROLL % TEXTBOX_CHARS_PER_ROW), 0x01 + (TEXTBOX_SCROLL % TEXTBOX_CHARS_PER_ROW),
TEXTBOX_WIN_Y + 0x01 + (TEXTBOX_SCROLL / TEXTBOX_CHARS_PER_ROW), TEXTBOX_WIN_Y + 0x01 + (TEXTBOX_SCROLL / TEXTBOX_CHARS_PER_ROW),
1, 1, 1, 1,

View File

@@ -12,4 +12,7 @@
#include <stdio.h> #include <stdio.h>
#include <stdbool.h> #include <stdbool.h>
#include <rand.h> #include <rand.h>
#include <string.h> #include <string.h>
#define TILE_WIDTH 8
#define TILE_HEIGHT 8

View File

@@ -7,14 +7,36 @@
#include "main.h" #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() { void main() {
int16_t j; int16_t j;
uint8_t filled[GB_BACKGROUND_COLUMNS*GB_BACKGROUND_ROWS]; uint8_t filled[GB_BACKGROUND_COLUMNS*GB_BACKGROUND_ROWS];
// Set up the GAMEBOY's registers. // Set up the GAMEBOY's registers.
disable_interrupts(); disable_interrupts();
DISPLAY_OFF;
LCDC_REG = LCDCF_OFF | LCDCF_BG8000 | LCDCF_BG9800 | LCDCF_BGON; // 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 // Set the background color palette register
BGP_REG = OBP0_REG = OBP1_REG = 0xE4U; BGP_REG = OBP0_REG = OBP1_REG = 0xE4U;
@@ -24,9 +46,9 @@ void main() {
// Init things // Init things
spriteTilesetBuffer(); spriteTilesetBuffer();
spriteCardsBuffer();
spriteFontBuffer(); spriteFontBuffer();
spriteBorderBuffer(); spriteBorderBuffer();
spriteCardsBuffer();
conversationTextboxInit(); conversationTextboxInit();
conversationQueueInit(); conversationQueueInit();
@@ -34,16 +56,16 @@ void main() {
// Fill screen white // Fill screen white
for(j = 0; j < GB_BACKGROUND_COLUMNS * GB_BACKGROUND_ROWS; j++) { 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; SCX_REG = 0x00;
SCY_REG = 0x00; SCY_REG = 0x00;
// Card Test // Card Test
uint8_t cardTiles[SPRITE_CARD_TILE_COUNT]; uint8_t cardTiles[SPRITE_CARD_TILE_COUNT];
spriteCardBufferTiles(cardTiles, CARD_HEARTS_TWO); 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 // Now turn the screen on
DISPLAY_ON; DISPLAY_ON;

View File

@@ -8,7 +8,7 @@
#include "spriteborder.h" #include "spriteborder.h"
inline void spriteBorderBuffer() { 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( inline void spriteBorderBufferEdges(

View File

@@ -9,9 +9,9 @@
#include "../libs.h" #include "../libs.h"
#include "sprites.h" #include "sprites.h"
#include "BORDER.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_VRAM_END SPRITE_BORDER_VRAM_START + BORDER_IMAGE_TILES
#define SPRITE_BORDER_TOP_LEFT 0x00 #define SPRITE_BORDER_TOP_LEFT 0x00

View File

@@ -10,22 +10,374 @@
const uint8_t SPRITE_HEARTS_ACE[SPRITE_CARD_TILE_COUNT] = { 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_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_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_HEARTS_BIG_TOP_LEFT, SPRITE_CARD_HEARTS_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_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_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() { 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) { inline uint8_t * spriteCardsForCard(uint8_t card) {
return SPRITE_HEARTS_ACE; return SPRITE_CLUBS_ACE;
} }
inline void spriteCardBufferTiles(uint8_t *buffer, uint8_t card) { inline void spriteCardBufferTiles(uint8_t *buffer, uint8_t card) {

View File

@@ -11,55 +11,179 @@
#include "../poker/card.h" #include "../poker/card.h"
#include "spritetileset.h" #include "spritetileset.h"
#include "sprites.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_TOP SPRITE_CARD_VRAM_START + 0
#define SPRITE_CARD_ACE_BOTTOM SPRITE_CARD_ACE_TOP/* ref */ #define SPRITE_CARD_TWO_TOP SPRITE_CARD_ACE_TOP + 1
#define SPRITE_CARD_TWO_TOP SPRITE_CARD_VRAM_START + 1 #define SPRITE_CARD_THREE_TOP SPRITE_CARD_ACE_TOP + 2
#define SPRITE_CARD_TWO_BOTTOM SPRITE_CARD_TWO_TOP/* ref */ #define SPRITE_CARD_FOUR_TOP SPRITE_CARD_ACE_TOP + 3
#define SPRITE_CARD_THREE_TOP SPRITE_CARD_VRAM_START + 2 #define SPRITE_CARD_FIVE_TOP SPRITE_CARD_ACE_TOP + 4
#define SPRITE_CARD_THREE_BOTTOM SPRITE_CARD_THREE_TOP/* ref */ #define SPRITE_CARD_SIX_TOP SPRITE_CARD_ACE_TOP + 5
#define SPRITE_CARD_FOUR_TOP SPRITE_CARD_VRAM_START + 3 #define SPRITE_CARD_SEVEN_TOP SPRITE_CARD_ACE_TOP + 6
#define SPRITE_CARD_FOUR_BOTTOM SPRITE_CARD_THREE_TOP/* ref */ #define SPRITE_CARD_EIGHT_TOP SPRITE_CARD_ACE_TOP + 7
#define SPRITE_CARD_FIVE_TOP SPRITE_CARD_VRAM_START + 4 #define SPRITE_CARD_NINE_TOP SPRITE_CARD_ACE_TOP + 8
#define SPRITE_CARD_FIVE_BOTTOM SPRITE_CARD_FIVE_TOP/* ref */ #define SPRITE_CARD_TEN_TOP SPRITE_CARD_ACE_TOP + 9
#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_TOP SPRITE_CARD_VRAM_START + 11 // Numbers (flipped)
#define SPRITE_CARD_TOP_RIGHT SPRITE_CARD_VRAM_START + 10 #define SPRITE_CARD_ACE_BOTTOM SPRITE_CARD_VRAM_START + 16
#define SPRITE_CARD_LEFT SPRITE_CARD_TOP/* ref */ #define SPRITE_CARD_TWO_BOTTOM SPRITE_CARD_ACE_BOTTOM + 1
#define SPRITE_CARD_RIGHT SPRITE_CARD_TOP/* ref */ #define SPRITE_CARD_THREE_BOTTOM SPRITE_CARD_ACE_BOTTOM + 2
#define SPRITE_CARD_BOTTOM_LEFT SPRITE_CARD_TOP_RIGHT/* ref */ #define SPRITE_CARD_FOUR_BOTTOM SPRITE_CARD_ACE_BOTTOM + 3
#define SPRITE_CARD_BOTTOM_RIGHT SPRITE_CARD_TOP_RIGHT/* ref */ #define SPRITE_CARD_FIVE_BOTTOM SPRITE_CARD_ACE_BOTTOM + 4
#define SPRITE_CARD_BOTTOM SPRITE_CARD_TOP/* ref */ #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 // Edges
#define SPRITE_CARD_DIAMOND_BIG_TOP_RIGHT SPRITE_CARD_DIAMOND_BIG_TOP_LEFT/* ref */ #define SPRITE_CARD_TOP SPRITE_CARD_VRAM_START + 10
#define SPRITE_CARD_DIAMOND_BIG_BOTTOM_LEFT SPRITE_CARD_DIAMOND_BIG_TOP_LEFT/* ref */ #define SPRITE_CARD_BOTTOM SPRITE_CARD_TOP + 1
#define SPRITE_CARD_DIAMOND_BIG_BOTTOM_RIGHT SPRITE_CARD_DIAMOND_BIG_TOP_LEFT/* ref */ #define SPRITE_CARD_RIGHT SPRITE_CARD_BOTTOM + 1
#define SPRITE_CARD_HEART_BIG_TOP_LEFT SPRITE_CARD_VRAM_START + 13 #define SPRITE_CARD_LEFT SPRITE_CARD_RIGHT + 1
#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
// 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_WIDTH 4
#define SPRITE_CARD_HEIGHT 6 #define SPRITE_CARD_HEIGHT 6
#define SPRITE_CARD_TILE_COUNT (SPRITE_CARD_WIDTH * SPRITE_CARD_HEIGHT) #define SPRITE_CARD_TILE_COUNT (SPRITE_CARD_WIDTH * SPRITE_CARD_HEIGHT)
extern const uint8_t SPRITE_HEARTS_ACE[]; 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(); inline void spriteCardsBuffer();

View File

@@ -8,7 +8,7 @@
#include "spritefont.h" #include "spritefont.h"
inline void spriteFontBuffer() { 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) { inline uint8_t spriteFontTileFromChar(char character) {

View File

@@ -10,10 +10,11 @@
#include "FONT.h" #include "FONT.h"
#include "sprites.h" #include "sprites.h"
#include "spritetileset.h" #include "spritetileset.h"
#include "spriteborder.h"
#define SPRITE_FONT_FIRST_CHARACTER 33 #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 #define SPRITE_FONT_VRAM_END SPRITE_FONT_VRAM_START + FONT_IMAGE_TILES
/** /**

View File

@@ -7,6 +7,41 @@
#include "sprites.h" #include "sprites.h"
inline void spriteBuffer(uint8_t position, uint8_t length, uint8_t *tiles) { inline void spriteBufferLow(uint8_t position, uint8_t length, uint8_t *tiles) {
set_bkg_data(position, length, 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
);
} }

View File

@@ -8,11 +8,38 @@
#pragma once #pragma once
#include "../libs.h" #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 position Position in VRAM to buffer in to.
* @param length Length of the data being buffered (count of tiles). * @param length Length of the data being buffered (count of tiles).
* @param tiles Pointer to array of tiles to be bufffered. * @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
);

View File

@@ -8,5 +8,6 @@
#include "spritetileset.h" #include "spritetileset.h"
void spriteTilesetBuffer() { 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);
} }

View File

@@ -10,18 +10,31 @@
#include "TILESET.h" #include "TILESET.h"
#include "sprites.h" #include "sprites.h"
#define SPRITE_TILESET_VRAM_START 0x00 #define SPRITE_TILESET_VRAM_START_LOW 0x00
#define SPRITE_TILESET_VRAM_END SPRITE_TILESET_VRAM_START + TILESET_IMAGE_TILES #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_VRAM_START_HIGH 0x00
#define SPRITE_TILESET_TILE_1 SPRITE_TILESET_VRAM_START + 0x01 #define SPRITE_TILESET_VRAM_END_HIGH SPRITE_TILESET_VRAM_START_HIGH + TILESET_IMAGE_TILES
#define SPRITE_TILESET_TILE_2 SPRITE_TILESET_VRAM_START + 0x02
#define SPRITE_TILESET_TILE_3 SPRITE_TILESET_VRAM_START + 0x03
#define SPRITE_TILESET_WHITE SPRITE_TILESET_TILE_0 #define SPRITE_TILESET_TILE_0_LOW SPRITE_TILESET_VRAM_START_LOW + 0x00
#define SPRITE_TILESET_BLACK SPRITE_TILESET_TILE_3 #define SPRITE_TILESET_TILE_1_LOW SPRITE_TILESET_VRAM_START_LOW + 0x01
#define SPRITE_TILESET_LIGHT SPRITE_TILESET_TILE_1 #define SPRITE_TILESET_TILE_2_LOW SPRITE_TILESET_VRAM_START_LOW + 0x02
#define SPRITE_TILESET_DARK SPRITE_TILESET_TILE_2 #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 // Shades are mapped where each set of 4 colors is mapped to two bits that will