Como desempaquetar Roms de Snes? .smc

Hola chicos,

me ha venido esa duda a la cabeza, por curiosidad quiero saber que hay dentro de la bios
de un copion, ojala podáis echarme una mano.

Gracias!
Hola, con SnesTool puedes abrir/editar/parchear casi cualquier rom .smc, incluyendo la propia Bios de este modelo de copión (Super Magicom), la Bios puede llamarse V31 o V1H.

Si no me equivoco dentro de la Bios hay estos archivos, según Romhack:

If you use the .SMC directive of wla-65816, then WLA DX will prepend the header in this format. This format matches the *.smc file suffix (though some images have the wrong suffix).
offset size contents
0 2 bytes The size of the ROM dump, in units of 8 kilobytes, as a little-endian integer.
2 1 byte Binary flags for the ROM layout and the save-RAM size.
3 509 bytes All zero.

The flags at offset 2 are the binary-or of the ROM layout with the save-RAM size.

ROM layout:

$00 is LoROM
$30 is HiROM

Save-RAM size:

$00 is 32 kilobytes
$04 is 8 kilobytes
$08 is 2 kilobytes
$0c is 0 kilobytes


Aqui tambien se incluye esa misma información sobre otros copiones muy conocidos por todos (ProFighter, UFO y Super Wild Card)

El enlace es sólo una Wikipedia temática que no contiene roms, me parece que no incumple las normas.





Saludos
No sé si estás confundiendo "desempaquetar" con "desensamblar"; desempaquetar vendrá a ser sacar el contenido de un "paquete" como un ZIP, RAR o similares. Si lo que quieres es desensamblar el código de una ROM, que en este caso es la BIOS de un copión, tendrás que usar algúna utilidad específica para ello. Aunque hay algunas, yo te recomiendo usar un debugger y volcar el texto que se está ejecutando en él. El debugger es como un emulador que te permite ver lo que ejecuta la CPU de la SNES.

Si quieres saber lo que hay en una BIOS, básicamente es:

* una rutina muy básica que escribe en la memoria de video para mostrar las diferentes pantallas
* una rutina que lee del mando para saber qué opción has elegido
* rutinas de I/O para acceder al disquette/SD
* rutinas internas que graban la ROM leída en bloques concretos de la memoria interna dependiendo del tipo de ROM
* un salto sin retorno al vector de interrupción de la ROM que hayas cargado
naeru escribió:Hola, con SnesTool puedes abrir/editar/parchear casi cualquier rom .smc, incluyendo la propia Bios de este modelo de copión (Super Magicom), la Bios puede llamarse V31 o V1H.

Si no me equivoco dentro de la Bios hay estos archivos, según Romhack:

If you use the .SMC directive of wla-65816, then WLA DX will prepend the header in this format. This format matches the *.smc file suffix (though some images have the wrong suffix).
offset size contents
0 2 bytes The size of the ROM dump, in units of 8 kilobytes, as a little-endian integer.
2 1 byte Binary flags for the ROM layout and the save-RAM size.
3 509 bytes All zero.

The flags at offset 2 are the binary-or of the ROM layout with the save-RAM size.

ROM layout:

$00 is LoROM
$30 is HiROM

Save-RAM size:

$00 is 32 kilobytes
$04 is 8 kilobytes
$08 is 2 kilobytes
$0c is 0 kilobytes


Aqui tambien se incluye esa misma información sobre otros copiones muy conocidos por todos (ProFighter, UFO y Super Wild Card)

El enlace es sólo una Wikipedia temática que no contiene roms, me parece que no incumple las normas.





Saludos


Hola naeru,

Gracias por responder, lo que me interesa es leer el codigo asm y saber si se editan las cosas "al vuelo" mientras se esta ejecutando o sí se pueden desensamblar editarlo y compilarlo otra vez como .smc. Necesito aprender el proceso.

Saludos!

magno escribió:No sé si estás confundiendo "desempaquetar" con "desensamblar"; desempaquetar vendrá a ser sacar el contenido de un "paquete" como un ZIP, RAR o similares. Si lo que quieres es desensamblar el código de una ROM, que en este caso es la BIOS de un copión, tendrás que usar algúna utilidad específica para ello. Aunque hay algunas, yo te recomiendo usar un debugger y volcar el texto que se está ejecutando en él. El debugger es como un emulador que te permite ver lo que ejecuta la CPU de la SNES.

Si quieres saber lo que hay en una BIOS, básicamente es:

* una rutina muy básica que escribe en la memoria de video para mostrar las diferentes pantallas
* una rutina que lee del mando para saber qué opción has elegido
* rutinas de I/O para acceder al disquette/SD
* rutinas internas que graban la ROM leída en bloques concretos de la memoria interna dependiendo del tipo de ROM
* un salto sin retorno al vector de interrupción de la ROM que hayas cargado


Hola magno, sí estaba confundiendo terminos, ahora se que lo que quiero es saber si se puede desdensamblar un .smc, porque por ejemplo sí quiero cambiar un texto lo puedo hacer mientras se ejecuta, pero también puedo cambiar una pantalla, sprite o insertar codigo mientras se esta ejecutando el debugger? podrías recomendarme algún debugger?
Tengo un super Ufo 7 y mi intención es conocer su funcionamiento por completo, desde su primera instrucción hasta la última en asm.

Gracias por responder.

Saludos!
Si quieres un debugger para iniciarte en esto del ensamblador, podrías probar con el Geiger's SNES9x 1.51 debugger, que es el más intuitivo y te permite cambiar cosas de la VRAM de forma más o menos fácil y el contenido de la RAM con tan solo cambiarlo en el editor.
Byuu también tiene su propio debugger basado en el emulador bsnes, aunque es más complicado de usar porque digamos que con él "sniffas" los buses de la SNES, por lo que tienes que conocer un poco la arquitectura para empezar a sacarle partido.

Por otro lado, para saber cómo funciona la BIOS, tendrás que buscarla en formato "ROM" por internet y luego ejecutarla en el debugger como si fuera un juego cualquiera, e ir paso a paso mirando qué hace cada instrucción.
magno escribió:Si quieres un debugger para iniciarte en esto del ensamblador, podrías probar con el Geiger's SNES9x 1.51 debugger, que es el más intuitivo y te permite cambiar cosas de la VRAM de forma más o menos fácil y el contenido de la RAM con tan solo cambiarlo en el editor.
Byuu también tiene su propio debugger basado en el emulador bsnes, aunque es más complicado de usar porque digamos que con él "sniffas" los buses de la SNES, por lo que tienes que conocer un poco la arquitectura para empezar a sacarle partido.

Por otro lado, para saber cómo funciona la BIOS, tendrás que buscarla en formato "ROM" por internet y luego ejecutarla en el debugger como si fuera un juego cualquiera, e ir paso a paso mirando qué hace cada instrucción.


Gracias magno! me has ayudado mucho, he encontrado un manual con mucha información por si le sirve a alguien más:


ahora creo que lo que más me interesa es el tema del hardware.

Saludos.
5 respuestas