Registrarse

[ASM] FR | Scrolling Multichoice

Sage0ne

Baneado
HEY! Qué pedo cachorros?!
En esta ocasión os traigo un tutorial muy bonico para crear Infinitas Cajas de múltiple selección con desplazamiento vertical . Este sistema está creado por FBI, podeis ver el post oficial haciendo click aquí.


IMPORTANTE: apuntar bien las direcciones de donde insertais los siguientes bytes. Recordad insertarlos en cualquier dirección con suficiente espacio y que comience con 0, 4, 8 ó C

PRÓLOGO
Esta rutina, se basa en el 'special 0x158' pero, ¿Qué hace originalmente este special?

Este special, es usado en un NPC de Ciudad Celeste, el cual nos habla sobre las medallas, mostrandonos una multichoice box bastante extensa, igual con otro caso similar con el tio del polvo de bayas.



Las multichoice box, naturalmente no pueden mostrar más que 8 opciones (aprox) y una de éstas, debe ser obligatoriamente la de 'CERRAR' debido a como se debe configurar en el script..
No tocaré este tema ya que compete más la parte 'Scripting' e imagino que los que sigan este tutorial tendrán al menos un nivel Intermedio-Avanzado sobre ello, así que pasemos a lo que hace.

En esta rutina, FBI, quita los limitadores que tiene ese special, además de modificar el código para que se pueda almacenar en una variable, haciendolo verdaderamente sencillo.

Ahora bien, ¿Cómo se inserta?

PASO 1
Antes que nada vamos a armar nuestra tabla, esto podría resultar algo confuso, así que para que os enredeis os dejo un ejemplo gráfico:


#1: Puntero general de nuestra tabla
Este puntero es el más importante, y debeis guardarlo pues la rutina lo utiliza para guiarse y estructurar la tabla de las multichoice.
En este paso, debéis dejar 4 bytes por cada entrada en la tabla que quierais usar.

Yo en mi caso he dejado 60 bytes, para así tener espacio para 20 tablas:



IMPORTANTE: En caso de que quierais apartar espacio para más tablas, os recomiendo rellenar el resto con
'00 00 00 08', de esta manera no se buscará espacio en esa parte de la ROM cuando hackeeis normalmente y podreis reconocer inmediatamente que se trata de una tabla
#2. Nombres de las Opciones
Si sabes algo de scripting, dominarás esto en simples pasos, no tiene mucho misterio, simplemente son los nombres de las opciones escritas en hexadecimal



Para hacer esto, simplemente debeis copiar la offset que os tira XSE en el modo dinámico y permutarlo, en caso de que no sepais como permutar o tengais flojera de hacerlo, os podeis ahorrar toda esa pesada labor gracias al Permutador de nuestro colega @Naren Jr.



IMPORTANTE: Si eres de los que no tiene tiempo, o suele cerrar por error el XSE, Es muuy recomendable Guardar el 'log' que os da el mismo programa y guardarlo en formato .txt para más tarde ^^
#3: Opciones de X Tabla
Cada tabla tiene sus multichoice, es decir la cantidad de opciones que se mostrarán en la textbox, aquí debéis poner los punteros (offset invertido) de los nombres de las opciones de vuestro multichoice.

Yo en mi caso he hecho una enciclopedia de Bayas, así que lo he ordenado así:



PASO 2
Una vez que hayais configurado vuestras tablas, lo que teneis que hacer es insertar la siguiente rutina (Compilada para ahorrarles el trabajo):

14 4C 24 88 0A 21 6C 52 68 5E C0 00 0F 4A 00 F0 1A F8 11 4C 20 60 0E 4A 00 F0 15 F8 00 26 00 24 0A 22 A8 5E BB 00 9A 46 06 A9 89 46 86 42 08 DA 05 4A 0A 49 09 88 89 00 52 18 12 68 90 46 08 48 00 47 08 48 00 47 10 47 XX XX XX 08 B1 2B 00 08 7D BA 0C 08 BA 70 03 02 14 9A 03 02 B8 70 03 02 75 B9 0C 08 AF B9 0C 08
Dónde XX XX XX es el inicio de la Tabla Madre que vimos en el PASO 1.

PASO 3
Finalmente van a 0x0CB94C e insertais los siguientes bytes:

00 49 08 47 XX+1 XX XX 08
Dónde XX+1 XX XX es el puntero donde insertásteis la rutina anterior +1

También vais a 0x0CBB84 y sobreescribis los siguientes 4 bytes por 00 00 00 00

Listo!
Todo bien? Todo correcto? ¡Y yo que me alegro!

A USARLO!
Esta rutina usa los siguientes parámetros de variable para su uso:

setvar 0x8000 0xX 'numero de tabla de multichoice'
setvar 0x8001 0x# 'número de opciones que se mostrarán (en Hex)'
setvar 0x8004 0x0 ' 'standard'
De modo que en un Script se vería masomenos así:
(Script de muestra, NO USAR)

Código:
#dynamic 0x990000

'---------------
#org @start
faceplayer
lockall
msgbox   @Linea1 MSG_YESNO '"Es un libro que habla sobre las\nb..."
compare LASTRESULT 0x1
if 0x0 goto @snippet1
msgbox   @Linea2 MSG_FACE '"¿Sobre qué artículo te interesa\ns..."
call @snippet2
'---------------
#org @Linea1
msgbox @Linea3 MSG_SIGN '"[player] devolvió el libro a\nsu s..."
closeonkeypress
releaseall
end

'---------------
#org @Linea2
setvar 0x8000 0x0
setvar 0x8001 0xC
setvar 0x8004 0x0
special 0x158
waitstate
copyvar 0x8004 0x800D
compare 0X800D 0x0
if 0x1 goto @snippet3
compare LASTRESULT 0x1
if 0x1 goto @snippet4
compare lastresult 0x2
if 0x1 goto @caki
compare lastresult 0x3
if 0x1 goto @meloc
compare lastresult 0x4
if 0x1 goto @perasi
compare lastresult 0x5
if 0x1 goto @safre
compare lastresult 0x6
if 0x1 goto @ziuela
compare lastresult 0x7
if 0x1 goto @zidra
compare lastresult 0x8
if 0x1 goto @zana
compare lastresult 0x9
if 0x1 goto @zreza
compare lastresult 0xA
if 0x1 goto @eni
compare lastresult 0xb
if 0x1 goto @nada
releaseall
end
...
.
..
.

Les debería quedar una cosa masomenos así:



_____ _____ _____ _____ _____ _____ _____

Y eso ha sido todo, espero que os haya servido.
No olvideis dejar algo de repu
¡Saludos y Buenas vibras!

#SeichCapriccola

 
Última edición:

BLAx501!

A veces comento en temas :3
Miembro de honor
Usuario de Platino
Respuesta: [Tutorial FR] Scrolling Multichoice

Está genial que se traigan este tipo de aportes en nuestro idioma xD. Buen trabajo, yo ya lo usé en su momento y es algo realmente interesante para cualquier hack
 

Inferno

Personer
Respuesta: [Tutorial FR] Scrolling Multichoice

Me gusta lo que veo, hace no mucho andaba buscando algo parecido y hoy por fin lo encuentro. Sigue así y no dejes de traernos estos pedazo de aportes!!
 

Nacho

Nadando hasta la otra orilla
Respuesta: [Tutorial FR] Scrolling Multichoice

buuufff con esto se puede hacer un monton de cosas interesantes solo es tener imaginacion (muchos no la tienen xD ) en fin mis 10, realmente estupendo sigue asi
 

DrakoVinyl

Profesional de WaH
Respuesta: [Tutorial FR] Scrolling Multichoice

Nice!
Hey pero que pocos comentarios tiene esto. Buen tuto!
Lo leí por arriba y al principio marea un poquito por como esta escrito pero entender se entiende bastante bien. Estaba acostumbrado a usar mas el método de jpan pero veo que a este se le puede dar mucha utilidad para scripts personalizados de tiendas y cosas así.
En fin...
Saludos!
 

Helix Boo

Emperador Kaktiácero
Miembro de honor
Respuesta: [Tutorial FR] Scrolling Multichoice

Gran tutorial SAGE, ando siguiéndolo para una pequeña cosilla que quiero preparar y está bastante bien explicado, aunque he tenido que alternarlo con el tutorial original para poder seguir el hilo al 100%. Eso sí, deberías explicar que los cuatro bytes 00 que se colocan a partir de 0x0CBB84 sirven para no tener que colocar la opción de cancelar en la última posición (en tu caso, la opción "NADA").

Up y +Gracias.
 

Junior23c

Rookie
Respuesta: [Tutorial FR] Scrolling Multichoice

Me volvi loco, no entendi. Creo que sigo siendo muy noob_7u7 jajaja, no se si me puedes ayudar, necesito cuadro como el del Sr. ARENQUE de pokemon rubi - con warp a las ciudades pero sin los moviemientos. Gracias
 
Última edición por un moderador:

Sage0ne

Baneado
Respuesta: [Tutorial FR] Scrolling Multichoice

Me volvi loco, no entendi. Creo que sigo siendo muy noob_7u7 jajaja, no se si me puedes ayudar, necesito cuadro como el del Sr. ARENQUE de pokemon rubi - con warp a las ciudades pero sin los moviemientos. Gracias
hacer un warp es super sencillo, el tutorial esta bien explicado, si te pierdes es porque quizás no lo has ni intentado, te recomiendo informarte un poco sobre como usar un editor Hexadecimal, descargarte HxD (editor hexadeciaml por excelencia) y probarlo tu mismo. :dodgy:
 

Juan Kio

Usuario de Platino
Respuesta: [Tutorial FR] Scrolling Multichoice

Gran aporte! Sin duda estará en mi proyecto,se ve fácil...
Buen trabajo, gracias por traerlo a WaH
espero seguir viendo este tipo de cosas
Saludos!:D
 
Respuesta: [Tutorial FR] Scrolling Multichoice

Genial, antes lo había logrado pero no recordaba como.
Con esto tendre algo detallado a la mano para seguir trabajando.
Gracias por el aporte.
 

Nacho

Nadando hasta la otra orilla
buenamente gracias sage por traer estas cosas! lástima que aun estés baneado, aportabas mucho más que la mayoría al RH. Usaré esto en tu honor, tengo una idea ricolina en mente.
 
Arriba