[TUTORIAL] Cambiar/Inyectar la rom de un juego de la Virtual Console (VC)

No es un tutorial muy currado, pues saldran tools seguro que facilitaran el proceso de introducir roms a juegos de la consola virtual una barbaridad, pero explico el proceso y lo que no se entienda preguntais.

(con lo que no se entienda me refiero a cosas que no queden claras, no cosas como por ejemplo usar un editor hexadecimal)

Lo pondré en pasos:

Primero de todo, seria interesante partir de un WAD ya creado de un juego de la VC, me basaré en el sin & punishment (aunque da lo mismo) PAL y el super smash brothers, que he comprobado que funciona.

¿Por qué un wad ya creado? Por que ya lleva todos los archivos necesarios para reempaquetar el juego, al contrario que si hacemos un dump de la nand que hemos de buscar mas archivos.

Si partimos de un dump de la nand, usad el tutorial que puse de crear un wad de forma sencilla, que son 3 pasos y ala, wad al canto.

Dicho esto:

1.- Descomprimimos el wad con el wadunpacker de torito. Nos saldran todos los ficheros .app, ticket, tmd, certificado y el trailer (el trailer es exactamente lo mismo que el 00000000.app)

2.- Con el app extractor extraemos el contenido del 00000005.app.

3.- Localizamos el archivo llamado "rom" (deberia ser el que ocupe mas megas). Podemos borrar todo lo demas.

nota: algunos juegos de la vc llevan el rom comprimido parece ser como "romc" no he probado a sustituirlo.

Aprovecho para explicar que el sin & punishment lleva una rom de 32 megas, así que sólo podremos inyectar roms de 32 megas o menos (256 megabits, 33554432 bytes).

El paper mario ocupa 40 megas, así que substituyendo la rom del paper mario de la VC podríamos inyectar juegos más grandes (hasta ese tamaño), aunque cabe la posibilidad que la rom esté comprimida como en el kirby.

Se sabe que la compresion de la rom del kirby es Lz77, usada en el banner, es posible que pronto salgan tools para comprimir, de momento está lz77ex que sirve para descomprimir.

4.- Tenemos que rellenar la rom que queremos meter con ceros con un editor hexadecimal, cada editor lleva su tool. Debemos rellenar hasta 32 megas (33554432 bytes) o el tamaño que ocupe la rom del juego de la VC. Si nuestra rom ya ocupa eso no hace falta hacer nada.

5.- abrimos el "rom" extraido con un editor hexadecimal, seleccionamos el primer offset (primeros 16 bytes, es decir, la primera linia) y copiamos los datos hexadecimales.

6.- abrimos el 00000005.app y buscamos esos datos en modo hexadecimal. El editor nos situara al principio de la rom.

7.- Seleccionamos desde este punto hasta al principio del archivo, copiamos, abrimos un archivo nuevo y pegamos los datos. Guardamos el archivo como file1.bin (por ejemplo).

8.- Repetimos pasos 5 y 6.

9.- Ahora en el editor hexadecimal usamos la funcion "Go to" (ir a) y seleccionamos posicion relativa o actual, segun el editor, para ir 33554432 bytes ( eso si la rom del canal de la VC es de 32 megas) hacia delante en el archivo. Deberiamos situarnos en un offset que comienza como "VC64" (almenos en el sin & punishment), justo arriba acaba la rom original.

nota: logicamente si el canal no es de n64 no pondra lo de VC64, eso seguro XD

10.- Seleccionamos desde este offset (el del VC64 si en todos los canales de 64 es igual) hasta el final del archivo, copiamos, abrimos un archivo nuevo, pegamos y lo guardamos como file3.bin.

11.- ahora abrimos una ventana de msdos, vamos a la carpeta de los archivos y escribimos
"copy /b file1.bin+rom+file2.bin new_00000005.app

file1.bin y file3 son los archivos que creamos antes.
rom es la rom que rellenamos de ceros si hizo falta.


----------------------

Lo siquiente es como lo he echo yo, pero creo que usando el watools 0.1 de pifia es exactamente lo mismo y lo hace automaticamente, a ver si luego lo pruebo y confirmo.

Eso si, si probais con el wadtools de pifica MUCHO OJO con lo que poneis que puede joder cosas, no useis nada que empiece por HA, FA, ME y algunas otras IDs comunes en la VC si podeis evitarlo.


12.- calculamos el hash sha1 del 00000005.app ORIGINAL

13.- abrimos el TMD.

14.- buscamos en HEXADECIMAL (y no ASCII) el hash sha1 que acabamos de calcular.

15.- Calculamos el hash sha1 del new_00000005.app

16.- Ahora substituimos en hexadecimal el sha1 del 00000005.app original por el del new_00000005.app y guardamos.

nota: recomiendo buscar el sha1 del new_00000005.app como hicimos en el paso 14 para comprobar que lo introducimos correctamente.

17.- substituimos el 00000005.app original (no lo borréis por si acaso) por el que acabamos de crear (new_00000005.app), y renombramos el tiket, el tmd y el cert a title.tik, title.tmd y title.cert.

18.- Creamos el wad con el wadpacker de kike.

nota: puede que nos interese cambiar la ID del TMD y el TIK. Ojito con lo que poneis que puede joder cosas, no useis nada que empiece por HA, FA, ME y algunas otras IDs comunes en la VC si podeis evitarlo.


Como apunte decir que con el wadpacker de Blaze no podremos hacer el wad, ya que no truchea el TMD, y este lo hemos modificado y nos daria error. Si usais las tools de torito, debereis saber como usar cada opcion de este, por eso uso el de kike, que lo hace como nos interesa ^^

salu2
Mmmmm, esto vale para roms de N64???
¡gracias! pero con unas capturas se haria mas ameno [toctoc]
No estoy para ponerme a hacer capturas y tal, sigo investigando cosillas interesantes (pasar un elf a dol) etc, el tutorial es mas bien informativo que un metodo definitivo para que se inyecten las roms, pues como he dicho cuando este el tema probado y reprobado, abundaran las tools que haran el trabajo.
Diskover escribió:Mmmmm, esto vale para roms de N64???

digamos que está hecho pensando en ellas. Aunque el procedimiento es prácticamente el mismo para cualquier otra.
Buen tutorial, aunque estarian bien unas capturillas para alegrar la vista.

Aún asi, las 5 estrellas no te las quita nadie. XD

Un saludo
A todo esto acabo de descubrir como se cambia la region de los juegos de la VC:

solo hay que cambiar un bit del title.tmd

OFFSET 0x019D

NTSC (¿o es solo USA?)- 01
PAL - 02
Region Free - 03

Aunque tambien he leido que no es 100% seguro de que funcione, sino que fuerza el canal a ejecutarse. Yo creo que quiza tiene algo que ver con el modo de video.

Ahí queda eso, a ver si alguien prueba.
Sirve para poner el zelda en castellano PAL ?

EDIT: graciaspor el tuto ;-)
como se extraen las cosas del 00000005.app?, es que no he encontrado el app extractor ese... y ocupe el buscador, tal vez no muy bien :P
suloku escribió:No estoy para ponerme a hacer capturas y tal, sigo investigando cosillas interesantes (pasar un elf a dol) etc, el tutorial es mas bien informativo que un metodo definitivo para que se inyecten las roms, pues como he dicho cuando este el tema probado y reprobado, abundaran las tools que haran el trabajo.


Para eso ya hay una aplicacion que se llama doltool. Hace las siguientes conversiones

elf -> dol
dol -> elf
bin -> dol
dol -> bin
alonsou escribió:
Para eso ya hay una aplicacion que se llama doltool. Hace las siguientes conversiones

elf -> dol
dol -> elf
bin -> dol
dol -> bin


Sí, pero no tiran con los canales. Sino compruébalo.
o0ghost0o escribió:
Sí, pero no tiran con los canales. Sino compruébalo.


Exacto, aunque en realidad es muy facil sacar el dol del elf...

Abres el elf en un editor hexadecimal y eliminas los primeros 64kB exactos, que corresponden al header del ELF.

En el offset 0x44 - 0x47 esta el offset del eof (end of file).

La mayoria de veces te puedes fiar, pero algunas opciones de compilacion, como la que usan magloader o sdbootelf 0.4 (o como se llame) hacen que ese valor no sirva.

La solucion es buscar la primera coincidencia con la cadena GNU (en ASCII), que va precedida de un byte 00.

Eliminas todo lo que hay de ese byte 00 (incluido) hasta el final y ya tienes tu dol.

salu2

pd: sí, yo ya tengo mi canal magloader 02 y mi canal hombrew launcher 0.3 creados por mi mismo.

pd2: ahora solo faltan las banner tools de marcan ^^
suloku escribió:
Exacto, aunque en realidad es muy facil sacar el dol del elf...

Abres el elf en un editor hexadecimal y eliminas los primeros 64kB exactos, que corresponden al header del ELF.

En el offset 0x44 - 0x47 esta el offset del eof (end of file).

La mayoria de veces te puedes fiar, pero algunas opciones de compilacion, como la que usan magloader o sdbootelf 0.4 (o como se llame) hacen que ese valor no sirva.

La solucion es buscar la primera coincidencia con la cadena GNU (en ASCII), que va precedida de un byte 00.

Eliminas todo lo que hay de ese byte 00 (incluido) hasta el final y ya tienes tu dol.

salu2

pd: sí, yo ya tengo mi canal magloader 02 y mi canal hombrew launcher 0.3 creados por mi mismo.

pd2: ahora solo faltan las banner tools de marcan ^^

Interesante. Otra forma que se me había ocurrido es simplemente comparar con un HEX que cambia en el dol y en el elf del wad installer de waninkoko.
hola, me parece muy interesante, llevo bastante rato buscando algunos softwares, me podria decir donde estan el wadunpacker de torito y app extractor? y como c utiliza el wadunpacker? gracias!
A mi ya me lo habías enseñado, pero te pongo 5 estrellas.
Saludos.
siento corregir al autor del tema, pero Paper Mario 64 320 Mbits, Ogre Battle 64 320 Mbits, Conkers bad fur day 512 Mbits and Resident Evil 2 64 512 Mbits are all over the 256 Mbits limit (32 Mbytes)...

Maybe we could use the paper mario virtual console files to use at least ogre battle 64, since I dont think that one is going to.... errrr jajja se me chispoteó y empecé en inglés el resto del mensaje... les decía, que tal vez se pueda usar el paper mario de la virtual console para al menos tener limite de 320 Mbits
intenten pasar goldeneye 007, jejej seria exelente
intenten pasar goldeneye 007, jejej seria exelente

No funca.

Saludos.
Seria interesante jugar un Shadowman en wii, rularia??
Llevo un rato buscando el app extractor, y no doy con el, ¿alguien me puede indicar donde encontrarlo, o poner un enlace, por favor?

Muchas gracias
cebrian escribió:siento corregir al autor del tema, pero Paper Mario 64 320 Mbits, Ogre Battle 64 320 Mbits, Conkers bad fur day 512 Mbits and Resident Evil 2 64 512 Mbits are all over the 256 Mbits limit (32 Mbytes)...

Maybe we could use the paper mario virtual console files to use at least ogre battle 64, since I dont think that one is going to.... errrr jajja se me chispoteó y empecé en inglés el resto del mensaje... les decía, que tal vez se pueda usar el paper mario de la virtual console para al menos tener limite de 320 Mbits


La verdad es que no se muy bien de donde saque que el maximo eran 256 megabits, pero ahora mimso lo cambio.
Webon_PSP escribió:Llevo un rato buscando el app extractor, y no doy con el, ¿alguien me puede indicar donde encontrarlo, o poner un enlace, por favor?

Muchas gracias



usa la busqueda tardaras menos [chulito]

http://www.elotrolado.net/hilo_Una-idea-un-tanto-ridicula---_1009474?highlight=app



suloku creo que te voy a quitar que inyectes las rom a mano [sonrisa]

va por buen camino la aplicacion [666]
¡¡Millones de gracias!!
Use el buscador (solo me aparecia este hilo, curioso), el google y las paginas amarillas, aunque viendo el título del post cualquiera se imagina que estaba allí.

Gracias de nuevo!
Una cosa, ¿por qué no hacemos una lista (de momento en este post) con las roms que hemos inyectado y el resultado obtenido? Así igual sacamos alguna conclusión...
Yo de momento inyectando el Banjo-Kazooie en el S&P se cuelga tras pedirme el uso del mando clasico.
Un saludo
En este wiki estan en ello:

http://drewblaisdell.com/wiihack/index.php?title=Virtual_Console_injections

En gba temp tambien hay un wiki y tal, poco actualizado...pero bueno, cuesta organizar todos los sceners del mundo
hola yo soy nuevo me acabo de registrar por que me parece muy interesante lo de inyectar rom y por lo que e estado mirando el ocarina of time en español todavia no tira al 100% pero sabeis si ya lo an hecho en pal por que yo solo lo e visto en ntsc gracias un saludo
una cosa tonta.... donde van ls archivos que se descomprimen con el wadunpacker en el primer paso¿? xDD
suloku esto va muy bien mira

Imagen

estoy pasando el extractor y el wadpacker de c a vb pero es lo que mas me esta costando.
5 estrellitas!!!!
Muchas gracias suloku.
gally escribió:suloku esto va muy bien mira

Imagen

estoy pasando el extractor y el wadpacker de c a vb pero es lo que mas me esta costando.


Genial, estoy harto de meter sha1's en los tmd [jaja]

Tendrias que meter tambien para modificar el titulo del savegame, pero eso sera algo mas dificil

Estan en el app5, busca los titulos del app0, aunque en los canales usa parece que solo se usa un titulo para el save
Hoy he probado:

Goldeneye
Shadowman
Goemon
F1 Racing Championship

Y todos FAIL XD

He probado con el Smash y funciona bien, como ya se ha comentado.

Seguiré haciendo pruebas, un saludo.
¿Alguien lo ha probado con algún juego de NES?

Me interesaría mucho poder meter la rom del Tetris o la del 3 en 1 PAL que incluye el Tetris... para que mi padre pueda jugar al tetris de toda la vida con el wiimote [tomaaa]
Si la rom del 3 en 1 es la que creo incluye el que a mi gusto es el mejor juego de futbol de NES, el World Cup (en Megadrive llamado High School Soccer).
Fue el cartucho que venía con mi NES, y sí, incluye el Nintendo World Cup que dices.

Estaría chulo poder inyectar o ese o el Tetris. Con ese, de paso, tendría el mario.

¿Algún alma sabia podría decirme cual sería el juego de NES a bajar para poder inyectárselo?
De nes puedes probar con cualquiera, probablmente muchos lleven (o todos) el mismo emulador, pues emular la nes deberia serle muy sencillo a nintendo como para andar haciendo emuladores especificos.

Y yo de ti usaria uno que dumpees de tu wii ¬¬

Quizá para guardar partida tenga que ver el tamaño de la SRAM de cada juego, eso creo que con comparar las partidas salvadas (sram) de varios juegos en un emulador de pc se saca, pues asi sacaba yo el tamaño de la sram en los juegos de gba.

salu2
Suloku aqui tienes para que hagas unas pruebas y me digas como va.

Por ahora no crea el wad solo modifica el 0000005.app y el tmd ( los saca en la carpeta temp), su uso es muy secillo en la carpeta vc creas otra carpeta con el nombre del juego( si quieres), copias el contenido(000005 y tmd) y ejecuta el programa.

estoy pasando el wadpacker de c a vb y hay cosas que me supera, si alguien me hiciera una rutina para hacerlo me haria un gran favor o por lo menos me explicara el codigo sobre todo esto:

temp = getfilesize(fcert);
   len_cert_nb = temp;
   len_cert = round_up(temp, 0x40);


porque se redondea el tamaño a 64 decimales ???

gracias.

descarga:
http://www.megaupload.com/?d=XBJRR1E6


una pequeña utilidad que he creado, su funcion es extraer archivo de otros en formato u8.

http://www.megaupload.com/?d=OFRZXZ03
Me he estado mirando los juegos de neo geo... en concreto el Magician Lord y el Blues Journey. Los dos tienen el juego en el 0000006.app Al extraer los archivos, tanto en un caso como en otro, se saca un archivo "game.bin" Buscando dentro del archivo he podido encontrar:

Magician Lord:

Neogeo originales: Encontrado en el game.bin
005-c1.bin ---> Nada
005-c2.bin ---> Nada
005-c3.bin ---> Nada
005-c4.bin ---> Nada
005-c5.bin ---> Nada
005-c6.bin ---> Nada
005-p1.bin ---> Nada
005-m1.bin ---> offset 80040 al B0030
005-v11.bin ---> offset B0040 al 130030
005-v21.bin ---> offset 130040 al 1B0030
005-v22.bin ---> offset 1B0040 al 230030
005-s1.bin ---> offset 230040 al 250030

(No se si es casualidad, pero todos los archivos que he encontrado empiezan en un offset con sufijo "0040", de igualmodo terminan en "0030")


En el Blues Journey:

022-c1.bin ---> Nada
022-c2.bin ---> Nada
022-c3.bin ---> Nada
022-c4.bin ---> Nada
022-p1.bin ---> Nada
022-m1.bin ---> offset 100040 al 110030
022-v11.bin ---> offset 10FFE0 al 210030 (En este no se si lo busqué mal...)
022-v22.bin ---> offset 210040 al 310030
022-s1.bin ---> offset 310040 al 330030


Tampoco he encontrado la bios de la neogeo...

Edit:He estado mirando si los archivos xxxx-cx.bin estabán encriptados pero creo que no lo están. He utilizado el winkawaks y el NeoEncrypter

Alguna idea?
36 respuestas