Registrarse

[ASM] Sistema de Textbox's - [Fire Red]

Hola amigos de WaH, vengo a traerles un tutorial de una rutina muy, (lo digo enserio) muy interesante, espero le den un buen uso, ahora, empecemos.

Esto del Sistema de Textbox’s basa en que con el valor de una variable, podrán cambiar de textbox, a cuantas quieran, dependiendo del valor de la variable.

Necesario:
  • HxD (U cualquiera que usen, aunque yo veo más fácil ese).
  • NLZ-GBA (También pueden con el GBA Graphics Editor).
  • FSF (O cualquier buscador de espacio libre).
  • XSE (Para probar la rutina).
  • Blog de Notas (Imposible de encontrar en una computadora).
  • Una rom de Fire Red (U).

Bueno, empezamos ahora sí.

Lo primero que haremos, crearemos una copia de nuestra rom (Para asegurar), de ahí abriremos el NLZ-GBA u el GBA Graphics Editor, en mi caso NLZ-GBA, cargamos nuestra rom, y vamos a esta dirección 0x41F1C8, como de seguro en NLZ-GBA les aparece una “X” desactivarán la opción “Compressed Graphics” y se verá así:



Y pondrán Width en 5 y Heigth en 4 se verá así:



Ahora, ¿se ven horribles las paletas cierto? Pues, porque deberíamos poner su paleta correspondiente, cuál es 0x471DEC en donde dice “ROM Pallete Offset” si no lo ven, aquí una imagen:



Ahora importemos los textbox’s que tengamos, ah, se me olvidó decirles que todas (TODAS) las textbox’s deben tener la misma paleta, discúlpenme por decirlo tarde, ahora, pueden juguetear un poco con sus textbox’s y continuemos, como normal, importen la textbox de la manera de cualquier otra imagen, también copien en un blog de notas, el offset donde insertaron la misma.



Ahora, no marquen lo de “Repoint Pointers” ya que queremos importar una nueva imagen, no remplazarla, así que, abramos el FSF o lo que tengan a preferencia, y busquen un offset libre, que cuente por lo menos con 12000 bytes libres (El FSF busca valores en Decimal, así que 12000 debería ser en Hexadecimal 2EE0) ojo con eso, ahora su búsqueda debería ser desde un offset, para asegurar no tener un problema, pondré que busque desde 0x800000, así:



Ahora, copien ese offset en NLZ-GBA, y dale a “OK” luego, vayan a ese offset en el NLZ-GBA, y denle a “Write to ROM” y copien el offset de esa en el blog de notas, ahora repitan este paso con la siguiente, pueden insertar cuantas quieran, solo debe tener la misma paleta.

Después de ya haberlas insertado todas, deberíamos hacer algo con sus offset ¿verdad? ¡Pues claro! Debemos de poner sus offsets en esta tabla:

XX XX XX 08 XX XX XX 08 XX XX XX 08 XX XX XX 08 XX XX XX 08 XX XX XX 08

XX XX XX: Lugar donde va el offset de cada textbox permutado.

Ahora, deberían saber, que en el primer “XX XX XX 08” va por lógica, la primera textbox que usarán, si insertaron más de las que tiene la tabla, fácil, solo ven cinco veces “XX XX XX 08” pues, insértenle los que necesiten, para así usar todas sus textbox, (No obstante, no sé hasta cuantas textbox pueden usar, les recomendaría usar por lo menos unas siete, o cinco) aunque yo usé solo cinco xD.

Esta es la mía: C8 F1 41 08 F4 F9 81 08 74 FC 81 08 F4 FE 81 08 74 01 82 08.

Ahora que ya permutaron, y acomodaron la tabla a su gusto, vamos a HxD, a insertarla, no la vamos a dejar de adorno ¿o sí? Bueno, abriendo el HxD, buscaremos un Offset libre (Ctrl+G), yo la inserté en 0x81F9E0 así:



Luego de eso, vamos con la rutina que es para la que usaremos esa tabla, la cuál es:

01 B4 07 48 00 F0 09 F8 00 88 07 49 80 00 09 58 01 BC A0 22 92 00 05 4B 18 47 02 49 08 47 C0 46 XX XX 00 00 55 E4 06 08 XX XX XX 08 CF FE 14 08

XX XX: La variable permutada que usaremos para el cambio de la textbox.

XX XX XX: Aquí va el offset de la tabla permutado.

En mi caso, la variable que usé fue 0x406C, y permutada 6C 40, y con la dirección ya dicha antes 0x81F9E0, sería E0F981 permutada, ahora insertamos la rutina, yo la inserté en 0x81F9B0 así:



Ahora iremos a la dirección 0x14FEC4 y pegaremos esto:

00 49 08 47 XX+1 XX XX 08

En XX+1 XX XX 08 va la dirección de la rutina anterior, permutada +1.

En mi caso fue 0x81F9B0, y permutada +1 sería B1 F9 81, entonces en donde dice:

00 49 08 47 XX+1 XX XX 08 a mi me quedaría así 00 49 08 47 B1 F9 81 08.

Ahora guardamos, y abrimos el XSE, para probar la rutina en mi caso hice este script sencillo:

#dynamic 0x800000

#org @inicio
Msgbox @algo 0x2
Setvar 0x406C 0x1
(Valor de la variable, dependiendo de cuál textbox quieran, cámbienla).
Callasm 0x805BE61 (Para refrescar la pantalla, aunque creo que no hace falta).
Msgbox @1 0x2 (El mensaje que les comprobará que la textbox fue cambiada).
Release
End

#org @algo
= Probando.

#org @1
= Cambio de textbox.



Insertamos ese script, en algún lugar para probarlo.

Resultado:


También olvidé decir, que con la rutina de Textbox transparente, y ese cambio de Textbox, no tendría ningún error, ya que usa la misma paleta, y si quieren modificar la paleta de la Textbox transparente, su paleta se encuentra en 0x750000, es lo primero que inserta la rutina. Aunque dependiendo de si usan el parche, o la insertan manualmente, será diferente, esa paleta la di, porque es la del parche.

Y bueno, como siempre digo, se me cuidan, si alguna duda, no lo piensen dos veces para comentar, u pedir ayuda.

Créditos a Kenny1 de Pokecomunnity y a mi por modificaciones minímas, por algunos bugs.

La probé después de las modificaciones, y ya está seguro su uso.
Como dice @LordBugrhak si encuentra la rutina para cambiar de paleta la textbox será más profesional, espero y la encuentre.

¡Se me cuidan princesos!
 
Última edición:

Bugrhak

A long time ago I used to call myself "Subzero".
Hola amigos de WaH, vengo a traerles un tutorial de una rutina muy, (lo digo enserio) muy interesante, espero le den un buen uso, ahora, empecemos.

Esto del Sistema de Textbox’s basa en que con el valor de una variable, podrán cambiar de textbox, a cuantas quieran, dependiendo del valor de la variable.

Necesario:

  • HxD (U cualquiera que usen, aunque yo veo más fácil ese).
  • NLZ-GBA (También pueden con el GBA Graphics Editor).
  • FSF (O cualquier buscador de espacio libre).
  • XSE (Para probar la rutina).
  • Blog de Notas (Imposible de encontrar en una computadora).
  • Una rom de Fire Red (U).

Bueno, empezamos ahora sí.

Lo primero que haremos, crearemos una copia de nuestra rom (Para asegurar), de ahí abriremos el NLZ-GBA u el GBA Graphics Editor, en mi caso NLZ-GBA, cargamos nuestra rom, y vamos a esta dirección 0x41F1C8, como de seguro en NLZ-GBA les aparece una “X” desactivarán la opción “Compressed Graphics” y se verá así:




Y pondrán Width en 5 y Heigth en 4 se verá así:



Ahora, ¿se ven horribles las paletas cierto? Pues, porque deberíamos poner su paleta correspondiente, cuál es 0x471DEC en donde dice “ROM Pallete Offset” si no lo ven, aquí una imagen:



Ahora importemos los textbox’s que tengamos, ah, se me olvidó decirles que todas (TODAS) las textbox’s deben tener la misma paleta, discúlpenme por decirlo tarde, ahora, pueden juguetear un poco con sus textbox’s y continuemos, como normal, importen la textbox de la manera de cualquier otra imagen, también copien en un blog de notas, el offset donde insertaron la misma.




Ahora, no marquen lo de “Repoint Pointers” ya que queremos importar una nueva imagen, no remplazarla, así que, abramos el FSF o lo que tengan a preferencia, y busquen un offset libre, que cuente por lo menos con 12000 bytes libres (El FSF busca valores en Decimal, así que 12000 debería ser en Hexadecimal 2EE0) ojo con eso, ahora su búsqueda debería ser desde un offset, para asegurar no tener un problema, pondré que busque desde 0x800000, así:



Ahora, copien ese offset en NLZ-GBA, y dale a “OK” luego, vayan a ese offset en el NLZ-GBA, y denle a “Write to ROM” y copien el offset de esa en el blog de notas, ahora repitan este paso con la siguiente, pueden insertar cuantas quieran, solo debe tener la misma paleta.

Después de ya haberlas insertado todas, deberíamos hacer algo con sus offset ¿verdad? ¡Pues claro! Debemos de poner sus offsets en esta tabla:

XX XX XX 08 XX XX XX 08 XX XX XX 08 XX XX XX 08 XX XX XX 08 XX XX XX 08

XX XX XX: Lugar donde va el offset de cada textbox permutado.

Ahora, deberían saber, que en el primer “XX XX XX 08” va por lógica, la primera textbox que usarán, si insertaron más de las que tiene la tabla, fácil, solo ven cinco veces “XX XX XX 08” pues, insértenle los que necesiten, para así usar todas sus textbox, (No obstante, no sé hasta cuantas textbox pueden usar, les recomendaría usar por lo menos unas siete, o cinco) aunque yo usé solo cinco xD.

Esta es la mía: C8 F1 41 08 F4 F9 81 08 74 FC 81 08 F4 FE 81 08 74 01 82 08.

Ahora que ya permutaron, y acomodaron la tabla a su gusto, vamos a HxD, a insertarla, no la vamos a dejar de adorno ¿o sí? Bueno, abriendo el HxD, buscaremos un Offset libre (Ctrl+G), yo la inserté en 0x81F9E0 así:




Luego de eso, vamos con la rutina que es para la que usaremos esa tabla, la cuál es:

01 B4 07 48 00 F0 09 F8 00 88 07 49 80 00 09 58 01 BC A0 22 92 00 05 4B 18 47 02 49 08 47 C0 46 XX XX 00 00 55 E4 06 08 XX XX XX 08 CF FE 14 08

XX XX: La variable permutada que usaremos para el cambio de la textbox.

XX XX XX: Aquí va el offset de la tabla permutado.

En mi caso, la variable que usé fue 0x406C, y permutada 6C 40, y con la dirección ya dicha antes 0x81F9E0, sería E0F981 permutada, ahora insertamos la rutina, yo la inserté en 0x81F9B0 así:




Ahora iremos a la dirección 0x14FEC4 y pegaremos esto:

00 49 08 47 XX+1 XX XX 08

En XX+1 XX XX 08 va la dirección de la rutina anterior, permutada +1.

En mi caso fue 0x81F9B0, y permutada +1 sería B1 F9 81, entonces en donde dice:

00 49 08 47 XX+1 XX XX 08 a mi me quedaría así 00 49 08 47 B1 F9 81 08.

Ahora guardamos, y abrimos el XSE, para probar la rutina en mi caso hice este script sencillo:


#dynamic 0x800000

#org @inicio
Msgbox @algo 0x2
Setvar 0x406C 0x1
(Valor de la variable, dependiendo de cuál textbox quieran, cámbienla).
Callasm 0x805BE61 (Para refrescar la pantalla, aunque creo que no hace falta).
Msgbox @1 0x2 (El mensaje que les comprobará que la textbox fue cambiada).
Release
End

#org @algo
= Probando.

#org @1
= Cambio de textbox.



Insertamos ese script, en algún lugar para probarlo.

Resultado:


También olvidé decir, que con la rutina de Textbox transparente, y ese cambio de Textbox, no tendría ningún error, ya que usa la misma paleta, y si quieren modificar la paleta de la Textbox transparente, su paleta se encuentra en 0x750000, es lo primero que inserta la rutina. Aunque dependiendo de si usan el parche, o la insertan manualmente, será diferente, esa paleta la di, porque es la del parche.

Y bueno, como siempre digo, se me cuidan, si alguna duda, no lo piensen dos veces para comentar, u pedir ayuda.

¡Se me cuidan princesos!
El aporte se agradece un montón, pero espera un momento pillín, que te estás olvidando de dar créditos (a menos que la rutina la hayas hecho tu).


En fin, los creditos van para Kenny1 de Pokecommunity.
Anyway, creo tener por algún lado una rutina que cambia la paleta de la textbox, si la encuentro os la comparto, o quien sabe, tal vez la integre a esta que cambia el grafico, eso estaría más bonito y profesional xD.
 
Última edición:
El aporte se agradece un montón, pero espera un momento pillín, que te estás olvidando de dar créditos (a menos que la rutina la hayas hecho tu).


En fin, los creditos van para Kenny1 de Pokecommunity.
Anyway, creo tener por algún lado una rutina que cambia la paleta de la textbox, si la encuentro os la comparto, o quien sabe, tal vez la integre a esta que cambia el grafico, eso estaría más bonito y profesional xD.
gracias se me había pasado lo de los créditos, y también informo que modifiqué un poco la rutina, ya que me crasheaba en algunos mapas la textbox, y quedó 100% libre de bugs xdd.
 

KERBEROS

Usuario de Platino
una pregunta.cundo termina el scrpt, regresa a la tbx original?
y la original esta en el valor 0 de la variable?

gran aporte
 
una pregunta.cundo termina el scrpt, regresa a la tbx original?
y la original esta en el valor 0 de la variable?

gran aporte
Dependiendo de la variable que uses el textbox volverá al normal al cargar el mapa, pero si usas la variable que yo usé y quieres que vuelva al original solo setea la variable usada a 0x0, y si quieres que se mantenga en esa, dejala así, usé esa variable del tutorial, ya que es una variable libre, y dejará la textbox que pongas hasta que no se setee nuevamente la textbox a 0x0.
 

KERBEROS

Usuario de Platino
Dependiendo de la variable que uses el textbox volverá al normal al cargar el mapa, pero si usas la variable que yo usé y quieres que vuelva al original solo setea la variable usada a 0x0, y si quieres que se mantenga en esa, dejala así, usé esa variable del tutorial, ya que es una variable libre, y dejará la textbox que pongas hasta que no se setee nuevamente la textbox a 0x0.
Otra pregunta bro, el callasm, solo lo llamo una vez, o cada ves que vaya a usar la rutina?
¿ no importa que no tenga un callasm de salida? o sea, uno que cierre la rutina, mas o menos como la de tbx transparente.
y por ultimo, Tengo expandidas las variables, se que debo provar por mi mismo, pero sabras si hay problema que use var de la 5000 en adelante?
 
Última edición:

Gold

Porrero a tiempo parcial
Miembro insignia
Otra pregunta bro, el callasm, solo lo llamo una vez, o cada ves que vaya a usar la rutina?
¿ no importa que no tenga un callasm de salida? o sea, uno que cierre la rutina, mas o menos como la de tbx transparente.
y por ultimo, Tengo expandidas las variables, se que debo provar por mi mismo, pero sabras si hay problema que use var de la 5000 en adelante?
La rutina solo se llama para hacer refrescado de pantalla. La caja de texto se carga mediate la variable. No funciona como las cajas transparentes. Y siempre y cuando uses una variable válida la rutina sirve
 
Otra pregunta bro, el callasm, solo lo llamo una vez, o cada ves que vaya a usar la rutina?
¿ no importa que no tenga un callasm de salida? o sea, uno que cierre la rutina, mas o menos como la de tbx transparente.
y por ultimo, Tengo expandidas las variables, se que debo provar por mi mismo, pero sabras si hay problema que use var de la 5000 en adelante?
como mismo dijo @Dr._Seuss arriba, es solo para refrescar la pantalla el callasm, y no necesita ningún callasm para cerrar, ni de salida ni nada, ya que no necesita llamar la rutina ASM, porque esa rutina toca únicamente la variable, significa que esa variable que uses en la rutina, es solo de la rutina.
 

Azulado

Ex-Creador de Genshin Emblem no es un hack de PKMN
Hola amigos de WaH, vengo a traerles un tutorial de una rutina muy, (lo digo enserio) muy interesante, espero le den un buen uso, ahora, empecemos.

Esto del Sistema de Textbox’s basa en que con el valor de una variable, podrán cambiar de textbox, a cuantas quieran, dependiendo del valor de la variable.

Necesario:
  • HxD (U cualquiera que usen, aunque yo veo más fácil ese).
  • NLZ-GBA (También pueden con el GBA Graphics Editor).
  • FSF (O cualquier buscador de espacio libre).
  • XSE (Para probar la rutina).
  • Blog de Notas (Imposible de encontrar en una computadora).
  • Una rom de Fire Red (U).

Bueno, empezamos ahora sí.

Lo primero que haremos, crearemos una copia de nuestra rom (Para asegurar), de ahí abriremos el NLZ-GBA u el GBA Graphics Editor, en mi caso NLZ-GBA, cargamos nuestra rom, y vamos a esta dirección 0x41F1C8, como de seguro en NLZ-GBA les aparece una “X” desactivarán la opción “Compressed Graphics” y se verá así:



Y pondrán Width en 5 y Heigth en 4 se verá así:



Ahora, ¿se ven horribles las paletas cierto? Pues, porque deberíamos poner su paleta correspondiente, cuál es 0x471DEC en donde dice “ROM Pallete Offset” si no lo ven, aquí una imagen:



Ahora importemos los textbox’s que tengamos, ah, se me olvidó decirles que todas (TODAS) las textbox’s deben tener la misma paleta, discúlpenme por decirlo tarde, ahora, pueden juguetear un poco con sus textbox’s y continuemos, como normal, importen la textbox de la manera de cualquier otra imagen, también copien en un blog de notas, el offset donde insertaron la misma.



Ahora, no marquen lo de “Repoint Pointers” ya que queremos importar una nueva imagen, no remplazarla, así que, abramos el FSF o lo que tengan a preferencia, y busquen un offset libre, que cuente por lo menos con 12000 bytes libres (El FSF busca valores en Decimal, así que 12000 debería ser en Hexadecimal 2EE0) ojo con eso, ahora su búsqueda debería ser desde un offset, para asegurar no tener un problema, pondré que busque desde 0x800000, así:



Ahora, copien ese offset en NLZ-GBA, y dale a “OK” luego, vayan a ese offset en el NLZ-GBA, y denle a “Write to ROM” y copien el offset de esa en el blog de notas, ahora repitan este paso con la siguiente, pueden insertar cuantas quieran, solo debe tener la misma paleta.

Después de ya haberlas insertado todas, deberíamos hacer algo con sus offset ¿verdad? ¡Pues claro! Debemos de poner sus offsets en esta tabla:

XX XX XX 08 XX XX XX 08 XX XX XX 08 XX XX XX 08 XX XX XX 08 XX XX XX 08

XX XX XX: Lugar donde va el offset de cada textbox permutado.

Ahora, deberían saber, que en el primer “XX XX XX 08” va por lógica, la primera textbox que usarán, si insertaron más de las que tiene la tabla, fácil, solo ven cinco veces “XX XX XX 08” pues, insértenle los que necesiten, para así usar todas sus textbox, (No obstante, no sé hasta cuantas textbox pueden usar, les recomendaría usar por lo menos unas siete, o cinco) aunque yo usé solo cinco xD.

Esta es la mía: C8 F1 41 08 F4 F9 81 08 74 FC 81 08 F4 FE 81 08 74 01 82 08.

Ahora que ya permutaron, y acomodaron la tabla a su gusto, vamos a HxD, a insertarla, no la vamos a dejar de adorno ¿o sí? Bueno, abriendo el HxD, buscaremos un Offset libre (Ctrl+G), yo la inserté en 0x81F9E0 así:



Luego de eso, vamos con la rutina que es para la que usaremos esa tabla, la cuál es:

01 B4 07 48 00 F0 09 F8 00 88 07 49 80 00 09 58 01 BC A0 22 92 00 05 4B 18 47 02 49 08 47 C0 46 XX XX 00 00 55 E4 06 08 XX XX XX 08 CF FE 14 08

XX XX: La variable permutada que usaremos para el cambio de la textbox.

XX XX XX: Aquí va el offset de la tabla permutado.

En mi caso, la variable que usé fue 0x406C, y permutada 6C 40, y con la dirección ya dicha antes 0x81F9E0, sería E0F981 permutada, ahora insertamos la rutina, yo la inserté en 0x81F9B0 así:



Ahora iremos a la dirección 0x14FEC4 y pegaremos esto:

00 49 08 47 XX+1 XX XX 08

En XX+1 XX XX 08 va la dirección de la rutina anterior, permutada +1.

En mi caso fue 0x81F9B0, y permutada +1 sería B1 F9 81, entonces en donde dice:

00 49 08 47 XX+1 XX XX 08 a mi me quedaría así 00 49 08 47 B1 F9 81 08.

Ahora guardamos, y abrimos el XSE, para probar la rutina en mi caso hice este script sencillo:

#dynamic 0x800000

#org @inicio
Msgbox @algo 0x2
Setvar 0x406C 0x1
(Valor de la variable, dependiendo de cuál textbox quieran, cámbienla).
Callasm 0x805BE61 (Para refrescar la pantalla, aunque creo que no hace falta).
Msgbox @1 0x2 (El mensaje que les comprobará que la textbox fue cambiada).
Release
End

#org @algo
= Probando.

#org @1
= Cambio de textbox.



Insertamos ese script, en algún lugar para probarlo.

Resultado:


También olvidé decir, que con la rutina de Textbox transparente, y ese cambio de Textbox, no tendría ningún error, ya que usa la misma paleta, y si quieren modificar la paleta de la Textbox transparente, su paleta se encuentra en 0x750000, es lo primero que inserta la rutina. Aunque dependiendo de si usan el parche, o la insertan manualmente, será diferente, esa paleta la di, porque es la del parche.

Y bueno, como siempre digo, se me cuidan, si alguna duda, no lo piensen dos veces para comentar, u pedir ayuda.

Créditos a Kenny1 de Pokecomunnity y a mi por modificaciones minímas, por algunos bugs.

La probé después de las modificaciones, y ya está seguro su uso.
Como dice @LordBugrhak si encuentra la rutina para cambiar de paleta la textbox será más profesional, espero y la encuentre.

¡Se me cuidan princesos!
Puedes por favor pasarme la textbox por privado 🙏🏻🙏🏻🙏🏻
 

H.B.P

Emperador Kaktiácero
Miembro de honor
Poner "release" sin "lock" no tiene ningún sentido, aunque pusiste el tipo 0x2 (sigo teniéndole fobia años después de dejar binario).

Excentricidades a un lado, el acabado es genial, así que buen aporte.
 
Poner "release" sin "lock" no tiene ningún sentido, aunque pusiste el tipo 0x2 (sigo teniéndole fobia años después de dejar binario).

Excentricidades a un lado, el acabado es genial, así que buen aporte.
Puse el release, porque a mi me sucede, que cuando uso el msgbox 0x2, el mini se queda paralizado viendo a la dirección de donde le hablas, y no vuelve a su movimiento original, y puse el release, para que volviera a la normalidad después de hablar, y probar el script con él.
 
Arriba