_      __            __                  _ 
      (_)__  / /_________  / /________  _______(_)
     / / _ \/ __/ ___/ _ \/ __/ ___/ / / / ___/ / 
    / /  __/ /_(__  )  __/ /_/ /  / /_/ / /  / /  
 __/ /\___/\__/____/\___/\__/_/   \__,_/_/  /_/   
/___/

[Home] - [Blog] - [About]




Low-end laptop from 2004: Testing video games

(Originally posted to Cohost on Sun, Sep 22, 2024, 10:27 PM)


New to this blog series?

This blog post will focus on more uses, like trying out newer operating systems and testing out its gaming performance.

TL;DR:

I tried several operating systems on Omoikane, a computer with 256 MB of RAM (224 MB usable), and no SSE2 instructions. This time, I tried to put in more of an effort. NetBSD 10.0, OpenBSD 7.6, and Slackware 13.37 are the only non-Windows operating systems that worked out.


I probably talked about this like 200 times already, but I wanted to try something thorough this time. Less on "out-of-the-box" experience and more on how much work is needed to get it set up. Doubly so for dual-booting.

Laptop specifications

I've gave the specs before, but I'll give them again:

After installing HWiNFO, I got more information on the laptop's hardware:

Obstacles to using modern software


Windows 2000 (2000)

I used Windows 2000 Professional with Service Pack 4. I recall it was the first operating system I've installed on Omoikane. It felt like a lighter Windows XP, but has less programs to choose from, and earlier software compared to XP. It's also harder to find information on the web about software that supports vanilla Windows 2000, so some of them working (like Everything) was just out of pure luck.

I haven't tried any games other than ClassiCube and SNES9x, and both reported that a new enough DirectX wasn't installed, or something like that.


Windows XP (2001)

The laptop has a sticker that says "designed for Microsoft Windows XP", after all. My install of choice is Windows XP Professional Service Pack 3 VL.

After getting the drivers (VIA S3 ProSavage 8 DDR Video Driver and Realtek AC97 audio driver), it has GPU acceleration and audio playback. It's a little slow at times, taking about 2 minutes to start to a desktop after installing several programs (maybe I needed to defrag it?), but it has the most software available, and it's easy to pick an old or new version of a program for a task. If I didn't prefer Unix, I'd probably daily drive it. There's also support for Linux-style workspaces via Windows XP's "PowerToys" suite.

I've tested many games on it, which I documented in my notes:

Game Status
Cave Story Perfect
ClassiCube I can't go a blog post without mentioning ClassiCube. Did you know they made an N64 port and recently added 4-player splitscreen? Well, anyway, it runs okay, about ~15fps at a 64-block draw distance? It doesn't seem to be using hardware acceleration...
Diner Dash Great. A bit choppy, but that could just be the game
Dwarf Fortress 40d starts and runs. With default settings (fullscreen, 80x24?) it takes 2 minutes to generate a world, another minute to offload all units, and in-game performance with 7 dwarves and a river is 32-36 FPS. In windowed mode, it reaches 42 FPS.
ePSXe Works best with Pete's D3D Driver 1.76 (OpenGL2 crashes, OpenGL has graphical bugs). Tested with games like Slap Happy Rhythm Busters, Dead or Alive, and Tekken, the games are playable, if not full-speed if graphical settings are set to Fast and a fullscreen resolution of 320x240 or 640x480. Haven't tested many other settings.
Grand Theft Auto III (v1.1, cracked) After letting the game optimize textures for the video card, the game had black textures for many characters, scenery, and HUD elements (minimap) excluding Claude, pedestrians and vehicles. 8-Ball and the Old Oriental Gentleman had their eyeballs bulging out, like googly eyes. Driver issue, maybe? Gameplay runs around ~8-15fps, sometimes worse, depending on what's on screen.
Far Cry Does not start. GPU is blacklisted.
Half-Life Runs great in software mode (around ~40-55 fps at 640x480 at the opening cutscene, around ~25fps at 1024x768 in-game give or take). OpenGL mode has rendering issues. Direct3D has bad input lag
Halo Custom Edition Does not start. GPU is blacklisted.
Minecraft Beta 1.7.3 via the BetaCraft launcher. I recall downloading the important libraries on my Linux system then transferring it to the same location BetaCraft expects it on Windows XP. The game took a while to start, was able to generate a world, but seconds after spawning in the world, it ended up freezing the whole laptop. This could be related to shitty OpenGL drivers, and not lack of RAM.
Minetest 0.2.20110922_1 It appears to be the last "official" build capable of running. The computer froze for a few minutes and then bluescreened, similar to my experience running Minecraft Beta 1.7.3. When the game DID run, I'd say it's playable, but blocks didn't show in the inventory/hotbar, only their number.
Minetest 0.4.12 The builds on Calinou's site start. Software rendering runs the best but looks the worst (PSX-style wobbling). Burning's Video adds bilinear filtering to all blocks and runs like ass. Both of them have a weird dark-reddish tint to the world's blocks. OpenGL freezes the computer. I looked into llvmpipe on Windows like what ClassiCube suggests, but they fail with error code 0xc000001d (likely illegal instruction).
OpenArena 14.2 fps at Fastest, 640x480
Phantasy Star Online: Blue Burst ~15fps at the worst, normal settings. Runs best (30fps locked) with frameskip, low settings, and 640x480. Has some z-buffer issues where some scenery objects are rendered in front of the player.
Quake 3 Arena 65.0 fps at min, 640x480 / 31.7 fps at min, 1024x768 / 24.9 fps at max, 640x480 / 4.8 fps at max, 1024x768
TES3: Morrowind Lowest settings, 640x480. Indoors is about ~15-20 FPS depending where the player is looking. Outdoors is about ~13 FPS, give or take a few frames.
The Sims: Complete Collection First time, it takes about 5 minutes and 30 seconds to load the first time, and another 2 minutes and 30 seconds to load into a new lot, possibly due to the content expansions. Framerate ranges from the 20s to 60 FPS depending on what's on screen.
Unreal Tournament High settings at 640x480, 25-40FPS for a 16-player bot match on Morpheus, averaging around ~30 FPS most of the time. Looks better than the Dreamcast port and runs at least twice as better.
Unreal Tournament 2004 Estimates around ~7-15 FPS at the lowest settings. I consider it playable and impressive for the aging hardware.

It's possible that the laptop's GPU has poor OpenGL support. Half-Life chugs with graphical bugs, ClassiCube/Minecraft/Minetest all crash if I use their OpenGL builds, and Slackware 13.37 (coming up) lacks 3D acceleration.


Slackware 13.37 (2011)

What's the newest version of Slackware I can run? Either Slackware 14.1 (2013), or 14.2 (2016) if I lower the shared GPU RAM from 32MB to 16MB or lower. 13.37 is the last one that works out-of-the-box: video drivers, audio, video playback, power management, and a dual-boot/triple-boot setup.

13.37's age may be a good thing since I can download and install software from SlackBuilds that'll run just fine, but many programs I've found were older than its equivalents on Windows XP, and sometimes the original source code for a SlackBuild isn't available, so I had to search the web for the file and make sure its checksum matches. I found a whole directory of 13.37 SlackBuilds here.

If the packages available from 13.37 are too old, I've found some packages that worked through 14.1's SlackBuilds (like Anki 2.0.33), or packages compiled from source (like Atari800, cc65, dasm, vim, etc) if needed. However, my Wi-Fi USB isn't picked up, and both GCC and the kernel are old. I can compile GCC 4.8.2, but it's not worth the effort, imho.

WINE also works, the latest I've tested being 1.8 from 2015 (also from a 14.1 SlackBuild), but the latest that can compile from source without updating my dependencies is 2.22 (untested). I used 1.8 for "edge case" programs that I'm too lazy to compile, usually Windows XP applications like VirtuaNES and Anki 2.0.52, just as long as they aren't compiled with SSE2.

(See also: "Win32 is the Only Stable ABI on Linux" from ivyl's blog)

Gaming

GPU acceleration is piss-poor for 3D gaming (Mesa reports it's using software rendering). I assume my GPU lacks good OpenGL support.

ioquake3 runs noticeably way, way worse than Quake 3 on Windows XP.

ClassiCube, compiled from source, runs worse than Windows XP (~7 FPS on Tiny, ~2-3 FPS on far).

Minetest is only playable via WINE and software rendering (~3-4 FPS), and fortunately lacks the reddish tint that plagues it on Windows XP. The native release fails to boot with a "BadDrawable" OpenGL error. Enabling LIBGL_ALWAYS_SOFTWARE=1 does not help, but enabling LIBGL_ALWAYS_INDIRECT=1 does, in which it gets to the menu. Starting a world crashes the game with a "segmentation fault" error.

Dwarf Fortress is great. 40d19 (forum thread has native Linux support. It runs better than 40d through WINE (which was around ~14FPS). I'd say it even beats running 40d on Windows XP, but set the graphics to "2D" or it'll run like ass syrup.

Game development

I already know cc65 works fine so let's just talk about Raylib.

Raylib is a library for developing 2D or 3D games in C (and other languages via bindings). I feel it is lower-level than similar options like Love2D/TIC-80 that use Lua, but it's still rewarding, and what I use to practice my C programming.

Compiling with Slackware's built-in GCC gives the error "unrecognized command line option '-ffp-contract=off'". I compiled LLVM 3.3 from source via Slackware 14.1's official SlackBuild, edited Raylib's Makefile to point to "clang" as its default C compiler and OpenGL 1.1, and it compiles just fine in under a minute. But compiling and starting examples give me an "illegal instruction" error (which I also noticed when compiling ClassiCube with LLVM 3.3).

I investigated it and it's obviously a problem with LLVM, or at least its defaults. A similar bug was mentioned on Stack Overflow.

Fortunately, Bellard's Tiny C Compiler could compile Raylib. I encounter the same OpenGL startup error as native Minetest, with the same solution (LIBGL_ALWAYS_INDIRECT=1). However, while the basic window example works just fine, the split-screen example gives me two black screens with two "framebuffer object can not be created" errors.

On the plus side, I was able to compile a 2D prototype I wrote. While Love2D 0.8.0 was also an option on Windows XP, it ran like molasses.


Slackware 14.2 (2016)

Not tested, but I already have a feeling I know how it's going to go:


Debian 6.0.10 Squeeze (2011-2014)

Not tested. Another distribution from around the same time as Slackware 13.37, and an alternative option.

From what I've seen, its repository is small enough to fit on 8 DVDs (or 51 CDs) and can be installed entirely offline.


Debian 9.13.0 Stretch (2017-2020)

Graphical installer fails to boot, but text-only installer boots just fine. My Wi-Fi USB is also picked up if I use the CD image incl. firmware.

It picks up on my Windows XP install during the boot loader step, but ultimately fails to install GRUB to the MBR. I can install GRUB to /dev/sda anyways after skipping the step, but it refuses to boot to the OS. After attempting to install Alpine and installing NetBSD, I figured this may've been because I had TWO active partitions.

My original plans were that, after installing and skipping the mirror step, I would point /etc/apt/sources.list to the distribution archives to download packages.


Alpine Linux 3.16.9 (2022-2024)

The latest version of Alpine Linux that doesn't require SSE2. Boots up fine under 256 MB of RAM.


NixOS 23.11 (2023)

What in the toaster is this? NixOS 23.11 (I think the last version with an x86 ISO) boots up. The live environment works well, but it kernel panics during the install, even after being given 256 MB of swap. Of all the distros I expected to boot on here, NixOS was not one of them.


NetBSD 10.0 (2024)

Pretty easy to set up, and surprisingly... works. By far my favorite modern OS to toy around with, but I'm scared it'll explode in my face. This is so long it could probably be its own blog post in itself.


OpenBSD 7.6

(See also: "If you're happy with OpenBSD, probably any computer is good enough" by Connor Oliver)

A photo taken of OpenBSD.

A surprising competitor to NetBSD, surprising considering it was forked from NetBSD in 1995.

I feel NetBSD is friendlier and has cozier defaults (plus orange is my favorite color), but OpenBSD has a much better repository that's not as trial-and-error. NetBSD works just fine out of the box, while OpenBSD feels well worth the effort getting it working. It's hard to choose between them (even given OpenBSD's "caveat"), so I give them a tie.


Why not other operating systems?