How did DOS games draw to the screen so fast?

May 27, 2024

The EGA and VGA video standards share some similarities with how the Amiga did graphics, but the similarities end when it comes to the 256 color graphics that defined 90s PC gaming. Topaz walks you through the basics of how those video modes worked, and what made them get so fast over time.

Thanks to Tyrel (!


3d game source code

Code on Hackerbun

2d games and the EGA pipeline

Why are, like, half these examples id Software games?

  • Graphics Programming Black Book by Michael Abrash (
    • This book not only has a lot of incredible detail about the x86 processor, the DOS platform, and how these EGA and VGA modes work, but the author also worked on the Quake engine, and his earlier articles helped John Carmack make games like Commander Keen run so smoothly. Even if you’re not going to write low-level code for retro machines, the first three chapters are a fantastic read for any software developer who gets caught up in prematurely optimizing anything (code, date, features) at any level of the process. Highly recommended.



AMOS Pro BSD Socket Extension 1.1.4 Released

May 2, 2024

Version 1.1.4 of the AMOS Pro BSD Socket extension is out, and it’s a big one. Thanks to both an anonymous contributor and some improved M68K assembler debugging techniques, this version has multiple crash bugs fixed, as well as an issue that prevented the extension from working well on non-emulated Amigas. Upgrading is highly recommended!

Grab it from Hackerbun Gitea or Aminet:

(1.1.3 was an internal release and not published to the public)

AMOS Pro BSD Socket Extension 1.1.2 Released

March 18, 2024

Hot on the heels of 1.1.1 comes even better fixes to string handling in the extension. The issue is that, while the strings returned from the functions were immediately usable, they weren’t being added correctly to the string space AMOS maintains, so you couldn’t do things like concatenate them. I documented the proper usage on the wiki. This fixes up all of the string returning functions in the extension, which means that Socket Recv$ should work as expected now.

Grab it from Hackerbun Gitea or Aminet:

AMOS Pro BSD Socket Extension 1.1.1 Released

March 17, 2024

I’ve released version 1.1.1 of my BSD Socket extension for AMOS Professional. It fixes two bugs in Socket Inet Ntoa$, a crash bug and an issue where the null terminator in the original string was being copied into the AMOS string, causing issues. There was also an issue with the build script where the latest version of the library was appearing in the wrong place in the archive.

Grab it from Hackerbun Gitea or Aminet:

DOS Arena Game -- Super Alpha Version

March 5, 2024

I put up the code and binary for a Smash TV/Robotron-like game I built for DOS and PCs with VGA graphics. It works well enough to be playable.

The code is up on Hackerbun Gitea. It has a bunch of code related to working with the PC and VGA card, and it’s the biggest program I’ve written in C so far. It also has unit tests using CuTest, inline assembler, and compiled sprites built using Ruby.

Take it for a spin if you like. Downloadable files are in the project’s Releases. If you have feedback, send it along. I’m not sure when I’ll get back to working on it because I have a video idea I want to do next, but who knows what the future will bring!

AMOS Pro BSD Socket Extension 1.1.0 Released

February 24, 2024

I’ve released version 1.1.0 of my BSD Socket extension for AMOS Professional. It fixes a bug in Dns Get Host Address By Name$ where I was incorrectly handling string termination from AMOS strings. It also adds Socket Herrno to get error code information from the DNS resolver in the network stack.

Thanks to Allanon on Mastodon for finding the issue and testing out the fix!

Grab it from Hackerbun Gitea or Aminet: