Dudas con las regiones de algunos juegos de tri-Ace para PS2

Lugar donde se intentarán resolver problemas específicos
Responder
Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5515
Registrado: 24 Ene 2011, 16:52

Dudas con las regiones de algunos juegos de tri-Ace para PS2

Mensaje por CUE » 13 Abr 2011, 11:17

Tengo unas dudas sobre algunos juegos de tri-Ace para PS2:
- ¿El 'Radiata Stories' no salió en Europa?
- ¿En cuántos idiomas salió el 'Valkyrie Profile 2: Silmeria' en Europa?
- ¿El 'Valkyrie Profile 2: Silmeria' salió en coreano? (tiene que molar que te cagas)

Las respuestas no tienen premio, como mucho os apunto unos gallifantes.

chuchoamor
Mensajes: 31
Registrado: 21 Mar 2011, 09:28

Mensaje por chuchoamor » 13 Abr 2011, 12:19

El Radiata Stories no salio en Europa... lo estuve esperando como agua de mayo y me llevé un gran chasco porque tiene una pinta increible.
PD: Acaban de publicar en emuparadise los scans de la guia oficial por si a alguien le interesa.

Respecto al valkirie profile 2 le tengo en casa aun precintado... Sé que viene en castellano pero no se en cuantos idiomas más.
tambien se que existe una versión UNDUB en EEUU del juego.

PD2: no sabía de tu interes por el coreano.... :lol:

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5515
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 14 Abr 2011, 09:53

Pues me ha dado el bajón con estos 3 juegos.

En principio pensaba "divertirme" un poco con ellos y empecé con el 'Star Ocean 3', intentando buscar la encriptación de la tabla de ficheros. Aquí me llevé la primera decepción, pues lo que yo pensaba que iba a llevarme un tiempecillo de investigación se redujo no a días ni a horas ni a minutos, si no a 3-4 segundos (no es coña), lo que tardé en realizar una búsqueda sobre el ELF desensamblado. No puedo decir que sea mérito mío, más bien es torpeza de tri-Ace, pues me limité a buscar la semilla inicial de la encriptación que se usa en el 'Star Ocean 2' de PSX, y resulta que es la misma, lo que considero una verdadera torpeza, pues se supone que la encriptación tiene un propósito, y poder saltársela de esta manera es un verdadero sin-sentido, un auténtico absurdo, como si alguien se comprase una caja fuerte para guardar sus pertenencias más valiosas y después de hacerlo dejase la puerta abierta.

La búsqueda me dio como resultado todo el código con la encriptación, algo menos de 200 líneas, que portadas a C son apenas 10 (aquí, por lo menos, sí disfruté algo).

Después, y a petición, me metí con el 'Radiata Stories', donde tardé incluso menos, pues tanto la encriptación como la semilla usada en ella es la misma que en el 'Star Ocean 3'. Otra decepción más a a añadir.

Aún quedaba un tercer juego, el 'Valkyrie Profile 2', y, para no variar, más de lo mismo, la misma rutina de encriptación, aunque con una semilla distinta.


Sólo he hecho la extracción preliminar de ficheros ocultos de los DVD, válida para cualquiera de los juegos, intentando ponerles una extensión de acuerdo a su estructura. Lo archivos '.unk' creo que son vídeos, pero no tengo la certeza, y los '.bin' no sé exactamento de qué van. El resto está más o menos claro, y hay que desempaquetar algunos y descomprimir a mansalva, pero eso ya es algo que no voy a publicar.


El programa: http://www.megaupload.com/?d=85LRKV4S

La sintaxis es triAce-PS2 imagen carpeta, y extrae el contenido de la imagen del DVD en la carpeta que indiquemos. Para los que me dan la lata con el tema: Si vuestra porquería de antivirus gratuito os da algún aviso, cambiadlo y usad uno de verdad, uno que no dé falsos avisos cuando se encuentra con ficheros que no sabe procesar, pero, por favor, dejadme de dar la lata con el tema, que ya cansa.


Algunos datos de los juegos, aunque los resultados pueden variar ligeramente dependiendo de la región de los mismos:

Star Ocean 3:
- 5882 archivos en 4.33GB del primer DVD
- 5715 archivos en 4.33GB del segundo DVD

Como curiosidad: Se puede crear un DVD9 con los datos de ambos DVDs, y todo se queda en 6067 archivos que ocupan 5.16GB, sin nada ripeado, pues tienen muchos ficheros comunes. Pensaba hacer una utilidad para juntar los DVD, como hice en su tiempo para el 'Star Ocean 2' y el 'Valkyre Profile' de PSX, pero paso.

Radiata Stories:
- 3119 archivos en 3.32GB

Valkyrie Profile 2:
- 2860 archivos en 4.34GB


Obviamente, esta utilidad apenas tendrá sentido para la gente, pues no creo que haya más de 2-3 personas que puedan/sepan procesar esos ficheros, incluyendo extranjeros, y yo ya me autoexcluyo, así que la lista se reduce aún más.

chuchoamor
Mensajes: 31
Registrado: 21 Mar 2011, 09:28

Mensaje por chuchoamor » 14 Abr 2011, 12:40

IMPRESIONANTE!!! :shock:

Sé que has dicho y re-dicho una y 1000 veces que las traducciones te importan poco o nada.
Aun así no deja de sorprenderme que con el potencial que tienes para entender la mecánica de hackeo de los juegos y fabricar herramientas para su traducción (que entiendo que es lo unico que te motiva de este mundillo) no te inspire el hecho de fabricarlas.

Ojo, no se me malinteprete... simplemente digo que me sorprende la forma de aplicar tus conocimientos. (para gustos los colores)

Avatar de Usuario
gadesx
Administrador
Administrador
Mensajes: 1984
Registrado: 24 Ene 2011, 16:43
Ubicación: El puche
Contactar:

Mensaje por gadesx » 14 Abr 2011, 12:47

como siempre dando un paso donde nadie mas lo consigue XD
supongo que los archivos que extrae el programa estaran
tambien empaquetados (algo de lzss que tanto oimos?)

voy a tener que hacer como davoker pero mejor, me voy a dejar
barba y a ponerme moreno, me iré a donde viven los moros y
me casaré con 8 para [s]sodomizarlas [/s]ponerlas a traducir XDDDDDDDD

Avatar de Usuario
Kuras
Mensajes: 20
Registrado: 25 Feb 2011, 00:34

Mensaje por Kuras » 14 Abr 2011, 17:07

CUE, dentro de poco te van a tener que hacer un monumento o algo en tu honor, porque eres un genio (y creo que me quedo corto xD). Al paso que vas, en medio año más descomprimes todos los juegos que existen.

gadesx escribió:voy a tener que hacer como davoker pero mejor, me voy a dejar
barba y a ponerme moreno, me iré a donde viven los moros y
me casaré con 8 para [s]sodomizarlas [/s]ponerlas a traducir XDDDDDDDD
¿Y la gracia y la emoción de hacerlo por ti mismo? ¿Es que eso no vale nada?

Avatar de Usuario
gadesx
Administrador
Administrador
Mensajes: 1984
Registrado: 24 Ene 2011, 16:43
Ubicación: El puche
Contactar:

Mensaje por gadesx » 14 Abr 2011, 17:09

la gracia y la emocion se pierden cuando ya has traducido unos cuantos,
como cualquier trabajo, menos en el p0rn XD

Avatar de Usuario
Kuras
Mensajes: 20
Registrado: 25 Feb 2011, 00:34

Mensaje por Kuras » 14 Abr 2011, 17:13

gadesx escribió:la gracia y la emocion se pierden cuando ya has traducido unos cuantos[...]
Que desilusión, tendré que replantearme seriamente si seguir aprendiendo en este mundillo o no. Mmm... Bah, me da igual, quiero seguir aprendiendo que para un hobby que tengo no me voy a deshacer de él :)

Avatar de Usuario
CUE
Administrador
Administrador
Mensajes: 5515
Registrado: 24 Ene 2011, 16:52

Mensaje por CUE » 15 Abr 2011, 12:49

Por si alguien quiere meter mano, aquí va una cosita para descomprimir. Quien quiera comprimir que se busque la vida, que no voy a darlo todo hecho, pero aviso que yo me vendo barato (unas cervezas, jamón, queso, sexo con un grupo de lesbianas, ...). Lo he copiado tal cual lo tengo documentado, así que si falla algo será por alguna tontería, pues tengo 40 versiones de lo mismo, pero es lo que usé con Star Ocean 2 y Valkyrie Profile, y funciona con los ficheros comprimidos de PSX y PSP, y siempre tuve la duda de si funcionarían con los de PS2, duda que ya está resuelta.

Se trata de la mal llamada compresión SLZ, que no lo es realmente pues SLZ es un formato de almacenamiento de ficheros, y puede llevar uno o dos ficheros empaquetados, el primero de los cuales siempre está comprimido y el segundo, en caso de que lo haya, no tiene por qué estarlo.

La cabecera de un archivo SLZ consta de 16 bytes:
- 3 bytes con la signatura, siempre el texto "SLZ"
- 1 byte con el tipo de compresión
- 4 bytes con el tamaño del fichero comprimido, que muchas veces está mal
- 4 bytes con el tamaño del fichero descomprimido
- 4 bytes con la posición del segundo fichero o cero si no existe
(los valores numéricos siempre se almacenen con el byte menos significativo primero)

Después de la cabecera vienen los datos del primero fichero. Si hay un segundo fichero, éste deberá empezar en una dirección múltiplo de 4, es decir, que el primero fichero se alinea a 4 bytes, rellenando esos bytes de más con ceros. El segundo fichero, en caso de estar comprimido, tendrá la misma estructura, y si no lo está, tendrá los datos tal cual.

El tipo de compresión puede ser uno de los siguientes:
- 0 = STORE, es decir, los datos estan sin comprimir. Esto se debe a que hay ocasiones que al comprimir un fichero queda un poco más grande que el original, y es tontería comprimir para que algo quede más grande, así que se deja el fichero tal cual, sin comprimir, pero con la cabecera de los SLZ.
- 1 = LZSS, que poco hay que decir de ella, que ya habréis visto que aparece hasta en la sopa.
- 2 = LZSS/RLE, que es un caso especial, pues mezcla LZSS con RLE para obtener una ligera ganancia en la compresión.
- 3 = LZSS16, que sólo existe en los juegos de PS2 y, a diferencia de la LZSS normal, que trata datos de 8 bits, ésta trata datos de 16 bits.

En el código siguiente hay unos numeritos al principio de cada línea. Los puse porque en su momento me aburría y jugueteé un poco con el código. Si sólo ponemos las líneas que empiezan por 0 tenemos una función de descompresión para el tipo 0. Si añadimos después las que comienzan por 1 tenemos una descompresión para los tipos 0 y 1. Creo que el resto no tengo que explicarlo, pero, aún así, creo conveniente recordar, por si alguien es de letras (ZAAAAAAAAASSSSS, en toda la boca), que después del 1 va el 2, y después del 2, el 3 (mala leche que tengo a veces!!!!).

La función necesita como entrada:
- bSlz, un buffer donde habremos almacenado el fichero comprimido. Como no son muy grandes es mejor trabajar directamente con los datos en memoria en vez de estar leyendo del disco duro. No importa si el buffer es de 8, 16, 32 ó 64 bits de datos.
- bRaw, un buffer donde almacenaremos el fichero descomprimido. Deberá ser creado antes de llamar a la función, y, como antes, da igual el tamaño de los datos.

Una vez ejecutado el código, en bRaw ya tendremos el fichero descomprimido, listo para ser guardado en el disco duro.

NOTA 1: 'int' debe ser un valor de 4 bytes, que no sería la primera vez que alguien usa un compilador antiguo donde se trata como 2 bytes. Lo aviso y así me quito el muerto de encima.
NOTA 2: La descompresión, o alguna de sus variantes, ha sido portada a otros lenguajes y sistemas operativos, sin necesidad de nada que se llame 2.0, .NET o similares.
NOTA 3: Si algo falla, será porque he cogido una versión no terminada, pero no debería ser obstáculo para que se arregle.
NOTA 4: Si no entiendes algo, no me preguntes, ¿o acaso pretendes que además de escribir lo haga claramente?
NOTA 5: Sí, odio a los pokemon, ¿pasa algo?

Código: Seleccionar todo

    unsigned char *slz, *raw, *fin;
    unsigned int type, flags, pos, len;

0:  slz = (unsigned char *)bSlz + 0x10;
0:  raw = (unsigned char *)bRaw;
0:  fin = raw + *(unsigned int *)(slz - 0x08);
0:  type = *(slz - 0x0D);
1:  if (!type) {
0&#58;    while &#40;raw < fin&#41; *raw++ = *slz++;
1&#58;  &#125; else &#123;
1&#58;    for &#40;flags = 0; raw < fin; flags >>= 1&#41; &#123;
1&#58;      if &#40;flags < 0x10000&#41; &#123;
1&#58;        flags = 0x00FF0000 | *slz++;
3&#58;        if &#40;type == 3&#41; flags |= 0xFFFF0000 | &#40;*slz++ << 8&#41;;
1&#58;      &#125;
1&#58;      if &#40;flags & 1&#41; &#123;
1&#58;        *raw++ = *slz++;
3&#58;        if &#40;type == 3&#41; *raw++ = *slz++;
1&#58;      &#125; else &#123;
1&#58;        pos = *slz++;
1&#58;        len = *slz++;
2&#58;        if &#40;&#40;type == 2&#41; && &#40;len >= 0xF0&#41;&#41; &#123;
2&#58;          if &#40;len > 0xF0&#41; &#123;
2&#58;            len = &#40;len & 0xF&#41; + 3;
2&#58;          &#125; else &#123;
2&#58;            len = pos + 0x13;
2&#58;            pos = *slz++;
2&#58;          &#125;
2&#58;          while &#40;len--&#41; *raw++ = pos;
2&#58;        &#125; else &#123;
1&#58;          pos |= &#40;len & 0xF&#41; << 8;
1&#58;          len = &#40;len >> 4&#41; + 3;
3&#58;          if &#40;type == 3&#41; &#123;
3&#58;            len = --len << 1;
3&#58;            pos <<= 1;
3&#58;          &#125;
1&#58;          while &#40;len--&#41; *raw++ = *&#40;raw - pos&#41;;
2&#58;        &#125;
1&#58;      &#125;
1&#58;    &#125;
1&#58;  &#125;
Copyleft 2011 CUE.
Verbatim copying, translation and distribution of this entire article is permitted in any digital medium, provided this notice is preserved.

Avatar de Usuario
josekenshin
Mensajes: 299
Registrado: 28 Ene 2011, 21:03
Contactar:

Mensaje por josekenshin » 15 Abr 2011, 19:04

Juas, a mi me encantaría traducir el Star Ocean 3, es un juegazo XD

Pero me da miedo como sea como el 1 y el 2 ^^

Responder