Registrarse

Problemas con los colores de las VS bars

Estado
Cerrado para nuevas respuestas.

Sayer301!

UnityLord!
Miembro de honor
Bueno, pues eso, resulta que he seguido este tutorial (que aunque lo haya subido, no es mio por lo que no se como funciona exactamente)

Y bueno parece que todo va bien, pero en la direccion que indica el tuto, no esta la paleta de las vs bars, hay otra.

Investigado me he dado cuenta que usa la paleta de la Tbox, cosa que no me interesa para nada porque la uso para los nombres de los personajes importantes.

¿Alguien sabe como cambiar esa paleta sin modificar la otra? O algun modo por chapucero que sea para cambiarla sin cambiar la de la tbox.

Un saludo!

PD: Si no me he explicado bien, preguntarme y os aclaro. Muchas gracias a todos!
 

BLAx501!

A veces comento en temas :3
Miembro de honor
Usuario de Platino
Vale, el problema está en que los offsets que ahí salen son para la ROM Alemana del juego. Esas no son las paletas en la ROM USA del juego :/

Lo pone en el link del tuto original en alemán xD
 

Sayer301!

UnityLord!
Miembro de honor
MMM no, en la ROM alemana que me has pasado me he ido a esa direccion y no hay ninguna paleta que no sea negro, creo que debe alguna forma de separar la de las VS bars y la del msgbox no?
 

HollowRoxas

Namine... What's happening to me...?
Es lo que te dije, deje de intentar como cambiarlo por lo que no podría ayudarte.
Yo pude cambiar tres colores sin que se notara mucho pero igualmente tuve que cambiar colores de la Tbox.
Lo mas sencillo pero chapucero es dejar la vs bar con colores que sean parecidos a la box.

El fondo del tbox esta en negro por uno de los colores de las barritas de encima y debajo de la bar,
si lo pusieras en blanco la bar quedaría parcialmente cambiada y el box estaría bien.
Solo que uno de los colores de las letras se volvería azul y la flechita roja quedaría negra pero mas o menos quedaría bien.

EDIT: Si en vez de 100 en el trainerbattle pones 200 la bar tiene otras paletas, 300 otra mas, y así hasta 2000.
Así es como en la elite four hay un color para cada combate. Se debería encontrar una de esas paletas y cambiarla.
Yo conseguí cambiar la VS Bar cambiando la paleta de los arboles en vez de la del Tbox con 400 creo o 300 en el trainerbattle.
 
Última edición:

Sayer301!

UnityLord!
Miembro de honor
Es lo que te dije, deje de intentar como cambiarlo por lo que no podría ayudarte.
Yo pude cambiar tres colores sin que se notara mucho pero igualmente tuve que cambiar colores de la Tbox.
Lo mas sencillo pero chapucero es dejar la vs bar con colores que sean parecidos a la box.

El fondo del tbox esta en negro por uno de los colores de las barritas de encima y debajo de la bar,
si lo pusieras en blanco la bar quedaría parcialmente cambiada y el box estaría bien.
Solo que uno de los colores de las letras se volvería azul y la flechita roja quedaría negra pero mas o menos quedaría bien.
Ya pero al usar los colores de la tbox para los nombres de los personajes, o cambio los colores de estos o cambio la VS bars y la verdad, no se que me jode mas. De todas formas se agradece la info, igual puedo hacer algo aunque con la mezcla que tengo, lo dudo, mira la imagen.
 

HollowRoxas

Namine... What's happening to me...?
Ya pero al usar los colores de la tbox para los nombres de los personajes, o cambio los colores de estos o cambio la VS bars y la verdad, no se que me jode mas. De todas formas se agradece la info, igual puedo hacer algo aunque con la mezcla que tengo, lo dudo, mira la imagen.
Prueba a cambiar el 200 del reserved a 100 o un nuemero superior como 300, 400 o 500, debería aparecer con otros colores.
Luego solo seria cosa de encontrar la paleta de una de esas bars y cambiarla, una de ellas esta conjuntada con la pal de los tiles,
Tendras la Bar bien pero los arboles, hierba y demás no quedara muy bonito del resto de reserveds no he podido localizar la paleta.
 

Sayer301!

UnityLord!
Miembro de honor
Prueba a cambiar el 200 del reserved a 100 o un nuemero superior como 300, 400 o 500, debería aparecer con otros colores.
Luego solo seria cosa de encontrar la paleta de una de esas bars y cambiarla, una de ellas esta conjuntada con la pal de los tiles,
Tendras la Bar bien pero los arboles, hierba y demás no quedara muy bonito del resto de reserveds no he podido localizar la paleta.
Eso tambien lo pensé, la 100 coge un color mate, granate y si cambio ese color, se cambian todos. es decir, un color unico para todo.
El resto, todas me cojen el color de la tbox la 300 la 400 la 500 la 600 la 700... todas usan la paleta de la tbox
 

HollowRoxas

Namine... What's happening to me...?
Eso tambien lo pensé, la 100 coge un color mate, granate y si cambio ese color, se cambian todos. es decir, un color unico para todo.
El resto, todas me cojen el color de la tbox la 300 la 400 la 500 la 600 la 700... todas usan la paleta de la tbox
No lo entiendo, aveces a mi en la 100 también me aparecía el de el tbox y en la 300 hacia arriba, pero aveces no.
Encontré una en colores de verde claro a oscuro al cambiarla se cambiaron los tiles, otra de marrón claro a oscuro no la pude localizar.
Luego encontre una con el color de la bar del prota pero sin las barritas de arriba y abajo. Nunca llegue a conseguir nada medio bueno. :s
 

Jo7a

Kiero mi nick amarillo D:
Lo único que se me ocurre de por qué todas tus VS bars tienen la pal de la t-box, es o por la última parte del tuto que me dijiste que no hiciste, o por que has echo algo mal a la hora de insertar las rutinas.

Si no es eso, pues no se. Lo normal es que cambie de color al cambiar el nº en el trainerbattle. ¿:.
 

Sayer301!

UnityLord!
Miembro de honor
Lo único que se me ocurre de por qué todas tus VS bars tienen la pal de la t-box, es o por la última parte del tuto que me dijiste que no hiciste, o por que has echo algo mal a la hora de insertar las rutinas.

Si no es eso, pues no se. Lo normal es que cambie de color al cambiar el nº en el trainerbattle. ¿:.
Eso ya lo he editado y aun asi nada, y he revisado por si acaso byte a byte a ver si habia copiado bien las rutinas y esta todo bien, por lo que ya no le veo el sentido...
 

Sayer301!

UnityLord!
Miembro de honor
Se supone, que donde has puesto la "table2: .word 0x08FFFFFF", en la última rutina, debías escribir una dirección en donde estaría la tabla para las paletas ¿Haz cambiado eso verdad? Si lo haz hecho ¿Haz escrito los Pointer a las paletas?

Saludines! :D

PD: El Source code realmente original se encuentra aquí:

PHO - Pokémon Hackers Online - View Single Post - [Document] Jambo51's ASM Resource Center
Bufff me ha costado bastante entenderlo XDDD Pero ya he entendido a que te referias.
El caso es que yo no se de compilar rutinas ni cosas así, usé la rutina ya compilada a Hex, voy a probar aunque no estoy muy seguro de como va pero voy a ver que sale. Si no, ¿Hay alguna forma de cambiar ese offset sin aplicar de nuevo la rutina?

EDITO: No consigo usar un compilador de ASM como dios manda, no se si es que soy imbecil, muy noob o que pasa pero soy INCAPAZ de cargar una rutina en el compilador.
 
Última edición:

Cheve

MoonLover~
Miembro de honor
Haber, que hago una traduccion by me xD

Código:
.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
Para insertarla: Ésta rutina la pasas a Hex y la compilas en un offset libre que termine en 0, 4, 8 o C.
Vas a 0x83862 y reemplazas lo que hay con ésto 01 4C 20 47 00 00 XX XX XX 08 donde XX XX XX es donde insertaste la rutina + 1 (Es un Pointer, asi que tienes que darlo vuelta) (Ej: insertaste la rutina en 0x954F30 pues anotas 31 4F 95 en las XX XX XX)

Ésta rutina lee qué sprite es el del trainer que vas a combatir, y se lo manda a la rutina original que lo carga desde allí.

También necesitarás la siguiente rutina.Ésta rutina lee el Script del TrainerBattle, un byte de éste, que le dice si debe o no cargar el Mugshot.

Código:
.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
Donde Insertarla:
Ésta rutina la pasas a Hex y la compilas en un offset libre que termine en 0, 4, 8 o C.
Ve a 0x7FF90, y reemplaza lo que está ahí con lo siguiente: 00 4A 10 47 XX XX XX 08
donde XX XX XX es donde insertaste la rutina + 1 (Es un Pointer, asi que tienes que darlo vuelta) (Ej: insertaste la rutina en 0x954F30 pues anotas 31 4F 95 en las XX XX XX)

Éste codigo simplemente lee el Script del trainerbattle para juzgar si debe o no cargar el Mugshot. Si el byte cargado es distinto de 0, cargará el mugshot.


Y la parte final de código, que nos permite cargar distintas paletas:

Código:
.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
Donde Insertarla:
Ésta rutina la pasas a Hex y la compilas en un offset libre que termine en 0, 4, 8 o C.
Ve a 0xD28C6, y reemplaza lo que está ahí con lo siguiente: 01 49 08 47 00 00 XX XX XX 08
donde XX XX XX es donde insertaste la rutina + 1 (Es un Pointer, asi que tienes que darlo vuelta) (Ej: insertaste la rutina en 0x954F30 pues anotas 31 4F 95 en las XX XX XX)


Ésta rutina, lee el Byte dado por el Script del Trainerbattle, para determinar que paleta de fondo cargar para el Mugshot. La "table2: .word 0x08FFFFFF" es donde estará la nueva tabla que contendrá los pointers a las nuevas paletas que puedes crear para los Mugshots. Para entender como funcionan las paletas de éstos, puedes ver una de las de los mughshots de Fire red llendo a la direccion 0x3FA6A0 en APE. Esto te mostrará como están construidas las paletas. NO tienes que crear una paleta para hombre y una para mujer, el juego se dá cuenta cual es necesaria, y pega los colores relevantes al final de la paleta que creaste

Tambien necesitas ir a 0x801F5 y cambiar el byte a 0x78.

'--- Aquí termina la traducción...


Lo más dificil de entender, es que en la ultima rutina, cerca del final donde pone:

table2: .word 0x08FFFFFF

debes reemplazar esas FFFFFF con una dirección en donde quieres que estén las direcciones a las paletas que se usarán para los mugshots...

PD: No me leí el tuto en español xD

Edito: ¿Que problemas tienes al Compilarla?
 

Sayer301!

UnityLord!
Miembro de honor
Haber, que hago una traduccion by me xD

Código:
.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
Para insertarla: Ésta rutina la pasas a Hex y la compilas en un offset libre que termine en 0, 4, 8 o C.
Vas a 0x83862 y reemplazas lo que hay con ésto 01 4C 20 47 00 00 XX XX XX 08 donde XX XX XX es donde insertaste la rutina + 1 (Es un Pointer, asi que tienes que darlo vuelta) (Ej: insertaste la rutina en 0x954F30 pues anotas 31 4F 95 en las XX XX XX)

Ésta rutina lee qué sprite es el del trainer que vas a combatir, y se lo manda a la rutina original que lo carga desde allí.

También necesitarás la siguiente rutina.Ésta rutina lee el Script del TrainerBattle, un byte de éste, que le dice si debe o no cargar el Mugshot.

Código:
.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
Donde Insertarla:
Ésta rutina la pasas a Hex y la compilas en un offset libre que termine en 0, 4, 8 o C.
Ve a 0x7FF90, y reemplaza lo que está ahí con lo siguiente: 00 4A 10 47 XX XX XX 08
donde XX XX XX es donde insertaste la rutina + 1 (Es un Pointer, asi que tienes que darlo vuelta) (Ej: insertaste la rutina en 0x954F30 pues anotas 31 4F 95 en las XX XX XX)

Éste codigo simplemente lee el Script del trainerbattle para juzgar si debe o no cargar el Mugshot. Si el byte cargado es distinto de 0, cargará el mugshot.


Y la parte final de código, que nos permite cargar distintas paletas:

Código:
.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
Donde Insertarla:
Ésta rutina la pasas a Hex y la compilas en un offset libre que termine en 0, 4, 8 o C.
Ve a 0xD28C6, y reemplaza lo que está ahí con lo siguiente: 01 49 08 47 00 00 XX XX XX 08
donde XX XX XX es donde insertaste la rutina + 1 (Es un Pointer, asi que tienes que darlo vuelta) (Ej: insertaste la rutina en 0x954F30 pues anotas 31 4F 95 en las XX XX XX)


Ésta rutina, lee el Byte dado por el Script del Trainerbattle, para determinar que paleta de fondo cargar para el Mugshot. La "table2: .word 0x08FFFFFF" es donde estará la nueva tabla que contendrá los pointers a las nuevas paletas que puedes crear para los Mugshots. Para entender como funcionan las paletas de éstos, puedes ver una de las de los mughshots de Fire red llendo a la direccion 0x3FA6A0 en APE. Esto te mostrará como están construidas las paletas. NO tienes que crear una paleta para hombre y una para mujer, el juego se dá cuenta cual es necesaria, y pega los colores relevantes al final de la paleta que creaste

Tambien necesitas ir a 0x801F5 y cambiar el byte a 0x78.

'--- Aquí termina la traducción...


Lo más dificil de entender, es que en la ultima rutina, cerca del final donde pone:

table2: .word 0x08FFFFFF

debes reemplazar esas FFFFFF con una dirección en donde quieres que estén las direcciones a las paletas que se usarán para los mugshots...

PD: No me leí el tuto en español xD

Edito: ¿Que problemas tienes al Compilarla?
Nada, no sabia que con el thumbs podia hacerlo XD lios mios. El caso es que ya se jaja puto Jo7a siempre salvandome el ano.

Vale, todo entendido en principio, el unico problema es la tabla de paletas que me cuentas, yo he puesto directamente la paleta en esa direccion.

He visto lo que me has dicho del offset 3FA6A0 pero no termino de entenderlo la verdad, prefiero hacer pruebas luego con la paleta para aclararme mejor, lo que no se es como poner la estructura de la paleta en esta tabla.
¿Con poner el offset de la paleta permutado me valdria o tengo que poner algo mas?
 

Jo7a

Kiero mi nick amarillo D:
Nada, no sabia que con el thumbs podia hacerlo XD lios mios. El caso es que ya se jaja puto Jo7a siempre salvandome el ano.

Vale, todo entendido en principio, el unico problema es la tabla de paletas que me cuentas, yo he puesto directamente la paleta en esa direccion.

He visto lo que me has dicho del offset 3FA6A0 pero no termino de entenderlo la verdad, prefiero hacer pruebas luego con la paleta para aclararme mejor, lo que no se es como poner la estructura de la paleta en esta tabla.
¿Con poner el offset de la paleta permutado me valdria o tengo que poner algo mas?
Si, tienes que poner el offset permutado, si no me equivoco hay que poner tambien un 08, tu offset seria (sin permutar) 083FA6A0. Pero no estoy seguro de si en este caso sehace asi. Pero bueh, tenlo en cuenta.
 

Sayer301!

UnityLord!
Miembro de honor
Bueno, pues sois la polla limonera!!! He conseguido agregar varias paletas diferentes y todo funciona genial!!! Os quiero!

Y bueno pediria que cerrasen tema, pero parece que me toca a mi jaja asi que eso, gracias de nuevo y cierro tema!
 
Estado
Cerrado para nuevas respuestas.
Arriba