Altered Beast AGA

Un porting su Amiga 1200 che si preannuncia straordinario!
Altered Beast logo

Direttamente dal forum EAB (English Amiga Board), ecco un annuncio che renderà felici gli estimatori della software house nipponica Sega, già in fibrillazione per il porting di Sonic annunciato qualche giorno fa.

Questa volta è il turno di un classico che veniva venduto in bundle col Sega Mega Drive per spingere le vendite della console: Altered Beast! L’obbiettivo dell’autore è quello di regalarci una conversione perfetta dell’arcade, ricordandoci che in principio era previsto per gli Amiga ECS e che solo in seguito è stato deciso di virare al chipset AGA che dovrebbe garantire tutte le risorse per riuscire nell’intento. Versione ECS che non verrà comunque lasciata nel dimenticatoio, ma che verrà ripresa non appena sarà pronta la versione AGA. Ma ora lasciamo spazio alle parole prese direttamente dal forum dell’italianissimo Black.Jack per quello che potrebbe essere un must-have per i nostri vecchi Amiga!

Altered Beast per Amiga 1200: il mio porting bare-metal “arcade perfect”

Oggi è una tappa importante per un progetto personale su cui sto lavorando da circa quattro mesi, e credo sia finalmente arrivato il momento di condividerlo con la community.

Sto realizzando un porting bare-metal, il più arcade-perfect possibile, di Altered Beast per Amiga 1200 (AGA), scritto interamente in Assembly (vasm) senza utilizzare alcuna libreria di sistema. Tutti ricordiamo il port originale del 1989. Pur generando nostalgia, non rende assolutamente giustizia alle reali potenzialità dell’Amiga. Il mio obiettivo è immedesimarmi in un ragazzino degli anni ’90 che comprava un A1200 e immaginava il “gioco in bundle” che avrebbe davvero meritato. Un po’ come quando guardavo il lancio del Mega Drive, accompagnato da una delle migliori conversioni di Altered Beast dell’epoca.

Altered Beast
Altered Beast originale su Amiga ECS

L’inizio del progetto

Ho iniziato questa avventura la scorsa estate, tra agosto e settembre, smanettando con vasm e consultando guide qua e là. Per puro divertimento ho iniziato a visualizzare a schermo un centurione in formato BOB. Senza neanche accorgermene stavo già lavorando al progetto, inizialmente su un sistema ECS, con l’obiettivo di raggiungere una fedeltà arcade pixel-perfect.

Dopo questo risultato inaspettato, ho iniziato a sperimentare anche con il “fratello maggiore” e sono rimasto colpito dalla resa PAL60. Così ho migrato rapidamente verso l’Amiga 1200, mantenendo come target una A1200 stock da 2MB di Chip RAM, sempre in bare-metal Assembly. Studiando a fondo l’hardware, ho scoperto i vantaggi della modalità FMODE, che garantisce maggiore throughput del Blitter. Questo mi ha permesso di raggiungere 128 colori a schermo.

YouTube – Test su Amiga ECS (Stock)

Anteprima del test ECS del primo stage con collisione pixel-perfect con la Spirit Ball, 32 colori (5 bitplane)

YouTube Video Stock AMIGA 1200

Secondo centurione blu derivato dallo stesso mapping del Player 1, senza collisioni, per rendere la demo più dinamica

Dettagli Tecnici (per gli appassionati di hardware)

L’engine gira attualmente a 50 fps su una macchina stock, nonostante il carico notevole.

Grafica

  • 128 colori, 7 bitplane

  • Modalità PAL60 (“Fake NTSC”) attiva

  • Double buffering completo con scrolling orizzontale

  • Grafica 1:1 con la versione Arcade (background leggermente meno colorati)

Compressione e ottimizzazione

  • Background enormi compressi con Shrinkler

  • Uso intensivo di FMODE per massimizzare la banda del Blitter

  • Asset costruiti con estrema cura per rientrare nei 2MB di Chip RAM

Utilizzo delle risorse (per chi ama i floppy)

  • Spazio su disco: ~564 KB (sta comodamente su un floppy DD con circa il 35% di spazio libero)

  • Ram utilizzata in runtime: ~1.55 MB

  • Ottimizzazione: oltre 390 KB di asset grafici (animazioni left-facing e sprite del Player 2) vengono generati in runtime, risparmiando spazio su disco e mantenendo i caricamenti rapidi.

Smart Asset Management

Per risparmiare spazio su disco e banda in memoria, non carica tutto da floppy.

Mirroring animazioni

  • Carica solo le animazioni “verso destra”.

  • Le animazioni “verso sinistra” vengono generate in runtime tramite una LUT CPU (sezione BSS_LEFTY).

Player 2

  • Il centurione blu non è presente su disco.

  • Viene generato clonando i dati del Player 1 con rimappatura della palette (sezione BSS_P2).

Memory Layout

Il codice è strutturato per essere Fast RAM friendly: se rilevata, il Core del gioco (BSS_FASTABLE) viene spostato automaticamente in Fast RAM, lasciando grafica e audio in Chip RAM. Funziona comunque alla perfezione anche su A1200 completamente stock.

Mappa di memoria attuale

  • GameCode(acrx2): 25.054 bytes

  • LutTables(adrw2): 384 bytes

  • DATA(adrw2): 7.374 bytes

  • GRAPHICS(adrw8): 339.676 bytes

  • SoundData(adrw2): 96.772 bytes

  • BSS_FASTABLE(aurw2): 2.548 bytes

  • BSS(aurw8): 652.312 bytes

  • CompressedData(adrw2): 108.640 bytes

  • BSS_LEFTY(aurw1): 138.496 bytes

  • BSS_P2(aurw1): 253.792 bytes

Audio

Sto utilizzando l’eccellente ptplayer di phx.
Effetti sonori e colonne sonore sono estratti direttamente dalla versione Arcade.

Stato attuale del progetto

È ancora un WIP. Al momento utilizzo il classico startup code di Fabio Ciucci per i test, ma prevedo di implementare un trackloader personalizzato (seguendo gli esempi di phx). Il gameplay loop è già solido, il sistema di collisioni funziona e… la Bestia si sta risvegliando!

E per quanto riguarda A500 / ECS?

Anche se ora mi sto concentrando sull’AGA per ottenere una fedeltà arcade totale (128 colori e sprite enormi), non ho dimenticato l’A500. Visto che l’engine è scritto da zero in Assembly bare-metal, dopo aver completato la versione AGA realizzerò una versione “demake” per OCS/ECS (32 colori), spremendo al massimo anche questo chipset.

Crediti e ringraziamenti

Questo progetto non sarebbe stato possibile senza il fantastico supporto della community.

  • a/b e phx (Frank Wille): due leggende assolute. Senza la vostra guida sarei ancora bloccato a capire perché i miei BOB lasciavano delle scie. Grazie per la pazienza e le mail.

  • JMD e FEROX: supporto fondamentale per moduli e conversione/estrazione degli SFX. Sono orgoglioso di dire che sono entrambi italiani come me.

4 risposte

  1. Domanda: come funziona col discorso dei diritti e dei copyright?
    Anch’io sto lavorando ad un remake di un gioco Amiga, ma quando sono arrivato a circa l’80% del lavoro ho realizzato il fatto che sto sviluppando qualcosa che probabilmente non potrò mai pubblicare… 😑

    0
    0
    1. Bella domanda, se si trattasse di Nintendo, avrebbe già fermato tutto. Bisogna vedere cosa farà Sega, purtroppo sono giochi che continuano a vendere nelle varie compilation, ma una versione Amiga non credo gli bloccherà significativamente le vendite…
      P.s. Che gioco stai sviluppando?

      0
      0
      1. Bravissimo, questo titolo mi ha sempre affascinato in sala giochi, e lo comprai per MD reputandolo anche migliore per certi versi. La versione AGA per Amiga e un bel riscatto alle potenzialità della macchina.
        Come hai implementato lo sprite scaling presente nella versione arcade?

        0
        0
        1. Ciao Michele, purtroppo non sono io l’autore di questo remake. Ma l’ho contattato strappandogli la promessa che ci saremmo sentiti più avanti quando avrà più elementi da mostrare del gioco. Rimani sintonizzato su retro-gamers! 😊

          0
          0

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Ultimi Articoli

Articoli più Commentati

Tinyus

Dopo 25 anni, aBYSs ci porta Gradius su Amiga!