[Proyecto] BootCD para Dreamcast (Modo panorámico, VGA y Region free)

Hola a todos,

Desde que salieron los parches VGA para los DinoCrisis, RE: CV, Skies of Arcadia y demás, me ronda la cabeza que sería ideal hacer un bootcd que inyectase el 1ST_READ.BIN parcheado al juego original, para poder usar nuestros originales y no tener que recurrir a Dreamshell y HDD Mod, GDEMUs o ripeos varios.
El autor de los parches (japanese cake) me comentó que tenía esto en mente cuando lanzó los primeros parches, pero parece ser que lo ha dejado de lado, por lo que, quizá, sea el momento de hacerlo por mi mismo.

Ya puestos, y cargado de ambición, también intentaría hacer el mejor BootCD para la consola que parchease también los juegos para que tuviesen modo panorámico e intentar hacer que funcionen los juegos de otras regiones.

Realmente no tengo ni idea de la viabilidad de esto, he estado mirando por internet y parece factible, pero si alguien tiene ideas y quiere echarme una mano, sería más que bienvenido!

Un saludo!
Suena a una idea muy interesante, te animo que sigas con la misma
@gatoh ánimo, buena idea, yo lo buscaba para el VGA del skies of arcadia...
Bueno, para empezar, estoy intentando usar el parche VGA del Skies of Arcadia utilizando el Codebreaker, os explico mis avances.

Para empezar algo de información de como es el inicio de un juego en Dreamcast:

Los juegos de dreamcast tienen dos archivos indispensables en el arranque: IP.BIN y 1ST_READ.BIN.
El IP.BIN hace las veces de bootloader y parece ser que se comunica directamente con la BIOS al arranque de la consola. Este fichero es importante para nosotros, ya que aquí es donde se asignan cosas como la salida de video (RGB, VGA, etc).
El segundo, el 1ST_READ.BIN es más importante aún ya que es el ejecutable de la consola y tiene información de bastantes cosas.
Según pude leer en el blog de Japanese_Cake (el descubridor de los parches VGA) la salida de video en los juegos en los que no se puede forzar (Resident Evil: Code Veronica, Skies of Arcadia, etc) viene forzada en el propio 1ST_READ.BIN, por lo que no importa que modifquemos el IP.BIN, siempre sacará una imagen PAL. La solución es modificar el 1ST_READ.BIN con ayuda de un debugger y un emulador para que no haga caso de esto y poder lanzar el formato de imagen que nosotros le digamos.

Lo primero que hice fue investigar como narices funciona exactamente el Codebreaker, parece ser que al arranque del disco que vayamos a cargar, inyecta la información al binario 1ST_READ.BIN permitiendo modificar algunas cosas, como por ejemplo cambiar el POV del motor 3D que se ejecuta, lo cual nos permite hacer el ya conocido formato panorámico deformando la imágen de salida para que se pueda ver bien en 16:9 aunque la resolución interna sea de 4:3.

El funcionamiento del Codebreaker es relativamente sencillo, por ejemplo, en el siguiente código:
02502A88 3F400000


Los primeros 8 dígitos son las que indican al programa cuantos bits hay que inyectar y donde, y dentro de estos 8 dígitos los 2 primeros indican la cantidad de información que se va a modificar y los 6 restantes la dirección hexadecimal de donde se van a inyectar:
02 -> Número de pares de bytes que se van a inyectar, son dos, ya que cada byte son 2 digitos hexadecimales. Si quisiesemos inyectar 16 dígitos, esto sería 04, 24 serían 06 y así sucesivamente.
502A88 -> Dirección donde se va a inyectar la información. Realmente la dirección es 8C502A88, pero el 8C se omite.

Los segundos 8 dígitos es la información que se va a inyectar, pero ¡muy importante! en formato little endian, esto es, si en el hexadecimal tienen este orden: AABBCCDD en el código del Codebreakers el orden sería DDCCBBAA.

Sabiendo esto, fui rápidamente al 1ST_READ.BIN con el parche VGA de Japanese_cake y lo comparé con el del Skies of Arcadia normal, y encontré estas diferencias:

Imagen
Imagen

O, lo que es lo mismo, debemos inyectar:
En 000187F0: 224F03D2 0B420900 264F0B00 09000900 60A5388C
En 0037A560: 224F05D2 0B420900 05D20820 008B03D2 264F0B00 23600900 20272A8C 31000000 38000000

Lo cual nos quedaría en el Codebreaker estos códigos:
Códigos Codebreaker VGA SoA:
0A0287F0 8C38A560 00090009 000B4F26 0009420B D2034F22
1238A560 00000038 00000031 8C2A2420 00096023 000B4F26 D2038B00 2008D205 0009420B D2054F22

o
020287F0 D2034F22
020287F4 0009420B
020287F8 000B4F26
020287FC 00090009
02028800 8C38A560

0238A560 D2054F22
0238A564 0009420B
0238A568 2008D205
0238A56C D2038B00
0238A570 000B4F26
0238A574 00096023
0238A578 8C2A2720
0238A57C 00000031
0238A580 00000038


Lo he probado tanto con el Action Replay (forzando NTSC) y en Codebreaker y... no ha funcionado :(

Por tanto os pido ayuda, a ver si podemos conseguir la salida VGA en nuestros GDs originales!

Un saludo!

EDITO:
He descubierto esta web donde se explica el funcionamiento de los códigos. Parece ser que para que los códigos funcionen para más de 4 bytes (32 bits) deberían tener la siguiente estructura:
0300nnnn

aaaaaaaa


Group write code. nn specifies how many 32 bit values follow. aaaaaaaa is the addrsss to write to. The values following this code are written to address aaaaaaaa. E.g:

03000004

8c012000

11111111

22222222

33333333

44444444

The effect is as follows: With a count of 00000004 codes, to address 8c012000:

8c012000 = 11111111

8c012004 = 22222222

8c012008 = 33333333

8c01200c = 44444444


Lo que nos dejaría esto:
03000005 8C0287F0 8C38A560 00090009 000B4F26 0009420B D2034F22
03000009 8C38A560 00000038 00000031 8C2A2720 00096023 000B4F26 D2038B00 2008D205 0009420B D2054F22


El cual he probado y... no va :(

EDITO2:
He probado añadiendo 0000803D 00000031 usando Demul y el cheatengine y ¡va!.
Esto último apunta al IP.BIN, para forzar el flag del VGA. Lamentablemente, no puedo probarlo en hardware real ¿alguien podría? :D Los códigos son:

VGA:
020287F0
D2034F22
020287F4
0009420B
020287F8
000B4F26
020287FC
00090009
02028800
8C38A560
0238A560
D2054F22
0238A564
0009420B
0238A568
2008D205
0238A56C
D2038B00
0238A570
000B4F26
0238A574
00096023
0238A578
8C2A2720
0238A57C
00000031
0238A580
00000038
0000803D
00000031
@gatoh Si no recuerdo mal, a la hora de parchear el Skyes of arcadia, además de aplicar el parche de japanese-cake, había que habilitar la salida vga en el IP.BIN.

When building an Dreamcast image (CDI/GDI/etc.), make sure the VGA flag is set in the boot file (AKA IP.BIN).


Yo recuerdo que al aplicar el parche y probarlo con el GDEMU no me funcionaba. Luego esa misma imagen parcheada, la volví a parchear con el parche genérico para habilitar VGA (entiendo que el que le dice al IP.BIN que es compatible) y ya sí funcionó.

A lo mejor van por ahí los tiros. Siento no poder ayudarte más.

Por cierto, muy interesante tu explicación del funcionamiento del Code breaker.
lo he probado en action replay, y sigue saliendo el mensaje del vga, he probado engañando con un interruptor y nada, blanco y negro, aunque no tengo practica con el vga trick

supongo que convertiste el código de cheatengine a codebreaker, a ver si alguien lo prueba con el mismo.
Gromber escribió:lo he probado en action replay, y sigue saliendo el mensaje del vga, he probado engañando con un interruptor y nada, blanco y negro, aunque no tengo practica con el vga trick

supongo que convertiste el código de cheatengine a codebreaker, a ver si alguien lo prueba con el mismo.


Gracias por probarlo. Estoy sin dreamcast real hasta el sábado!
Yo uso Codebreaker y Action Replay, tengo ambos cd's funcionando version sparrow.
En el emulador con el cheat engine, si solo ponemos el código que apunta al IP.BIN:

0000803D
00000031

Que en Demul sería

2C00803D
00000031


Ya no aparece el mensaje de el cable es incorrecto, pero emite la señal en entrelazado. Si añadimos los otros ya emite a 60Hz y 30FPS y en progresivo. ¿podrías probar solo activando el código que acabo de poner?
En caso de que no vaya, prueba en la dirección 0000803E, es decir:

0000803E
00000031


Con estos códigos en principio debería saltarse la comprobación del flag VGA, tal y como se puede comprobar aquí.

Muchisimas gracias!
no pirulan. Mi Skies of Arcadia es original.
Gromber escribió:no pirulan. Mi Skies of Arcadia es original.


Vaya, gracias por probarlo!

Uhm, no entiendo porque no funciona, pero creo que se me ocurren dos teorías:

1) El Action replay es incapaz de escribir en sectores de la memoria tan bajos (por debajo del 0x8C010000) ¿quizá el Codebreaker si pueda?
2) La información del VGA flag no la está leyendo del IP.BIN, sino del IP0000.BIN, que se encuentra en otra región del disco con esta información duplicada. Quizá Demul no haga caso a este archivo, pero el hardware real si. Tengo que investigar en que posición de la memoria se encuentra, esta noche con Demul lo miro.

Un saludo.
Ánimo @gatoh, muy interesante esta tarea... y "titánica".
Yo ahora tengo la blanquita en "talleres", asi que no puedo ayudar, sorry.
Pero sigo el hilo atentamente
@gatoh Ánimo, seguiré de cerca este hilo, ojalá lo consigas!

A mí me interesa también de cara a poder ejecutar juegos originales de otras regiones. Imagino que se mete el CD Boot, se enciende la consola y, al ejecutarlo, ya puedes meter el original de la región que sea y a correr, ¿no?
eso ya se puede hacer con otros cargadores
Gromber escribió:eso ya se puede hacer con otros cargadores


Yo probé hace 15 años o así uno que me enseñó un amigo. Poco recuerdo salvo que metía el CD boot y luego ejecutaba copias de seguridad en el acto fuera de la región que fuera, pero no sé si valía con originales o solo copias de seguridad, ya veo que con ambos.

Utopía se llamaba si mal no recuerdo, pero no sé si daba fallos con VGA.
@pakillo_ds funciona tambien con originales, aunque no es perfecto, otro cargador para originales es el DCX, sobre VGA, depende del juego, algunos se resisten como el Skies of Arcadia o RE CV Pal, de ahí la idea de este cargador.

Aunque el cargador no se vea, lo cambias a ciegas, tambien es ideal que el vga tenga un interruptor para engañar a la consola en algunos juegos originales, el Action Replay CDX si es compatible con VGA, aunque no es tan bueno como el DCX y el Utopia tenia una versión VGA que no se como andara.

Salu2
Gromber escribió:@pakillo_ds funciona tambien con originales, aunque no es perfecto, otro cargador para originales es el DCX, sobre VGA, depende del juego, algunos se resisten como el Skies of Arcadia o RE CV Pal, de ahí la idea de este cargador.

Aunque el cargador no se vea, lo cambias a ciegas, tambien es ideal que el vga tenga un interruptor para engañar a la consola en algunos juegos originales, el Action Replay CDX si es compatible con VGA, aunque no es tan bueno como el DCX y el Utopia tenia una versión VGA que no se como andara.

Salu2


A unas malas, tirando de importación se juega el Skies of Arcadia en inglés por VGA, porque la americana sí es compatible, ¿no?

Usando el Utopia o el que sea para cargarlo en la consola PAL.

Los otros dos que comentas no los conocía, pero imagino que harán más o menos lo mismo solo que con distintas funcionalidades.

Un saludo.
pakillo_ds escribió:
Gromber escribió:@pakillo_ds funciona tambien con originales, aunque no es perfecto, otro cargador para originales es el DCX, sobre VGA, depende del juego, algunos se resisten como el Skies of Arcadia o RE CV Pal, de ahí la idea de este cargador.

Aunque el cargador no se vea, lo cambias a ciegas, tambien es ideal que el vga tenga un interruptor para engañar a la consola en algunos juegos originales, el Action Replay CDX si es compatible con VGA, aunque no es tan bueno como el DCX y el Utopia tenia una versión VGA que no se como andara.

Salu2


A unas malas, tirando de importación se juega el Skies of Arcadia en inglés por VGA, porque la americana sí es compatible, ¿no?

Usando el Utopia o el que sea para cargarlo en la consola PAL.

Los otros dos que comentas no los conocía, pero imagino que harán más o menos lo mismo solo que con distintas funcionalidades.

Un saludo.


La cosa está en poder jugar en VGA a tu skies of arcadia original español... [beer]
RolleR escribió:
pakillo_ds escribió:
Gromber escribió:@pakillo_ds funciona tambien con originales, aunque no es perfecto, otro cargador para originales es el DCX, sobre VGA, depende del juego, algunos se resisten como el Skies of Arcadia o RE CV Pal, de ahí la idea de este cargador.

Aunque el cargador no se vea, lo cambias a ciegas, tambien es ideal que el vga tenga un interruptor para engañar a la consola en algunos juegos originales, el Action Replay CDX si es compatible con VGA, aunque no es tan bueno como el DCX y el Utopia tenia una versión VGA que no se como andara.

Salu2


A unas malas, tirando de importación se juega el Skies of Arcadia en inglés por VGA, porque la americana sí es compatible, ¿no?

Usando el Utopia o el que sea para cargarlo en la consola PAL.

Los otros dos que comentas no los conocía, pero imagino que harán más o menos lo mismo solo que con distintas funcionalidades.

Un saludo.


La cosa está en poder jugar en VGA a tu skies of arcadia original español... [beer]


Pues sí, toda la razón.

A ver si algún día se consigue [beer]
No te puedes ni imaginar lo que me ha costado loguearme después de tantos años [qmparto]

Tengo tanto Skies of Arcadia como Resident Evil: Code Veronica PAL listos para comprobar tus avances.

A decir verdad no creo que pasara de echarles 5 minutos a cada uno, pero la ilusión siempre queda.
Gracia a todos por los ánimos!
He seguido investigando y trabajando en ello en contacto con japanese cake y él ahora se ha puesto al 100% con ello, y sacará algo muy pronto, por lo que os pido paciencia, en breve tendremos los gds originales con VGA!
¿cómo va el proyecto?
@gatoh estamos deseosos de saber si hay avances o el proyecto se estancó :P
Cuando os veo cosas como esta es cuando desearía volver al 2005-2006 para haber orientado mis estudios a programación para poder hacer cosas o colaborar. [buuuaaaa]
Hola!

Pues le dediqué unos ratos más de forma lamentablemente infructuosa, pero en principio, hasta donde yo sé, japanese cake está trabajando en ello por lo que estoy esperando a su proyecto y he dejado un poco aparcado el mío. Volveré a hablar con él, a ver como lo lleva, pero parece que no tiene demasiado tiempo últimamente, y está centrado en su nueva bios.

Si alguien tiene alguna idea que pueda aplicar, que me lo comente, yo me he quedado casi sin recursos.

Un saludo!
24 respuestas