Conway's Game of Life, in real life
When life gives you switches...
Should you normalize RGB values by 255 or 256?
Let’s say you’re writing an image processing program. The program takes in an image, converts it to floating point, does some processing and finally saves the modified pixels to disk as 8-bit colors. The question today concerns how exactly the integer-to-float conversion should be done. There are two approaches which…
Optimal Strategy for Connect 4
The graph, the viewer, and the verification tooling all live in the WeakC4 repository on GitHub .
The Effect of CRTs on Pixel Art (2024)
A follow-up to this text is available here . It goes into much greater detail about signal quality, and also examines how pixel art techniques have been used on non-CRT systems.
Correlated randomness in Slay the Spire 2
Here are three true statements about the game of Slay the Spire 2 (in single player): If you pick Neow's Bones in the Underdocks, the random curse is ~54% likely to be Debt.* It is impossible to receive Rebound from the Trash Heap event. Your first fight is 76% likely to drop a potion in Underdocks, and 4% likely to…
OpenClaw isn't fooling me. I remember MS-DOS
The sad days of DOS. Any program could peek and poke the kernel, hook interrupts, write anywhere on disk. There was no safety.
Voxel Space (2017)
Terrain rendering algorithm in less than 20 lines of code
How Pizza Tycoon simulated traffic on a 25 MHz CPU
Reverse engineering the traffic system from Pizza Tycoon (1994): how the original devs drove dozens of cars through a city with almost no CPU budget.
This game is a single 13 KiB file that runs on Windows, Linux and in the Browser
Not that long ago I became aware of Justine Tunney's cosmopolitan libc project. It's a toolkit that allows you to compile C source code into a single binary...
Software rendering in 500 lines of bare C++
In this series of articles, I aim to demonstrate how OpenGL, Vulkan, Metal, and DirectX work by writing a simplified clone from scratch. Surprisingly, many people struggle with the initial hurdle of learning a 3D graphics API. To help with this, I have prepared a short series of lectures, after which my students are…
“Food JPEGs” in Super Smash Bros. and Kirby Air Riders
Have you ever noticed that the food graphics in Super Smash Bros. and Kirby Air Riders are flat “billboarded” stock images of food? This artistic decision from director Masahiro Sakurai has per...
Snowboard Kids 2 is 100% Decompiled
Snowboard Kids 2 for the Nintendo 64 has reached 100% matching decompilation. A brief note on what that means, how we got here, and what comes next.
DOS Game "F-15 Strike Eagle II" reversing project needs DOS test pilots
(This post is part of a series on the subject of my hobby project, which is recreating the C source code for the 1989 game F-15 Strike Eagle II by reverse engineering the original binaries.)
RTX 5090 and Raspberry Pi: Can it game?
It turns out, you can attach an external GPU to a Raspberry Pi 5. So my natural first question is, can I game on it? Let’s try it out and compare it with some similar computers. Just a quick FTC required note: When you buy through my links, I may earn a commission. For the showdown of crappy gaming computers, we’ll…
Solving Factorio Quality
I play Factorio the normal way: by writing matrix math code to plan the factory.
Stockfish 19
Stronger, smaller, and easier to run, thanks to an upgraded network architecture, universal binaries, and more!
WorldClaw Agentic 3D open-world generation at scale
From one open-ended prompt to an explicit, explorable, and editable 3D world.
Playdate’s handheld changed how Duke University teaches game design
Official news about Playdate, the yellow handheld video game system with a crank.
Simplifying Vulkan one subsystem at a time
When those of us in the Vulkan® working group want to modify the API—whether it’s a new hardware feature to expose, a new use case we want to address, or even just a gap in the spec we want to address—we have one invaluable tool that we make heavy use of: extensions! Extensions are a wonderful way for us to get…
Decompiling a Nintendo 64 game in 84 days
The original Snowboard Kids has been fully decompiled in only 84 days! In this post I delve into what changed and what lessons might apply to future projects.
Obscure audio codec is a perfect fit for the N64
Sorry for the clickbait title. I promise this post delivers: 44100 Hz stereo with near-Opus bitrates using about 4% of the N64’s CPU time.
The tech of 'Terminator 2' – an oral history (2017)
Ever since James Cameron’s Terminator 2: Judgment Day was released in 1991, I’ve been reading about the many ways ILM, led by visual effects supervisor Dennis Muren, had to basically invent new way…
Ron Gilbert started production on Thimbleweed Park 2
Ron Gilbert's often incoherent and bitter ramblings about the Game Industry
Reverse Engineering SimTower
Creating a perfect clone of SimTower in the browser
Bevy 0.20
Thanks to 227 contributors, 817 pull requests, community reviewers, and our generous donors, we're happy to announce the Bevy 0.20 release on crates.i…
Reversing Factorio's RNG
This post details how Factorio's random number generation works, how it can be reversed and how I used that knowledge to predict and manipulate the RNG with pure in‑game mechanics.
Dithering – Part 2: The Ordered Dithering
Understanding Threshold Map in Ordered Dithering.
The art and engineering of Sega CD Silpheed
The 90's was a decade of considerable improvement in the world of video-game consoles [1] . Each new model brought advanced processing power and better graphics without compromise.