[SNES] Chrono Trigger - Problemi con la Patch italiana dei SadNES cITy

Aperto da Andreab1987, Marzo 20, 2024, 16:05:09

Discussione precedente - Discussione successiva

Andreab1987

Salve, sono alcuni giorni che ho problemi con la patch di traduzione del gioco e non riesco a venirne a capo!
Ho provato sul sito dei SadNES ma, oltre a non aver trovato nessun post con lo stesso problema, la registrazione al Forum è disabilitata quindi provo a chiedere qui sperando di trovare una soluzione.

La patch non funziona e spero possiate illuminarmi.

L'emulatore che ho sempre usato è il vecchio ma comunque affidabile zsens, ma di recente sono passato a snes9x.

Non mi piace applicare le patch ai dump dei giochi, preferisco mettere la patch nella stessa cartella del gioco e lasciare che l'emulatore la carichi, Super Metroid funziona perfettamente infatti.

Ho provato anche a applicare la patch tramite Lunar IPS 1.03 e usando la versione CMD inclusa con il pacchetto su Windows XP senza alcun risultato.

L'emulatore risponde con questo messaggio in ogni situazione:
"CHRONO TRIGGER" [bad checksum] HiROM, 32Mbits, ROM+RAM+BAT, NTSC, SRAM:64Kbits, ID:ACTE, CRC32:5B518882
Provando a caricare il gioco senza la patch invece funziona:
"CHRONO TRIGGER" [checksum ok] HiROM, 32Mbits, ROM+RAM+BAT, NTSC, SRAM:64Kbits, ID:ACTE, CRC32:2D206BF7Ho pensato che magari il mio dump avesse qualche errore quindi sono andato a recuperare la ROM del gioco negli archivi del progetto "No-Intro" ma niente, stesso problema.

Cercando ogni possibile informazione su Google ho trovato una raccolta di ROM tradotte e all'interno c'era questo file: Chrono Trigger (USA) [T-It by SadNES cITy v1.2a].smc
Che poi mi sono fatto una "cultura" in merito e il formato SMC dovrebbe prevedere un Header, cosa che quella ROM non ha, quindi è di formato SFC in realtà

Provandolo sull'emulatore funziona:
"CHRONO TRIGGER" [checksum ok] HiROM, 32Mbits, ROM+RAM+BAT, NTSC, SRAM:64Kbits, ID:ACTE, CRC32:E1E9EDEDMa trattandosi di una ROM di origine e integrità CRC32 originale ignota ho preferito non tenerla.

Infine provando a cercare nuovi tool ho trovato Advanced SNES ROM Utility 1.1 che, oltre al controllo del checksum, la gestione dell'Header, ecc., ha anche funzione di applicare le patch IPS.
Tramite questo tool la patch non viene caricata in quanto viene indicata come non corretta per il gioco.
L'ho provato con Super Metroid e funziona perfettamente.

Ho eseguito le prove sia su "zsens" versione 1.51 che su "snes9x" versione 1.62.3 senza alcun risultato, ho provato anche "bsnes" versione 115 ma niente.

A questo punto non so più cosa pensare, spero possiate aiutarmi.

Alexandor

Ciao Andreab1987.
Partendo dal presupposto che la rom base con cui e' stata creata la patch e' dotata di header, senza addentrarmi nei particolari ti consiglio semplicemente di aggiungere l'header alla rom No-Intro - Chrono Trigger (USA).sfc(checksum CRC32 - 2D206BF7).
Per aggiungere un header fittizio, ti basta utilizzare il programma tush(non ha bisogno di essere installato) e poi applicare la patch.

Andreab1987

Ho fatto i test:
La ROM dotata di Header tramite Tush a cui è stata applicata la patch tramite Lunar IPS viene eseguita dall'emulatore con questo messsaggio:
"CHRONO TRIGGER" [bad checksum] HiROM, 32Mbits, ROM+RAM+BAT, NTSC, SRAM:64Kbits, ID:ACTE, CRC32:1BD38229Stessa cosa con la ROM dotata di Header ma con la patch applicata dall'emulatore durante l'esecuzione.

Ho provato a fixare il Checksum con Advanced SNES ROM Utility alla ROM a cui è stata applicata la patch sia a quella con l'Header che quella senza ottenendo questo messaggio:
"CHRONO TRIGGER" [checksum ok] HiROM, 32Mbits, ROM+RAM+BAT, NTSC, SRAM:64Kbits, ID:ACTE, CRC32:E1E9EDEDStesso CRC32 della ROM che ho trovato.

Tuttavia anche Advanced SNES ROM Utility è in grado di applicare un Header e la ROM, oltre ad avere lo stesso CRC32, funziona perfettamente.
Ma anche con l'Header la patch viene indicata come incompatibile.
LunarIPS non fa controlli, la applica senza problemi con e senza Header.

Nella pagina della traduzione vengono specificate le info della ROM utilizzate:
Nome della ROM in mio possesso: Chrono Trigger (U)(!).smc
CRC della ROM: 2D606BF7 [Fonte: Romcenter con GoodSNES]

Quindi se ha usato una ROM con un Header nelle istruzioni non lo ha mai specificato e se così fosse il CRC della ROM con un Header non può essere quello.

Poi c'è il dubbio: su Romcenter il CRC corretto della ROM è 2D206BF7 ma nella pagina della patch ne indica uno diverso per un singolo numero... ma una cosa del genere è impossibile che si verifichi anche con un minimo di cambiamento come la presenza di un Header, il CRC della ROM con Header messo da me ad esempio è 876718B1 quindi o ha scritto male lui o c'è un errore!
Come detto precedentemente se la ROM è di formato "smc" vuol dire che ha un Header, ma il CRC32 con valore 2D206BF7 è quello di una ROM senza Header, di formato "sfc".

A questo punto il mio problema: Chi mi assicura che la patch si sia applicata correttamente e a un certo punto del gioco non si corrompe tutto?

Alexandor

Visto che ti sei appassionato all'argomento, cerchero' di farti una panoramica della situazione.

.sfc sta per Super Famicom, cioe' l'estensione utilizzata nei sets No-Intro , il cui l'obiettivo principale è quello di raccogliere le collezioni piu' pure, complete e accurate, infatti non posseggono neanche l'header.

.smc sta per Super Magicom, che era uno dei primi dispositivi utilizzati per effettuare la copia di backup dei vari giochi SNES.
Le rom con questa estensione(la piu' comune nei bei tempi che furono) vengono utilizzate nel set GoodSNES( che fa parte del set globale chiamato "GoodSets"), che a differenza di No-Intro ha un obiettivo leggermente diverso, cioe' raccogliere il maggior numero possibile di rom conosciute in un unico set. Quelle ottime, quelle cattive, le rom con gli hack, le varie traduzioni ecc 
La maggior parte di questi sets che si trovano in rete, sono obsoleti e non aggiornati, quindi bisogna sempre fare attenzione .

La differenza tra la rom Chrono Trigger (U)(!).smc e la No-Intro - Chrono Trigger (USA).sfc?
Assolutamente nessuna, visto che togliendo l'header alla rom Chrono Trigger (U)(!).smc , si ottiene la stessa rom pura(ovviamente con lo stesso checksum CRC32 - 2D206BF7) della rom No-Intro.


Citazione di: Andreab1987 il Maggio 12, 2024, 10:54:30Ho fatto i test:
La ROM dotata di Header tramite Tush a cui è stata applicata la patch tramite Lunar IPS viene eseguita dall'emulatore con questo messsaggio:
"CHRONO TRIGGER" [bad checksum] HiROM, 32Mbits, ROM+RAM+BAT, NTSC, SRAM:64Kbits, ID:ACTE, CRC32:1BD38229Stessa cosa con la ROM dotata di Header ma con la patch applicata dall'emulatore durante l'esecuzione.

Tutto regolare.
Qualsiasi modifica a una rom ne modifica il checksum, quindi e' normale che possa spuntare  la scritta  "bad checksum" .
Non significa assolutamente che la rom patchata abbia dei problemi, infatti in questo caso la scritta indica semplicemente che il  checksum dopo la patch non corrisponde a quello della rom verificata/originale o a quello della rom patchata presente nel database dell'emulatore.
Partendo dal presupposto che l'header fittizio applicato da Tusch alla rom No-Intro differisce da quello originale(per quel che riguarda il risultato non cambia assolutamente nulla, ma ovviamente applicando  una patch a una rom con un header diverso, verra' fuori una rom con un checksum diverso), la rom dotata di header che all'epoca hanno utilizzato per creare la patch era esattamente "Chrono Trigger (U)(!).smc  CRC32    8A36ED76(se togli l'header,  ottieni ovviamente lo stesso checksum della rom no-intro), quindi se applichi la patch a quest'ultima, la scritta in questione non ti dovrebbe spuntare.
Se continua a spuntare, fregatene altamente, posso assicurarti che applicando la patch con  Lunar IPS alla rom  con rom No-Intro – "Chrono Trigger (USA).sfc(checksum CRC32 - 2D206BF7 ) + l'header fittizio aggiunto con tusch  " o con alla rom " Chrono Trigger (U)(!).smc  CRC32    8A36ED76" dotata di header, otterrai comunque una rom corretta e' perfettamente funzionante.
Non utilizzo da un bel po' le nuove versioni dell'emulatore Snes9X per Windows, ma posso assicurarti che nelle vecchie versioni per Windows quella scritta non spuntava e che nella versione Android che utilizzo tutt'ora con soddisfazione continua a non spuntare .



Ho provato a fixare il Checksum con Advanced SNES ROM Utility alla ROM a cui è stata applicata la patch sia a quella con l'Header che quella senza ottenendo questo messaggio:
"CHRONO TRIGGER" [checksum ok] HiROM, 32Mbits, ROM+RAM+BAT, NTSC, SRAM:64Kbits, ID:ACTE, CRC32:E1E9EDEDStesso CRC32 della ROM che ho trovato.

A come ho capito l'utility in questione non fa' altro che fixare/convertire la rom patchate manualmente per farle corrispondere a quelle del database "GoodSnes" .
Personalmente non mi sono mai fidato sia degli hack che delle rom tradotte presenti nel set GoodSNES.


Tuttavia anche Advanced SNES ROM Utility è in grado di applicare un Header e la ROM, oltre ad avere lo stesso CRC32, funziona perfettamente.
Ma anche con l'Header la patch viene indicata come incompatibile.
LunarIPS non fa controlli, la applica senza problemi con e senza Header.

Nella pagina della traduzione vengono specificate le info della ROM utilizzate:
Nome della ROM in mio possesso: Chrono Trigger (U)(!).smc
CRC della ROM: 2D606BF7 [Fonte: Romcenter con GoodSNES]

Quindi se ha usato una ROM con un Header nelle istruzioni non lo ha mai specificato e se così fosse il CRC della ROM con un Header non può essere quello.

Partendo dal presupposto che ai tempi l'utility piu' utilizzata dagli appassionati era Rom Hasher che specificava sia il ROM CRC32(checksum CRC32  della rom senza header) che il File CRC32(checksum CRC32  della rom completa di header) , hanno semplicemente indicato il primo.
Se ricordo bene, gli emulatori snes dell'epoca leggevano unicamente le  rom dotate di header, quindi utilizzare le rom dotate di header o aggiungerlo con le varie utility era la norma.



Poi c'è il dubbio: su Romcenter il CRC corretto della ROM è 2D206BF7 ma nella pagina della patch ne indica uno diverso per un singolo numero... ma una cosa del genere è impossibile che si verifichi anche con un minimo di cambiamento come la presenza di un Header, il CRC della ROM con Header messo da me ad esempio è 876718B1 quindi o ha scritto male lui o c'è un errore!
Come detto precedentemente se la ROM è di formato "smc" vuol dire che ha un Header, ma il CRC32 con valore 2D206BF7 è quello di una ROM senza Header, di formato "sfc".

Si tratta di un piccolo errore che sinceramente non avevo mai notato,  il CRC32 corretto della rom senza header e' ovviamente "2D206BF7".
La prova del nove?
Prova a cercare su google "chrono trigger  2D606BF7" e "chrono trigger 2D206BF7"
Nel primo caso troverai soltanto il sito dei mitici SadNES, nella seconda ricerca tantissimi risultati.
Tieni comunque presente che in rete sono presenti anche alcuni set GoodSNES(rom con estensioni .smc) senza header, quindi non e' un iperbole affermare che il progetto "GoodSets" sia una giungla confusionaria da esplorare con i piedi di piombo.




A questo punto il mio problema: Chi mi assicura che la patch si sia applicata correttamente e a un certo punto del gioco non si corrompe tutto?

Sia il sottoscritto che centinaia di appassionati che negli ultimi 20 anni hanno terminato piu' volte il gioco con soddisfazione :)
Se proprio vuoi essere ultra pignolo e nostalgico come il sottoscritto, puoi applicare la patch alla rom dotata di header che all'epoca i Sadnes hanno utilizzato come base per la traduzione, cioe'  "Chrono Trigger (U)(!).smc  CRC32    8A36ED76


Andreab1987

Ho capito!
Immaginavo che nelle vecchie versioni dell'emulatore il controllo CRC32 non veniva effettuato altrimenti penso avrebbe notato l'errore e potenzialmente corretto.

Tuttavia snes9x ignora l'header, infatti caricare la ROM con l'Header senza patch il log stdout.txt riporta questo:
Reading config file C:\...\snes9x\snes9x.conf.
Saving config file C:\...\snes9x\snes9x.conf
Found ROM file header (and ignored it).
Map_HiROMMap
"CHRONO TRIGGER" [checksum ok] HiROM, 32Mbits, ROM+RAM+BAT, NTSC, SRAM:64Kbits, ID:ACTE, CRC32:2D206BF7
Saving config file C:\...\snes9x\snes9x.conf
I "problemi" iniziano se si usano la traduzione:
Reading config file C:\...\snes9x\snes9x.conf.
Saving config file C:\...\snes9x\snes9x.conf
Found ROM file header (and ignored it).
Using IPS patch C:\...\snes9x\Patches\Chrono Trigger (U)(!).ips!
Map_HiROMMap
"CHRONO TRIGGER" [bad checksum] HiROM, 32Mbits, ROM+RAM+BAT, NTSC, SRAM:64Kbits, ID:ACTE, CRC32:1BD38229
Saving config file C:\...\snes9x\snes9x.conf
Identico alla ROM con la patch applicata con Lunar IPS:
Reading config file C:\...\snes9x\snes9x.conf.
Saving config file C:\...\snes9x\snes9x.conf
Found ROM file header (and ignored it).
Map_HiROMMap
"CHRONO TRIGGER" [bad checksum] HiROM, 32Mbits, ROM+RAM+BAT, NTSC, SRAM:64Kbits, ID:ACTE, CRC32:1BD38229
Saving config file C:\...\snes9x\snes9x.conf
In entrambi i casi il gioco si avvia.
Tutti i problemi erano dovuti all'assenza dell'Header.

A grandi linee ho capito come funziona Lunar IPS ma temevo che usando una ROM o Dump non identico a quello usato per la traduzione poteva fare danni, inoltre un mio amico mi ha passato una sua copia del gioco dotato di Header ma con CRC32 AEB60803, diverso da quello a cui l'Header l'ho applicato con Tusk o Advanced SNES ROM Utility che ha CRC32 876718B1 che a sua volta è diverso da quello indicato da te ora.
GoodSets l'ho tenuto in considerazioni in quanto fonte delle info del traduttore, io utilizzo No-Intro infatti.

CRC32 8A36ED76?
Uhm... da dove viene questa informazione? È in qualche Theader del loro forum?
Se è così non l'ho notato! L'ho girato praticamente tutto prima di aprire qui la discussione, giusto per evitare di fare una domanda a cui era già stata data una risposta.

Alla fine erano solo miei dubbi, niente di cui preoccuparsi.
Grazie.

Alexandor

Figurati :), l'importante e' che ti possa godere la traduzione in tutta serenita'.
Conosco la rom originale(dotata di header) usata come base per la traduzione da moltissimi anni, ma non ricordo piu' dove ho letto questa informazione. Considera che alcuni forum/portali legati all'emulazione, purtroppo sono scomparsi nei meandri del tempo.
Come hai potuto notare, i SadNES nella pagina ufficiale hanno semplicemente indicato il CRC32 della ROM
Considera che negli ultimi 20 anni, la rom Chrono Trigger (U)(!).smc 
File CRC32: 8A36ED76
ROM CRC32: 2D206BF7
e' sempre stata considerata la rom di riferimento, sia per le patch che per i vari hack stranieri.
Infatti se provi a cercare "8A36ED76" su google, troverai tantissime informazioni a riguardo.
Non perche' sia speciale, ma semplicemente perche' all'epoca oltre ad essere un ottima rom(infatti senza header e' stata certificata da No-Intro) era abbastanza comune.
All'epoca, se qualcuno aveva la rom senza header(2D206BF7), gli veniva semplicemente consigliato di aggiungerne uno fittizio(tanto un header vale l'altro) e applicare la patch in tutta serenita'.
Una volta aggiunta la patch alla rom dotata di header, volendo e' anche possibile togliere l'header con Tush visto che ai giorni nostri i vari emulatori non ne hanno bisogno per funzionare correttamente, ma si tratterebbe semplicemente di una pignoleria fine a se stessa.




Andreab1987

Grazie per le risposte.
Quindi fintato che ha un Header va bene, non è necessario che sia quello nello specifico.

Io però preferisco applicare la patch tramite l'emulatore piuttosto che applicarla con Lunar IPS, preferenza mia.

Grazie per l'aiuto!