Close

Software scope

A project log for RetroMedleyCard

A retro emulation system on a <=2mm thick business card, using ideas borrowed from other projects and a sprinkling of insanity...

eontronicsEontronics 05/30/2024 at 20:410 Comments

With the board out for manufacture, I now have some time to start thinking about how I'm going to get code written for it. Given the range of potential features available on the board (WiFi, Bluetooth, 2x Usb Hosts, DVI video, "analogue" audio), and the short time span of the competition, I don't want to be stuck-in over my head rushing to get the code working in time. Instead, I would like to create a minimum viable demonstrator for the competition, illustrating the core functionality of the project, then fleshing out all the extra features at a later date.

Features that i consider to be part of the "core" functionality, against nice-to-haves are tabulated below:

Required featuresNice-to-have features
Support for a single external gamepadSupport for multiple external game pads over a range of interfaces
Unbuffered video output through DVI in RGB565Fully buffered or syncronised video output to prevent tearing with up to 24-bit colours
Analogue audio output over 3.5mm JackAudio output over a range of interfaces
Playable emulatorRange of playable emulators with launcher(s)

The core functionality revolves around the minimum requirements to reach the point where *an* emulator is playable on the card, while nice-to-have features expand on capabilities to support emulation of multiple devices, using a range of input devices and flexible audio output selection depending on user preference.

These nice-to-have features result in a more complete device, but adds multiple cases will need to be handled by the software and be debugged, which could considerably increase development time.

As previously mentioned, I would like to port Retro-Go to this card which should handle launching and running various emulators, so I would otherwise mainly need to focus on adding support for the various interfaces: a gamepad driver using Bluetooth OR USB host on the ESP32, DVI video through the RP2040 coprocessor,  and audio output using the ESP32's sigma-delta modulator.

Once these features are working well, I can evaluate whether to throw in some of the nice-to-haves, or move straight onto documentation and tidying things up, depending on how much time remains in the competition (if any!)

Discussions