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

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.

The Commodore machines redefined the normal character set for custom graphics. That is a bit to restricted.

There should also be a possibility to use multiple and overlaid modes with different scrolling in X and Y direction. At least 4 seams a good number. These different overlayed viewports should also have the ability to blend together with a alpha channel.

All modes should have definable 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 64-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 separate text mode with changeable fonts.

  • The text should have different text colors and background colors.
  • There should be an option for reverse, underline and flashing.
  • There should be support for umlauts and descenders. So a 12 x 16 cell, 8 x 12 or similar would be good.
  • Both fixed and proportional fonts should be possible.

Photos

The FPGA also renders 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. There should be functions for drawing standard geometrical shapes in hardware, as well as copying/moving blocks of graphics with boolean operands.

Sprites

Sprites 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

There should be multiple palettes and they are all 4-bits per color, 12 bits, or 4096 colors.

Audio

Audio should come from 8 programmable sound generators, with individual volume and panning or both left and right output. 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 control.

There will also be 4 channels of wave table 8-bit PCM sound. Again with individual volume and panning or routed to both outputs.

Options to consider is built-in general MIDI with/without a hardware sequencer.

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: January 30, 2026

About the Author