:bm1::bm2::bm3::bm4::bm5::bm6::bm7::bm8::bm9::bm0:

@bonkmaykr@canithesis.org

20 Male, Missouri, United States
Running Canithesis Interactive
Java / C++ engineer Linux advocate.
Newly an Amiga + Saturn nut.
wipEout and THE FINALS fan

I made the Firestar Mod Manager for Playstation Vita. Currently working on a danmaku shooter game called "Time Falcon". My posts can range anywhere from deep nerd thoughts to brainless shitposting.

Give me liberty or give me death
XMPP/Jabberbonkmaykr@canithesis.org

56 following, 31 followers

1 ★ 0 ↺

[?]:bm1::bm2::bm3::bm4::bm5::bm6::bm7::bm8::bm9::bm0: »
@bonkmaykr@canithesis.org

I want to take a break and work on a quick OpenGL project for Acerola's Dirt Jam, but before I do, I've spent the past couple days refining parts of our game's codebase and finishing up Windows support. Switching over to MinGW had to be put off until now because of some hurdles before.

Here's what I learned.

MinGW is better behaved than MSVC, as I expected. However, it also has some bugs specific to it. For some reason our INI read/write library (@wirlaburla@canithesis.org) sends corrupted junk to the file input stream during config construction - I figured out this is apparently a known issue that occurs in one of the -O1 optimizations since at least three years ago and was never addressed. For now, the Windows ports have zero optimizations until I can figure out the exact offending CFLAG.
https://stackoverflow.com/questions/71109757/very-strange-mingw64-c-bug-when-readinig-from-a-file-inside-a-function

Allegro's official TrueType plugin relies on a FreeDesktop library called Freetype, which in turn has an optional, but highly encouraged (and recursive! the hell?) dependency on Harfbuzz, another library that does the exact same thing. Harfbuzz in turn depends on DirectX 10's "DirectWrite", ANOTHER library that does THE SAME THING, as well as GLib, which is to put it very simply a collection of stuff that's mostly already in libc.

If you raised your eyebrows a little and said "That sounds fucking retarded", then you would be 100% correct. In typical FDO/GNOME/RedHat fashion, they have managed to take something so simple and contrive absurd levels of pointless complexity out of it.

This single dependency tree, which is enabled in every binary distribution of Freetype out there, is singlehandedly responsible for Allegro silently dropping support for Windows XP out of the box. Freetype has to be recompiled to remove the bloat.

To be clear, I'm not mad at the Allegro guys - most of the design decisions for liballeg 5.x were made like a decade and a half ago when the whole FreeDesktop situation was a lot different, and I doubt any of them even noticed this was the case because nobody uses XP anymore. The only way I even found all this out was when I was forced to dependency walk the compiled binary to find out why it was failing to load, the average developer now is not going to think twice when they just grab the MinGW/Nuget packages and ship them as-is.

So yeah. MYTHOS engine works on Windows now. I'm glad to check another milestone towards completing the first demo version off the list.

    History