![]() | Logo by Nickman (anonymous IP: 10.9.102.219,0) | |||||||||||
| ||||||||||||
Audio (351) Datatype (51) Demo (214) Development (628) Document (24) Driver (102) Emulation (155) Game (1062) Graphics (516) Library (123) Network (243) Office (69) Utility (961) Video (74) Total files: 4573 Full index file Recent index file
 Amigans.net  OpenAmiga  Aminet  UtilityBase  IntuitionBase  AmigaBounty
Support the site
|
[Show comments] [Show snapshots] [Show videos] [Show content] [Show crashlogs] fr-025: The Popular Demo
AmigaOS4 port (c) kas1e
========================
ABOUT
-----
Once again, we're back to Farbrausch, who created many quality demos and
intros over the past ~20 years. This time it's "The Popular Demo", which
some of us may remember from the Breakpoint 2003 party, where it took a
well-deserved 1st place.
Initially, the demo used Direct3D 9 with kkino 1.66 / Werkkzeug1, so I had
to rework it to use OpenGL (Mesa in the case of AmigaOS4).
Original credits:
fiver2: direction, visuals.
chaos: code.
wayfinder: music.
sarah hill: character rig, animation & choreography.
giZmo: character design, modelling and weighting.
mike may: vocals.
tiberius: character bones.
phaser: additional graphics.
jeff oxborrow: recording.
ronny: pre-recording.
For more info, visit the demo's page on pouet.net:
https://www.pouet.net/prod.php?which=9450
AMIGAOS4 PORT
-------------
While the sources of fr-038_theta and fr-041_debris are open, the sources
of fr-025_the_popular_demo weren't, so I had to take the original Windows
executable for analysis. I found out that it used ordinary UPX packing,
which I easily unpacked, and found fr-025.kk inside, containing scene
graphs, procedural recipes, animations, and embedded assets.
Then, using a disassembler, I reconstructed the loader, playback logic,and
rendering bits, and rewrote them in portable C++ using OpenGL instead of
the original DirectX 9.Textures and meshes are still generated at startup,
so we don't have any additional data files coming with the demo, which, in
turn, means it takes a some seconds to prepare the data before the demo
starts.
Once I got it working on x86, I added the relevant endian changes, only to
find out that the speed wasn't as good as expected. So, I moved character
skinning, particle calculations, and other suitable animation work to the
GPU, added batching to avoid many small draw calls in favor of fewer,
larger ones, reduced repeated allocations of temporary buffers, got rid of
GCC's emuTLS in favor of a faster alternative, removed unnecessary SJLJ
exceptions, and minimized the binary size to just 2.6MB by removing unused
C++ baggage.
In the end, on an X1000 clocked at 2GHz with a Radeon RX 570,we get around
200-350 FPS.
If you want to run it in windowed mode, use the --win parameter, or simply
double-click or press Alt+Enter to switch between windowed and fullscreen
modes, and, as always, the FPS is shown in the window title when you're in
windowed mode.
COMMAND-LINE OPTIONS
--------------------
Usage:
fr-025_popular [options]
Options:
--windowed
--window
--win
Start in a window. Fullscreen mode is used by default.
--width N
Set the window width.
Default: 1280
--height N
Set the window height.
Default: 720
--vsync
Enable VSYNC (default off)
--no-audio
Disable music
--help
-h
Display the command-line help and exit.
RUNTIME CONTROLS
----------------
Alt+Enter / Left mouse-button dbl-click
Toggle fullscreen and windowed modes.
Escape
Exit the intro.
(c) kas1e 09.10.2026
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Copyright (c) 2004-2026 by Björn Hagström All Rights Reserved Amiga OS and its logos are registered trademarks of Hyperion Entertainment |