[Otros] E, FR, R | Activar un Script usando un Objeto


Like Tree39Gracias
Respuesta
 
Herramientas Desplegado
  #1  
30/10/2015
Corazón E, FR, R | Activar un Script usando un Objeto
Holi, el dia de hoy les traeré un tutorial simple y facil de entender.
El objetivo es crear un objeto en Pokémon Ruby, Emerald o Fire Red mediante el cual activaremos un script.
Antes de empezar, como siempre, tocan los creditos.
El creador de la rutina original que es para Fire Red fue Darthatron y la posteó justo aqui.
El que porteó la rutina a Pokémon Emerald fue Phenom2122 y la posteó justo aqui.
El que porteó la rutina a Pokémon Ruby fue karatekid552 y la posteó justo aqui.
Dicho eso, empecemos.

Requisitos:
-ROM de Pokémon Fire Red USA v1.0 / ROM de Pokémon Emerald USA / ROM de Pokémon Ruby USA v1.0
-Editor Hexadecimal de nuestra preferencia (Yo usaré mi amado HxD)
-Un editor de objetos (Yo usaré Item Manager)
-Una calculadora en modo programador (Yo usaré el sencillo calc.exe de toda la vida)
Opcionalmente tambien podemos usar un editor de texto para tomar notas (Yo usaré el buen notepad.exe)

Procedimiento:
1) Primero debemos crear nuestro objeto.
Los parametros mas relevantes son:
Nombre, Index Number, Pocket, Type y Field Usage.

En mi caso, este fue el resultado:


2) Con nuestro objeto ya creado, ahora debemos escribir el script al que invocará.
Tal y como la primera vez, yo escribí un script que me permita curar a mi equipo Pokémon.

3) Ya listos nuestro objeto y nuestro script, es hora de usar nuestro editor hexadecimal.
Lo primero que haremos será insertar en un offset vacio esta Rutina ASM Compilada:

Fire Red:
10 B5 04 1C 78 46 13 30 0C 49 08 60 20 1C 0C 49 00 F0 10 F8 10 BC 01 BC 00 47 10 B5 04 1C 0A 48 05 49 00 F0 07 F8 20 1C 06 49 00 F0 03 F8 10 BC 01 BC 00 47 08 47 C0 46 E5 9A 06 08 98 99 03 02 3D 10 0A 08 09 75 07 08 XX XX XX 08

Emerald:
10 B5 04 1C 78 46 13 30 0C 49 08 60 20 1C 0C 49 00 F0 10 F8 10 BC 01 BC 00 47 10 B5 04 1C 0A 48 05 49 00 F0 07 F8 20 1C 06 49 00 F0 03 F8 10 BC 01 BC 00 47 08 47 C0 46 F9 8E 09 08 F4 A0 03 02 DD D0 0F 08 9D 90 0A 08 XX XX XX 08

Ruby:
10 B5 04 1C 78 46 13 30 0C 49 08 60 20 1C 0C 49 00 F0 10 F8 10 BC 01 BC 00 47 10 B5 04 1C 0A 48 05 49 00 F0 07 F8 20 1C 06 49 00 F0 03 F8 10 BC 01 BC 00 47 08 47 C0 46 B9 55 06 08 00 5D 00 03 51 90 0C 08 75 AB 07 08 XX XX XX 08

Como veran, la rutina tiene un "XX XX XX".
Eso lo reemplazarán con el offset donde hayan insertado su script, convertido en pointer.

¿Como convertir un offset en pointer? Simple y sencillo.
Tomamos nuestro offset, intercambiamos la posición de su primer y tercer par, añadimos un "08" al final y ya está.

Ejemplo: Yo inserté mi script en 802C28.
Asi que intercambio las posiciones del primer y el tercer par dando como resultado 28 2C 80
Para terminar añado un 08 resultando en 28 2C 80 08, ese es mi pointer.


En este caso, el 08 ya está incluido en la rutina por lo que no hace falta.

4) Con nuestra rutina ya insertada en nuestra ROM y dentro de ella nuestro script, toca volver al Item Manager.
Vamos al Field Usage del objeto y lo reemplazaremos por el offset donde insertamos la Rutina ASM Compilada +1, dejando intacto el 8 al inicio.
En mi caso, como mencioné antes, yo inserté la rutina en 71B850.
Por lo tanto, el Field Usage de mi objeto será: 871B851.

5) Guardamos y probamos.

Aqui mi resultado en las 3 ROMs.


Y eso es todo.

Post Original:

Spoiler

Holi.
Encontré hace un rato este precioso tutorial y quiero compartirlo con ustedes.
Antes de empezar, como siempre, los creditos totales van para Darthatron de PokeCommunity quien compartió su rutina justo aqui y tambien cabe aclarar que para el tutorial estaré utilizando FireRed.

Sin embargo, el usuario "Phenom2122" de PokeCommunity ha porteado la rutina a Pokémon Emerald justo aqui.

Ahora si, dicho esto...
¡Empecemos!

1) Primero, creamos un objeto en Item Manager.
Los parametros a rellenar son.
-Nombre del Objeto (En mi caso, "HEALER")
-Index Number (En mi caso, 34)
-Descripción (Opcional)
-Pocket (En mi caso, "Key Items")
Clickeamos en el Boton ">>" y nos aseguramos de que el Type sea el 02 Use-of-SELECT.

2) Una vez que tengamos nuestro objeto ya creado, escribiremos nuestro Script en XSE.
En mi caso, yo hice un script que ejecutará un Msgbox, luego el fadescreen 0x1, luego el Special 0x0, luego el fadescreen 0x0, luego el Fanfare de curación, luego el waitfanfare, luego otro msgbox mas, y fin.
Si, adivinaron, un Item que curará a tus Pokémon <3 .. (2OP4M3)
Anoten el offset del script ya compilado, en mi caso fue: 900182

3) Ahora, necesitaremos poner esta rutina ASM compilada en algun Offset Libre.
Anoten tambien ese offset libre porque será el Field Usage del Objeto.
En mi caso, la rutina irá en: 71A330
Fire Red:
Código:
10 B5 04 1C 78 46 13 30 0C 49 08 60 20 1C 0C 49 00 F0 10 F8 10 BC 01 BC 00 47 10 B5 04 1C 0A 48 05 49 00 F0 07 F8 20 1C 06 49 00 F0 03 F8 10 BC 01 BC 00 47 08 47 C0 46 E5 9A 06 08 98 99 03 02 3D 10 0A 08 09 75 07 08 XX XX XX 08
Emerald:
Código:
10 B5 04 1C 78 46 13 30 0C 49 08 60 20 1C 0C 49 00 F0 10 F8 10 BC 01 BC 00 47 10 B5 04 1C 0A 48 05 49 00 F0 07 F8 20 1C 06 49 00 F0 03 F8 10 BC 01 BC 00 47 08 47 C0 46 F9 8E 09 08 F4 A0 03 02 DD D0 0F 08 9D 90 0A 08 XX XX XX 08
4) Modificaremos los bytes "XX XX XX" con el Offset donde está nuestro script compilado, convertido en un Pointer.

Mark: ¡Espera, Espera, Espera! ¡Alto ahi, cerebrito!
¿¡Y como se pasa de Offset a Pointer?

Lunos: ¡Pues muy sencillo, Mark!
Primero, tomaremos nuestro offset, que repito, en mi caso fue el: 900182
Segundo, lo separamos en 3 parejas de 2 digitos cada uno.
En mi caso, 900182 quedaria en 90 01 82
Y en Tercero, lo daremos vuelta de este modo: "82 01 90"

Nota: Normalmente, se añade un "08" al final, pero como en este caso ya está añadido, pues nada.

5) Volvemos al Item Manager, abrimos nuestra ROM, vamos hacia nuestro objeto, pulsamos el Boton ">>" y nos centraremos en el Campo "Field Usage".
¿Recuerdas que te dije que guardases el Offset en el que ponias la Rutina ASM compilada?
Pues ahora lo necesitarás.
En mi caso, puse el codigo en el offset 71A330 como dije anteriormente.
Pues lo unico que tenemos que hacer es poner el offset +1 en el Field Usage.

¿Yo puse mi trozo de codigo en 71A330?
Pues entonces, el Field Usage quedará en "871A331"
-"8" al inicio porque asi funciona Item Manager.
-Y 71A331 porque 71A330 + 1 = 71A331

Y listo, está hecho.
¡Ahora solo nos queda darnos el objeto mediante GiveItem (O GivePokemon con el Objeto Equipado, da igual) y a probar!

Algunas imagenes del producto terminado:

Spoiler



Y como se que unos simples Msgbox en Imagen no demuestran mucho..
Aqui dejo el IPS.
ponganlo en una ROM Limpia de FireRed y vayan con el Youngster del Centro Pokemon de Ciudad Verde.

ADVERTENCIA:

Spoiler

Al parecer, algunos comandos podrian no funcionar.
Yo he usado el "lock" y arruina totalmente el objeto.
Asi que principalmente, jueguen un poco con eso.
Yo puedo confirmar que los comandos:
-Msgbox 0x5 y 0x6
-Fanfare 0x100
-Waitfanfare
-Fadescreen 0x1 y 0x0
-Compare LASTRESULT 0x1
-If 0x1 goto
-If 0x0 goto
Funcionan perfectisimamente.


Y bueno, eso ha sido todo.
Espero que les sea de utilidad.
Hasta luego <3

EDITO:
En lo posible, leanlo despacio porque podria ser un tanto confuso.
Si se necesita, quiza termine añadiendo imagenes en cada paso.

EDITO2:
¡Diantres!
He puesto "Registrar" en el titulo en lugar de "Registrando" >_< ...
Si un Moderador pudiese corregirlo, seria fenomenal <3

EDITO3 (02/08/2017):
Añadida una versión de la rutina compilada para Pokémon Emerald.
La de Fire Red NO funciona en Emerald.

Última edición por Lunos; 02/08/2017 a las 21:51
  #2  
30/10/2015
Predeterminado Respuesta: GBA | Script | Activar un Script "Usando" o "Registrar" un Objeto
¡Brutal Lunos! Es un bestial aportazo.

En un principio no he entendido a que te referias, yo cambiaría el título por "Activar un script al usar un objeto". Creo que es más intuitivo.

Está genial, a simple vista ya me puedo imaginar un montón de cosas que se pueden hacer con esto- como por ejemplo: encender/apagar una linterna, activar/desactivar algún que otro aparato para dicho evento, hacer cambios de minis, givepokemons y muchísimos specials.

Gran aportazo, de veras, gracias por postearlo.

Un abrazo.

PD: La idea del "Healer" y otras más irán de puta madre para el testeo.
Gracias: Lunos

Click para ver la firma




FEL!X



Premios




Galería (Link directo)



Aportaciones y participaciones



Algunas respuestas a posts y más posts





Respuesta: Cuantos años teneis? Que año Conocisteis Wah?

Respuesta: Con qué Pokémon te has encariñado y porqué?

Respuesta: GBA | Gráficos | [AVANZADO] ¡Añadir más frames a tus minis!

[Vídeo] Cuando Pokemon GO se vuelve violento
Respuesta: Rap de los Hackrom - Sage [A capella]
Respuesta: GBA | ASM | Clase Número 3: Instrucciones Básicas
Respuesta: ¿Cómo olvido a una chica? No puedo.
Respuesta: [Encuesta]¿Que encuentras mas divertido/entretenido al Rom Hackear/Makear?
* * *
Respuesta: [Cosas De WaH Ep2]¡¡5 Cosas Paranormal Que Nos Han Sucedido!!
Respuesta: FR| ASM| Salto en cualquier dirección.
Respuesta: [Cosas De WaH Ep1]¡¡10 Cosas Sobre Nosotros!!
¡fel!xidades! (Gracias a todos)

¡Ya están aquí!: Resultados PWaH 2015

Respuesta: ¿Qué estás escuchando ahora? (2)
* * *

Respuesta: [Relato de invierno] Chicago.
Respuesta: ¡TIPOS DE HACKERS! ¡Dime qué clase eres tú!
[TAG del MangaAnime]
Respuesta: [FR][DUDA]Comandos de dinero
[Por Una Wah Unida]
Respuesta: Mis motivos de estar aqui
* * *

Respuesta: Psicólogo para el psicólogo, filósofo para el filósofo~
Respuesta: ¿Qué estás escuchando ahora?
Respuesta: [Historia] Hijos del bosque, hijos del viento
Respuesta: [IDEA] Jugador se pueda liar
Respuesta: ¿Cuál es vuestro arquetipo de personaje favorito?
Respuesta: [Encuesta] ¿Cuál fue tu primer juego de pokemon?
* * *


Respuesta: [Test] ¿Qué tipo de personalidad eres?(Viva el comandante FEL!X)

Tu TOP 5 de animes (Mi propio top)
Respuesta:Pregunta a todos los spriters (Mi punto de vista)
Respuesta: IDEA | Nuevos Tipos Elementales 8El tipo experto)
Respuesta: IDEA | Nuevos Tipos de Evolucion (El caso de Machamp )

¡Un abrazo!

  #3  
30/10/2015
Predeterminado Respuesta: GBA | Script | Activar un Script "Usando" o "Registrar" un Objeto
Dicho por FEL!X Ver mensaje
¡Brutal Lunos! Es un bestial aportazo.

En un principio no he entendido a que te referias, yo cambiaría el título por "Activar un script al usar un objeto". Creo que es más intuitivo.

Está genial, a simple vista ya me puedo imaginar un montón de cosas que se pueden hacer con esto- como por ejemplo: encender/apagar una linterna, activar/desactivar algún que otro aparato para dicho evento, hacer cambios de minis, givepokemons y muchísimos specials.

Gran aportazo, de veras, gracias por postearlo.

Un abrazo.

PD: La idea del "Healer" y otras más irán de puta madre para el testeo.
¡Es cierto! ¡Ni lo habia pensado!
¡Esto viene de perlas para hacer Trajes a modo de Objetos <3
Sobre el titulo, creo que los Usuarios sin rango no pueden modificarlo, yo al menos lo intenté pero al modificar el post principal, no me deja alterar el titulo >_< ...

EDITO:
Ahi está, tan solo tenia que ir al Editor Avanzado, ni me habia fijado xDD
  #4  
30/10/2015
Predeterminado re: E, FR, R | Activar un Script usando un Objeto
Genial, genial y más que genial

Este es el tutorial que usé para los nuevos items del Ragnarök, es una pasada de tutorial, gracias por traerlo, le servirá a muchos.

Saludos c:
Gracias: Lunos y Иacho
Cuando el Dragón Verde y Negro se convierta en el terrible gigante y desate su furia contenida contra todo ser viviente y conquiste el cielo... Vida y Muerte, Cielo y Tierra, Existencia y la Nada, Pasado y Futuro... Las flamas convertirán toda la vida en ruido y cubrirán el mundo. Aunque muchas almas vagarán, buscando un eterno descanso, ellas serán comida para la furia del gigante y consumidas por el Ragnarök, para dar inicio a una era de caos... Los mundos de Anctgard y Nezgard se aplastaran uno con otro, junto a sus respectivas penas... No existirá ni un solo rayo de luz o algún resquicio de la oscuridad. Solo el ruido inerte del La Sinfonía de un Final Destinado...
  #5  
23/06/2016
Predeterminado Respuesta: GBA | Script | Activar un Script usando un Objeto
WTF!! Porque esto tiene tan pocos comentarios?
En fin... este tutorial es la leche! Entendí completamente todo y está muy bien explicado. Felicitaciones Lunedì

Ahora es muy noche pero si esto sirve créeme que la voy voy liar en final red!

Muchísimas gracias papu
Paz y Respeto!

#Seich Capriccola
Gracias: Иacho
  #6  
23/06/2016
Predeterminado Respuesta: GBA | Script | Activar un Script usando un Objeto
Es lo que estaba buscando. Y la verdad es que me parece un tutorial bastante importante
como para que tenga tan pocos comentarios. Por cierto.
¿Alguien me explica con mayor detalle los pasos 3 y 4? XD
  #7  
23/06/2016
Predeterminado Respuesta: GBA | Script | Activar un Script usando un Objeto
Dicho por xabierpower2012 Ver mensaje
Es lo que estaba buscando. Y la verdad es que me parece un tutorial bastante importante
como para que tenga tan pocos comentarios. Por cierto.
¿Alguien me explica con mayor detalle los pasos 3 y 4? XD
Muy fácil. En un offset libre pones ese código que muestra en el tuto
Si te fijas bien, hacia el final del código hay 3X.
Pues esas 3X las sustituye por el puntero del offset donde has insertado el código.(punetero=offset permutado)
No creo que necesites una explicación de cómo se permuta, está explicado
Lo has entendido?
Un saludo, espero que te sirva.
  #8  
23/06/2016
Predeterminado Respuesta: GBA | Script | Activar un Script usando un Objeto
Dicho por Toni Ver mensaje
Muy fácil. En un offset libre pones ese código que muestra en el tuto
Si te fijas bien, hacia el final del código hay 3X.
Pues esas 3X las sustituye por el puntero del offset donde has insertado el código.(punetero=offset permutado)
No creo que necesites una explicación de cómo se permuta, está explicado
Lo has entendido?
Un saludo, espero que te sirva.
Lo he entendido. Lo que pasa es que nunca he buscado un offsets libre con este programa y entonces voy a lo desconocido. Claro que no es difícil de entender. Si tengo algun problema cuando lo haga os informo.
  #9  
23/06/2016
Predeterminado Respuesta: GBA | Script | Activar un Script usando un Objeto
Que programa?
HxD? Sólo tienes que mirar los bytes que tengan FF, significa que están vacías. Puedes buscar espacio con FSF
  #10  
23/06/2016
Predeterminado Respuesta: GBA | Script | Activar un Script usando un Objeto
He abierto el Item editor y me ha dado rum-time error "6"
Creo que con mi fire red no va. ¿Es lo mismo el item editor que el item manager?
Si alguien lo tiene que me lo pase. Gracias
Respuesta

Herramientas
Desplegado

Permisos para publicar mensajes
No puedes crear nuevos temas
No puedes responder mensajes
No puedes subir archivos adjuntos
No puedes editar tus mensajes

Los BB code están Activado
Los Emoticones están Activado
El código [IMG] está Activado
El Código HTML está Desactivado
Trackbacks are Activado
Pingbacks are Activado
Refbacks are Desactivado



Extra
Estilo clásico
La franja horaria es GMT +1. Ahora son las 01:33.