Second Reality Source Code Released
Update: See the "Spin Doctor" Hard Drive Speakers play Second Reality
Twenty years after Assembly '93, Future Crew released the source code for Second Reality.
I was 16. I downloaded it from a BBS on a 14.4 modem.
I wasn't a beginner. I was writing TSRs. I wrote routines to render 3D meshes with Gouraud shading. I was doing inline assembly blocks in Turbo Pascal. I understood VGA registers. I could set up Mode 13h, chain to Mode X, write directly to 0xA000.
Then I ran SECOND.EXE.
The real-time 3D. The rotozoomer. The texture-mapped tunnel synced to the beat. The lens distortion. That transition where the music drops and everything snaps into the next effect without a single frame of hesitation.
I knew exactly enough to understand how far ahead this was. It was not just palette tricks. These guys had the entire VGA timing pipeline under control while mixing a multi-track soundtrack in software on the same CPU. Twenty-three effects in sequence with music sync and zero glitches on the same 486.
Update: Added more information and thoughts in 2020, 2024, 2025, 2026.
The Source Code
Twenty years of wondering how they did it. Now I can read it.
Fabien Sanglard published a five-part code review.
The biggest surprise: it's not one program. It's 23 separate executables. Each effect is its own .EXE, compiled independently. A custom interrupt-driven scheduler called DIS (Demo Interrupt Server) chains them together. Loads the next part into memory while the current one is still running. DIS hooks INT 08H (the system timer), keeps a master clock, and signals each part when to start, transition, and die.
The S3M playback runs inside the timer interrupt. The music never drifts because it's not running in the main loop. It's running in the ISR. That's why the sync was perfect. That's the part I could never figure out by just watching.
But before any of that, there are the documents.
Psi founded Future Crew on a C64 in 1986 when he was about 13. When Gore joined, FC was just two people: Psi and Purple Motion. Gore called their BBS and said "I love your little demos. May I become a FC member?". Then Gore recruited everyone else: Skaven, Trug, Pixel, Wildfire, Marvel.
FCINFO10.TXT which was distributed next to FILE_ID.DIZ in 2nd_real.zip, lists the ages of the team members. Psi, the lead coder, was 20. Trug was 21. Wildfire was 18. Purple Motion, who composed the main soundtrack, was 17. The oldest person on the team was 21.
┌────────────────────────────────────────────────────────────┐ │ THE CURRENT MEMBERSTATUS │ └────────────────────────────────────────────────────────────┘ Alias: Real name: Age: Main responsibility: -------------------------------------------------------------- GORE Samuli Syvahuoko 20 Organizer Psi Sami Tammilehto 20 Coder Trug Mika Tuomi 21 Coder Wildfire Arto Vuori 18 Coder Purple Motion Jonne Valtonen 17 Musician Skaven Peter Hajba 18 Musician Marvel Aki Maatta 18 Graphics Artist Pixel Mikko Iho 18 Graphics Artist Abyss Jussi Laakkonen 18 BBS Coordinator
The IDEAS file is a brainstorm list with categories:
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█ + Big routine ('demo part') T Trug
█ Unreal 2 - Ideas █ - Small routine W Wildfire
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█ ? Depends P Psi
Note: This is not a list of what WILL be in the demo, but a list of what
could be in the demo. Some parts won't be finished in time (surprise!?)
and some will be rejected later after experimenting....
================ Fully implemented (ready to use in demo):
(none...)
================ Partially implemented:
+ Shadow / 3DS mountain scroller [T]
+ Mirror / 3DS mirrorball scroller [T]
+ 256 color lightsourced glenz [P]
...
================ Just ideas:
? glass cube [W]
- rotating dotcannon with distancefade and collisions to walls [P]
- 2D jelloblock with delay (blue screen bg)
...
================ Rejected?:
- Whirpool [P]They had a structured creative process with triage built in. [T] is Trug, [P] is Psi, [W] is Wildfire. Three coders, each owning a set of effects, working in parallel.
The first part of the SCRIPT file tracks status, completion percentages. Psi's lens effect: 99%. Wildfire's plasma cube: 67%. The endscroller: dash. Not started. A project tracker. In a text file. For a demo.
Then there's a storyboard. Mixed Finnish and English. It describes every transition, every camera move, every sound effect cue. "Takaa lentää ylisuuri 'massiivi' alus kohti horisonttia". A massive ship flies from behind toward the horizon. This was planned shot by shot, like a film. Down to the Doppler effect on the flyby sound.
It's a pipeline. Not a monolith. They solved the "how do you fit a 10-minute demo into 640K" problem by giving each part the full memory space. DIS handles the handoff. I assumed it was one giant executable with a state machine.
The code is Turbo Pascal calling TASM assembly calling C. Three languages in one project. Separate build configs for development (windowed, with debug borders showing CPU usage per effect) and production (full screen, no overhead, encrypted, obfuscated, with anti-debugging hooks). They had a dev/prod pipeline. In 1993.
A few years ago, Mika Tuomi (Trug) released a home video from the "making of" the demo.

Most of the group went to his home in Pori, Finland to finalize it. You can see them crammed around 486s in Trug's guest house, arguing about screen layouts, compiler overhead, and audio panning. They're also teasing each other, about the music, "these in the middle are all shite", or lack of "field experience" to properly draw a chick on top of polar bear. And of course, whose turn is it to sleep on the bunk bed.
Psi has fascinated me. He has never given a substantive interview. He appears in the home video, discussing Pascal compiler overhead ("it produces a kilometer of assembly code"), debating screen layouts with Trug, shouting "Painovoima 700!" (Gravity 700!) while tuning a constant. Psi wrote the S3M player, the DIS scheduler, the 3D engine, half of the demo parts, and Scream Tracker, but that nine-minute home video is all we have.
Scream Tracker was Psi's answer to Amiga's 4-channel MOD. The Second Reality tracks use 8 channels. Psi wrote the file format AND the tracker AND the player so his teammates could compose music that exceeded what anybody else could do.
Purple Motion sampled "Ten seconds to transmission" from Tim Burton's Batman (1989) - right before the Joker hijacks the broadcast. "I am not an atomic playboy" from Vice Admiral William H.P. Blandy at the Bikini Atoll nuclear tests (1946). Skaven used the sound of the Klingon moon Praxis explosion shockwave from Star Trek VI (1991).
All 8-bit samples. A 17-year-old building an orchestral score from movie dialogue and VHS recordings, in a tracker his 20-year-old teammate wrote, playing back inside a timer interrupt on a 486.
The HDD actuator coil acts like a voice coil in a traditional speaker, causing the read/write arm to vibrate and produce sound.
Four hard drives total, two per stereo channel, with a crossover so different drives reproduce different frequency ranges. The platters spin rhythmically using motor controllers triggered by peaks in the audio signal.
This video is an edit of Second Reality as heard through the Spin Doctor hard drive speakers.
What I Missed at 16
The palette tricks weren't the gap. I was already there.
I wrote an "intro" for an Israeli BBS that rendered a sphere with exactly 252 polygons. Had to reserve four colors: black, red, green, blue. Three lights orbited the sphere, one per color channel. For each polygon I calculated the dot product of the light direction against the surface normal, got the intensity per light, and mixed the RGB values into a palette index. Then updated all 252 colors per frame at once. Zero pixel writes after the initial render. Flat shading just by palette changes. Very fast.
I recognized some of the techniques, but the gaps were everywhere. I remember the envy in the sheer talent of these coders.
Linear algebra. I could calculate a dot product for lighting. Future Crew's 3D engine used 3×3 rotation matrices with translation vectors, loaded 3DS objects with camera streams, and rendered them with a painter's algorithm. Real transformation pipelines.
VGA tricks beyond Mode X. Future Crew went way past any documented VGA mode. Fabien's review confirms: each part ran its own tweaked VGA mode with custom resolutions. Not Mode 13h. Not Mode X. Custom register configurations everywhere. The SCRIPT file references 320×200 and 320×400. They used VGA latches to write 4 pixels simultaneously. Some effects faked lower-resolution RGB displays by using the VGA planes as separate color channels. They were reprogramming the display hardware per effect.
Interrupt-driven architecture. Future Crew's insight was that the PC timer interrupt is a free scheduler. Hook INT 8, do your time-critical work there (music mixing, sync signals), and let the main loop focus on rendering. The two never compete. The music is always on time because it runs at hardware priority.
Twenty Years
Members of Future Crew went on to found Remedy Entertainment (Death Rally, Max Payne, Alan Wake) and later spun off the benchmarking tool Final Reality into Futuremark (the 3DMark benchmark series). Gore explained why they built the game engine from scratch: "Demosceners are arrogant people. They want to do everything themselves because they know they can do it. Using someone else's code is like admitting that he's better than you". While Gore was away on compulsory military service, he lost control of the company he'd founded.
Trug founded Bitboys, a graphics hardware company, which was eventually acqui-hired by ATI, merged into AMD and then into Qualcomm (they all left since to found Siru). Pixel did graphics for Epic Pinball and went on to become a short film and music video director and a professional skydiver. Skaven did sound design and particle effects for Max Payne and Alan Wake. Purple Motion became a world-renowned orchestral music composer.

Update, 2020:
Finland accepted the demoscene onto its national UNESCO list of intangible cultural heritage. First time a digital culture received that status. Anywhere. The Assembly party where Second Reality premiered in 1993 is still running. Hackaday published a deep technical overview confirming what anyone who tried DOSBox already knew: the nonstandard VGA tricks make faithful emulation nearly impossible.
Update, 2024:
Skaven gave a 30th anniversary interview to Tarnkappe with the full where-are-they-now and filled in details about the making of Second Reality. The music took 4-5 days at Trug's guest house, with further tweaks at the Assembly party itself. The end credits track was originally composed for a spaceship battle scene that got cut. PC was chosen because the programmers "wanted to show this kind of stuff is possible even on a PC". They had seen Kefrens' Desert Dream, the Amiga demo that took 1st place at The Gathering in Norway a few months prior. Instead of the classic "megademo" format - loosely stitched effects - they wanted something designed. Planned transitions. Cinematic pacing. A beginning, middle, and end.
There was also Illuminatus, a planned Future Crew game that never shipped. A procedurally generated, Elite-style space project. Psi wrote early engine code. Skaven later described it as "more of an entertaining 'what if' coffee table discussion than a real project". Gore confirmed it was commissioned by MikroBitti, a Finnish computer magazine. When journalists reached out to Psi, "Tammilehto has yet to reply".
Update, 2025:
2^5 Years. Three full ports now exist.
Nick Kovac ported the plasma cube effect to JavaScript (now a part of sr-port). Direct translation from the original assembly into JavaScript. Self-modifying code. VGA hardware assumptions everywhere. One effect out of twenty-three. It was still brutal.
covalichou rewrote the entire demo in JavaScript. All 23 parts. Single HTML file. A former PC demoscener, fluent in x86, verifying line by line against DosBox Debugger when the output diverged from the original. Soundtrack plays through WebAudio Mod Player. The same S3M mixing pipeline that once ran inside a hardware timer interrupt on a 486 now runs inside a browser tab.
Conspiracy released a Win32 reconstruction - the most hardware-accurate port. The original Pascal and assembly adapted carefully for modern PCs.
XorJS produced a C++ port targeting Windows, Linux, and the web via WebAssembly.
Intel acquired Siru in 2022. Trug's GPU team, from Bitboys through ATI, AMD, and Qualcomm, is now building Intel's discrete graphics.
Thirty-two years after Assembly '93:
From BBS to browser.
From DOS to WebAssembly.
From interrupt handlers to JavaScript event loops.
The source release made this possible.
The VGA tricks are still astonishing. The interrupt scheduler is still elegant. The fact that it now runs in a browser is surreal.
But what overwhelms me even more is who built it. They were teenagers. Seventeen. Eighteen. Twenty.
And they weren't just good at one thing: They understood hardware registers. Linear algebra. Fixed-point math. Compiler behavior. Audio mixing. Tracker design. Composition. Cinematic pacing.
They wrote their own music format. Their own scheduler. Their own rendering pipeline. Their own tools.
Three coders working in parallel. Two musicians pushing an 8-channel tracker beyond what anyone thought the PC could do. Artists designing inside brutal VGA constraints. An organizer keeping momentum and direction.
They didn't just write clever assembly. They ran a studio. They owned parts. They tracked progress in text files. They storyboarded transitions. They tuned constants together in a guest house in Pori pulling all-nighters.
And they were self-taught. Autodidacts.
There was no formal course on VGA register manipulation. No DSP class on mixing eight channels inside a timer interrupt without dropping frames. No curriculum on chaining twenty-three executables inside 640K with a custom scheduler.
The demoscene was their university.
BBSes were lecture halls. Source releases were textbooks. Assembly parties were peer review conferences.
If someone discovered a faster texture mapper, it spread. If someone abused VGA latches in a new way, everyone studied it. If your demo stuttered, you were publicly outperformed next month.
It was competitive. It was collaborative. It was distributed learning before GitHub.
Teenagers across Finland, Germany, Sweden, and beyond - trading disassemblies, sample packs, timing tricks, undocumented register values.
It was math and engineering and art and music happening at once. Like a Renaissance workshop, except the marble was VGA memory and the chisel was INT 08H.
Psi only appears briefly in that home video, debating Pascal compiler overhead, shouting "Painovoima 700!", smiling when something finally feels right. But mostly, silence. He built half the demo and never said a word about it. It reminds me of something Satoshi Nakamoto once wrote:
I'm better with code than with words though.
A group of young engineers compressing hardware knowledge, mathematics, music theory, and relentless iteration into 640K and shipping it on a deadline.
At 16, I saw graphics that felt impossible. Today I see synthesis that feels even rarer.
Not just talent. Range.
Not just skill. Dedication.
Not just tricks. Understanding.
They didn't just understand the machine.
They understood how to make it sing.