Intervista

Aonic, Sonic su Amiga: Chris White racconta come sta spingendo l’A1200 al limite

Labyrinth Zone, Special Stage, limiti del Blitter, Chip RAM, audio e persino una versione A500: REASSEMBLER ci racconta le sfide dietro Aonic.

Condividi
Facebook X WhatsApp Telegram
🇬🇧 Read in English
Lascia il primo ricordo

Abbiamo intervistato Chris White, in arte REASSEMBLER, autore di Aonic, il porting Amiga di Sonic the Hedgehog. Chris ci ha parlato dei limiti dell’Amiga 1200 di serie, delle sfide ancora da affrontare e di cosa servirebbe affinché possa considerare Aonic completo.

Ora che le persone possono realmente provare Aonic, invece di limitarsi a guardare i video dello sviluppo, la demo pubblica ti ha fatto scoprire qualcosa di inaspettato sull’engine o sul suo comportamento sull’hardware Amiga reale?

Diverse persone l’hanno provata e mi hanno inviato i loro riscontri, ma per fortuna non ci sono state brutte sorprese, solo un sacco di belle foto e video della demo in esecuzione. WinUAE è davvero un emulatore fantastico per lo sviluppo e io possiedo un A1200, che è la piattaforma di riferimento. Restano le solite precauzioni per quanto riguarda driver di rete e altri driver che potrebbero essere caricati in memoria. È sempre meglio avviare il sistema da un boot pulito.

Schermata iniziale di Green Hill Zone Act 1 in Aonic, il porting di Sonic the Hedgehog per Amiga 1200.
L'inizio di Green Hill Zone Act 1 nella demo pubblica di Aonic per Amiga 1200.

Guardando oltre Green Hill Zone, quale parte dell’originale Sonic the Hedgehog pensi sarà la più difficile da riprodurre su un Amiga 1200 di serie? Ci sono zone successive, boss o situazioni che potrebbero mettere l’engine molto più sotto pressione?

Labyrinth Zone sarà difficile. Ha un effetto a metà schermo che modifica i colori della palette nelle sezioni sott’acqua. Concettualmente è sicuramente possibile su Amiga, la domanda è quanto sarà semplice o fattibile una volta integrato con il resto dell’engine. L’ho già detto in passato, ma una delle difficoltà nel realizzare un engine completo consiste nell’assicurarsi che tutti i suoi componenti funzionino bene insieme, non soltanto quando vengono presi singolarmente. Sto spremendo pesantemente il bus dell’A1200, quindi non resta molto margine di manovra.

Anche lo “Special Stage” rotante sarà interessante da sviluppare. È praticamente un codebase separato persino all’interno del codice Mega Drive. Portarlo su Amiga potrebbe quasi equivalere a scrivere un engine completamente indipendente, insieme a una serie di trucchi di rendering per renderlo giocabile.

A parte questo, ciò che risulta difficile su Amiga è semplicemente qualsiasi schermata che richieda una quantità considerevole di aggiornamenti grafici per frame. Il mio engine di rendering è concettualmente in grado di gestirli, ma spesso bisogna trovare ottimizzazioni specifiche per determinate situazioni. Per esempio, le enormi piattaforme verticali mobili di Green Hill Zone 2 utilizzano attualmente routine personalizzate, create appositamente per riuscire ad animarle in maniera sufficientemente efficiente, semplicemente a causa delle loro dimensioni.

Ma sono proprio queste sfide a rendere interessante il progetto. Se stessi facendo il porting di Pong, non importerebbe a nessuno!

A questo punto, quale consideri il vero limite hardware di un A1200 di serie? C’è qualcosa nell’originale Mega Drive che ritieni già impossibile riprodurre fedelmente senza cambiare approccio o accettare dei compromessi?

Sì, si può già vedere che esistono dei compromessi e che in alcune aree della demo stiamo raggiungendo il limite. Il semplice rendering simultaneo di un gran numero di anelli richiede troppi dati perché il Blitter riesca a spostarli tutti in un singolo frame. Per arrivare anche solo a questo livello di prestazioni ho implementato sprite caching, tecniche di deferred rendering per suddividere le operazioni di disegno tra più frame e ho profilato ampiamente il codebase per far lavorare, dove possibile, Blitter e CPU in parallelo. Ma in molti casi continua a essere una lotta sull’A1200 base.

La soluzione semplice sarebbe eliminare un bitplane e ridurre la profondità colore a 16 colori, ma visivamente il gioco ne risulterebbe compromesso. Per questo motivo mantengo registrazioni deterministiche delle demo dei livelli, così posso profilare il codice e verificare se le ottimizzazioni che ho apportato abbiano realmente prodotto una differenza significativa.

Se un team avesse tentato questo porting nel 1992 o nel 1993, quanto di quello che stai facendo oggi sarebbe stato realisticamente possibile con gli strumenti di sviluppo, la documentazione e le conoscenze disponibili all’epoca?

Per un team professionale dotato di strumenti e hardware allo stato dell’arte, sì, sarebbe stato possibile. Per un programmatore amatoriale da cameretta, probabilmente no.

Sega, per esempio, disponeva del proprio hardware e software Digitizer personalizzato, oltre a PC di sviluppo di fascia alta. Alla fine dei conti hai una lista di istruzioni 68K che vengono assemblate per la CPU praticamente nello stesso modo in cui avveniva nel 1991. Per arrivare al risultato hai bisogno o di un team di persone ben equipaggiate che ci lavorino a tempo pieno, come negli anni ’90, oppure degli strumenti di sviluppo moderni, come oggi.

Lavorando così da vicino con il codice originale di Sonic, cosa ti ha sorpreso o impressionato maggiormente del modo in cui Sonic Team ha realizzato la versione Mega Drive? Studiare il gioco ha cambiato in qualche modo la tua percezione dell’originale?

Quello che mi impressiona di Sonic è il fatto che non sia soltanto un lavoro di programmazione tecnicamente eccellente, ma anche incredibilmente divertente dal punto di vista del design.

Molti sviluppatori erano in grado di ottenere soltanto una cosa o l’altra: qualcosa di tecnicamente impressionante (Shadow of the Beast), oppure qualcosa che funzionava benissimo ed era fresco, ma che rappresentava un’evoluzione tecnica relativamente modesta rispetto a ciò che era venuto prima (Speedball 2). Riuscire a ottenere entrambe le cose in un colpo solo è estremamente raro.

Ci sono moltissime sfumature intelligenti nel level design che continuo a notare ancora oggi! Ed è davvero notevole anche la flessibilità progettuale che Sonic Team è riuscito a spremere dentro una cartuccia da 512K.

Quando prestazioni e fedeltà entrano in conflitto, qual è la tua gerarchia dei compromessi? Tra frame rate, grafica, fisica, comportamento dei livelli, audio e altri elementi, cosa sei meno disposto a sacrificare?

Prima di tutto, il gameplay, quindi controlli, “fisica” e struttura dei livelli, deve essere identico a quello del gioco originale. Internet è piena di terribili cloni di Sonic.

In secondo luogo, volevo che il gioco girasse a 50 fps in PAL. Penso che un Sonic a 25 fps sarebbe un po’... meh.

Terzo, mantenere l’aspetto visivo il più vicino possibile all’originale. Non posso ancora parlare dell’audio perché non ho iniziato a implementarlo, ma voglio assicurarmi che musica ed effetti sonori possano essere riprodotti contemporaneamente.

Non mi piace molto accettare compromessi, a meno che non siano assolutamente necessari. Se decidi di affrontare un classico, devi farlo nel modo giusto e trattarlo con rispetto.

Hai parlato della possibilità di esplorare un engine compatibile con A500. È ancora un obiettivo tecnico concreto? Richiederebbe sostanzialmente un approccio al rendering differente, invece di limitarsi a ridimensionare l’attuale engine dell’A1200?

Sì, è ancora un obiettivo. Ben poco dell’engine attuale utilizza funzionalità specifiche AGA. Le due eccezioni sono la modalità di fetch a 32 bit per i bitplane, che offre un incremento delle prestazioni, e gli sprite AGA a 16 colori, utilizzati per gli sfondi dei livelli.

Sull’A500 dovrei sicuramente ridurre il gioco da 32 colori, 5 bitplane, a 16 colori, 4 bitplane. Semplicemente non c’è abbastanza margine per spostare tutti quei dati all’interno di un frame. Anche gli sfondi dovrebbero essere notevolmente semplificati. Ma il feeling del gioco dovrebbe rimanere completamente identico.

Sono però scettico sulla possibilità che possa funzionare con 1 MB di Chip RAM, a meno di ridurre drasticamente i frame di animazione e semplificare la grafica. Solo la memoria utilizzata per visualizzare lo schermo occupa circa 200K sull’A1200, a causa del double buffering e dello scrolling, e inoltre ci sono numerose cache utilizzate durante l’esecuzione.

La versione A500 è in realtà, sotto molti aspetti, più un progetto di tech art, proprio per la quantità di rielaborazione grafica necessaria. Ma vorrei almeno fornire le fondamenta, nel caso un artista volesse raccogliere la sfida.

Sonic attraversa un ponte di tronchi sopra una cascata in Green Hill Zone in Aonic su Amiga 1200.
Una delle sezioni di Green Hill Zone riprodotte da Aonic su Amiga 1200.

L’audio è un’altra parte fondamentale dell’identità di Sonic e la demo attuale, comprensibilmente, si concentra su altri aspetti del progetto. Quanto sarà difficile riprodurre musica ed effetti sonori del gioco originale su Amiga mentre il resto dell’engine è in esecuzione? Hai già deciso quale approccio tecnico vorresti utilizzare?

Per certi versi sarà semplice, per altri molto difficile. Ho già scritto degli strumenti in grado di convertire il codice assembly che contiene i dati musicali in un file MOD per Amiga.

La parte difficile riguarda le dimensioni dei sample. La musica di Sonic occupa pochissimo spazio sul Mega Drive perché, a parte tre campioni di batteria, è completamente sintetizzata. Una volta tradotta in campioni a 8 bit, le dimensioni aumentano enormemente.

La sfida consiste quindi nel fare in modo che suoni benissimo senza utilizzare troppa di quella preziosa Chip RAM.

Per OutRun mi ero davvero sbizzarrito con enormi campioni di alta qualità, perché il progetto era destinato ad Amiga espansi, avevo tantissima Chip RAM libera e volevo anche che i file MOD suonassero abbastanza bene da poter essere pubblicati su vinile.

Con Sonic non avrò questo lusso e l’ottimizzazione sarà fondamentale.

Cosa dovrebbe accadere perché tu possa considerare personalmente Aonic concluso? L’obiettivo finale è un porting completo di Sonic the Hedgehog, un esperimento tecnico spinto il più lontano possibile, un engine utilizzabile anche per altri progetti o qualcos’altro?

La domanda alla quale sto cercando di rispondere è: “È possibile far girare Sonic su Amiga?”

Ma una demo di un solo livello, secondo me, non lo dimostra. È facile realizzare una tech demo o un frammento di un gioco prendendo scorciatoie che poi non funzionano quando il progetto cresce.

Quindi sarà finito quando esisterà un porting completo di Sonic the Hedgehog.

Dopodiché pubblicherò il codice sorgente e gli strumenti, così gli altri potranno modificare i livelli e divertirsi a sperimentare quanto vogliono. Mi piacerebbe includere anche qualche funzionalità aggiuntiva, come lo Spin Dash di Sonic.

C’è qualcosa riguardo Aonic, al suo sviluppo o alla tua esperienza con il progetto che vorresti raccontare ai lettori di Retro-Gamers.it e che non ti abbiamo chiesto?

Oggi è abbastanza semplice avviare un emulatore e giocare a Sonic praticamente su qualsiasi piattaforma moderna si desideri, quindi sarebbe anche legittimo chiedersi: “Che senso ha tutto questo?”

Per me ciò che rende interessante questo progetto è capire fin dove riuscirò ad arrivare, come supererò le difficoltà e quali compromessi sarò costretto ad accettare lungo il percorso.

Per questo ho pensato che sarebbe stato interessante documentare i progressi su YouTube e Patreon con cadenza mensile. Se questo progetto vi incuriosisce, vale la pena iscriversi a entrambi i canali.

Sonic attraversa Green Hill Zone in Aonic su Amiga 1200, tra nemici e scenari animati.
Aonic in azione su Amiga 1200 durante una sezione di Green Hill Zone.

C’è ancora molta strada da fare: la demo riproduce il primo livello ed è ancora totalmente priva di musica ed effetti sonori, ma l’obiettivo di Chris White è chiaro: Aonic sarà un porting completo di Sonic the Hedgehog su Amiga.

Seguiremo da vicino il suo sviluppo. Rimanete sintonizzati su queste pagine!

Ti è piaciuto l’articolo?

Supporta Retro-Gamers.it

Retro-Gamers.it è un progetto indipendente, costruito nel tempo libero e senza pubblicità invasiva. Se ti piace quello che leggi, puoi aiutarci a tenerlo vivo.

Dona
0 memorie

Memorie dei lettori

Commenti, ricordi e punti di vista restano qui, accanto all’articolo.

Regolamento commenti

Caricamento commenti...