Romxhacking Romxhacking
- Nasío pa'jakear -
 
 F.A.Q.F.A.Q.   BuscarBuscar   Lista de MiembrosLista de Miembros   Grupos de UsuariosGrupos de Usuarios   RegístreseRegístrese 
 PerfilPerfil   Identifíquese para revisar sus mensajesIdentifíquese para revisar sus mensajes   ConectarseConectarse 


Menú principal
Portal
Foros
F.A.Q.
Buscar
Lista de miembros
Grupos de usuarios
Perfil

Usuario
Nombre de Usuario:

Contraseña:

 Recordarme



He olvidado mi contraseña

¿Aún no tiene su cuenta?
Puede registrarse Aquí, es GRATIS.


Anuncio del administrador
No pretendemos solucionar todos los problemas ni ser referencia de nada, simplemente nos reunimos aquí para charlar de nuestras cosas.
NO SE RESPONDERÁ A NADA POR PRIVADO, QUE EL FORO ESTÁ PARA ALGO

Problema fuentes Pokemon Conquest NDS
Ir a página Anterior  1, 2, 3, 4  Siguiente
 
Publicar Nuevo Tema   Responder al Tema    Romxhacking -> Dudas y Preguntas
Ver tema anterior :: Ver siguiente tema  
Autor Mensaje
pleonex



Sexo: Sexo:Hombre
Registrado: 21 Aug 2011
Mensajes: 68
Ubicación: Espania
Estado: Offline
MensajePublicado: Wed Aug 08, 2012 11:31 am    Título del mensaje: Responder citando

Ey, ey, ey, que he llegado (y para llegar he tenido que desactivar que se carguen las imágenes de las webs a las que entro... si es que el verano es de todo menos bueno)

Las fuentes... Una, está en el overlay11 como ha dicho CUE y además hay otras 2 o 3 en el overlay10 que son las principales. Recuerdo que con la traducción al inglés, las del overlay10 si tenían los caracteres ASCII, pero la del 11 no (pero no miré como cambiarlo).

El problema es que no se puede añadir su código original, porque si es mayor de 0xE0, entramos en la zona de los Kanjis y el juego lee el siguiente byte. Concretamente pongo aquí la subrutina que se usa para determinar si se debe o no leer otro byte más para formar el caracter (los CMP de siempre):
Código:

RAM:0206F80C ; =============== S U B R O U T I N E =======================================
RAM:0206F80C char_size                               
RAM:0206F80C CMP     R0, #0x81 ; 'ü'
RAM:0206F810 BCC     loc_206F81C
RAM:0206F814 CMP     R0, #0x9F ; 'ƒ'
RAM:0206F818 BLS     loc_206F82C
RAM:0206F81C
RAM:0206F81C loc_206F81C                             
RAM:0206F81C CMP     R0, #0xE0 ; 'Ó'
RAM:0206F820 BCC     loc_206F834
RAM:0206F824 CMP     R0, #0xFC ; '³'
RAM:0206F828 BHI     loc_206F834
RAM:0206F82C
RAM:0206F82C loc_206F82C                             
RAM:0206F82C MOV     R0, #1
RAM:0206F830 BX      LR
RAM:0206F834 ; ---------------------------------------------------------------------------
RAM:0206F834
RAM:0206F834 loc_206F834                             
RAM:0206F834 MOV     R0, #0
RAM:0206F838 BX      LR
RAM:0206F838 ; End of function char_size
RAM:0206F838
RAM:0206F838 ; ---------------------------------------------------------------------------


También te digo que no uséis la versión que hay en internet de mi programa para extraer los textos del MSG.DAT que me he dado cuenta de un fallo y ya de paso le añado la tabla para convertir los caracteres.
Volver arriba
Ver perfil del usuario Enviar mensaje privado   Visitar sitio web del autor
CUE
Administrador
Administrador


Sexo: Sexo:Hombre
Registrado: 24 Jan 2011
Mensajes: 5435
Estado: Offline
MensajePublicado: Wed Aug 08, 2012 12:12 pm    Título del mensaje: Responder citando

Es el algoritmo normal del codepage 932, como se ve en esta imagen que he enlazado directamente a Microsoft:

Si sólo es ésa la rutina de los caracteres se podría cambiar para que use una tabla ASCII normalucha, con los códigos Latin I/II necesarios, o, mejor aún, la codepage 1252. Sería tan simple como los pokemon y sus fans eliminar esos saltos para coger el segundo byte.

Pues si el resto de fuentes está en el ovr10 lo miraré luego.

Por cierto, he mirado lo que hiciste para desencriptar el MSG.DAT y te voy a romper los esquemas porque no hace falta tanto rollo.

Esto es lo que tú haces:
Oculto: 
Código:
      public static Byte[] Encryption(byte[] data)
      {
         int size = data.Length;
         int pos = 0;
         
         while (pos < size)
         {
            long mult = pos * MULT1;
            int key_offset = (int)(mult >> 32) >> 4;
            mult = key_offset * MULT2;
            key_offset = (int)mult >> 32;
            key_offset = pos - key_offset;
            
            byte value = data[pos];
            byte keyv = (byte)KEY[key_offset];
            value = (byte)(value ^ keyv);
            data[pos] = value;
            
            pos++;
         }
         
         return data;
      }


Así lo hago yo, que soy más vago, con el programa completo, programa Comansi (los más veteranos entienden lo que he dicho), donde con 2 líneas se hace lo mismo:
Oculto: 
Código:
// Encriptación para Pokémon Conquest: funciona como un switch ON/OFF
// Versiones JAP/USA/EUR - Nintendo DS
// Copyright (C) CUE 2012

#include "common.inc"

#define KEYCODE "MsgLinker Ver1.00"
#define KEYSIZE 17 // strlen(KEYCODE)

int main(void) {
  char *msg, name[256];
  int  *ptr, pos, len;
  int   i, j;

  msg = FileLoad("MSG.DAT");

  ptr = (unsigned int *)msg;
  for (i = 0; ; i++) {
    if (!(pos = *ptr++)) break;
    len = *ptr++;

    for (j = 0; j < len; j++)
      msg[pos + j] ^= KEYCODE[j % KEYSIZE];

    sprintf(name, "%04d.dec", i);
    FileSave(name, msg + pos, len);
  }

  free(msg);

  exit(EXIT_SUCCESS);
}


Cuando tenga otro ratillo te explico todo el rollo que haces con el 0xF0F0F0F1, que es una de esas cosas que no te explican en clase ni viene en los manuales.

~~~ AÑADIDO ~~~
Vale, ya he visto las dos fuentes que hay en el OVR10, que sólo se diferencian en los bpp y en las dimensiones, pero con los mismos códigos:


Volver arriba
Ver perfil del usuario Enviar mensaje privado  
Kula



Sexo: Sexo:Mujer
Registrado: 05 Aug 2012
Edad: 37
Mensajes: 28
Estado: Offline
MensajePublicado: Wed Aug 08, 2012 1:15 pm    Título del mensaje: Responder citando

Muchas gracias por todo.

Entonces de momento me espero a hacer nada hasta que no se solucione el problema del extractor de textos del MSG.DT, no vaya a ser que la lie.

Igualmente mientras tanto voy traduciendo el juego para ir adelantando e ir teniendo trabajo hecho.

Mientras también estoy intentando toquetear los gráficos a ver si consigo editar alguno, pero el Tinke parece que no tiene el plugin necesario para abrir el formato de estos y todavía no he encontrado ninguno que lo haga... Sigo investigando...

(Al menos con todo esto y gracias a vosotros he conseguido enterarme de un montón de cosas que antes no sabía Ic_biggrin )
Volver arriba
Ver perfil del usuario Enviar mensaje privado  
pleonex



Sexo: Sexo:Hombre
Registrado: 21 Aug 2011
Mensajes: 68
Ubicación: Espania
Estado: Offline
MensajePublicado: Wed Aug 08, 2012 1:35 pm    Título del mensaje: Responder citando

Mira que desde hace tiempo me preguntaba cómo se calcularía el resto de una división en ARM9 pero ni idea... Qué bien pensado desde luego, sí me di cuenta de que era como un bucle que iba haciendo el XOR con cada caracter de la llave, pero por si eso lo dejé exactamente como se hacía en ASM.

Lo gracioso es la compresión que luego tiene el archivo. Dado que muchos (casi todos) los caracteres van a ser hiragana o katakana que empiezan siempre por 0x82 o 0x83, ahorrarse ese byte y especificar mediante un código de control cuando van a ser todos 0x83 o 0x82.

Bueno, a lo que iba, esa comparación se hace una vez que se ha determinado que el byte va a ser un caracter ASCII o un Kanji, pero para llegar ahí hay otra comparación, concretamente todo se resume en:

Código:

if (currb < 0x20)
    Get_ControlCode();
else if (currb <0xA6> 0xDF)
    Get_ASCII();     // O un kanji
else
    Get_SJIS();


Y bueno, siguiendole el rastro a la frase que se extrae de ahí, encuentro comparaciones como la del post anterior en 0x02087608, en 0x02086080 (que luego llama a 0x02084B38 donde hace comparaciones con 0x8740, 0x875F; y también llama a 0x020878B0 donde hace comparaciones con 0x8140 (el espacio) y 0x829F) y finalmente en 0x020861FC.

Ya actualicé el plugin de Tinke para soportar la versión USA del juego:
https://dl.dropbox.com/u/3981393/Tinke/Tinke%20rev144.zip


Ultima edición por pleonex el Wed Aug 08, 2012 2:47 pm; editado 3 veces
Volver arriba
Ver perfil del usuario Enviar mensaje privado   Visitar sitio web del autor
CUE
Administrador
Administrador


Sexo: Sexo:Hombre
Registrado: 24 Jan 2011
Mensajes: 5435
Estado: Offline
MensajePublicado: Wed Aug 08, 2012 2:08 pm    Título del mensaje: Responder citando

Pues si los controles están en más sitios no merece la penar cambiar nada para usar otro codepage. La verdad es que pensaba que era un poco absurdo todo eso que hace el juego con los caracteres, pero es que no había caído en la cuenta que estamos hablando de un pokemon (toooooooooooooooooooooooomaaaaaaaaaa).

Lo de la historia del cálculo no es para hallar el resto, que tampoco tengo ni idea de cómo hacerla en esos micros, aunque puede que al hacer la división en un registro se ponga el cociente y en otro el resto, que es como se suele hacer en otros aparatos. Todo esos cálculos son una forma de dividir sin emplear divisiones, que son muy lentas, y debe estar incorporado en el compilador usado porque viendo lo chapucera que es la encriptación no me entra en la cabeza que lo usen a propósito. Aunque se usen más líneas de código se obtiene una enorme ganancia de tiempo. Tampoco es que tenga mucho sentido en una encriptación de un fichero tan pequeño, así que eso refuerza más mi teoría de que viene incorporado en el compilador usado.

Para dividir sin usar divisiones se calcula primero el valor "-(0xFFFFFFFF / n)", que realmente es "0x1000000000 - 0xFFFFFFFF / n", pero sólo necesitamos valores de 32 bits. Se puede ver que multiplicando el valor obtenido por "n" se obtiene "casi" ese valor de "0x1000000000". Ése valor, en el caso de la división entre 17, es el 0xF0F0F0F1 que usa el juego. Digo "casi" porque no es un valor exacto, pero no va a fallar para lo que lo queremos. No se debe usar este método para dividir por número grandes porque puede dar problemas con esa aparente falta de precisión, pero para números pequeños es perfecto.

El juego lo que hace es dividir entre 17 multiplicando por 0xF0F0F0F1 (cómo mola eso de dividir multiplicando) y tomando los 32 bits superiores (de ahí la rotación a la derecha de 32 bits que haces). Luego rota otros 4 bits para eliminar el 0x10 superior de 0x1000000000 y así obtenemos la división entera. Después multiplica ese valor por 17 otra vez para restárselo al dato original, que es, precisamente, el valor del resto. Y más o menos ésa es la explicación. Es uno de esos trucos que no te explicarán en ningún lado.
Volver arriba
Ver perfil del usuario Enviar mensaje privado  
pleonex



Sexo: Sexo:Hombre
Registrado: 21 Aug 2011
Mensajes: 68
Ubicación: Espania
Estado: Offline
MensajePublicado: Wed Aug 08, 2012 3:10 pm    Título del mensaje: Responder citando

Pues ahora si está en algún sitio. Muchas gracias por la explicación, no se me había ocurrido ni por asomo que podría ser algo así. Poesía pura en ensamblador.

Ahora tengo una duda, no sé si soy yo que todavía no he comido y no veo nada, pero... ¿puedes encontrar el valor del tamaño del ARM9 comprimido en la versión USA del juego?

Yo lo que veo es:
ARM9 load = 0x02004000
ARM9 autoload = 0x02004EC0 => posición 0xEC0 dentro del ARM9

Pero... el offset que hay antes de este valor es código, no es offset, o por lo menos, en el ARM9 que tengo abierto ahora mismo en 0xEBC pone: "1E FF 2F E1"

Es más lo he comprobado con el ARM9 comprimido y descomprimido pero nada. Es que en el ARM9 hay texto y quería comprobar una cosa.
Volver arriba
Ver perfil del usuario Enviar mensaje privado   Visitar sitio web del autor
CUE
Administrador
Administrador


Sexo: Sexo:Hombre
Registrado: 24 Jan 2011
Mensajes: 5435
Estado: Offline
MensajePublicado: Wed Aug 08, 2012 3:41 pm    Título del mensaje: Responder citando

Pues va a ser que no:
Código:
TEST NDS/ARM9 - Copyright (C) CUE

Pokemon Conquest (U).nds

NDS[0x00000020]     = 0x00004000 ---> ARM9 rom offset
NDS[0x00000024]     = 0x02004800 ---> ARM9 entry address
NDS[0x00000028]     = 0x02004000 ---> ARM9 load address
NDS[0x0000002C]     = 0x0006E6EC ---> ARM9 size
NDS[0x00000070]     = 0x02004EC0 ---> ARM9 autoload

ERROR 4: unknown offset

Done

El "ERROR 4" lo muestro cuando no me encuentra una tabla en condiciones. Imagino que utilizarán otra versión del SDK, o que el compilador crea otro tipo de tablas de relocalización. Vamos, que ni idea, por decirlo en cristiano. Además, no está ninguna de las longitudes por ningún lado.

En 0x000FCC pone 0x020B9C60, que es 0x4000 más grande que la longitud descomprimida. Y en 0x000FDC pone 0x0207260C, que es 0x3F20 más grande que la longitud comprimida. Puede que en ARM9 incluya algún tipo de overlay que haga que las longitudes no coincidan, pero a saber. Y no hay ningún valor remotamente parecido antes de los textos del SDK, que es donde está siempre.

No, si tenía que ser un pokemon el que reviente todo. Cuando no son las fuentes, son los ejecutables.
Volver arriba
Ver perfil del usuario Enviar mensaje privado  
xulikotony



Sexo: Sexo:Hombre
Registrado: 29 Jul 2011
Mensajes: 492
Estado: Offline
MensajePublicado: Wed Aug 08, 2012 4:30 pm    Título del mensaje: Responder citando

Ahora la nueva moda es ponerlo todo en los ejecutables, antes era texto, imágenes o algo de comprensión,
y ahora fuentes. Fuentes muchas veces te las encuentras hasta en el arm9, en el caso de los ace attorneys.

Este juego no lo ha traducido nintendo, porque el Pokemon que todos conocen son los de colores, este como se lo dejes a un crío, se aburrirá, ya que este es como un Final Fantasy Tactics, o algo. El otro tiene más ventas, pero lo raro es que solo haya sido distribuido solo en U.K. nada más.
Volver arriba
Ver perfil del usuario Enviar mensaje privado  
CUE
Administrador
Administrador


Sexo: Sexo:Hombre
Registrado: 24 Jan 2011
Mensajes: 5435
Estado: Offline
MensajePublicado: Wed Aug 08, 2012 5:16 pm    Título del mensaje: Responder citando

No es nueva moda. En los ejecutables siempre se ha puesto de todo, ya sea en consolas o en ordenadores.

Yo no veo nada raro en que no lo distribuyan aquí, al igual que otros muchos juegos, lo que provoca lloriqueos patéticos por muchos foros. Por mucho que se intente negar, el pirateo supera a las ventas físicas con mucho, así que no merece la pena que se molesten en traer muchas cosas.
Volver arriba
Ver perfil del usuario Enviar mensaje privado  
raptorassasin



Sexo: Sexo:Hombre
Registrado: 08 Aug 2011
Edad: 27
Mensajes: 9
Estado: Offline
MensajePublicado: Wed Aug 08, 2012 6:43 pm    Título del mensaje: Responder citando

hola a todos , enhorabuena con la traduccion se agradece mucho su esfuerzo, espero que le vaya bien Smile
_________________
[center][/center]
Volver arriba
Ver perfil del usuario Enviar mensaje privado  
Kula



Sexo: Sexo:Mujer
Registrado: 05 Aug 2012
Edad: 37
Mensajes: 28
Estado: Offline
MensajePublicado: Wed Aug 08, 2012 7:17 pm    Título del mensaje: Responder citando

Lo cual es una pena, por culpa de eso hay muchos buenos juegos que no llegan a ver la luz por estos lares. (Y yo soy de la que juega juegos pirata solo cuando no llegan aqui)

Es como lo de no traducirlos, entiendo que es mucho trabajo y pasta, y que solo se preocupan en hacerlo por juegos que ellos creen que realmente van a ser superventas, pero esto es como la serpiente que se muerde la cola: no se venden juegos ergo no se traducen = no se traducen ciertos juegos ergo no se venden.

Pero bueno, al menos siempre habrá gente que se moleste en traducirlos para que otros los disfruten.

(Siento que esta vez sea un Pokemon y que os esté dando tanto por saco. Sorry por el follón. Ic_uf )

Y Pleonex, muchas gracias por el plugin del Tinke, ahora le estoy dando a los gráficos y al menos ya tengo unos cuantos traducidos. Ic_hug



Es una mierdecilla, pero al menos la cosa avanaza y para que veáis que voy haciendo algo y no lo dejo ahí durmiendo. Embarassed
Volver arriba
Ver perfil del usuario Enviar mensaje privado  
raptorassasin



Sexo: Sexo:Hombre
Registrado: 08 Aug 2011
Edad: 27
Mensajes: 9
Estado: Offline
MensajePublicado: Wed Aug 08, 2012 7:36 pm    Título del mensaje: Responder citando

kula si quieres ayuda en la traduccion puedes contar conmigo, no me gusta pokemon pero si me gusta traducir y ayudar a que los demas puedan disfrutar de juegos que por problemas de idioma se los pierdan, yo tengo experiencia anteriormente tuve un proyecto con uno amigos en la tradu del one piece gigant batle eng-esp que gracias a cue pudimos avanzar lo suficiente y bueno quiero seguir siendo util para la scene
_________________
[center][/center]
Volver arriba
Ver perfil del usuario Enviar mensaje privado  
Kula



Sexo: Sexo:Mujer
Registrado: 05 Aug 2012
Edad: 37
Mensajes: 28
Estado: Offline
MensajePublicado: Wed Aug 08, 2012 7:49 pm    Título del mensaje: Responder citando

Gracias por el ofrecimiento raptorassasin. En cuanto pleonex solucione el problemilla del programa para extraer los textos del MSG.DAT y entre él y CUE consigan aclarar el follón de las fuentes (que se las traen las puñeteras, y me gustaría ponerles un altar solo por todas las molestias que se están tomando), miramos de como repartirnos el trabajo. Ic_vueltasss
Que además esto en un principio es una petición que me hizo una amiga, así que al menos de momento ya seríamos tres personas para traducir. ^^
Volver arriba
Ver perfil del usuario Enviar mensaje privado  
Kula



Sexo: Sexo:Mujer
Registrado: 05 Aug 2012
Edad: 37
Mensajes: 28
Estado: Offline
MensajePublicado: Wed Aug 08, 2012 9:32 pm    Título del mensaje: Responder citando

Me he encontrado un problema con esta imagen:


Situada en graphics>common>11_02_parts_ikusa_tutorial_lo.G2DR

Es la imagen llamada ikusamap_tutorial__okiniiri (File2.ncer_6).

El problema es que al intentar reemplazar la imagen con la que he hecho me da error de que no encuentra el color en la paleta (Color not found in the original palette!). Pero como me escamaba un poco el error (ya que me había salido anteriormente pero he conseguido solucionarlo editando de nuevo la imagen), he probado a subir nuevamente la misma imagen que había exportado, sin alterar ni nada, y me seguía dando el mismo error.

¿Alguna idea?

EDIT: Todo esto con el Tinke, que no lo había dicho ><
Volver arriba
Ver perfil del usuario Enviar mensaje privado  
pleonex



Sexo: Sexo:Hombre
Registrado: 21 Aug 2011
Mensajes: 68
Ubicación: Espania
Estado: Offline
MensajePublicado: Thu Aug 09, 2012 12:19 am    Título del mensaje: Responder citando

Kula escribió:

El problema es que al intentar reemplazar la imagen con la que he hecho me da error de que no encuentra el color en la paleta (Color not found in the original palette!). Pero como me escamaba un poco el error (ya que me había salido anteriormente pero he conseguido solucionarlo editando de nuevo la imagen), he probado a subir nuevamente la misma imagen que había exportado, sin alterar ni nada, y me seguía dando el mismo error.

¿Alguna idea?


Pues tienes razón, muchas gracias por darte cuenta. Es increíble que esto que debería ser bastante frecuente no haya sucedido hasta ahora, ya lo he solucionado (aunque no estoy muy seguro de la solución).

Con esta versión debería ir perfecto:
Tinke rev144-2.zip
Volver arriba
Ver perfil del usuario Enviar mensaje privado   Visitar sitio web del autor
Mostrar mensajes anteriores:   
Publicar Nuevo Tema   Responder al Tema    Romxhacking -> Dudas y Preguntas Todas las horas están en GMT + 1 Hora
Ir a página Anterior  1, 2, 3, 4  Siguiente
Página 2 de 4

 
Saltar a:  
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas

Temas Relacionados
 Temas   Respuestas   Autor   Lecturas   Último Mensaje 
No hay mensajes nuevos Se puede editar algo del Legend of heroes trails in the sky? 1 gadesx 1629 Thu Apr 16, 2015 8:08 pm
CUE Ver último mensaje
No hay mensajes nuevos ¿Este programa puede servir para algo? 2 gadesx 2079 Sat Sep 21, 2013 8:22 am
CUE Ver último mensaje
No hay mensajes nuevos Algo para este "formato"? 3 cralso 2355 Tue Aug 20, 2013 7:53 am
CUE Ver último mensaje
No hay mensajes nuevos Light Crusader o algo 10 gadesx 4180 Sun Aug 04, 2013 1:07 pm
Auron Ver último mensaje
No hay mensajes nuevos Intentando aprender algo de romhack 13 tchusami 5551 Sat Nov 24, 2012 11:05 am
CUE Ver último mensaje
 


Crear foro gratis - Powered by phpBB © 2001, 2005 phpBB Group
subRebel style by ktauber