qna_rh
Thread Id: 19813
Thread Name: La rom se reinicia automáticamente en medio de un script
#0
Aarón~ 24267
El problema... Que en medio de un script la rom se reinicia y de repente vuelve a la pantalla del título. Uso de emulador VBA, lo he probado con no$gba y en vez de volver a la pantalla del título se queda encallado.
Lo único que hice antes de que me sucediera ese error fue quitar un setflag (porque no la necesitaba) y ya he probado de volver a colocarlo y sigue igual.

Que sepáis que también he probado de usar una copia de seguridad pero curiosamente también le pasa el mismo error...

Por si os sirve la flag que quite es 903, que es una flag libre en la rom de Fire Red tal y como esta especificado en este tema: http://wahackforo.com/t-aporte-codigos-pkm-ruby-movs-flags-especiales-etc

Alguien sabe como arreglarlo?
#1
ReoNeky 18653
Mmmm.... Seguramente sea otra cosa la que de ese problema, quitarías la setflag y modificarías algo... porque por quitar la flag no se jode un script.

Puede ser muchas por muchas cosas, si dieses más datos te podríamos ayudar. Si pudieras poner el script podríamos mirar si es problema de eso.
#2
Loony Boo♪ 12263
Tiene toda la pinta de cascón del 15 (osea, rom jodido hasta arriba). ¿No tienes copias más antiguas? ¿Usas espacios libres para compilar tus scripts? ¿Has ampliado o creado algún mapa en tu hack? No se me ocurre mucho más. Si lo deseas, puedes pasarme el script por privado, o bien publicarlo en el tema.

También puedes contactarme por email, lo encontrarás en mi perfil.
#3
Aarón~ 24267
Iniciado por ReoNeky Asakura
Mmmm.... Seguramente sea otra cosa la que de ese problema, quitarías la setflag y modificarías algo... porque por quitar la flag no se jode un script.

Puede ser muchas por muchas cosas, si dieses más datos te podríamos ayudar. Si pudieras poner el script podríamos mirar si es problema de eso.


El script:



Es un script de gatillo. Se ejecuta todo bien hasta lo que esta marcado en verde, cuando llega a la parte roja se reinicia el juego.

EDIT:
Iniciado por (_.K._)
Tiene toda la pinta de cascón del 15 (osea, rom jodido hasta arriba). ¿No tienes copias más antiguas? ¿Usas espacios libres para compilar tus scripts? ¿Has ampliado o creado algún mapa en tu hack? No se me ocurre mucho más. Si lo deseas, puedes pasarme el script por privado, o bien publicarlo en el tema.

También puedes contactarme por email, lo encontrarás en mi perfil.


La verdad, las que tengo más antiguas sería tirar muy para atras. Si, uso espacios libres. No, no he ampliado o creado ningun mapa.
#4
ReoNeky 18653
Es lo que tiene usar el dynamic, que puede ocasionar problemas al sobreescribir y tocar algo. Pues no veo nada fuera de lo normal ahí, quizás sea problema de los movimientos del apply de donde se crashea el juego.
#5
Aarón~ 24267
Iniciado por ReoNeky Asakura
Es lo que tiene usar el dynamic, que puede ocasionar problemas al sobreescribir y tocar algo. Pues no veo nada fuera de lo normal ahí, quizás sea problema de los movimientos del apply de donde se crashea el juego.


Sí, cuando el jugador hace un paso es cuando la rom se reinicia. Aún así he revisado los movimientos y están todos bien. Nada raro por ahí.
#6
ReoNeky 18653
En ese caso puede ser del mapa o e algo jodido en el rom.
Enn cuanto a lo que te ha dicho Boo, podrías pasarle el rom y que mire lo que le ocurre, quizás no sea para tanto, o sí, ¿Quien sabe?

¡Nos vemos!
#7
Loony Boo♪ 12263
Creo que ya sé cuál es el problema, os lo voy a explicar. Veréis, los offsets de los msgbox y applymovement no van a dar problemas, puesto que habéis empleado espacios nuevos (de 800000 hacia adelante). Pero, hay un pequeño contratiempo, y es que habéis compilado vuestro script en un offset "antiguo" (por llamarlo de alguna forma), y lo más seguro es que hayáis sobreescrito algunos datos importantes, y por tanto, os lo habéis cargado.



La solución que tengo en mente es:

1º Abrir editor hex (recomiendo HexWorkShop).
2º Abres una copia de seguridad en la que no hayas sobreescrito
3º Te diriges hacia el offset en cuestión
4º Por otro lado, abres el rom con el problema, también te diriges hacia ese offset
5º Sólo te queda reemplazar los bytes problemáticos por los bytes originales
6º Luego asegúrate de buscar un offset principal que no dé problemas

No se me ocurre nada más, aparte de coger una copia antigua, claro.
#8
Aarón~ 24267
Vale, no tengo ni idea de hex pero tengo un problema. He abierto ese editor con la rom antigua, y he ido al offset 26D385 pero se ve que no existe. Pasa del offset 26D374 al 26D388. Una imagen:


#9
Rogy 12282
Iniciado por Aaron
Vale, no tengo ni idea de hex pero tengo un problema. He abierto ese editor con la rom antigua, y he ido al offset 26D385 pero se ve que no existe. Pasa del offset 26D374 al 26D388. Una imagen:



Sí existe, pero el editor hexadecimal te dice sólo el offset del primer byte de cada línea. Cada uno de los dos grupos de caracteres que ves separados por un espacio es un byte, así cuenta desde el número de la línea.

De todas maneras, no importa que sea el mismo offset, simplemente copiar desde un offset en el que no tiene error y pegar en el mismo offset en tu ROM a restaurar. Te recomiendo copiar desde un offset por detrás del offset que usas hasta que veas que se terminan las FF (si son demasiadas... pues no).

Voy a ver si te calculo cuántos bytes te ocupa ese script para ayudarte a "contar".

¡Un saludo!

EDIT: Compilado, en hexadecimal tu script es este:
33 a4 01 00 4f 08 00 1c 0b 80 08 51 08 00 28 35
00 4f 08 00 1f 0b 80 08 51 08 00 28 05 00 0f 00
31 0a 80 08 09 06 4f 08 00 68 6d 80 08 4f ff 00
9a 6e 80 08 51 08 00 0f 00 d7 0a 80 08 09 06 28
50 00 0f 00 f5 0a 80 08 09 06 4f ff 00 c8 6f 80
08 51 ff 00 29 03 09 16 fe 40 02 00 02Lo que significa que tiene de extensión menos de 96 bytes [16 (porque las columnas de mi editor hex van de 0 a F) x 6 líneas incompletas (filas en el editor)]

Veo que tu editor tiene columnas de 20 bytes, así que copia desde la 26D374 hasta seis o siete columnas después y pégalo en la ROM con error desde el mismo offset (26D374).

Espero que se arregle.

¡Un saludo!

PD: Ni se te ocurra volver a usar el dynamic desde un offset anterior a 800000. Yo no lo usaba por evitarme este tipo de cosas (estoy retirado desde hace... años, xD).
#10
Krako 26661
Me acaba de pasar lo mismo con un script. En mitad de el, me vuelve el VBA a la pantalla de título. Ya somos 2 :S
Aqui os dejo el script:
#dynamic 0x800000
#org @inicio
checkflag 0x2101
if 0x1 goto @inicio3
checkflag 0x2100
if 0x1 goto @inicio2
msgbox @frase 0x6
givepokemon 0xE4 0x5 0x0 0x0 0x0 0x0
setflag 0x800
setflag 0x860
setflag 0x2100
end
#org @frase
= Te estaba esperando, recluta.\nMe llamo Truck, y soy el\lcomandante de la sección A de\lNoxux.\lComo ya te habrá dicho Giovanni,\lte daré un pokémon y un par de\lcosas más para que puedas empezar\la trabajar para nosotros.\lNormalmente, a los reclutas les\ldamos un poochyena cualquiera,\lpero Giovanni insistió en que te\ldiera un buen pokémon, así que\laqui tienes. Cuídalo bien, es la\lcría de mi primer pokémon.\lTambién te daré esto, son unas\ldeportivas sigilosas. Ah!, y casi\lse me olvida: Toma, Un PokeCheck.\l¿Que qué es un pokécheck, dices?\lEs un aparato parecido a una\lpokédex, cuya diferencia es que\lsolo te muestra los datos de los\lpokémon cuando los capturas, luego\lno los podrás consultar.\lEn fin, aqui te lo dejo todo.\lTu primera misión será de\lreconocimiento. Hace una hora que\lmandé a un recluta a por una\lplanta muy importante para una\linvestigación. Ve y comprueba que\lno hay policias dandole problemas.
#org @inicio2
msgbox @frase2 0x6
applymovement 0x3 @mov1
setflag 0x2101
end
#org @mov1
#raw 0x96
#raw 0x3
#org @frase2
= Venga, andando
#org @inicio3
msgbox @frase3 0x6
end
#org @frase3
= Ya te he dejado el camino libre,¿a\nqué esperas?
#11
Rogy 12282
No parece ser la misma causa, así que lo trataremos de manera diferente.

Compila de nuevo tu script y carga la dirección del script.
Danos de vuelta todo el código que te cargue XSE (sin mierdas de dynamic y todo eso, el código real) y di la rom base.
Si no te carga algo parecido a lo que has compilado, ¡tachán!, he ahí el error (algo se sobreescribe encima).

Y, por cierto, acostumbraos a resolver algunos errores por vosotros mismos, no hace ni diez minutos que te hemos resuelto Jon y yo un error del mismo script y ya estás preguntando por otro, ergo no le has dedicado ni diez minutos a depurar tu código, ¬¬
#12
Krako 26661
el codigo queda asi, parece que todo encaja, no entiendo nada ¿:.
'---------------
#org 0x8003F0
checkflag 0x2101
if 0x1 goto 0x88007DA
checkflag 0x2100
if 0x1 goto 0x88007B2
msgbox 0x8800424 MSG_NORMAL '"Te estaba esperando, recluta.\nMe ..."
givepokemon 0xE4 0x5 0x0 0x0 0x0 0x0
setflag 0x800
setflag 0x860
setflag 0x2100
end

'---------------
#org 0x8007DA
msgbox 0x88007E4 MSG_NORMAL '"Ya te he dejado el camino libre,¿a..."
end

'---------------
#org 0x8007B2
msgbox 0x88007C9 MSG_NORMAL '"Venga, andando"
applymovement 0x3 0x88007C6
setflag 0x2101
end


'---------
' Strings
'---------
#org 0x800424
= Te estaba esperando, recluta.\nMe llamo Truck, y soy el\lcomandante de la sección A de\lNoxux.\lComo ya te habrá dicho Giovanni,\lte daré un pokémon y un par de\lcosas más para que puedas empezar\la trabajar para nosotros.\lNormalmente, a los reclutas les\ldamos un poochyena cualquiera,\lpero Giovanni insistió en que te\ldiera un buen pokémon, así que\laqui tienes. Cuídalo bien, es la\lcría de mi primer pokémon.\lTambién te daré esto, son unas\ldeportivas sigilosas. Ah!, y casi\lse me olvida: Toma, Un PokeCheck.\l¿Que qué es un pokécheck, dices?\lEs un aparato parecido a una\lpokédex, cuya diferencia es que\lsolo te muestra los datos de los\lpokémon cuando los capturas, luego\lno los podrás consultar.\lEn fin, aqui te lo dejo todo.\lTu primera misión será de\lreconocimiento. Hace una hora que\lmandé a un recluta a por una\lplanta muy importante para una\linvestigación. Ve y comprueba que\lno hay policias dandole problemas.

#org 0x8007E4
= Ya te he dejado el camino libre,¿a\nqué esperas?

#org 0x8007C9
= Venga, andando


'-----------
' Movements
'-----------
#org 0x8007C6
#raw 0x96 'Walk Left
#raw 0x3 'Face Right

Lo peor de todo, es que antes de congelarse, va directamente al "Venga, andando", Cuando se supone que eso solo pasa si activo la flag 2100, que se activa DESPUES DE QUE SALGA EL TEXTO LARGO, pero por lo visto, por alguna razón se activa antes, sin que nada ni nadie se lo ordene.
#13
Rogy 12282
Te recomiendo poner realeases antes de los ends, personalmente me han ayudado a no sobrecargar la RAM con algunos scripts que se quedaban abiertos, lo que originaba este tipo de crashes.

No veo ningún error ahora así desde el móvil. Prueba con otras flags, quizá esas están usadas. Para saber las flags que están en uso, consulta la documentación de XSE (Es un archivo que tiene como icono una interrogación, tiene una guía completa de scripting).
Quizá al arreglar las flags, se arregle todo, porque puede que esté en conflicto con algo del sistema.

EDIT: El applymovement nunca termina, no tiene parámetro FE, que indica el final. Añádelo.
EDIT2: Añade también un waitmovement, ya que estás, es útil, aunque no creo que eso influya.

Un saludo.

Enviado desde Tapatalk