Skip to content

RGBA32 revised-7 - portable Linux tester build (base r12261, 16c19c1)

Pre-release
Pre-release

Choose a tag to compare

Experimental prototype for testers. Not integrated into Simutrans Standard, not an official Simutrans release, not a stable version.

Linux only. This does not replace or update the Windows builds in the earlier pre-releases — those are still rgba32-revised-5-…-win64-sdl2.zip and rgba32-revised-6-…-win64-sdl3.zip, and they do not contain the two fixes below.

What is fixed

Thanks to makie and Yona-TYT for the reports — all three of these came from testing, not from us.

  • The black window at startup. simgraph32_init() never set an initial clipping rectangle, so until something else set one, every drawing operation was clipped against an empty rectangle: no error, nothing on screen, and a window resize appeared to fix it because resizing sets a clip. (FIX-1, in revised-5.)
  • The window with a panel and buttons and no text. simgraph32_init() also never loaded a font, while simgraph16_init() always has — right after the framebuffer, with three fallbacks and a clear error if none works. So in a 32-bit build the first font load happened much later, from the theme code, by which time the working directory is the user directory and the relative fallback font/cyr.bdf no longer resolves. With no font at all the panels and buttons still draw, because they are boxes, and the text does not. (FIX-3.)
  • libbz2.so.1.0: cannot open shared object file. Not something missing from anyone's system: Debian and Ubuntu's bzip2 declares the name libbz2.so.1.0, Fedora's declares libbz2.so.1. Ours was asking for the Debian name. bzip2 is now linked statically, so the package does not ask for it at all and the workaround that was needed to test the previous build is not needed here. (Packaging, not code.)

The tree flicker at the map edge is still open and still not reproduced.

Download

file what
simutrans-rgba32-revised7-r12261-linux-x86_64-sdl2.tar.gz Linux x86_64, SDL2. The 32-bit build to test and a 16-bit build of the same tree for comparison, plus the Simutrans data directory. No pakset, no savegames, no configuration.
RGBA32-CANDIDATE-REVISED-7.diff the full patch against r12261 these binaries were built from
FIX-1-…, FIX-2-…, FIX-3-… .diff the three changes on their own, for review
*.sha256 hash of the archive
archive              dd26da5ed1f6ebd9fd891bf5d893efb3e96301d35deff755d77da09f154e4d8f
  simutrans-rgba32   f19d5832c450400acbbd3bd7ef892ef0f8ea26d028695a8c84b0588ee34d6522
  simutrans-16bit    7df573e95e97721e1504b83fbc096cea75df5054ea4811b7bcccf457b8b6d97c

RGBA32-CANDIDATE-REVISED-7.diff  a488d13ec99a4d2409e4f36b028c862afb36303096862c2a3282ff14e95844cb
FIX-1-simgraph32-initial-clip-rect.diff  5edeca53b801448affd86b2a3557debcda10dc452b5c4c0f8eac9da7202c1b40
FIX-2-cmake-sdl3-true32.diff             9b78236923a98f7defbe29b5e4a41ac505d7c0f12984697f3bf48efc76df2918
FIX-3-simgraph32-load-font.diff          b5bcad6f1c25263b4598938191184d882f17e1cbe2fc4fe2b5594e2f025156e6

This archive has its own hash. It is not the Ubuntu-built revised-7 that was prepared earlier and never published; these are different bytes from a different build host.

Identity

  • candidate RGBA32-CANDIDATE-REVISED-7 = revised-6 + FIX-3, and it carries FIX-1 and FIX-2 as well
  • base official SVN trunk r12261 = git ecca332dca25025833f5ce6641491f8886a3ef9f
  • source of these binaries source/rgba32-revised-7-r12261/ on branch fix/fedora-deps-and-font, commit 16c19c183fd5d6282499c15e16358cfa86232009 — r12261 plus the patch above and nothing else
  • built on Debian 13 (glibc 2.41), GCC 14.2.0, CMake 3.31.6, Release, multithreaded, SDL2 2.32.4

The build host changed; the code did not. This is the same candidate that was validated before, compiled on an older base to widen what it runs on.

Requirements, measured on these exact bytes

glibc      2.38 or newer
libstdc++  GLIBCXX_3.4.29, CXXABI_1.3.9

Dynamic dependencies, all carrying the same name on every distribution tested:

libSDL2-2.0.so.0  libpng16.so.16  libz.so.1       libfontconfig.so.1
libfreetype.so.6  libzstd.so.1    libstdc++.so.6  libgcc_s.so.1
libm.so.6         libc.so.6

bzip2 and miniupnpc are linked statically and are not asked for at all. Those two are precisely the libraries whose name diverges between distributions — libbz2.so.1.0 against libbz2.so.1, libminiupnpc.so.18 against libminiupnpc.so.21 — so no single dynamically linked build could satisfy both families. Nothing else was statically linked. Their licences (BSD-style and BSD-3-clause) permit binary redistribution, and THIRD-PARTY-STATIC.txt in the archive carries the notices.

For comparison, the previous Linux package needed glibc 2.43, which is why it could not have run on Fedora 43 at all.

Where this archive was actually run

The same file, extracted and run, with no symlink created anywhere:

distribution glibc unresolved libraries text in the pakset window pakset + savegame resize errors
Debian 13 2.41 0 yes loads ok 0
Fedora 43 2.42 0 yes loads ok 0
Fedora 44 2.43 0 yes loads ok 0

In each case both executables were checked, and the font fallback was exercised separately by pointing fontconfig at a configuration with no fonts in it — the situation that produced the blank window. There the 32-bit build now renders text from the bundled font/cyr.bdf with exactly the same ink as the 16-bit build (0.299406 on all three distributions); before the fix it rendered none.

These are Xvfb runs: a real X server, but a virtual one. They exercise the X11 path, the font resolution and the drawing. They are not a Wayland session and not anyone's desktop, and no claim is made about Wayland, compositors, GPUs or drivers.

Running it

Extract into a directory of its own, not over your normal installation:

tar -xzf simutrans-rgba32-revised7-r12261-linux-x86_64-sdl2.tar.gz
cd simutrans-rgba32-revised7-r12261-linux-x86_64-sdl2
# put a pakset in ./pak (pak64) or ./pak128, and COPIES of your saves in ./save
./simutrans-rgba32 -singleuser
./simutrans-16bit  -singleuser      # the same world, ordinary renderer

-singleuser keeps settings, saves and screenshots inside that directory instead of your home directory. Please use copies of savegames you care about. Full instructions are in README-TESTERS.txt inside the archive.

XR32 is unchanged: it needs a 32-bit build, SIMUTRANS_XR32=1 in the environment, and a pakset that contains the nodes. No public pakset does, and makeobj is not part of this candidate.

Known inherited defects

Unchanged, and not claimed harmless: the left shift of a negative value in the clipping code, the unlocked read of an image's recode flags in the main viewport, and the one-element overread when a ground image contains a semi-transparent pixel. All three reproduce in unmodified trunk.

Reporting

https://github.com/Dkijas/simutrans-true32-renderer/issues — there is a "Bug / regression" template. Please include this tag, your distribution and version, X11 or Wayland, the pakset and version, the steps from a fresh start, the zoom level and which window was open, a screenshot, and the log from -debug 3.