Skip to content

Commit f8cd27e

Browse files
committed
Update and add acknowledgments
[skip ci] Signed-off-by: Joachim Wiberg <[email protected]>
1 parent 1f4e7f6 commit f8cd27e

File tree

2 files changed

+221
-80
lines changed

2 files changed

+221
-80
lines changed

README.md

Lines changed: 221 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -1,139 +1,280 @@
1-
# Infix Demo
1+
# Oldschool Demo for Shows etc.
22

3-
A classic demoscene-style demo featuring multiple visual effects with
4-
oldschool aesthetics.
3+
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
4+
[![Build Status](https://github.com/kernelkit/demo/workflows/Build%20and%20Release/badge.svg)](https://github.com/kernelkit/demo/actions)
5+
[![Docker Image](https://img.shields.io/badge/docker-ghcr.io-blue.svg)](https://ghcr.io/kernelkit/demo)
6+
[![Latest Release](https://img.shields.io/github/v/release/kernelkit/demo?include_prereleases&label=latest)](https://github.com/kernelkit/demo/releases/latest)
57

6-
## Scenes
8+
A classic demoscene-style demo featuring multiple visual effects with oldschool aesthetics. Built with SDL2 and inspired by 1990s Amiga/PC demos.
79

8-
The demo cycles through different scenes.
10+
![Demo Screenshot](demo-screenshot.png)
911

10-
- **Starfield** — 3D scrolling stars with sine wave text scroller
11-
- **Plasma** — Colorful plasma effect with sine wave text scroller
12+
## Features
13+
14+
### Visual Effects
15+
16+
The demo includes 9 different scenes that cycle automatically:
17+
18+
- **Starfield** — 3D star field with rotating textured Jack sphere, periodic particle bursts, and burning logo effects
19+
- **Plasma** — Colorful plasma effect with animated gradients
1220
- **Rotating Cube** — Texture-mapped 3D cube with copper bars background
13-
and traditional bottom scroller
14-
- **Tunnel** — Psychedelic tunnel effect with traditional bottom scroller
15-
- **Bouncing Logo** — Animated logo with bouncing physics and rotation effects
21+
- **Tunnel** — Psychedelic texture-mapped tunnel effect
22+
- **Bouncing Logo** — Physics-based bouncing and rotating logo
23+
- **Raining Logo** — Multiple logos falling with physics
24+
- **3D Star Ball** — Fibonacci sphere with rotating dots
25+
- **Checkered Floor** — Classic perspective floor with bouncing starball
26+
- **Rotozoomer** — Rotating and zooming texture effect
1627

17-
## Dependencies
28+
### Text Scrollers
1829

19-
On a Debian/Ubuntu/Mint system:
30+
Multiple scroller styles with smooth effects:
31+
- **Classic** — Traditional bottom scroller
32+
- **Sine Wave** — Undulating wave motion
33+
- **3D Roller** — Perspective roller with configurable outline/glow effects
34+
- **Bounce** — Bouncing text with squash/stretch
2035

21-
```
22-
sudo apt install libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev libsdl2-mixer-dev
23-
```
36+
### Interactive Features
2437

25-
## Building
38+
- Dynamic scroll text with control codes for speed, color, style changes, and pauses
39+
- Command-line options for fullscreen, window size, scene selection, and duration
40+
- Custom scroll text loading from files
41+
- Embedded MOD tracker music playback
42+
- Configurable roller text effects (4 visual modes)
2643

44+
## Quick Start
45+
46+
### Download and Run (Easiest)
47+
48+
Download the latest AppImage for your architecture:
49+
50+
**x86_64 (Intel/AMD):**
51+
```bash
52+
wget https://github.com/kernelkit/demo/releases/latest/download/InfixDemo-x86_64.AppImage
53+
chmod +x InfixDemo-x86_64.AppImage
54+
./InfixDemo-x86_64.AppImage
2755
```
28-
make
56+
57+
**aarch64 (ARM64):**
58+
```bash
59+
wget https://github.com/kernelkit/demo/releases/latest/download/InfixDemo-aarch64.AppImage
60+
chmod +x InfixDemo-aarch64.AppImage
61+
./InfixDemo-aarch64.AppImage
2962
```
3063

31-
## Running
64+
No installation required! The AppImage bundles all dependencies.
65+
66+
### Run with Docker
3267

68+
**Pull and run the latest image:**
69+
```bash
70+
# Allow X11 connections (run once per session)
71+
xhost +local:docker
72+
73+
# Run the demo
74+
docker run --rm -it \
75+
-e DISPLAY=$DISPLAY \
76+
-v /tmp/.X11-unix:/tmp/.X11-unix \
77+
ghcr.io/kernelkit/demo:latest
3378
```
34-
make run
79+
80+
**Or use docker-compose:**
81+
```bash
82+
docker compose up
3583
```
3684

37-
### Command-Line Options
85+
## Building from Source
86+
87+
### Dependencies
3888

39-
Run `./demo --help` to see all available options.
89+
On Debian/Ubuntu/Mint:
90+
```bash
91+
sudo apt install libsdl2-dev libsdl2-ttf-dev libsdl2-image-dev libsdl2-mixer-dev
92+
```
4093

41-
## Distribution
94+
On Fedora/RHEL:
95+
```bash
96+
sudo dnf install SDL2-devel SDL2_ttf-devel SDL2_image-devel SDL2_mixer-devel
97+
```
4298

43-
### AppImage (Recommended for sharing)
99+
On Arch:
100+
```bash
101+
sudo pacman -S sdl2 sdl2_ttf sdl2_image sdl2_mixer
102+
```
44103

45-
Create a portable AppImage that works on most Linux distributions:
104+
### Build and Run
46105

106+
```bash
107+
make
108+
./demo
47109
```
110+
111+
### Build AppImage
112+
113+
```bash
48114
make appimage
49115
```
50116

51-
This creates `InfixDemo-x86_64.AppImage` - a single executable file you
52-
can share with friends. They just need to:
117+
Creates a portable `InfixDemo-<arch>.AppImage` file.
53118

54-
1. Download the `.AppImage` file
55-
2. Make it executable: `chmod +x InfixDemo-x86_64.AppImage`
56-
3. Run it: `./InfixDemo-x86_64.AppImage`
119+
### Build Docker Image
57120

58-
**What is AppImage?**
59-
- Single-file executable that works on most Linux distros
60-
- No installation required - just download and run
61-
- Bundles all dependencies (SDL2, fonts, music, textures)
62-
- Works on Ubuntu, Debian, Fedora, Arch, etc.
63-
- Great for distributing demos to friends!
121+
```bash
122+
docker build -t demo .
123+
```
64124

65-
### Docker
125+
## Command-Line Options
66126

67127
```
68-
make docker-run
128+
Usage: demo [OPTIONS] [SCENE...]
129+
130+
Display Options:
131+
-f, --fullscreen Run in fullscreen mode (scales to display)
132+
-w, --window WxH Set window size (e.g., 1920x1080)
133+
-s, --scale N Integer scaling (e.g., 2 = 1600x1200)
134+
135+
Playback Options:
136+
-d, --duration SEC Scene duration in seconds (default: 15)
137+
-t, --text FILE Load scroll text from file
138+
-r, --roller N Roller effect: 0=all, 1=no outline, 2=clean, 3=color (default: 1)
139+
-h, --help Show this help message
140+
141+
Scenes:
142+
0 - Starfield 3 - Tunnel 6 - 3D Star Ball
143+
1 - Plasma 4 - Bouncing Logo 7 - Rotozoomer
144+
2 - Cube 5 - Raining Logo 8 - Checkered Floor
145+
146+
Examples:
147+
demo -f # Fullscreen, auto-cycle scenes
148+
demo -s 2 # 2x window size (1600x1200)
149+
demo -w 1920x1080 # Custom window size
150+
demo -d 30 2 6 # Show cube & star ball, 30s each
151+
demo -t /mnt/scroll.txt # Custom scroll text
152+
demo -r 2 0 # Clean roller effect, starfield only
69153
```
70154

71-
## Assets & Licenses
155+
## Customizing Scroll Text
72156

73-
### Font
157+
### Using Custom Text File
158+
159+
Create a text file with your scroll message:
160+
```bash
161+
echo "Hello demoscene! This is my custom scroller..." > myscroll.txt
162+
./demo -t myscroll.txt
163+
```
74164

75-
The FontStruction [Amiga Topaz 8][1] by [nonarkitten][2] is licensed
76-
under a Creative Commons Attribution [Share Alike license][3].
165+
### Control Codes
77166

78-
[1]: https://fontstruct.com/fontstructions/show/889446
79-
[2]: https://fontstruct.com/fontstructors/828567/nonarkiteen
80-
[3]: http://creativecommons.org/licenses/by-sa/3.0/
167+
The scroll text supports embedded control codes for dynamic effects:
81168

82-
### Music
169+
| Code | Description | Example |
170+
|------|-------------|---------|
171+
| `{PAUSE:seconds}` | Pause scrolling for N seconds | `{PAUSE:3}` |
172+
| `{SPEED:pixels}` | Change scroll speed (pixels/sec) | `{SPEED:100}` |
173+
| `{STYLE:name}` | Switch scroll effect style | `{STYLE:roller}` |
174+
| `{COLOR:r,g,b}` | Set text color (RGB 0-255) | `{COLOR:255,0,0}` |
175+
176+
**Available Styles:**
177+
- `wave` - Sine wave scroller
178+
- `roller` - 3D roller scroller with outline and glow
179+
- `classic` - Traditional bottom scroller
180+
- `bounce` - Bouncing text with squash/stretch
181+
182+
**Example scroll.txt:**
183+
```
184+
{SPEED:400}{STYLE:bounce}
185+
186+
Welcome to... the Demo!{PAUSE:2}
187+
{SPEED:400}
188+
189+
Now scrolling... FAST!{SPEED:800}
83190
84-
The demo includes **"Enigma"** by [Phenomena][4], licensed under the
85-
[Mod Archive Distribution license][5].
191+
{SPEED:400}
192+
{STYLE:roller}Now with 3D roller! {PAUSE:1.5}
86193
87-
[4]: https://modarchive.org/index.php?request=view_artist_modules&query=72943
88-
[5]: https://modarchive.org/index.php?request=view_by_license&query=publicdomain
194+
{COLOR:255,0,0}
195+
RED
196+
197+
{COLOR:0,255,0}
198+
GREEN
199+
200+
{COLOR:0,0,255}
201+
BLUE
202+
203+
{COLOR:0,0,0}{STYLE:wave}Back to waves... Greetings to the demoscene! <3
204+
```
205+
206+
**Note:** Use `{COLOR:0,0,0}` to return to the default rainbow gradient effect.
89207

90208
## Adding Custom Music
91209

92-
The demo supports MOD/XM/IT tracker music files. To replace the music:
210+
The demo supports MOD/XM/IT tracker music files:
93211

94-
1. Download a compatible MOD file from [The Mod Archive][6]
212+
1. Download a MOD file from [The Mod Archive](https://modarchive.org/)
95213
2. Rename it to `music.mod`
96214
3. Place it in the project directory
97-
4. Run `make clean && make`
215+
4. Rebuild: `make clean && make`
98216

99-
[6]: https://modarchive.org/
217+
The music will be embedded in the binary.
100218

101-
## Customizing Scroll Text
219+
## Development
102220

103-
Use the `-t` option to load custom scroll text from a file. This is especially
104-
useful when running in containers where you can mount your scroll text file:
221+
### Project Structure
105222

106-
```bash
107-
./demo -t /path/to/scroll.txt
223+
```
224+
.
225+
├── demo.c # Main source code
226+
├── Makefile # Build system
227+
├── Dockerfile # Container build
228+
├── utils/
229+
│ └── build-appimage.sh # AppImage build script
230+
├── .github/
231+
│ └── workflows/
232+
│ └── build.yml # CI/CD pipeline
233+
├── topaz-8.otf # Embedded font
234+
├── jack.png # Texture asset
235+
├── logo.png # Logo asset
236+
├── infix.png # Infix logo for fire effect
237+
├── wires.png # Wires logo for fire effect
238+
├── scroll.txt # Default scroll text
239+
└── music.mod # Optional MOD music file
108240
```
109241

110-
### Control Codes
242+
### Architecture Support
111243

112-
The scroll text supports embedded control codes for dynamic effects, inspired
113-
by classic demoscene scrollers. Control codes use the format `{CODE:PARAMETER}`.
244+
- **x86_64** (Intel/AMD 64-bit)
245+
- **aarch64** (ARM 64-bit)
114246

115-
#### Available Control Codes
247+
Both architectures are built automatically via GitHub Actions and released as AppImages and Docker images.
116248

117-
| Code | Description | Example |
118-
|------|-------------|---------|
119-
| `{PAUSE:seconds}` | Pause scrolling for N seconds | `{PAUSE:3}` |
120-
| `{SPEED:pixels}` | Change scroll speed (pixels/sec) | `{SPEED:100}` |
121-
| `{STYLE:name}` | Switch scroll effect style | `{STYLE:roller}` |
122-
| `{COLOR:r,g,b}` | Set text color (RGB 0-255) | `{COLOR:255,0,0}` |
249+
## Assets & Licenses
123250

124-
#### Style Names
251+
### Code
125252

126-
- `wave` - Sine wave scroller
127-
- `roller` - 3D roller scroller with outline and glow
128-
- `bottom` - Traditional bottom scroller
253+
MIT License - See LICENSE file for details.
129254

130-
#### Example Scroll Text
255+
### Font
131256

132-
```
133-
Welcome to the Infix Demo!{PAUSE:2} {SPEED:250}Fast text!{SPEED:180}
134-
{STYLE:roller} Now with 3D roller effect!{PAUSE:1.5}
135-
{COLOR:255,0,0}Red text!{COLOR:0,255,0} Green text!{COLOR:0,0,0}
136-
{STYLE:wave} Back to sine wave... Greetings to the demoscene!
137-
```
257+
The FontStruction [Amiga Topaz 8](https://fontstruct.com/fontstructions/show/889446) by [nonarkitten](https://fontstruct.com/fontstructors/828567/nonarkiteen) is licensed under a Creative Commons Attribution [Share Alike license](http://creativecommons.org/licenses/by-sa/3.0/).
138258

139-
**Note:** Use `{COLOR:0,0,0}` to return to the default rainbow gradient effect.
259+
### Music
260+
261+
The demo includes **"Enigma"** by [Phenomena](https://modarchive.org/index.php?request=view_artist_modules&query=72943), licensed under the [Mod Archive Distribution license](https://modarchive.org/index.php?request=view_by_license&query=publicdomain).
262+
263+
## Contributing
264+
265+
Contributions are welcome! Feel free to:
266+
- Report bugs or request features via [GitHub Issues](https://github.com/kernelkit/demo/issues)
267+
- Submit pull requests with improvements
268+
- Share your custom scroll texts and music combinations
269+
270+
## Acknowledgments
271+
272+
Inspired by classic Amiga and PC demos from the 1990s demoscene. Special thanks to:
273+
- The demoscene community for decades of creative inspiration
274+
- SDL2 developers for the excellent multimedia library
275+
- Mod Archive for preserving tracker music history
276+
- Classic demoscene resources at [lodev.org](https://lodev.org/cgtutor/)
277+
278+
---
279+
280+
**Made with ❤️ for the demoscene**

demo-screenshot.png

47.5 KB
Loading

0 commit comments

Comments
 (0)