Registrarse

[RH - Map Editing] [Duda][Crystal]Implementar diferentes atributos a bloques

Estado
Cerrado para nuevas respuestas.

Morfeo

Sharkero!!
Buenas noches a todos.

Hace años que no estoy activo en los foros. Por falta de tiempo no pude seguir con proyectos que tenía planeados, pero ahora con la pandemia tengo tiempo en casa.

Algo que quería hacer hace tiempo era añadir algunas cosas en Pokémon Crystal por deseo propio, y aunque en su tiempo hice un HackROM añadiendo el PCC y el evento de Celebi, siempre me quedé con ganas de poner otras cosas nada novedoso pero siempre quise.

Ahora estoy retomando y quiero añadir la Saffari Zone, areas de Silph Co., así como algunas cosas vistas en HG & SS como la captura de las aves legendarias y Mewtwo.

En estos momentos mi idea es que al derrotar a RED cambien unos bloques del mapa de Cerulean City para añadir un acceso a Cerulean Cave, a lo cual usé un mapa Beta llamado "Beta ???" y en ese mapa hice una sola planta de Cerulean Cave. Ya añadí una flag en el Script de RED para que se active al derrotarlo para que dicha flag se lea en el mapa de Cerual City y modifique unos bloques en el mapa para la aparición de la cueva ("el nivel de agua bajó"), por lo que tengo que añadir un Warp en este mapa (ya estoy en eso).
El problema es que sigo informándome en los tutoriales pero no encuentro el dato, y las herramientas para Pokémon Crystal son más limitadas para saber:
¿Como obtengo los datos de Número de Banco y Número de mapa de un mapa para indicarselo a un Warp?
Estoy usando un mapa beta que no tiene eventos programados (yo se los voy a añadir) por lo que no tengo como guiarme para saber a que banco y mapa me transportará el Warp que estoy añadiendo de Cerulean City al mapa Beta que acondicioné como Cerulean Cave.

Los editores de mapas de soportan Pokémon Crystal son muy pocos y otros están limitados, por lo que no se donde puedo ver esos datos. También e buscado con editor hexadecimal para ver si hay en los cabezales de los mapas esta información, pero no veo de momento nada.

Estoy consiente de que probablemente estos mapas Beta solo están programados como gráficos sin tener Map Header y su Secondary Map Header, por lo cual también tengo que añadirlos.
Por lo que me gustaría que si alguien me puede decir como hacer esto o como hacer uso más pleno de estos mapas. Gracias

1.png
 
Última edición:

Shuckle_Lord_Mixone

El Señor de los Shuckles
El fichero constants/map_constants.asm deberia contener la mayoria de esa informacion.

En cualquier caso, ademas de ese fichero, los ficheros que contienen asi la definicion de mapas con respecto a otros (i.e. para warps y transitions y conections) serian:
  • data/maps/maps.asm
  • data/maps/attributes.asm
  • constants/map_setup_constants.asm
En esos ficheros hay detalles sobre el formato de los objetos y sus definiciones, explicados un poco en el formato orientado objeto, aunque siendo asm no hay exactamente objectos.
 

Morfeo

Sharkero!!
Primero que nada, muchas gracias por tu respuesta
Shuckle_Lord_Mixone

Por otra parte disculpa la respuesta tardía, cuando me pongo en modo creativo me es dificil sacar tiempo. Y es que encontré una forma de solucionar el problema experimentando de la siguiente manera:

Primero que nada encontré con con el "G2Map 0.1" un modo para que me despliegue los Bancos por número (en decimal) y la cantidad de mapas que hay en cada Banco, de ahí pude encontrar con editor hexadecimal en donde se localiza las llamadas para los 26 (x1A) Map Header de Bancos de mapas (offset 0x94000), donde inmediatamente al terminar la llamada del número 26 empieza el Map Header del 1er mapa.
Pensé que si quería añadir un Banco de mapas número 27 tenía que recorrer 2 Bytes de todos los Map Headers, y así añadí la llamada de un 27vo Banco de mapas.
Tuve que quitar los último 99 Bytes del Banco de mapas número 26 porque al recorrer 2 Bytes no cabía, y los puse en el único espacio que encontré disponible de ese banco de datos (80 7F = 0x97F80) (repunteando la dirección del Banco 26) e indiqué que los mapas del Banco 27 que inserté estarían en donde estaban los mapas del Banco 26 (77 AD = 0x94D77). Ahí comencé a añadir el Map Header del mapa que mostré anteriormente y seguir añadiendo en otros lugares el Secondary Map Header, Event Data, etc.
Por desgracia al hacer estos cambios el "G2Map 0.1" no puede cargar el HackRom pues no logra re interpretar el hecho de añadir un Banco de Mapas, pero el juego SI lo interpreta correctamente sin dañar todos los demás mapas, y ya tengo acceso a la Cerulean Cave que hice. Después me entretuve en añadir Scripts al leer el mapa de Cerulean City para mostrar la cueva cuando yo lo decida. Algo que me costó varias pruebas y errores entender como funcionaban algunos comandos. Pero ya quedó
Cabezal.png

Por otro lado, mientras estaba haciendo estos cambios leí tu respuesta, la cual no pude aplicar del todo porque estoy algo perdido en los datos que mencionas, pero quiero entender y actualizarme.
Creo que haces referencia a un proceso de Descompilación del juego .gbc para tener acceso a los diferentes ficheros que conforman el ROM, esto no me toco conocerlo cuando hice un HackRom añadiendo el PCC y el evento de Celebi hace más de 10 años, todo lo hacia usando editores hexadecimales y algunos programas incompletos como CrystalMap que a hoy en día por más que busque no encontré mejores programas para ello.
Pero si comprendo de esto porque en la época de Pokémon Diamond & Pearl use este sistema para los ROMs de NDS, algo que se me hacia muy eficiente poder usar un programa para separar los ficheros de un ROM ya ensamblado, modificar el o los que necesitabas y volverlo a Compilar en un ROM, en ese entonces soñaba con que hubiera un método similar para los juegos de GBC y de esa forma tal vez poder hacer más cosas, pero jamás lo vi, me ocupé con el trabajo y varios años después hasta ahora escucho de esto para Pokémon Crystal. ¿Es este el caso?

De ser así, ¿podrías explicarme como aplicarlo en este juego? claro, entiendo que no podrías detallarme todo, pero si es posible me proporciones tutoriales en español o aunque sean en inglés desde como comenzar me ayudaría mucho.

Yo busqué al respecto antes de poner esta respuesta y encontré esto:

Pero no estoy seguro si es lo que yo mencioné, descompilar el ROM de Pokémon Crystal en ficheros y estos mismos volverlo a compilar, además que yo trabajaba en NDS con programas intuitivos .exe que solo necesitabas elegir el ROM y automáticamente te generaba una carpeta destino con los archivos de dicho ROM ya descompilados.
Y por lo poco que e entendido no parece ser, ó así de fácil ó tal cosa, por eso me ayudaría mucho un tutorial que me lo explique desde cero, y qué programas usar porque lo que si encontré fue un editor de gráficos y mapas que se ve muy prometedor llamado "Polished-Map", pero por lo visto no trabaja con el ROM de Pokémon Crystal, pero si no con los archivos descompilados del juego (eso creo).

De todas formas, te estoy muy agradecido por cualquier ayuda. Gracias!!
 

Lunos

Enfrentando a La Organización
Miembro insignia
Primero que nada, muchas gracias por tu respuesta
Shuckle_Lord_Mixone

Por otra parte disculpa la respuesta tardía, cuando me pongo en modo creativo me es dificil sacar tiempo. Y es que encontré una forma de solucionar el problema experimentando de la siguiente manera:

Primero que nada encontré con con el "G2Map 0.1" un modo para que me despliegue los Bancos por número (en decimal) y la cantidad de mapas que hay en cada Banco, de ahí pude encontrar con editor hexadecimal en donde se localiza las llamadas para los 26 (x1A) Map Header de Bancos de mapas (offset 0x94000), donde inmediatamente al terminar la llamada del número 26 empieza el Map Header del 1er mapa.
Pensé que si quería añadir un Banco de mapas número 27 tenía que recorrer 2 Bytes de todos los Map Headers, y así añadí la llamada de un 27vo Banco de mapas.
Tuve que quitar los último 99 Bytes del Banco de mapas número 26 porque al recorrer 2 Bytes no cabía, y los puse en el único espacio que encontré disponible de ese banco de datos (80 7F = 0x97F80) (repunteando la dirección del Banco 26) e indiqué que los mapas del Banco 27 que inserté estarían en donde estaban los mapas del Banco 26 (77 AD = 0x94D77). Ahí comencé a añadir el Map Header del mapa que mostré anteriormente y seguir añadiendo en otros lugares el Secondary Map Header, Event Data, etc.
Por desgracia al hacer estos cambios el "G2Map 0.1" no puede cargar el HackRom pues no logra re interpretar el hecho de añadir un Banco de Mapas, pero el juego SI lo interpreta correctamente sin dañar todos los demás mapas, y ya tengo acceso a la Cerulean Cave que hice. Después me entretuve en añadir Scripts al leer el mapa de Cerulean City para mostrar la cueva cuando yo lo decida. Algo que me costó varias pruebas y errores entender como funcionaban algunos comandos. Pero ya quedó
Ver el archivo adjunto 3855

Por otro lado, mientras estaba haciendo estos cambios leí tu respuesta, la cual no pude aplicar del todo porque estoy algo perdido en los datos que mencionas, pero quiero entender y actualizarme.
Creo que haces referencia a un proceso de Descompilación del juego .gbc para tener acceso a los diferentes ficheros que conforman el ROM, esto no me toco conocerlo cuando hice un HackRom añadiendo el PCC y el evento de Celebi hace más de 10 años, todo lo hacia usando editores hexadecimales y algunos programas incompletos como CrystalMap que a hoy en día por más que busque no encontré mejores programas para ello.
Pero si comprendo de esto porque en la época de Pokémon Diamond & Pearl use este sistema para los ROMs de NDS, algo que se me hacia muy eficiente poder usar un programa para separar los ficheros de un ROM ya ensamblado, modificar el o los que necesitabas y volverlo a Compilar en un ROM, en ese entonces soñaba con que hubiera un método similar para los juegos de GBC y de esa forma tal vez poder hacer más cosas, pero jamás lo vi, me ocupé con el trabajo y varios años después hasta ahora escucho de esto para Pokémon Crystal. ¿Es este el caso?

De ser así, ¿podrías explicarme como aplicarlo en este juego? claro, entiendo que no podrías detallarme todo, pero si es posible me proporciones tutoriales en español o aunque sean en inglés desde como comenzar me ayudaría mucho.

Yo busqué al respecto antes de poner esta respuesta y encontré esto:

Pero no estoy seguro si es lo que yo mencioné, descompilar el ROM de Pokémon Crystal en ficheros y estos mismos volverlo a compilar, además que yo trabajaba en NDS con programas intuitivos .exe que solo necesitabas elegir el ROM y automáticamente te generaba una carpeta destino con los archivos de dicho ROM ya descompilados.
Y por lo poco que e entendido no parece ser, ó así de fácil ó tal cosa, por eso me ayudaría mucho un tutorial que me lo explique desde cero, y qué programas usar porque lo que si encontré fue un editor de gráficos y mapas que se ve muy prometedor llamado "Polished-Map", pero por lo visto no trabaja con el ROM de Pokémon Crystal, pero si no con los archivos descompilados del juego (eso creo).

De todas formas, te estoy muy agradecido por cualquier ayuda. Gracias!!
Paso rapidamente para aclarar que Pokecrystal no es un proyecto de decompilación. Es un proyecto de desensamblaje puro y duro, sin más.
Decompilación es la acción de traducir una pieza de codigo desde un lenguaje inferior como por ejemplo lo es ASM a uno superior como por ejemplo lo es C.
Pokecrystal trabaja con ASM directamente pues así fue como lo hizo Game Freak en su momento, por lo que no hay decompilación alguna.

Yo de Pokecrystal y ASM no tengo idea asi que no puedo ayudarte con tus asuntos, ¡pero te deseo buena suerte!
 

Morfeo

Sharkero!!
Paso rapidamente para aclarar que Pokecrystal no es un proyecto de decompilación. Es un proyecto de desensamblaje puro y duro, sin más.
Decompilación es la acción de traducir una pieza de codigo desde un lenguaje inferior como por ejemplo lo es ASM a uno superior como por ejemplo lo es C.
Pokecrystal trabaja con ASM directamente pues así fue como lo hizo Game Freak en su momento, por lo que no hay decompilación alguna.

Yo de Pokecrystal y ASM no tengo idea asi que no puedo ayudarte con tus asuntos, ¡pero te deseo buena suerte!
Comprendo, gracias por hacerme esa aclaración
 

Shuckle_Lord_Mixone

El Señor de los Shuckles
Comprendo, gracias por hacerme esa aclaración

Perdon por tardanza en respuesta!

Efectivamente estaba hablando de okecrystal

Te mencionaba esos ficheros, pues muestran como el codigo del juego interpreta los mapas. Lo cual te puede resultar valioso a la hora de entender la estructura/s que quierres hacer.

Por otro lado, te recommiendo mucho que mires los desasemblajes pues resulta mas facil anadir "libertad" de desarollo que usando el binario.

En cuanto al sistema de ficheros del que hablas, usando Tinke por ejemplo, directamente olvidalo. GBC es muy antiguo, ya no estamos habando ni siiquiera de la misma decada ni siglo, es conceptualmente otro bicho.

La GRAN mayoria de los principios de romhacking de NDS los debes ignorar para gba, asi que imagina gbc.

Piensalo no como "el mismo juego, pero antiguo" pero mas bien como "un juego echo talmente distinto que comparte el nombre y mecanica";
 

Morfeo

Sharkero!!
Por otro lado, te recommiendo mucho que mires los desasemblajes pues resulta mas facil anadir "libertad" de desarollo que usando el binario.
Muchas gracias.

De hecho así lo hice y me pase varios días leyendo los tutoriales y aunque me costó mucho trabajo logré hacer uso de la consola de Ubuntu para poder usar "make" con el proyecto de pokecrystal y poder generar el ROM, así mismo me empape de la mecánica de forma de editar con esta plataforma y me ha resultado MUY práctico. De hecho ya hice varias implementaciones que quería a mi HR así como mapas y secuencias.

Por desgracia llegué a un punto donde encontré un tutorial para expandir las posibilidades con:

Pero aunque logré visualizar los mapas en Polished Map++, ya no puedo usar "make" porque al parecer el tutorial se hizo antes de que se actualizaran algunos archivos del proyecto pokecrystal y siento que esos cambios son clave del porque me arroja varios errores al generar el ROM.
Estos son los cambios que no puedo aplicar porque no se encuentra la linea en el archivo wram.asm y el otro porque ya no existe el archivo pokecrystal.link:
3.png

Y estos son los errores que me aparecen tomando en cuenta que aplico TODOS los demás cambios:
1.png
2.png

Sabes como puedo corregir esto para aplicar correctamente el tutorial?

Gracias
 

Shuckle_Lord_Mixone

El Señor de los Shuckles
Muchas gracias.

De hecho así lo hice y me pase varios días leyendo los tutoriales y aunque me costó mucho trabajo logré hacer uso de la consola de Ubuntu para poder usar "make" con el proyecto de pokecrystal y poder generar el ROM, así mismo me empape de la mecánica de forma de editar con esta plataforma y me ha resultado MUY práctico. De hecho ya hice varias implementaciones que quería a mi HR así como mapas y secuencias.

Por desgracia llegué a un punto donde encontré un tutorial para expandir las posibilidades con:

Pero aunque logré visualizar los mapas en Polished Map++, ya no puedo usar "make" porque al parecer el tutorial se hizo antes de que se actualizaran algunos archivos del proyecto pokecrystal y siento que esos cambios son clave del porque me arroja varios errores al generar el ROM.
Estos son los cambios que no puedo aplicar porque no se encuentra la linea en el archivo wram.asm y el otro porque ya no existe el archivo pokecrystal.link:

Y estos son los errores que me aparecen tomando en cuenta que aplico TODOS los demás cambios:

Sabes como puedo corregir esto para aplicar correctamente el tutorial?

Gracias
Nunca he usado ese tutorial pero se que pokecrystal.link se llama ahora layout.link

El commit en el cual se hace
El merge en el cual se implementa
 

Morfeo

Sharkero!!
Nunca he usado ese tutorial pero se que pokecrystal.link se llama ahora layout.link

El commit en el cual se hace
El merge en el cual se implementa
Muchas gracias por el dato, finalmente encontré donde hacer los cambios, aún así seguía teniendo los mismos errores al compilar, pero después de mucho buscar encontré que en el paso donde dice editar gfx/tilesets.asm y añadir las llamadas de los archivos "_attributes.bin" ponía....
Código:
+Tileset0Attr:
+TilesetJohtoAttr:
+INCBIN "data/tilesets/johto_attributes.bin"
Debiendo ser....
Código:
+Tileset0Attr::
+TilesetJohtoAttr::
+INCBIN "data/tilesets/johto_attributes.bin"
Además se cambio el nombre "wAttrMap" por "wAttrmap"

Finalmente solo me quedó la duda de, ahora en que parte exactamente añadir "wTilesetDataAddress:: dw" en el archivo wram.asm? porque con las actualizaciones que se le ha hecho al archivo no me queda muy claro.
Yo lo añadí así:
Código:
NEXTU
; link
    ds 9
wTilesetDataAddress:: dw

wLinkBattleRNPreamble:: ds SERIAL_RN_PREAMBLE_LENGTH
wLinkBattleRNs:: ds SERIAL_RNS_LENGTH
Lo añadí de esa forma y al menos ya me dejó compilar el .gbc y hasta el momento no me a tirado alguna anomalía el juego. Espero no halla consecuencias más adelante con este último cambio que mencioné.

Nuevamente muchas gracias por la ayuda!!!
 
Estado
Cerrado para nuevas respuestas.
Arriba