spaceflight, technology, anime, politics, and whatever else I feel like writing about

The TiduxCore

An abstract fake retro console for modern 2D cross-platform game development.

The Motivation

Modern game development sucks. More and more time is spent on extraneous bullshit like input handling, playing nicely with the rest of the preemptive multitasking SMP network-capable OSes that were originally written as Internet servers rather than gaming machines, multithreading, DLC, DRM, and what have you rather than what most of the best games of all time were written for: a single tasking, single CPU, fixed-hardware platform, with a flat, unified memory space and MMIO. That's writing for ONE OS, and not the five platforms and two CPU architectures in common use as of 2021. What is needed is a single virtual machine that is not the JVM or the web, that can run on everything from a Threadripper to a cell phone to a Raspberry Pi. Happily, a framework for handling most of the "boring bits" of interfacing with the underlying system exists: Retroarch. By implementing a new system as a Free Software libretro core, it can be ported to any desired platform above a minimum hardware level with a minimum degree of difficulty. By focusing on a standard old TV resolution with limited color depth and no raw PCM sound, the modern distractions of spending billions of dollars on polishing gameplay turds to a mirror shine is avoided. By using a new from-scratch system design, we can more closely hone in on the exact design parameters we want, and avoid any design flaws or manufacturing defects from decades-old consoles that a true emulator must faithfully reimplement.

That's where the other aspect of this platform comes in: ease of distribution. Unlike console manufacturers or proprietary OS vendors who desire to lock you in with DRM, games for this new platform will be homebrew-first, and distributable as a standard cross platform ROM image. If people later want to write commercial games for the system that is of course their right, but they'll have to be satisfied with direct sales of physical copies (ROM images on optical or flash media), or offering direct paid downloads of the ROM image, rather than fucking over paying customers with DRM.

Basic Stats

  • 640x480p resolution
  • 15-bit color space (32,768 colors), single 12-bit palette (4096 colors)
  • SNES type controls: D-pad, ABXY in Nintendo layout, L/R, start/select
  • pure MMIO
  • 128 simultaneous sprites, 128x128 max size
  • SNES/GBA style multiple scrolling
  • emulated OPL3 audio
  • single ARMv7hf emulated CPU for good modern language support
  • 1GB address space
  • RAM (including MMIO space) is bottom half, ROM is top half