Registrarse

[ASM] FR |Tutoriales Jpan 5ta Entrega | Mugshot mediante Special 0x18b

Naren Jr.

Puto amo
Usuario de Platino
Buenas gente! vengo siguiendo la serie de tutoriales de mi colega @Jo7a.

En esta ocasión les traigo la clase N°5 sobre los tutos de Jpan, ahora con el metodo de expandir la tabla de fosiles Pokémon para que puedan ser utilizados como gusten, muchos lo usan como mugshot, esta rutina es la edición del Special de los fosiles Pokémon de Ciudad Plateada, lo que harémos será expandir esta tabla para poder colocar 255 imagenes más.

Bueno, antes que nada necesitaremos la rutina y el compilador ASM, el Thumb pueden bajarlo de acá:


Acá esta la rutina que necesitaremos:

Código:
        .align 2
        .thumb

.org 0x9d504
Replacer:    push {r4-r6, lr}
        mov r6, r8
        push {r6}
        ldr r0, Place_d6d5
        bl 0x1119d4
        lsl r0, r0, #0x18
        lsr r0, r0, #0x18
        cmp r0, #0x1
        beq 0x9d5f2
        ldr r0, Place_d495
        bl 0x77688
        lsl r0, r0, #0x18
        lsr r0, r0, #0x18
        cmp r0, #0xff
        bne end
        ldr r0, var_8004
        ldrh r0, [r0, #0x0]
        ldr r1, table_index
        mov r2, #0x2
        lsl r2, r2, #0x8
        cmp r0, r2
        bgt 0x9d5f4
        lsl r0, r0, #0x3
        add r1, r0, r1
        ldr r0, [r1, #0x0]
        push {r1}
        bl 0x8720
        pop {r1}
        add r1, #0x4
        ldr r0, [r1, #0x0]
        mov r1, #0xe8
        lsl r1, r1, #0x1
        mov r2, #0x20
        bl 0x703ec
        b 0x9d572
end:        mov r0, #0x0
        b 0x9d5f4
.hword 0x0000
Place_d6d5:     .word 0x0809d6d5
Place_d495:     .word 0x0809d495
var_8004:    .word 0x020370c0
table_index:    .word 0x08[La tabla Principal]
Bueno es todo muy sencillo gente, antes que nada debemos escoger una tabla principal para colocar los datos, cuando coloquen el offset sencillamente proceden a compilar la Rutina ASM con THUMB y la insertan en 0x9d504 sobre escribiendo esos datos.

Bueno esta tabla es bastante diferente, consiste en los siguientes datos:

Código:
[Puntero de Imagen Permutado]+08+[Paleta SIN COMPRIMIR Permutado]+08
Pero ahora me dirán, ¿Qué coño es "Puntero de imagen"? ¿No es la dirección donde esta la imagen?, pues no lo es jaja.

Por alguna razón esta rutina apunta a otra tabla... en donde si estarán las imágenes más unos caracteres diferentes, acá una muestra:


Como pueden ver mi tabla principal se encuentra en 0x08C00000 Y el primer puntero que he seleccionado en la imagen es el "Puntero de mi fosil", ok ahora vayamos a ese puntero qué en mi caso es: 0x08BFFDD0


Pues aquí esta el offset de mi imagen sin comprimir que es 7F0000, luego viene el respectivo 08 que indica que esta en la ROM luego siguen estos caracteres: 00 08 58 1B 00 00 00 00 00 00 00 00, que corresponden a obligación en la tabla.

Por lo tanto la tabla de "Puntero fosil" debe ser:

Código:
[Puntero Permutado de imagen sin comprimir]+08+00 08 58 1B 00 00 00 00 00 00 00 00
La tabla debe ocupar toda una linea de 0F datos como se puede ver en la imagen.

Ok deben tener MUY en cuenta toda esa información para la estructura de la tabla... porque si no la colocan bien no cargará la imagen y se crasheara el juego.

Anexo esto para quienes no sepan colocar imagenes sin comprimir en la ROM:

Se debe utilizar NSE 2.0 (venga para hacerlo mas práctico)

  • Primero abren su ROM, creo que no necesito poner imagenes de eso...
  • Ahora vamos a abrir el Sprite que vamos a insertar, debe ser de 64*64 la imagen y 16 colores, venga lo normal:

  • Una vez este abierto su sprite en el NSE 2.0 hacemos esto:

  • Ahora elegimos el espacio donde lo vamos a poner:


    Esa dirección la deben escribir y guardar, ya que ese es el offset de su imagen, para la paleta hacen lo mismo y listo, esta su imagen sin comprimir en la ROM.

Ok una vez conciendo como se estructura la tabla y como son las imagenes, ya deberían tener sus dos tablas listas.

Recuerden, tabla principal (La que se coloca en la rutina) es donde debe ir así:

Código:
[Puntero de Imagen Permutado]+08+[Paleta SIN COMPRIMIR Permutado]+08
Si se quiere añadir otra imagen, pues al lado se hace igual en la tabla, se pone el puntero del "fosil" y la paleta.

Y bueno una vez estado todo listo ya en teoria nuestra rutina debe funcionar usando el special 0x18b!

Aquí les dejo la muestra del script de como debe ir:

Código:
#dynamic 0x800000

'---------------
#org @start
setvar 0x8004 0x0              'Numero de Imagen
setvar 0x8005 0x1              'Posición X Imagen
setvar 0x8006 0x4              'Posición Y Imagen
special 0x18B                  'Special que hace magia
msgbox @msgbox1 0x6 '"Los PSS Icon son lo mejor en mugs!..."
special 0x18C                  'Con este se acaba la magia.
end


'---------
' Strings
'---------
#org @msgbox1
= Los PSS Icon son lo mejor en mugs!\n<3
Todo se explica en el script, Special 0x18B hace la imagia que aparezca la imagen con la variable anteriormente fijada, con Special 0x18C desaparece el mug.

Si han hecho todo bien debería funcionar, acá una muestra:


Y es todo♥

ANOTACIONES IMPORTANTES

  • SouL dijo:
    "El cuadro de atrás" xD anda al offset 09D696 y cambiar 66 F7 25 FB 04 por 00 00 00 00 00 y listo
    Aquí esta la direcion en hex para los que quieran editar el cuadro de atrás, eso tiene sus consecuencias, como que en los Multichoise personalizados no se verá el fondo del recuadro, pero en los YES/NO sí, y en las opciones del PC tambien funciona.

  • Esta rutina es incompatible con la de paletas dinamicas, la rutina de paletas dinamicas edita un par de cosas de la rutina normal de FR, cosa que se me escapa de los conocimientos que tengo ahora, si alguien sabe hacer esto compatible con paletas dinamicas, hable ahora o calle para siempre.
  • Los Mugshot se oscurecen si tienes el DNS, supongo que se puede editar para que el DNS no le afecte, pero tambien se escapa de mis manos x'D

CREDITOS
  • Jpan, Creador de rutina.
  • @Jo7a, por permitirme confirmar como iba la rutina en la ROM (aunque no tenias ni puta idea tio x'D)
 

Adjuntos

Última edición:

Chandragupta

~the lunatic is in my head~
Respuesta: FR | ASM | Tutoriales Jpan 5ta Entrega | Mugshot mediante Special 0x18b

Útil y sencillo.

Soy aun malisimo con esto para el ASM y la programación en general, pero viendo esto me puede dar un MONTON de ayuda con los mugshots para el hack feo que estoy haciendo.

No digo mucho mas debido a mi poco conocimiento (tengo pero básico y pequeño) en esta materia, aun así gracias!!.

Nota: curioso Mughshot el tuyo...mmm?.

See ya!!.
 

Inferno

Miembro insignia
Miembro insignia
Un tutorial útil y muy bien explicado, como yo no trabajo mucho con la base de JPAN se me escapan cosas tan buenas como esta.

El único punto que me rehúsa a usarlo es que no combine con el sistema de paletas dinámico, pero bueno eso no quita de que le sea de utilidad a mucha gente.

Gracias por compartirnos por aquí este tipo de aportes.
Un saludo :D
 

Naren Jr.

Puto amo
Usuario de Platino
Respuesta: Re: FR | ASM | Tutoriales Jpan 5ta Entrega | Mugshot mediante Special 0x18b

"El cuadro de atras" xD anda al offset 09D696 y cambiar 66 F7 25 FB 04 por 00 00 00 00 00 y listo
Aquí esta la direcion en hex para los que quieran editar el cuadro de atrás, eso tiene sus consecuencias, como que en los Multichoise personalizados no se verá el fondo del recuadro, pero en los YES/NO sí, y en las opciones del PC tambien funciona.

Gracias a los que han comentado.
 

Markuzz Kaizuka

Usuario de platino
Respuesta: FR | ASM | Tutoriales Jpan 5ta Entrega | Mugshot mediante Special 0x18b

Me asombras, has sido el unico que ah podido hacer que entienda las rutinas,
Mis respetos, ademas hace tiempo buscaba un tutorial de como poner esas imagenes
Ni siquera sabia que se llamaban mugshot(con razon no encontraba nada XD), muy
buen tutorial, sobre todo yo lo veo muy sencillo y rapido, De verdad espero que
sigas sacando tutoriales sobre rutinas, ese es tu don. XD

Muchas gracias por este maravilloso aporte!!
Saludos!!
 

Berserker1523

2-Intentando discernir qué es lo más importante...
Respuesta: FR | ASM | Tutoriales Jpan 5ta Entrega | Mugshot mediante Special 0x18b

Hola Naren, además de para Mugshots, para que más puede servir expandir la tabla? Y perdona la ignorancia, pero, para qué sirve la tabla original? (Me gustaría saberlo, será para mugshots también?).

Pd: monte preocupes, en 1 año haré que funcione para la wea dinámica :v
 
Arriba