Indie game storeFree gamesFun gamesHorror games
Game developmentAssetsComics
SalesBundles
Jobs
Tags

Athena - A New 16-bit Fantasy Console

A topic by Jet Fist Games created Sep 08, 2019 Views: 2,005 Replies: 5
Viewing posts 1 to 4
(+1)

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):

interesting. What's the goal for this?

(+1)

The goal of Athena aside from being a project that's neat and fun to work on is to be a fantasy console, not unlike offerings like Pico-8 or TIC-80, that provide a platform on which you can develop games with a deliberate set of limitations both for fun and even for profit (a sort of sub-goal is to let people make their own standalone builds to sell on stores like Itch and Steam if they'd like to!)

Had a bit of a weird realization, Athena might actually have enough power to play back primitive FMVs
So I spent some time prototyping a Cinepak / Smacker inspired compression scheme. Designed to be played back via mode 1 (256 color 320x200 bitmapped mode) and to be small-ish and very quick to decode.
Did a little test of round-tripping a video through it, so here's what that looks like. Still some things I need to fix, and could use some dithering, but anyway!
(pasting a direct link to Streamable since Youtube's compression munches the video too much)
https://streamable.com/ze2rc

(+1)

I hope the tools will be enjoyable.  I don't know why most fantasy console developers miss this aspect, but never having to leave the environment is one of the main draws of Pico8 and similar tools, not poking and peeking and doing obscure things that end up just being in-jokes to other programmers.  Programming is a craft, yes, but game design is hindered when barriers like archaic programming is put in the way.  


Just my thoughts, but I'm still looking forward to this.

I do want to build all of the tools right into the console itself. It'll act a bit like a computer so from a command line OS you'll be able to boot right into the programming IDE, the art tool, the music & sound tool, etc.
The thing about the Athena is I want everything to have a low-level interface, but if you choose to build your game using the high-level language Apollo and its associated IDE, then all of those things will also have a high-level interface on top. For example, you CAN poke/peek at the audio system manually, but it will be easier to just use the provided music and sfx playback library. The goal will be to provide a complete enough library for games that you never actually need to poke/peek anything for probably 99% of games (because I recognize that writing things in raw assembly and poking at arbitrary memory locations isn't exactly the most fun thing in the world for most developers)