Sonic 1 de MD: Ayuda cambiando una zona por otra sacada de un hack

atreyu_ac está baneado del subforo por "faltas de respeto"
Buenas gente,

Llevo un tiempo con una idea en mente que consiste en cambiar una zona del Sonic 1 de MD por otra sacada de un hack del mismo Sonic 1, el Painto Edition:
http://info.sonicretro.org/Sonic_1:_Painto_Edition_2

Concretamente, mi plan es convertir Marble Zone en Bridge Zone, que es la segunda zona del Painto Edition este. Sí, sí, es Bridge Zone, la zona del Sonic de Master System con música de Mecan... esto... de Yuzo Koshiro!
Está en este hack y la quisiera pasar al Sonic 1 de MegaDrive.
¿Os imaginais pasar Green Hill Zone en MD y aparecer en una versión de 16 bits de Bridge Zone? La hostia, ¿no? Pues eso pretendo.

También he visto que está la canción de Labirynth Zone del Sonic 1 de Master System en este hack!!!!
http://info.sonicretro.org/Sonic_1_Remastered_(hack)
¿Os imaginais jugar la Labirynth Zone de MD con esta música? [looco]
Y la música de Scrap Brain Zone de Master también está en ese hack!

He empezado mirando en qué direcciones de memoria de la ROM guarda el Sonic 1 las músicas, y al parecer empiezan en la $071A9C (fuente: http://info.sonicretro.org/SCHG:Music_H ... ns#Sonic_1)
...Pero hasta ahí llego. No sé cuánto ocupa cada "track". Se ve que el primero al menos empieza por 00 07 45 DC, pero no me queda claro si ahí empieza un track o es un puntero a un track (me inclino por lo segundo, ya que a continuación vemos 00 07 4D 44, 00 07 51 94... hasta llegar a la dirección $00071AE8, donde empiezan los efectos con punteros que parece que son todos 90 90 90 90).
Vale, supongamos entonces que es un puntero a un track. ¿Dónde está el track? ¿Cómo sé hasta dónde extraer desde el editor para decir "vale, este .bin es un track de música"?

Luego ya lo de cambiar el layout del nivel iré viendo, pero voy a empezar experimentando con lo de las músicas. El foro de Sonic Retro está capadísimo, así que no me mandeis allí, please.

Gracias!
Me suscribo para ver cómo te va, tu idea tiene pinta guay :)
javierator1981 escribió:Me suscribo para ver cómo te va, tu idea tiene pinta guay :)


Dónde y cómo se subscribía uno a un hilo? No lo recuerdo ya y no lo encuentro (en serio xD)
En esa misma web y en su foro tienes todo lo necesario para hackear los Sonic. Si no lo encuentras ahí es que no existe jeje. Puedes empezar en http://info.sonicretro.org/Category:Sonic_Community_Hacking_Guide

señorperro escribió:Dónde y cómo se subscribía uno a un hilo? No lo recuerdo ya y no lo encuentro (en serio xD)
Abajo del todo hay 3 botones verdes, el del medio es para suscribirse.
señorperro escribió:
javierator1981 escribió:Me suscribo para ver cómo te va, tu idea tiene pinta guay :)


Dónde y cómo se subscribía uno a un hilo? No lo recuerdo ya y no lo encuentro (en serio xD)

Hasta donde yo sé, contestando ya te suscribes... Y si quieres hacerlo sin decir ni mu, aquí:
Imagen
Si es un lobo me come. Muchas gracias a ambos :)
atreyu_ac está baneado del subforo por "faltas de respeto"
Pues como no me eche alguien una mano, voy cerca, porque los documentos son muy confusos. Si nos ceñimos a esto:
http://www.hacking-cult.org/?r/4/80
...pues los punteros de música del SONIC1 empiezan en la posición 0x71A9C de la ROM, y son de tipo offset, pero si miramos el primer puntero que hay a partir de la dirección 0x71A9C vemos que es:
00 07 45 DC = 000745DC
A mi eso me parece ENORME para ser un offset!
De hecho, si sumo 00 07 45 DC a la dirección base 0x71A9C, me voy a tomar por culo fuera de la ROM, a direcciones ya de 0xEXXXX.
Pero los docs dicen que es un offset, lo que es imposible y no tiene ningún sentido.
¿En serio nadie sabe cómo va esto?
Sin entender nada de hackeo, por lo que entiendo en este párrafo:
"These pointers are relatively easy to deal with. These pointers are like the offset index pointers talked about earlier. They are relative 16-bit pointers that add the pointer value to the current location in the ROM. Here is an example:

Let's say that the music data started at $EC000. Now, our voice pointer says $0180. So, from $EC000 we add $180 to the value, making the location of the voice data at $EC180. You see? That is simple. There are some other things to note about these pointers that I will mention later that have to do with coordination flags. "

si son punteros a 16 bits, significa que ese valor es una dirección de memoria 0x000745DC (32 bits) que apunta a un offset de 16 bits. Tendrías que ver qué valor hay guardado en la dirección de la rom 0x000745DC.
atreyu_ac está baneado del subforo por "faltas de respeto"
Manveru Ainu escribió:Sin entender nada de hackeo, por lo que entiendo en este párrafo:
"These pointers are relatively easy to deal with. These pointers are like the offset index pointers talked about earlier. They are relative 16-bit pointers that add the pointer value to the current location in the ROM. Here is an example:

Let's say that the music data started at $EC000. Now, our voice pointer says $0180. So, from $EC000 we add $180 to the value, making the location of the voice data at $EC180. You see? That is simple. There are some other things to note about these pointers that I will mention later that have to do with coordination flags. "

si son punteros a 16 bits, significa que ese valor es una dirección de memoria 0x000745DC (32 bits) que apunta a un offset de 16 bits. Tendrías que ver qué valor hay guardado en la dirección de la rom 0x000745DC.


He encontrado otro hilo aquí que creo que lo aclara al final, en el penúltimo post:
http://sonicresearch.org/community/inde ... c-ids.3447

O sea que la cosa es tan simple como que en 0x000745DC lo que hay es la primera música, la de Green Hill Zone. Y lo que meta ahí tiene que llegar como máximo hasta 0x00074D44, que es donde empieza la segunda música.
Pero a mi lo que me interesaría es la dirección de la música de Marble Zone, que parece ser que es la 0x00075194 y llega hasta la 0x000755F2, lo que me deja 1118 bytes de espacio para meter ahí la música de Bridge Zone.

El problema ahora es cómo extraer la música de Bridge Zone de la rom del Sonic 1 Painto Edition...
Porque ahí sí que no se sabe dónde están los punteros. Ya he mirado en la 0x00071A9C pero ahí sólo hay datos random, no empiezan ahí una serie de punteros como en la ROM original sin parchear. ¿se te ocurre algo?
atreyu_ac escribió:He encontrado otro hilo aquí que creo que lo aclara al final, en el penúltimo post:
http://sonicresearch.org/community/inde ... c-ids.3447

O sea que la cosa es tan simple como que en 0x000745DC lo que hay es la primera música, la de Green Hill Zone. Y lo que meta ahí tiene que llegar como máximo hasta 0x00074D44, que es donde empieza la segunda música.
Pero a mi lo que me interesaría es la dirección de la música de Marble Zone, que parece ser que es la 0x00075194 y llega hasta la 0x000755F2, lo que me deja 1118 bytes de espacio para meter ahí la música de Bridge Zone.

El problema ahora es cómo extraer la música de Bridge Zone de la rom del Sonic 1 Painto Edition...
Porque ahí sí que no se sabe dónde están los punteros. Ya he mirado en la 0x00071A9C pero ahí sólo hay datos random, no empiezan ahí una serie de punteros como en la ROM original sin parchear. ¿se te ocurre algo?
El truco es entonces encontrar el offset para saltar de una pista a otra, lo que ocupa cada música vamos. Si no existe eso, entonces hay que encontrar dónde han averiguado que está cada pista, como veo que has hecho.

En ese hilo que pones comenta que si no te cabe la música que lo pongas a partir de 0x00080000. La rom de Sonic 1 ocupa 512kb, por lo que si el Painto Edition ocupa más de eso, seguramente habrá puesto la música y todos los extras a partir de ahí. Mira si en el 0x00071A9C hay un valor en ese rango hasta los 0x00400000 que es el máximo de 4mb sin mappers para la rom, o hasta la posición equivalente al tamaño de la rom de ese hack.

Si está puesto de esa manera "random", tendrás que preguntar al autor o ver si alguien lo ha averiguado
9 respuestas