CYBORG HELLGATE - LE VERSIONI, SOTTO IL PROFILO TECNICO
Cyborg Hellgate è uno sparatutto bullet hell in stile Defender: un pianeta a scorrimento, uno scanner, umanoidi
da salvare e un vasto cast: lander, mutanti, baiter, bombardieri, pod, swarmer, fireflinger,
dunderhead, pesci rossi Yellowbelly, Fudd e Big Dud; oltre ai potenziamenti di MECHRA, al warp HELLGATE,
a Ghosto, alla guardia, alle catene HIT e ai mech giganti.
Ogni versione è scritta in NTC BASIC, compilata in codice threaded nativo, con le parti più critiche per la
velocità in Z80 o 68000. La logica di gioco è lo stesso codice BASIC su tutte le piattaforme; ciò che cambia è il modo in cui ciascuna
macchina la renderizza a schermo.
A SCHERMO CONTEMPORANEAMENTE (I LIMITI DEL GIOCO, IDENTICI IN OGNI VERSIONE)
- Nemici: fino a 16 contemporaneamente (4 insieme ai mech nei livelli boss).
- Umanoidi: 8.
- Mech giganti: fino a 5, ciascuno di 64 x 48 (12 sprite sul Next).
- Esplosioni: 6. Collezionabili (P, P grande, gemme): 6.
- La navicella.
- Proiettili nemici: fino a 52.
- Colpi laser: fino a 22 (16 raffiche laser sul Mega Drive, ciascuna da uno a tre raggi).
- Ovvero fino a circa 110 elementi in movimento contemporaneamente, stelle escluse.
ZX SPECTRUM NEXT (L’ORIGINALE)
- Z80N a 28 MHz, 50 fotogrammi al secondo.
- Layer 2 per il terreno, il copper per lo scorrimento, la tilemap per il pannello e i testi.
- Sprite hardware per ogni elemento in movimento. I mech giganti sono 64 x 48, composti da 12 sprite:
è memorizzata solo la metà sinistra, la metà destra è costituita dagli stessi sprite specchiati.
- Movimento, collisioni e rendering di proiettili e laser gestiti in Z80: 52 proiettili nemici e 22 colpi laser sotto forma di
sprite hardware.
- I dati degli sprite e dei font risiedono nei banchi NEX 45-47, all’esterno della memoria del programma.
- A schermo: 128 sprite hardware — slot 0-53 per la navicella, i nemici, gli umanoidi, le esplosioni,
i collezionabili e i mech; 54-127 per i 52 proiettili e i 22 colpi — e 60 stelle sul Layer 2.
- Versione con voce (CYBHELLV): 25 battute con vocoder a 13,6 kHz, inviate dal DMA del Next direttamente al
DAC, riducendo al minimo il carico sullo Z80. Richiede un Next da 1 MB.
SEGA MEGA DRIVE / GENESIS
- 68000 a 7,6 MHz, H40 (320 x 224), NTSC a 60 Hz o PAL a 50 Hz.
- Ogni operazione eseguita per ciascun oggetto a ogni frame è in 68000: il tick per tutti i 14 tipi di nemici e
gli umanoidi, i collezionabili, il controller, la navicella e la visuale, i 52 colpi nemici e le 16 raffiche
laser, la tabella degli sprite, lo scanner, le colonne del paesaggio. Il BASIC determina cosa compare a schermo,
il punteggio di ciascuna uccisione e i testi.
- Piano B: le stelle, con scorrimento a un quarto della velocità del terreno (l’effetto parallasse del Next), e lo
scanner. Piano A: i testi, il pannello e il terreno. Tutto ciò che si muove è uno sprite
hardware. La tabella degli sprite, lo scanner e le nuove colonne del paesaggio vengono trasferiti al VDP via DMA durante il
blank verticale.
- Il tick di gioco è fissato a 50 al secondo come sul Next, sia su NTSC che su PAL (1.500 tick in 1.800 frame NTSC,
1.500 in 1.500 PAL); lo scorrimento risulta fluido anche a 60 Hz.
- A schermo: il Mega Drive visualizza 80 sprite hardware, 20 per linea (contro i 128 del Next), ripartiti tra la
navicella, i 16 nemici, gli 8 umanoidi, i mech, le esplosioni, i collezionabili, i 52 colpi nemici e le 16 raffiche
laser; il superamento del limite per linea si è verificato in meno dell’1% dei frame testati. Le stelle sono tile sul
piano B, pertanto non occupano sprite.
- Effetti sonori sul PSG, con conversione di ogni periodo AY. Versione con voce (CYBHELLV): le battute con vocoder
del Next riprodotte tramite il DAC dell’YM2612 da un player Z80, che non impegna il bus del 68000 durante il DMA.
- ROM da 74K, 612K con la voce.
- Controller a 3 e 6 pulsanti.
- Cinque livelli di difficoltà (Sinistra / Destra nella schermata del titolo): EASY con una vita extra ogni 10.000 punti, MEDIUM
ogni 50.000, HARD ogni 100.000, VERY HARD ogni 100.000 senza navicelle extra, INSANE identico ma
partendo con una sola navicella.
- Testato tramite bot fino all’ondata 25 e oltre su Genesis Plus GX.
AMSTRAD CPC (VERSIONE COMPLETA)
- Z80 a 4 MHz, modalità 0, schermi in double buffering a #C000 e #0000. Nessun hardware per gli sprite: tutto
è gestito via software.
- Sprite compilati: ciascuno sprite è una routine in Z80 che scrive i propri byte direttamente sullo schermo,
sia in versione normale che specchiata. 118 pattern, circa 49K di codice, memorizzati nella RAM aggiuntiva del 6128; il resto del
programma si trova nel banco 7.
- Liste di cancellazione (erase lists): vengono anneriti esclusivamente i byte effettivamente disegnati. Il terreno e le stelle mantengono
le proprie liste dedicate.
- Clock dei fotogrammi gestito da un interrupt IM 2 generato dai 300 Hz del gate array, con una tabella vettoriale da 257 byte per
garantire il funzionamento sulle macchine espanse in cui il bus non restituisce #FF.
- A schermo: 57 slot per sprite software (la navicella, i nemici, gli umanoidi, le esplosioni, i collezionabili e le
12 celle di un mech), fino a 52 proiettili nemici e 22 colpi laser come piccoli elementi grafici dotati di proprie liste di cancellazione,
e 24 stelle.
- Bloccato a un fotogramma ogni due: 25 fps al ritmo in tempo reale del Next, con spostamenti raddoppiati. Nelle ondate più
concitate scende a 16-19 fps.
- Richiede 128K (un 6128, oppure un 464 / 664 con 64K aggiuntivi).
AMSTRAD CPC LITE
Stesso engine, ottimizzato per garantire una resa fluida:
- Terreno a punti: ogni ottava colonna del mondo, ancorata allo scenario durante lo scorrimento.
- Niente stelle né scanner.
- Il pannello è visibile solo tenendo premuto TAB. La linea viola rimane a schermo, consentendo di visualizzare l’altitudine
raggiunta dai lander.
- Sprite compilati senza maschera (byte dei bordi scritti direttamente): le dimensioni del codice degli sprite scendono a 27,6K suddivisi in due
banchi.
- L’avanzamento delle righe degli sprite sfrutta pop bc / add hl, bc da tabelle per riga, evitando un ciclo di add-and-check per
ogni riga.
- Alieni dormienti: qualsiasi elemento situato a più di 240 pixel di mondo dall’inquadratura si arresta del tutto, timer compresi,
finché non ci si avvicina in volo. L’assenza dello scanner non permette di accorgersene. I lander che trasportano umanoidi, gli umanoidi in caduta,
gli inseguitori e i mech rimangono sempre attivi.
- Nessun dunderhead: la loro velocità è eccessiva per essere visualizzata in modo fluido dal CPC.
- A schermo: gli stessi 57 slot sprite, 52 proiettili e 22 colpi laser della versione completa, niente
stelle; con la disattivazione dei nemici distanti, solo gli alieni vicini all’inquadratura sono effettivamente in movimento.
- Per lo più a 25 fps, con lievi cali sporadici nelle ondate più dense. 128K.
AMSTRAD CPC + V9990 (AMSDAP CON UN MSX GFX9000 O VIDEO9000, O UNA POWERGRAPH)
- Il CPC gestisce la logica di gioco; il V9990 si occupa del rendering in modalità P1: due livelli di tile
a scorrimento hardware e 125 sprite hardware (16 x 16, 16 colori).
- Terreno e stelle su un livello, pannello e scanner sull’altro. Tutti gli sprite sono
hardware; i mech impiegano copie specchiate pre-renderizzate in memoria, poiché la modalità P1 non supporta il flipping.
- A schermo: i 125 sprite hardware del V9990 (16 per linea) accolgono i 57 slot per gli oggetti del gioco
oltre ai proiettili e ai colpi laser (fino a 52 e 22), con 60 stelle sul livello di sfondo.
- In caso di oltre 16 sprite su una riga: l’ordine dei proiettili si inverte a ogni fotogramma, generando uno sfarfallio al posto della
scomparsa dell’immagine.
- Un fotogramma di anticipo: ogni frame completato viene messo in coda e mostrato al fotogramma successivo del V9990, consentendo a un fotogramma
rapido di compensare il tempo di uno più lento. Il costo è un frame (40 ms) di latenza (lag).
- La parte più impegnativa del BASIC è stata convertita in Z80: comandi, clock, punteggio, armi dei mech.
- 25 fps nelle ondate 1-2 e nei livelli boss; il bullet hell dell’ondata 7 rimane a tempo nel 93% dei frame.
- Più compatto rispetto alla versione per solo CPC (66K contro 87K): gli sprite sono dati a 4 bit salvati nella
memoria della scheda, non codice compilato. Richiede 128K e la scheda all’indirizzo &FF60.
MSX2 + V9990 (GFX9000, VIDEO9000, POWERGRAPH)
- Codice quasi identico alla versione CPC + V9990: il driver del V9990 non subisce variazioni; differiscono unicamente
la gestione di tastiera, joystick, audio e memoria.
- Due versioni ricavate da un unico sorgente: un file .COM per MSX-DOS 2 / Nextor con due file di dati (caricati nelle pagine
del memory mapper, allo stesso modo in cui il CPC popola i suoi banchi), e una MegaROM ASCII16 da 128K compatibile con il bios libero
C-BIOS.
- Sonoro gestito tramite PSG (lo stesso chip AY del CPC), con intonazioni ricalibrate per il clock a 1,79 MHz dell’MSX.
- A schermo: configurazione identica alla versione CPC + V9990 — 57 slot oggetto, 52 proiettili, 22 colpi laser,
60 stelle.
- Il V9990 opera costantemente a 50 Hz, assicurando la medesima cadenza di gioco sia su macchine MSX a 50 Hz che a 60 Hz.
- Prestazioni vicine a quelle della combinazione CPC + V9990: l’ondata 1 rispetta i tempi nel 99% dei frame, l’ondata 7 nell’83%.
TESTING
- Versioni CPC testate su Caprice32; CPC + V9990 su 1984 (l’emulatore CPC con supporto a PowerGraph V9990);
la ROM per MSX su openMSX con l’estensione GFX9000; la versione Mega Drive su Genesis Plus GX.
- Ogni elemento è stato collaudato anche tramite bot attraverso ondate, livelli con mech giganti e schermate di game over all’interno dei test
harness proprietari di NTC dedicati al timing.
- I dati numerici provengono da emulatori e ambienti di test, non da hardware reale.
- blueMSX non dispone del supporto per V9990: per la versione MSX utilizzare openMSX o WebMSX.
(c) 2026 Cyborg Unicorn Pty Ltd