Commodore 64 vs ZX Spectrum

Salve a tutti!

Questa pagina nasce dopo la lettura di un'articolo sul web, stilato da uno spectrumista accanito che d'ora in avanti chiameremo PEI (Professorino Esperto Informatico). Il PEI metteva a confronto un Commodore 64 con uno Spectrum 48. Ovviamente venivano confrontati i punti di forza dello spectrum con i punti deboli del commodore 64, nonostante cio', lo spectrum (secondo il redattore dell'articolo) ne e' uscito vincitore per poco! La storia di fantasia popolata di personaggi con soprannomi molto fantasiosi,e' incentrata su un confronto/scontro tra un gruppetto di utenti spectrum ed un altro commodore, con tanto di giudice di parte!


E' noto a tutti che gli utenti di computer Spectrum 48k erano invidiosissimi nei confronti dei "sessantaquattristi", e trovavano sempre il lato positivo su tutto, per loro erano superiori al Commodore 64 persino le enormi lacune dello Spectrum 48k!!

 

"Qualsiasi cosa dicono, una cosa e' certa: un sessantaquattrista non ha mai invidiato un possessore di spectrum, cosa che invece facevano i possessori di spectrum nei confronti dei sessantaquattristi!"

 

 

E' stato provato che un Commodore 16 e' piu' potente di uno Zx Spectrum 16k: 121 colori, nessun color clash, 12 k liberi per il basic, cpu 6502 compatibile a 2mhz, 2 porte joystick, e una bella porta seriale DI SERIE!

 

Commodore 16: stesso colore dello spectrum 16... infinite potenzialita' in piu'!
 

 

 

Evidente difetto del colour clash bug che hanno tutti gli spectrum (notare che i personaggi prendono i colori dello sfondo del giochino, quello al centro per esempio ha il corpo e la testa giallo, la spada verde, le gambe bianche ed i piedi celesti. Questo perche' lo sfondo della schermata ha quei colori: muro giallo, porta verde, base del muro bianco e marciapiede celeste)

 

 


Ma se il Commodore 64 e' accertatissimo e accettatissimo da tutti (anche dagli utenti sinclair) essere infinitamente superiore al Commodore 16, dunque com'e' possibile che lo Zx Spectrum 48k (identico al 16k ma con 32k in piu') sia superiore al Commodore 64? Semplice: infatti non lo e'.

E' cosa tipica degli utenti sinclair, infatti,  mettere in campo qualsiasi cosa per farvi credere il contrario; e' un po come se un possessore di una Fiat Punto volesse dimostrarvi che la sua auto e' superiore ad una Ferrari! (paga meno di bollo, consuma meno, i pezzi di ricambio costano meno e subito disponibili... si e' vero, va molto piu' lentamente della Ferrari, ma in realta' anche no.. infatti sulle strade ci sono i limiti di 50 km/h quindi si puo' dire alla fine che viaggiano alla stessa velocita') ma vediamo le ragioni nel dettaglio:

 

  • Il cicalino monovoce dello zx? superiore al sid perche': Poteva riuscire ad emulare molto bene il SID del Commodore 64, sfruttando il 99% delle potenzialita' della CPU Z80 e prosciugando quasi tutta la memoria (lo spectrum non avrebbe potuto fare altro)
 

 

 

  • Lo Z80 e' superiore al 6510? Si perche': viaggia a 3.5mhz (questo e' vero, ma provate a chiedere ad un qualsiasi possessore di zx:"che cos'e' la memoria contesa?" e lui vi parlera' della sua squadra del cuore! Una cosa che i sinclaristi omettono sempre di dire e' che i primi 16k di memoria sono contesi dalla CPU e dalla ULA, lo Z80 infatti e' costretto ad aspettare i comodi della ULA ridimensionando molto i suoi 3.5Mhz!!)

 

 

 

  • Lo schermo monorisoluzione dello zx? superiore al vic perche': tutte quelle risoluzioni e modalita' confondono. (soffriva di color clash e la quasi totalita' dei giochini dello spectrum era MONOCROMATICO!)

 

 

 

  • Gli sprite software dello zx? superiori agli sprite hardware perche': potevano essere piu' di 8 (anche nel commodore 64, con un misero sforzo della cpu potevano essere addirittura 64, ma questo discorso i sinclaristi lo evitano come la peste. Inoltre gli sprite del Commodore 64 possono essere multicolor, a differenza della quasi totalita' degli sprites software MONOCROMATICI dello spectrum. Ultimo ma non ultimo, la collisione degli sprites nel Commodore 64 viene rilevata a livello HARDWARE senza cosi' influire minimamente sulle prestazione del Commodore 64, cosa che NON AVVIENE nello Spectrum)

 

 

 

  • La mancanza di uno scrolling hardware nello zx? superiore perche': lo scroll dello schermo (di una minima parte direi spesso 128x128 punti, ovviamente MONOCROMATICO) veniva fatto dallo Z80 che a 3,5mhz non era un problema (o loro non hanno mai visto gli scroll hardware sul C64, o voi non avete mai visto gli scroll SOFTWARE dello ZX... ci sara' un motivo se il 90% dei giochini ZX era composto da isometrici, strategici, avventura e testuali o comunque con schermi fissi?)

 

 

 

  • La mancanza di porte dedicate ai joystick sullo zx? superiore perche': non ce n'era bisogno si poteva benissimo usare la tastiera (siccome era buona! dopo qualche tempo diveniva "sorda" e l'utente doveva premere sempre piu' forte fino a quando il tasto cessava inesorabilmente di funzionare)

 

 

 

  • Il basic dello zx? e' superiore perche': e' piu' completo (Piu' completo? Si e' vero. Superiore? Non direi proprio, ne parleremo piu' avanti)

 

 

 

  • La tastiera dello zx? la migliore del mondo perche': piu' bella di quella del C64 (qui apro una parentesi: il fatto, di cui tutti i sinclaristi si vantano, che premendo il tasto "p" appaia scritto la parola PRINT non era, come la sinclair voleva far credere, una bella funzione dello zx ma era un modo per limitare al massimo l'uso della PRECARIA e DIFETTOSA tastiera dello zx. E' quasi certo infatti che l'inserimento di un listato di circa 30kb, lettera per lettera, avrebbe causato la rottura della tastiera prima ancora di aver raggiunto la fine della battitura)

 

Le immagini a sinistra riguardano lo SPECTRUM mentre quelle a destra riguardano il COMMODORE 64

 


I piu' attenti avranno certamente notato il ripetersi della parola "MONOCROMATICO" per quanto riguarda il mondo Spectrum.. Ahime' purtroppo e' cosi', quella e' una parola con cui ogni possessore di spectrum doveva "convivere"! Vi basta guardare qualunque gioco per Spectrum 48k su Youtube e vi accorgerete che i giochi non monocromatici si contano davvero sulla punta delle dita (di una mano)!

Inoltre il fatto che il 6510 a 980 khz (nemmeno un megahertz) riuscisse a tener testa (e surclassare abbondantemente in alcuni particolari casi) lo Z80 a 3.5Mhz (3,6 volte piu' veloce) la diceva lunga! Il chip video nello spectrum era lo stesso z80 che doveva disegnare gli sprites software, gestire lo scroll, la musica ecc.. costringeva il programmatore a rimpicciolire sempre piu' l'area di gioco, spesso monocolore (nero + altro colore) per poter lasciare un po delle capacita' dello z80 "disponibili" per la gestione del giochino stesso..

Il 6510 d'altro canto doveva solamente eseguire calcoli e dare ordini agli altri coprocessori del sistema (che si occupavano di fare il resto) un'architettura vincente che alla fine ha STRACCIATO lo spectrum.

TUTTI GLI IMBROGLI DEL PEI!


Eh si perche' di imbrogli il nostro Sig. PEI ne ha fatti... e pure tanti! E con un perfetto "lapsus froydiano" da manuale ce lo suggerisce direttamente lui: ad un certo punto della sua storia viene confrontato un piccolo programmino LM e, dopo la sconfitta del commodore 64 il personaggio di fantasia "con la testa grande" esclama sbigottito: "Non e' possibile! Qui c'e' un imbroglio!!". Ebbene si, l'imbroglio c'era proprio (e nemmeno uno) ma vediamoli insieme:

Viene fatto girare sullo spectrum il seguente programma LM:

   DI            ; 4 clocks    F3
   LD HL, $8002  ; 10          21 02 80
a: DEC HL        ; 6           2B
b: DEC HL        ; 6           2B
c: INC (HL)      ; 11          34
   JR NZ, c      ; 7/12        20 FD
   INC HL        ; 6           23
   INC (HL)      ; 11          34
   JR NZ, b      ; 7/12        20 F8
   INC HL        ; 6           23
   INC (HL)      ; 11          34
   JR NZ, a      ; 7/12        20 F3
   EI            ; 4           FB
   RET           ; 10          C9


 Che gira sullo spectrum in circa 111 secondi, mentre sul C64 viene eseguito lo stesso programma convertito in codice 6510:

   CLI           ; 2 cycles    58
a: INC $8000     ; 6           EE 00 80
   BNE a         ; 2/3         D0 FB
   INC $8001     ; 6           EE 01 80
   BNE a         ; 2/3         D0 F6
   INC $8002     ; 6           EE 02 80
   BNE a         ; 2/3         D0 F1
   SEI           ; 2           78
   RTS           ; 6           60


Che gira sul Commodore 64 in ben 155 secondi (44 secondi in piu' rispetto allo spectrum)


Gia' di per se non e' male (ricordiamoci che il C64 e' cloccato nemmeno ad un megahertz mentre lo Z80 e' cloccato a 3,5Mhz, ben 3,6 volte in piu'!!!!!!!!!!!!! quindi il C64 avrebbe dovuto eseguire la routine in circa 400 secondi!!!)
Avrete gia' capito che la performance dello spectrum gia' di per se, che viaggia 3,6 volte piu' velocemente, non e' poi cosi' eccezionale... Ma allora l'imbroglio dove sta?? Semplice: il programma per Spectrum viene eseguito in condizioni FAVOREVOLI mentre quello per C64 viene eseguito in condizioni SFAVOREVOLI! (Furbo il PEI eh??)
Gli esperti di ASM 6510 avranno gia' notato una bella cosa: il primo comando ad essere eseguito e' "CLI" Clear Interrupt. A differenza di quello che puo' suggerire il nome, tale comando ATTIVA tutti gli interrupt, infatti pone a 0 il flag Interrupt (con il flag interrupt a 0 il microprocessore 6510 abilita gli interrupt) e' un po come il referendum abrogativo: se dici SI allora e' No e viceversa..

A questo punto e' evidente che il PEI se ne intende di Spectrum ma poco di Commodore 64 infatti il listato e' SBAGLIATO la prima istruzione dovrebbe essere "SEI" e non "CLI". (A meno che la cosa non sia stata fatta di proposito per "rallentare" di piu' l'esecuzione del listato per C64.)

C'e' da fare un'altra considerazione, viene scelta una locazione di memoria dove eseguire i programmi apparentemente "innocua" ($8000) ma non e' cosi'!!! Scatta in altro imbroglio del PEI!!

Infatti tale locazione e' appena di fuori dell'area di memoria contesa!!! Cerchiamo di spiegare in parole povere in modo che tutti possano capire, cos'e' esattamente l'area di memoria "contesa"???

A differenza del 6510 e del suo chip video VIC II che "CONDIVIDONO" la memoria accedendovi CONTEMPORANEAMENTE, lo Z80 e la ULA (la ULA e' il chip che gestisce l'uscita video nello Spectrum) non possono accedere contemporaneamente alla memoria per cui l'area di memoria gestita dal chip video (da $4000 a $7FFF, 16k totali) viene "CONTESA" tra i due chip... Ovviamente il chip video, la ULA ha la PRECEDENZA sul microprocessore centrale Z80.. A voi immaginare con quali risultati! Lo Z80 viene di fatto STOPPATO mentre il chip video ULA accede alla memoria, rallentando cosi' di molto la sua velocita'!

Una curiosita': il video dello spectrum e' memorizzato proprio dentro quest'area di memoria contesa (ovvio!) per cui ogni accesso risulta rallentato e, a meno che non si eviti di utilizzare il video o comunque i primi 16k di memoria ram, i 3.5mhz dello Z80 sono alla fine e di fatto ridimensionati di molto. Da notare che la versione a 16K dello Spectrum ha la TOTALITA' della memoria disponibile completamente CONTESA!

C'e' un ulteriore inganno, infatti il programma per C64 evita sapientemente di utilizzare la PAGINA ZERO.

Che cos'e' la PAGINA ZERO in parole povere?? E' l'area di memoria che va da $0000 a $00FF (256 bytes) dove l'accesso viene eseguito piu' velocemente rispetto alle altre aree di memoria, in quanto viene utilizzato un indirizzamento a 8 bit anziche a 16 bit.

Oggi tutti gli amanti e i collezionisti di retrocomputer  hanno sia il Commodore 64 che lo Spectrum, e chi non colleziona ha sempre gli emulatori. Personalmente posseggo entrambe le macchine e ho voluto provare io stesso, stavolta pero' ho cambiato le carte in tavola, modificando i programmi e ribaltando i favori. Infatti il programma per spectrum viene eseguito DENTRO l'area di memoria contesa e con interrupt attivi, mentre il programma per C64 e' corretto (adesso gli interrupt vengono disabilitati) e viene eseguito in PAGINA ZERO con i seguenti risultati:

NUOVO PROGRAMMA PER ZX SPECTRUM:


ORG  6000H  (origine programma a $6000)
LD HL, 5ff0H
A:
DEC HL
B:
DEC HL
C:
INC (HL)
JR NZ, C
INC HL
INC (HL)
JR NZ, B
INC HL
INC (HL)
JR NZ, A
RET


Viene eseguito dallo Spectrum in poco meno di 142 secondi (circa 31 secondi in piu' del vecchio programma!!!)

NUOVO LISTATO PER COMMODORE 64

C000   SEI           ; 2 cicli     78
a:
C001   INC $FC       ; 5           E6 FC
C003   BNE a         ; 2/3         D0 FC
C005   INC $FD       ; 5           E6 FD
C007   BNE a         ; 2/3         D0 F8
C009   INC $FE       ; 5           E6 FE
C00b   BNE a         ; 2/3         D0 F4
C00d   CLI           ; 2           58
C00e   RTS           ; 6           60
 


Viene eseguito dal Commodore 64 in circa 144 secondi (11 secondi in meno del vecchio programma e SOLO 2 SECONDI IN PIU' RISPETTO ALLO SPECTRUM!!)


Ma la cosa interessante avviene quando si "spegne" il chip video del c64 (puo' essere fatto con POKE 53265,PEEK(53265)AND234 ) in questo caso disattivando qualsiasi comunicazione col chip video il c64 impiega 136 secondi, in totale 18 secondi in meno rispetto al vecchio programma!! (non ho tenuto conto del commodore 64 contenuto dentro al c128 che ha la possibilita' di far girare il microprocessore a 2Mhz, giusto per curiosita' vi dico che impiega circa 69 secondi per eseguire il programma, ma ovviamente non ne terro' conto!)

Ribaltando le carte in tavola si nota come lo Z80 in questo caso sia di 6 secondi piu' LENTO rispetto al microprocessore del Commodore 64 (pazzesco eh!!!??!). Infine facendo una media (tempo favorevole + tempo sfavorevole DIVISO 2) di entrambe i computer si nota che:

lo Spectrum in media impiega 127,5 secondi per eseguire il programma ed il Commodore 64 impiega 145,5 secondi per eseguire il programma... SOLO 18 secondi in piu'!!! Non dimentichiamoci che lo Z80 viaggia 3,6 volte piu' veloce del 6510!!!!

Riassumiamo:
con il programma favorevole allo spectrum e sfavorevole al c64 lo Z80 e' piu' veloce di 44 secondi
con il programma sfavorevole allo spectrum e favorevole al c64 il 6510 e' piu' veloce di 6 secondi
con entrambe i programmi favorevoli lo Z80 e' piu' veloce di 25 secondi rispetto al 6510
con entrambe i programmi sfavorevoli lo Z80 e' piu' veloce di 13 secondi rispetto al 6510

Considerando che lo Spectrum ha un clock a 3,5Mhz mentre il C64 "nemmeno" a 1 Mhz e' chiara la superiorita' del C64!!!!

Ma gli inganni non finiscono qua'!
Viene denigrato lo scarso ambiente basic del Commodore 64 in confronto a quello dello Spectrum..
E' vero lo spectrum ha molti piu' comandi basic del c64, ma quali sono le performances dei 2 interpreti?? Il dubbio mi e' venuto leggendo la gara, ad un certo punto viene digitato un listato basic e' i "concorrenti" commodore inseriscono un ciclo FOR - NEXT per creare una pausa (scatenando le risate dei concorrenti spectrum in quanto il c64 non dispone del comando PAUSE).. Sembra un bel punto a favore dello spectrum eh?? Ma proviamo a far eseguire questo semplice ciclo FOR-NEXT al c64:

FOR t=1 to 9000:NEXT

Il Commodore 64 impiega 10 secondi per eseguirlo, ma come si comporta lo Spectrum?? beh... impiegando BEN 39 secondi per eseguirlo!!! (Addirittura 29 secondi in piu' del C64!!!! e lo Spectrum ha lo Z80 cloccato a 3,5 MHz!!!!!! ) 

PROVARE PER CREDERE!!!!! 
 

A questo punto mi sono spinto leggermente piu' in la di un misero ciclo FOR-NEXT ed ho predisposto un piccolo programma in basic uguale per entrambe le macchine (o quasi) simile al programma precedente in linguaggio macchina. Si tratta di contare da 0 a 100 per 100 volte (incrementando 2 variabili).

 

Versione Commodore 64:

 

10 TI$="000000":A=0:B=0

20 A=A+1:IF A<100 THEN 20

30 B=B+1:A=0:IF B<100 THEN 20

40 PRINT TI$  

 

 

Versione Spectrum 48K

10 LET A=0 : LET B=0
20 LET A=A+1 : IF A<100 THEN GOTO 20
30 LET B=B+1 : LET A=0 : IF B<100 THEN GOTO 20

Come possiamo vedere i programmi sono praticamente identici, eccetto che il Commodore 64 si cronometra da solo, infatti nonostante il basic piu' "evoluto", lo Spectrum NON HA una variabile orologio che segna il tempo (presente invece nel misero basic del Commodore 64, variabile "TI$")
Quindi il tempo dello spectrum e' stato cronometrato a mano con i seguenti risultati:

Il Commodore 64 ha impiegato 84 secondi mentre lo Spectrum ha impiegato 125 secondi per eseguire il programma!

BEN 41 SECONDI IN PIU' !!!!!!! 


Alla faccia dei 3,5 MHz dello Z80!!!!!! 

Come potete vedere la velocita' del basic del Commodore 64 surclassa ABBONDANTEMENTE quella del basic più "evoluto", ma approssimativo, dello Spectrum.

A conferma ho eseguito un ultimo test con un semplicissimo programma identico per entrambe le macchine che sposta indietro di un byte un blocco di 5k di ram:

FOR T=10000 TO 15000:POKE T,PEEK(T+1):NEXT T

Con i seguenti risultati: 30 Secondi per il C64 e 69 secondi per lo Spectrum... Che aggiungere?? Ma andiamo avanti..

Anche sui giochini c'e' l'inganno del PEI!
Viene scelto dal PEI un gioco molto bello che cerca di ridurre al minimo i difetti dello Spectrum (soprattutto color clash e lentezza dello scroll) mentre viene scelto un pessimo gioco per C64: schermo fisso, niente scroll, molto banale.

Anche qua' l'inganno! Provate a dare un'occhiata alla schermata di gioco di Atic Atac per Spectrum e alla schermata di uno dei giochi piu' belli per C64; CREATURES :

 


Come al solito e' evidente che il confronto non e' alla pari, cos'ha omesso di fare il PEI? Confrontare 2 giochini uguali sia per spectrum che per c64.. Cosa che faro' io adesso con il gioco ZAXXON mostrandovi due schermate dello stesso gioco per Spectrum e Commodore 64:

 

 

Ormai si dovrebbe notare... TUTTI I GIOCHINI SPECTRUM sono riconoscibilissimi: sfondo quasi sempre nero, sprites monocolore schermate fisse o, in caso di scroll, ridotte.. Appaiono tutti uguali, a differenza dei Giochi Commodore 64: pieni di colore, sprites coloratissimi e movimenti fluidi, da giochi arcade!

 

MODO VIDEO, COLORI E COLOUR CLASH 

 

Come tutti sappiamo lo schermo dello Spectrum e' organizzato come bitmap pura, cioe i caratteri sullo schermo vengono disegnati pixel per pixel, il tutto avviene in maniera trasparente per l'utente finale. Il Commodore 64 anche lui ha la modalita' bitmap, ma ha pure un'altra modalita' di funzionamento: la modalita' testo.

 

Questa modalita', apparentemente inutile e' inesistente sullo Spectrum. In realta' e' molto utile per creare semplici giochi in Basic e L.M. lo schermo viene suddiviso in blocchi di 8x8 pixel gestibili indipendentemente, per esempio eseguendo un "POKE 1024,1" nell'angolo in alto a sinistra comparira' una "A".
Nello Spectrum invece l'area video e' organizzata in blocchi di 8x1 pixel per accendere il pixel in alto a sinistra dello schermo occorre eseguire un "POKE16384,128"

 

e per disegnare una "A"? occorrono 8 esecuzioni del comando "POKE"
D'altro canto per accendere un pixel nel Commodore 64 occorre abbandonare la modalita' testo ed entrare in modalita' BITMAP.
Ma veniamo alla pratica: supponiamo di voler creare un gioco dove il nostro personaggio e' uno sciatore che scende dalla collina e deve evitare gli alberi e raccogliere bonus.
Questo gioco puo' essere creato su Commodore 64 usando la sola modalita' testo CHE OCCUPA 2000 bytes di memoria (video+colore)
Sullo Spectrum questo gioco utilizzera' la sola ed unica modalita' BITMAP che occupa QUASI 7000 bytes (video+colore)
Nel Commodore 64 l'esecuzione del gioco e' SEMPLICISSIMA, con il comando POKE si creango gli alberi ed i bonus sull'ultima riga del video mentre sempre con POKE si crea il personaggio sulla prima riga del video (subito dopo aver fatto lo scroll in alto dello schermo). in questo modo si avra' l'illusione del movimento, e la collisione? Semplice con il comando PEEK si va a vedere cosa contiene la locazione di memoria di fronte al giocatore: se contiene uno spazio, nulla di fatto. Se contiene un bonus aumenta il punteggio ed infine se contiene un albero togli una vita.
La cosa si complica MOOOOLTO sullo Spectrum perche' non e' possibile effettuare una PEEK per capire che carattere c'e' in un'area di memoria. Occorrono una serie di comandi, oppure occorre sapere in che posizione sono gli alberi ed i bonus magari usando una matrice di variabili..
C'e' bisogno di continuare? Si!
Il lato positivo e' che sullo Spectrum non si e' legati alla griglia di 8x8 e quindi si puo' effettuare uno scroll verso l'alto di un pixel alla volta (usando RIGOROSAMENTE una routine in L.M.)
Ma aspettate, un registro del chip video del Commodore 64 permette lo scroll verticale pixel per pixel, per cui sul Commodore 64 possiamo effettuare lo scroll pixel per pixel DA BASIC!
 
L'utente Spectrum esperto ed attento fara' subito notare una cosa: usando lo scroll HARDWARE del Commodore 64 anche lo sciatore (il giocatore) subira' leffetto dello scroll, mentre nello Spectrum lo sciatore viene sempre disegnato alla solita altezza e quindi non subisce l'effetto dello scroll SOFTWARE. Questo e' verissimo! ma non scordiamoci le INFINITE POTENZIALITA' GRAFICHE del Commodore 64: invece di usare un "carattere" per disegnare lo sciatore potremmo usare un BELLISSIMO ed utilissimo SPRITE. lo sprite non e' legato allo scroll hardware e rimane nella sua posizione, lo sprite puo' essere mosso di un pixel alla volta in qualsiasi direzione utilizzando un unico comando. puo' essere rilevata la collisione tra sprite e memoria video sempre utilizzando un comando BASIC!
 
Ma attenzione non vorremo certo creare un gioco MONOCROMATICO vero? Per cui supponiamo 4 ostacoli e 3 bonus considerando che lo sfondo del gioco e' bianco (NEVE): 

Ostacoli - Albero (VERDE), Roccia (GRIGIO MEDIO), Tronco di albero sdraiato (MARRONE), Buca (GRIGIO SCURO)
Bonus -  Medaglia di bronzo (ARANCIONE), Medaglia d'argento (GRIGIO CHIARO) e infine Medaglia d'oro (GIALLA).
 
Siamo gia' nei guai prima di iniziare perche' ahime' lo Spectrum avra' si un bel colore VERDE ACCESO... Ma gli mancano L'ARANCIONE, I GRIGI ed IL MARRONE occorrera' quindi usare dei colori INAPPROPRIATI per la medaglia d'argento (boh.. CIANO dai) e quella di bronzo (e' rimasto il MAGENTA oppure il ROSSO.. mah!)
Per il grigio potremmo usare il "bianco spento".. ma cambiare l'attributo del primo piano significa cambiare l'attributo dello sfondo.. Per cui anche la neve risulterebbe "BIANCO SPENTA" in quella locazione di memoria, con il risultato finale di un unico "quadrato" a schermo di colore diverso!! QUINDI IN QUESTO PARTICOLARE CASO SCORDATEVI IL GRIGIO!
Vabbeh dai, caliamo un velo pietoso sui colori.
 
Veniamo allo scroll degli oggetti colorati; muovendo l'area di gioco a "blocchi" di 8x8 tutto fila liscio sia su Spectrum che su Commodore 64, con il gioco che sara' "SCATTOSO" in entrambe le versioni
 
Passiamo allo scroll piu' fluido e gradevole pixel per pixel, scrolleremo quindi una linea alla volta (con una bella routine L.M. per spectrum)
 
Ma ATTENZIONE ATTENZIONE ATTENZIONE!!!!!
 
La memoria colore dello Spectrum NON PUO' ESSERE SPOSTATA di un pixel alla volta ma A BLOCCHI DI 8x8 PIXEL! 
 
Che cosa comporta questo?
 
Semplice una volta che, per esempio, l'albero si sara' spostato in alto di 4 pixel, la sua meta' inferiore sara' in una cella di colore (originariamente VERDE) mentre l'altra' meta' superiore dell'albero sara' in un'altra cella di colore (non inizializzata per cui conterra' il valore 0: NERO).
In definitiva l'albero sara' per meta' NERO e per meta' VERDE: diamo il benvenuto al famosissimo COLOUR CLASH!
 
E nel Commodore 64? Problemi 0 in quanto lo scroll HARDWARE muove sia la grafica che IL COLORE!
 
In questo particolare caso si potrebbe ovviare al colour clash dello Spectrum colorando 2 aree di memoria dello stesso colore (l'area dove e' presente l'albero e l'area dove lo sara' in futuro).
 
Alla fine il gioco per Commodore 64 sara' composto da una manciata di linee basic, MENTRE QUELLO PER SPECTRUM SARA' BEN PIU' LUNGO E NECESSITERA' PURE DI UNA ROUTINE L.M.!!!!


Il modo testo del commodore 64 puo' essere abilitato alla modalita' multicolor: in questo caso la grigila sara' di 4x8 pixel ma ogni carattere potra' avere 4 colori (3 dei quali in comune ed 1 indipendente).
Lo Spectrum con la sua unica modalita' video puo' soltanto avere 2 colori indipendenti per ogni cella video..

Gli sprites HARDWARE del Commodore 64 poi sono COMPLETAMENTE INDIPENDENTI dalla modalita' video. Si possono, per esempio, avere sprites Hi-Res su schermo Multicolor, avere sprites Multicolor su schermo Hi-Res. Anche i colori degli sprites sono INDIPENDENTI dai colori su schermo. Si puo' per esempio avere uno Sprite Hi-Res verde mescolato a caratteri rossi su schermo Hi-Res, oppure avere uno sprite Multicolor con i suoi colori differenti dai colori dello schermo Multicolor.

Il rovescio della medaglia e' che si dimezza la risoluzione del Commodore 64 in quanto ogni singolo pixel e' di larghezza doppia in modalita' multicolor. Questa particolarita' viene definita GROSSO DIFETTO dagli utenti Spectrum. Ma sara' davvero un grosso difetto??? Vediamo adesso 2 immagini identiche dello stesso gioco: Turrican 2!

 

A sinistra c'e' la versione per Commodore 64 mentre a destra c'e' quella per Spectrum


A primo impatto la differenza e' subito visibile, nonostante i pixel a larghezza doppia l'immagine del Commodore 64 e' qualitativamente superiore. Sono visibilissimi anche gli effetti che hanno i 2 colori per cella 8x8 sullo Spectrum, la grafica, nonostante questa volta non sia monocromatica (allelujaaaa) e' quadrettosa.. Ma i colori sono pochi, e quindi abbiamo il terreno giallo e rosso, i muri blu e verdi (!!!) E il colour clash?? C'e' anche quello! non ci credete??? Mentre su Commodore 64 lo sprite del giocatore e' PERFETTAMENTE VISIBILE, che fine ha fatto il giocatore nella versione per Spectrum???? Semplice e' color "camaleonte"!

 

ALLA RICERCA DELLA MEMORIA PERDUTA

 
Ed eccoci arrivati ad un altro punto chiave: 64k o non 64k?
Gli utenti Spectrum chiedono sempre: "perche' se il Commodore 64 ha 64k di ram ne puo' usare soltanto 39K?" arrivando quindi a dubitare che il Commodore 64 abbia veramente 64k di memoria ram.
 
Il Commodore 64 HA 64k di memoria ram, punto!
 
La cosa che molti utenti Spectrum non riescono a capire e' che non tutti i 64k sono disponibili in AMBIENTE BASIC.
La stessa domanda la potremmo fare ad un utente Spectrum: "Come mai se lo spectrum ha 48k di ram, puo' usare soltanto 41612 bytes di ram? (circa 41k)"
 
Il basic del Commodore 64 ha disponibile per i propri programmi 38911 bytes di ram, ma che fine hanno fatto gli altri 26624 bytes di ram? Semplice, non sono "utilizzabili" per i programmi basic.
La CPU del Commodore 64, come la cpu dello Spectrum puo' gestire al massimo 64k di ram, lo Spectrum possiede 48k di ram e 16k di ROM in totale sono esattamente 64k di ram.
Il Commodore 64 possiede 64k di ram e 16k di rom (basic + kernel), 4k della rom caratteri e 4k di registri vari (Sid, Vic II,Cia, ecc) in totale sono 24k di "rom".
Ma attenzione se il Commodore 64 ha 64k di ram e 24k di rom, come puo' la sua CPU gestire 88K di memoria?
Con uno stratagemma: tramite i primi 2 indirizzi di memoria (0 e 1) e' possibile attivare e disattivare le varie rom. Con una rom disattivata la CPU vede la ram che stava "sotto" la rom.
Esempio: a cose normali l'area di memoria da $A000 a $BFFF e' occupata dalla rom basic, agendo sulle locazioni 0 e 1 si puo' disattivare la rom del basic ed al suo posto da $A000 a $BFFF compare la ram.
Ovviamente disattivando la rom del basic, non e' piu' possibile utilizzare il basic del Commodore 64, ma allora che senso ha? Semplice la memoria puo' comunque essere usata tranquillamente senza nessun problema da programmi in Linguaggio Macchina.
 
Facciamo una domanda agli utenti Spectrum: immaginando un programma misto basic e linguaggio macchina (per esempio per fare lo scroll dello schermo nel gioco che avevamo ipotizzato in precedenza) supponendo che la routine in linguaggio macchina occupi 4k di memoria ram, quanta memoria rimane disponibile per il programma basic?
 
C'e' una sola possibile risposta: 37516 bytes
 
Se adesso facciamo la stessa domanda agli utenti del Commodore 64, otterremo questa risposta:
 
38911 bytes
 
Si avete capito bene, la memoria disponibile per il basic non cambia, perche' il Commodore 64 ha 4k di ram, non disponibili per il basic, ma disponibili per i programmi in linguaggio macchina da $C000 a $CFFF.
 
E se invece avessimo bisogno di una routine in LM piu' sofisticata? Che magari invece di 4k ne occupa 12k per esempio?
La memoria disponibile per il basic dello Spectrum sara' 29324 bytes, mentre indovinate un po? Per il Commodore 64 saranno ancora disponibile per il basic 38911 bytes!
 
Ma com'e' possibile vi chiederete (ma soprattutto se lo chiederanno gli utenti Spectrum)?
 
E' veramente molto semplice: una volta che iniziamo ad utilizzare il Linguaggio Macchina non abbiamo piu' bisogno dell'interprete basic, che possiamo tranquillamente disattivare ottenendo cosi' 8k di memoria ram in piu' per il nostro programma in LM!! (da $A000 a $BFFF). Ci bastera', una volta terminato il programma LM e prima di ridare il controllo al programma in basic, riattivare la rom del BASIC.
 
La cosa importante e' che il contenuto della ram non va perso!
 
Con questa tecnica si puo' per esempio disattivare anche la rom del Kernel (da $E000 a $FFFF) ed ottenere cosi' altri 8k di ram per i nostri programmi in LM
 
I giochi piu' sofisticati disattivano completamente le rom, avendo cosi' a disposizione il massimo della memoria disponibile: 64K di ram
 
Per quanto riguarda lo Spectrum, non c'e' nessuna RAM sotto la ROM, che tra l'altro non puo' essere nemmeno disattivata!

 

MUSICA MAESTRO!
 
Purtroppo non e' possibile farvi "VEDERE" le differenze per cui mi limitero' a pubblicare 2 video: uno contenente le impressionanti musiche suonate dal potentissimo beeper dello Spectrum e l'altro invece le musiche prodotte dall'ormai conclamato superiore SID del Commodore 64. Ho selezionato due video dello stesso autore che ha fatto un bel montaggio, mettendo una schermata del gioco relativo alla musica che sta suonando, cosi' potrete pure godervi ottime schermate grafiche in multicolor del Commodore 64 e confrontarle con quelle clashate dello Spectrum!
 
 
 

 

VIDEOCONFRONTI!
Ed adesso un po di videoconfronti; lo stesso gioco confrontato su entrambe le macchine, sulla sinistra ci sono i giochi per ZX Spectrum 48k, mentre sulla destra i giochi per Commodore 64. Buona visione!
TERRA CRESTA (notare la dimensione dell'area di gioco su Spectrum e C64)
 
 
Spy vs Spy (anche i vecchi e semplici giochi a schermo fisso sono migliori!)

 Terminator 2 (Nonostante la schifezza generale del gioco, lo Spectrum riesce comunque a fare peggio! Al gioco  mancano 2 livelli: la fuga di Sarah dall'ospedale psichiatrico e il livello degli Swat contro il T800)

Myth (quando la conversione e' a "piacere" dei programmatori Spectrum)
 

 

Powerdrift (ma la tua auto di che colore e'? gialla o celeste? forse e' quella.. MONOTOCROMATICA)


Arkanoid II (tanto colour clash..)

 
Ghostbusters (meglio non aggiungere altro!)
 

 


Alla fine i fatti parlano chiaro: Il commodore 64 riesce ad emulare lo spectrum, lo spectrum ahime' non riesce ad emulare (e non ci riuscira' mai) un commodore 64... volete sapere perche'? semplice! Per lo stesso motivo per cui un PC intel I7 puo' emulare una consolle Nintendo mentre una consolle Nintendo non potra' MAI emulare un PC intel I7.... Meditate gente meditate!

Una curiosita': secondo esperti di marketing il blu evoca sicurezza, affidabilita' e serenita', inoltre i colori più usati dai 100 brand più popolari al mondo sono blu (nel 33% dei casi), rosso (29%), grigio o nero (28%) e giallo o oro (13%); il 95% delle grandi marche utilizza solo uno o due colori nel proprio logo.

Pensate bene all'ultima affermazione ed ai colori del logo COMMODORE: 2 colori Blu e Rosso (i piu' usati)

 


Inoltre la schermata di accensione del C64 e di quel bel Blu affidabilita' molto rassicurante :)

 

 

CONSIDERAZIONE PERSONALE
 
Con questo articolo non voglio riaccendere la "guerra" Spectrum vs Commodore, che e' legata al passato, dove ognuno poteva dire la sua, creando anche leggende metropolitane. Il mondo e' cambiato, adesso chiunque, anche un possessore di CPC464, navigando su Youtube puo' cercarsi da solo la verita'.. Questo articolo serve per confrontare le reali capacita' dei 2 computer, senza inventare personaggi vari e storie di fantasia. Il PEI "deride" e sminuisce pure il SID, considerato una delle invenzioni piu' rivoluzionarie, tutt'ora viene usato per comporre musica! Elogia il beeper dello Spectrum (un po come dire che lo speaker di un pc suonava meglio di una soundblaster) usato nelle cuffie degli anni 80 per poi sparire per sempre... Il C64 era "LA" macchina da gioco, e' inutile che dicono che era buono a fare soltanto "i giochini", intanto il Commodore 64 e' il COMPUTER PIU' VENDUTO AL MONDO DI SEMPRE (entrato nel guinnes dei primati). Inoltre se non se ne sono accorti, la quasi totalita' del software per lo Spectrum erano i cosiddetti "giochini", ma, essendo lo Spectrum una macchina economica (la sua architettura deriva direttamente dai vecchi zx 80 e 81) il risultato di questi giochini oggi e' ben visibile su Youtube, e puo' essere paragonato alle versioni per C64. Agli sfegatati possessori "convinti" dello Spectrum non gli rimane altro che ... ROSICARE!

Guardatevi questo bel videoconfronto, e mi raccomando alzate il volume cosi' potrete anche ASCOLTARE il tutt'ora insuperato BEEPER dello spectrum :D
 
CONCLUSIONE


A differenza di quell'articolo dello spectrumista sfegatato di cui parlavo all'inizio, che chiedeva di commentare tramite email e, stranamente, pubblicava solo email dove veniva elogiato lo Spectrum e diffamato il Commodore 64 (ma va?) qui potete commentare tutti e se i vostri post non contengono offese o parolaccie, verranno pubblicati. (si, anche quelli di parte!)

Qui sotto potete visualizzare tutti i commenti presenti nella vecchia pagina!



CIAO!


Commenti