Bueno, hoy traigo otro tutorial hecho por Zinc. Que pese a estar baneado sigue aportándonos tutos desde el mas allá (indirecta!)
Bueno sin mas preámbulos os dejo el tuto:
Iniciado por Zinc
Hoy les traigo (por fin) un tutorial sobre cómo usar esos mugshots y VS Bars que aparecen. Para hacer esto usaremos ASM :D
Las rutinas ASM están hechas por Jambo51, así que debes darle créditos a él.
¿Qué necesitamos?
-Conocimientos Avanzados
-Editor Hexadecimal
-Compilador de ASM https://www.mediafire.com/?l287si9c95ij12i (créditos a Andrea).
-XSE
-Visual Boy Advance
Haciendo la magia (Fire Red Inglés)
Para "la magia" necesitaremos 3 rutinas ASM que deberemos insertar.
.text
.align 2
.thumb
.thumb_func
.global mugshothackone
main:
cmp r0, #0x87
beq there
cmp r0, #0x88
beq there
ldr r4, ramoffset
ldrh r4, [r4, #0x0]
lsl r5, r4, #0x2
add r5, r4, r5
lsl r4, r5, #0x3
ldr r5, place
ldr r5, [r5, #0x0]
add r0, r4, r5
ldrb r0, [r0, #0x3]
there: add r4, r0, #0x0
add r5, r1, #0x0
add r6, r2, #0x0
mov r9, r3
ldr r7, [sp, #0x34]
ldr r0, return
bx r0
.align
place: .word 0x08044028
ramoffset: .word 0x020386AE
return: .word 0x0808386D
[spoiler=ASM2.asm].text
.align 2
.thumb
.thumb_func
.global mugshothacktwo
main:
ldrb r5, [r4, #0x3]
lsl r5, r5, #0x18
lsr r5, r5, #0x18
cmp r5, #0x0
beq normalchecks
mov r1, #0x5A
ldr r5, returnone
bx r5
normalchecks: cmp r1, #0x57
bne later
add r1, r2, #0x0
mov r0, #0xCD
ldr r5, returntwo
bx r5
later: ldr r5, returnone
bx r5
.align
returntwo: .word 0x0807FFA5
returnone: .word 0x08080009
.text
.align 2
.thumb
.thumb_func
.global mugshotpallethack
main:
ldr r1, ramoffset
ldrh r1, [r1, #0x0]
lsl r0, r1, #0x2
add r0, r0, r1
lsl r1, r0, #0x3
ldr r0, trainertable
ldr r0, [r0, #0x0]
add r1, r0, r1
ldrb r1, [r1, #0x1]
cmp r1, #0x5A
beq oldway
cmp r1, #0x57
beq oldway
ldr r1, ramoffset
ldrb r1, [r1, #0x3]
sub r1, #0x1
lsl r1, r1, #0x2
ldr r0, table2
add r1, r1, r0
ldr r0, [r1, #0x0]
b back
oldway: ldr r1, table
mov r2, r8
mov r3, #0x26
ldrh r0, [r2, r3]
lsl r0, r0, #0x2
add r0, r0, r1
ldr r0, [r0, #0x0]
back: ldr r1, return
bx r1
.align
ramoffset: .word 0x020386AE
trainertable: .word 0x08044028
table: .word 0x083FA740
table2: .word 0x08FFFFFF
return: .word 0x080D28D5
No olvides anotar los offsets en los que insertas las rutinas xDD.
[/spoiler]
Como los amo a todos ustedes, les dejo los bytes listos para meter en el HEX Editor. Anota las direcciones, es MUY importante.
En mi ejemplo pondré las rutinas en los siguientes offsets:
ASM1.bin en 750000 --> usamos 750001
ASM2.bin en 750040 --> usamos 750041
ASM3.bin en 750070 --> usamos 750071
[quote]Después vamos al offset 83862 y cambiamos lo que está ahí por lo que tenemos aquí:
01 4C 20 47 00 00 XX XX XX 08
XX XX XX = Pointer de ASM1
Pointer ASM1 (un pointer es un offset permutado): 01 00 75
Después vamos al offset 7FF90 y cambiamos lo que está ahí por lo que tenemos aquí:
00 4A 10 47 XX XX XX 08
XX XX XX = Pointer de ASM2
Pointer ASM2: 41 00 75
Después vamos al offset D28C6 y cambiamos lo que está ahí por lo que tenemos aquí:
01 49 08 47 00 00 XX XX XX 08
XX XX XX = Pointer de ASM3
Pointer ASM3: 71 00 75
Ahora nos vamos a algún editor de trainerbattles y hacemos o editamos uno. Pero para ahorrar tiempo yo usaré uno ya existente.
¿Olvidaste cómo se hacen las trainerbattles? ¿¡Lo olvidaste!? Eres una vergüenza como rom hacker
Hay que poner esto (además de la estructura básica de un script):
¿Ves lo que dice "Reserved"? Ahí siempre poníamos un 0x0 en las trainerbattles normales; pero ahora pondremos 0x200.
Entonces solo 0x200. Dentro del juego funciona.
Ahora nos queda solo el último cambio. Vamos de nuevo al editor Hexadecimal y vamos al offset 801f5 y cambiamos el byte (debería ser 88) a 78.
---Prueba in-game---
Los colores de la barra de arriba se ven "diferentes" porque aún no los cambio. Están en el offset 3FA6A0, se puede cambiar con APE.
Fantástico el tutorial éste. Es muy útil para todos los que trabajan en FireRed y los que quieren trabajar en él. Gracias por traerlo, y a Zinc por traducirlo
¡Suerte!
Hello friends: D Well I do not like much of a bar vs. the effect of Fire Red.
Then I also find it much easier to redo it from scratch in a new style D / P
no entiendo absolutamente nada de esto, nunca he usado el asm compiler, y si haces algun parche? o al menos explicas mas detalladamente, no todos somos unos genios sabiondos del HR como tu