A source-driven browser port of the full loader sequence of
Second Reality, from "Alkutekstit I" through the final scroller.
Built from the original C + x86 assembly source
(ALKU/MAIN.C + friends), released into the public domain for
the demo's 20th anniversary. It runs the actual program logic, not a
lookalike.
> Title cards. Three centered messages fade in and out on black — "A Future Crew Production", "First presented at Assembly 93", and "in [Dolby Surround]" (the running gag — those DC-logo glyphs are right there in the FONA font).
> Panorama + credits. The wide starfield/mountain painting fades in and scrolls slowly while the credits (Graphics / Music / Code / Additional Design) fade in over the sky and stay fixed on screen as the painting scrolls behind them.
> The spaceship. When the scroll runs out, a giant ship sweeps over the camera, escort fighters tumble past, and the fleet recedes to a dot on the horizon — real-time gouraud-shaded 3D ("Alkutekstit II", the VISU engine).
> The moon explosion + title. The moon rises
over the same landscape, ignites, and detonates into an expanding debris ring
that whites out the screen — a 40-frame PRAX4.FLI animation played
at one frame per 4 vblanks with a white-blend palette fade (PAM). Out of the
white, the SECOND REALITY title painting fades in (BEG).
> The glenz vectors. The music switches to
the main theme (MUSIC1.S3M, also descrambled live), the wipe tears
the title away, the FC pedestal bounces in, and the transparent glenz solid
drops onto it — jello physics, XOR span-transition rendering, and dynamic
palette-block lighting, all running to the techno beat.
> The dot tunnel. Then 77 rings of 64 dots
each swallow the camera — Psi's Turbo Pascal part (TUN10.PAS),
ring circles and sine sway streamed from the original's precomputed tables
(TUNNEL.DAT / SINIT.DAT, shipped verbatim), camera
locked to ring 5, erase-and-plot per dot exactly like the inline asm.
> Tweaked VGA. The original runs an unchained planar "Mode X" with a 704-pixel-wide virtual canvas and a 320-wide visible window. Here that's a flat chunky indexed framebuffer, presented through a hand-written WebGL2 palette-lookup shader — one triangle, two textures, no library — the GPU acting as the VGA DAC (index → 6-bit DAC → RGB).
> The "copper". The DIS interrupt server did three things each vblank: hardware horizontal scroll (display-start + pixel-pan), palette upload, and an incremental palette-fade accumulator. All reproduced per virtual-frame. The painting itself is drawn vertically doubled, exactly as the original streams it.
> Semi-transparent text. A text pixel
adds 0x40/0x80/0xC0 to the background index, landing it in a
tinted copy of the palette — so text is a translucent tint that fades purely by
animating the palette, no redraw.
> The seamless switch. The scroll stops
exactly on the panorama's right half — and the 3D scene's background image
is that same half (byte-identical, palette-shifted +192). The video
mode changes under your nose and not one pixel moves. The ship engine itself
is a port of the VISU 3D pipeline: keyframe byte-code → 1.14 fixed-point
matrices → camera compose → project (fov 0x2200,
y-down) → back-face cull by normal → gouraud shade from per-vertex
normals × light vector → painter's fill, clipped to rows 25–174.
The intro plays MUSIC0.S3M — "UnreaL ][ - The 2ND
Reality", the slow ~2-minute intro arrangement of Purple Motion's theme.
(U2.ASM starts module 0 for a full run; module 1, the faster
variant, is the glenz song.) Its pattern data is XOR-scrambled on disk
(Future Crew's anti-rip protection) and ships verbatim — it's descrambled
live in the browser with a keystream reconstructed from the scrambled
files alone. The eight title/credit cues are timed to the song's
dis_sync sections, computed with libopenmpt.
All of it — reverse-engineering the C + assembly, porting the tweaked VGA + copper + font engine to JavaScript + WebGL, cracking the music protection, and building this page — was done by Claude Fable 5, working only from the raw public-domain source.