Tekken3 EUR sostituire il video censurato di Anna con quello dell'ISO giapponese

Aperto da Halfshadow, Giugno 25, 2015, 21:21:46

Discussione precedente - Discussione successiva

Halfshadow

Salve, dovreste sapere che le versioni americane ed europee di Tekken 3 hanno il video finale di Anna censurato. Non so se è già stato fatto, ma volevo provare a rimettere le cose a posto. Purtroppo la ISO di Tekken 3 non ha dei veri e propri file STR ma un file XAS, presumo siano lì i file STR. Avevo provato a sostituire il file XAS con quello giapponese (ma comunque non sarebbe la migliore cosa, perché alcuni video hanno dei sottotitoli che nella ISO giapponese sono infatti in giapponese) ma non funziona, i video non si vedono per nulla facendo quella sostituzione. C'è un modo per sostituire con successo solo il video di Nina? Tra parentesi il video di Nina non ha alcun sottotitolo quindi quello originale giapponese sarebbe perfetto.

Phoenix

Ti conviene usare jpsxdec per cercare il video specifico dentro la iso, estrarlo e reinserirlo con lo stesso programma nell'altra iso.
Questo sempre supponendo che il video non duri più di quello che vuoi sostituire.
Phoenix
****************
membro di SadNES cITy
I gruppo italiano di traduzione ROM
http://www.sadnescity.it
*****************************

Halfshadow

Sì dura di più, dovrebbero esserci intorno ai 4 MB di differenza... C'è qualche speranza che nella ISO europea sia stato messo per ultimo? Altrimenti come si può fare? Inoltre mi viene in mente una cosa, dovrebbe essere contenuto nell'enorme file .XAS e secondo i settori LBA non è l'ultimo file della ISO. Anche se fosse l'ultimo video del file XAS c'è il pericolo che sovrascriva altri settori LBA? Al limite potrei ricreare la ISO da 0 con i files dopo la modifica?

-EDIT- Purtroppo no, è il file 067 contenuto all'interno del file XAS. In ogni caso non so come usare il programma per provare a reinserire quello giapponese, sono riuscito solamente ad estrarli.

Nella versione giapponese invece è il numero 057 comunque il programma me li estrae in AVI, è normale? È il loro formato vero e proprio?

Sorakairi

Sì, dovresti ricreare la ISO da zero, se ne hai la possibilità.
Ancor prima, però, devi modificare manualmente l'archivio in cui è contenuto il filmato, prestando attenzione ad eventuali valori come size del package, puntatori a file e relative dimensioni. Se fornisci maggiori informazioni, scaglionando i dati della ISO, è possibile che si possano fornire degli aiuti più mirati.

EDIT: Evidentemente è il tool che utilizzi a convertirli in .avi, perché non è quello il formato nativo della PS1.
          Se ci mandi un campione di 4/5 MB dell'archivio .XAS in privato, iniziamo a farci un'idea di cosa fare.

Halfshadow

Adesso sto provando utilizzando il tool di Gemini (XtrActor .NET) a sostituirlo. Il problema è che è più breve, ma allungherò il BIN con un editor esadecimale, almeno il file XAS verrà più grande come dovrebbe essere e poi vedremo se i video successivi a quello verranno caricati correttamente oppure no, modificare artificialmente il BIN con l'editor esadecimale porta i settori LBA a cambiare automaticamente oppure la ISO diventa danneggiata? Boh, intanto provo, dopo semmai vi faccio vedere un campioncino, intanto estraggo i video incrimati, grazie al programma che mi aveva detto Phoenix sono riuscito a scoprire quali sono i settori LBA dove si trovano.

-EDIT- Funziona tutto in maniera confusa, dopo quella modifica e soprattutto non c'è verso di sapere dove realmente inizia e dove realmente termina, infatti mi aggiunge persino un pezzettino di un video successivo della ISO giapponese che in teoria, avendo seguito i settori LBA che mi ha fornito jpsxdec non dovrebbe esserci. Di quali informazioni avete bisogno per darmi una mano? Come si fa a scaglionare i dati della ISO?

Phoenix

Il problema è che il codice di riproduzione degli STR (che è al 99% basato sul sorgente di esempio dell'SDK ufficiale) ha bisogno di due parametri essenziali: l'lBA in cui si trova il video, e il numero di frame da riprodurre.
Anche se riuscissi a reinserire il video, dovresti cmq trovare dove il gioco passa il numero di frame alla routine di riproduzione e cambiare quel valore con il nuovo numero di frame.

Qui, mi dispiace dirlo, ma qualche conoscenza di assembly, è richiesta.
Phoenix
****************
membro di SadNES cITy
I gruppo italiano di traduzione ROM
http://www.sadnescity.it
*****************************

Halfshadow

Allora adesso che si fa? Considerate che Tekken 3 è un gioco molto amato penso che questa MOD piacerebbe davvero a molti. Se è necessario l'ASM a questo punto farei un file STR distinto da inserire nella ISO senza quindi andare ad intaccare gli altri settori LBA e dirottare la lettura di quel video verso quel file, se è possibile.

-EDIT- In ogni caso per il momento ho estratto il finale giapponese in formato STR rispettando la lunghezza multipla di 2048 ed infatti corrisponde perfettamente perché al byte successivo sarebbe iniziata la struttura del video successivo.

Phoenix

Se vuoi aggiungere il video in un'altra locazione della ISO allora quello che dovrai fare sarà aggiungere spazio in fondo alla ISO, inserire l'STR con l'xtractor di gemini all'LBA desiderato, e infine, volente o nolente, dovrai cercare dove il gioco memorizza l'LBA e il numero di frame di quel filmato, e cambiarli con i nuovi.
Se hai fortuna, questi dati li riesci a trovare dentro l'eseguibile di gioco. Ma se sono specificati via codice durante la chiamata della routine, l'hack assembly è inevitabile.
In ogni caso, trovare questa routine non è difficile. La routine di riproduzione richiede l'indirizzo di settore in formato min:sec:frame. Per convertire l'lBA usa una funzione della SDK che puoi trovare facilmente. Mi sembra si chiami CdToLoc, o una cosa del genere. Puoi aprire l'eseguibile di gioco con IDA (con apposito plugin per PSX) e cercare quali parti di codice richiamano CdToLoc. All'80%, vicino al codice che richiama CdToLoc, troverai anche la chiamata alla routine di riproduzione.

-EDIT- Ho verificato, si chiama CdIntToPos.
Phoenix
****************
membro di SadNES cITy
I gruppo italiano di traduzione ROM
http://www.sadnescity.it
*****************************

Halfshadow

Domani mi ci metto d'impegno e provo. Ma come si fa ad inserire un file aggiuntivo dentro una ISO già esistente? Perché CDmage non lo fa, se provo a ricreare la ISO con PS2gen poi inserendo i file estratti con CDMAGE (che hanno i sottocanali) dopo non corrispondono i settori LBA perché a quanto pare i file estratti con CDmage sono più grandi e quindi i settori LBA dei file successivi non corrispondono.Se estraggo i file con altri programmi invece sono più piccoli e non comprendono i sottocanali. Cosa dovrei fare? Devo solo aggiungere un file di 15 MB, vorrei lasciare inalterati i settori dei file già esistenti, tanto a quello che mi hai detto c'è da cambiare il riferimento dei settori LBA della ISO per fargli caricare un altro video ed il settore LBA del video aggiunto comunque sarebbe sempre a 6 cifre, come quello che già utilizza. Quindi sarebbe bene aggiungerlo unicamente.

Phoenix

Quello di cui stai parlando tu è l'aggiornamento della TOC della ISO. Cioè quei settori della ISO che descrivono i nomi dei file al suo interno, la loro posizione (LBA) e dimensione.

Molto probabilmente, a te non servirà farlo. Tu devi solo aggiungere dello spazio (byte vuoti) in fondo alla iso, e usare xtractor .net per inserire l'STR a partire dal settore che punta allo spazio nuovo.

Poi, dovrai modificare i parametri passati alla routine di riproduzione video, cambiando l'LBA e il numero di frame. Il fatto che il nuovo STR non sarà visibile all'interno della ISO è assolutamente irrilevante. La TOC serve solo a visaulizzare i file nella ISO. Ma il riproduttore video del gioco, molto probabilmente non ne fa uso.

Dovrai prima accertarti di questo.
Phoenix
****************
membro di SadNES cITy
I gruppo italiano di traduzione ROM
http://www.sadnescity.it
*****************************

Halfshadow

Aggiungere direttamente l'STR con l'editor esadecimale potrebbe comunque andar bene? Alla fine i byte sono quelli, comunque mal che vada non è un grosso problema. A proposito, ma poi come faccio a sapere qual è il settore LBA dove vado ad aggiungere il file? L'editor esadecimale mi fornisce unicamente informazioni riguardo all'offset. Comunque penso che sarebbe meglio aggiornare anche la TOC, tu sai dirmi come si fa?

-EDIT-
Da quello che ho visto l'ultimo settore LBA utilizzato dagli altri files della ISO era il settore 292.784, ho fatto in modo di inserire il video al settore 292.785 tramite xtractor .net, comunque penso che anche la TOC andrebbe aggiornata perché comunque il file dovrebbe essere accessibile. Poi vediamo come far leggere il video al gioco.

-EDIT- Ho aggiunto il file alla TOC, poi per correggere le dimensioni ho utilizzato un programma che tra parentesi hai creato tu Phoenix, l'ho trovato cercando su Google, però non capisco perché anche se io avevo dato come dimensioni quelle del file STR invece poi aprendo la ISO il file figura più grande di circa 2 MB, essendo in fondo alla ISO infatti Windows non riesce a copiarlo perché appunto in fondo al file mancano 2 MB di ISO...

Phoenix

Le dimensioni devono essere quelle dell'STR codificato a 2048 byte per settore e non a 2336/2352. Windows non riesce a copiarlo proprio per questo motivo. Se tenti di copiare il file XAS avrai lo stesso problema.
Phoenix
****************
membro di SadNES cITy
I gruppo italiano di traduzione ROM
http://www.sadnescity.it
*****************************

Halfshadow

Questo IDA è un plugin di quale emulatore PSX? Inoltre dovrei giocare fino al punto in cui viene mostrato il video? Purtroppo non è una cosa così semplice perché è il finale di Anna, anche se mi sono sbagliato a scrivere il titolo della discussione, che è un personaggio che non si sblocca subito, sul Play station vero e proprio ho il gioco completo al 100% su Memory card ma sul PC no... Si può tentare la strada dell'eseguibile prima? Per eseguibile cosa intendi, è proprio un file EXE o può essere il file SCES_012.37? Altrimenti ora che mi viene in mente io conosco i settori LBA del video che viene visualizzato attualmente, possono essermi utili per trovare il punto dove vengono utilizzati direttamente tramite l'editor esadecimale e modificare tutto con quello?

Gemini

IDA è un programma per disassemblare in maniera interattiva. Serve sostanzialmente per analizzare il codice dettagliatamente una volta individuata una routine che ti interessa.

Per quanto riguarda il video, con tutta probabilità ti toccherà espandere il file XAS per spostare in avanti i video successivi a quello di Nina ed evitare di finire nell'area di lead out della ISO (gli ultimi 30 MB non raggiungibili dal salto massimo del lettore, di solito riempiti con un file vuoto o con un filmato che supera il limite di salto). Non ho idea di come il gioco indirizzi le letture dei video, ma sicuramente ha una tabella da qualche parte per posizionarsi sul file XAS e da qualche altra parte ci sarà anche la lunghezza in frame di ogni filmato. Una volta trovati i valori giusti puoi ricostruire il file XAS e la ISO a piacimento.

Phoenix

@Gemini, non credo gli serva espandere lo xas, penso basti aggiungere in coda alla iao il nuovo viedo, e ovviamente poi aggiungere ancora in coda dello spazio dummy per risolvere il problema del lead out.
Phoenix
****************
membro di SadNES cITy
I gruppo italiano di traduzione ROM
http://www.sadnescity.it
*****************************