diff options
author | kdx <kikoodx@paranoici.org> | 2023-04-15 13:32:44 +0200 |
---|---|---|
committer | kdx <kikoodx@paranoici.org> | 2023-04-15 13:32:44 +0200 |
commit | 936a48f7279542b78b012517f27aea4380e70c18 (patch) | |
tree | 9dd07367195c6ed84ef9b6e475c8231c050cd169 | |
parent | 3e5be77ecceb87cc4e0915c4acd6cfb83744b292 (diff) | |
download | orga-936a48f7279542b78b012517f27aea4380e70c18.tar.gz |
art of shitty shell scripts
-rw-r--r-- | .gitignore | 5 | ||||
-rwxr-xr-x | build.sh | 5 | ||||
-rwxr-xr-x | embed.sh | 10 | ||||
-rwxr-xr-x | embed_win.sh | 10 | ||||
-rw-r--r-- | src/orgaemu.c | 27 |
5 files changed, 46 insertions, 11 deletions
@@ -1,3 +1,4 @@ -/orgaasm -/orgaemu +/orgaasm* +/orgaemu* /*.rom +/src/rom.h @@ -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 <stdio.h> #include <stdint.h> #include <SDL2/SDL.h> +#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 <rom>\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) { |