SidecarTridge Multi-device GPU Demo

Source code CHANGELOG Report BUG v2.0.0beta

This microfirmware app for the SidecarTridge Multi-device is a demoscene-oriented showcase of what the RP2040 in the SidecarT can do when it acts as a graphics co-processor for a real Atari ST, STE, Mega ST or Mega STE. From v2.0.0beta onwards it is no longer a single sprite stress test: it is a small intro / demo playground with an animated boot menu and four worked demos that exercise rotozoom, parallax, filled 3D vectors, sprite swarms and sampled audio.

The whole thing is built on top of the md-framebuffer-template starter framework, so every effect here is also a working reference you can use as the foundation of your own SidecarT app, including full-blown games that want to squeeze every cycle out of the RP2040.

Table of contents
  1. ⚠️ Attention
  2. 🚀 Installation
  3. 🕹️ Usage
    1. Boot menu
    2. The four demos
    3. ⏏️ Exiting to Booster
    4. 🔄 Power cycling
  4. 🛠️ Under the hood
  5. 📜 License
  6. 🤝 Contributing

⚠️ Attention

This app is designed only for low-resolution monitors. It will not work in high-resolution modes.

🚀 Installation

To install the GPU Demo app on your SidecarTridge Multi-device:

  1. Launch the Booster App on your SidecarTridge.
  2. Open the Booster web interface in your browser.
  3. Go to the Apps tab and select GPU Demo from the list.
  4. Click Download to install the app onto the microSD card.
  5. Select the newly installed app and click Launch.

After installation, the GPU Demo will start automatically every time your Atari is powered on, dropping you into the demo menu.

🕹️ Usage

Boot menu

On startup the app shows an animated boot menu on top of a rotozooming SidecarTridge backdrop. You can pick a demo with the keyboard, jump directly to a slot with a number key, and toggle the on-screen timing readouts at any time.

Menu controls:

  • Up / Down: move the menu selection.
  • Return: launch the selected demo.
  • 1 / 2 / 3 / 4: launch the corresponding demo directly.
  • D: toggle the DRAW / C2P timing readout.
  • Esc: exit back to GEM (the Atari desktop).

The four demos

  • Uridium-style parallax: layered starfields, metal grids, transparent scrolling surfaces and a controllable ship. Cursor keys move the ship vertically.
  • Filled 3D vector object: fixed-point rotation, projection, backface culling, triangle filling and shaded Atari ST palettes.
  • Multi-sprite stress demo: many animated sprites with transparent blits and frame-budget tracking, adapted from a Pico VGA demo.
  • Cojorotozoom intro: fixed-point rotozoom, bitmap scroll-text, palette ramps, transparent texture sampling and sprite overlays.

Inside a demo:

  • Esc: return to the menu.
  • D: toggle the timing readouts.

⏏️ Exiting to Booster

The GPU Demo replaces the ROM while it is running, so it cannot exit cleanly back to the Booster web UI from the running app. Esc only exits the running demo (back to the menu, or back to GEM from the menu).

To return to Booster, power cycle your Atari ST while holding the SELECT button on the SidecarTridge Multi-device. This is a hardware escape hatch: it jumps straight to Booster before the GPU Demo’s configuration or emulation runs, so you can always reach the configurator even if the app misbehaves.

🔄 Power cycling

After a power cycle without SELECT held, the GPU Demo auto-launches and you land back on the boot menu.

🛠️ Under the hood

The GPU Demo is built on top of the md-framebuffer-template framework. The RP2040 draws into a 320x200, 16-colour chunky framebuffer in its own RAM; the framework does the chunky-to-planar conversion and the tear-free, VBL-synced hand-off to the ST at 50 Hz. The Atari side also gets keyboard input and sampled audio for free, so each demo can focus on its effect instead of bus timing.

For the implementation details of any individual effect (rotozoom, parallax, vector pipeline, sprite engine, scroll-text), the source code is the reference. The README in the upstream repository links each demo to its file under rp/src/demo_*.c.

📜 License

This project is released under the GNU General Public License v3.0. See the LICENSE file for full terms.

🤝 Contributing

Made with ❤️ by SidecarTridge

Previous: Debug Cart Main Next: Oric Emulator