Newsgroup: it.comp.software.emulatori
Titolo: Aggiornamento hi scores.

Scusate il titolo, non montatevi la testa...
Stavo notando che Crazy Rally non salvava i record nonostante fosse 
supportato...
Ho giochicchiato un po' con un debugger e ora va.
Se a qualcuno interssa i valori corretti sono questi:
;*******holeland.c (crazy rally)
crzrally:
crzrallg:  ;******Crazy Rally (Gecas license)
crzralla:
0:c000:38:00:00
da sostituire a quelli gia presenti nell hiscore.dat
testato con crzrally.zip ma presumo funzioni anche con i 2 cloni.
Tra l'altro una cosa buffa...
la struttura dell hiscore è la seguente:
9 gruppi di 3 bytes per i punteggi
9 gruppi di 3 bytes per i nomi
e 2 bytes di checksum
Quando la macchina si avvia i record sono tutti a 000
Se per un qualsiasi motivo all avvio il checksum non corrisponde.
Allora carica i record di default.
Questo non avviene mai a meno che non si carichino "hiscore fasulli"
Quale sarà la causa?
-Mame lame che non emula alla perfezione la macchina.
-Programmatore del gioco stupido che ha fatto una parte di codice che non 
serve a nulla
-Barbatrucco del mame team per scassare le balle a chi usa gli hiscores?
Qualcuno ha visto in giro un cabinato di crazy rally per controllare come 
funziona l'originale? 


Non ho mai visto Crazy Rally, ma propendo per quest'ultima opzione.
-- 
Il MAME Team sta facendo *CAZZATE* (Massi cadenti)
Per una volta sono d'accordo con DM. Incredibile. (Zappa)

Quale sarà la causa?
I controlli vengono fatti.
Il MAME dovrebbe caricare i record *dopo* il checksum delle rom da
parte del gioco altrimenti il checksum fallisce perché di fatto hai
modificato con i nuovi punteggi. Questo vale per tutti i giochi.
Poi ci sono quelli che partono nonostante il checksum errato e quelli
che non partono e rimangono piantati lì avvisandoti che una o più rom
sono corrotte.

 Il MAME dovrebbe caricare i record *dopo* il checksum delle rom
No non sto parlando del checksum della rom.
Ma dell area di memoria dove stanno i record.
In pratica viene caricata la rom e parte l'esecuzione.
C'è una piccola parte di ram 56 bytes che contiene i record.
sono 54 bytes per i nomi e i punteggi e 2 aggiuntivi per il checksum dei 
punteggi.
Alla partenza la ram è tutta a 0 e tutti i punteggi sono a 0, di conseguenza 
anche il cheksum è 0 e tutto fila liscio.
Se altero una di queste caselle di ram (con il debugger) e resetto il gioco 
con F3 allora compaiono i record di default.
Me ne sono accorto perchè prima il file hiscore.dat salvava solo le prime 54 
locazioni.
E tra l'altro non le caricava perchè nella 54 locazione ci sarebbe dovuto 
essere il valore 41H e invece c'era 0.
Mettendo il controllo su 0 e non su 41h i record venivano caricati ma 
immediatamente sostituiti da quelli di default perchè il checksum della 
locazion 55 e 56 non coincidevano.
La cosa buffa è che il file hiscore.dat il valore che ci si aspetta nella 
locazione 54 è 41H cioè la lettera A che è guarda caso la lettera finale del 
nome JPA degli hiscore di default...
Questo mi fa pensare che una volta venissero caricati gli hiscore di 
default!
Mentre ora non vengono caricati mai. A meno che uno non sputtani il checksum 
con un debugger ma è una cosa che da sola non succede mai!
Mah