Laquin
Usuario mítico
¡Buenas! Hoy os traigo un pequeño tutorial de Pokeruby y Pokeemerald (https://whackahack.com/foro/t-56554/introduccion-pokeruby-proyecto-decompilacion-pokemon-r-s): correr en interiores. Como no se debería editar la ROM compilada con estas descompilaciones (pues al compilarla de nuevo se borrarían los cambios), debemos hacerlo mediante un cambio en el código. La verdad, encontrarlo me ha costado más de lo que creía, pero creo que merecerá la pena.
Ahora solo queda compilar:
Y ya podemos correr en interiores:
¡Saludos!
Tenemos que entrar en la carpeta src, y buscar dentro de esta el archivo bike.c.
Una vez dentro, iremos a la línea 914, donde está escrito lo siguiente:
Esta línea lo que hace es mirar dos cosas:
Ahora bien, nosotros queremos que nos deje correr aunque sea un mapa interior; es decir, no queremos que tenga en cuenta el tipo de mapa en el que estamos. Por ende, simplemente lo quitaremos de ahí (y, junto a él, quitaremos el ||).
Con eso bastaría, pero en vez de borrarlo, me gusta más la idea de dejarlo como comentario. Los comentarios son ignorados por el compilador, por lo que al crear la ROM sería igual que si borrasemos el código en sí. Sin embargo, si algún día cambiamos de opinión y queremos volver a poner esta condición, este trozo de código va a seguir en el archivo.
¿Y cómo se crea un comentario? Simplemente poned lo que queráis quitar entre /* y */, tal que así:
Si quisiéramos volver a impedir correr en interiores, simplemente quitaríamos el /* y */ y ya.
Una vez dentro, iremos a la línea 914, donde está escrito lo siguiente:
Código:
if (IsRunningDisallowedByMetatile(tile) != FALSE || gMapHeader.mapType == MAP_TYPE_INDOOR)
- Si el bloque en el que estemos nos impide correr(como la hierba larga, entre otros)
- Si el mapa en el que estemos es un mapa interior
Ahora bien, nosotros queremos que nos deje correr aunque sea un mapa interior; es decir, no queremos que tenga en cuenta el tipo de mapa en el que estamos. Por ende, simplemente lo quitaremos de ahí (y, junto a él, quitaremos el ||).
Con eso bastaría, pero en vez de borrarlo, me gusta más la idea de dejarlo como comentario. Los comentarios son ignorados por el compilador, por lo que al crear la ROM sería igual que si borrasemos el código en sí. Sin embargo, si algún día cambiamos de opinión y queremos volver a poner esta condición, este trozo de código va a seguir en el archivo.
¿Y cómo se crea un comentario? Simplemente poned lo que queráis quitar entre /* y */, tal que así:
Código:
if (IsRunningDisallowedByMetatile(tile) != FALSE/* || gMapHeader.mapType == MAP_TYPE_INDOOR*/)
En src/bike.c, en la línea 1073, está escrito lo siguiente:
Pues simplemente vamos a quitar, o mejor comentar (por lo mismo que he explicado en el tutorial para Pokeruby), eso de !(gMapHeader.flags & 4) || y ya:
Código:
if (!(gMapHeader.flags & 4) || IsRunningDisallowedByMetatile(metatile) == TRUE)
Código:
if (/*!(gMapHeader.flags & 4) ||*/ IsRunningDisallowedByMetatile(metatile) == TRUE)
Ahora solo queda compilar:
Código:
make NODEP=1
¡Saludos!
Última edición: