CLOSE

Archive:

2024
2023
2022
2021
Subscribe:Atom Feed

"Virtual Console"

Posted: 20 July, 2022

My recent retro coding on the Amiga got me thinking [far too much] about another idea I’ve been cogitating on for a while: what shape would a “virtual console” for my own stuff take?

Why a “Virtual Console”?

I’ve got a lot of ideas for simple-ish, 2D games, that I’d like to make without the overhead of a “big” engine. I could use Unreal, but that’s the definition of a sledgehammer cracking a nut. I could use Godot, but again, that feels too heavy for my needs. Unity is out because, well, I think it’s shit. There are a lot of existing virtual consoles, but most aim for an “8bit plus” vibe; think Pico 8 / Tic 80, that kinda thing… And they’re great! But not quite what I’m after. I want something a bit more Amiga-like. Well, a fancy 16bit console, really. Something with some sane, but hard, limitations, that’s easy to maintain, and (more importantly) portable. I especially want to be able to recompile it onto whatever hardware exists, 20 years from now.

Limitations

Here’s my high-level, mental tick list:

Any set of restrictions is arbitrary, but I’ve arrived at these for a few reasons.

What to build on…

So, nothing too complicated, but it’d be nice to leverage an existing library for the windowing and event handling. I want to use straight C, so I had a look at SFML and SDL2.

SFML is modern, clean, well supported and has great platform coverage, but, it’s focused more on OpenGL & HW Accelerated contexts. I want a strictly indexed colour (fixed colour palette) workflow, so SDL2 – surprisingly – suits my needs better. It’s easy to have an indexed colour, SDL_Surface based setup, that can be pushed over to accelerated SDL_Textures at runtime. And the other plus: SDL is already 20 years old. I suspect it’ll still be around in another 20. Especially given how many other game engines use it, under the hood.

Oops

So, er, since I’m sliding into a couple of weeks of summer holiday, I started building it out. The EH500 is just at the stage where I need to parse and build the tilemaps. I’ll report back soon.