Hello!
Wanted to start a devlog about a new fantasy console I'm working on with a friend called Athena.
Athena is a new fantasy console styled after the 16-bit era of game consoles, not just in limitations and features, but also in the way you develop games for it. Athena is designed so that as much as possible it feels you're working with a console that could actually have existed in an alternate universe. Every part of the Athena (graphics, sound, input, etc) can be poked at with raw memory addresses and a tiny "peripheral communication interface" for sending messages of up to 32 bits per clock cycle. The core CPU of the Athena is itself a fantasy register-based 16 bit CPU running at a simulated 20MHz.
A high level language, a custom dialect of Pascal, will compile down into low level assembly for this fantasy CPU, as well as offering support for substituting in raw inline assembly wherever desired (optimizing performance-sensitive code for example).
Right now, a good chunk of the system's internals are finished:
- The CPU model is finished, the instruction set is finalized and fully implemented at this point.
- The graphics are implemented. Three modes are available, mode 0 gives you an 80 column x 60 row text grid with a 16-color EGA inspired palette, mode 1 gives you a 320 x 200 256 color paletted bitmap, and mode 2 gives you a 320 x 240 accelerated 2D mode with support for three scrolling tile planes and up to 256 sprites. A SNES-inspired HDMA system also allows you to set up automatic memory copies into VRAM locations on a per-scanline basis, which you can use for per-scanline palette changes, cool scrolling effects, etc.
- Audio system is implemented. You get two emulated YM2612 chips and a fantasy 4 channel ADPCM chip, any three of which can be optionally routed through a configurable echo effect.
- Mouse, keyboard, and up to two gamepads are supported as input (gamepads follow a standard layout of dpad, ABXY face buttons, start/select, and two shoulder buttons)
- A disk system lets you insert virtual "disk" files that can be manipulated in 512-byte "blocks" by programs running on the Athena, with a virtual file system on top. You can also make bootable disks that the Athena's built-in "firmware" will attempt to load executable code off of.
However, there are some things that aren't finished yet:
- The scripting language is still WIP, so right now everything I've programmed for the system has been in raw assembly (which can definitely be very unwieldy)
- There's no real dev tools yet, I do plan on making art tools, music & sfx tools, and some helper libraries to help with creating games.
But, as it stands right now, here's a video of me booting a Pong demo clone off of a virtual disk (paddle 1 is controlled with a gamepad, paddle 2 is controlled with the mouse):