realnc / frobtads Goto Github PK
View Code? Open in Web Editor NEWLinux and macOS development tools and text-mode interpreter for TADS adventure games.
Linux and macOS development tools and text-mode interpreter for TADS adventure games.
👋 while updating frobtads build on the homebrew side, I noticed the license is missing, any pointer about the license? Thanks!
2.0! Whoohoo! I had no idea!
I installed a shiny new gcc [8.3.1 20190311 (Red Hat 8.3.1-3)] and cmake3 to build this on CentOS 7 but I get an error when building ostzposix.c (see below). I know CentOS is more about stability and has some old libraries. Is GLIB/some aspect of my system too ancient to build this? It looks like Octave solved this issue (in 2011) by wrapping that in "#if defined (HAVE_STRUCT_TM_GMTOFF) ... #endif... Can I do that? I'm not much of a C/C++ coder...
https://lists.gnu.org/archive/html/octave-maintainers/2011-12/msg00015.html
[ 0%] Building CXX object CMakeFiles/COMMON_OBJECTS.dir/src/missing.cc.o
[ 1%] Building C object CMakeFiles/COMMON_OBJECTS.dir/tads2/osifc.c.o
[ 1%] Building C object CMakeFiles/COMMON_OBJECTS.dir/tads2/osnoui.c.o
[ 2%] Building C object CMakeFiles/COMMON_OBJECTS.dir/tads2/osstzprs.c.o
[ 2%] Building C object CMakeFiles/COMMON_OBJECTS.dir/tads2/osrestad.c.o
[ 2%] Built target COMMON_OBJECTS
[ 2%] Building C object CMakeFiles/TADS3_RC_OBJECTS.dir/tads2/ostzposix.c.o
/home/amead/projects/tads/source/frobtads-2.0/tads2/ostzposix.c: In function ‘os_get_timezone_info’:
/home/amead/projects/tads/source/frobtads-2.0/tads2/ostzposix.c:298:31: error: ‘const struct tm’ has no member named ‘tm_gmtoff’
info->dst_ofs = tm->tm_gmtoff;
^
/home/amead/projects/tads/source/frobtads-2.0/tads2/ostzposix.c:299:67: error: ‘const struct tm’ has no member named ‘tm_zone’
safe_strcpy(info->dst_abbr, sizeof(info->dst_abbr), tm->tm_zone);
^
/home/amead/projects/tads/source/frobtads-2.0/tads2/ostzposix.c:303:31: error: ‘const struct tm’ has no member named ‘tm_gmtoff’
info->std_ofs = tm->tm_gmtoff;
^
/home/amead/projects/tads/source/frobtads-2.0/tads2/ostzposix.c:304:67: error: ‘const struct tm’ has no member named ‘tm_zone’
safe_strcpy(info->std_abbr, sizeof(info->std_abbr), tm->tm_zone);
^
make[2]: *** [CMakeFiles/TADS3_RC_OBJECTS.dir/build.make:83: CMakeFiles/TADS3_RC_OBJECTS.dir/tads2/ostzposix.c.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:137: CMakeFiles/TADS3_RC_OBJECTS.dir/all] Error 2
make: *** [Makefile:150: all] Error 2
would this be possible? terminals don't seem to have an issue with them.
It seems that if the tads3 library files are installed in the default location of "/usr/local/share/frobtads" on Macos versions above el capitan, all header files used will be part of a recompilation even though the object files are already built and no changes has been made. (It somehow detects changes in these files everytime t3make runs.)
A workaround for this is to install the frobtads installation in the home folder of the user. Or if already installed, just make a copy the library to user folder and replace all references to them in the Makefile.t3m file.
I guess one could be proactive if installing locally with make for the first time by setting the env:
-DCMAKE_INSTALL_PREFIX=/Users/<username>
(instead of "/usr/local" or if there's a universal better folder for library files that won't behave as "/usr/local/" does)
The homebrew formula defaults to "/usr/local" folder though, maybe the user can be prompted of where the installation should be or the default change to the home folder or better. Not sure of what might be the best solution.
Referring to tads3/vmrun.cpp:1046
#define true_for_cond(v) \
((v)->typ == VM_TRUE || (v)->typ == VM_ENUM \
|| ((v)->typ == VM_INT && !(v)->val.intval == 0))
Surely this is a mistake. The expression !(v)->val.intval == 0
is equivalent to (!(v)->val.intval) == 0
Surely it should be:
#define true_for_cond(v) \
((v)->typ == VM_TRUE || (v)->typ == VM_ENUM \
|| ((v)->typ == VM_INT && (v)->val.intval != 0))
Sorry if this is a dumb question, but when I make some mistakes in authoring TADS 2 games, particularly with the arguments to verX, doX, and ioX functions, I get the error below. This can be replicated by simply adding an arbitrary extra parameter to any verification method. Then compile and play the game and cause the method to fire.
I assume that the symbol table would provide more clues to debug this issue? Like the function name, at least?
[TADS-1026: wrong number of arguments to user function "<NO SYMBOL TABLE>.<NO SYMBOL TABLE>"]
Is this because I have failed to include debugging information? I have tried compiling with -ds and -ds2, am I doing it wrong?
tadsc -ds2+ file.t
tadsc -ds+ file.t
tadsc -ds2 file.t
tadsc -ds file.t
This issue is identical in a copy of tadsc/frob that I compiled in 2014 and 2.0 that I compiled today. I see it affects some other users:
http://www.allthingsjacq.com/intfic_clubfloyd_20090103.html
I use https://github.com/mikawa/G-TADS to create a german TADS project.
I installed the 'de_de' files from there.
I created an example project with
beispiel.t
#charset "utf8"
//...
#include <adv3.h>
#include <de_de.h>
//...
startRoom: Room 'Startraum'
"Das ist der Startraum. Umlaute sind ÄÖÜ äöü ß etc... Gib 'über' ein..."
;
Then i compile my project and I run the t3-file:
frob -k utf8 beispiel.t3
The output is ok (I see the mutated vowel rendered correctly with the curses interface).
However, if I enter a mutated vowel I get "??" instead of the vowel (e.g. '??ber' instead of 'über'). The text is interpreted correctly, only the rendered input text is wrong.
Note: with the plain interface works as expected.
I'm exploring the possibility of implementing the language server protocol (lsp) for tads3. As far as I can tell I would have to extend the networking code to allow lsp clients to connect to a running tads VM over a socket and add JSON-RPC parsing in tads itself. Can anyone comment on additional necessary steps or possible shortcuts?
The web site says the latest version is 1.2.3, but 1.2.4 was released 19 months ago.
The windows interpreter t3run has the option to log all console input to a specified file. This didn’t make it to the frobtads version it seems.
In the vscode extension https://github.com/toerob/vscode-tads3tools there’s now a feature to use game scripts. But it can’t generate them automatically on *nix platforms without this option.
I tried to capture the input via pipes but I didn’t manage to do it. So I would be grateful if this was added. Otherwise is there any obstacles or issues I should know about if I were allowed to add this myself?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.