diff options
Diffstat (limited to 'procyon/source')
-rw-r--r-- | procyon/source/bs/dbglog.c | 11 | ||||
-rw-r--r-- | procyon/source/bs/exit.c | 15 | ||||
-rw-r--r-- | procyon/source/bs/init.c | 51 | ||||
-rw-r--r-- | procyon/source/bs/shipnm.c | 70 | ||||
-rw-r--r-- | procyon/source/evt/jmp.c | 13 | ||||
-rw-r--r-- | procyon/source/gfx/initgfx.c | 22 | ||||
-rw-r--r-- | procyon/source/info/jmplen.c | 7 | ||||
-rw-r--r-- | procyon/source/info/sysdist.c | 7 | ||||
-rw-r--r-- | procyon/source/main.c | 24 | ||||
-rw-r--r-- | procyon/source/sav/cont.c | 81 | ||||
-rw-r--r-- | procyon/source/sav/sav.c | 35 |
11 files changed, 0 insertions, 336 deletions
diff --git a/procyon/source/bs/dbglog.c b/procyon/source/bs/dbglog.c deleted file mode 100644 index d04174f..0000000 --- a/procyon/source/bs/dbglog.c +++ /dev/null @@ -1,11 +0,0 @@ -#include <acm/bs.h> - -#include <stdarg.h> -#include <stdio.h> - -void acm_dbglog(char const * const _fmt,...) { - va_list args; - va_start(args,_fmt); - vfprintf(stderr,_fmt,args); - va_end(args); -} diff --git a/procyon/source/bs/exit.c b/procyon/source/bs/exit.c deleted file mode 100644 index e49dfc9..0000000 --- a/procyon/source/bs/exit.c +++ /dev/null @@ -1,15 +0,0 @@ -#include <acm/bs.h> - -#include <GLFW/glfw3.h> -#include <stdlib.h> - -void acm_exit(acm_stat const _stat) { - int const cstat = _stat == acm_stat_ok ? EXIT_SUCCESS : EXIT_FAILURE; - free((void *)acm_dat.savloc); - if (acm_dat.gfxisinit) { - glfwDestroyWindow(acm_dat.win); - glfwTerminate(); - } - acm_log("Done (%X)\n",cstat); - exit(cstat); -} diff --git a/procyon/source/bs/init.c b/procyon/source/bs/init.c deleted file mode 100644 index 1f4c57e..0000000 --- a/procyon/source/bs/init.c +++ /dev/null @@ -1,51 +0,0 @@ -#include <acm/gfx.h> - -#include <signal.h> -#include <stdio.h> -#include <stdlib.h> -#include <zap/mem.h> - -sig_atomic_t volatile acm_gotintr; - -typeof (acm_dat) acm_dat; - -static char * acm_getsavloc(void) { - char const * const hmdir = getenv("HOME"); - if (hmdir == nullptr) { - fprintf(stderr,"Unable to get home directory (HOME not set)\n"); - acm_exit(acm_stat_err); - } - char const * const savfilnm = ".procyon-save"; - zap_sz const hmdirlen = zap_strlen(hmdir); - zap_sz const savfilnmlen = zap_strlen(savfilnm); - zap_sz const savloclen = hmdirlen + 0x1u + savfilnmlen; - char * savloc = malloc(savloclen + 0x1u); - if (savloc == nullptr) { - fprintf(stderr,"Unable allocate memory\n"); - acm_exit(acm_stat_err); - } - zap_memcp(hmdir,hmdirlen,savloc); - savloc[hmdirlen] = '/'; - zap_memcp(savfilnm,savfilnmlen,savloc + hmdirlen + 0x1u); - savloc[savloclen] = 0x0u; - return savloc; -} - -static void acm_intrhandl(int const _sig) { - signal(_sig,acm_intrhandl); /* Ignore the return value. */ - acm_gotintr = 0x1; -} - -void acm_init(void) { - acm_gotintr = 0x0; - acm_dat.gfxisinit = false; - acm_dat.win = nullptr; - acm_log("Initialising data\n"); - acm_dat.savloc = acm_getsavloc(); - acm_log("Initialising signal handlers\n"); - if (signal(SIGINT,acm_intrhandl) == SIG_ERR) { - fprintf(stderr,"Unable to set SIGINT handler\n"); - acm_exit(acm_stat_err); - } - acm_initgfx(); -} diff --git a/procyon/source/bs/shipnm.c b/procyon/source/bs/shipnm.c deleted file mode 100644 index f1d8f4e..0000000 --- a/procyon/source/bs/shipnm.c +++ /dev/null @@ -1,70 +0,0 @@ -#include <acm/bs.h> - -char const * acm_shipnm(acm_shipid const _ship) { - switch (_ship) { - case acm_shipid_add: - return "Adder"; - case acm_shipid_ana: - return "Anaconda"; - case acm_shipid_asp: - return "Asp"; - case acm_shipid_boa: - return "Boa"; - case acm_shipid_cob: - return "Cobra"; - case acm_shipid_con: - return "Constrictor"; - case acm_shipid_cou: - return "Courier"; - case acm_shipid_cyg: - return "Cygnus"; - case acm_shipid_dov: - return "Dove"; - case acm_shipid_eag: - return "Eagle"; - case acm_shipid_falc: - return "Falcon"; - case acm_shipid_fer: - return "Fer-de-lance"; - case acm_shipid_frei: - return "Freighter"; - case acm_shipid_geck: - return "Gecko"; - case acm_shipid_haul: - return "Hauler"; - case acm_shipid_hawk: - return "Hawk"; - case acm_shipid_keel: - return "Keelback"; - case acm_shipid_kes: - return "Kestral"; - case acm_shipid_krait: - return "Krait"; - case acm_shipid_lift: - return "Lifter"; - case acm_shipid_lion: - return "Lion"; - case acm_shipid_mamba: - return "Mamba"; - case acm_shipid_moray: - return "Moray"; - case acm_shipid_osp: - return "Osprey"; - case acm_shipid_pan: - return "Panther"; - case acm_shipid_puma: - return "Puma"; - case acm_shipid_py: - return "Python"; - case acm_shipid_shut: - return "Shuttle"; - case acm_shipid_side: - return "Sidewinder"; - case acm_shipid_tran: - return "Transporter"; - case acm_shipid_vip: - return "Viper"; - case acm_shipid_vult: - return "Vulture"; - } -} diff --git a/procyon/source/evt/jmp.c b/procyon/source/evt/jmp.c deleted file mode 100644 index 5a93491..0000000 --- a/procyon/source/evt/jmp.c +++ /dev/null @@ -1,13 +0,0 @@ -#include <acm/evt.h> -#include <acm/info.h> - -#include <stdint.h> - -bool acm_jmp(uint_least64_t const _sys) { - acm_pldat pldat = acm_dat.pldat; - if (acm_sysdist(_sys) > acm_jmplen(&pldat.ship)) { - return true; - } - acm_dat.pldat = pldat; - return false; -} diff --git a/procyon/source/gfx/initgfx.c b/procyon/source/gfx/initgfx.c deleted file mode 100644 index d60e393..0000000 --- a/procyon/source/gfx/initgfx.c +++ /dev/null @@ -1,22 +0,0 @@ -#include <acm/gfx.h> - -#include <GLFW/glfw3.h> - -void acm_initgfx(void) { - acm_log("Initialising graphics\n"); - if (!glfwInit()) { - fprintf(stderr,"Unable to initialise GLFW\n"); - acm_exit(acm_stat_err); - } - GLFWwindow * win = glfwCreateWindow(0x300,0x200,"Procyon",nullptr,nullptr); - if (win == nullptr) { - fprintf(stderr,"Unable to open window\n"); - goto abrt; - } - glfwMakeContextCurrent(win); - acm_dat.win = win; - return; -abrt:; - glfwTerminate(); - acm_exit(acm_stat_err); -} diff --git a/procyon/source/info/jmplen.c b/procyon/source/info/jmplen.c deleted file mode 100644 index 7ef8995..0000000 --- a/procyon/source/info/jmplen.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <acm/info.h> - -#include <stdint.h> - -uint_least64_t acm_jmplen(acm_ship const * _ship) { - return 0x0u; -} diff --git a/procyon/source/info/sysdist.c b/procyon/source/info/sysdist.c deleted file mode 100644 index 2e77220..0000000 --- a/procyon/source/info/sysdist.c +++ /dev/null @@ -1,7 +0,0 @@ -#include <acm/info.h> - -#include <stdint.h> - -uint_least64_t acm_sysdist(uint_least64_t const _sys) { - return ~(uint_least64_t)0x0u; -} diff --git a/procyon/source/main.c b/procyon/source/main.c deleted file mode 100644 index 19439a4..0000000 --- a/procyon/source/main.c +++ /dev/null @@ -1,24 +0,0 @@ -#include <acm/sav.h> - -#include <flux.h> -#include <inttypes.h> -#include <stdio.h> - -int main(int const argc,[[maybe_unused]] char const * const * const argv) { - acm_dat.gfxisinit = false; - if (argc > 0x1) { - fprintf(stderr,"Ignoring terminal options\n"); - } - printf("Procyon, %" PRIxLEAST64 " - Copyright 2022 Gabriel Jensen.\n",acm_ver); - acm_init(); - acm_cont(&acm_dat.pldat); - acm_log("Ready\n"); - while (!glfwWindowShouldClose(acm_dat.win)) { - if (acm_gotintr) { - fprintf(stderr,"Got interrupt, stopping\n"); - glfwSetWindowShouldClose(acm_dat.win,0x1); - } - } - acm_sav(&acm_dat.pldat); - acm_exit(acm_stat_ok); -} diff --git a/procyon/source/sav/cont.c b/procyon/source/sav/cont.c deleted file mode 100644 index e52fd76..0000000 --- a/procyon/source/sav/cont.c +++ /dev/null @@ -1,81 +0,0 @@ -#include <acm/info.h> -#include <acm/sav.h> - -#include <flux.h> -#include <inttypes.h> -#include <zap/mem.h> - -static_assert(sizeof (acm_dflplnm) == acm_plnmlen); - -void acm_cont(acm_pldat * const _pldat) { - acm_log("Continuing\n"); - acm_pldat pldat; - uint_least64_t savver; - flux_err fluxerr; - flux_fil savfil; - fluxerr = flux_op(&savfil,acm_dat.savloc,flux_md_rd,flux_keep); - if (fluxerr) { - acm_log("Unable to open save file, starting new game: %s\n",flux_errstr(fluxerr)); - goto new; - } - fluxerr = flux_rd(savfil,sizeof (savver),&savver,nullptr); - if (!fluxerr) { - fluxerr = flux_rd(savfil,sizeof (pldat),&pldat,nullptr); - } - flux_cl(savfil); - if (fluxerr) { - acm_log("Unable to read save file, starting new game: %s\n",flux_errstr(fluxerr)); - goto new; - } - if (savver != acm_savver) { - printf("Old save version (%" PRIXLEAST64 "), starting new game: %s\n",savver,flux_errstr(fluxerr)); - goto new; - } - acm_log("Validating commander name\n"); - bool validnm = false; - for (zap_sz n = 0x0u;n < acm_plnmlen + 0x1u;++n) { - if (pldat.nm[n] == '\x0') { - if (n == 0x0u) { - break; - } - validnm = true; - break; - } - } - if (!validnm) { - acm_log("Invalid commander name (corrupt save file), starting new game\n"); - acm_log( - "Commander name:\n" - " %hhX %hhX %hhX %hhX\n" - " %hhX %hhX %hhX %hhX\n" - " %hhX %hhX %hhX %hhX\n" - " %hhX %hhX %hhX %hhX\n" - " %hhX\n", - pldat.nm[0x0u],pldat.nm[0x1u],pldat.nm[0x2u],pldat.nm[0x3u], - pldat.nm[0x4u],pldat.nm[0x5u],pldat.nm[0x6u],pldat.nm[0x7u], - pldat.nm[0x8u],pldat.nm[0x9u],pldat.nm[0xAu],pldat.nm[0xBu], - pldat.nm[0xCu],pldat.nm[0xDu],pldat.nm[0xEu],pldat.nm[0xFu], - pldat.nm[0x10u] - ); - goto new; - } - printf("Loaded CMDR %s, %s @ %" PRIiLEAST64 "\n",pldat.nm,acm_shipnm(pldat.ship.id),pldat.tm); - *_pldat = pldat; - return; -new:; - pldat.heat = 0x120u; /* 288K */ - pldat.pos.px = 0x0u; - pldat.pos.py = 0x0u; - pldat.pos.pz = 0x0u; - pldat.pos.rx = 0x0u; - pldat.pos.ry = 0x0u; - pldat.pos.rz = 0x0u; - pldat.pos.vx = 0x0u; - pldat.pos.vy = 0x0u; - pldat.pos.vz = 0x0u; - pldat.ship.drv = acm_drv_h1; - pldat.ship.id = acm_shipid_side; - pldat.tm = 0x9679C2B40u; /* 3250-01-01T12:00:00Z */ - zap_memcp(acm_dflplnm,acm_plnmlen + 0x1u,pldat.nm); - *_pldat = pldat; -} diff --git a/procyon/source/sav/sav.c b/procyon/source/sav/sav.c deleted file mode 100644 index d7301c7..0000000 --- a/procyon/source/sav/sav.c +++ /dev/null @@ -1,35 +0,0 @@ -#include <acm/sav.h> - -#include <flux.h> -#include <stdio.h> - -void acm_sav(acm_pldat const * const _pldat) { - acm_log("Saving\n"); - flux_err fluxerr; - flux_fil savfil; - fluxerr = flux_mkfil(&savfil,acm_dat.savloc,0644u); - if (fluxerr) { - if (fluxerr != flux_err_exist) { - fprintf(stderr,"Unable to create save file (\"%s\"): %s\n",acm_dat.savloc,flux_errstr(fluxerr)); - acm_exit(acm_stat_err); - } - acm_log("Save file already exists, overwritting\n"); - fluxerr = flux_op(&savfil,acm_dat.savloc,flux_md_wr,flux_disc); - if (fluxerr) { - fprintf(stderr,"Unable to open save file: %s\n",flux_errstr(fluxerr)); - acm_exit(acm_stat_err); - } - } - { - uint_least64_t const savver = acm_savver; - fluxerr = flux_wr(savfil,&savver,sizeof (savver)); - } - if (!fluxerr) { - fluxerr = flux_wr(savfil,_pldat,sizeof (*_pldat)); - } - if (fluxerr) { - fprintf(stderr,"Unable to write to save file: %s\n",flux_errstr(fluxerr)); - acm_exit(acm_stat_err); - } - flux_cl(savfil); -} |