================================================================================ ____ ___ ___ __ __ ___ ___ ___ _ _ ___ _ _ __ _ _ _ __ / ___|/ _ \ / __| \/ |_ _/ __| | _ \ | | / __| || | / /| || | | |/ / | | | | | |\__ \ |\/| || | (__ | / |_| \__ \ __ | / _ \| || |_| ' < | |___| |_| |___) | | || |\___| |_|_\\___/|___/_||_|/_/ \_\_||_|_|_|\_\\ COSMIC RUSH 64K a 64k intro by felisuco CTM Euskal Encounter 34 (2026) 64k intro compo ================================================================================ "ZERO GB. ZERO MB. ONLY BYTES." Un ejecutable Linux <= 64 KB inspirado en Cosmic Rush 3 (la demo grande). C99 + raw X11 + GLX (OpenGL 3.3 core) con TODO el trabajo pesado en un fragment shader raymarched. Shader embebido en el binario, ningun fichero externo, ninguna dependencia opcional. Empieza como un 64k intro clasico (torus + solids + terrain + finale mandelbulb + credits) y despues explota en un MONTAJE de 80+ mini-escenas homenajeando cine, videojuegos, demoscene y guiños vascos. -------------------------------------------------------------------------------- REGLAS DEL COMPO (EE 64K INTRO) -------------------------------------------------------------------------------- * Tamaño maximo: 65536 bytes (un solo fichero ejecutable). * Solo librerias del sistema por defecto (nada tipo msvcr70.dll o SDL2). * Sin permisos de root/admin. * Salida limpia con ESC. * No escribir a disco (excepto tmp, y limpiar al salir). -------------------------------------------------------------------------------- DEPENDENCIAS RUNTIME (dynamic-linked, no cuentan al tamaño) -------------------------------------------------------------------------------- libc.so.6 (siempre) libm.so.6 (siempre) libX11.so.6 (siempre en cualquier Linux con entorno grafico) libGL.so.1 (siempre en cualquier Linux con graficos; provee GLX) libasound.so.2 (ALSA, siempre en cualquier Linux con audio) libpthread (parte de glibc moderno) Instalar HEADERS en Debian/Ubuntu para compilar: sudo apt install libx11-dev libgl1-mesa-dev libasound2-dev -------------------------------------------------------------------------------- BUILD -------------------------------------------------------------------------------- make # compila y muestra reporte de tamaño make pack # aplica UPX al ELF final (build/demo64k.final) make run # ventana 1280x720 make run-fs # pantalla completa make clean -------------------------------------------------------------------------------- RUN -------------------------------------------------------------------------------- Fullscreen (por defecto): ./build/demo64k.final ./build/demo64k Ventana 1280x720: ./build/demo64k.final w ./build/demo64k w Teclas: ESC / Q quit N quit (respuesta al prompt CRT) Y reinicia visual+audio desde el principio ENTER skip al post-DANCE (arranca la parte de mini-juegos) Click mouse quit (escape hatch) Al terminar el GAME OVER final la demo se cierra automaticamente. -------------------------------------------------------------------------------- TIMELINE (~337s total) -------------------------------------------------------------------------------- --- BLOQUE 64k INTRO CLASICO (0-63s) --- 0 - 2 s card 0 : FELISUCO 2 - 4 s card 1 : IN EE34 VISION 4 - 8 s card 2 : COSMIC RUSH 64K 8 - 16 s TORUS : donut plum con grid wireframe sobre papel lavanda 16 - 22 s SOLIDS : grid infinito de cajas/octaedros fly-through 22 - 30 s ORBIT : 5 solidos girando alrededor de octaedro central 30 - 33 s NEBULA : particulas cosmicas + shockwave sincro con kick 33 - 41 s TUNNEL : atravesando un tubo torcido 41 - 49 s TERRAIN : heightmap raymarched + cielo purpura 49 - 57 s FINALE : mandelbulb + arpeggio A minor 57 - 63 s CREDITS : FELISUCO / CTM / THANK YOU en papel --- BLOQUE CRT + MINI-JUEGOS (63-337s) --- 63 - 69 s ANOTHER WORLD-style preroll: CRT verde, HDD, prompt Y/N 69 - 81 s DANCE 4 chapters (aurora / kaleidoscope / pixel / arena) con drop de techno 160 BPM 81 - 99 s MATRIX digital rain 99+ s mini-games/refs montage @ 4x speed (~3s cada uno): SHMUP · TETRIS · MARIO · PACMAN · PONG · ASTEROIDS · STAR WARS · SNAKE · BREAKOUT · KAMEHAMEHA · DVD · WOLFENSTEIN · STREET FIGHTER · FLAPPY BIRD · BSOD · SONIC · HAL 9000 · INDIANA JONES · TERMINATOR · BLADE RUNNER · IKURRIÑA · EUSKAL LOGO · DONKEY KONG · ZELDA · GALAGA · TRON · JURASSIC PARK · AKIRA · MEGA MAN · BACK TO THE FUTURE · FROGGER · METROID · JAWS · STRANGER THINGS · DUNE · GHOSTBUSTERS · DOOM · CONTRA · METAL SLUG · BOMBERMAN · MINECRAFT · STAR TREK · PLASMA · KEFRENS BARS · ROTOZOOMER · STARFIELD 3D · METABALLS · FIRE · GREETINGS SCROLLER · CENTIPEDE · TUNNEL FX · VECTOR BALLS · MANDELBROT · ANOTHER WORLD · ALIEN xenomorph · SPACE INVADERS · AMIGA WORKBENCH · KITT scanner · VOXEL LANDSCAPE · DRAGON BALL SS · PREDATOR thermal · Q*BERT · MS-DOS prompt · SEGA splash · PORTAL · ROCKY · MATRIX pill · GAMEBOY boot · RAMBO · PIKACHU · MTV · WINDOWS 3.1 · MARIO KART · SIMPSONS · BATMAN signal · SUPERMAN shield · MASTER CHIEF (Halo) ~337 s INSERT COIN / GAME OVER --> auto-close -------------------------------------------------------------------------------- AUDIO -------------------------------------------------------------------------------- Mini synth procedural via ALSA en thread separado. Cero samples. SONG A (dark minor, 120 BPM): Progresion Am - F - C - G Kick 4-on-the-floor + snare beats 2/4 + off-beat hats Bass saw + octave con sidechain-like dip en cada kick Pad triada con LFO lento + lead melody escala A minor Arp finale A minor arpeggio en la parte mandelbulb SONG B (techno drop, 160 BPM): Progresion Em - C - G - Dm mas etereo Kick mas fuerte con click + hats de 16 (0.09s) Solo durante DANCE (T=69-81) Fade in/out limpio, silencio dramatico en MATRIX El shader recibe `T` (tiempo audio-driven) y `B` (beat envelope 0..1) para sincronia visual-musical. -------------------------------------------------------------------------------- ARQUITECTURA -------------------------------------------------------------------------------- src/main.c XOpenDisplay + glXChooseFBConfig + glXCreateContextAttribsARB (3.3 core) + main loop con XNextEvent. Fullscreen via _NET_WM_STATE_FULLSCREEN. Punteros GL cargados via glXGetProcAddressARB (evita GLEW). Fullscreen triangle via gl_VertexID trick (sin VBO). Torus mesh 28x14 con VBO/EBO (flat shading via dFdx/dFdy). Keyboard: event loop + XQueryKeymap polling (double-safety en XWayland). Time-remap dispatcher para reordenar/velocidad de escenas sin editarlas. src/audio.c pthread + ALSA (snd_pcm_open + snd_pcm_writei blocking). Osciladores sin/saw/sqr en C, kick/snare/hat sinteticos. Master volume schedule con fades entre song A y song B. shader.frag Todas las escenas viven aqui: raymarching + SDFs + procedurales + mini pixel-art font (glyphs 3x5 packed en int bits). 9 funciones scene_extras1..9 con 62 mini-escenas del montaje. Se embebe en compile time por el Makefile via sed -> src/shader_embed.h. Iteracion: editar shader.frag y `make` recompila (~1 segundo). -------------------------------------------------------------------------------- REPORTE DE TAMAÑO -------------------------------------------------------------------------------- Version actual: ~62 KB (94% del budget de 64 KB). Pipeline de compresion: elf raw ~333 KB (gcc -Os + strip) upx --best ~62 KB (LZMA compression, ELF real ejecutable) El .final es un ELF nativo (double-click funciona en cualquier file manager). No hay shell trampoline ni auto-extract: es el binario real. -------------------------------------------------------------------------------- ORIGEN -------------------------------------------------------------------------------- Version big-brother: ../cosmicrush3/ (Python + pygame, demo compo grande) La estructura visual mimica CR3 pero cada escena es un shader GLSL original, no un port del codigo Python (imposible portar numpy a GLSL). Escenas basadas en CR3: * INTRO cards -> mismo estilo paper lavanda + typography black * TORUS -> plum + grid wireframe (matches TorusScene BG/palette) * SOLIDS -> inspirado en SolidsRainScene de CR3 * ORBIT -> inspirado en OrbitingSolidsScene de CR3 * NEBULA -> particulas cosmicas + shockwave sincronizado * TERRAIN -> heightmap fly-through como en CR3 * FINALE -> mandelbulb (nuevo, no equivalente 1:1) * CREDITS -> FELISUCO/CTM/THANK YOU stacked sobre papel El bloque de mini-juegos es exclusivo de la version 64k: aprovechando que cabe muchisimo shader en pocos KB tras UPX, se rellena el budget con 60+ mini-escenas homenaje. -------------------------------------------------------------------------------- CREDITOS -------------------------------------------------------------------------------- Code + shader ..... felisuco Music (synth) ..... procedural, C Tools ............. C99, gcc -Os, X11 headers, GL headers, ALSA headers, UPX Group ............. CTM / Chimuelos Taxidermistas En Motonieve felisuco -- info@justdust.com https://justdust.com Todos los personajes, logos y refs son propiedad de sus respectivos dueños. Uso puramente como homenaje demoscene sin animo de lucro. -------------------------------------------------------------------------------- GREETINGS -------------------------------------------------------------------------------- To the good people at EE34, y a toda la scene: RGBA, TPOLM, ULM, iNK, MERCURY, FARBRAUSCH, TITAN, KEFRENS y a todos los que siguen empujando bytes uno a uno. STAY COSMIC. KEEP CODING. ================================================================================