Registrarse

Cambiar Byte de la ROM in-game (FR)

Estado
Cerrado para nuevas respuestas.

KevinXDE

Usuario mítico
Seguramente esta pregunta sea algo estúpida y ya me veo a venir que la respueta es "No se puede"

Me preguntaba si había alguna manera de hacer lo siguiente:

Ejemplo, en mi offset 800000 tengo el byte con valor FF. Si lo cambio directamente con un Editor Hexadecimal al valor 00, luego no puedo hacer que ese byte vuelva a ser FF. Es decir, quiero que en un momento tenga un valor (FF) y en otro momento tenga otro valor (00). Obviamente esto no se puede hacer con Write Byte To Offset, puesto que es la ROM, no la RAM (por eso digo que la pregunta es un poco estúpida, pero no pierdo la esperanza xD)

Necesito saber si hay algún método para hacer lo que pido

Gracias!
 

Invert

why so serious?
Tú mismo te respondes, no puedes cambiar algo de la Rom en juego, lo que puedes hacer es ver en que direccion de la RAM está lo que quieres cambiar.
 

Cheve

MoonLover~
Miembro de honor
ROM = Read Only Memory a eso se debe el Read Only :p

¿Para que lo quieres cambiar? Para buscarlo tienes que hacer un poco de "magia" con el VBA-SDL-H, te daría instrucciones más específicas pero no sé que buscas xD
 

KevinXDE

Usuario mítico
ROM = Read Only Memory a eso se debe el Read Only :p

¿Para que lo quieres cambiar? Para buscarlo tienes que hacer un poco de "magia" con el VBA-SDL-H, te daría instrucciones más específicas pero no sé que buscas xD
Ya ya xD, por eso decía que la pregunta es estupida, por lo de Read Only, pero como tampoco tengo mucha idea he preferido preguntar ^^'

Exactamente estoy buscando cambiar los bytes de los offsets 828FC-82903. Tengo una rutina parecida a ESTA, y al insertarla hay que cambiar dichos bytes. El problema es que no quiero que esta rutina esté activa por siempre, y si no cambias dichos bytes la rutina no funciona, por lo que quiero que en un momento determinado esos bytes hagan funcionar la rutina y en otro momento vuelvan a su estado por defecto.

(¿Quizás hay una manera más fácil de hacerlo?)
 

Invert

why so serious?
Ya ya xD, por eso decía que la pregunta es estupida, por lo de Read Only, pero como tampoco tengo mucha idea he preferido preguntar ^^'

Exactamente estoy buscando cambiar los bytes de los offsets 828FC-82903. Tengo una rutina parecida a ESTA, y al insertarla hay que cambiar dichos bytes. El problema es que no quiero que esta rutina esté activa por siempre, y si no cambias dichos bytes la rutina no funciona, por lo que quiero que en un momento determinado esos bytes hagan funcionar la rutina y en otro momento vuelvan a su estado por defecto.

(¿Quizás hay una manera más fácil de hacerlo?)
No tengo idea de como funciona esa rutina, pero si no quieres que pase siempre, puedes poner una condicion como en un script.
Puedes editar la rutina con una flag al inicio, si la activas seguirá el script, si no la activas pues no.
 

KevinXDE

Usuario mítico
No tengo idea de como funciona esa rutina, pero si no quieres que pase siempre, puedes poner una condicion como en un script.
Puedes editar la rutina con una flag al inicio, si la activas seguirá el script, si no la activas pues no.
Ya, mi idea inicial era esa, pero el caso es que si no se hacen los respectivos cambios en lo offsets que he dicho, la rutina no se activa.

En los Offset 828FC-82903 se encuentra lo siguiente:

Código:
60 78 21 78 88 42 01 D3
Para que la rutina vaya bien hay que cambiarlo por lo siguiente:

Código:
00 4C 20 47 XX XX XX XX
Donde XX XX XX XX es el pointer a la rutina +1.

Por lo que, por mucho que inserte una flag a esa rutina, si no cambio esos bytes, no funcionará.
 

Invert

why so serious?
Ya, mi idea inicial era esa, pero el caso es que si no se hacen los respectivos cambios en lo offsets que he dicho, la rutina no se activa.

En los Offset 828FC-82903 se encuentra lo siguiente:

Código:
60 78 21 78 88 42 01 D3
Para que la rutina vaya bien hay que cambiarlo por lo siguiente:

Código:
00 4C 20 47 XX XX XX XX
Donde XX XX XX XX es el pointer a la rutina +1.

Por lo que, por mucho que inserte una flag a esa rutina, si no cambio esos bytes, no funcionará.
Vale, lo que escribes en esa direccion es algo llamado hook, lo que hace es llamar a la rutina automaticamente (no lo haces tu). Debes cambiar esos bytes obviamente para que la rutina se active, lo que yo te digo es, ya que la rutina se activará automaticamente puedes poner una flag en tu rutina y asi ponerle una condicion.
 

KevinXDE

Usuario mítico
Vale, lo que escribes en esa direccion es algo llamado hook, lo que hace es llamar a la rutina automaticamente (no lo haces tu). Debes cambiar esos bytes obviamente para que la rutina se active, lo que yo te digo es, ya que la rutina se activará automaticamente puedes poner una flag en tu rutina y asi ponerle una condicion.
Probaré lo que dices, a ver si así de una vez por todas consigo lo que busco xD. Es que si no cambias esos bytes y haces un callasm en un script sigue sin funcionar, es por eso por lo que creía que una flag no funcionaría.

Entonces, se supone que cuando el juego lea esa parte de la ROM, redirecciona a la rutina, y es entonces cuando se activa / no se activa, dependiendo de si la flag asignada a la rutina esta seteada o no. ¿He entendido bien?
 

KevinXDE

Usuario mítico
Vale, estoy teniendo problemas ahora mismo xD. He hecho lo de la flag, y creo que eso si lo he hecho bien, pues cuando hago clearflag/setflag 0x250 (flag que he puesto), el resultado es distinto. Cuando la flag está activada, voy a la hierba alta y la rutina se activa correctamente, pero cuando desactivo la flag y voy a la hierba alta, antes de salir un Pokémon se reinicia el juego. Creo que el problema es que no estoy haciendo bien lo de redireccionar a la rutina original. Exactamente no se cual es el proceso que se tiene que seguir para ello, estoy mirando varios posts en Pokecommunity, pero como mi nivel de ASM es bajo...

He encontrado este post: http://www.pokecommunity.com/showpost.php?p=8616786&postcount=5

Entiendo lo de que se tiene que cargar un pointer con la rutina original, pero de hecho creo que estoy fallando en eso, encontrar la rutina original xD. Llevo toda la tarde con esto y la verdad es que estoy muy saturado, a lo mejor es muy facil y no lo estoy viendo...

Edito: Al final ya lo solucioné :D, se puede cerrar el tema
 
Última edición:
Estado
Cerrado para nuevas respuestas.
Arriba