Registrarse

[RH - Otros] Se bugueó el sistema de surf

Estado
Cerrado para nuevas respuestas.

hacanoca

Usuario de Oro
Hola a todos.
Estaba intentando avanzar un poco en mi proyecto.
Creé un mapa que para recorrerlo debes usar SURF, así que lo estaba revisando in game (Por donde llevo desarrollado el juego aún no consigues esa MO)
Estaba revisando, cuando me di cuenta de que el sistema de SURF está bugueado. Apenas se da la orden de realizar SURF y se hace la animación del PKMN que usará el movimiento, el juego se reinicia.

Rastreando el problema vi que el error viene de muuuuuchos meses atrás.
Y exactamente el cambio que me generó este bug fue el insertar la herramienta que viene en el hack tool de JPAN para el cambio de mini.
¿Alguno tiene conocimiento de que esta rutina pueda generar bugs en el movimiento SURF fuera de combate?
¿O funciona perfecto usualmente, así que seguramente fue una mala aplicación del sistema?

¿Qué puedo hacer?
Realmente necesito este sistema en mi hack, pero no puedo comprometer el SURF =P
 

Fran Agustín

L'amor està en l'aire
Muy buenas compañero.
Estoy muy seguro de haber visto hacks con este sistema insertado y que no tienen problemas a la hora de surfear, lo que me lleva a pensar que es un error en la configuración, si es que el problema se debe a él.

¿Has intentado reinsertar el sistema? ¿Probarlo en una ROM limpia? ¿Qué variables pusiste para el cambio de mini?
Y la pregunta tonta pero más importante: ¿estás seguro de que tu hack es en base Fire Red, cierto?
 

hacanoca

Usuario de Oro
Jejejeje.
Cierto, olvidé comentarlo. Sí, estoy trabajando en Fire Red.
La variable que uso es la que viene por defecto, si no estoy mal.
0x4054 (la que se ingresa en el hack tool), pero en teoría abarca hasta la 0x405B.
Pues aún no lo he probado en una rom limpia para ver si el juego buguea.
Lo miraré y escribiré el resultado.
Una cosa que no sé si sirva de ayuda es:
Luego de aplicar la rutina de JPAN, se buguea el surf, sin embargo otros minis del prota como el de pescar, siguen funcionando bien.
Ahora estoy preocupado por no lograr desbuguear la versión que tengo del hack.
 

Fran Agustín

L'amor està en l'aire
Bueno, no tengo las herramientas a mano ahora mismo como para comprobarlo. Si has puesto la misma variable que está por defecto pues no es ese el problema.
¿Le has dado un valor especial a la variable? ¿Tienes el cambio de minis activado? Si es así, ¿tu nuevo ow tiene los frames de surf?

¿Puede ser que hayas insertado alguna otra cosa que esté afectando al minisprite o a la rutina de surf? Porque si funcionan perfectamente los otros frames, podría ser alguna otra cosa la que esté causando el problema.

Yo personalmente no recuerdo haber visto este error. En el tutorial de Jo7a veo que la variable 0x4056 maneja el mini del prota surfeando, ¿probaste a poner un setvar 0x4056 0 antes de empezar a surfear para verificar que no hayas cambiado ese valor en algún momento?
 

hacanoca

Usuario de Oro
Bueno, no tengo las herramientas a mano ahora mismo como para comprobarlo. Si has puesto la misma variable que está por defecto pues no es ese el problema.
¿Le has dado un valor especial a la variable? ¿Tienes el cambio de minis activado? Si es así, ¿tu nuevo ow tiene los frames de surf?

¿Puede ser que hayas insertado alguna otra cosa que esté afectando al minisprite o a la rutina de surf? Porque si funcionan perfectamente los otros frames, podría ser alguna otra cosa la que esté causando el problema.

Yo personalmente no recuerdo haber visto este error. En el tutorial de Jo7a veo que la variable 0x4056 maneja el mini del prota surfeando, ¿probaste a poner un setvar 0x4056 0 antes de empezar a surfear para verificar que no hayas cambiado ese valor en algún momento?
Bueno, acabo de probar en una rom limpia a la cual le apliqué este hack y me sucedió el mismo error.
En ambos casos (mi rom y en la rom limpia) la prueba del SURF se hizo recién se empieza una partida nueva (por lo que los valores de las variables deberían estar en 0x0)
Cuando realizo la prueba del SURF no se tiene activado el cambio de mini, se intenta hacer surf con el personaje principal.

 
Última edición:

Fran Agustín

L'amor està en l'aire
Buenas compañero. Esto es realmente muy extraño. ¿Podrías abrir la ROM con un editor hexadecimal e irte al offset 0xBC (o 188 en decimal) y decirme qué cuatro bytes te salen allí?
Deberías ver un 01 67 o un 00 68.
Eso cambia según la versión de FR que tengas (1.0 y 1.1) y quizás es lo que esté causando el error. (No ese byte sino la versión en sí. Ese byte es sólo para comparar rápido).
 

hacanoca

Usuario de Oro
Quien sabe...
Puede ser por eso.
Me aparece 00 68.
JPAN es para la 1.0, ¿cierto?
Podrías darme el link de una versión 1.0

Aunque, espera, no me quedó claro:
¿Si tengo en ese byte 00 68 tengo la 1.0 o la 1.1?
 
Última edición:

Fran Agustín

L'amor està en l'aire
Quien sabe...
Puede ser por eso.
Me aparece 00 68.
JPAN es para la 1.0, ¿cierto?
Podrías darme el link de una versión 1.0

Aunque, espera, no me quedó claro:
¿Si tengo en ese byte 00 68 tengo la 1.0 o la 1.1?
Si tienes 00 68 (son dos bytes, btw) es porque tienes la versión 1.0. Por lo que no debería haber problemas xD
Sinceramente, ya no tengo mucha idea de qué podría ser. He googleado un poquito y no encuentro ese error ni aquí ni en PokeCo.
Eso me lleva nuevamente a pensar que el problema no es de la herramienta de JPAN en sí... ¿De dónde la has descargado? ¿Seguro que sólo has seguido el tutorial de Jota al pie de la letra?
@Иacho : Si no me equivoco, tú tienes el sistema de JPAN insertado, ¿te ha dado este problema alguna vez? (En el Ancient digo)
 

Nacho

Nadando hasta la otra orilla
Re: Respuesta: Se bugueó el sistema de surf

Si tienes 00 68 (son dos bytes, btw) es porque tienes la versión 1.0. Por lo que no debería haber problemas xD
Sinceramente, ya no tengo mucha idea de qué podría ser. He googleado un poquito y no encuentro ese error ni aquí ni en PokeCo.
Eso me lleva nuevamente a pensar que el problema no es de la herramienta de JPAN en sí... ¿De dónde la has descargado? ¿Seguro que sólo has seguido el tutorial de Jota al pie de la letra?

@Иacho : Si no me equivoco, tú tienes el sistema de JPAN insertado, ¿te ha dado este problema alguna vez? (En el Ancient digo)
yo tengo el mismo problema con surf! quizás me las ingenie, ahí vere que tal.
 

hacanoca

Usuario de Oro
Bueno, como comenté en el reporte que hice en los tutos de Jo7a:
Se me ocurre que el script que tiene el sistema de SURF por defecto, tenga en su estructura algunos specials 0x113 y 0x114. (Lo digo porque el mini se mueve hacia el agua tras hacer SURF).
Jo7a indicó que tras aplicar esta herramienta, se debe tener cuidado con esos specials.
Sin embargo no sé bien como encontrar el script del sistema de SURF para verificar esa idea. =P
 

Nacho

Nadando hasta la otra orilla
yo investigaría los scripts asociados a los comportamiento de tiles, a ver si encuentras algo relacionado con el SURF
 

Navy_

No me arrepiento de nada
@hacanoca
El offset donde se encuentra el script de surf es:
Offset: 0x1A6AC8

Código:
#include stdattacks.rbh

#org @start
special 0x187
compare 0x800D 0x2
if 0x1 goto @snippet1
checkattack ATK_SURF
compare 0x800D 0x6
if 0x1 goto @snippet1
bufferpartypokemon 0x0 0x800D
setanimation 0x0 0x800D
lockall
msgbox @string1 0x5
compare 0x800D 0x0
if 0x1 goto @snippet2
msgbox @string2 0x4
doanimation 0x9
releaseall
end

#org @snippet1
end

#org @snippet2
releaseall
end

#org @string1
= The water is dyed a deep blue[.]\nWould you like to SURF?

#org @string2
= [buffer1] used SURF!
Una solución simple que se me ocurre es que tu hagas el script de surf, ya que tienes sistema de cambio de OW usa esa rutina para cambiar su apariencia, en vez del sistema original... (espero que se entienda)

Y cuando tengas el script, con ayuda de HXD cambias el pointer del script original por el tuyo:

Offset: 0x1A6AC8
En aquel offset contrarás estos bytes: C8 6A 1A 08
Simplemente los cambias por offset permutado de tu script y listo

Es una idea, en todo caso espero haber ayudado...


M.H.B.P.
 

hacanoca

Usuario de Oro
Bueno, después de buscar mucho, y de un gran apoyo por parte de @CompuMax...
Logramos dar con la solución al problema del SURF cuando aplicas la herramienta para el cambio de OW de JPAN.
Para solucionarlo requieres un editor hexadecimal, en mi caso HxD.

Luego de insertar la rutina, se debe ir al pointer 0x5F2D0 en un editor hexadecimal.
Allí, te aparecerá un puntero compilado, debes de seguirlo.
En mi caso tengo el 2DD1E5

Así que voy a esa dirección
Allí debes avanzar 15 casillas, y editar ese byte por "FF".
El byte que se debe cambiar es el que está luego de "29 18 D0"
De tal forma que quede: "29 18 D0 FF"



Y listo, esa debería ser la solución.
Otro punto, (aunque realmente no lo hice), es asegurarse de que al inicio del juego, todas las variables asociadas a la rutina de JPAN para el cambio del OW estén en 0.
(Entonces se recomienda setearlas en este valor, en algún script cercano al inicio del juego)

Muchas gracias de nuevo a CompuMax y a karatekid552 que fue quien posteó la solución.

@hacanoca
El offset donde se encuentra el script de surf es:
Offset: 0x1A6AC8

Código:
#include stdattacks.rbh

#org @start
special 0x187
compare 0x800D 0x2
if 0x1 goto @snippet1
checkattack ATK_SURF
compare 0x800D 0x6
if 0x1 goto @snippet1
bufferpartypokemon 0x0 0x800D
setanimation 0x0 0x800D
lockall
msgbox @string1 0x5
compare 0x800D 0x0
if 0x1 goto @snippet2
msgbox @string2 0x4
doanimation 0x9
releaseall
end

#org @snippet1
end

#org @snippet2
releaseall
end

#org @string1
= The water is dyed a deep blue[.]\nWould you like to SURF?

#org @string2
= [buffer1] used SURF!
Una solución simple que se me ocurre es que tu hagas el script de surf, ya que tienes sistema de cambio de OW usa esa rutina para cambiar su apariencia, en vez del sistema original... (espero que se entienda)

Y cuando tengas el script, con ayuda de HXD cambias el pointer del script original por el tuyo:

Offset: 0x1A6AC8
En aquel offset contrarás estos bytes: C8 6A 1A 08
Simplemente los cambias por offset permutado de tu script y listo

Es una idea, en todo caso espero haber ayudado...


M.H.B.P.
Sí, estaba intentando hacer eso también.
Y es una buena alternativa.
Aunque estaba teniendo el problema de que aún tras hacer el cambio de mini al de SURF, el juego estaba reconociéndolo como mini "terrestre" y no me dejaba moverme de un tile acuático a uno de tierra, me dejaba encerrado en el agua.



Al final me muevo a la derecha, pero el mini no sale del agua. =P

EDITO:
Gente.
Falsa calma.
Si bien el modificar ese byte si permite usar el mvto SURF, el juego se congela tras salir de un combate acuático; o tras acceder a un menú estando dentro del agua.
Si alguien sabe como solucionarlo...estaría muy agradecido.
 
Última edición:

CompuMax

Discord: CompuMax#0425
Bueno vengo a complementar la solución que nos ha traído el compañero @hacanoca. A diferencia de lo que dice el post de karatekid552 no se deben setear todas las variables a 0x0 sino a sus valores correspondientes y no son 8 variables sino 7, es decir, en vez de hacer:
Código:
setvar 0x408F 0x0
setvar 0x4090 0x0
setvar 0x4091 0x0
setvar 0x4092 0x0
setvar 0x4093 0x0
setvar 0x4094 0x0
setvar 0x4095 0x0
[S]setvar 0x4096 0x0[/S]
Hay que hacer lo siguiente:
Código:
setvar 0x408F 0x0
setvar 0x4090 0x1
setvar 0x4091 0x2
setvar 0x4092 0x3
setvar 0x4093 0x4
setvar 0x4094 0x5
setvar 0x4095 0x6
Donde 0x408F es la variable que seleccionamos al insertar el hack y las otras variables las 6 siguientes.

Creo que con esto ya se puede dar por solucionado (a menos que hacanoca le consiga otro bug)

:D
 
Estado
Cerrado para nuevas respuestas.
Arriba