Pokémon Center ~ Stay what we are ~ [Pokemon Sole- Pokemon Luna Download e Guida Ufficiale]

Andrea knowledge

« Older   Newer »
  Share  
view post Posted on 21/1/2014, 17:59     +1   -1

Fakemon

Group:
Member
Posts:
2,092
Reputation:
+127

Status:


Salve a tutti ragazzi, oggi voglio aprire questo topic dove spiegherò più o meno tutto quello che so e che ho appreso in questi
(quasi) 2 anni di hacking.
Non voglio dilungarmi molto e passiamo subito alle varie parti che ci andranno ad accompagnare in questo tutorial.
Knowledge #1 – Mugshot – Inseriamo la routine.
Bene la prima cosa che voglio spiegarvi in questa prima parte sarà come inserire i mugshot.
È stato affrontato più volte l'argomento dei mugshot su come inserirli oggi vi spiegherò il mio metodo.
Prima di tutto utilizzeremo questa routine per far apparire i 2 mugshot:
CITAZIONE
07 B5 2D 48 00 88 00 28 30 D0 01 28 01 D0 02 28 09 D0 28 48 00 88 20 49 41 43 19 4A 50 18 1A 49 1E 4A 0B DF 09 E0 23 48 00 88 1B 49 41 43 14 4A 50 18 16 49 19 4A 0B DF 09 E0 1E 48 00 88 20 21 41 43 10 4A 50 18 12 49 10 22 0B DF 09 E0 19 48 00 88 20 21 41 43 0B 4A 50 18 0E 49 10 22 0B DF FF E7 12 48 10 49 0E 4A 0B DF 07 BD 10 48 06 49 0C 4A 0B DF 0E 48 0C 49 09 4A 0B DF 07 BD C0 46 XX XX XX 08 YY YY YY 08 00 80 00 06 00 88 00 06 68 F0 02 02 88 F0 02 02 00 08 00 00 00 04 00 00 00 01 00 00 00 10 00 00 80 F9 00 06 YY YY YY 08 XX XX XX 08 DC E8 02 02 C4 E8 02 02

Spieghiamo le varie parti evidenziate:
XX XX XX 08: qua andremo ad inserire il nostro offset_table dei mugshot, ricordo sempre che per modificare un offset in una routine e necessario ribaltarlo a gruppi di 2 byte.
Esempio: 123456 -> 563412 quindi andremo a sostituire nella routine 56341208 aggiungendo 08 che sarebbe il prefisso della memoria che andremo ad utilizzare in questo caso la ROM (08)
YY YY YY 08: Qua andrà inserito invece l’offset_table delle palette relative ai mug.
Il discorso è uguale a quello fatto per i mugshot. (naturalmente vi consiglio di distanziare i 2 offset per esempio A00000 per i mugshot e B00000 per le palette)
XX XX XX 08: questo è l’offset che richiamerà i byte che andranno a ricostruire i due mugshot nel BG0. Che cos’è il BG0?
Lo schermo del VBA è suddiviso in 4 “livelli”.
BG0, BG1, BG2 e BG3 più L’OAM ma non ci deve interessare al momento.
Quello più in basso è il BG3 invece quello più in alto è il BG0 dove andremo a caricare i nostri 2 mugshot.
YY YY YY 08: questo invece sarà l’offset che farà scomparire i 2 mugshot.
Il discorso è analogo a quello precedente per il ribaltamento degli offset.
Importante i byte seguenti andranno incollati con CTRL + B e non con CTRL + V
se noi incollassimo semplicemente il nostro mugshot con CTRL + V e come se aggiunggessimo byte alla rom e di conseguenza crasherà!
Ecco l’ordine dei byte che andrete ad inserire per far apparire i 2 mugshot:
CITAZIONE
00 D0 01 D0 02 D0 03 D0 04 D0 05 D0 06 D0 07 D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 E0 41 E0 42 E0 43 E0 44 E0 45 E0 46 E0 47 E0 00 00 00 00 08 D0 09 D0 0A D0 0B D0 0C D0 0D D0 0E D0 0F D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 48 E0 49 E0 4A E0 4B E0 4C E0 4D E0 4E E0 4F E0 00 00 00 00 10 D0 11 D0 12 D0 13 D0 14 D0 15 D0 16 D0 17 D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 50 E0 51 E0 52 E0 53 E0 54 E0 55 E0 56 E0 57 E0 00 00 00 00 18 D0 19 D0 1A D0 1B D0 1C D0 1D D0 1E D0 1F D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 58 E0 59 E0 5A E0 5B E0 5C E0 5D E0 5E E0 5F E0 00 00 00 00 20 D0 21 D0 22 D0 23 D0 24 D0 25 D0 26 D0 27 D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 60 E0 61 E0 62 E0 63 E0 64 E0 65 E0 66 E0 67 E0 00 00 00 00 28 D0 29 D0 2A D0 2B D0 2C D0 2D D0 2E D0 2F D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 68 E0 69 E0 6A E0 6B E0 6C E0 6D E0 6E E0 6F E0 00 00 00 00 30 D0 31 D0 32 D0 33 D0 34 D0 35 D0 36 D0 37 D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 70 E0 71 E0 72 E0 73 E0 74 E0 75 E0 76 E0 77 E0 00 00 00 00 38 D0 39 D0 3A D0 3B D0 3C D0 3D D0 3E D0 3F D0 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 78 E0 79 E0 7A E0 7B E0 7C E0 7D E0 7E E0 7F E0 00 00 00 00

Per farli scomparire invece ci serviranno più byte in quanto altre cose vengono caricate nel BG0 e questo potremmo riscontrare alcuni errori quindi dovrete inserire ben 1000 byte con tutti 00 per “settare tutto il BG0”.
Vi posto 100 byte (256) voi incollateli per 10 volte e avrete i vostri 1000 byte.
CITAZIONE
00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

Dopo aver fatto questo direi che siamo pronti per incominciare ad inserire in nostri mugshot.

Knowledge #1 – Mugshot– inseriamo i mugshot.
Come prima cosa ci serviranno 2 rom di cui una sarà la nostra rom di brutta.
Apriamo a nostra rom di brutta con unlz e sostituiamo uno sprite di un pokemon con il nostro mugshot indexato.
Do per scontato che sappiate gia farlo...
Una volta fatto ciò dovremmo farlo apparire con uno script che andremo ad assegnare ad un people su Advance Map
#dynamic 0x800000
#org @inizio
special 0x140
showpokepic 0x1 0x1 0x5
end
apriamo la nostra rom con un emulatore e successivamente parliamo con la persona a cui abbiamo assegnato lo script.
Una volta faccio ciò andiamo su tools>oam viewer ci apparirà una finestra simile a questa.

Ora dovremo guardare “Tile:” in questo caso c’è scritto 92
Quindi ora andiamo su tools>tile viewer e ci apparirà una finestra simile a questa:

Noi ci andremo a posizionare al tile 92 e sotto di esso ci apparirà un offset. (in questo caso 06010B80)
Andiamo su tools>memory viewer
E andiamo all’offset che abbiamo trovato! E successivamente clicchiamo su save
Address: mettiamo l’offset che abbiamo trovato.
Size: mettiamo 800 (i byte che occupa un mugshot)
Facciamo Ok e salviamo. Abbiamo finito di convertire il nostro mugshot in un file leggibile dalla rom.
Non abbiamo ancora finito ci mancano le palette del mugshot! Rechiamoci all’offset 202F2A8 (set 16 delle palette dove viene caricato il mugshot dell’oam) e salviamo con il metodo che ho descritto precedentemente ma Size dovremo scrivere 20!
Ora dovremmo inserire il mugshot e le palette nella nostra rom. Ora potete pure chiudere il VBA e eliminare la nostra rom di brutta.
Apriamo la nostra rom di bella con il nostro HEX EDITOR e andiamo all’offset del mugshot_table.
Apriamo anche il nostro mugshot .DMP ricavato col VBA e clicchiamo CTRL + A, CTRL + C. ora ritorniamo alla nostra rom e incolliamo il nostro mugshot nella rom ma non con CTRL + V ma con CTRL + B!!!
Ed ecco il nostro mugshot inserito.
Raccomandazione:
I mugshot seguenti andranno tutti uno sotto l’altro quindi se l’offset table fosse A00000 il secondo mugshot dovremo incollarlo a A00800, poi A01000, A01800 e cosi via in modo che non sia un limite di mughsot ^^ (finchè non finisce lo spazio disponibile nella rom)
Stesso discorso vale per le palette.

Ora non ci resta che compilare il nostro script e vedere se abbiamo fatto tutto bene.
Lo script che dovremo utilizzare sarà questi 3.

far sprire i 2 mugshot:
#dynamic 0x800000
#org @inizio
setvar 0x8000 0x0
callasm 0xoffset routine + 1
end

per far apparire il mugshot a sinistra:
#dynamic 0x800000
#org @inizio
setvar 0x8000 0x1
setvar LASTRESULT 0xnumero mugshot
callasm 0xoffset della routine +1
end

per farlo apparire a destra:
#dynamic 0x800000
#org @inizio
setvar 0x8000 0x2
setvar LASTRESULT 0xnumero mugshot
callasm 0xoffset della routine +1
end


#Knowledge 2 - Palette: ricerca all'interno della rom, modifica in game e conversione da RGB a GBA
Salve a tutti ragazzi oggi parleremo delle palette, della loro ricerca all’interno della ROM come modificarle e il procedimento per passare dall’RGB al valore GBA.
#Knowledge 2 - Palette: RICERCA ALL'INTERNO DELLA ROM
Le palette vengono memorizzate nella memoria numero 05 ovvero PALETTE (strano vero?)
Gli offset che vanno da 05000000-050001FF sono le palette riguardanti i tile invece gli offset che vanno da 05000200-050003FF sono le palette riguardanti l’oam (quindi sprite e ow). Le palette possono variare da 0000 a 7FFF e occupano 2 byte di memoria.
Nella rom le palette NON COMPRESSE vengono memorizzate con un certo criterio:
se la paletta in questione è per esempio il colore bianco (7FFF) , parlando sempre delle palette NON COMPRESSE, nella ROM sarà memorizzata cosi:
FF-7F ovvero invertita a gruppi di 2
Quindi in generale possiamo dire che:
VALORE PALETTA:[byte01-byte02]
ROM:[byte02-byte01]
Bene dopo questa piccola spiegazione passiamo alla ricerca delle palette nella ROM.
Come prima cosa dovremo scegliere quale set di palette modificare, in questo caso io sceglierò il set di palette dello sfondo del professore.
Quindi apriamo la nostra rom con il nostro emulatore (in questo caso uso il VBA) e una volta arrivati all’intro del professore andiamo su Tools>Palette Viewer. In questo caso il set di palette che ci interesssa sarà il primo set di palette (il set di palette 0).
Apriamo anche il blocco note che ci servirà per l’operazione successiva.
Bene come prima cosa clicchiamo sulla prima paletta essendo ribaltate nella rom, per la nostra ricerca sarà necessario ribaltare tutte la 16 palette del primo set quindi:
la prima paletta ha il valore 0000 (in basso a sinistra “value”), ribaltato risulterà 00-00 quindi non cambia niente, e segnatevelo sul vostro blocco note.
Andiamo avanti finchè non avremo un risultato simile a questo:
VALORE PALETTE: 0000 53FF 37FF 2F7B 26F7 1E73 19EF 116B 08E7 001F 001F 001F 001F 001F 001F 0000
ROM: 0000 FF53 FF37 7B2F F726 731E EF19 6B11 E708 1F00 1F00 1F00 1F00 1F00 1F00 0000
Apriamo la nostra rom con l’hex editor e schiacciamo CTRL + F e incolliamo il contenuto del nostro blocco note e mettiamo nelle impostazioni “VALORE ESADECIMALI”.

Ecco fatto ora avremo il nostro offset delle palette nella rom.

#Knowledge 2 - Palette: MODIFICA PALETTE IN GAME
In questa ultima parte riguardante le palette vi spiegherò come modificare le palette mentre si gioca attraverso uno script oppure una routine asm.
Come prima cosa, se voglia modificare le palette in game ogniuno di noi penserebbe: Basta modificare il valore nella memoria delle palette! Invece non è cosi immediato come sembra.
Infatti non è possibile modificare le palette appunto nella memoria palette ma è necessario trovare gli offset proiettati nelle altre memorie per esempio la memoria 02 (WRAM) è quella che ci interesserà a noi.
Per cercare il nostro offset è necessario utilizzare uno strumento del VBA, il search for cheats, lo possiamo trovare in Cheats> search for cheats
Ci apparirà una schermata simile a questa:

Prendiamo come esempio sempre le palette del prof dell’intro (seppur non modificabile con un normale script) apriamo il memory viewer e andiamo all’offset 05000000 (la memoria delle palette) oppure in modo rapido selezionate la memoria in alto a sinistra.
Nel nostro caso ci interessa il primo set di palette quindi le prime 2 “file di byte” ogni set di palette occupa 32 byte (16*2=32).
Mettiamo il memory viewer su 32 bit e prendiamo come riferimento i primi 8 bit e li trascriviamo nel search for cheats impostando tutti i parametri secondo l’immagine sopra. Una volta fatto il risultato dovrebbe essere questo:

Abbiamo trovato 2 offset, ora non ci resta provarli (basta andare nell’offset sul memory viewer e provare a cambiare i byte. Uno dei sarà il nostro offset.
Per la modifica in uno script utilizzeremo il solito writebyetooffset, ricordatevi di invertire i valori.
writebyetooffset 0xbyte_2 0xOFFSET_2
writebyetooffset 0xbyte_1 0xOFFSET_1
Bene se qualcuno non è ancora soddisfatto e soprattutto scansafatiche perché pensa che modificare un set di palette per esempio è troppo lungo (in effetti 32 WBTO sono un po tanti) ricorriamo a una piccola routine ASM:
00 B5 02 48 02 49 20 22 0B DF 00 BD XX XX XX 08 YY YY YY 02
Negli XX XX XX ci andrà il set di nuove palette nella rom da andare a sostituire a quelle vecchie.
Nelle YY YY YY ci andrà l’offset del set di palette nella WRAM nel nostro caso 0202EEC8.

#Knowledge 2 - Palette: CONVERSIONE da RGB a GBA
In questa piccola parte parliamo della conversione da RGB al valore GBA di una paletta.
Come prima cosa prendiamo come riferimento una paletta RGB per esempio:
052 R
126 G
209 B
E come prima cosa dobbiamo convertire in binario i 3 valori, tenendo conto di 8 bit quindi se lunghezza dovesse essere minore di 8 dovremmo aggiungere tanti 0 quanti mancano ad arrivare ad 8 bit
00110100 = 52
01111110 = 126
11010001 = 209
Bene, ora dobbiamo dividere il nostro numero binario in 2 parti, la prima parte composta da 5 bit, la seconda composta dai 3 bit restanti.
00110 100
01111 110
11010 001
Ora prendiamo in considerazione la seconda parte (quella a 3 bit)
Se i 3 bit sono uguale/maggiori a 4 allora aumentiamo la parte dei 5 bit di 1, in questo modo:
100 = 4 quindi aggiungiamo +1 a 00110+1=00111
110 = 6 quindi aggiungiamo +1 a 01111+1=10000
001 = 1 quindi non aggiungiamo niente
Ora dobbiamo rimetterli in fila ma in nell’ordine BGR e aggiungiamo uno 0 davanti
0[11010][10000][00111]
Ora li separiamo in 2 parti da 8 bit e li convertiamo in decimale
01101010 = 6A
00000111 = 07
Li mettiamo insieme ed ecco il nostro valore GBA.
6A07
*Thanks prime-dialga :)


Se vedete incongruenze o errori segnalatemeli con un commento, posso sbagliare anche io no? :)
Bene per oggi è tutto se avete problemi segnalatelo nei commenti o se volete che faccia altri tutorial su un determinato argomento scrivetelo sempre sotto!
 
Top
Velcoro
view post Posted on 12/5/2016, 22:06     +1   -1




Guida molto utile :)
 
Top
1 replies since 21/1/2014, 17:59   1057 views
  Share