Como hacer una tabla hexadecimal

Lugar donde se intentarán resolver problemas específicos
Responder
TDW
Mensajes: 27
Registrado: 05 May 2012, 19:45

Como hacer una tabla hexadecimal

Mensaje por TDW » 05 May 2012, 20:08

Hola, muy buen@s dias/tardes.
Soy muy nuevito en el romhacking. Hasta ahora solo habia traducido juegos de SNES directamente desde el codigo hexadecimal y usando la tabla que venga predeterminada con el windhex.
Bueno, el caso es que me gustaria aprender sobre el tema... Pero... ¿Como demonios encuentro el texto en el codigo hexadecimal? Porque si supiera que una cadena es una frase seria estupendo... Pero clao, hay mucho codigo para mi inservible xD

Muchas gracias :3

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

Mensaje por josekenshin » 05 May 2012, 21:03

Hay muchísimos tutoriales para sacar una tabla.

Lo primero que suelo hacer yo, es buscar palabras al tun tun, con el searchx, a ver si encuentro algo. Si localiza la palabra, pues botón derecho y guardas la tabla.

Luego abro el translhextion y abro el archivo y cargo la tabla, y busco el texto en cuestión para completar los valores que faltan. Viendo la palabra ya formada (si tiene mayúscula y minúsculas mejor, así tienes todos los valores). Luego miro los valores de los acentos, coma, puntos, exclamación, interrogante en el translhextion, mirando texto del juego.

Así más o menos tienes algo. Luego habría que indagar la fuente, para completar los valores, tipo <>+ -@ &%$, o incluso probar valores editando el juego a boleo para completar los que faltan.

Con el programa Tabular, puedes hacer la tabla o con el bloc de notas a pelo, poniendo los valores que toquen tipo 65=a, 66=b,... y guardado como .tbl

A veces verás que con el searchx no encuentras nada, entonces puede que el texto esté en 16 bits o comprimido. Si es de 16 bits con el translhextion haz búsquedas relativas tipo: W*h*a*t y te puedes encontrar valores como 6500=a, 6600=b, etc...

Si está comprimido, ya es otro tema, y el problema está en descomprimir y luego hacer lo del principio para buscar texto.

Te lo estoy explicando muy a groso modo. Esto es lo más básico que te puedes encontrar en un juego, y seguro que CUE está conmigo, con que está muy lejos de llamarse "ROMHACK".

Saludos.

P.D: En mi web está el tabular, transhlextion, y el manual de pablito´s que te lo explica todo.

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

Mensaje por CUE » 05 May 2012, 21:21

Si usas Windhex lo tienes más o menos fácil. Ejecuta el juego y busca alguna palabra que salga en los diálogos. Para evitar problemas, toma siempre una que sean todo letras en mayúsculas o en minúsculas, pero sin mezclar. Esto es porque la búsqueda se basa en un juego de caracteres similar al ASCII, pero no siempre está así, aunque el 99.9999999% de las veces las mayúsculas van seguidas (o las minúsculas). Ahora que tenemos la palabra base le das a búsqueda relativa y ya está. Eso lo que hace es que te busca la palabra y si no le encuentra te suma uno a cada código de carácter y lo vuelve a buscar, y así hasta que recorre los 256 valores posibles que puede haber en un carácter (byte). Cuando acabe te mostrará una lista de offsets donde puede estar la palabra. Miras a ver si es así, y, en caso de serlo, grabas la tabla que te genera. Pero ten cuidado, en esa tabla sólo son ciertos a priori los caracteres que has buscado, y si eran mayúsculas, seguramente todas las mayúsculas también. Si ves que el Windhex te muestra los textos bien, mayúsculas y minúsculas, es que es una tabla tipo ASCII. Si ves cosas "raras" seguramente tengas las mayúsulas bien y las minúsculas no, o al revés. Puedes ver si a ojo sacas algún carácter y, a partir de él, el resto. Si no lo ves claro, repite la búsqueda para una palabra en minúsculas. Cuando lo tengas todo, si ves que te faltan códigos, como símbolos, puedes intentar sacarlos según los textos, que ahora ya serán visibles.

Puedes ayudarte de los gráficos. Si consigues ver la fuente con alguno de los programas que hay, seguramente los caracteres de la tabla estén en el mismo orden, así que eso te ayudará con todos los signos de puntuación. En este caso, además, puedes clear tablas aunque los caracteres no estén seguidos, que la "B" no tiene por qué seguir a la "A", aunque será lo más normal.

Si nada de eso funciona, el texto está codificado o comprimido, y no te sirve de nada que hagas búsquedas.

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

Mensaje por gadesx » 05 May 2012, 21:56

Con la busqueda relativa del searchrx, escribes alguna palabra y ves si encuentra algo, y te crea una tabla aunque no con todos los caracteres, abres la tabla con el notepad y ves que tal.
Luego ya seria cuestion de poner en el juego !"·$%&/()= y todas esas cosas, y ver que
valores tienen para hacer "el cambiazo" de algunos simbolos por la ñ ¿ ¡ y demás.

El windhex tambien tiene lo de busqueda relativa, aunque es leeeeeeeento y yo he encontrado
mas cosas con el searchrx en ese aspecto.

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

Mensaje por josekenshin » 05 May 2012, 22:00

gadesx escribió: El windhex tambien tiene lo de busqueda relativa, aunque es leeeeeeeento y yo he encontrado
mas cosas con el searchrx en ese aspecto.
El searchx es lo mejor que hay, para crear una primera tabla. ¡Estoy contigo! :D :D

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

Mensaje por CUE » 05 May 2012, 22:24

Ya, pero si dice que es nuevo en esto no vamos a abrasarle el primer día con un montón de programas. Joer, vamos a esperar un par de días, y luego le machacamos :twisted:

Como dice que ya ha usado el Windhex, pues para una rom de SNES es más que suficiente, que no estamos hablando de ISOs donde se puede eternizar, que eso creo que lo hemos sufrido todos.

TDW
Mensajes: 27
Registrado: 05 May 2012, 19:45

Mensaje por TDW » 06 May 2012, 00:59

Jaja teneis compasion de mi por ser el nuevo ^__^
Pues probare a ver eso con el WindHex y cuando me haya hecho un par de tablas (o cuando vea que no puedo hacerlas ni pa'tras) me descargo toda esa ristra de programas que me dijiste josekenshin
Muchas gracias a los dos por malgastar vuestro tiempo intentando que yo aprenda algo util xD

Poor cierto, indagando me entro una duda sobre punteros (normal, acabo de saber de su existencia)... Abriria otro tema, pero creo que se puede aprovechar este.

Bueno, segun las conclusiones que he sacado, un puntero es un dato que apunta al prncipio de cada frase. Y si se modifican estos punteros se podria poner texto al final del juego que permitiria hacer frases mas largas que las originales... Ahora bien... De los metodos que encontre por ahi, no me funciona (mejor dicho, no he sabido utilizar) ninguno. Uno decia de cojer el offset a pelo, darle la vuelta por pares y buscar. Otro decia que antes de darle la vuelta habia que restarle la cabecera y solo coger 4 digitos.... Estoy probando con el juego 3 Ninjas Kick Back de genesis, en la que creo que la cabecera es hasta la posicion 200... Tampoco se exactamente que tenia que encontrar, pero por lo que creo lo que me salian no eran punteros porque se repetian muchas veces lo mismo
Bueno, en resumen, que no tengo ni repajolera idea y que agradeceria que gastarais de nuevo vuestro tiempo en mi explicandomelo de 0 :3 Ya os pagare por las lecciones o algo (algun dia xD)

Muchas gracias
(Menos mal que encontre esta pagina, sino me tiraba de los pelos buscando tutoriales de usuarios chapuzas en taringa xD)
Un saludo

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

Mensaje por CUE » 06 May 2012, 09:29

Hombre, yo te aconsejaría que a esos juegos, de la megadrive (decir genesis es pecado, que eso son cosas de los yankis) o de la SNES, que los quitaras la cabecera. Esos 0x200 bytes (en hexadecimal), 512 en cristiano, son cosas que ponía el dumper (el aparato que copiaba el cartucho a fichero) y que no tienen ninguna razón de ser, aparte de para molestar.

El juego que mencionas no parece necesitar ninguna tabla. A simple vista no veo tampoco punteros, sólo frases que terminan con el típico 0x00.

TDW
Mensajes: 27
Registrado: 05 May 2012, 19:45

Mensaje por TDW » 06 May 2012, 10:11

Ooops creo que meti la pata hasta el fondo xD
Bueno, entonces a ese juego no le puedo meter mas caracteres de los que tiene, ¿no?
Y ahora una duda n00b... Si en un juego modifico los punteros para que haya mas caracteres... ¿como cabe el texto en la pantalla y no se sale por los bordes?
Y una ultimisima cosa, ¿podrias ponerme un ejemplo de juego con punteros?

Creo que con estas 3 cosas dejare de dar la lata mucho tiempo :3

Un saludo

PD: vaale a partir de ahora dire megadrive xD

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

Mensaje por CUE » 06 May 2012, 11:02

¿Por qué has metido la pata?

A veces es el propio juego el que se encarga de ajustar el número de caracteres por línea. Si no es así, se resuelve fácilmente, tan sólo comprueba cuántos caracteres caben por línea y no pongas más, y no es ninguna coña. Por lo que he visto, las líneas de texto se separan con el código 0x00. Prueba a cambiar ese 0 de sitio, más adelante y más atrás, para ver si alguna línea puede aumentar de longitud, a costa de reducir la siguiente, claro. Todo es cuestión de probar.

Juegos de punteros para la mega, pocos te puedo decir porque es una de las consolas con las que apenas he trabajado, aunque espero hacerlo en breve con la retraducción del Soleil. Es un juego con el que puedes practicar cosas de tablas, creándolas a partir de búsquedas de textos o a partir del gráfico de la fuente de caracteres, que es como lo he hecho yo. También tiene punteros que se pueden modificar para poner más longitud en los textos, aunque en este caso son de un nivel un pelín algo más avanzado porque tienen otras cosillas, pero vienen bien si quieres aprender.

TDW
Mensajes: 27
Registrado: 05 May 2012, 19:45

Mensaje por TDW » 06 May 2012, 13:36

Meti la pata porque estuve una hora buscando punteros en un juego sin punteros XD
Jum... Pero entonces para meter mas caracteres... Tendria que ir sobreescribiendo codigo... Y a lo mejor mi texto total es mas grande y sobreescribiria parte del juego... ¿Se puede hacer algo con eso? ¿Significaria que puedo meter paginas enteras de texto que se ia pasando de pagina indefinidamente (poniendo el 00 para que pase la pagina, claro)

Jum... bueno, buscare esa ROM y esta tarde trasteare un poco con ella, ya os contare mis penas luego otra vez xD

Un saludo

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

Mensaje por CUE » 06 May 2012, 14:56

Ah, no, que no se vean los punteros no significa que no haya.

Si no hay punteros y si no hay espacio libre, olvídate de poner más texto del que existe.

TDW
Mensajes: 27
Registrado: 05 May 2012, 19:45

Mensaje por TDW » 06 May 2012, 19:35

Bueh, esta es mi experiencia con el soleil por ahora
Jum... bueno consegui hacer la tabla hexadecimal sin ningun problema, encontre las letras en mayusculay minuscula y los signos que creia necesarios (.,?<espacio>)... Hasta ahi bien.

El primer problema me surgio cuando intente modificar el texto... En los valores hexadecimales ponia lo que yo queria pero luego en el juego aparecian los originales. No se porque paso, pero me extraño verlo en .bin y cambin la extension a .gen. Ahora si funciona.
El segundo problema me aparecio con los punteros. Cogi el offset de la primera letra de la primera frase, le reste 200 del header, cogi las 4 ultimas cifras (1F60) y las inverti a pares (601F). Hice una busqueda y me llevaba siempre a una cadena que me parecio al principio la tabla de punteros (60 1F 72 1F 84 1F 96 1F A8 1F)(12 mas siempre curiosamente, me doy cuenta ahora). Estaba ya tan feliz de haberlo conseguido en un momentin que me dije "voy a probar donde me dice el puntero que esta la segunda frase". Inverti el proceso... Y me salio el puntero en medio de la primera frase. Me extraño bastante y me fui al principio de la segunda frase... Hice lo mismo y me salio otra cadena similar a la anterior pero muy alejada (8D 1F 9F 1F B1 1F)... Busque cuantas veces se repetia cada cadena y me salieron unas cuantas asi que estoy convencido de que eso no son los punteros...

¿Una ayudita al nuevo, porfa?

Un saludo

TDW
Mensajes: 27
Registrado: 05 May 2012, 19:45

Mensaje por TDW » 06 May 2012, 20:47

Poor cierto, ¿sabeis alguna manera de extraer los graficos de megadrive para poder modificarlos?

Gracias :3
Un saludo

PD: Como ha cambiado esto del tema original xDD

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

Mensaje por CUE » 06 May 2012, 22:32

La extensión no tiene nada que ver. Si cambiaste algo, debería salir.

A quien te haya dicho eso de los punteros le puedes decir que se dedique a la cría y reproducción del escorpión plateado egipcio, que te servirá para lo mismo, o sea, para nada. Tenga o no tenga cabecera la rom, lo que te han contado no tiene sentido. Lo primero es que a los punteros no necesitas "invertirlos", algo muy común en consolas como la megadrive, que lleva una CPU motorola, donde los valores se suelen almacenar siempre con el byte más significativo primero.

Todo lo que son los textos están entre 0x001C0000 y 0x001D7FFF, sin cabecera, que no se necesita para nada. Los punteros no son direcciones absolutas, que es lo que pretendías buscar, son relativas. Verás que, de vez en cuando, antes de los textos hay cosas "raras". Esos son los punteros, e indican la posición de los textos. Por ejemplo, en 0x001C0348 verás 00-2A-00-32-00-3A-..., que indican las posiciones 0x002A, 0x0032, 0x003A, que es lo que debes "contar" a partir de 0x001C0348 para obtener cada línea de texto, que termina con el carácter 0xFF. En 0x001C0478 se hace lo mismo, y así con cada bloque de textos, que hay unos cuantos. Se puede poner cualquier longitud, pero recordando que los textos no deben pasar de 0x001D7FFF, y cambiar una sóla línea implica tener que cambiar todos los punteros que hay, pues cada línea tiene su puntero dentro de un bloque, y cada bloque tiene su puntero, que es por lo que te dije que en este juego el tema era algo más jodidillo, pero sirve para ver que el tema de los punteros no es tan simple como lo cuentan.

Los gráficos de este juego es un tema más complicado. Algunos se sacan con los programas habituales, pero otros están comprimidos. Aquí estoy yo perdido también, pues necesito sacar una cosilla que está comprimida en algún lado, pero va más allá de lo que puedo hacer con esta consola.

Responder