NeoCore Video and Audio

By Thomas Lövskog
2 min read

Table of Contents

Some short notes of how I envision the audio/video of NeoCore to be.

⚠️
The state of this project is that the focus in on the hardware. Software and FPGA code will come along in parallell, but lagging, until the hardare is working as expected.
This means that the following might, and most likely will, change aT anytime.

Video

Resolution

To find an optimal base resolution is a struggle. There is alot of parameters to consider.

After some thinking I opted for the 640 x 480 in 4:3 as a reasonable compromise, and 640 x 360 in 16:9. This would be supperior for the era, but not crazy so. It is also compatible with the Commander X16 in 4:3.

Bitplanes, modes and colors

The Comodore machines redefined the normal character set for custom graphics. That is a bit to restricted. The CPU is a bit to slow to really use a full bitmaped display, so some form of tiling is needed.

There should be a way to use either pure text, tiles, photos or bitmaps. Text in 2 colors, and tiles should have 1, 2, 4 or 8 bitplanes, for 2, 4, 16 or 256 colors. The same goes for full bitmap.

One color should be reserved for transparancy. With a selectable bottom color.

There should also be a possibility to use multiple and overlaid modes with different scrolling in X and Y direction. Atleast 4 seams a good number.

All modes should have defineable start in X/Y and Width/Height. This lowers memory requirements for stationary information such as score, lives etc in games.

On top of this we also have 256 sprites with different Z-priority.

Tiles

They should have a standard size of 8 x 8, 16 x 16, 24 x 24 and 32 x 32.

Text

We also want to have a seperate text mode with changable fonts.

  • The text should have different textcolors and background colors.
  • There should be a option for reverse, underline and flashing.
  • There should be support for umlauts and descenders. So a 12 x 16 cell, 8 x 12 or similair would be good.
💡
I will also try to develop a proportional text mode. A mode where text uses a proportional font with the same space between characters and not the predefined width. That would be great for text based adventures.

Photos

The FPGA also renderes photos encoded in JPG. This can be for photos, background or cut-away scenes. With sub 40ms rendering also video should be doable.

Bitmap

Bitmaps is also drawn in 1, 2, 4 or 8 bitplanes.

Sprites

They should have a standard size of 8 x 8, 16 x 16, 24 x 24 and 32 x 32. Colors are 2, 16 and 256.

Palette

The Palette is 4bits per color, 12 bits, or 4096 colors.

Audio

Audio should come from 8 sound generators, with left, right or both outputs. Waveforms are sinus, square, sawtooth, triangle and noise or a combination. Frequency and pulse width can be set. The volume uses a standard ADSR (Attack, Decay, Sustain, and Release) mode, with an overall volume controll.

There will also be 4 channels of wavetable 8-bit PCM sound. Again routed to left, right or both outputs.

There will be no extra on-board soundchips. Mostly due to that candidates are hard and/or expensive to source. However, all the expansion pods have Audio input.

Tagged in:

NeoCore

Last Update: May 10, 2025

About the Author