Git Product home page Git Product logo

terps's People

Contributors

cibersheep avatar cspiegel avatar cspiegel-cypherpath avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

terps's Issues

Make this thing actually useful

Gargoyle includes a bunch of Glk-enabled interpreters which were extracted to make this repository. It's meant so that other Glk implementations can have a group of interpreters like Gargoyle. However, this has basically stagnated for several years. If it is in fact useful, it should have some sort of coherence and goal instead of being, generally, an old clone of part of Gargoyle's repository.

I'm prompted by the following: https://intfiction.org/t/lectrote-1-3-8/47931/15. The TADS interpreter uses a Gargoyle-specific call, meaning it won't be useful on any other Glk implementations. Since this came from Gargoyle, it "knows" that function call exists, but it's hidden away with #ifdef meaning there will be silent failure on other Glk platforms. There are probably other similar issues in it and other interpreters.

Something that makes this difficult is the source of the interpreters. They come from various places and in various states of maintenance/Glk-ness:

  1. Unmaintained with no official Glk support (e.g. advsys)
  2. Unmaintained but with Glk support (e.g. jacl)
  3. Maintained but no Glk (e.g. TADS3)
  4. Maintained with Glk but no Gargoyle (e.g. Glulxe)
  5. Maintained with Glk and Gargoyle (e.g. Bocfel)

There's also the wrinkle that Gargoyle has some bug fixes added to some of the unmaintained interpreters.

I think in all cases regardless of state of maintenance, there needs to be a Git setup where there's an upstream branch and a “port” branch, so it's trivial to track the changes that have been made for Glk support. Any new releases go into upstream and are merged into the port branch. That'd entail separate repositories for each interpreter however, and I don't know if going with submodules would be an ideal approach. In fact I don't really have a preference on how this is accomplished, but after dealing with upgrades in Gargoyle, I can attest that it's a pain to keep track of all changes without actual history documenting those changes. If anybody happens to have extensive experience with this sort of Git management, by all means, please chime in.

The itemized list above also has to be taken into account. For 1, maintenance kind of has to be taken over by this project. If this is the central location for Glk-enabled ports, then it's necessary to provide complete interpreters with known bugs fixed. That shouldn't be a huge deal.

For 2, adding Gargoyle support in the port branch is necessary, as would be bug fixes that won't be coming from upstream.

For 3, both Glk and Gargoyle support need to be added in the port branch.

For 4, Gargoyle support needs to be added in the port branch.

For 5, ideally nothing needs to happen in the port branch.

Gargoyle support is crucial because I'd really like to be able to move interpreter maintenance from Gargoyle to here; but at the same time it's important to completely support non-Gargoyle Glk implementations. A starting point for managing this is https://curiousdannii.github.io/if/gargoyle.html, which documents Gargoyle extensions and helps to standardize them, such that individual Gargoyle extensions can be added by other Glk implementations and tested for.

xglk is not building in Ubuntu 16.04

I got xglk from https://github.com/lacc97/xglk that I'm able to compile.
When I try to compile all the terps with your script, I'm stuck though.

$ cmake .. -DGLK=xglk
-- The C compiler identification is GNU 5.4.0
-- The CXX compiler identification is GNU 5.4.0
-- Check for working C compiler: /usr/bin/cc
-- Check for working C compiler: /usr/bin/cc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so
-- Looking for XOpenDisplay in /usr/lib/x86_64-linux-gnu/libX11.so;/usr/lib/x86_64-linux-gnu/libXext.so - found
-- Looking for gethostbyname
-- Looking for gethostbyname - found
-- Looking for connect
-- Looking for connect - found
-- Looking for remove
-- Looking for remove - found
-- Looking for shmat
-- Looking for shmat - found
-- Looking for IceConnectionNumber in ICE
-- Looking for IceConnectionNumber in ICE - found
-- Found X11: /usr/lib/x86_64-linux-gnu/libX11.so
-- Found ZLIB: /usr/lib/x86_64-linux-gnu/libz.so (found version "1.2.8") 
-- Found PNG: /usr/lib/x86_64-linux-gnu/libpng.so (found version "1.2.54") 
-- Found JPEG: /usr/lib/x86_64-linux-gnu/libjpeg.so  
-- Configuring done
-- Generating done
-- Build files have been written to: /home/[...]/terps/build-xglk

$ make
Scanning dependencies of target glk
[  0%] Building C object xglk/CMakeFiles/glk.dir/main.c.o
[  1%] Building C object xglk/CMakeFiles/glk.dir/xglk.c.o
[...]
[  6%] Linking C static library libglk.a
[  6%] Built target glk
Scanning dependencies of target scott
[  6%] Building C object CMakeFiles/scott.dir/scott/scott.c.o
[  6%] Building C object CMakeFiles/scott.dir/scott/bsd.c.o
[  6%] Linking C executable scott
xglk/libglk.a(xg_fileref.c.o): En la función `glk_fileref_create_temp':
xg_fileref.c:(.text+0x317): aviso: the use of `tmpnam' is dangerous, better use `mkstemp'
xglk/libglk.a(xg_schan.c.o): En la función `clear_channel':
xg_schan.c:(.text+0x54): reference to`Mix_PlayingMusic' not defined
xg_schan.c:(.text+0x5d): reference to`Mix_HaltMusic' not defined
xg_schan.c:(.text+0x6d): reference to`Mix_FreeMusic' not defined
xg_schan.c:(.text+0xaa): reference to`Mix_Playing' not defined
xg_schan.c:(.text+0xbc): reference to`Mix_HaltChannel' not defined
xg_schan.c:(.text+0xcc): reference to`Mix_FreeChunk' not defined
xglk/libglk.a(xg_schan.c.o): En la función `set_channel_volume':
xg_schan.c:(.text+0x11f): reference to`Mix_VolumeMusic' not defined
xg_schan.c:(.text+0x156): reference to`Mix_Volume' not defined
xglk/libglk.a(xg_schan.c.o): En la función `gli_eventloop_schannels':
xg_schan.c:(.text+0x27a): reference to`Mix_Playing' not defined
xglk/libglk.a(xg_schan.c.o): En la función `init_gli_schannels':
xg_schan.c:(.text+0x356): reference to`SDL_Init' not defined
xg_schan.c:(.text+0x35f): reference to`SDL_GetError' not defined
xg_schan.c:(.text+0x39c): reference to`Mix_OpenAudio' not defined
xg_schan.c:(.text+0x3a5): reference to`SDL_GetError' not defined
xg_schan.c:(.text+0x3df): reference to`Mix_QuerySpec' not defined
xg_schan.c:(.text+0x426): reference to`Mix_HookMusicFinished' not defined
xg_schan.c:(.text+0x438): reference to`Mix_SetMusicCMD' not defined
xglk/libglk.a(xg_schan.c.o): En la función `exit_gli_schannels':
xg_schan.c:(.text+0x48c): reference to`Mix_CloseAudio' not defined
xglk/libglk.a(xg_schan.c.o): En la función `glk_schannel_play_ext':
xg_schan.c:(.text+0xa3b): reference to`Mix_PlayingMusic' not defined
xg_schan.c:(.text+0xa9b): reference to`Mix_LoadMUS' not defined
xg_schan.c:(.text+0xaff): reference to`Mix_PlayMusic' not defined
xg_schan.c:(.text+0xb35): reference to`Mix_FreeMusic' not defined
xg_schan.c:(.text+0xb83): reference to`SDL_RWFromFile' not defined
xg_schan.c:(.text+0xb90): reference to`Mix_LoadWAV_RW' not defined
xg_schan.c:(.text+0xc10): reference to`Mix_PlayChannelTimed' not defined
xg_schan.c:(.text+0xc5c): reference to`Mix_FreeChunk' not defined
collect2: error: ld returned 1 exit status
CMakeFiles/scott.dir/build.make:128: failure in the instructions for target 'scott'
make[2]: *** [scott] Error 1
CMakeFiles/Makefile2:67: failure in the instructions for target 'CMakeFiles/scott.dir/all'
make[1]: *** [CMakeFiles/scott.dir/all] Error 2
Makefile:127: failure in the instructions for target 'all'
make: *** [all] Error 2

I have installed SDL and SDL_mixer libraries.
Any idea?

Alan 2 errors

  • build Alan2 on a x86-64 machine (Ubuntu 20.04)
  • tested using remglk, glkterm

Alan 2 tested with https://ifdb.org/viewgame?id=f7u68nd9cquz72br
I get:

As you enter the twilight zone of Adventures, you stumble and fall to your knees. In front of you, you can vaguely see the outlines of an Adventure that never was.
SYSTEM ERROR: Could not read all ACD code.

From both versions, this one and garglk

No save file building TADS terp against remglk

I have build several of the terps from the list with no problems but:
building tads terp against remglk (on armhf and x64) when I try to save a game position I get:

  • Failed error message for TADS2 game (both arm and x64)
  • Failed; your computer might be running low on disk space, or you might not have the necessary permissions to write this file. error message for TADS3 game on arm, or a wrong coding file on x64

On both platforms I use Linux OS.
Am I doing something wrong?

Compiling against remglk stop at glulxe

Hi! Thanks for your work.
I have found this issue: I downloaded remglk and uncompress it in its folder and the followed the rest of th instructions of the read me.
It builds adsys, agility, alan2 and 3, bocfel, frotz, git, jacl, level9, magnetic, nitfol, scare and scott with no errors, then:
[...]

Scanning dependencies of target glulxe
[ 58%] Building C object CMakeFiles/glulxe.dir/glulxe/main.c.o
[ 58%] Building C object CMakeFiles/glulxe.dir/glulxe/files.c.o
[ 58%] Building C object CMakeFiles/glulxe.dir/glulxe/vm.c.o
[ 58%] Building C object CMakeFiles/glulxe.dir/glulxe/exec.c.o
[ 59%] Building C object CMakeFiles/glulxe.dir/glulxe/funcs.c.o
[ 59%] Building C object CMakeFiles/glulxe.dir/glulxe/operand.c.o
[ 59%] Building C object CMakeFiles/glulxe.dir/glulxe/string.c.o
[ 59%] Building C object CMakeFiles/glulxe.dir/glulxe/glkop.c.o
[ 59%] Building C object CMakeFiles/glulxe.dir/glulxe/heap.c.o
[ 60%] Building C object CMakeFiles/glulxe.dir/glulxe/serial.c.o
[ 60%] Building C object CMakeFiles/glulxe.dir/glulxe/search.c.o
[ 60%] Building C object CMakeFiles/glulxe.dir/glulxe/gestalt.c.o
[ 60%] Building C object CMakeFiles/glulxe.dir/glulxe/osdepend.c.o
[ 61%] Building C object CMakeFiles/glulxe.dir/glulxe/unixstrt.c.o
[ 61%] Building C object CMakeFiles/glulxe.dir/glulxe/accel.c.o
[ 61%] Building C object CMakeFiles/glulxe.dir/glulxe/profile.c.o
[ 61%] Building C object CMakeFiles/glulxe.dir/glulxe/float.c.o
[ 61%] Linking C executable glulxe
remglk/libglk.a(rgfref.c.o): At function `glk_fileref_create_temp':
rgfref.c:(.text+0x2bf): warning: the use of `mktemp' is dangerous, better use `mkstemp' or `mkdtemp'
CMakeFiles/glulxe.dir/glulxe/glkop.c.o: At function `init_dispatch':
glkop.c:(.text+0x10b): reference to `gidispatch_set_autorestore_registry' not defined
collect2: error: ld returned 1 exit status
CMakeFiles/glulxe.dir/build.make:511: failure in the instructions for target 'glulxe'
make[2]: *** [glulxe] Error 1
CMakeFiles/Makefile2:548: failure in the instructions for target 'CMakeFiles/glulxe.dir/all'
make[1]: *** [CMakeFiles/glulxe.dir/all] Error 2
Makefile:127: failure in the instructions for target 'all'
make: *** [all] Error 2

Alan2 save prompt other than Garglk

I've been poking the code and made save prompt work for remglk adding this
cibersheep@0ce6038

It needs additional macros in the cmake, when building alan2 it need GLKUNIX_FILEREF_GET_FILENAME
This works for remglk, as mention but it fails for glkterm. I'm assuming then, it may be a wrong approach. Should I add a condition on the cmake? or do you reckon the whole approach is wrong?

AdvSys won't build

I forgot about this:
Building with remglk but I guess with any implementation, AdvSys won't success (it misses size_t definition in glkstat.h)

[100%] Building C object CMakeFiles/advsys.dir/advsys/glkstart.c.o
In file included from /home/cibersheep/Escriptori/esborra/terps-upstream/terps/advsys/glkstart.c:14:
/home/cibersheep/Escriptori/esborra/terps-upstream/terps/remglk/glkstart.h:75:113: error: unknown type name ‘size_t’
   75 | _serialize_context_t, char *, glkunix_serialize_object_f, int, size_t, void *);
      |                                                                ^~~~~~

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.