diff --git a/Makefile b/Makefile index 3e767ed..e9c5027 100644 --- a/Makefile +++ b/Makefile @@ -11,7 +11,7 @@ LIBS=clib-6502.a ASM_SRCS = tk2k_startup.s C_SRCS = main.c monitor_subroutines.c utility.c \ game_graphics.c game_logic.c input.c \ - line_data.c + line_data.c tiles.c # Object files OBJS = $(ASM_SRCS:%.s=%.o) $(C_SRCS:%.c=%.o) diff --git a/graphics/full_map.png b/graphics/full_map.png new file mode 100644 index 0000000..bcc3c41 Binary files /dev/null and b/graphics/full_map.png differ diff --git a/graphics/tile_0.aseprite b/graphics/tile_0.aseprite deleted file mode 100644 index 8a6d3c6..0000000 Binary files a/graphics/tile_0.aseprite and /dev/null differ diff --git a/graphics/tile_1.png b/graphics/tile_1.png new file mode 100644 index 0000000..6e4b046 Binary files /dev/null and b/graphics/tile_1.png differ diff --git a/graphics/tile_10.png b/graphics/tile_10.png new file mode 100644 index 0000000..446446d Binary files /dev/null and b/graphics/tile_10.png differ diff --git a/graphics/tile_11.png b/graphics/tile_11.png new file mode 100644 index 0000000..7e8e8e2 Binary files /dev/null and b/graphics/tile_11.png differ diff --git a/graphics/tile_2.png b/graphics/tile_2.png new file mode 100644 index 0000000..2f98d10 Binary files /dev/null and b/graphics/tile_2.png differ diff --git a/graphics/tile_3.png b/graphics/tile_3.png new file mode 100644 index 0000000..c3fccd7 Binary files /dev/null and b/graphics/tile_3.png differ diff --git a/graphics/tile_4.png b/graphics/tile_4.png new file mode 100644 index 0000000..b4aec72 Binary files /dev/null and b/graphics/tile_4.png differ diff --git a/graphics/tile_5.png b/graphics/tile_5.png new file mode 100644 index 0000000..15b8394 Binary files /dev/null and b/graphics/tile_5.png differ diff --git a/graphics/tile_6.png b/graphics/tile_6.png new file mode 100644 index 0000000..692cd99 Binary files /dev/null and b/graphics/tile_6.png differ diff --git a/graphics/tile_7.png b/graphics/tile_7.png new file mode 100644 index 0000000..7e304bd Binary files /dev/null and b/graphics/tile_7.png differ diff --git a/graphics/tile_8.png b/graphics/tile_8.png new file mode 100644 index 0000000..fc64992 Binary files /dev/null and b/graphics/tile_8.png differ diff --git a/graphics/tile_9.png b/graphics/tile_9.png new file mode 100644 index 0000000..f53924b Binary files /dev/null and b/graphics/tile_9.png differ diff --git a/src/game_graphics.c b/src/game_graphics.c index 51205c7..8fe311a 100644 --- a/src/game_graphics.c +++ b/src/game_graphics.c @@ -7,11 +7,12 @@ #include "mem_registers.h" #include "line_data.h" #include "game_logic.h" +#include "tiles.h" #define SCREEN_WIDTH_B 40 #define TILE_SIDE 35 -#define TOP_OFFSET 14 // Top is offset by 14 lines +#define TOP_OFFSET 7 #define LEFT_OFFSET_B 1 // Left is offset by 1 bytes (7 pixels) static uint8_t *front_buf = (uint8_t*)DISPLAY_PAGE_1; @@ -28,15 +29,15 @@ void draw_game_background(void) { uint8_t* buf = (uint8_t*)DISPLAY_PAGE_1; // Horizontal borders - for(uint8_t col = 0; col < GRID_SIDE * (TILE_SIDE/7); col++) { + for(uint8_t col = 0; col < (GRID_SIDE * (TILE_SIDE/7)) + 1; col++) { buf[line_offset_map[TOP_OFFSET - 1] + col + LEFT_OFFSET_B] = 0x7F; - buf[line_offset_map[TOP_OFFSET + (TILE_SIDE * GRID_SIDE) + 1] + col + LEFT_OFFSET_B] = 0x7F; + buf[line_offset_map[TOP_OFFSET + (TILE_SIDE * GRID_SIDE) + 7] + col + LEFT_OFFSET_B] = 0x7F; } // Vertical borders - for(uint8_t row = 0; row < (TILE_SIDE * GRID_SIDE) + 1; row++) { + for(uint8_t row = 0; row < (TILE_SIDE * GRID_SIDE) + 7; row++) { buf[line_offset_map[row + TOP_OFFSET] + LEFT_OFFSET_B - 1] = 0x40; - buf[line_offset_map[row + TOP_OFFSET] + LEFT_OFFSET_B + (GRID_SIDE * (TILE_SIDE/7))] = 0x01; + buf[line_offset_map[row + TOP_OFFSET] + LEFT_OFFSET_B + (GRID_SIDE * (TILE_SIDE/7)) + 1] = 0x01; } // Copy the data from display page 1 to 2 @@ -48,15 +49,19 @@ void draw_tiles(void) { uint8_t* grid = get_front_grid(); // Clear the grid so we'll be able to draw the boxes on - clear_box(GRID_SIDE * (TILE_SIDE/7), GRID_SIDE * TILE_SIDE, LEFT_OFFSET_B, TOP_OFFSET + 1, back_buf); + clear_box(GRID_SIDE * (TILE_SIDE/7) + 1, (GRID_SIDE * TILE_SIDE) + 6, LEFT_OFFSET_B, TOP_OFFSET + 1, back_buf); for (uint8_t tile = 0; tile < GRID_SIDE * GRID_SIDE; tile++) { if(grid[tile]) { + const uint8_t *tile_data = tiles + (TILE_WIDTH_BYTES * TILE_HEIGHT * (grid[tile] - 1)); uint8_t col = tile % GRID_SIDE; uint8_t row = tile / GRID_SIDE; - back_buf[line_offset_map[TOP_OFFSET + 15 + row * TILE_SIDE] + LEFT_OFFSET_B + 2 + (col * 5)] = grid[tile]; + for(uint8_t h = 0; h < TILE_HEIGHT; h++) { + memcpy(back_buf + line_offset_map[TOP_OFFSET + 7 + (row * TILE_SIDE) + h] + LEFT_OFFSET_B + 1 + (col * TILE_SIDE/7), + tile_data + (TILE_WIDTH_BYTES * h), TILE_WIDTH_BYTES); + } } } diff --git a/src/tiles.c b/src/tiles.c new file mode 100644 index 0000000..468bbf2 --- /dev/null +++ b/src/tiles.c @@ -0,0 +1,35 @@ +#include + +const uint8_t tiles[] = { + 0x7F, 0x7F, 0x7F, 0x7F, 0x01, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x7F, 0x0F, 0x40, 0x01, 0x7F, 0x3F, 0x40, 0x01, 0x7F, 0x3F, 0x40, 0x01, 0x7F, 0x7F, 0x40, + 0x01, 0x00, 0x78, 0x40, 0x01, 0x00, 0x78, 0x40, 0x01, 0x70, 0x7F, 0x40, 0x01, 0x7C, 0x3F, 0x40, 0x01, 0x7E, 0x3F, 0x40, 0x01, 0x7F, 0x0F, 0x40, 0x01, 0x0F, 0x00, 0x40, 0x01, 0x0F, 0x00, 0x40, 0x01, 0x7F, 0x7F, 0x40, 0x01, 0x7E, 0x7F, 0x40, + 0x01, 0x7E, 0x7F, 0x40, 0x01, 0x78, 0x7F, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x40, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x01, 0x00, 0x00, 0x40, + 0x05, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x40, 0x03, 0x40, 0x01, 0x70, 0x07, 0x40, 0x01, 0x78, 0x0F, 0x40, 0x01, 0x78, 0x0F, 0x40, 0x01, 0x7C, 0x0F, 0x40, 0x01, 0x3E, 0x0F, 0x40, + 0x01, 0x7F, 0x3F, 0x40, 0x01, 0x7F, 0x3F, 0x40, 0x01, 0x7F, 0x3F, 0x40, 0x01, 0x7F, 0x3F, 0x40, 0x01, 0x00, 0x0F, 0x40, 0x01, 0x00, 0x0F, 0x40, 0x01, 0x00, 0x0F, 0x40, 0x01, 0x00, 0x0F, 0x40, 0x01, 0x00, 0x0F, 0x40, 0x01, 0x00, 0x0F, 0x40, + 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x40, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x01, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x40, + 0x05, 0x00, 0x00, 0x50, 0x01, 0x00, 0x00, 0x40, 0x01, 0x78, 0x0F, 0x40, 0x01, 0x7C, 0x1F, 0x40, 0x01, 0x7E, 0x3F, 0x40, 0x01, 0x7F, 0x7F, 0x40, 0x01, 0x0F, 0x70, 0x40, 0x01, 0x0F, 0x70, 0x40, 0x01, 0x7E, 0x7F, 0x40, 0x01, 0x7E, 0x3F, 0x40, + 0x01, 0x7E, 0x3F, 0x40, 0x01, 0x7F, 0x7F, 0x40, 0x01, 0x0F, 0x78, 0x40, 0x01, 0x0F, 0x78, 0x40, 0x01, 0x7F, 0x7F, 0x40, 0x01, 0x7E, 0x3F, 0x40, 0x01, 0x7E, 0x3F, 0x40, 0x01, 0x78, 0x0F, 0x40, 0x01, 0x00, 0x00, 0x40, 0x05, 0x00, 0x00, 0x50, + 0x01, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x40, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x01, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x40, + 0x79, 0x00, 0x7F, 0x4F, 0x79, 0x63, 0x7F, 0x4F, 0x79, 0x67, 0x7F, 0x4F, 0x79, 0x77, 0x7F, 0x4F, 0x01, 0x77, 0x01, 0x40, 0x01, 0x77, 0x01, 0x40, 0x01, 0x77, 0x7F, 0x40, 0x01, 0x77, 0x7F, 0x43, 0x01, 0x77, 0x7F, 0x47, 0x01, 0x77, 0x7F, 0x4F, + 0x01, 0x77, 0x01, 0x4F, 0x01, 0x77, 0x01, 0x4F, 0x01, 0x77, 0x7F, 0x4F, 0x01, 0x67, 0x7F, 0x47, 0x01, 0x67, 0x7F, 0x47, 0x01, 0x07, 0x7F, 0x41, 0x01, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x54, + 0x01, 0x00, 0x00, 0x40, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x01, 0x00, 0x00, 0x40, 0x55, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, + 0x7D, 0x0F, 0x7E, 0x47, 0x7D, 0x1F, 0x7E, 0x4F, 0x7D, 0x3F, 0x7E, 0x5F, 0x01, 0x38, 0x00, 0x5C, 0x01, 0x38, 0x70, 0x5F, 0x79, 0x1F, 0x7C, 0x4F, 0x79, 0x1F, 0x7E, 0x47, 0x79, 0x3F, 0x0E, 0x40, 0x01, 0x38, 0x0E, 0x40, 0x7D, 0x3F, 0x7E, 0x5F, + 0x7D, 0x1F, 0x7C, 0x5F, 0x7D, 0x0F, 0x78, 0x5F, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x40, 0x55, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x40, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x01, 0x00, 0x00, 0x40, 0x55, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x61, 0x7F, 0x60, 0x41, 0x71, 0x7F, 0x70, 0x43, + 0x79, 0x7F, 0x78, 0x43, 0x39, 0x00, 0x5C, 0x43, 0x39, 0x00, 0x7E, 0x4F, 0x39, 0x1F, 0x7E, 0x4F, 0x39, 0x3F, 0x7E, 0x4F, 0x39, 0x7F, 0x40, 0x43, 0x39, 0x70, 0x40, 0x43, 0x79, 0x7F, 0x40, 0x43, 0x71, 0x3F, 0x40, 0x43, 0x61, 0x1F, 0x40, 0x43, + 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x15, 0x00, 0x00, 0x54, 0x01, 0x00, 0x00, 0x40, 0x55, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x40, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x01, 0x00, 0x00, 0x40, + 0x55, 0x02, 0x20, 0x55, 0x01, 0x00, 0x00, 0x40, 0x55, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x39, 0x7E, 0x71, 0x47, 0x79, 0x7E, 0x7B, 0x4F, + 0x61, 0x00, 0x1B, 0x4C, 0x61, 0x7C, 0x1B, 0x4C, 0x61, 0x7E, 0x71, 0x47, 0x61, 0x06, 0x78, 0x4F, 0x61, 0x06, 0x18, 0x4C, 0x61, 0x7E, 0x7B, 0x4F, 0x61, 0x7C, 0x73, 0x47, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, + 0x01, 0x00, 0x00, 0x40, 0x55, 0x00, 0x00, 0x55, 0x01, 0x00, 0x00, 0x40, 0x55, 0x02, 0x20, 0x55, 0x01, 0x00, 0x00, 0x40, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x01, 0x00, 0x00, 0x40, 0x55, 0x02, 0x20, 0x55, 0x01, 0x00, 0x00, 0x40, + 0x55, 0x02, 0x20, 0x55, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x7F, 0x79, 0x4F, 0x7F, 0x7F, 0x7B, 0x6F, 0x7F, 0x01, 0x1B, 0x60, 0x40, 0x7D, 0x7B, 0x67, 0x40, 0x7F, 0x79, 0x6F, 0x5F, + 0x07, 0x00, 0x6C, 0x7F, 0x07, 0x00, 0x6C, 0x70, 0x7F, 0x7B, 0x6F, 0x7F, 0x7D, 0x7B, 0x47, 0x5F, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x55, 0x02, 0x20, 0x55, + 0x01, 0x00, 0x00, 0x40, 0x55, 0x02, 0x20, 0x55, 0x01, 0x00, 0x00, 0x40, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x01, 0x00, 0x00, 0x40, 0x55, 0x0A, 0x28, 0x55, 0x01, 0x00, 0x00, 0x40, 0x55, 0x02, 0x20, 0x55, 0x01, 0x00, 0x00, 0x40, + 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x79, 0x6F, 0x79, 0x47, 0x79, 0x6F, 0x7B, 0x4F, 0x19, 0x00, 0x03, 0x4C, 0x79, 0x07, 0x73, 0x4F, 0x79, 0x0F, 0x7B, 0x47, 0x01, 0x0C, 0x1B, 0x40, 0x01, 0x0C, 0x1B, 0x40, + 0x79, 0x0F, 0x7B, 0x4F, 0x79, 0x07, 0x73, 0x4F, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x55, 0x02, 0x20, 0x55, 0x01, 0x00, 0x00, 0x40, 0x55, 0x0A, 0x28, 0x55, + 0x01, 0x00, 0x00, 0x40, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x7F, 0x01, 0x00, 0x00, 0x40, 0x55, 0x0A, 0x28, 0x55, 0x01, 0x00, 0x00, 0x40, 0x55, 0x0A, 0x28, 0x55, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, + 0x71, 0x39, 0x60, 0x41, 0x71, 0x3B, 0x60, 0x41, 0x71, 0x3B, 0x60, 0x41, 0x01, 0x3B, 0x60, 0x41, 0x01, 0x7B, 0x7F, 0x41, 0x01, 0x7B, 0x7F, 0x41, 0x01, 0x7B, 0x7F, 0x41, 0x01, 0x3B, 0x40, 0x43, 0x01, 0x3B, 0x40, 0x43, 0x01, 0x3B, 0x40, 0x43, + 0x01, 0x3B, 0x40, 0x43, 0x01, 0x3B, 0x40, 0x43, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x55, 0x0A, 0x28, 0x55, 0x01, 0x00, 0x00, 0x40, 0x55, 0x0A, 0x28, 0x55, 0x01, 0x00, 0x00, 0x40, 0x7F, 0x7F, 0x7F, 0x7F, + 0x7F, 0x7F, 0x7F, 0x7F, 0x01, 0x00, 0x00, 0x40, 0x55, 0x6A, 0x2B, 0x55, 0x01, 0x60, 0x03, 0x40, 0x55, 0x6A, 0x2B, 0x55, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x7F, 0x07, 0x07, 0x5C, 0x7F, 0x0F, 0x07, 0x5C, + 0x7F, 0x1F, 0x07, 0x5C, 0x01, 0x1C, 0x07, 0x5C, 0x71, 0x1F, 0x7F, 0x5F, 0x7D, 0x0F, 0x7F, 0x5F, 0x7F, 0x07, 0x7F, 0x5F, 0x0F, 0x00, 0x07, 0x78, 0x0F, 0x00, 0x07, 0x78, 0x7F, 0x1F, 0x07, 0x78, 0x7D, 0x1F, 0x07, 0x78, 0x79, 0x1F, 0x07, 0x78, + 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x40, 0x55, 0x6A, 0x2B, 0x55, 0x01, 0x60, 0x03, 0x40, 0x55, 0x6A, 0x2B, 0x55, 0x01, 0x00, 0x00, 0x40, 0x7F, 0x7F, 0x7F, 0x7F +}; diff --git a/src/tiles.h b/src/tiles.h new file mode 100644 index 0000000..33390c6 --- /dev/null +++ b/src/tiles.h @@ -0,0 +1,12 @@ +#ifndef _TILES_HEADER_ +#define _TILES_HEADER_ + +#include + +#define TILES_COUNT 11 +#define TILE_WIDTH_BYTES 4 +#define TILE_HEIGHT 28 + +extern const uint8_t tiles[]; + +#endif /* _TILES_HEADER_ */