diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..44698ef --- /dev/null +++ b/.clang-format @@ -0,0 +1,10 @@ +BasedOnStyle: LLVM +IndentWidth: 8 +UseTab: AlignWithSpaces +BreakBeforeBraces: Attach +AllowShortIfStatementsOnASingleLine: false +AllowShortBlocksOnASingleLine: Empty +AllowShortFunctionsOnASingleLine: Empty +IndentCaseLabels: false +ColumnLimit: 80 +AlignConsecutiveMacros: true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..981aaaa --- /dev/null +++ b/.gitignore @@ -0,0 +1,12 @@ +# Build files +/build* +/*.g1a +/*.g3a + +# Python bytecode + __pycache__/ + +# Common IDE files +*.sublime-project +*.sublime-workspace +.vscode diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100644 index 0000000..295b474 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,24 @@ +cmake_minimum_required(VERSION 3.22) +project(lzy) + +include(GenerateG3A) +include(Fxconv) +find_package(Gint 2.7.0 REQUIRED) + +include_directories(inc) + +set(SOURCES + src/main.c +) + +set(ASSETS +) + +fxconv_declare_assets(${ASSETS} WITH_METADATA) + +add_executable(thyaddin ${SOURCES} ${ASSETS}) +target_compile_options(thyaddin PRIVATE -Wall -Wextra -Os) +target_link_libraries(thyaddin Gint::Gint) + +generate_g3a(TARGET thyaddin OUTPUT "lzy.g3a" + NAME "lzy" ICONS res/icon-uns.png res/icon-sel.png) diff --git a/inc/lzy.h b/inc/lzy.h new file mode 100644 index 0000000..5b2e4bd --- /dev/null +++ b/inc/lzy.h @@ -0,0 +1,115 @@ +#ifndef LZY_H_ +#define LZY_H_ +#ifdef __cplusplus +extern "C" { +#endif +#include + +int LZY_Init(void); +int LZY_Deinit(void); +int LZY_DrawBegin(void); +int LZY_DrawEnd(void); +void LZY_DrawSetColor(uint8_t r, uint8_t g, uint8_t b); +int LZY_DrawClear(void); +void LZY_CycleEvents(void); +int LZY_KeyDown(unsigned int scancode); +const char *LZY_GetError(void); + +#ifdef FXCG50 +#include +enum LZY_ScanCode { + LZY_SC_ESCAPE = KEY_EXIT, +}; +#else /* end FXCG50, begin SDL2 */ +#include +enum LZY_ScanCode { + LZY_SC_ESCAPE = SDLK_ESCAPE, +}; +#endif /* SDL2 */ +#ifdef __cplusplus +} +#endif +#endif /* LZY_H_ */ + +/* implementation */ +#ifdef LZY_IMPLEMENTATION +#ifndef LZY_TILE_SIZE +#define LZY_TILE_SIZE 16 +#endif +#ifdef FXCG50 +#include +#include + +static color_t draw_color; + +int LZY_Init(void) { + return 0; +} + +int LZY_Deinit(void) { + return 0; +} + +int LZY_DrawBegin(void) { + return 0; +} + +int LZY_DrawEnd(void) { + return 0; +} + +void LZY_DrawSetColor(uint8_t r, uint8_t g, uint8_t b) { + draw_color = C_RGB(r << 3, g << 3, b << 3); +} + +int LZY_DrawClear(void) { + return 0; +} + +void LZY_CycleEvents(void) {} + +int LZY_KeyDown(unsigned int scancode) { + return 0; +} + +const char *LZY_GetError(void) { + return NULL; +} + +#else /* end FXCG50, begin SDL2 */ +#include +#include + +int LZY_Init(void) { + return 0; +} + +int LZY_Deinit(void) { + return 0; +} + +int LZY_DrawBegin(void) { + return 0; +} + +int LZY_DrawEnd(void) { + return 0; +} + +void LZY_DrawSetColor(uint8_t r, uint8_t g, uint8_t b) {} + +int LZY_DrawClear(void) { + return 0; +} + +void LZY_CycleEvents(void) {} + +int LZY_KeyDown(unsigned int scancode) { + return 0; +} + +const char *LZY_GetError(void) { + return NULL; +} +#endif /* SDL2 */ +#endif /* LZY_IMPLEMENTATION */ diff --git a/meson.build b/meson.build new file mode 100644 index 0000000..fcf350a --- /dev/null +++ b/meson.build @@ -0,0 +1,28 @@ +project('lzy', 'c') + +cc = meson.get_compiler('c') + +sdl2deps = [ + dependency('sdl2', version: '>=2.0.0'), + dependency('SDL2_image', version: '>=2.0.0'), + cc.find_library('m', required: true), + cc.find_library('dl', required: true), +] + +inc = include_directories('inc') + +sources = [ + 'src/main.c', +] + +c_flags = [ + '-std=c99', '-Os', + '-Wall', '-Wextra', +] + +executable('lzy', + sources, + include_directories : inc, + dependencies : sdl2deps, + install: false, + c_args : c_flags) diff --git a/res/fxconv-metadata.txt b/res/fxconv-metadata.txt new file mode 100644 index 0000000..8ca05ea --- /dev/null +++ b/res/fxconv-metadata.txt @@ -0,0 +1,3 @@ +tset.png: + type: bopti-image + name: bimg_tset diff --git a/res/icon-sel.png b/res/icon-sel.png new file mode 100644 index 0000000..3fefb8a Binary files /dev/null and b/res/icon-sel.png differ diff --git a/res/icon-uns.png b/res/icon-uns.png new file mode 100644 index 0000000..6381b23 Binary files /dev/null and b/res/icon-uns.png differ diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..a3e2b0a --- /dev/null +++ b/src/main.c @@ -0,0 +1,19 @@ +#define LZY_IMPLEMENTATION +#include "lzy.h" + +int main(void) { + if (LZY_Init()) + return 1; + + LZY_DrawSetColor(255, 0, 0); + + LZY_DrawBegin(); + LZY_DrawClear(); + LZY_DrawEnd(); + + do { + LZY_CycleEvents(); + } while (!LZY_KeyDown(LZY_SC_ESCAPE)); + + return 1; +}