QTads 3.1 (now 3.3)

QTads is a cross-platform, multimedia interpreter for TADS games. It is fully compatible with HTML TADS (aka “Multimedia TADS.”) Both TADS versions in use today (v2 and v3) are supported. It runs on Linux, macOS and Microsoft Windows.

Downloads for Linux AppImages (32-bit as well as 64-bit), macOS and Windows:

https://realnc.github.io/qtads/#downloads

Changes since 3.0:

  • Fixed sound not working correctly anymore after canceling a sound with a crossfade.

  • Fixed a Unicode parsing issue that could result in broken text matching due to miscompilation on some systems resulting from C++ undefined behavior. This could have all sorts of weird side effects, like verbs, nouns, etc, not getting recognized, HTML tags not working, and anything in-between.

  • Fixed lower-case conversion assuming the text is always UTF-8, even though this is usually not true in Tads 2 games. This could in some cases cause issues for non-ASCII Tads 2 games. Now the proper text codec is used.

  • Fixed “unnamed” (from the point of view of Tads) temporary files being created in the OS root directory (and thus usually failing since the user doesn’t have filesystem permission to write there.) Now those files will be created in the proper, OS-configured directory for temp files.

  • Various bugfixes in the audio engine. Due to this, FluidSynth 2.x is now required for MIDI support. Ubuntu 20.04 ships it. 18.04 does not.

  • The Linux AppImage binary had a broken online update check on some systems. This was due to an incompatibility caused by the AppImage bundling a copy of OpenSSL 1.0 (from Ubuntu 16.04) and using that copy unconditionally. We now bundle 1.1 but don’t use it if the system already provides it. We only use it on old distros that only provide OpenSSL 1.0. This is necessary because 1.0 and 1.1 are incompatibile with each other; an application built using 1.1 won’t run with 1.0 and vice versa.

  • A C++17 compiler is now required. GCC 5.4 (Ubuntu 16.04) is the oldest GCC version that is verified to still be able to build QTads.

11 Likes

Nice.

Had minor problems building under windows (Q5.12);

in qtads.pro:

took out:

  #      QMAKE_CFLAGS += -march=i686 -mtune=generic
  #      QMAKE_CXXFLAGS += -march=i686 -mtune=generic

added:

 QMAKE_CXXFLAGS += -fpermissive

Last one workaround so printf casts of void* to long int were not errors.

1 Like

That means you’re doing a 64-bit instead of a 32-bit build. These are now fixed in git:

https://github.com/realnc/qtads/compare/2230b43af918489f489b462c23fb03dbf1a4cd64...14cef3e79d7ad079661870c7719ff52839e02fda

I should mention that 64-bit builds for Windows have not gotten much (if any) testing. It worked out quite well on other platforms due to long int being 64 bits there, but on Windows it’s 32 bits, so who knows how many bugs are still lurking. If you find anything going wrong compared to the 32-bit build, please feel free to report back!

1 Like

I made a couple changes to TADS in Gargoyle due to problems on 64-bit Windows. Basic testing indicates no problems, but I can’t guarantee things.

The commit is here: Support building TADS with LLP64 · garglk/garglk@2037818 · GitHub

There is one functional change: osrndp(), which is used to round to the “worst-case alignment boundary” now does 64-bit rounding as opposed to the previous 32. The rest are all the size mismatches in the printf() calls.

As noted in the commit, this was quick and dirty for 64-bit systems, and will fail in exactly the same way once 128-bit systems are here…

Some years ago I sent tads2/h_le_c11.h to Mike and he included it in the base code. On all little-endian platforms, you can use that instead (by defining _M_LE_C11.)

I did an oopsie with the original uploads. Nothing major, just the application window menus didn’t have any icons on Linux because the AppImages didn’t include a library for handling menu icons.

I re-uploaded the releases, so if you care about the menu icons, just re-download.

(Windows and macOS don’t actually have menu icons, so no need to re-download. But I re-uploaded the releases for those platforms with the missing library included just in case.)

2 Likes

Sigh…

Version 3.1 introduced an annoying regression where MIDI music volume was way too low. I just released 3.2 which corrects the issue:

https://realnc.github.io/qtads/#downloads

I also took the opportunity to provide a 64-bit Windows version. It’s not as well tested as the 32-bit version though. So if something doesn’t seem right compared to the 32-bit version, please report it.

2 Likes

@fos1
I wanted to ask if you’re interested in testing if the arm64 build of QTads works on your RPi. Since I’ve set up an ARM build environment for hugor, it can be used to build qtads as well.

I uploaded it here:

ARM64:
http://83.212.109.87/~realnc/qtads/test/QTads-2022-05-16-Linux-arm64-AppImage.tar.gz

ARM32v7:
http://83.212.109.87/~realnc/qtads/test/QTads-2022-05-16-Linux-arm32v7-AppImage.tar.gz

Very nice. I will give it a try. It will probably be tomorrow. I am in for testing most of today. :frowning:

Thank you

PS. I am currently only set up for arm64.

1 Like

The arm64 image works fine on my RPi 4.

Wahoo! Thank you!

1 Like

Thanks! :+1:

1 Like

3.3 is released. No user-visible changes since 3.2 (just packaging changes and some updated library dependencies.) The main reason for this release is to provide ARM builds for Linux (arm64 and arm32v7.)

2 Likes