Forum:	Software
Téma:	Vi spiego perché non è possibile convertire molti giochi
----------------------------------------------------------------

Qwe:
Dopo aver studiato la programmazione degli Atari a 8 bit vi spiego perché non è possibile fare il porting di molti giochi su questa piattaforma.
Quando l'Atari 800 è uscito sul mercato era un passo avanti rispetto al Commodore Pet e all'Apple 2 perchè il chip Antic (il chip video) era molto sofisticato.
L'Antic permetteva di mischiare i modi grafici facilmente senza fare uso di interrupt e la “memoria video” poteva essere configurata in qualsiasi punto della memoria mentre in altri sistemi era fissa ad un certo indirizzo. Queste caratteristiche degli Atari erano uniche (solo gli Amiga nel 1986 potevano fare qualcosa di simile).
L'Antic è un processore a tutti gli effetti ed il programma che esegue si chiama Display List..
Nella memoria degli atari quindi si possono trovare 2 tipi di programmi, quelli per l'Antic e quelli per la CPU.
Antic e Cpu non hanno niente in comune.
La CPU non sa eseguire il Display List e l'Antic non sa eseguire le istruzioni del 6502.
C'è un problema: la memoria può essere letta da uno alla volta.
Come fa l'Antic a leggere la memoria? Manda un interrupt alla CPU e le dice: adesso la memoria la leggo io e tu stai ferma finchè non ho finito di eseguire il Display List.
Il problema è che l'Antic deve eseguire il Display List 50 volte al secondo perchè i televisori devono essere “rinfrescati” 50 volte al secondo.
Questo significa che per quasi tutto il tempo il 6502 rimane fermo come un cretino aspettando che l'Antic faccia i suoi comodi; più il Display List è complicato e meno lavora il 6502.
Per aggirare questo problema si sono inventati gli sprite hardware che sugli atari si chiamano Player/Missile. 
I P/M hanno una propria area di memoria, possono avere 1 solo colore (che può essere diverso da quelli della memoria video) e possono essere larghi al massino 8 pixel mentre possono essere alti anche 32 pixel.
Pensate ai P/M come a dei trasferelli che passano sopra lo schermo, non sono niente altro.
I P/M erano stati pensati per dei giochi come Pac-Man (con sprite piccolini).
Per giochi con sprite più larghi di 8 pixel bisogna realizzare sprite software (ovvero elaborati dal 6502); gli sprite software sono molto complessi e dato che la CPU ha poco tempo per lavorare è il motivo per cui sono lenti sugli Atari 8 bit.
Gli sprite software hanno un'altra limitazione: sono fermi ai 4 colori dello schermo.
Devo sfatare un mito, non è vero che gli Atari 8 bit sono in grado di visualizzare 128 colori simultaneamente; questa è una gran fregatura della pubblicità dell'epoca.
Affermare che un Atari 800 può visualizzare 128 colori è come affermare che una Panda 30 può fare i 200 km/h (li può fare ma solo in discesa).
Gli atari 8 bit hanno 4 registri per il colore quindi possono visualizzare al massimo 4 colori che diventano 5 in modalità testuale.
Quando vedete un gioco che ha 5 colori è probabile che sia un gioco che sta lavorando in modalità testo.
Si può aggirare il limite dei 4 colori sfruttando gli interrupt ma comunque si ottengono sempre un massimo di 4 colori per riga.
Il chip GTIA quando disegna lo schermo sul televisore non lo disegna tutto in una volta, lo disegna una riga alla volta; se si cambiano i registri del colore mentre il GTIA sta scrivendo lo schermo è l'unica maniera per visualizzare più di 4 colori simultaneamente.
Nella mia carriera di videogiocatore non ho mai visto giochi con più di 7/8 colori.
Il Commodore 64 ha stracciato di brutto l'Atari 800 perchè poteva visualizzare contemporaneamente 16 colori e perchè gli sprite hardware del C64 non erano limitati a 8 pixel di largheza per 1 colore.
Riassumendo, l'Atari se deve sprecare potenza di calcolo per visualizzare più di 4 colori non ha poi abbastanza potenza di calcolo per l'elaborazione del gioco.
I giochi del C64 di seconda generazione non sono per questo motivo convertibili su un Atari.
L'unico gioco degli Atari che non è convertibile sul C64 è Yoomp perché il C64 non ha una modalità grafica con risoluzione di 160x96, ne ha una di 160x200 ed avrebbe troppi pixel da disegnare.
Dall'altro lato gli atari 8 bit si possono solo sognare lo scorrimento con parallasse di un gioco come “Shadow of the beast” del C64.
Pur avendo caratteristiche uniche, gli Atari 8 bit rispetto al C64 erano delle macchine estremamente obsolete che non reggevano il confronto.
Solo gli utenti registrati possono vedere i link!Registrati o Entra nel forum!
Solo gli utenti registrati possono vedere i link!Registrati o Entra nel forum!

ataricomputers:
Ciao QWE
Grazie per l'ottima descrizione dell'Atari 800. ;-)
Riguardo il numero dei colori, hai scritto che "gli atari 8 bit hanno 4 registri per il colore quindi possono visualizzare al massimo 4 colori che diventano 5 in modalità testuale." 
Ma questo non dipende dalla modalità grafica selezionata?
Mi spiego:
in GRAPHICS 15 sono disponibili 4 registri colore indipendenti, mentre in GRAPHICS 10 (GTIA) sono disponibili 9 registri colore indipendenti (704-712) quindi punti/colore sullo stesso scanline.
Sto sbagliando?
A presto 
Maurizio

Qwe:
Ciao Maurizio.
In realta tutte le modalità grafiche che hanno 192 righe per il chip Antic sono la stessa cosa; è il chip GTIA che è in grado di interpretare i dati in modo diverso.
Il GTIA rispetto al CTIA può interpretare la modalità grafica di alta risoluzione in 3 nuovi modi.
Non è che il GTIA ha più registri del CTIA; nella modalità grafica che dici tu (la 10) hanno usato un semplice espediente per "raggiungere" 9 registri colore.
Sull'atari ci sono 4 registri colore + 4 registri colori per i Player/Missile + 1 registro per il colore di sfondo (background).
Per realizzare la modalità graphics 10, ai 4 registri colore della memoria video hanno aggiunto i 4 registri degli sprite più il registro del background ---&gt; 4+4+1 = 9
Purtroppo i pixel della modalità 10 sono talmente larghi che non sono idonei per creare giochi ne tanto meno per fare porting di giochi.

ataricomputers:
Ciao Qwe
Grazie per l'info (in effetti bastava ragionarci su). :-)
Maurizio

Philsan:
Nel primo post ci sono alcune imprecisioni e credo che manchino alcuni dettagli che secondo me è importante sottolineare.
Premetto che l'Atari 800 è uscito due anni e mezzo prima del C64, un'eternità dal punto di vista informatico.
Dunque:
- gli sprite sono monocolor e larghi solo 8 pixel ma anche alti quanto tutto lo schermo;
- le dimensioni verticali dello schermo arrivano a 240 pixel e quelle orizzontali a 336; l'Atari 800, come l'Amiga, possiede l'importante caratteristica dell'overscan, apprezzabile in particolare usando l'hardware reale;
- il processore è più veloce del C64, vantaggio palpabile anche nelle recenti conversioni di Total Eclipse o The Great Escape;
- "comunque si ottengono sempre un massimo di 4 colori per riga": possono esserci più di 4 colori per linea perché i registri possono essere cambiati più volte mentre il pennello del tubo catodico disegna lo schermo;
- "nella mia carriera di videogiocatore non ho mai visto giochi con più di 7/8 colori": ecco una lista (incompleta) dei giochi con più di 16 colori (il numero accanto al nome indica i colori contemporaneamente a schermo):
Alley Cat 22
Alternate Reality - The City 38
Alternate Reality - The Dungeon 38
Assembloids XE 29
Atlantis 39
Battle Eagle 33
Bomb Jack 25
Bounty Bob Strikes Back 22
Break It 28
Callisto 45
Capture The Flag 24
Cavernia 17
Choplifter 22
Clowns &amp; Ballons 17
Crack-Up! 29
Crossbow 19
Crownland 22
Cygnus X1 31
Decathlon 39
Demon Attack 17
Dimo's Quest 44
Disc Hopper 60+
Dropzone 18
Dyna Blaster 19
Eckn+ 19
Flimbo's Quest
Flower Mania 32
Frogger 25
Frogger II 24
Galaxian 47
Getris 29
Great American Cross - Country Road Race 22
H.E.R.O. 25
Henry's House 21
International Karate 19
Inside 17
Jet Boot Jack 17
Jetboy 21
Joe Blade 17
Joe Blade II 17
Koronis Rift 30
Laser Gates 81
Marbled 29
Mashed Turtles 33
Master of the Lamps 17
Mahjong XE 17
Miner 2049er 18
Murder on the Zinderneuf 19
Nightmares 18
Ocean Detox 24
Pitfall II 20
Plastron 23
Pogotron 57
Pole Position 22
Popeye 17
Preppie 23
Rainbow Walker 34
Revenge of the Mutant Camels 20
RGB 35
Ridiculous Reality 28
River Raid 27
Rocks 24
Rolltris 25
Saracen 22
Scooter 21
Seaquest 23
Space Lobsters 23
Star Raiders II 22
Star Rider 73
Star Trek 17
Stealth 25
Technoid 31
Thetris 26
Timeslip 47
Track &amp; Field 18
Tree Surgeon 17
Trivial Pursuit 17
Unicorn Horn 23
Wall, The 64
Wall War 25
Wizard 17
Whomper Stomper 21
X:8 25
Yar's Strike 28
Zenji 24
- come visto sopra i giochi possono avere ben più di 16 colori; le immagini statiche però sono addirittura impressionanti, basta dare un'occhiata a questo thread per rendersi conto di cosa riesce a fare un computer del 1979: Solo gli utenti registrati possono vedere i link!Registrati o Entra nel forum!
Il C64, ribadisco di 2 anni e mezzo più recente, aveva il grande vantaggio degli 8 sprite multicolor di dimensioni più grandi orizzontalmente, utilissimi per la maggior parte dei giochi; i suoi pochi colori erano sufficienti e più facilmente gestibili.
Ovviamente un gioco con 8 sprite multicolor (o anche più in multiplexing) che si muovono liberamente sullo schermo è molto difficile da convertire per Atari 800 (la sua maggiore velocità non riesce a sopperire a questo svantaggio hardware).
Al contrario, giochi tarati sulle caratteristiche dell'Atari 800, sono difficili da convertire per C64.
Concludendo il C64, pur con alcuni limiti rispetto al ben più vecchio Atari 800, aveva caratteristiche hardware che facilitavano la programmazione della maggior parte delle tipologie di giochi; inoltre, era commercializzato ad un prezzo inferiore rispetto all'Atari 800, sia per scelta strategica del compianto Jack Tramiel sia perché Commodore aveva il vantaggio di produrre i suoi chip in casa.
I successivi Atari XL e XE non riuscirono a competere col C64 ma assicurarono buone vendite sino al 1991.
Ritengo che l'Atari 800 sia stato molto importante; come il predecessore VCS e il successore Amiga, aveva caratteristiche all'avanguardia al momento della sua introduzione sul mercato.
