Rispondi 
[Rosso fuoco] Pokémon Alola
eMMe97
Professione: Genio
******
Offline

Messaggi: 1,374
Registrato: 09-10-2014
Reputazione: 20
Mi Piace Ricevuti: 1358
PokéMoney: 1,681.00₱
Messaggio: #1
Pokémon Alola
Grazie all'aiuto del Maestro @Andrea e di @bonzi (che anche lui devo ammetterlo sia per me un ottimo mentore), oggi posso rilasciare questa guida.

Oggi vi mostro come incorporare la variante Alola dei Pokémon di Kanto nella vostra rom.

Per chi volesse un approfondimento sulla questione:

1) Inseriamo la routine di registrazione:

Exclamation ATTENZIONE! La routine sfrutta parte delle slot libere tra celebi e treecko. In questo modo sono risolti dei piccoli bug che genererebbe la routine stessa!

Compiliamo ed inseriamo in uno spazio libero della nostra rom questa routine:
Codice:
.text
.align 2
.thumb
.thumb_func

main:
push {r4, r5, r6, r7, lr}
cmp r0, #0xFC
beq rattata
cmp r0, #0xFD
beq raticate
cmp r0, #0xFE
beq raichu
cmp r0, #0xFF
beq sandshrew
ldr r3, =0x100
cmp r0, r3
beq sandslash
ldr r3, =0x101
cmp r0, r3
beq vulpix
ldr r3, =0x102
cmp r0, r3
beq ninetales
ldr r3, =0x103
cmp r0, r3
beq diglett
ldr r3, =0x104
cmp r0, r3
beq dugtrio
ldr r3, =0x105
cmp r0, r3
beq meowth
ldr r3, =0x106
cmp r0, r3
beq persian
ldr r3, =0x107
cmp r0, r3
beq geodude
ldr r3, =0x108
cmp r0, r3
beq graveler
ldr r3, =0x109
cmp r0, r3
beq golem
ldr r3, =0x10A
cmp r0, r3
beq grimer
ldr r3, =0x10B
cmp r0, r3
beq muk
ldr r3, =0x10C
cmp r0, r3
beq exeggutor
ldr r3, =0x10D
cmp r0, r3
beq marowak
b normale

rattata:
sub r0, r0, #0xe9
b normale

raticate:
sub r0, r0, #0xe9
b normale

raichu:
sub r0, r0, #0xe4
b normale

sandshrew:
sub r0, r0, #0xe4
b normale

sandslash:
sub r0, r0, #0xe4
b normale

vulpix:
sub r0, r0, #0xdc
b normale

ninetales:
sub r0, r0, #0xdc
b normale

diglett:
sub r0, r0, #0xd1
b normale

dugtrio:
sub r0, r0, #0xd1
b normale

meowth:
sub r0, r0, #0xd1
b normale

persian:
sub r0, r0, #0xd1
b normale

geodude:
sub r0, r0, #0xbd
b normale

graveler:
sub r0, r0, #0xbd
b normale

golem:
sub r0, r0, #0xbd
b normale

grimer:
sub r0, r0, #0xb2
b normale

muk:
sub r0, r0, #0xb2
b normale

exeggutor:
sub r0, r0, #0xa5
b normale

marowak:
sub r0, r0, #0xa4

normale:
lsl r0, r0, #0x10
lsr r3, r0, #0x10
lsl r1, r1, #0x18
lsr r5, r1, #0x18
add r7, r5, #0x0
lsl r2, r2, #0x18
cmp r2, #0x0
beq primo
add r0, r3, #0x0
bl sub_08043298
add r3, r0, #0x0

primo:
sub r0, r3, #0x1
lsl r0, r0, #0x10
lsr r3, r0, #0x10
lsr r0, r0, #0x13
lsl r0, r0, #0x18
lsr r4, r0, #0x18
mov r0, #0x7
and r3, r0
mov r0, #0x80
lsl r0, r0, #0x11
lsl r0, r3
lsr r6, r0, #0x18
mov r0, #0x0
mov ip, r0
cmp r5, #0x1
beq secondo
cmp r5, #0x1
bgt terzo
cmp r5, #0x0
beq quarto
b quinto

terzo:
cmp r7, #0x2
beq sesto
cmp r7, #0x3
beq settimo
b quinto

quarto:
ldr r0, =0x300500c
ldr r0, [r0]
add r0, #0x5c
add r0, r0, r4
ldrb r1, [r0]
and r1, r6
cmp r1, #0x0
beq quinto
b ottavo
str r4, [r1, r0]
lsl r0, r0, #0xc

secondo:
ldr r0, =0x300500c
ldr r2, [r0]
add r0, r2, #0x0
add r0, #0x28
add r0, r0, r4
ldrb r1, [r0]
and r1, r6
cmp r1, #0x0

beq quinto
add r0, r2, #0x0
add r0, #0x5c
add r0, r0, r4
ldrb r0, [r0]
and r0, r6
cmp r1, r0
bne quinto

ottavo:
ldr r0, =0x3005008
ldr r2, [r0]
mov r3, #0xbf
lsl r3, r3, #0x3
add r0, r2, r3
add r0, r0, r4
ldr r0, [r0]
and r0, r6
cmp r1, r0
bne quinto
ldr r3, =0x3a18
add r0, r2, r3
add r0, r0, r4
ldrb r0, [r0]
and r0, r6
cmp r1, r0
bne quinto
mov r0, #0x1
mov ip, r0
b quinto

sesto:
ldr r0, =0x300500c
ldr r1, [r0]
add r1, #0x5c
add r1, r1, r4
ldrb r2, [r1]
add r0, r6, #0x0
orr r0, r2
strb r0, [r1]
ldr r3, =0x3005008
ldr r1, [r3]
mov r0, #0xbf
lsl r0, r0, #0x3
add r1, r1, r0
add r1, r1, r4
ldr r2, [r1]
add r0, r6, #0x0
orr r0, r2
strb r0, [r1]
ldr r1, [r3]
ldr r3, =0x3a18
add r1, r1, r3
b nono

settimo:
ldr r0, =0x300500c
ldr r1, [r0]
add r1, #0x28

nono:
add r1, r1, r4
ldrb r2, [r1]
add r0, r6, #0x0
orr r0, r2
strb r0, [r1]

quinto:
mov r0, ip
pop {r4, r5, r6, r7, pc}
pop {r1}
bx r1

sub_08043298:
ldr r2, = 0x08043298+1
bx r2

linker:
bx r1

.align 2

VARIANTE: dato che in passato è stato richiesto, se non volete che venga mostrata la schermata di registrazione nel Pokédex di un Pokémon nuovo al momento della cattura, compilate ed inserite questa versione:

Codice:
.text
.align 2
.thumb
.thumb_func

main:
push {r4, r5, r6, r7, lr}
cmp r0, #FC
beq rattata
cmp r0, #FD
beq raticate
cmp r0, #FE
beq raichu
cmp r0, #FF
beq sandshrew
ldr r3, =0x100
cmp r0, r3
beq sandslash
ldr r3, =0x101
cmp r0, r3
beq vulpix
ldr r3, =0x102
cmp r0, r3
beq ninetales
ldr r3, =0x103
cmp r0, r3
beq diglett
ldr r3, =0x104
cmp r0, r3
beq dugtrio
ldr r3, =0x105
cmp r0, r3
beq meowth
ldr r3, =0x106
cmp r0, r3
beq persian
ldr r3, =0x107
cmp r0, r3
beq geodude
ldr r3, =0x108
cmp r0, r3
beq graveler
ldr r3, =0x109
cmp r0, r3
beq golem
ldr r3, =0x10A
cmp r0, r3
beq grimer
ldr r3, =0x10B
cmp r0, r3
beq muk
ldr r3, =0x10C
cmp r0, r3
beq exeggutor
ldr r3, =0x10D
cmp r0, r3
beq marowak
b normale

rattata:
sub r0, r0, #0xe9
b normale

raticate:
sub r0, r0, #0xe9
b normale

raichu:
sub r0, r0, #0xe4
b normale

sandshrew:
sub r0, r0, #0xe4
b normale

sandslash:
sub r0, r0, #0xe4
b normale

vulpix:
sub r0, r0, #0xdc
b normale

ninetales:
sub r0, r0, #0xdc
b normale

diglett:
sub r0, r0, #0xd1
b normale

dugtrio:
sub r0, r0, #0xd1
b normale

meowth:
sub r0, r0, #0xd1
b normale

persian:
sub r0, r0, #0xd1
b normale

geodude:
sub r0, r0, #0xbd
b normale

graveler:
sub r0, r0, #0xbd
b normale

golem:
sub r0, r0, #0xbd
b normale

grimer:
sub r0, r0, #0xb2
b normale

muk:
sub r0, r0, #0xb2
b normale

exeggutor:
sub r0, r0, #0xa5
b normale

marowak:
sub r0, r0, #0xa4
b normale

normale:
lsl r0, r0, #0x10
lsr r3, r0, #0x10
lsl r1, r1, #0x18
lsr r5, r1, #0x18
add r7, r5, #0x0
lsl r2, r2, #0x18
cmp r2, #0x0
beq primo
add r0, r3, #0x0
bl sub_08043298
add r3, r0, #0x0

primo:
sub r0, r3, #0x1
lsl r0, r0, #0x10
lsr r3, r0, #0x10
lsr r0, r0, #0x13
lsl r0, r0, #0x18
lsr r4, r0, #0x18
mov r0, #0x7
and r3, r0
mov r0, #0x80
lsl r0, r0, #0x11
lsl r0, r3
lsr r6, r0, #0x18
mov r0, #0x0
mov ip, r0
cmp r5, #0x1
beq secondo
cmp r5, #0x1
bgt terzo
cmp r5, #0x0
beq secondo
b quinto

terzo:
cmp r7, #0x2
beq sesto
cmp r7, #0x3
beq settimo
b quinto

secondo:
ldr r0, =0x300500c
ldr r2, [r0]
add r0, r2, #0x0
add r0, #0x5c
add r0, r0, r4
ldrb r1, [r0]
and r1, r6
cmp r1, #0x0
beq quinto
add r0, r2, #0x0
add r0, #0x5c
add r0, r0, r4
ldrb r0, [r0]
and r0, r6
cmp r1, r0
bne quinto

ottavo:
ldr r0, =0x3005008
ldr r2, [r0]
mov r3, #0xbf
lsl r3, r3, #0x3
add r0, r2, r3
add r0, r0, r4
ldr r0, [r0]
and r0, r6
cmp r1, r0
bne quinto
ldr r3, =0x3a18
add r0, r2, r3
add r0, r0, r4
ldrb r0, [r0]
and r0, r6
cmp r1, r0
bne quinto
mov r0, #0x1
mov ip, r0
b quinto

sesto:
ldr r0, =0x300500c
ldr r1, [r0]
add r1, #0x5c
add r1, r1, r4
ldrb r2, [r1]
add r0, r6, #0x0
orr r0, r2
strb r0, [r1]
ldr r3, =0x3005008
ldr r1, [r3]
mov r0, #0xbf
lsl r0, r0, #0x3
add r1, r1, r0
add r1, r1, r4
ldr r2, [r1]
add r0, r6, #0x0
orr r0, r2
strb r0, [r1]
ldr r1, [r3]
ldr r3, =0x3a18
add r1, r1, r3
b nono

settimo:
ldr r0, =0x300500c
ldr r1, [r0]
add r1, #0x28

nono:
add r1, r1, r4
ldrb r2, [r1]
add r0, r6, #0x0
orr r0, r2
strb r0, [r1]

quinto:
mov r0, ip
pop {r4, r5, r6, r7, pc}
pop {r1}
bx r1

sub_08043298:
ldr r2, = 0x08043298+1
bx r2

.align 2

A questo punto, indifferentemente dalla versione che avete utilizzato, rechiamoci all'offset 0x8104AB0 ed inseriamo 00 4A 10 47 xx+1 xx xx 08 dove al posto delle xx inseriremo il pointer della nostra routine.

2) Editiamo i Pokémon Alola:

Apriamo il tool che più ci piace e rechiamoci alle slot comprese tra celebi e treecko (quelle ? per intenderci), ed editiamole con i Pokémon Alola. Riporto l'ordine in cui DEVONO essere inseriti i Pokémon.

Codice:
Rattata
Raticate
Raichu
Sandshrew
Sandslash
Vulpix
Ninetales
Diglett
Dugtrio
Meowth
Persian
Geodude
Graveler
Golem
Grimer
Muk
Exeggutor
Marowak

Fatto questo salviamo e passiamo al punto successivo.

3) Risolviamo il bug dei cry:

Allora...ho trovato le peggio cose scritte e realizzate sulla rete. Premesso questo NON andrò a sbloccare i cry delle 25 slot, magari farò una guida a parte. Questo perché diventerebbe un lavoro moooolto noioso, dato che bisogna effettuare qualche repoint delle tabelle. Quello che andrò a fare è modificare la malevola routine sviluppata dalla GF, la quale ha ingegnosamente programmato il codice per risparmiare tempo, spazio e fatica. Dopo aver capito da solo il procedimento, grazie anche al non aiute della altre guide realizzate da utenti stranieri, ecco qui il risultato. Tengo a precisare che una volta inserita, questa routine provvederà a far riprodurre gli stessi cry sia per la forma di Kanto che quella di Alola.

Codice:
.text
.align 2
.thumb
.thumb_func

main:
push {lr}
lsl r0, r0, #0x10
lsr r0, r0, #0x10
add r1, r0, #0x0
cmp r0, #0xFA
bls fine
cmp r0, #0xFB
beq rattata
cmp r0, #0xFC
beq raticate
cmp r0, #0xFD
beq raichu
cmp r0, #0xFE
beq sandshrew
cmp r0, #0xFF
beq sandslash
ldr r0, =0x100
beq vulpix
ldr r0, =0x101
beq ninetales
ldr r0, =0x102
beq diglett
ldr r0, =0x103
beq dugtrio
ldr r0, =0x104
beq meowth
ldr r0, =0x105
beq persian
ldr r0, =0x106
beq geodude
ldr r0, =0x107
beq graveler
ldr r0, =0x108
beq golem
ldr r0, =0x109
beq grimer
ldr r0, =0x10a
beq muk
ldr r0, =0x10b
beq exeggutor
ldr r0, =0x10c
beq marowak
ldr r0, =(0x82539d4)
ldr r2, =(0xfffffeec)
add r1, r1, r2
lsl r1, r1, #0x1
add r1, r1, r0
ldrh r0, [r1]
b fine

rattata:
mov r0, #0x12
b fine

raticate:
mov r0, #0x13
b fine

raichu:
mov r0, #0x19
b fine

sandshrew:
mov r0, #0x1a
b fine

sandslash:
mov r0, #0x1b
b fine

vulpix:
mov r0, #0x24
b fine

ninetales:
mov r0, #0x25
b fine

diglett:
mov r0, #0x31
b fine

dugtrio:
mov r0, #0x32
b fine

meowth:
mov r0, #0x33
b fine

persian:
mov r0, #0x34
b fine

geodude:
mov r0, #0x49
b fine

graveler:
mov r0, #0x4a
b fine

golem:
mov r0, #0x4b
b fine

grimer:
mov r0, #0x57
b fine

muk:
mov r0, #0x58
b fine

exeggutor:
mov r0, #0x66
b fine

marowak:
mov r0, #0x68

fine:
pop {r1}
bx r1

.align 2

Inseriamola in un qualsiasi offset della nostra rom, rechiamoci poi a 0x8043304 e scriviamo 00 4A 10 47 xx+1 xx xx 08 riportando sempre il puntatore.

Fine!

Complimenti ragazzi, abbiamo appena aggiunto i Pokémon Alola alla nostra hack dance

[Immagine: 51ppxl.png] [Immagine: 1zlgf2o.png] [Immagine: http1t.png] [Immagine: 2i1cze0.png] [Immagine: 122knxf.png] [Immagine: veu3h5.png] [Immagine: 33u6d86.png]

[Immagine: Targhetta_e_MMe.png]
(Questo messaggio è stato modificato l'ultima volta il: 09-05-2019 03:52 PM da eMMe97.)
09-05-2019 03:41 PM
Cerca Cita
 Mi piace ricevuti da: E²VaN , bonzi , Andrea , Flygon
bonzi
Professore
*****
Offline

Messaggi: 845
Registrato: 09-11-2014
Reputazione: 11
Mi Piace Ricevuti: 268
PokéMoney: 596.75₱
Messaggio: #2
RE: Pokémon Alola
Lieto di averti aiutato! Big Grin
10-05-2019 03:42 PM
Cerca Cita
 Mi piace ricevuti da: eMMe97
Rispondi 




Utente(i) che stanno guardando questa discussione: 1 Ospite(i)
Powered by MyBB, © 2002-2019 MyBB Group. Copyright © | 2015 Pokémon Hacking