# Demoscene

La demoscene (termine derivato dalla lingua inglese formato dalla fusione delle parole demo e scene, "scena" nel senso di mondo, ambiente) è un fenomeno di arte e cultura informatica, spesso indicato come parte della controcultura. Consiste nella produzione di demo, intesi come software dimostrativi della propria abilità con grafica, audio e programmazione, spesso non interattivi e finalizzati solo a essere brevemente osservati dagli spettatori.
Ebbe il suo momento di massimo splendore a cavallo fra gli anni ottanta e gli anni novanta, con l'avvento dei personal computer a 16 bit e dei primi ibridi a 16/32 bit e, principalmente, con Amiga e Atari ST. Le prime demo sono apparse, in realtà, già all'epoca dei computer a 8 bit, in computer quali Apple II, Atari 8-bit, Commodore 64 e ZX Spectrum.
Alcuni ritengono che la demoscene sia stata e sia ancora nel XXI secolo una nuova forma d'arte.

## Storia

Le demo nacquero, in origine, come firme introdotte nei programmi o nei dischetti di installazione di programmi e giochi da parte di alcuni cracker, pirati informatici che rimuovono le protezioni anticopia dal software.
In un'epoca in cui pochi paesi al mondo avevano una legislazione che proteggeva il software dalla copia, eliminare le protezioni e diffondere un programma era un'operazione comune. Coloro che avevano maggiore abilità, inventiva e pazienza riuscivano a introdurre anche un proprio demo nelle versioni sprotette: questo per farsi notare e riconoscere nelle proprie copie illegali personalizzate. Il cracker era tanto più abile come programmatore, se riusciva a inserire nel poco spazio rimasto a disposizione sul floppy disk, oltre al programma vero e proprio, una sua firma, magari colorata o arricchita di qualche tono musicale.
Con l'arrivo dei floppy disk da 3,5, il fenomeno della pirateria ebbe una drammatica impennata. I cracker, riuniti in gruppi o "team", inserivano sempre più spesso le loro firme animate e musicate in ogni dischetto. Queste firme, scritte in linguaggio macchina, dovevano occupare il minore spazio possibile sul dischetto, per non alterare la parte essenziale (il programma che doveva essere copiato). Fisicamente, le locazioni del disco in cui inserire queste composizioni sono nei semplici spazi inutilizzati del dischetto, nei settori di bootblock, o, addirittura, nell'intestazione del programma copiato, quindi andando a modificare il programma vero e proprio fondendovi all'interno il codice della firma. Il particolare tipo di animazioni che parte al lancio del programma copiato era denominato letter, sign, message o ancora intro. Il principio è analogo a quello degli splash screen nei software originali. Un nome in particolare ebbe una certa diffusione: cracktro, contrazione delle parole "cracker" e "intro" (da introduction), traducibile in "intro crackato". La prima volta che uno di questi cracktro apparve fu sui computer Apple II.
Quando il pubblico comincia ad ammirare queste demo come fossero opere a sé stanti, e non solo caricamenti e intro ai programmi, che nasce questa nuova concezione di arte: il pubblico giudica gli intro dei cracker, o dei team di cracker, e li apprezza, li studia, li prende come esempio di programmazione e vuole conoscere chi li ha realizzati. Gli intro stessi incominciano a essere distribuiti e diffusi come programmi singoli, perché altri li apprezzano e per dimostrare la propria bravura.
Gli "intro" mutano in demo per una precisa volontà del programmatore, per edonismo. Si formò un substrato culturale di programmatori che realizzavano demo per puro diletto e li diffondevano al grande pubblico che dimostrava di apprezzare notevolmente queste realizzazioni.
Al culmine della sua storia, la demoscene vantava decine di migliaia di appassionati in tutto il mondo ed erano organizzati eventi o feste in concomitanza con le fiere informatiche. C'erano poi le demo competitions: una sorta di concorsi a premi, organizzati durante i raduni informatici e i demo-party, nei quali i migliori programmatori si sfidavano sotto gli occhi di un pubblico competente e assai critico nel realizzare demo a tema con le feste o con un determinato soggetto, svelato all'ultimo momento. Il pubblico e le giurie composte da altri programmatori giudicavano e, secondo la bravura dei coder, la pulizia (leggerezza) di codice, la capacità di non intaccare troppa memoria nelle macchine, la velocità di esecuzione delle demo su CPU a bassa velocità, la bellezza artistica e le musiche giudicava il migliore.
Il fenomeno delle demo andò affievolendosi man mano che la tecnologia informatica si evolveva. Macchine sempre più espandibili e molto moddabili, i cui componenti erano cambiati rapidamente e aggiornati ancor più spesso, e le cui caratteristiche di costruzione variavano a distanza di pochi mesi dal lancio perché nuovi processori e schede grafiche venivano messi a disposizione, diventavano sempre più difficili da conoscere, da apprezzare fino in fondo e non richiedevano alcuna abilità speciale nel riuscire a padroneggiare tutte le capacità audio e video del computer: bastava aspettare pochi mesi e, quello che non poteva essere fatto con una determinata macchina o con una certa CPU, diveniva possibile, togliendo al programmatore il gusto di cimentarsi nelle tecniche di programmazione estrema. Mentre i primi programmatori della storia dell'informatica si erano trovati di fronte al problema di gestire le scarse risorse messe a loro disposizione ed erano diventati giocoforza dei virtuosi nel centellinare ogni byte di RAM, nel moltiplicare gli effetti video e quelli audio, al giorno d'oggi la situazione è capovolta. Basta aggiungere un po' di RAM in più, un nuovo processore, una nuova scheda video, e il programma che non riusciva a girare perché avido di risorse diventa di uso comune e addirittura banale.
La stessa vastità nel mercato delle schede grafiche o delle schede audio rende impossibile, per chi organizza una competizione demo, trovare un riferimento standard su cui basarsi, per poter giudicare in seguito il lavoro svolto dai coder secondo un riferimento comune. Tutte queste cose hanno eroso notevolmente il mondo della demoscene, fatto diminuire considerevolmente il numero dei suoi appassionati e, di conseguenza, la demoscene ha subito un crollo tra i fenomeni di cultura informatica. A oggi, tuttavia, l'arte delle demoscene continua ancora a essere seguita. I demo-party, le convention e le competizioni si tengono ancora, ma sempre più spesso come fenomeno di retrocomputing limitato all'ambito delle macchine di modernariato informatico, ai computer "d'epoca" (come gli onnipresenti Amiga e Atari).

## Caratteristiche del fenomeno

La subcultura nata dall'espandersi del fenomeno demoscene aveva come scopo quello di farsi conoscere da tutti gli utenti di una determinata piattaforma informatica. Si basava essenzialmente sulla vanità e sul desiderio di farsi notare da parte di programmatori, "smanettoni" o semplici appassionati, che volevano dimostrare a tutti i costi la loro abilità nel riuscire, in poche righe di codice macchina, a realizzare animazioni, performance sonore, minuscoli ma spettacolari giochi e video musicali. Tutto questo doveva essere realizzato sfruttando al massimo i computer restando nella loro configurazione di base, quindi senza aggiornare i componenti e senza applicare modding, poiché chi realizzava una demo doveva dimostrare le sue capacità partendo da un hardware minimale.
I programmatori, la cui massa era composta principalmente di adolescenti o giovani al massimo trentenni, cercavano di sfruttare al massimo le capacità dei chip grafici e sonori integrati nelle schede madri, così come erano strutturate nei computer degli anni ottanta.
Il demo coder non lavora con software di disegno o modellazione, ma solo di tastiera con sott'occhio solo il listato del programma assembly mentre digita. Necessita solitamente di buona conoscenza delle locazioni di memoria della macchina su cui sta lavorando e di ogni registro della CPU.

## Le competizioni

Dal momento che ogni piattaforma informatica prima dell'era dei personal computer, cioè ogni computer di una determinata marca o modello, aveva caratteristiche ben definite, una comparazione tra i demo su queste macchine era direttamente possibile. Questo creò un ambiente di competizione dove i gruppi della demoscene cercavano di superare gli altri, cercando di ottenere gli effetti più spettacolari. I demo writer cercavano poi essi stessi di superare le proprie limitazioni e le limitazioni imposte dall'hardware con tentativi estremi di massimizzare le prestazioni dalla propria macchina di riferimento.
Mentre i programmatori di giochi o di applicazioni erano più interessati alla stabilità e alla funzionalità del proprio software, il coder era invece interessato a quanti cicli della CPU avrebbe impegnato una determinata routine e a quale fosse il modo migliore per comprimere quanti più effetti video sullo schermo. Questo fenomeno riuscì ad andare così in fondo da utilizzare le falle conosciute nell'hardware delle macchine per produrre nuovi effetti video, nuove capacità che avrebbero sorpreso anche gli stessi sviluppatori delle piattaforme. Questo fatto diede ai gruppi di demo coder la sensazione di superare confini e andare là dove nessuno era mai stato prima.
Recentemente, il fatto che l'hardware dei computer comprende ora processori più veloci e più memoria, processori grafici più veloci e accelerazione hardware 3D, ha rimosso dalla scena demo gran parte delle limitazioni che assillavano i coder, su cui si basavano però gran parte delle sfide del passato. Al giorno d'oggi la realizzazione di demo si è focalizzata nel realizzare demo più belle, con maggiore stile e con un lavoro artistico dal design curato, un fatto che molti coder della vecchia scuola (chiamati in inglese "old school demosceners") sembrano disapprovare. Questo è dovuto alla frattura creatasi dalla realtà PC, dove le piattaforme variano notevolmente l'una dall'altra e dove quello che prima era un lavoro di programmazione molto raffinato, fatto tramite routine a basso livello scritte interamente dallo sviluppatore, viene ora compiuto tramite funzioni standard ad alto livello facenti parte del sistema operativo ed eseguite dalle schede grafiche. Ciò ha sicuramente apportato più libertà artistica agli sviluppatori di demo, ma ha praticamente frustrato molti esponenti della vecchia scuola che lamentano la mancanza di una vera sfida nell'ambito della programmazione pura.
La vecchia tradizione del minimalismo però sopravvive ancora. In certi demo party si hanno competizioni basate su vari tipi di handicap o limitazioni nella grandezza dei programmi o riguardo alla piattaforma usata. Ogni categoria viene chiamata in gergo una compo. Ad esempio su di un computer moderno la grandezza dell'eseguibile può dover essere limitata tra i 4 e i 64 kB. Programmi di una grandezza limitata sono comunemente chiamati "intro". In altri "compo" o categorie la scelta della piattaforma è ristretta, possono cioè parteciparvi solo computer d'epoca come Commodore 64, Atari ST o altri. Una sezione a parte è dedicata ai dispositivi portatili (PDA, telefoni cellulari, ecc.). Tali restrizioni permettono ai coder, ai musicisti e agli artisti della grafica di portare alla ribalta nuovamente la sfida a tirare fuori dal dispositivo informatico molto più di quanto venisse inteso all'atto della sua progettazione, superando i limiti teorici dell'hardware.

## I tipi di demo

La demoscene esiste per un gran numero di piattaforme, ad esempio PC, C64, ZX Spectrum, Atari ST, Amiga e Game Boy Advance. La demoscene ha ispirato la realizzazione di molti programmi di benchmark per misurare le prestazioni di un computer, che possiedono al loro interno dei demo o una modalità dimostrativa delle capacità grafiche del computer. Questa è una diretta eredità dei giorni delle piattaforme a 16 bit.
Un esempio di demo "ufficiale", creata dagli stessi progettisti per dare un'idea delle prestazioni della macchina (abitudine che si è poi estesa ai programmi di benchmark e ai demo ufficiali distribuiti con le schede video all'atto dell'acquisto), è il bouncing ball demo o Boing ball demo creato per la piattaforma Amiga al momento del suo lancio al pubblico. Questa semplice demo presenta una palla a scacchi bianchi e rossi che rimbalza sullo schermo, in un ambiente 3D. Ogni volta che urta uno dei lati virtuali del box dove è rinchiusa, si può chiaramente udire un rumore di "boing" stereofonico, proveniente dal lato dello schermo che è stato urtato. Il demo sembra tridimensionale, ed ebbe grande successo nel 1985, perché combinava un effetto pseudo-3D (realizzato in realtà con sprite) a colori, e una reazione dell'oggetto con il suo ambiente virtuale che produceva suoni stereo. All'epoca in cui la maggior parte dei computer era in bianco e nero (Macintosh) o necessitava di costose schede grafiche EGA solo per presentare 16 colori a schermo in bassa risoluzione, non era difficile stupire il pubblico. I primi veri demo tridimensionali per Amiga, prodotti da reali programmi di modellazione 3D, The Juggler (il giocoliere), creato con ssg il precursore di Sculpt3D dal programmatore Eric Graham, e Khamankha (soprammobile con giochino del moto infinito) arrivarono un anno dopo il Boingball Demo, nel 1986.
Vi sono un determinato numero di categorie nelle quali le demo vengono classificate in modo informale. La parola "intro" si riferisce genericamente a una demo la cui azione viene ripetuta in un anello senza fine ed è basata su di un singolo schermo grafico, anche se questa definizione si è estesa a includere qualsiasi demo scritta con una grandezza di ram limitata senza specificare lo stile di presentazione usato. Una "megademo" invece consiste di varie parti indipendenti poste in sequenza, di solito con una colonna sonora separata per ognuna e che spesso richiedono l'intervento dell'utente per saltare da una sequenza all'altra. Varianti meno comuni di questi termini includono la "kilodemo", una demo in più parti considerata troppo piccola per essere un megademo, e la "dentro" (un ibrido fra un intro e un demo completo). A partire dai primi anni novanta il tipo di demo più comune che si è fatto strada nella realtà demoscene è il "trackmo", nel quale gli effetti visivi seguono una precisa cronologia, sincronizzata a una colonna sonora continua, come se fossero un videoclip. Per essere chiamato trackmo, la demo deve essere caricata da un floppy disk e usare un trackloader autoprodotto per leggere i dati registrati sul dischetto. Le operazioni di caricamento inoltre non devono essere notate dallo spettatore e non inficiare la spettacolarità della demo. I primi trackmo realizzati al mondo sono stati "Enigma" (1991) del gruppo Phenomena e "Mental Hangover" (1992) degli Scoopex, entrambi creati per la piattaforma Amiga. Infine, il "mobile demo" è un demo creato per le piattaforme portatili, come i PDA, le calcolatrici con capacità grafiche, i palmari, le console portatili per videogiochi e per i telefonini cellulari.

## La terminologia

Qui di seguito vengono presentati alcuni esempi della terminologia usata per descrivere gli effetti grafici a schermo usati nelle demo.
* Colour cycling: Il ciclo di colori usato con sfondi e trame che girano vorticosamente danno l'impressione di movimento. Il colour cycling è particolarmente usato nelle animazioni di immagini frattali, per dare l'idea di onde d'acqua che si frangono sulla "spiaggia" creata dalle curve del frattale stesso.
* Scrolltext: Una stringa di testo che scorre sullo schermo. La forma più comune di scrolltext è quella col testo che scivola orizzontalmente da destra verso sinistra, come i titoli informativi dei telegiornali, ma le possibilità sono innumerevoli. Alcuni effetti di scorrimento vengono abbinati a effetti speciali come esplosioni del testo in particelle, e la sua ricomposizione, o presentare effetti di distorsione del testo stesso.
* Dister: Qualcosa che si torce in modo piacevole e di sicuro effetto. Per esempio una immagine bitmap fatta ondeggiare come una bandiera.
* Rasters: (da non confondere col singolare raster) Queste sono linee di colori diversi che si possono muovere con vari gradevoli effetti lungo lo schermo TV. Queste sono anche note come barre del Copper o 'Copper bars' o 'Rainbows' in ambito Amiga, dal nome del circuito Copper presente nel chip grafico Agnus. I Rasters sono utili perché non impegnano molti cicli del processore per apparire a schermo.
* Borders: Lo spazio nero intorno all'area della demo visualizzata, in pratica i bordi dello schermo. Vengono usati per diminuire la dimensione dell'area visibile del demo e diminuire la necessità di impegnare in calcoli il processore. In alcuni computer come il C64, vi sono dei bordi a video standard e quindi sempre visibili. Possono aprirsi con un effetto a tendina (effetto "open"), e ampliare d'improvviso l'area visibile del demo. Molto più spesso vengono utilizzati dei bordi neri superiori e inferiori per simulare uno schermo 16:9 su un normale schermo 4:3.
* Fullscreen: Questo è un tipo di schermo per le demo che è completamente "aperto" di default, premettendo il pieno uso di tutta l'area dello schermo. Il computer Amiga permette anche l'effetto "overscan" in cui i bordi reali raggiungono l'effettiva dimensione massima di uno schermo TV secondo le specifiche di formato professionali degli standard NTSC o PAL. I limiti dello schermo ricadono, dunque, oltre i bordi dei normali tubi catodici usati negli schermi televisivi e nei monitor TV e quindi non presentano bordi fissi standard come quelli del C64.
* Plasma: Iridescenti barre di luce colorate traslucide che si curvano sullo schermo e passano l'una nell'altra. vi sono alcuni schermi che vengono chiamati comunemente "plasma" ma in effetti sono creati con effetti simili alle keftales.
* Keftales: ibridi di "effetti moiré" e plasma, spesso accompagnati da zoom e color cycling.
* Dentro: Un incrocio fra una demo completa o una megademo e una intro. Sono caratterizzati da molte sequenze schermi, e di solito queste vengono presentate con o senza l'intervento diretto dello spettatore.
* Main menu: Uno schermo della demo che permette di selezionare le varie sequenze della megademo. I menu possono variare in forme e stile di presentazione, fino a presentare un completo videogioco in forma ridotta, in cui l'utente muove un personaggio sullo schermo per fargli scegliere la sequenza desiderata.
* Hidden screen: Un'intera sequenza della demo che non può essere vista direttamente, seguendo la normale proiezione della demo. Spesso bisogna premere un certo tasto, o una combinazione di tasti per accedervi. Uno schermo nascosto o segreto di solito presenta i veri nomi dei programmatori, o schermate "bonus" come accade per le "stanze segrete" dei videogiochi.
* Reset-Demo: Una particolare sequenza di demo a cui si ha accesso premendo il bottone di reset sul retro dell'Atari ST.
* Starfield: O campo stellato, assai noto perché usato fra i salvaschermo sia di Windows che di X Windows System. Presenta una serie di pixel che si accendono sullo schermo e crescono di dimensioni a dare l'illusione di un viaggio nello spazio.
* 3D dots: Punti tridimensionali. usando una tecnica simile al campo stellato 3D è possibile creare interi paesaggi fatti di punti. Questa tecnica riduce di molto il tempo per disegnare a schermo tutta la scena. Una variante evoluta sono i voxel detti anche pixel volumetrici, perché rappresentati da coordinate tridimensionali e non solo bidimensionali come i pixel.
* 3D sprites: Come i 3D dots, solo che al posto dei punti, si ha a disposizione un intero sprite scalabile in dimensioni, come una palla.
* 3D polygons: 3D usato in maniera regolare, come ad esempio nei primissimi simulatori di volo cui principale capostipite è Flight Simulator ma senza il texture mapping come in Quake. Ovviamente dati gli hardware dell'epoca, i 3D polygons presenti a schermo erano veramente pochi alla volta.
* Glenz vectors: Oggetti 3D trasparenti.
* Texture mapping: Pochissime demo lo utilizzavano perché, sui computer dell'epoca, Atari e Amiga, erano assai lenti. Ad oggi con le GPU potenti di cui disponiamo, il texture mapping è divenuto quasi un obbligo.
* Infinite sprites: O sprite infiniti, è un trucco che dava l'impressione che il computer disegnasse migliaia di sprite contemporaneamente sullo schermo, mentre ne stava disegnando in effetti uno solo.
* Sync-Scrolling: Il Sync Scrolling è stata una tecnica scoperta dal coder Nick dei The Carebears, uno dei gruppi operanti negli anni novanta in ambito Atari, ed usata per la prima volta nel demo chiamato The Cuddly Demo e viene usata per ottenere uno scroll più dolce e più veloce. In pratica lo schermo visibile è sincronizzato a quella parte dello schermo già calcolata che deve ancora scorrere per apparire anch'essa visibile.
* FlyBy: Con flyby si intendono solitamente quelle demo, o parti di esse, dove l'unico effetto è quello di volare in mezzo a un mondo tridimensionale.