Ready64 Forum
Commodore 64 => Commodore 64 & Ready64 => Topic aperto da: koseidon72 - 26 Agosto 2007, 10:08:01
-
Me lo chiedo da anni.
Gia dal lontano 1991, il primo emulatore spectrum, molto semplice e mal funzionante pero' consentiva di caricare e salvare degli snapshot.
Poi arrivo il c64s e con l'opzione freeze aggiunse questa feature.
Presto pero' questo formato freeze risultava incompatibile con i vari emulatori e lo stesso vale per il formato freeze del ccs64, incompatibile anche tra una release e l'altra dello stesso emulatore.
Ma e' davvero complicato realizzare uno standard di snapshot?
Si e' vero che esiste in fondo il t64, ma non e' proprio la stessa cosa e poi non tutti gli emulatori lo gestiscono sia in apertura che in registrazione, e poi e' comunque uno "snapshot" di un nastro.
-
Non è un thread sulla programmazione del C64 (e dire che l'abbiamo detto tante volte), sposto.
A parte l'evidente confusione tra snapshot dell'emulatore e immagine nastro, il tuo è il classico discorso da non-programmatore.
La ragione dell'incompatibilità dello snapshot tra emulatori diversi è semplicemente che ogni sviluppatore (o team di sviluppo) ha progettato il proprio formato di snapshot in maniera indipendente dagli altri e seguendo le proprie preferenze ed esigenze. Per quanto riguarda le incompatibilità tra versioni diverse di uno stesso emulatore, il discorso è complesso ma in linea di massima possiamo dire che, in effetti, problemi di questo genere potrebbero essere mitigati avendo un minimo di lungimiranza, prevedendo ad esempio di salvare nel file un "numero di versione" del formato (credo che il VICE salvi il proprio numero di versione) e altri espedienti del genere. La compatibilità all'indietro potrebbe quindi essere ottenuta (anche se non proprio "a costo zero" in termini di difficoltà di programmazione).
Si potrebbe pensare, in effetti, che conoscendo a fondo la macchina emulata (il C64) si potrebbe pervenire facilmente ad un formato "universale" e adottabile da tutti gli emulatori. La realtà dei fatti è che si riesce quasi sempre a trovare dettagli dove è possibile seguire due o più strade, e ciascuna strada ha i suoi pro e i suoi contro. La storia anche recente dell'informatica è piena di esempi di questo tipo: formati di file, protocolli di rete, ecc. In alcuni casi ad un certo punto sorge uno standard de facto, in altri la diatriba sui formati continua ad libitum...
Personalmente credo che una delle ragioni per cui non si sia pervenuti ad uno snapshot "standard" del C64 emulato sia che non se ne sente l'esigenza (almeno da parte di un numero significativo di persone). In linea di massima chi salva uno snapshot prevede di riprenderlo successivamente nello stesso emulatore, dato che gli utilizzi più diffusi credo siano la sospensione di una sessione di utilizzo e il debugging (di programmi emulati e dell'emulatore stesso).
L'eventualità di salvare uno snapshot ad es. di un demo in un emulatore "uno" e riprenderlo in un emulatore "due", a maggior ragione se ciò avviene proprio in un punto dove in uno dei due emulatori si manifestano errori di emulazione, darebbe luogo ad una moltiplicazione di problematiche, la quale dubito che gli sviluppatori abbiano interesse ad affrontare allo stato attuale delle cose.
-
Me lo chiedo da anni.
L'anno scorso ho provato qualche emulatore per C16 e uno di loro, mi pare fosse Minus4 (o al massimo Yape) aveva la possibilità di salvare in maniera istantanea lo stato del gioco sotto forma di un file .prg autonomo.
Forse tecnicamente è quello che volevi?
-
In questo caso non sarebbe sufficiente prendere una cartuccia con la funzione freeze, che sia supportata dall'emulatore di fiducia, e usare quella? :huh:
Sottolineo comunque che, considerando l'implementazione di una funzione che generi un .prg del tipo descritto, si esce dal problema dell'emulazione in senso stretto.
-
L'anno scorso ho provato qualche emulatore per C16 e uno di loro, mi pare fosse Minus4 (o al massimo Yape) aveva la possibilità di salvare in maniera istantanea lo stato del gioco sotto forma di un file .prg autonomo.
Forse tecnicamente è quello che volevi?
Non conosco l'emulatore che citi, ma ".prg" e' soltanto un'estensione nominale, il formato e la struttura del file generato puo' non avere nessuna relazione con l'estensione che il programmatore sceglie di assegnargli.
Nel vice per esempio e' stata scelta l'estensione .vsf, che anche questa e' direttamente eseguibile in emulazione. Avrebbero potuto chiamarla prg, jpg, mp3, avi (per assurdo) non avrebbe fatto differenza :)
-
Non conosco l'emulatore che citi, ma ".prg" e' soltanto un'estensione nominale, il formato e la struttura del file generato puo' non avere nessuna relazione con l'estensione che il programmatore sceglie di assegnargli.
Molto probabile; avrei dovuto fare una prova incrociata caricando il file ottenuto con un altro emulatore.
P.S.: prova fatta adesso, salvato prg con yape e provato con minus4, non sa che farsene! E' un "freeze" qualunque.
Ah, per Koseidon: a proposito di incompatibilità, per esempio, il freeze creato da ccs1 non va con ccs2, quindi l'incompatibilità esiste anche entro la stessa famiglia di emulatori.
-
e non è strano.
Capita che il team che sviluppa una nuova versione può voler cambiare struttura del file...possono esserci un milione di motivi che inducono a farlo.
dovrebbero preoccuparsi di incorporare dei moduli per importare i vecchi file (un po come fanno i nuovi word coi file generati con word95 =P ). Ovviamente questo è possibile solo se il vecchio file contiene tutte le informazioni che servono alla versione nuova per funzionare...o magari se non ci sono tutte, deve essere almeno in grado di generare in maniera opportuna quelle mancanti. Altrimenti c'è poco da fare...se non mantenere l'incompatibilita fra una versione e l'altra.
-
Ma e' davvero complicato realizzare uno standard di snapshot?
Anche tra gli emulatori zx c'e' il problema compatibilita' tra diversi formati di snapshot, esistono almeno 6 tipi di snapshot diversi, ma esistono anche convertitori da un formato all'altro ( fonte: http://linux.die.net/man/3/libspectrum (http://linux.die.net/man/3/libspectrum) )
Tornando in topic, uno snapshot inteso come salvataggio dello stato dell'emulatore - diversamente dal freeze di una cartuccia tipo AR che contiene solo la ram e l'I/O del c64 - varia a seconda dell'hardware emulato e collegato in quel momento, compresa l'immagine del floppy inserito, della ram nelle espansioni di memoria tipo REU, della cartuccia/espansione inserita etc., quindi non essendo tutti gli emulatori identici e non emulando gli stessi HW e' quasi impossibile adattare uno snapshot fatto da Vice per poterlo fare andare in CCS e viceversa, ed e' gia' tanto che uno snapshot fatto in una versione N funzioni anche nella versione N+1 dello stesso emulatore, come e' vero che se si prova a caricare lo snap nella versione N-1 molto probabilmente non verrebbe accettato o causerebbe un crash.
Si potrebbe fare un convertitore estrapolando parte dei dati nello snap, solo considerando la ram del c64, del 1541 se presente, e poco altro, ma mi chiedo a che pro, visto l'uso di uno snapshot che e' SOLO quello di salvare una partita per poi riprenderla successivamente e non certo quello di fare un "backup" di un programma originale portandolo da nastro a disco, come potrebbe essere facendo un freeze con una cart tipo AR.
-
Determinati programmi non partivano se si accorgevano che era collegata una cartuccia al c64.
Insisto nel dire che sarebbe utilissimo avere un formato per salvare lo stato della memoria.
Anche lo zx ha emulatori che non implementano le stesse caratteristiche eppure lo z80 e' compatibile con tutti gli emulatori.
Quindi se veramente lo si volesse si potrebbe farlo senza problemi.
Io purtroppo mi devo escludere non intendendomi di programmazione, ma ho solo gettato la palla...
;)
-
Insisto nel dire che sarebbe utilissimo avere un formato per salvare lo stato della memoria.
Be', secondo me abbiamo illustrato abbastanza bene perché ogni emulatore utilizzi un proprio formato per lo snapshot, e non vedo di che cosa si possa sentire la mancanza, utilizzando uno qualsiasi degli emulatori "mainstream" di oggi.
A questo punto, sospettando il malinteso totale, ti inviterei a scriverci un esempio pratico di quello che vorresti fare.
-
semplice.. salvare una partita di un gioco nel punto in cui sono arrivato senza fare uso di cartucce varie che spesso sono escluse dal gioco stesso.
Il formato freeze in un formato compatibile nei vari emulatori e non ditemi che non e' possibile perche' come ripeto e' stato fatto per lo spectrum che come ripeto ancora ha vari emulatori con tantissimi attributi emulati e non in modi diversi tra loro (eppure li la compatibilita' esiste nel formato z80)
-
semplice.. salvare una partita di un gioco nel punto in cui sono arrivato senza fare uso di cartucce varie che spesso sono escluse dal gioco stesso.
Qualche titolo in cui non ti va? Non sono tantissimi che si bloccano se presente una cart, ne so qualcosa.
Il formato freeze in un formato compatibile nei vari emulatori
Questo implica dover far parlare tra loro i vari programmatori dei vari emulatori, non basta inventare un nuovo formato.
e non ditemi che non e' possibile perche' come ripeto e' stato fatto per lo spectrum
Qua potrei aggiungere un bel chissenefrega :P Quella e' un'altra realta'.
Come ti ho gia' detto esistono diversi tipi di snapshot per zx e esistono dei CONVERTITORI, perche' non tutti gli emulatori supportano tutti i tipi.
eppure li la compatibilita' esiste nel formato z80
Frase senza alcun senso. Si sono messi d'accordo PRIMA di fare l'emulatore probabilmente. E comunque devi ancora dimostrare il perche' sarebbe utile uno snapshot per passare da un emulatore all'altro. Per me non ha senso.
-
@koseidon72
Continuo a non capire: quello che dici tu (salvare una partita in un punto del gioco senza fare uso di cartucce) lo puoi fare senza alcun problema, a patto di ricaricare poi la partita nello stesso emulatore.
Finché a salvare e a riprendere una partita sei tu, per conto tuo, non vedo ragioni per cui tu debba cambiare emulatore nel bel mezzo del gioco.
Se si tratta di "condividere un salvataggio con qualcuno" basta che vi mettiate d'accordo sull'emulatore utilizzato (pubblicità progresso: utilizzate il VICE in quanto multi-piattaforma).
A meno che tu non riesca a chiudere a chiave in una stanza Per Håkan Sundell, David Horrocks e il VICE team finché non si mettono d'accordo su un formato... io ritengo semplicemente che non ci sia abbastanza richiesta o interesse per una funzionalità del genere perché, sponte loro, decidano di muoversi in questo senso.
-
Ma perche' girate intorno al problema?
Quello che chiedevo..
E' inconcepibile la difficolta' che si cerca di addurre come scusa per non creare uno standard di snapshot per c64.
E' utile anche perche' se e' stato fatto per spectrum e TUTTI gli emulatori lo usano (z80) e sono compatibili (e non si sono "parlati" tra di loro perche' qualcuno e' uscito addirittura 15 anni fa oramai..) allora un utilita' ci sara'.
Io voglio salvarmi la partita e giocarla fra 5 anni su un nuovo emulatore piu' perfezionato e perche' mai devo ricaricarne uno obsoleto solo perche' e' compatibile con il mio snapshot?
Lo trovo ridicolo...
Credo che il problema di tutto e' il disinteresse per la cosa e quindi in 15 anni di emulatori non e' mai stato implementato un formato standard di snapshot per c64.
Cmq chiudo qui perche' non ho altro da scrivere e spero che ora avete capito cio' che sto tentando di dire da qualche giorno.
:doh: :lol:
-
E' inconcepibile la difficolta' che si cerca di addurre come scusa per non creare uno standard di snapshot per c64.
Tutto e' facile per chi non deve farlo eh?
Se non esiste, significa che nessuno e' interessato a quella tua necessita'.
Se la cosa per te e' cosi' interessante non resta che rimboccarti le maniche e farlo da te, anche solo sulla carta, ben documentato, e poi proporlo ai vari team di sviluppo, specialmente il viceteam e' abbastanza propenso all'accettare le patch se gia' fatte.
-
E' inconcepibile la difficolta' che si cerca di addurre come scusa per non creare uno standard di snapshot per c64.
Bene, allora visto che è semplice cominciamo subito.
Secondo me è bene stabilire da subito un formato "contenitore" per dati binari che possiamo considerare arbitrari, con buona approssimazione. Dentro il "contenitore" poi ci possiamo mettere quello che serve, che sia il dump della memoria, lo stato della CPU e dei chip custom, le immagini disco, cassetta e cartuccia che abbiamo collegato. Teniamo a mente che in un dato momento i drive emulati possono essere in numero diverso, e di modelli diversi per gli emulatori che li supportano, e anche le immagini possono essere di formati diversi. Ogni drive ha una sua RAM e un suo processore di cui dobbiamo ricordare lo stato. Io direi che abbiamo tutti gli elementi per escludere un formato a dimensione "fissa". I confini tra le parti dello snapshot non saranno perciò determinati dall'offset rispetto all'inizio del file. Dobbiamo stabilire dei delimitatori e decidere se memorizzare la dimensione di ogni parte o usare l'espediente del padding per distinguere i casi fortuiti in cui all'interno dei dati arbitrari càpita che si trovino sequenze di byte uguali a quelle che abbiamo scelto come delimitatori.
Naturalmente, io parlo di inventare un formato "contenitore", ma non ho nulla in contrario ad adottare un formato "contenitore" esistente, se mi si dimostra che è adatto al nostro scopo.
A proposito, iniziamo a stabilire come regolarci per alcuni problemi. Tu a cosa sei più favorevole, ad includere un dump del kernal dentro il nostro contenitore o a salvare un'indicazione di quale versione stiamo utilizzando? Ho visto che il VICE ricopia la memoria colore da una parte facendo lo snapshot, tu hai idea di perché non sia sufficiente ricordarsi "dove" sia nella RAM del C64? Sai, no, nel caso in cui noi seguiamo quest'altra strada dobbiamo poi convincere il VICE team ad implementare il caricamento dello snapshot nel "nostro" modo e penso che si aspettino da noi che gli spieghiamo bene perché dovrebbero farlo.
Bene, io la palla l'ho lanciata, ora aspetto proposte concrete...
Io voglio salvarmi la partita e giocarla fra 5 anni su un nuovo emulatore piu' perfezionato e perche' mai devo ricaricarne uno obsoleto solo perche' e' compatibile con il mio snapshot?
Bontà tua! Se la tua preoccupazione per i prossimi 5 anni è poter sospendere una partita oggi e riprenderla fra 5 anni (certo che ti ricorderai a che punto eri arrivato), sei un uomo fortunato.
Lo trovo ridicolo...
Io trovo ridicola la tua esigenza, ma forza! È il bello della democrazia :)
Credo che il problema di tutto e' il disinteresse per la cosa
Io l'ho detto nella prima risposta, non essendo utile a nessuno, nessuno si è sentito incentivato a farlo. Fino ad ora! :martello:
-
A me questo problema sembra un non-problema.
Se diverse versioni di CCS64 salvano gli snapshot in modi incompatibili, allora lo sviluppatore di CCS64 sta sbagliando. Probabilmente, gi si dovrebbe almeno chiedere la "backwards compatibility", cioè che le versioni nuove leggano anche i formati vecchi (il viceversa è chiaramente impossibile).
La compatibilità tra diversi emulatori è così necessaria? (a me non sembra) Se sì, si manda una richiesta allo sviluppatore di CCS64 di supportare il .vsf di VICE, e, viceversa, agli sviluppatori di VICE di supportare il formato (O, per meglio dire, i formati) di CCS64. O si modifica VICE direttamente, visto che è open source, a patto che il/i formato/i di CC64 sia/no documentato/i. Se esistano altri formati non so, ma, in caso affermativo, supportarli in VICE è questione di scrivere il codice che li legga.
Il formato .vsf usato da VICE è documentato alla pagina http://www.unusedino.de/ec64/technical/formats/vice_frz.html (http://www.unusedino.de/ec64/technical/formats/vice_frz.html) . E' piuttosto complicato, visto che salva lo stato della CPU, della memoria, della ROM, del chip grafico... E questa dovrebbe essere una risposta alla domanda originaria: sì, è complicato, perché uno snapshot è una cosa complicata.
-
Ripeto si sono fatti passi da gigante nel campo dell'emulazione.
E' piu' complicato scrivere da zero un emulatore che implementare uno snapshot dello stato di memoria che sia compatibile tra gli emulatori.
E quanti emulatori sono nati?
Devo per forza citare ancora per l'ennesima volta lo spectrum
Allora secondo voi il formato z80 non ha senso di esistere?
Ma scherziamo?
Ditelo a quelle migliaia di persone che la pensono diversamente e ai programmatori che da 15 anni ci hanno studiato per crearlo?
Non e' utile?
Chiedetelo sempre a loro e poi ne riparliamo?
E lo stesso vale per il c64
Io non sono un programmatore ma mi scocciano le risposte superficiali del tipo
Non serve a nulla, solo a te ecc. ecc...
Diciamo che ci sara' senza dubbio una certa difficolta', ma come in ogni cosa questo vale sempre.
Fab mi pare che ha capito il senso del mio messaggio..
;)
-
Io non sono un programmatore ma mi scocciano le risposte superficiali del tipo
Non serve a nulla, solo a te ecc. ecc...
Non abbiamo fatto altro che illustrarti alcune delle ragioni storiche per le quali il formato "universale" per il C64 non è nato.
Chiariamo una cosa una volta per tutte: a parte le opinioni sull'utilità reale di quello che chiedi, quando ti diciamo frasi sulla falsariga di "non serve a nulla", il succo del discorso è lo stesso: le ragioni sono storiche, finora né gli sviluppatori né un numero sufficiente di utenti ha ritenuto che il gioco valesse la candela.
Il discorso completo sulla storia degli emulatori C64 sarebbe lungo e non ritengo di essere la persona più adatta a farlo, quindi passo, ma ci tenevo a sottolineare quanto espresso sopra.
Fab mi pare che ha capito il senso del mio messaggio..
Ma tu non dimostri di aver capito il senso del suo, infatti continui a lamentarti di obiezioni "superficiali" degli altri, mentre il senso del messaggio di fab si può riassumere con:
1) la mancanza di un formato universale non è poi un problema di grande entità
2) se a te realmente serve un formato universale, una cosa più intelligente da farsi è scrivere a Per Håkan Sundell chiedendogli di supportare il VSF, piuttosto che piagnucolare.
-
Penso di aver compreso la questione che tu poni ma non condivido una reale necessità di adottare una versione "unificata" degli snapshot. Senza volerti offendere penso che la tua richiesta, per quanto ben argomentata, rimanga nel confino dell' "utilitaristico" perché non sono altri ad interessarsi della diatriba sul formato. Me l'ha suggerito Google in un primo (http://www.google.it/search?source=ig&hl=it&q=common+c64+snapshot+format&btnG=Cerca+con+Google&meta=) e secondo (http://www.google.it/search?hl=it&q=ok+dude.+I+wanna+know+why+the+fucking+programmers+of+vice+and+ccs+did+not+get+in+touch+to+solve+the+nasty+thing+of+common+c64+snapshot+image&btnG=Cerca&meta=) round.
Personalmente con il commodore, leggi con l'emulatore del commodore, non vado oltre ad un sessione con questo o quel gioco ma penso sia lampante il fatto che avere uno standard per il "salvataggio" dello stato del gioco sia qualcosa di tremendamente macchinoso. Oltre ai motivi elencati da eregil volevo farti notare che IMHO anche se esistesse un formato comune ci sarebbero alcuni ostacoli difficili da superare. Poniamo che Vice supporta l'hardware X che un altro emulatore non supporta. Che fai? Costringi chi sta dietro a Vice di togliere il supporto a detto hardware oppure imponi a tutti coloro che, invece, non lo supportano di darsi da fare?
Andando clamorosamente OT potrei citare tante situazioni per le quali ci sono 2+n prodotti che fanno sostanzialmente la stessa cosa. Un webmaster potrebbe lamentare il fatto che SMF, PhpBB, Invision non hanno la stessa struttura del database nonostante si parla sempre di topic, utenti, post e statistiche. Un tracker doveva indignarsi di fronte ai differenti formati di modulo (s3m, xm, it, mod)? Io che scrivo con OpenOffice mi dovrei arrabbiare con il mio collega che invece usa Microsoft Office ed imprecare? (Questo lo faccio!)
Non è che lo standard non serve. Quando una cosa è *realmente* utile allora si che si cerca uno standard. Il C/C++ è uno standard, con un enorme sforzo di fantasia potremmo perfino definire uno standard il BASIC. Potrebbe essere una divagazione pensare a Java come uno standard e vedere se la sua "liberazione" dal guscio del software proprietario farà di questo linguaggio diversi figli che non si parlano tra loro.
Ok, sto divagando. Ma questa è la mia idea! Preferisco un bugfix che fa partire un demo che altro. Tenendo conto che, comunque, gioco grazie al lavoro di altre persone non mi lamento!
[...]e poi proporlo ai vari team di sviluppo, specialmente il viceteam e' abbastanza propenso all'accettare le patch se gia' fatte.
Davvero?
http://ready64.org/smf/index.php?topic=1644.0
:-)
-
Andando clamorosamente OT potrei citare tante situazioni per le quali ci sono 2+n prodotti che fanno sostanzialmente la stessa cosa. Un webmaster potrebbe lamentare il fatto che SMF, PhpBB, Invision non hanno la stessa struttura del database [...] Non è che lo standard non serve. Quando una cosa è *realmente* utile allora si che si cerca uno standard
Andrew Tanenbaum (http://en.wikipedia.org/wiki/Andrew_S._Tanenbaum) ha detto "The nice thing about standards is that you have so many to choose from." (Computer Networks, 2nd ed, p.254)