Robert Sundling
@robertsundling.bsky.social
370 followers 300 following 280 posts
Solo game dev and retro enthusiast, making indie games since the DOS days. Currently working on RASDAN, a DOS/VGA game I started in 1996 and never finished. It's still for DOS! Why not? Madison, Wisconsin, USA, Earth, Sol System, Milky Way, The Universe.
Posts Media Videos Starter Packs
Pinned
robertsundling.bsky.social
Back in 1991, I wrote a fully functional text adventure development system for DOS. I never ended up making any actual games with it, and it's now been untouched for almost 35 years.

Just for fun and historical interest, I've decided to make it and its source code freely available on GitHub. Enjoy!
GitHub - RobertSundling/ADVGEN
Contribute to RobertSundling/ADVGEN development by creating an account on GitHub.
github.com
robertsundling.bsky.social
Amazingly, your post was in my feed directly under this one.
robertsundling.bsky.social
And yes, the lazy dog is "calming" simply to demonstrate Monaspace's texture healing, which loves the word "calming." 😃
robertsundling.bsky.social
I am increasingly a fan of the Monaspace font family (monaspace.githubnext.com).

I've added support for Monaspace features to the GUI TTY interface for my DOS game engine (which takes the place of an external MDA monitor). It's fantastic to be able to customize its look and feel so thoroughly.
RASDAN Remote TTY settings window showing the Fonts tab. The font family is set to Monaspace Neon, with adjustable sliders for font weight, bold weight, italic slant, and width. Options for texture healing and several ligatures (equals, greater/less or equal, arrows, markup, F# operators) are visible, with most enabled. On the right is a live preview panel displaying sample text, numbers, and ligature symbols. The entire screen is amber-on-black, styled like a retro DOS MDA terminal.
robertsundling.bsky.social
Darn. So you'll have to handle Windows tech support, too, telling users to do this...

Perhaps instead you could work around it by having your game play a continuous, very loud 22 kHz sine wave, inaudible to most humans, to keep the audio system active. Absolutely no way that could go wrong. 😉
robertsundling.bsky.social
It seems that what happened was Walgreens removed the “Healthcare Solutions” section of their site as part of a restructuring, which included the Walgreens Respiratory Index page. But that actually just displayed this external Power BI content in a frame.
robertsundling.bsky.social
It’s still there, if you visit the PowerBI page directly. Not sure for how long or if the data will keep being updated, but it says it’s updated yesterday: app.powerbi.com/view?r=eyJrI...
Power BI Report
Report powered by Power BI
app.powerbi.com
robertsundling.bsky.social
It's crazy the kind of stuff you end up writing when you're building a network stack for DOS from scratch in C++26.
C++ function that parses an IPv4 address string into a 32-bit integer, validating each octet and returning an error type if the format is invalid. Uses std::expected for error handling and processes characters one by one.
robertsundling.bsky.social
Congratulations to the GNU Compiler Collection team for their successful launch of GCC 15.2! Great work, everyone! 🥳
GCC 15 Release Series - GNU Project
gcc.gnu.org
robertsundling.bsky.social
I'm testing GCC 15.2 today.

I just used it to build the various test programs for my game engine for all available platforms, including DOS and Windows.

Success! But it's always hilarious to me to see a test that runs at 60 fps in DOS on a 486 with a VGA run at 13,000+ fps on a modern machine.
Screenshot of a simple test of a game engine, showing 13,745 frames per second.
robertsundling.bsky.social
GCC 15.2 drops tomorrow. Got a head start today and built a cross-compiler for my 32-bit DOS apps from the 15.2 RC.

It's working well so far!

(It reports as 15.1.1, but that's fine. I didn't touch gcc/BASE-VER or gcc/DATESTAMP, where I could have bumped it up to "15.2.0 20250808" had I wanted.)
Screenshot snipped from a DOS application, showing:

Build target: DOS (DOS32, VGA) 32-bit
C++ compiler: GCC 15.1.1 20250801 (C++26/C23)
Assembler: NASM 2.16.03
robertsundling.bsky.social
Back in the DOS days, when you’d send a graphical mouse cursor to the mouse driver you’d give coordinates for its “hot spot” too. For a normal cursor it’d be (1,1), not (0,0), due to the one-pixel border around the cursor. Here’s a pointing finger example from the official Microsoft mouse book. 👆
robertsundling.bsky.social
I always end up so many levels away from what I'm actually working on.

I was thinking it'd be great to remotely control my various vintage PCs from my main workstation, with them all in little windows. Now I'm investigating custom SVGA + PS/2 keyboard/mouse + power control KVM-over-IP solutions...
robertsundling.bsky.social
Aha, I found it! The SVGA that doesn't work properly with its 320x240x256 color VBE linear mode is integrated into the motherboard of an old Compaq desktop PC. I'll probably try that one first with a VGA to HDMI adapter so that I don't accidentally destroy a CRT as I fuzz the CRTC registers. 😉
robertsundling.bsky.social
Sadly, I also can no longer remember which of my SVGA cards didn't properly support that 320x240 linear mode via VBE. It's been more than a year. I know I had at least one card that didn't, and that's where I really want to concentrate my testing.

I should have taken better notes!
robertsundling.bsky.social
Although this worked on an emulated SVGA, the first attempt on real hardware was a bust: the CRT monitor lost sync and showed nothing.

I am thinking I should next build an interactive tool that lets me tweak all of these register values while watching what happens, to tighten the feedback loop.
robertsundling.bsky.social
Making decent progress on my 640x480 to 320x240 linear mode SVGA project.

I first wrote a CRTC register dumper, then examined values on a card with a 320x240 linear mode. It's pretty clear how this card does it.

Next step will be to take an SVGA card without the mode and apply these same changes.
Screenshot comparing CRTC register values for a 640x480 256-color mode to a 320x240 256-color mode.
robertsundling.bsky.social
My challenge this week is to take SVGA cards with linear VBE 640x480x256 color modes and tweak CRTC registers to turn those into linear 320x240x256 color modes. Some cards expose such a mode already, but not all. The performance gain over Mode X is worthwhile. I’ll open source what I find.
Reposted by Robert Sundling
wisconsinwatch.org
"The deal is the latest development in a saga involving some of the video game industry’s lowest-paid workers. It comes after Microsoft purchased Activision Blizzard, Raven Software’s parent company, leaving the roughly two dozen testers to negotiate with one of the world’s largest tech companies."
These Wisconsin video game workers were first to unionize at a major U.S. studio. Three years later, they have a contract.
The deal at Raven Software in Middleton affects quality assurance testers, some of the video game industry’s lowest-paid workers. It caps a saga that included a strike and a purchase by Micro…
wisconsinwatch.org
robertsundling.bsky.social
Ullrich von Bassewitz's BGI drivers are excellent SVGA reference code.

The comments are in German. As English alternatives exist, human translation may not be worth the effort, but I used GitHub Copilot to translate the comments to English for my own use.

Someone else may find this useful as well.
GitHub - RobertSundling/uvb-svga-bgi-english: English language translation of Ullrich von Bassewitz's SVGA BGI drivers
English language translation of Ullrich von Bassewitz's SVGA BGI drivers - RobertSundling/uvb-svga-bgi-english
github.com
robertsundling.bsky.social
Looks like I'm successfully parsing MOD pattern data. If you'd like a challenge, see if you can spot this song by the first pattern. 🙂
Pattern data for the first pattern of a particular MOD, displayed as a large text-based table.
robertsundling.bsky.social
I'm working on a special-purpose MOD library today and testing it with MOD files by Dr. Awesome (Bjørn Lynne) while listening to his new album Point of Significance. Perfect blend of old and new.

@bjornlynne.bsky.social
Point of Significance by Bjørn Lynne on Apple Music
Album · 2025 · 16 Songs
music.apple.com
Reposted by Robert Sundling
commodoreofficial.bsky.social
We Did It. Commodore Is Home.
With the final payment locking in the deal CEO Peri Fractic signed the final contracts in The Netherlands, officially acquiring all 47 original Commodore trademarks. After decades adrift, the brand is finally where it belongs - with fans.
#WeAreCommodore
commodore.net
robertsundling.bsky.social
I use a script I wrote that I run after I commit old files. It checks the file dates of everything that’s been committed so far, reverts the commits that added them, then creates new individual commits for each file with the GIT_AUTHOR_DATE and GIT_COMMITTER_DATE environment variables set correctly.
robertsundling.bsky.social
Those are surprisingly tricky to do. 😂