Registrarse

[ASM] FR | Carga de Mugshots mediante ASM

Dr._Seuss

Average RomHacker
[Mugshots mediante ASM


Hola, de seguro preguntarás de que va esto, pues como sabrás, muchos de nosotros hemos hecho cajas de texto con retratos o "mugshots" pero estos son muy limitados, ya que solo puedes mostrar uno a la vez (dos mediante herramienta), ademas de estar en un cuadro de texto, siempre se reproduce el grito del pokemon reemplazado, y solo hay espacio para 25 mugshots, (hay mas, pero significaría deshacerte de un pokemon) asi que con este tutorial mediante ASM podrás mostrar mughots transparentes, sin gritos, dos a la vez y con un limite de 255 mugshots.

Herramientas a usar.

Compilador THUMB ASM
Rutina activadora (loading.asm)
Rutina desactivadora (removing.asm)
Editor hexadecimal
Un cerebro y conocimientos minimos sobre hex y ensamblaje de rutinas ASM


Ademas, necesitas tener insertados algunos mugshots de 64x64 con sus respectivas paletas comprimidas insertadas en diferentes offsets (con Unlzgba puedes hacer esto.)



=============
Paso1
=============

Primero crearemos la tabla de punteros de los mugshots, para ello buscaremos alguna offset con bastante espacio libre, para una tabla de 32 mugshots buscaremos 0x180 bytes, una vez ubicada empezaremos la tabla.

La estructura de la tabla es asi:
Código:
[puntero de la imagen]08[Puntero de la paleta]08[Numero de slot de paleta][00 00 00]
No es muy complicado, el puntero de la imagen es la offset permutada de la offset donde la pusimos, mismo caso con la paleta, el numero de slot de la memoria donde se ubicará la paleta, solo sirve de 00 a 0F, cualquier valor superiór colgará el juego.

Un ejemplo de como debe quedar:
EFCDAB08563412080E000000
]
Esa es la estructura al puntero de un mugshot, este sería el mugshot número 0, así sucesivamente agregamos mas punteros y tendremos nuestra tabla creada.


==========
Paso 2
==========


Ahora debemos editar ambas rutinas que descargamos (loading.asm y removing.asm) y buscaremos en loding.asm esta linea:
Código:
.equ TABLE, 0x08(TABLE)
Reemplazamos donde dice (TABLE) por la offset donde pusimos nuestra tabla de punteros, a mi me quedo asi

Código:
.equ TABLE, 0x08874520
por último cambiaremos todas las líneas donde dice [OFFSET_OF_THIS_CODE] por la offset donde vamos a poner esta rutina ASM, yo la pondré en0xF002A4

La rutina es algo chapuza, pero de momento es lo que hay.

cuando termines, descomprime el endamblador en una carpeta, y luego pon el la carpeta donde descomprimiste el ensamblador las rutinas loading.asm y remove.asm.

ahora arrastra ambos archivos al icono "THUMB.bat", cuando lo hagas la consola de windows aparecerá fugazmente y al cerrarse tendrás dos archivos, "loading.bin" y "remove.bin"

Abre ambos archivos .bin y tu ROM con tu editor hexadecimal, ahora dirigete a la primer rutina y msrcala toda y copiala, luego dirigete e tu ROM. y ve al offset que reemplazó los"
[OFFSET_OF_THIS_CODE] y pega ahi el contenido de "loading.bin".


Ahora vete a la ventana de "remove.bin" copialo todo y pegalo justo donde terminó el "loading.bin", guarda tu ROM y cierra.

Como esta rutina es THUMB debe de sumarse un dígito al último número de la offset donde pusimos ambas rutinas.
(EJ: 0xF002A4 cambia a 0xF002A5; 0xF004D8 cambia a 0xF004D9)

Ahora debemos conocer la estructura del script donde llamaremos nuestro mugshot:

Código:
#dynamic 0x8823A0
#org @pajas
lock
setvar 0x4500 0x0
setvar 0x4501 0x0
setvar 0x4502 0x0
callasm 0x(offset donde pusiste loading.bin) +1 
msgbox @poyia0x6
callasm 0x(offset donde pusiste remove.bin) +1
end

#org @Poyia
= Puto quien lea esto xD
.
Ahora a explicar las variales:

Código:
@/VAR 0x4500 = Número de sprite en la tsbla
@VAR 0x4501 = Pocisión del sprite@
@VAR 0x4502 = Número de sprite en el script
0x4500: el valor de esta variable determinará el número de sprite a cargar, si queremos cargar el primer mugshot la fijamos en 0x0, si queremos el segundo en 0x1 y asi sucesivamente.

0x4501 aqui podes decidir en que lugar de la pantalla queres, 00 para izquierda, 01 para derecha

0x4502 el valor definirá que número de mugshot estamos cargando, si solo es uno la fijamos en 0x0, si hay dos en 0x1.

Ejemplo de script para cargar dos mugshots:

Código:
#dynamic 0x8906AB
#org @culo
lock
setvar 0x4500 0x5                              'cargará el sprite 6
setvar 0x4501 0x0                              'pocisión izquierda
setvar 0x4502 0x0                              'este será el primer sprite
callasm 0x(offset donde pusiste el loding.bin) +1
setvar 0x4500 0x1                              'cargará el sprite 2
setvar 0x4501 0x1                              'pocisión derecha
setvar 0x4502 0x1                              'este será el segudo sprite
callasm 0x(offset donde pusiste el loading.bin) +1
msgbox @pajilla 0x6
callasm  0x(offset donde pusiste el removing.bin) +1
release
end

#org @pajilla
= Ola ke ase ijuefruta?
Aqui una scan del resultado final:


Y eso es todo, si sabes algo de hex y como ensamblar una rutina ASM esto no debería ser dificil, si se usa esto dar créditos a:
-Kyoko1 (autor del metodo y rutinas)
-knizz

Es todo c:
 

Corbitto

hackromer
Respuesta: FR | ASM | Carga de Mugshots mediante ASM

que gran aporte, llevaba varios días intentando hacer esto, lo que mas me gusto fue que no usas la bese de jpan, que por algún motivo no era compatible con una herramienta que estaba usando.

muchas gracias.
 

Sayer301!

UnityLord!
Miembro de honor
Respuesta: FR | ASM | Carga de Mugshots mediante ASM

Yiah makayinah broo! que guapo me renta! es de esos aportes que te la ponen medio dura!

No tengo nada de ganas de comentar, pero este aporte lo merecía, te llevas mi repu maan!

EDIT: No me deja!! tengo que esparcirla mas! ajajjaa
 

BLAx501!

A veces comento en temas :3
Miembro de honor
Usuario de Platino
Respuesta: FR | ASM | Carga de Mugshots mediante ASM

Ostras tío, genial genial genial :D

Me sirve bastante para una cosilla xD
 
Respuesta: FR | ASM | Carga de Mugshots mediante ASM

@Soloo.EXE este es método que yo utilizo, es el mismo que está
en Pokeco.

En fin, que bueno que lo allas traido a WAH, a mi me funciona perfecto.
 

Nacho

Nadando hasta la otra orilla
Respuesta: FR | ASM | Carga de Mugshots mediante ASM

Yiah makayinah broo! que guapo me renta! es de esos aportes que te la ponen medio dura!

No tengo nada de ganas de comentar, pero este aporte lo merecía, te llevas mi repu maan!

EDIT: No me deja!! tengo que esparcirla mas! ajajjaa
ya que Gold está banneado jaajaj te convoco a ti sayer, la pregunta es bien especifica, este tutorial presume que ya insertaste tus mugshot, pues la pregunta es como insertarlos de manera adecuada, cuantas opciones tengo, supongo que insertar uno en los 25 espacios es un método, pero el tuto dice que se peude 255 mugshot así que presumo que se podran insertar de otra manera, cuál es la otra manera(s)? slds
 

Dr._Seuss

Average RomHacker
Respuesta: FR | ASM | Carga de Mugshots mediante ASM

ya que Gold está banneado jaajaj te convoco a ti sayer, la pregunta es bien especifica, este tutorial presume que ya insertaste tus mugshot, pues la pregunta es como insertarlos de manera adecuada, cuantas opciones tengo, supongo que insertar uno en los 25 espacios es un método, pero el tuto dice que se peude 255 mugshot así que presumo que se podran insertar de otra manera, cuál es la otra manera(s)? slds
En el tutorial se especifica que en este metodo no se tocan los slots usados para sprites, son sprites independientes entre sí, lee detenidwmente de nuevo el tutorial e intentalo de nuevo.

PD: No tengo PC , ando de paso :c
 
Respuesta: FR | ASM | Carga de Mugshots mediante ASM

Me encanto el tutorial está muy bien explicado. ¡Lo usaré en mi proyecto!
 

DrakoVinyl

Profesional de WaH
Respuesta: FR | ASM | Carga de Mugshots mediante ASM

Puede que sea una duda un poquis tonta, pero como inserto los msghost, me refiero a las imágenes en cuestion. ya se que se hace con unlzgba y tal, de hecho las he insertado, pero no se si de la forma correcta, puesto que al ativar el msg en un script, el mini del prota me queda con la paleta del msg
 

Nacho

Nadando hasta la otra orilla
Respuesta: FR | ASM | Carga de Mugshots mediante ASM

@Gold sabes si esta rutina le va al pokemon ruby? estoy en un proyecto con esa rom base y me vendría muy bien
 

Jo7a

Kiero mi nick amarillo D:
Respuesta: FR | ASM | Carga de Mugshots mediante ASM

@Gold sabes si esta rutina le va al pokemon ruby? estoy en un proyecto con esa rom base y me vendría muy bien
Solo es para FR que yo sepa, pero vamos, aunque sirviese para ruby no te la recomiendo por que la rutina está bugeada.

Me parece genial que álguien traduzca un tutorial de pokeco y nos traiga ésta rutina, pero no estaría de más advertir que da errores...
 

CompuMax

Discord: CompuMax#0425
Re: Respuesta: FR | ASM | Carga de Mugshots mediante ASM

Solo es para FR que yo sepa, pero vamos, aunque sirviese para ruby no te la recomiendo por que la rutina está bugeada.

Me parece genial que álguien traduzca un tutorial de pokeco y nos traiga ésta rutina, pero no estaría de más advertir que da errores...
Saludos @Jo7a Me podrías decir que bug tiene esta rutina?

Estoy usando el showpokepic para mostrar los mugshots pero cuando la combino con una rutina de ASM para cargar una VS. Battle Bar me dá problemas gráficos. Así que me recomendaron usar esta.

Saludos y de antemano gracias por la respuesta.

:)
 

Jo7a

Kiero mi nick amarillo D:
Respuesta: Re: Respuesta: FR | ASM | Carga de Mugshots mediante ASM

Saludos @Jo7a Me podrías decir que bug tiene esta rutina?

Estoy usando el showpokepic para mostrar los mugshots pero cuando la combino con una rutina de ASM para cargar una VS. Battle Bar me dá problemas gráficos. Así que me recomendaron usar esta.

Saludos y de antemano gracias por la respuesta.

:)
A mi me dio problemas por ejemplo con minis que desaparecían en mitad del script al ejecutarse un mugh (pasaba a a veces) y otro error que ahora mismo no recuerdo, pero no es recomendable usarla.
 

CompuMax

Discord: CompuMax#0425
Re: Respuesta: Re: Respuesta: FR | ASM | Carga de Mugshots mediante ASM

A mi me dio problemas por ejemplo con minis que desaparecían en mitad del script al ejecutarse un mugh (pasaba a a veces) y otro error que ahora mismo no recuerdo, pero no es recomendable usarla.
Conoces algún otro método vía ASM para mostrar mugshots que no tenga bugs?

¿:.
 

Jo7a

Kiero mi nick amarillo D:
Respuesta: Re: Respuesta: Re: Respuesta: FR | ASM | Carga de Mugshots mediante ASM

Conoces algún otro método vía ASM para mostrar mugshots que no tenga bugs?

¿:.
Puedes usar el special de Jpan para mostrar imgs de 64x64.

Este sistema usa el metodo de carga de las imgs de los fósiles del museo de FR, solo que expande la tabla para poder meter muchisimos más.
 

CompuMax

Discord: CompuMax#0425
Re: Respuesta: Re: Respuesta: Re: Respuesta: FR | ASM | Carga de Mugshots mediante ASM

Puedes usar el special de Jpan para mostrar imgs de 64x64.

Este sistema usa el metodo de carga de las imgs de los fósiles del museo de FR, solo que expande la tabla para poder meter muchisimos más.
Gracias! Voy a probarlo a ver que tal va con la Vs. Bar.

:D
 

Dr._Seuss

Average RomHacker
Respuesta: FR | ASM | Carga de Mugshots mediante ASM

No sé porque dices que tiene bugs, @Jo7a, esta rutina la he tenido puesta en tres hacks distintos, y nunca me ha dado fallo alguno, el único existente es el de usar esta rutina con la rutina de paletas de overworlds dinámicos, de ahi todo va bien en lo que a mí respecta, lo veo seguro de usar.
 

CompuMax

Discord: CompuMax#0425
Respuesta: FR | ASM | Carga de Mugshots mediante ASM

No sé porque dices que tiene bugs, @Jo7a, esta rutina la he tenido puesta en tres hacks distintos, y nunca me ha dado fallo alguno, el único existente es el de usar esta rutina con la rutina de paletas de overworlds dinámicos, de ahi todo va bien en lo que a mí respecta, lo veo seguro de usar.
Jejeje
Precisamente la iba a usar con la rutina de paletas de ow dinámicas. Lo bueno es que se puede quitar de forma segura. Ahora cuéntame... Que problemas da al usarlas juntas?
 

Jo7a

Kiero mi nick amarillo D:
Respuesta: FR | ASM | Carga de Mugshots mediante ASM

No sé porque dices que tiene bugs, @Jo7a, esta rutina la he tenido puesta en tres hacks distintos, y nunca me ha dado fallo alguno, el único existente es el de usar esta rutina con la rutina de paletas de overworlds dinámicos, de ahi todo va bien en lo que a mí respecta, lo veo seguro de usar.
Pues yo usé la rutina de los mughs en el BD y en el Johto cuando lo empezé y me dió errores como los ya mencionados antes. Y no uso el sistema de las paletas dinámicas.
 

N00bAutist

N00b deseoso de aprender.
Respuesta: FR | ASM | Carga de Mugshots mediante ASM

Hola muy buenas, antes que nada pido perdón, aún hay muchas cosas que no entiendo ya que soy n00b y quizás sólo diga tonterías.

Bueno el tema es que me interesaría meter mugshots, he probado todos los tutoriales que hay en wahack, el showpokepick (no conseguía transparencias y me daba problemas con los vs bars), he probado otro de asm con imágenes en 80x80 (también me ha dado problemas con las vs bars) y finalmente me he decidido por este, similar al 80x80 ya que son los dos por asm, el caso es que este es el único que no me funciona, me carga bien la imagen pero parece que tiene algún tipo de problema con la paleta, los colores se ven horrendos, estoy utilizando la misma imagen con los mismos offsets (tanto el offset de imagen como de paleta me han funcionado en los otros tutoriales citados anteriormente) y este tutorial aparentemente parece funcionar, sin contar que me lo bugea mi mini (mi muñequito, el protagonista, red), se le cambia la paleta, no es capaz de cargarla bien, ¿me podrías ayudar?

PD: Cuando uso esta tabla:

[puntero de la imagen]08[Puntero de la paleta]08[Numero de slot de paleta][00 00 00]

pongo el offset de mi imagen (bien indexada), el offset de la paleta (me la ha detectado bien en otros tutoriales) y el 'número de slot de la paleta', el tema del slot de la paleta no sé bien a qué se refiere, imagino que será la paleta a cargar, como estoy en la imagen 0, pues dejo el slot de paleta en 00, ¿no?, también he probado en dejarla por defecto (0E), y nada, y ya luego dejo '00 00 00' igual.

Si alguien me puede comentar otro método por ASM que funcione bien o quizás soy yo el que hago mal las cosas, por favor no dudéis en decírmelo.

Muchas gracias a todos.

Saludos (^-^)/.


EDIT: Ya lo he solucionado (he hallado la solución en el post original de pokeco), para ello se tiene que insertar la paleta de colores sin usar en unLZ GBA, repito, NO usar para insertar paletas de colores de tu mugshot, simplemente inserta la imagen del mugshot indexada y con una resolución de 64x64, dale a 'write to rom' y sólo seleccionar la palomita 'export image', le das a 'Ok'.



Ahora abres tu mugshot (tu imagen) usando por ejemplo irfanview, una vez abierta ahora ves a: 'Image -> Increase Color Depth' y seleccionáis '256colors'.


Ahora vais a: 'Image -> Palette -> Export Palette' y guardáis.

Para finalizar abrís el APE (advance palette editor), cargáis vuestra rom, ahora introducís un offset libre en: 'Dirección hex' (que será el de la paleta).

Le dais a cargar, importais la paleta que exportamos con irfanview.


Y simplemente guardáis, si os pregunta si estáis seguros, le decís que sí.

Fuente.
 
Última edición:
Arriba