From 60a1b1fed0d0a5311eded1cb0827cfc5e96d9a81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Miloslav=20=C4=8C=C3=AD=C5=BE?= Date: Tue, 29 Sep 2020 20:49:56 +0200 Subject: [PATCH] Update terminal frontend --- main_terminal.c | 34 +++++++++++++--------------------- 1 file changed, 13 insertions(+), 21 deletions(-) diff --git a/main_terminal.c b/main_terminal.c index 154b48e..f4facb5 100644 --- a/main_terminal.c +++ b/main_terminal.c @@ -21,17 +21,16 @@ #include #include -#define SFG_SCREEN_RESOLUTION_X 95 -#define SFG_SCREEN_RESOLUTION_Y 43 +//#define SFG_SCREEN_RESOLUTION_X 127 +//#define SFG_SCREEN_RESOLUTION_Y 42 +#define SFG_SCREEN_RESOLUTION_X 127 +#define SFG_SCREEN_RESOLUTION_Y 42 #define SFG_DITHERED_SHADOW 1 #define SFG_FPS 20 #include "game.h" -#define NEWLINES 10 - -#define SCREENSIZE \ - (NEWLINES + (SFG_SCREEN_RESOLUTION_X + 1) * SFG_SCREEN_RESOLUTION_Y) +#define SCREENSIZE ((SFG_SCREEN_RESOLUTION_X + 1) * SFG_SCREEN_RESOLUTION_Y + 1) char screen[SCREENSIZE]; @@ -79,13 +78,12 @@ uint32_t getTime() void SFG_setPixel(uint16_t x, uint16_t y, uint8_t colorIndex) { - screen[NEWLINES + y * (SFG_SCREEN_RESOLUTION_X + 1) + x] = + screen[y * (SFG_SCREEN_RESOLUTION_X + 1) + x] = shades[(colorIndex > 7) * 8 + colorIndex % 8]; } uint32_t SFG_getTimeMs() { - clock_t timeNow = clock(); return getTime() - timeStart; } @@ -119,6 +117,7 @@ int8_t SFG_keyPressed(uint8_t key) case SFG_KEY_B: return keyStates[6]; break; case SFG_KEY_C: return keyStates[7]; break; case SFG_KEY_MAP: return keyStates[8]; break; + case SFG_KEY_JUMP: return keyStates[4]; break; default: return 0; break; } } @@ -131,8 +130,6 @@ void SFG_playSound(uint8_t soundIndex, uint8_t volume) { } -int nextFlush = 0; - int main() { int devFile; @@ -145,14 +142,13 @@ int main() SFG_init(); + screen[SCREENSIZE - 1] = 0; // string terminator + for (uint16_t i = 0; i < TOTAL_KEYS; ++i) keyStates[i] = 0; - for (uint16_t i = 0; i < NEWLINES; ++i) - screen[i] = '\n'; - for (uint16_t i = 1; i <= SFG_SCREEN_RESOLUTION_Y; ++i) - screen[NEWLINES + i * (SFG_SCREEN_RESOLUTION_X + 1) - 1] = '\n'; + screen[i * (SFG_SCREEN_RESOLUTION_X + 1) - 1] = '\n'; setvbuf(stdout, NULL, _IOFBF, SCREENSIZE + 1); @@ -176,14 +172,10 @@ int main() } } - uint32_t t = SFG_getTimeMs(); + puts("\033[0;0H"); // move cursor to 0;0 - if (t >= nextFlush) - { - puts(screen); - fflush(stdout); - nextFlush = t + 200; // 5 rendering FPS - } + puts(screen); + fflush(stdout); if (!SFG_mainLoopBody()) break;