RGBA32 revised-4 - experimental tester build (base r12261, d7b76f2)
Pre-releaseExperimental prototype for testers. Not integrated into Simutrans Standard, not an official Simutrans release, not a stable version.
This is a later candidate than the r12254 one on main. main is untouched.
What to download
| file | what |
|---|---|
simutrans-rgba32-revised4-r12261-win64-sdl2.zip |
Windows x86_64, SDL2. The 32-bit build to test, a 16-bit build of the same tree for comparison, and the Simutrans data directory. No pakset. |
simutrans-rgba32-revised4-r12261-linux-x86_64-sdl2.tar.gz |
Linux x86_64, SDL2. The same two builds from the same tree, dynamically linked. No pakset. |
RGBA32-CANDIDATE-REVISED-4.diff |
the exact patch both were built from |
*.sha256 |
hashes of the archives |
Windows archive sha256 99a1c3e46c0d875ce8cb6bab30058c302d93d8cf199b1284cf24957522319632
simutrans-rgba32.exe bf3234ffbe3d68aff550dce43fc12536f921f07998849187e539225bd641acae
simutrans-16bit.exe 0ec5d6ce01fe04671422d57ec6f907b39bc87df68c565fa621a95b773ba83ddf
Linux archive sha256 de1b768e018f85224a174806e9eac5317b0e5069388fd85e032d476092e14ecb
simutrans-rgba32 08028d3488ba56614404a1a8543acd9018f498697e510ba6a629acda71b08ac9
simutrans-16bit 4874a88f37f2a65145fc5119e337b31601e944dce2d44f84b41b3d5e05df1a3d
patch sha256 b562c2da8dd1281809cb8a08a657423578a0daf67068d0560e0936238d6cc08c
Identity
- candidate RGBA32-CANDIDATE-REVISED-4
- base official SVN trunk r12261 = git
ecca332dca25025833f5ce6641491f8886a3ef9f - shape 26 files, 15 modified and 11 added, +6743 / −832
- tree branch
candidate/rgba32-revised-4-r12261, commitd7b76f2cd7f1d2752c0c5f951ce0dbf7281d27db, complete source undersource/rgba32-revised-4-r12261/ - builds Windows x86_64 (MinGW GCC 16.1.0) and Linux x86_64 (GCC 15.2.0, Ubuntu 26.04), both SDL2, Release, multithreaded
- built with
cmake -DSIMUTRANS_BACKEND=sdl2 -DSIMUTRANS_TRUE32=ON -DSIMUTRANS_MULTI_THREAD=ON -DCMAKE_BUILD_TYPE=Release
The published binary really is the 32-bit renderer. Checked in the executable, not only in the build: nm -C simutrans-rgba32.exe finds g_simgraph32 and does not find g_simgraph16; the comparison binary is the mirror image. At runtime the SDL2 backend creates the framebuffer without the pixel-format error a COLOUR_DEPTH=32 build raises unless the surface is 32 bpp with an 0xFF000000 alpha mask.
Linux x86_64
simutrans-rgba32-revised4-r12261-linux-x86_64-sdl2.tar.gz — same candidate, same
tree, same options; GCC 15.2.0 on Ubuntu 26.04, SDL2, Release. The archive keeps
the executable bits, so extract with tar -xzf and run in place.
tar -xzf simutrans-rgba32-revised4-r12261-linux-x86_64-sdl2.tar.gz
cd simutrans-rgba32-revised4-r12261-linux-x86_64-sdl2
# put a pakset in ./pak (pak64) or ./pak128, and copies of saves in ./save
./simutrans-rgba32 -singleuser
./simutrans-16bit -singleuser # the same world, ordinary renderer
It is dynamically linked, not bundled. Direct dependencies: libSDL2-2.0.so.0,
libpng16.so.16, libz.so.1, libbz2.so.1.0, libfontconfig.so.1,
libfreetype.so.6, libzstd.so.1, libminiupnpc.so.21, libstdc++.so.6,
libgcc_s.so.1, libm.so.6, libc.so.6. On Ubuntu 26.04 that is
libsdl2-classic libpng16-16t64 zlib1g libbz2-1.0 libfontconfig1 libfreetype6 libzstd1 libminiupnpc21. Check with ldd ./simutrans-rgba32 | grep 'not found'
before reporting a startup failure — libminiupnpc is versioned and is the one
most likely to differ on another distribution.
One build is not a promise that it runs on every distribution. Built and
linked against glibc on Ubuntu 26.04. If it does not start on yours, please
report the distribution and the exact error; that is useful.
What was checked on Linux: the archive extracts with its executable bits and its
own SHA256SUMS.txt verifies; g_simgraph32 is present in simutrans-rgba32 and
absent from simutrans-16bit, and the reverse for g_simgraph16; ldd reports
nothing missing; and both binaries start, read a pakset and enter a loaded world
— with SDL's headless dummy driver and again under a virtual X server
(Xvfb, SDL2 x11 driver). That is not a test on anyone's desktop, and zoom and
info windows were not driven interactively; see the validation section below.
What it does
The screen framebuffer and the per-player image caches are ARGB8888 instead of RGB565, so everything that mixes colours while drawing — day/night shading, transparency, blending, player colours, outlines, zoom filtering — works with 8 bits per channel instead of 5/6/5.
Pakset image data is unchanged. Your paksets stay what they are; savegames and the network protocol are unchanged too.
Compatibility and what you need
- Windows x86_64. Self-contained: only Windows system DLLs are imported, SDL2 and the runtime are linked statically. Nothing to install.
- You supply a pakset — pak64 or pak128, copied into the extracted folder as it would sit in a normal Simutrans folder. None is bundled.
- Use copies of your savegames, and run with
-singleuserso settings, saves and screenshots stay inside the extracted folder instead of yourDocuments\Simutrans.
simutrans-rgba32.exe -singleuser
simutrans-16bit.exe -singleuser # the same world, ordinary renderer
XR32 — no content exists, so expect nothing from it
XR32 is an optional extra node the engine can read from a pak. It needs a 32-bit build, and SIMUTRANS_XR32 set so that its first character is 1 — it is read once at startup with getenv("SIMUTRANS_XR32"), so it is not a CMake option, not a command-line switch and not a simuconf.tab setting — and a pakset that actually contains the nodes.
No public pakset contains them, and the makeobj that would write them is not part of this candidate. On anything you can download today, SIMUTRANS_XR32=1 changes nothing you can see. Testing the 32-bit renderer with your ordinary IMG paksets is the useful test; XR32 content is a separate thing that does not exist yet.
What is validated, and what needs your feedback
Validated:
- the 16-bit renderer is unchanged by this candidate — 13 440 drawing cases (three zooms, four clipping passes, seven draw families, eighty images, two players) byte-identical to trunk r12261, with the coverage counted inside the moved code and two deliberately injected defects, one in the clipping and one in the resampling, caught by the same comparison. So
simutrans-16bit.exehere should behave like an ordinary build; - the 32-bit renderer's frozen colour contracts, its zoom resampling (exact over 645 million pixels), and three multithreading defects found and fixed with sanitizers and negative controls;
- both packages: extracted from the archive, started, loaded a saved world and ran, with the 32-bit framebuffer active — on Windows, and on Linux under both the headless SDL driver and a virtual X server.
Needs feedback — not measured:
- long play sessions on real paksets;
- any machine, driver or Windows version other than the single box this was built and measured on;
- GDI and SDL3 backends, and macOS: not built here;
- on Linux: any distribution, desktop, GPU or driver other than the single Ubuntu 26.04 box this was built on, and X11 versus Wayland differences;
- interactive zoom changes and info windows driven through this binary: those draw families and zoom levels are covered by the certified matrices on the same sources, but the machine used has no GUI automation, so they were not re-driven through the published executable.
No claim is made that this is free of defects, or that it matches trunk outside the tests described above.
Known inherited defects
Present in Simutrans itself, not introduced and not fixed here, and not claimed harmless:
- L1 — a left shift of a negative value in the clipping code. Verbatim from
simgraph16.cc, reproduces in unmodified trunk, and now also compiled into the shared clipping header. - L2 — an unlocked read of an image's recode flags in the main viewport. Trunk's; this candidate adds a writer under the same mutex and does not widen it.
- L3 — a one-element overread when a ground image contains a semi-transparent pixel. No shipped pakset has such art. AddressSanitizer did detect it, during world creation; that abort is what prevented running the later semi-transparent fixture rendering test under ASan.
Reporting
Open an issue. Please include the package name and this tag, your Windows version and graphics hardware, the pakset and its version, the steps from a fresh start, the zoom level and which window was open (most of the changed code is clipping and zoom), a screenshot, the log from -debug 3, and a minimal savegame when one is needed.
Most useful, roughly in order: scroll and zoom over a large map at every zoom level watching tile edges; open info windows — tile, station, convoy, depot, line — at zoom levels other than the default; transparency, including underground view and the transparent building mode; player colours with more than one player; day/night transitions; an hour or more on a busy map; save and reload.
The most useful comparison is simutrans-rgba32.exe against simutrans-16bit.exe from this same package on the same world.
Full instructions: docs/TESTING-RGBA32-REVISED-4.md and README-TESTERS.txt inside the archive.
Simutrans is licensed under the Artistic License 1.0; this build is a modification of the Simutrans source offered under the same licence, with LICENSE.txt included verbatim.