Registrarse

Problema XSE cambia comandos

Estado
Cerrado para nuevas respuestas.
Estimados, primero que todo mucho gusto al encontrarnos en este foro de dudas, la mia me tiene un poco complicado, paso a explicarla:

En XSE hago un script normal, sin complicaciones como rutinas ni nada de eso, solo comandos basicos, al compilar queda bien, pero luego, al intentar modificarlo, cambia mis comandos por otros que ni siquiera se muy bien su uso (me cambia un waitmovement por un nop y me elimina release y end, por ejemplo), este es el script que hago:

#dynamic 0x800000
#org @inicio
lock
faceplayer
compare 0x5001 0x1
if 0x1 goto @inicio2
compare 0x5001 0x2
if 0x4 goto @inicio3
msgbox @mensaje 0x6
callstd 0x2
addvar 0x5001 0x1
applymovement 0xF @movimiento
waitmovement 0x0
release
end

#org @inicio2
msgbox @mensaje2 0x6
callstd 0x2
applymovement 0xF @movimiento
waitmovement 0x0
release
end

#org @inicio3
msgbox @mensaje3 0x6
callstd 0x2
release
end

#org @mensaje
= Llevo tanto tiempo aqui... hace\nun tiempo escuche sobre un secreto\lescondido en el reloj...\pSi... el reloj de arriba... era\nla historia que nos contaban\lde pequeños. Yo iria, pero\lestoy muy viejo como para poder\lir yo.\pVe tu, y salvate.

#org @mensaje2
= Hazle caso a este viejo\ny salva tu vida.

#org @mensaje3
= Mucha suerte, recuerdanos cuando\nseas libre.

#org @movimiento
#raw 0x2 'Mirar Izquierda
#raw 0x6 'Paso Izquierda (lento)
#raw 0xFE 'Fin de los movimientos


Luego de eso, compilo (no sale ningun error) y el resultado al abrir desde el A-Map es este:

'-----------------------
#org 0x80071B
lock
faceplayer
compare 0x5001 0x1
if 0x1 goto 0x880074B
compare 0x5001 0x2
if 0x4 goto 0x8800757
msgbox 0x8800760 '"Llevo tanto tiempo aqui... hace\nun..."
callstd 0x2
addvar 0x5001 0x1
applymovement 0xF 0x88008B0
waitmovement 0x0
release
msgbox 0x8800856 '"Hazle caso a este viejo\ny salva tu..."
callstd 0x2
applymovement 0xF 0x81000FB0
jumpstd 0x80
jumpstd 0x9
end

'-----------------------
#org 0x80074B
msgbox 0x8800856 '"Hazle caso a este viejo\ny salva tu..."
callstd 0x2
applymovement 0xF 0x81000FB0
jumpstd 0x80
jumpstd 0x9
end

'-----------------------
#org 0x800757
msgbox 0x8800881 '"Mucha suerte, recuerdanos cuando\ns..."
callstd 0x2
release


'-----------
' Movements
'-----------
#org 0x8008B0
#raw 2 'Face Left
#raw 6 'Step Left (Slow)
#raw FE 'End of Movements


'---------
' Strings
'---------
#org 0x800760
= Llevo tanto tiempo aqui... hace\nun tiempo escuche sobre un secreto\lescondido en el reloj...\pSi... el reloj de arriba... era\nla historia que nos contaban\lde pequeños. Yo iria, pero\lestoy muy viejo como para poder\lir yo.\pVe tu, y salvate.

#org 0x800856
= Hazle caso a este viejo\ny salva tu vida.

#org 0x800881
= Mucha suerte, recuerdanos cuando\nseas libre.

En este caso me ha cambiado los waitmovement por jumpstd y me ha eliminado el ultimo end, por nombrar los cambios.

A veces pienso que puede ser por la version de XSE (no me permitio la actualizacion), pero prefiero preguntar, quizas estoy haciendo algo mal o me falta algo por hacer.

Desde ya muchas gracias por sus comentarios y soluciones.
 

Tsuna-Sawada

Décimo jefe Vongola
Pues no tengo la solución exacta a tu problema, yo tenia ese mismo problema y lo solucione, tan solo escribía el código de nuevo y lo copilaba y ponía el offest principal en el A-Map.

PD: Si no te solucione la duda, bajate otro XSE, pero en la version 1.1.1

PD2: Espera algun maestro rom hacker para que te solucione la duda, saludos :D
 

Adke

weeeh
Creo que lo que haces es modificar el código y añadir comandos sin cambiar el offset.
Al añadir comandos el script necesita usar más bytes y por lo tanto debes compilar el script en un offset diferente (simplemente rehaz el script y vuelvelo a compilar)

A mí esto me ha pasado muchas veces ya y siempre se ha solucionado al volver a compilar el script en un offset diferente

Espero que te sirva y si no entiendes algo puedes preguntarme por perfil o por mensaje privado :D
 

RedMort

Aprendiendo Decomp
No me he leido el script, pero seguro que el problema es el siguiente:

Cuando tu compilas un script, este se guarda en un offset.
Este script compilado lo puedes editar SIEMPRE Y CUANDO no haya otro código tras el offset especificado, es decir:
Código:
#org 0x80071B
lock
faceplayer
compare 0x5001 0x1
if 0x1 goto 0x880074B
compare 0x5001 0x2
...
Ahí puedes ver en "#org 0x80071B" que el offset escrito es 80071B, y en "if 0x1 goto 0x880074B" el offset al cual te manda el compare.
Pues al ya tener los offsets 0x80071B y 0x80074B escritos, no puedes editar NADA del primero, pues sobrescribiría en el segundo y crearias un caos de comandos.
En el caos de comandos se te puede reiniciar el juego, quedarse congelado, escribir comandos que no quieres, y un montón de supuestos más.

Para evitar esto, lo mejor es escribirlo todo de nuevo y así te evitas el estar trasteando con offsets, o, borrar un poco de comando y escribir un "goto @puntero" para que continue en otro lugar.

Aclarar que puedes editar un offset ya escrito si en la edición metes menos o igual numero de bytes que en antes de editar, por ejemplo, un "givepokemon 0x56 ..." puede editarse por un "givepokemon 0x43 ...", pero nunca poner otro comando (para no liarte con los bytes), o si tienes 6 applymovements, poner 5.

También importante, actualiza a la nueva versión de XSE como sea.

Espero que haya quedado aclarado ^^
 
Pues no tengo la solución exacta a tu problema, yo tenia ese mismo problema y lo solucione, tan solo escribía el código de nuevo y lo copilaba y ponía el offest principal en el A-Map.

PD: Si no te solucione la duda, bajate otro XSE, pero en la version 1.1.1

PD2: Espera algun maestro rom hacker para que te solucione la duda, saludos :D
Muchas gracias por tomarte el tiempo y responderme 😊 efectivamnete al compilar el script con nuevos offsets el problema se elimina. Buscare el XSE 1.1.1 tal como me dices.

Muchas gracias

No me he leido el script, pero seguro que el problema es el siguiente:

Cuando tu compilas un script, este se guarda en un offset.
Este script compilado lo puedes editar SIEMPRE Y CUANDO no haya otro código tras el offset especificado, es decir:
Código:
#org 0x80071B
lock
faceplayer
compare 0x5001 0x1
if 0x1 goto 0x880074B
compare 0x5001 0x2
...
Ahí puedes ver en "#org 0x80071B" que el offset escrito es 80071B, y en "if 0x1 goto 0x880074B" el offset al cual te manda el compare.
Pues al ya tener los offsets 0x80071B y 0x80074B escritos, no puedes editar NADA del primero, pues sobrescribiría en el segundo y crearias un caos de comandos.
En el caos de comandos se te puede reiniciar el juego, quedarse congelado, escribir comandos que no quieres, y un montón de supuestos más.

Para evitar esto, lo mejor es escribirlo todo de nuevo y así te evitas el estar trasteando con offsets, o, borrar un poco de comando y escribir un "goto @puntero" para que continue en otro lugar.

Aclarar que puedes editar un offset ya escrito si en la edición metes menos o igual numero de bytes que en antes de editar, por ejemplo, un "givepokemon 0x56 ..." puede editarse por un "givepokemon 0x43 ...", pero nunca poner otro comando (para no liarte con los bytes), o si tienes 6 applymovements, poner 5.

También importante, actualiza a la nueva versión de XSE como sea.

Espero que haya quedado aclarado ^^
Muchas gracias, no habia notado la poca distancia de los offsets, claramente esa es la razon de por que me pasa esto. He hecho el script nuevamente y no me presenta problemas, por lo que estoy rehaciendo todos los scripts que pudieran tener este problema. No gastare mucho espacio al compilar tantas veces?

Muchas gracias, mi duda fue resuelta y de pasada aprendi algo nuevo. :)
 

RedMort

Aprendiendo Decomp
Muchas gracias por tomarte el tiempo y responderme 😊 efectivamnete al compilar el script con nuevos offsets el problema se elimina. Buscare el XSE 1.1.1 tal como me dices.

Muchas gracias



Muchas gracias, no habia notado la poca distancia de los offsets, claramente esa es la razon de por que me pasa esto. He hecho el script nuevamente y no me presenta problemas, por lo que estoy rehaciendo todos los scripts que pudieran tener este problema. No gastare mucho espacio al compilar tantas veces?

Muchas gracias, mi duda fue resuelta y de pasada aprendi algo nuevo. :)
Si gastarás espacio, por eso, te recomiendo que hagas copias de seguridad antes de hacer cualquier cambio de este estilo.
De esta forma, si quieres editarlo solo retrocede a dicha copia (yo hago una cada dos por tres por si acaso) y compilar de nuevo el script.
Del segundo modo que te dije, de borrar parte del script y poner un "goto" no gastarías mucho, siempre que sepas usarlo, claro.
 
La copia de seguridad la hago con ips?? Lo que he estado haciendo es un parche a modo de copia de seguridad, asi reestablesco para suprimir un error. Sobre lo del goto @offset es una muy buena idea, asi si es que quiero ocupar los comandos que estaban justo despues del error los llamo (#call) y listo.

Muuuchas gracias.
 

RedMort

Aprendiendo Decomp
Yo para copia de seguridad copio la carpeta donde tengo la rom, y la almaceno en otro lugar, es más rapido y sencillo.
 
Estado
Cerrado para nuevas respuestas.
Arriba