{"id":107,"date":"2022-05-22T11:16:18","date_gmt":"2022-05-22T09:16:18","guid":{"rendered":"https:\/\/www.spaghettihacker.it\/?p=107"},"modified":"2022-05-22T11:19:12","modified_gmt":"2022-05-22T09:19:12","slug":"parallasse-chi-era-costui","status":"publish","type":"post","link":"https:\/\/www.spaghettihacker.it\/?p=107","title":{"rendered":"Parallasse, chi era costui?"},"content":{"rendered":"<p><a href=\"https:\/\/www.spaghettihacker.it\/?page_id=26\"><strong>Torna all&#8217;indice<\/strong><\/a><\/p>\n\n\n<div class=\"wp-block-image\"><figure class=\"alignleft size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"300\" height=\"430\" src=\"https:\/\/www.spaghettihacker.it\/wp-content\/uploads\/2022\/05\/spcover600-3-e1653196776480.jpg\" alt=\"\" class=\"wp-image-9\"\/><\/figure><\/div>\n\n\n\n<p>di Andrea Pompili<\/p>\n\n\n\n<p><em>Catalypse e Parallasse, chi era costui? sono la storia di uno dei pi\u00f9 famosi giochi per il Commodore64, pensato e realizzato da un (all\u2019epoca) giovanissimo programmatore e musicista italiano, Andrea Pompili, che nel corso degli anni &#8211; suo malgrado &#8211; sarebbe diventato un protagonista di una delle pi\u00f9 clamorose vicende legate alla sicurezza informatica in Italia. La sua storia \u00e8 raccontata nel libro Le Tigri di Telecom pubblicato da Stampa Alternativa.<\/em><\/p>\n\n\n\n<p>Nel mondo della grafica bidimensionale non esiste quel concetto di profondit\u00e0 di campo tipico dei giochi 3D. La dinamica di gioco viene vista dall\u2019alto o dal lato, con una visuale panoramica del proprio giocatore e uno sfondo che scorre opposto alla direzione di movimento per dare la sensazione di spostamento.<\/p>\n\n\n\n<p>I nemici e lo sfondo sono quindi un elemento solidale che si muove sullo stesso piano del giocatore, lasciando ad un anonimo colore nero o azzurro il compito di rappresentare il resto dello scenario. Alcuni giochi avevano anche uno scenario sottostante, anch\u2019esso per\u00f2 solidale con lo sfondo principale e quindi con un fastidioso effetto legato all\u2019assenza di una profondit\u00e0 di campo che a volte confondeva il giocatore sulle manovre corrette da effettuare.<\/p>\n\n\n\n<p>I giochi di rango introducevano quindi il concetto del \u201cparallasse\u201d, niente a che vedere con l\u2019astronomia, ma che risulta essere una delle tecniche fondamentali dei vecchi videogiochi bidimensionali. Uno sfondo dotato di parallasse o parallattico, presenta diversi livelli di sfondo che si muovono a velocit\u00e0 differenti per dare l\u2019effetto di una profondit\u00e0 di campo. Si immagini uno scenario parallattico in cui sul primo livello troviamo il terreno dove si muove il giocatore e quindi gli alberi e le case con cui pu\u00f2 interagire, poi un secondo livello, che si muove pi\u00f9 lentamente sempre nella stessa direzione del precedente e che riporta una foresta e qualche casolare in secondo piano, quindi un terzo livello, ancora pi\u00f9 lento dei precedenti due, che rappresenta un tramonto lontano con nuvole e montagne di sottofondo. Mentre il giocatore si muove lungo la mappa di gioco noter\u00f2 un bellissimo effetto pseudo-tridimensionale dovuto a particolari di sottofondo che si muovono pi\u00f9 lentamente esattamente come avviene nella realt\u00e0.<\/p>\n\n\n\n<p>Le vecchie console bidimensionali e i computer degli anni \u201990 come Amiga e Atari ST potevano garantire questo effetto attraverso le capacit\u00e0 hardware del proprio processore grafico. Molti si ricorderanno l\u2019effetto flipper di Sonic the Hedgehog (realizzato nel 1991 su Sega Megadrive, due livelli di parallasse a sedici colori) o l\u2019atmosfera di Shadow of the Beast (realizzato nel 1989 su Amiga, il livello principale aveva ben 12 livelli di parallasse, anche se alla fine si trattava di un trucco che sfruttava al massimo i due livelli hardware forniti dall\u2019Amiga stesso). Il C64 ovviamente non aveva nulla di questo, era gi\u00e0 tanto che riusciva a spostare lo schermo principale di qualche pixel nelle quattro direzioni cardinali.<\/p>\n\n\n\n<p>La prima generazione di parallasse si basava sulla possibilit\u00e0 di \u201cscorrere\u201d il contenuto di uno o pi\u00f9 caratteri di sfondo in direzione opposta alla direzione dello schermo in modo da generare l\u2019effetto di un secondo strato fisso rispetto allo scenario principale. Il trucco era possibile in quanto il C64 non gestiva la grafica a video in modalit\u00e0 \u201cbitmap\u201d, come avviene per i moderni calcolatori, ma mediante un\u2019interfaccia a caratteri basata su tabelle ASCII. Attualmente, infatti, se vuoi disegnare qualcosa sullo schermo, devi sempre indirizzare direttamente il pixel che vuoi accendere impostando una locazione di memoria specifica.<\/p>\n\n\n\n<p>Anche se era possibile farlo per il C64, questa modalit\u00e0 di tracciamento era improponibile a causa della lentezza del processore e il dispendio di memoria grafica che ne sarebbe derivato. Era meglio quindi fare grafica usando la pi\u00f9 banale interfaccia a caratteri, che si basava sulla possibilit\u00e0 di tracciare a video 80 colonne e 24 righe di caratteri indirizzando un set predefinito sempre allocato in memoria. Bastava quindi sostituire i caratteri ASCII standard, corrispondenti alle lettere alfabetiche, con porzioni grafiche di scenario, e poi ricostruire lo sfondo di gioco accostando sapientemente questi caratteri fittizi per ottenere un effetto adeguato ad un videogioco. I caratteri avevano dimensione fissa di 8&#215;8 pixel ed erano ovviamente limitati al numero totale previsto dalla tabella ASCII, ma con un po\u2019 di inventiva e di fantasia si potevano lo stesso creare sfondi di rango che non avevano nulla da invidiare alla controparti presenti in sala giochi.<\/p>\n\n\n\n<p>Grazie a questa modalit\u00e0 grafica, era possibile modificare il contenuto di uno o pi\u00f9 caratteri ASCII prima della visualizzazione dello schermo per ottenere l\u2019animazione dei proiettili o di alcune parti dello sfondo, ad esempio punte che fuoriescono o il fuoco che brucia. Bastava quindi riservare uno o due caratteri di sfondo con un motivo grafico anonimo, ad esempio qualche stella, un mattone o un motivo geometrico generico, e ad ogni ciclo video spostare l\u2019intero contenuto di uno o due pixel nella direzione opposta allo scorrimento dello schermo principale perch\u00e9 si avesse l\u2019effetto di un doppio livello di parallasse: uno mobile e uno fisso.<\/p>\n\n\n\n<p>Con le stelle si poteva fare di pi\u00f9: posizionando opportunamente i caratteri era possibile ottenere anche tre livelli di scorrimento (Armalyte, Salamander, IO e anche lo stesso Catalypse), anche se alla fine si trattava pi\u00f9 di un effetto visivo che un vero e proprio parallasse.<\/p>\n\n\n\n<p>La palma di miglior parallasse su C64 fu comunque di Hawkeye, pubblicato nel 1988 dalla Thalamus. Il gioco, graficamente e musicalmente accattivante, vantava un parallasse composto da due livelli in cui lo sfondo sottostante non era il classico carattere a scorrimento, ma un vero e proprio scenario con caverne, montagne, tramonti e altre amenit\u00e0 grafiche. Mentre il primo livello schizzava nelle due direzioni orizzontali, il secondo rimaneva fisso generando uno strano effetto di immersione tridimensionale, unico del suo genere.<\/p>\n\n\n\n<p>In realt\u00e0 il trucco era sempre lo stesso, solo che invece dei classici due caratteri a scorrimento se ne utilizzavano molti di pi\u00f9. Anzi, per evitare di perdere preziosi cicli macchina spostando discrete quantit\u00e0 di byte, i programmatori avevano deciso di generare ben quattro diversi set di caratteri, ciascuno con i caratteri dedicati allo sfondo spostati di un paio di pixel verso destra. All\u2019inizio di ogni ciclo video, mentre veniva spostato di un paio di pixel lo schermo principale, veniva opportunamente impostato uno dei quattro set di caratteri in modo che lo sfondo sembrasse effettivamente fermo (in realt\u00e0 i caratteri che componevano il secondo livello erano i precedenti spostati di un paio di pixel in direzione opposta allo scorrimento).<\/p>\n\n\n\n<p>Il problema si manifestava dopo quattro spostamenti verso la stessa direzione: tutto il primo livello doveva infatti essere spostato di un carattere verso la direzione di scorrimento, ma il secondo doveva rimanere nella stessa posizione ricominciando con il set di caratteri iniziale. Pensare di spostare i caratteri uno per uno sarebbe stato un suicidio di cicli macchina, quindi i programmatori scelsero di spostare tutto e quindi ridisegnare il secondo livello all\u2019interno degli spazi trasparenti del primo livello. Lo sforzo, anche se inferiore, era comunque impossibile per un\u2019area di gioco grande quanto lo schermo video, ecco perch\u00e9 l\u2019azione di Hawkeye si svolgeva in un\u2019area pi\u00f9 stretta (16 righe contro le 24 dello schermo intero).<\/p>\n\n\n\n<p>Successivamente ad Hawkeye fu il turno di Flimbo\u2019s Quest, Rubicon e Turrican 2, basati su tecniche simili, in grado di mostrare persino un secondo livello in movimento. Il trucco era sempre lo stesso, anche se raffinato in termini di istruzioni utilizzate e tempi di scorrimento dei caratteri che consentivano anche aree di gioco superiori. Onore comunque a Mario Van Zeist dei Boys without Brains per aver per primo mostrato l\u2019efficacia di questa tecnica a tutti i sessantaquattristi del mondo.<\/p>\n\n\n\n<p>La nuova generazione: Amiga e il parallasse<\/p>\n\n\n\n<p>Chi ha giocherellato un po\u2019 con le specifiche del processore grafico Amiga sapr\u00e0 che \u00e8 possibile generare due livelli indipendenti di sfondo che possono essere disegnati e spostati separatamente per ottenere, ad esempio, l\u2019effetto del parallasse. Tutti sapevano che il vecchio Amiga aveva una sera limitazione hardware che imponeva l\u2019assegnazione di otto colori per livello, che per quello in primo piano si riducevano a sette perch\u00e9 l\u2019ultimo era, appunto, il colore trasparente.<\/p>\n\n\n\n<p>Il terzo livello della versione Amiga di Turrican, era un bellissimo shoot-em-up verticale che, incredibilmente, aveva uno sfondo fatto da due livelli di parallasse con 16 colori ciascuno. Era impossibile.<\/p>\n\n\n\n<p>Mentre stava programmando i tre livelli di parallasse di Deux, Andrea decise di dare una sbirciatina per capire come riusciva Holger Schmidt a duplicare i colori su schermo. Interruppe il gioco mediante una delle tante cartucce in grado di effettuare il \u201cfreeze\u201d del programma in esecuzione e visualizz\u00f2 la memoria video che in quel momento rappresentava lo schermo di gioco. C\u2019era tutto: i nemici, i proiettili, i grovigli tecnologici che componevano lo scenario, ma lo sfondo era completamente nero: non c\u2019era alcun secondo sfondo parallattico. Dove era finito?<\/p>\n\n\n\n<p>Il trucco ricalcava molto quello descritto precedentemente, solo che adesso gli interrupt venivano impostati anche su posizionamento orizzontale. Si riservavano due sprite a sedici colori per lo sfondo, che affiancati garantivano un\u2019altezza pari all\u2019intero schermo e una larghezza di 32 pixel (come da specifiche Hardware Amiga). Il lavoro duro lo faceva quindi il Copper, il coprocessore Amiga in grado di vedere e modificare le aree di memoria riservate alle impostazioni audio e video degli altri processori. Tale coprocessore aveva un funzionamento indipendente dal processore principale e aveva un suo slot temporale di attivazione, chiamato DMA, in cui poteva eseguire le operazioni di impostazione della posizione orizzontale degli sprite o del contenuto degli stessi.<\/p>\n\n\n\n<p>Durante il disegno di ogni riga video, il Copper attendeva la posizione orizzontale in cui terminavano i primi due sprite e quindi li spostava in modo da forzarne di nuovo il disegno, questo fino al termine della riga video per ricominciare alla riga successiva. Un lavoro immane semplificato dalla semplicit\u00e0 di programmazione del Copper e dalla possibilit\u00e0 di scrivere facilmente codice auto-modificante.<\/p>\n\n\n\n<p>Come faceva il Copper a non perdere il sincronismo con il tracciamento video? Bastava infatti un micro-secondo di esitazione per ottenere un effetto disastroso. La genialit\u00e0 dei Factor 5 stava proprio nella scelta del numero di colori visualizzati sullo schermo principale. Tutti si erano sempre chiesti perch\u00e9 Turrican non avesse 32 colori su schermo, una scelta orami consueta da parte di tutti i migliori giochi su Amiga in quanto consentiva un maggior impatto cromatico e una migliore differenziazione tra colori dei nemici e colori dello sfondo.<\/p>\n\n\n\n<p>Turrican usava 16 colori perch\u00e9 in quella modalit\u00e0 il numero di DMA assegnati al Copper era sufficiente per non perdere i colpi durante il riposizionamento orizzontale degli sprite. Una scelta necessaria una volta studiato a fondo il modello dei timeslot temporali descritto nel manuale hardware Amiga. Con 32 colori il processore grafico avrebbe dovuto utilizzare un DMA in pi\u00f9, levandolo quindi al Copper e quindi introducendo quel fattore di esitazione in pi\u00f9 che non garantiva un\u2019adeguata risposta al termine del tracciamento orizzontale di ciascuna riga di sprite.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Torna all&#8217;indice di Andrea Pompili Catalypse e Parallasse, chi era costui? sono la storia di uno dei pi\u00f9 famosi giochi per il Commodore64, pensato e realizzato da un (all\u2019epoca) giovanissimo programmatore e musicista italiano, Andrea Pompili, che nel corso degli anni &#8211; suo malgrado &#8211; sarebbe diventato un protagonista di una delle pi\u00f9 clamorose vicende [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"","sticky":false,"template":"single-no-separators","format":"standard","meta":{"footnotes":""},"categories":[5],"tags":[12,11,10,14,13],"class_list":["post-107","post","type-post","status-publish","format-standard","hentry","category-dal-libro","tag-amiga","tag-catalypse","tag-commodore-64","tag-copper","tag-turrican"],"_links":{"self":[{"href":"https:\/\/www.spaghettihacker.it\/index.php?rest_route=\/wp\/v2\/posts\/107","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.spaghettihacker.it\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.spaghettihacker.it\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.spaghettihacker.it\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.spaghettihacker.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=107"}],"version-history":[{"count":2,"href":"https:\/\/www.spaghettihacker.it\/index.php?rest_route=\/wp\/v2\/posts\/107\/revisions"}],"predecessor-version":[{"id":109,"href":"https:\/\/www.spaghettihacker.it\/index.php?rest_route=\/wp\/v2\/posts\/107\/revisions\/109"}],"wp:attachment":[{"href":"https:\/\/www.spaghettihacker.it\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=107"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.spaghettihacker.it\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=107"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.spaghettihacker.it\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=107"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}