This is the reconstructed source code for the Virtual Light Machine by Jeff Minter originally published in 1995 for the ill-fated Atari Jaguar.
It is part of the llamasource project.
The source code can be compiled into an executable that you can run in t2k.exe
, a Jaguar emulator included in the utils
folder.
- Build Instructions
- Play the Virtual Light Machine
- Play the Virtual Light Machine - Old Method
- Notes on the Source Code
- Reading the Source Code
- Things Hidden Since the Foundation of the Light Machine
You may need to install the requirements for building. The below will work on Ubuntu-like platforms.
sudo apt install build-essentials wine python3
We use two tools to build the source code: rmac
and rln
. If you already have these installed you may have some
luck using them, if not you can build the versions suggested below as they are known to work.
First clone the vlm repository:
git clone https://github.com/mwenge/vlm.git
Next run the following commands to enter the vlm repository and downoad the assembler toolchain:
cd vlm
git clone [email protected]:mwenge/rmac.git
git clone http://tiddly.mooo.com:5000/rln/rln.git
Now you can build the toolchain, as follows:
cd rmac
make
cd ../rln
make
cd ..
You are now ready to build the rom image VirtualLightMachine.jag
:
make
This will let you play a barebones version of the VLM without any of the AudioCD infrastructure in
VirtualLightMachine.jag
using BigPEmu.
bigpemu src/bin/vlm.abs
You can run the VLM as follows using t2k.exe
:
wine ./utils/t2k.exe
Now open VirtualLightMachine.jag
as follows:
To launch the Virtual Light Machine, press 'Q'.
With the VLM activated, play some music on your computer and press F3
to start visualizing the music:
Here are some of the useful keys for playing with the VLM:
F1 - Fullscreen toggle
F3 - Enable Music device capture
F4 - Show Music Input
F6 - Load State
F7 - Save State
F11 - Throttle toggle
F12 - Screenshot
O - option
P - pause
Z/Ctrl - A
X/ALT - B
C/Space - C
Arrow keys
Numeric keypad (. is #)
Q - three-fingered salute (used on the flashing CD with ?) to engage VLM
Esc - Quit
VLM: press Z (button A) twice to enter program mode, press O to engage user programmable mode, then the numeric pad or numbers: first press is bank, second press is effect in bank.
You can find the original manual for the Jaguar CD (and the VLM) in the docs folder.
For convenience, here is the short section covering use of the VLM:
The content of this repository was originally retrieved from https://github.com/jaguar64/samples/tree/master/VLM.
Not all of the files in that dump are needed to build VLM and the core of the VLM itself is available only as an
executable vlm.abs
file. In order to reconstruct the source of the VLM core I reversed engineered 'vlm.abs` with the help
of the symbols file 'vlm.syms' - an extremely useful thing to have as it means the routine and variable names can be retained from
the original. The reconstructed VLM source and accompanying images and binary objects are available in the VLM folder.
It was possible to get everything to build with only minor modifications. Most of these were to make the source
comaptible with rmac
since most of the code would originally have been written for the native jaguar assembler
gasm
.
I've recently started annotating the reverse-engineered code. Little by little, its mode of operation is becoming clear and hopefully my annotations make the code worth exploring in its own right. A good place to start is vlm.s.
Things Hidden Since the Foundation of the Light Machine
It turns out there is some buried treasure.