diff --git a/archive/main.c b/archive/main.c index a19f019..62bd6cf 100644 --- a/archive/main.c +++ b/archive/main.c @@ -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(); diff --git a/assets/images/cards_tiles.png b/assets/images/cards_tiles.png index c3101c5..eec49ae 100644 Binary files a/assets/images/cards_tiles.png and b/assets/images/cards_tiles.png differ diff --git a/assets/images/cards_tiles.pxo b/assets/images/cards_tiles.pxo index 8d17d00..85b7d2c 100644 Binary files a/assets/images/cards_tiles.pxo and b/assets/images/cards_tiles.pxo differ diff --git a/assets/images_noconvert/cards.pxo b/assets/images_noconvert/cards.pxo index 4438902..23d582d 100644 Binary files a/assets/images_noconvert/cards.pxo and b/assets/images_noconvert/cards.pxo differ diff --git a/package.json b/package.json index 3a2c97d..7a7d874 100644 --- a/package.json +++ b/package.json @@ -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", diff --git a/scripts/png2gb.js b/scripts/png2gb.js index 7c6aaa0..6e26d1e 100644 --- a/scripts/png2gb.js +++ b/scripts/png2gb.js @@ -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(); diff --git a/src/conversation/questionbox.c b/src/conversation/questionbox.c index c5eccc3..67287a0 100644 --- a/src/conversation/questionbox.c +++ b/src/conversation/questionbox.c @@ -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, diff --git a/src/conversation/textbox.c b/src/conversation/textbox.c index 634ea11..c623b19 100644 --- a/src/conversation/textbox.c +++ b/src/conversation/textbox.c @@ -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, diff --git a/src/libs.h b/src/libs.h index 2c60d0e..9364fd8 100644 --- a/src/libs.h +++ b/src/libs.h @@ -12,4 +12,7 @@ #include #include #include -#include \ No newline at end of file +#include + +#define TILE_WIDTH 8 +#define TILE_HEIGHT 8 \ No newline at end of file diff --git a/src/main.c b/src/main.c index 55247e5..023a1e9 100644 --- a/src/main.c +++ b/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(); - 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 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; diff --git a/src/sprites/spriteborder.c b/src/sprites/spriteborder.c index a3913b6..cd6f335 100644 --- a/src/sprites/spriteborder.c +++ b/src/sprites/spriteborder.c @@ -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( diff --git a/src/sprites/spriteborder.h b/src/sprites/spriteborder.h index 7daa9d4..23a737e 100644 --- a/src/sprites/spriteborder.h +++ b/src/sprites/spriteborder.h @@ -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 diff --git a/src/sprites/spritecards.c b/src/sprites/spritecards.c index d41cac3..25d3be3 100644 --- a/src/sprites/spritecards.c +++ b/src/sprites/spritecards.c @@ -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) { diff --git a/src/sprites/spritecards.h b/src/sprites/spritecards.h index 6a269ff..33ae4db 100644 --- a/src/sprites/spritecards.h +++ b/src/sprites/spritecards.h @@ -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(); diff --git a/src/sprites/spritefont.c b/src/sprites/spritefont.c index b2ccbe2..f7d635e 100644 --- a/src/sprites/spritefont.c +++ b/src/sprites/spritefont.c @@ -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) { diff --git a/src/sprites/spritefont.h b/src/sprites/spritefont.h index 0a4a69f..cd44161 100644 --- a/src/sprites/spritefont.h +++ b/src/sprites/spritefont.h @@ -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 /** diff --git a/src/sprites/sprites.c b/src/sprites/sprites.c index 13834ba..ecb7ce6 100644 --- a/src/sprites/sprites.c +++ b/src/sprites/sprites.c @@ -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 + ); } \ No newline at end of file diff --git a/src/sprites/sprites.h b/src/sprites/sprites.h index 7247de8..f6dc7c9 100644 --- a/src/sprites/sprites.h +++ b/src/sprites/sprites.h @@ -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); \ No newline at end of file +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 +); \ No newline at end of file diff --git a/src/sprites/spritetileset.c b/src/sprites/spritetileset.c index c42f74b..41dfe79 100644 --- a/src/sprites/spritetileset.c +++ b/src/sprites/spritetileset.c @@ -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); } \ No newline at end of file diff --git a/src/sprites/spritetileset.h b/src/sprites/spritetileset.h index ada36f1..cd89306 100644 --- a/src/sprites/spritetileset.h +++ b/src/sprites/spritetileset.h @@ -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