Occorrente Hack ASM

Aperto da RyuH, Dicembre 06, 2008, 10:51:06

Discussione precedente - Discussione successiva

RyuH

Leggendo nei siti o nei forum di traduzione mi capita sempre di leggere, quando si parla d'una patch in corso, la dicitura"abbiamo fatto un hack asm". Mi pare di aver capito che per tradurre i giochi psx è una cosa semi indispensabile e vorrei imparare a farlo anchio. Però ciò che so è questo:0.

Qualcuno può spiegarmi in che consiste, di cosa ho bisogno e magari una guida dettagliata alla cosa?

Firmato: il solito rompiballe.

Gemini

Prima di cercare il necessario per modificare il codice, bisogna capire esattamente che modifiche ti serve apportare. Di norma gli hack assembly si fanno per riscrivere o alterare pezzi del gioco che non permettono la traduzione in maniera fluida o qualsiasi problema legato. Ad esempio, uno degli hack più comuni è l'implementazione di un font a larghezza variabile, per avere più testo a video, oltre che usufruire di una cosa più piacevole da vedere.

Riassumendo, l'hack sul codice va fatto solo se necessario.

RyuH

Mm..credo di capire..ma come si fa a capire per certo come agire?mi spiego..se ad esempio voglio modificare immagini di resident evil directors cut(modificando certi pixel l'img crasha)mi devo creare un tool su misura o modificare l hack asm?e come lo faccio?devo conoscere il linguaggio di programmazione del gioco?giusto per sapere qualcosa teoricamente..

Gemini

Per risolvere un problema del genere devi capire esattamente la causa del crash, analizzando il codice assembly del gioco tramite emulatore con debugger (o qualcosa che ti faccia vedere cosa succede nella console). Una volta finita l'analisi puoi passare alla soluzione, che nel caso di Resident Evil consiste nel levare un'istruzione che manda tutto all'aria. Anche altri problemi a livello di traduzione si risolvono in maniera analoga, solo che la modifica da apportare al codice sarà quasi sempre specifica al caso.

RyuH

Mmm...si ma una cosa non capisco..io presumendo che debba fare qualcosa come faccio a capire che devo fare quella stessa specifica?mi spiego meglio...prendiamo l'esempio di RE. Se devo levare un istruzione che manda tutto all aria come faccio a capire che è quella?dubito ci sarà scritto "manda tutto all'aria" ma ci saranno una serie di codici esadecimali o qualcosa di simile?insomma è questo che non capisco..mi puoi fare un esempio pratico di qualcosa che hai fatto tu?saresti molto gentile(scusami per la rottura di palle).

Gemini

Il trucco è pensare come ha operato il programmatore del gioco con la "protezione" e poi mettere breakpoint al posto giusto. Per RE, ad esempio, basta localizzare dove viene caricata in ram l'immagine che fa bloccare il gioco, mettere un breakpoint in lettura su uno dei pixel furfanti e vedere cosa fa il gioco quando li va a leggere. Da lì poi ti serve capire un po' che ragionamento attua il gioco e alterarlo a tuo vantaggio.

RyuH

Mmm..capisco...sembra un vero casino!

Gemini

Come tutte le cose nuove, è normale che all'inizio sembri complicato. La pratica rende perfetti, però.

RyuH

Mai parole furono piu giuste =) e dunque s'arriva all ultima domanda...che si usa per fare un hack?l'editor esadecimale?o anche lo strumento varia a seconda dell'evenienza?

Gemini

Ti servono anzitutto degli emulatori con debugger, o un dispositivo tipo Caetla. I primi sono più facili da usare e li trovi tutti qui. Io ti consiglio fortemente il primo di zHAOsILi, che sarebbe poi quello con la migliore interfaccia di breakpoint. Il secondo di Agemo, invece, non serve a molto per il debugging ma ha una bella utilità: può rilevare errori di allineamento dei dati (letture/scritture hword e word in locazioni non multiple di 2 o 4, per capirci). Ci sarebbe anche pSX, con cui io faccio regolarmente debugging della GPU (e basta :P), molto utile per capire cosa cambiare se stai effettuando un hack sulle primitive grafiche.

Per il disassemblaggio, personalmente uso IDA Pro Disassembler con dei moduli apposta per sgamare le librerie ufficiali Sony (per gentile concessione di Pixel). Unico problema è che questo si paga, per cui niente link. :P

E per finire, ti servirà un assemblatore per cambiare le istruzioni. In alcuni casi puoi anche fare a mano con un editor esadecimale, ma considerando la complessità della codifica delle istruzioni R3000, non sempre la cosa è fattibile. Ora come ora esiste solo un assemblatore pubblico utile per gli hack, ma è abbastanza rudimentale. Si chiama spAsm, e lo trovi qui.

RyuH

Wow...grazie mille per tutto..link, spiegazioni, informazioni..e soppratutto per la monumentale pazienza. Ora do un occhiata e comincio a studiarci su e a fare qualche tentativo =) Ancora grazie mille!