Moria logo, stylized M

Too deep we delved there, and woke the nameless fear.


Demystifying the LFSR
wchar_t Is a Historical Accident
IOStream Is Hopelessly Broken
Chaos Tomb: Visualizing Gameplay with D3 and SQL
Dreamless: Analytics for Ludum Dare
Let’s Make a Voting System


Tools for playing games

Sometimes, it’s more fun to write a computer program to solve the puzzle than to play the game. All of these can be downloaded as a single HTML file.

Blog Posts

NumPy Is Magic: NES CHR Conversion
Optimizing NumToString
Dear Retro Community, Stop Writing Tools in C
Review: Alkaline
Wordle and Dictionary Compression
Adventure Game Engine Design, Part 1
HyperCard Adventures
9 Reasons Why Nintendo 64 Homebrew Projects Fail
Apt Keys
Website Tagging with Open Graph
Review: Arcane Dimensions
My Cursed Website
Updating an Old Macintosh Application
Setting Up Classic Macintosh Hardware
Creating a Classic Mac Application
Nintendo 64 Part 24: Quick ’n’ Dirty Collisions
Nintendo 64 Part 23: Animations
Nintendo 64 Part 22: Real Models
Nintendo 64 Part 21: GP-Relative Addressing
Nintendo 64 Part 20: TMEM Format and Mip Maps
Nintendo 64 Part 19: Developing for Multiple Regions
Nintendo 64 Part 18: Normals and Lighting
Monads Are the Foundation; Purity Is the Bedrock
Nintendo 64 Part 17: Loading Models
Nintendo 64 Part 16: Z Buffering
Nintendo 64 Part 15: A Spinning Cube
Nintendo 64 Part 14B: Streaming Music
Nintendo 64 Part 14: Streaming Audio
Nintendo 64 Part 13: Basic Audio
Nintendo 64 Part 12: Why Even Bother?
Nintendo 64 Part 11: Scheduling RCP Tasks
Nintendo 64 Part 10: Animation, Controller Input, and Crash Screens
Nintendo 64 Part 9: Fonts and Drawing Text
Nintendo 64 Part 8: Files and Filesystems
Nintendo 64 Part 7: Drawing Sprites
Nintendo 64 Part 6: Hardware Acceleration
Nintendo 64 Part 5: My Own Code
Nintendo 64 Part 4: Emulation and Hardware
Nintendo 64 Part 3: Building a Sample Program
Nintendo 64 Part 2: What Is a Bootloader?
Nintendo 64 Part 1: Land of Pain
Star Traveler Postmortem
NES Development Day 1: Creating a ROM
Trying, Trying, Trying
So, I Got It This Time
Progress Report… and Combat Simulations
Totally In
Visualizing Gameplay with D3.js and SQL
Chaos Tomb Post-Mortem
After We Saved the World: Post-Mortem
Mini LD #57 — Reversed
Ludum Dare #31 Episode 5
Ludum Dare #31 Episode 4
Ludum Dare #31 Episode 3
Ludum Dare #31 Episode 2
Ludum Dare #31 Episode 1
Five Weird Games
I Dream of Post-Mortems
Base Code Declaration
LD26 Top Eleven
Analytics and Post-Mortem
You Had One Job, Hero. One Job.
The Water Shrine
Video Walkthrough!
First Fifty, Let’s Talk About the Theme
Digital Generation Post-Mortem
Phase 2 Is Almost Complete!
I’m in, and I Have Music
Shall we vote?
I'm in, et cetera
Gems of LD #22
Lonely Star
My Hands Hurt…
I’m In… and, Code.

About the author