From 936a48f7279542b78b012517f27aea4380e70c18 Mon Sep 17 00:00:00 2001 From: kdx Date: Sat, 15 Apr 2023 13:32:44 +0200 Subject: art of shitty shell scripts --- .gitignore | 5 +++-- build.sh | 5 +++-- embed.sh | 10 ++++++++++ embed_win.sh | 10 ++++++++++ src/orgaemu.c | 27 ++++++++++++++++++++------- 5 files changed, 46 insertions(+), 11 deletions(-) create mode 100755 embed.sh create mode 100755 embed_win.sh diff --git a/.gitignore b/.gitignore index ba302ed..7fbcde6 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ -/orgaasm -/orgaemu +/orgaasm* +/orgaemu* /*.rom +/src/rom.h diff --git a/build.sh b/build.sh index 85d04c6..f670638 100755 --- a/build.sh +++ b/build.sh @@ -1,6 +1,7 @@ #!/bin/sh CFLAGS='-std=c99 -Wall -Wextra -O2' +[ "$CC" == "" ] && CC=gcc printf 'orgaasm\n' -gcc $CFLAGS -o orgaasm src/orgaasm.c +$CC $CFLAGS -o orgaasm src/orgaasm.c printf 'orgaemu\n' -gcc $CFLAGS -o orgaemu src/orgaemu.c -lSDL2 +$CC $CFLAGS -o orgaemu src/orgaemu.c $@ -lSDL2 diff --git a/embed.sh b/embed.sh new file mode 100755 index 0000000..67062ba --- /dev/null +++ b/embed.sh @@ -0,0 +1,10 @@ +#!/bin/sh +./build.sh +TMPASM="$(mktemp)" +cd "$(dirname "$1")" || exit 1 +m4 "$(basename "$1")" >"$TMPASM" || exit 1 +cd "$OLDPWD" || exit 1 +./orgaasm "$TMPASM" rom || exit 1 +cembed rom >src/rom.h || exit 1 +rm -f rom +./build.sh -DEMBED_ROM= diff --git a/embed_win.sh b/embed_win.sh new file mode 100755 index 0000000..53c935c --- /dev/null +++ b/embed_win.sh @@ -0,0 +1,10 @@ +#!/bin/sh +./build.sh +TMPASM="$(mktemp)" +cd "$(dirname "$1")" || exit 1 +m4 "$(basename "$1")" >"$TMPASM" || exit 1 +cd "$OLDPWD" || exit 1 +./orgaasm "$TMPASM" rom || exit 1 +cembed rom >src/rom.h || exit 1 +rm -f rom +CC=x86_64-w64-mingw32-gcc ./build.sh -DEMBED_ROM= -Dmain=SDL_main -lmingw32 -lSDL2main -mwindows diff --git a/src/orgaemu.c b/src/orgaemu.c index 4de09cf..ecc9c4d 100644 --- a/src/orgaemu.c +++ b/src/orgaemu.c @@ -1,9 +1,14 @@ -#include "drain.h" #include "ops.h" #include #include #include +#ifdef EMBED_ROM +#include "rom.h" +#else +#include "drain.h" +#endif + #define MEM_SIZE 0xffff static const uint16_t buttons[SDL_NUM_SCANCODES] = { @@ -123,10 +128,9 @@ render(uint16_t *mem) next_time += 1000 / 30; const Uint64 cur_time = SDL_GetTicks64(); - if (next_time <= cur_time) { - fprintf(stderr, "lagging %lu\n", cur_time - next_time); + if (next_time <= cur_time) next_time = cur_time; - } else + else SDL_Delay(next_time - cur_time); SDL_RenderPresent(renderer); @@ -349,12 +353,22 @@ exec_data(uint16_t *mem) int main(int argc, char **argv) { +#ifdef EMBED_ROM + (void)argc, (void)argv; + mem = calloc(MEM_SIZE, sizeof(uint16_t)); + if (mem == NULL) { + perror("main:calloc"); + return 1; + } + for (unsigned i = 0; i < sizeof(rom); i += 2) + mem[i / 2] = get_short(rom + i); +#else if (argc != 2) { fprintf(stderr, "usage: %s \n", argv[0]); return 1; } - FILE *file = fopen(argv[1], "rb"); + FILE *const file = fopen(argv[1], "rb"); if (file == NULL) { perror(argv[1]); return 1; @@ -372,10 +386,9 @@ main(int argc, char **argv) free(data); return 1; } - for (long i = 0; i < size; i += 2) mem[i / 2] = get_short(data + i); - free(data); +#endif stack = calloc(MEM_SIZE, sizeof(uint16_t)); if (stack == NULL) { -- cgit v1.2.3