Dragon’s Lair

Source code CHANGELOG Report BUG v1.0.0

SidecarTridge Multi-device Dragon's Lair icon

1983. A coin-op cabinet with a laserdisc player inside, and a full Don Bluth cartoon you could play. Dirk the Daring, Princess Daphne in her glass bubble, Singe the dragon on his pile of gold. Nobody had seen anything like it in an arcade, and no home computer of the day could dream of running it.

Now your Atari ST can. With a SidecarTridge Multi-device in the cartridge slot, Dragon’s Lair runs on an Atari ST, STE, Mega ST or Mega STE: the whole cartoon full screen at 25 pictures a second, with its sound, played on the joystick or the keyboard by the arcade’s own rules. The Raspberry Pi Pico in the cartridge plays the game’s clips from the microSD card, each picture 320×200 in 16 colours of its own, picked from the STE’s 4,096 colours or the ST’s 512. The sound comes out of the DMA sound chip on an STE or a Mega STE, and out of the YM2149 on the others. The game’s logic comes from DirkSimple.

Grab your sword. The castle is waiting.

The Dragon's Lair attract movie on a Mega STE
The attract movie, as the Mega STE shows it.

Bring your own disc. None of the game’s clips or sound is included in the app or its source code. You need your own copy of the PC CD-ROM Dragon’s Lair CD-ROM (Version 3.1) by Digital Leisure, as an ISO 9660 image (DL_CDROM_V31.ISO, about 600 MB). It is the only edition that works. If your own disc no longer reads after all these years, the Internet Archive keeps a copy for preservation: look for “Dragon’s Lair CD-ROM (Version 3.1)” on archive.org.

Table of contents
  1. 🛡️ What you need
  2. 🚀 Installation
  3. 💿 The clips on the card
    1. On a computer, in a few minutes
    2. On the cartridge, in about an hour
    3. No clips yet
  4. 🏰 Switching on
  5. 📜 The start menu
  6. ⚔️ Playing
  7. 🏆 Game over, the continue and the high scores
  8. 🧰 Troubleshooting
  9. 🙏 Acknowledgements
  10. 🛠️ Setting Up the Development Environment
  11. 📄 License
  12. 🤝 Contributing

🛡️ What you need

  • The game’s PC CD-ROM, as an ISO 9660 image: Dragon’s Lair CD-ROM (Version 3.1) by Digital Leisure (see above).
  • A SidecarTridge Multi-device with Dragon’s Lair installed from the app store, and a microSD card with room for the clips: 535 MB for an STE or a Mega STE, 546 MB for an ST or a Mega ST, both if the card goes from one machine to the other.
  • An Atari ST, STE, Mega ST or Mega STE with a colour monitor, in low or medium resolution. In high resolution the app returns to GEM with a message.
  • The keyboard, or a joystick in the joystick port.

🚀 Installation

  1. Launch the Booster App on your SidecarTridge Multi-device.
  2. Open the Booster web interface.
  3. In the Apps tab, select “Dragon’s Lair” from the list of available apps.
  4. Click “Download” to install the app to your SidecarTridge’s microSD card.
  5. Once installed, select the app and click “Launch” to activate it.

Then make the clips (next section), switch the Atari on, and the adventure begins.

💿 The clips on the card

The game is the CD-ROM’s 194 video clips, converted once for the machine they will play on: 320 by 200 pixels in 16 colours chosen for each picture, at 25 pictures a second, with their sound. The converted clips live in the card’s DLAIR folder: DLAIR/STE for an STE or a Mega STE, and DLAIR/ST for an ST or a Mega ST. There are two ways to make them.

On a computer, in a few minutes

Open the converter at https://md-dragons-lair.sidecartridge.com in a desktop browser, with the card in the computer:

  1. Choose the CD-ROM image. The page checks that it is the right one.
  2. Tick the machines: STE, ST, or both.
  3. Choose where the files go: straight onto the card (choose the card, or its DLAIR folder; Chrome and Edge can do this), or a DLAIR.zip to unzip at the top of the card (any browser).
  4. Convert. The page uses your computer’s cores: a few minutes for both sets on a recent computer.

Nothing is uploaded: the image stays on your computer.

On the cartridge, in about an hour

Copy the image into the card’s DLAIR folder and switch the Atari on. At every start the cartridge checks the clips for the machine it is plugged into and converts the missing ones. The first time that is the whole game: about an hour (56 minutes on a Mega STE). The screen shows the clip being converted, the progress of the whole game and the time left, so the Atari can be left alone. Space stops it, and the next start carries on where it stopped. The app looks for DL_CDROM_V31.ISO first, then for any .ISO in the folder that holds the game.

Once a set is complete the image is no longer needed: the app plays the clips without it.

No clips yet

With neither the clips nor the image on the card, the start screen says so and shows a QR code. It opens the web converter, already set for the machine the cartridge is plugged into. Convert the clips, put the card back, and switch the Atari off and on.

The screen without clips, with its QR code

🏰 Switching on

At every start the app checks the clips on the card for a few seconds. Then the attract movie plays with its sound, just as the arcade cabinet did between games.

KeyIn the attract movie
Fire, Space or ReturnStart a game
MThe start menu
TThe high scores
U / DVolume up or down
EscBack to GEM

After the movie the start menu comes up by itself. Left alone for 20 seconds, it goes back to the movie.

📜 The start menu

Every option has a key of its own and is saved on the cartridge. Fire, Space or Return starts a game.

The start menu

KeyOptionWhat it does
HOldies modeDraws the move to make over the picture: an arrow at the edge of the screen for a direction, at a corner for a diagonal, the sword in the middle. An outline while the move is still to come, filled while it can be pressed.
IInfinite livesDirk never runs out of lives.
LLivesThe lives a game starts with, 1 to 5.
OScene orderArcade: a scene of each row at random, as the arcade does. Fixed: always the same order.
WWatch modeThe game plays itself, every move right. Any key, or fire, goes back to the menu.
CContinueAfter game over, ten seconds to carry on with the game, the lives back and the score at 0.
SInput soundsA blip when a move is taken, a buzz for a move pressed when none is expected.
ATimingRelaxed (the default): a move pressed up to a quarter of a second after its moment still counts. Arcade: the arcade’s exact moments.
DAfter a deathMove on: the next scene, as the arcade does; the scene you died in comes back later. Retry: the same scene again until you pass it or run out of lives.
PStart atThe scene a game starts at, from the list below.
THigh scoresThe table of the ten best.
XBoosterBack to the Multi-device’s menu (the Atari resets into it).
EscGEMBack to the desktop, from the menu or anywhere in the game.

Start at lists the start and every scene, including the reversed ones (the arcade’s mirrored rooms). Up and Down move, Left and Right turn a page, Return chooses, and Space goes back without changing anything.

Choosing the scene to start at

⚔️ Playing

Dirk follows the joystick in the joystick port (the mouse port is not used) or the cursor keys, and swings his sword with fire or Space. Two directions at once make a diagonal, on the stick or on the keys.

Each scene is a short cartoon. At each danger there is a moment to move: the right direction, or the sword, while it lasts, and Dirk lives to fight on. A wrong one, or none at all, and he dies. A move pressed too early is ignored, so pressing again is fine. A few dangers are about timing itself, such as the jumps on the falling platform: the right move at the wrong moment is a death there, exactly as in the arcade.

At the start of each scene, the score and the lives show for three seconds:

The score and the lives at a scene's start

With oldies mode on, the move to make is drawn over the picture. Here, in the robot knight’s room, the arrow says right, and it is filled because now is the moment:

Oldies mode's arrow in the robot knight's room

KeyIn a game
Joystick, or the cursor keysThe directions
Fire, or SpaceThe sword
PPause: the scene, the score and the lives (P goes on, Q quits to the menu)
U / DVolume up or down, from -18 to +18 dB, kept for the next time
EscBack to GEM

The pause screen

The arcade’s own secret works too: hold up and left as the game starts, and Dirk has infinite lives.

The scenes come in thirteen rows, a scene of each row in turn, three times through. The scenes where Dirk died come back before the last one: the dragon’s lair itself. Rescue Princess Daphne to win.

🏆 Game over, the continue and the high scores

When the last life is lost, the scene’s game over plays. With Continue on, ten seconds count down: fire or Space carries on with the game, with the lives back and the score at 0 (with retry on, from the scene that was lost).

The continue countdown

A score among the ten best asks for your initials: up and down change a letter, left and right move between them, and fire or Return ends. The table is kept on the cartridge. T shows it from the attract movie and the menu, and it also shows by itself after a game.

The high scores table

Games in watch mode do not enter the table.

🧰 Troubleshooting

  • The Atari starts GEM without the game. Switch it off and on again: the cartridge must be ready when the Atari looks for it. In high resolution the app returns to GEM with a message: switch to low or medium resolution.
  • The screen asks for the clips, or says they are for an older version. The clips are missing, or were made by an older converter. Make them again (see The clips on the card), or leave the image on the card and let the cartridge convert what is needed.
  • The screen says NO SD CARD. Put the card in the Multi-device and switch the Atari off and on.
  • The screen says some clips are not converted yet. A conversion was stopped, or a clip failed (for example, a full card): C converts the missing ones, or the next start does.
  • The joystick does nothing. It must be in the joystick port, not the mouse port.
  • A scene seems impossible. Try oldies mode (H) to see the moves, the relaxed timing (A), retry (D) to practise a scene, or start at it directly (P).
  • The card fills up while converting. A set takes 535 MB (STE) or 546 MB (ST), and the image 596 MB. Once a set is complete, the image can go.
  • The cartridge’s SELECT button restarts the cartridge with a short press (then reset the Atari). Held for 10 seconds, it is a factory reset of the Multi-device’s settings.
  • Back to the Multi-device’s menu: X in the start menu, or the SELECT button.

🙏 Acknowledgements

This app stands on the shoulders of others, with thanks:

  • DirkSimple by Ryan C. Gordon (zlib licence): the game’s logic, its scenes, sequences, move windows, deaths and points, re-created from the original arcade ROM’s data.
  • SNES Super Dragon’s Lair Arcade by Chad Doebelin (MIT licence): its laserdisc segment table, used to find the laserdisc frames in the CD-ROM’s clips.
  • pl_mpeg by Dominic Szablewski (MIT licence): the MPEG-1 video and MP2 audio decoding tables.
  • QR Code generator by Project Nayuki (MIT licence): the QR code on the screen without clips.

Dragon’s Lair itself (Cinematronics, 1983, animated by Don Bluth) is not part of this project: the app plays the clips of the player’s own copy of the CD-ROM.

🛠️ Setting Up the Development Environment

This app is built on the md-framebuffer-template, a variant of the SidecarTridge Multi-device Microfirmware App Template. Build instructions are in the repository’s README. For the Multi-device’s programming documentation, see the Programming Guide.

📄 License

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

🤝 Contributing

Made with ❤️ by SidecarTridge

Previous: Apps Catalog Main