[HO] RomHacking con IA

@Jonap Claro que se puede. Yo tampoco tengo ni idea, y ya he sacado dos traducciones, varios parches de modificaciones y tengo tres traducciones más en proceso. Prueba el Freebuff que hay en el mensaje inicial (o la IA que uses, siempre que puedas adjuntarle archivos o usarla vía escritorio, aunque suelen ser de pago): lo instalas, lo inicias, le indicas la carpeta en la que tienes el juego, parche o lo que sea, y le explicas lo que quieres hacer, como has hecho conmigo, y de ahí vas tirando. Si necesitas más ayuda, pregunta aquí.

EDITO: Paralelamente a mi proyecto de traducción actual (Lord Monarch), he empezado a traducir otro juego, mucho más complejo, con Freebuff para ver cómo se desenvuelve. En cuanto tenga algo interesante que mostrar, lo haré. De momento, no pinta nada mal.
Pequeño cambio en la intro que ya mostré el otro día.

Cebolleto escribió:Pequeño cambio en la intro que ya mostré el otro día.


¿Y esa voz que dice "¡Planeador abajo!" en español? 😀
Sale del mismo sitio que el sample de "Mazinger" jajaja, es un sample que se lanza cuando se lee el puntero de esos diálogo completos, un hack MSU-1 vamos. Si tuviera tiempo, ganas y paciencia, recrearía con IA todos los diálogos del juego con las voces del elenco original castellano. He intentado también conseguir que se oiga "¡Puños fuera!" al lanzar los puños en el juego pero parece un poco más complejo que lo que he hecho.
MrNutz escribió:@psicopompo: espero el hack del Wonderboy V como agua de Mayo, macho.
Qué falta le hace a ese juego. Es un juegazo y lo jodieron con esa tontería de jefe al final.
Mi pareja se lo intentó pasar hace dos años y no hubo manera por ese estropicio que le hicieron en occidente al juego.

Ya está el parche. En el mensaje inicial tienes un enlace al hilo del proyecto. 👍🏻

Cebolleto escribió:Sale del mismo sitio que el sample de "Mazinger" jajaja, es un sample que se lanza cuando se lee el puntero de esos diálogo completos, un hack MSU-1 vamos. Si tuviera tiempo, ganas y paciencia, recrearía con IA todos los diálogos del juego con las voces del elenco original castellano. He intentado también conseguir que se oiga "¡Puños fuera!" al lanzar los puños en el juego pero parece un poco más complejo que lo que he hecho.

Pues, te ha quedado realmente bien. 👏🏻👏🏻👏🏻
Por favor que alguien con conocimientos lance algún hack o parche para desbloquear todo el contenido oculto o desbloqueable de los juegos de lucha de la era de psx y demás.

Yo empezaría con el Tekken 1 y 2 (el 3 ya tiene un parche para desbloquear todo desde el inicio). De esta forma tendremos una .iso parcheada para no tener que andar desbloqueando los personajes secretos y demás contenido cada vez que emulamos por primera vez el juego en una consola nueva.

Pienso que se podría trasladar a otros juegos como Bloody Roar... Street Fighter, Mortal Kombat... etc.

Es mi propuesta.
Un saludo.
psicopompo escribió: ¿Debería poner Freebuff en el mensaje inicial dentro de una sección de 'herramientas recomendadas'?


Freebuff llevo tb tiempo usándolo, me gusta más el terminal de opencode porque te da más control, en freebuff no he visto la opción de añadir mcps y toquetear tanto como con opencode. He visto como ha ido cerrando un tanto el grifo en las últimas semanas, primero iba por numero de sesiones al día, luego por cŕeditos fijos diarios y ahora por menor cantidad de créditos diarios aunque parece que parte del excedente de créditos te los acumula...

El otro día vi esto:

https://github.com/alishahryar1/free-claude-code

Parece que es una especia de api router dejándote usar claude code, opencode, codex con otras apis externas de forma que cuando se te acabe el free tier el mismo router este sea capaz de cambiar de proveedor al vuelo, no lo he probado, así queno se que pegas puede tener o posibles baneos por modificar (aunque supongo que lo hará interceptando llamadas al api) los clientes oficiales.

Y me parece interesante no sólo por lo que promete que hace si no por el listado de providers con potencialmente free tiers que tiene:

https://github.com/Alishahryar1/free-cl ... /providers

Supongo que la mayoría tb tendrán free tiers que aprovechar y se podrán rascar un buen puñado de tokens diarios más, la mitad o así del listado desconocía que estaban ofreciendo esos servicios, por ejemplo vercel no sabía que había entrado también al negocio:

https://vercel.com/ai-gateway/models?freeTier=true

Cebolleto escribió:Pequeño cambio en la intro que ya mostré el otro día.

https://youtu.be/AboZroV6zzg


Buen trabajo con ese Mazinger.

trevorbelmont escribió:Por favor que alguien con conocimientos lance algún hack o parche para desbloquear todo el contenido oculto o desbloqueable de los juegos de lucha de la era de psx y demás.

Yo empezaría con el Tekken 1 y 2 (el 3 ya tiene un parche para desbloquear todo desde el inicio). De esta forma tendremos una .iso parcheada para no tener que andar desbloqueando los personajes secretos y demás contenido cada vez que emulamos por primera vez el juego en una consola nueva.

Pienso que se podría trasladar a otros juegos como Bloody Roar... Street Fighter, Mortal Kombat... etc.

Es mi propuesta.
Un saludo.


La gracia de esto es que realmente no hacen falta muchos conocimientos, yo creo que con darle acceso a la rom/iso, tal vez el emulador tb el mismo LLM va a ser capaz de empezar a investigar por su cuenta, si le pasas partidas guardadas, descripción más en detalle de lo que buscas, savegames, savestates y cosas así le das una gran ayuda, pero él mismo te lo va a acabar pidiendo.
Con códigos de trucos se pueden tener todos los personajes desbloqueados.

Pero se basa en la ram.
Si guardas partida, se quedan siempre.
Como suele ser fácil ponerlos en emuladores y algunas consolas, no hay muchos hacks.
Estoy usando Grok, me parece bastante bueno, está logrando avanzar donde Claude se atasca, tengo un proyecto al 99% y otro iniciado con Claude que estaba acumulando muchos fallos lo reinicié de cero con Grok y estoy avanzando sin los bugs que me daba Claude. En cuanto logre pulir el primero subo parche, es algo sencillo, desbloqueo de región que no se quitaba con códigos de GG ni nada y un poquito de localización.
En el último mes he reactivado varios proyectos que llevaba años sin tocar.
La IA me ha permitido avanzar muchísimo en la identificación y análisis de las traducciones y el ROM hacking.

Os paso mis proyectos:

PSX
Ace Combat 2 : https://fjveralv.github.io/Traducci-n-Ace-Combat-2-PSX---Castellano/
Azure Dreams : https://fjveralv.github.io/Parche-traducci-n-Azure-Dreams/
Racing Lagoon : https://fjveralv.github.io/Traduccion-Racing-Lagoon/

SEGA SATURN
Shining the Holy Ark : https://fjveralv.github.io/Traduccion-Espa-ol-Shining-the-Holy-Ark/
Dragon Force : https://fjveralv.github.io/Traduccion-Dragon-Force/

GAME BOY
Azure Dreams: https://fjveralv.github.io/Traduccion-Azure-Dreams-GBC/
Cave Noire : https://fjveralv.github.io/Traduccion-Cave-Noire/

NEO GEO POCKET
SNK VS CAPCOM Card Fighters Expand Edition 2 : https://fjveralv.github.io/Traduccion-SNK-vs.-Capcom-Card-Fighters-2-Expand-Edition/
@lolerbober ¡Gran trabajo! Si te parece bien, los añadiré en cuanto pueda al mensaje inicial.

doblete escribió:Nueva traducción con IA, Berserk: Millennium Falcon Hen Seima Senki no Shou (PS2), al español.

https://www.elotrolado.net/hilo_berserk-millennium-falcon-hen-seima-senki-no-shou-ps2-traduccion-al-espanol-v1-0_2537018


Un currazo también. Habrá que probarlo. 🕺🏼🕺🏼🕺🏼
Una pregunta: Yo pago suscripción Go de ChatGPT y la verdad, le doy una caña tremenda las 24h del día como quien dice. He hecho algún addon para FFXI y otras cosillas a full y no se como pero nunca le he visto el "fin". De hecho este mes he gastado solo un 13% de la cuota mensual. Empecé la traducción del Lunar Sanposuru Gakuen de Game Gear, bueno, al menos una prueba, y la verdad es que conseguí lo que quería rápido con un par de ajustes. Digamos que podría hacerlo desde mi Chati. Sin embargo, me dio por probar la cuenta free de Claude y a los 6 mensajes me dijo que adiós. Es irrisoria la prueba. ¿Con la suscripción pequeña de 20 pavos se puede hacer algo más? Porque si me da un límite similar al de mi Chati igual me animo, que quiero traducir un par de jueguicos como pago por haber disfrutado de otros tantos que otros usuarios tradujeron en su día.
Imagen
@Lázaro Lo de la cuenta gratis de Claude es normal, el límite que dan de prueba es de risa. La suscripción de 20€ te da bastante más margen, pero la forma de gestionar los límites es muy distinta a la de ChatGPT.

ChatGPT es más permisivo y, si le das mucha caña, te baja a un modelo inferior pero te deja seguir trabajando. En cambio, con la suscripción de Claude Pro, si agotas la cuota, te bloquea el acceso por completo durante unas horas. Además, el límite de Claude baja rápido si el chat es muy largo o le subes archivos pesados, por lo que con un uso de 24 horas como el tuyo podrías notar los bloqueos. Para código y traducción siempre dicen que es mejor, pero creo que casi cualquier modelo de pago actual ya está a la altura.
Si te tienta Claude y ya estás pagando ChatGPT, puedes pasar de uno a otro durante un mes a ver y comparar. En realidad, ambas IAs con más o menos igual de buenas, y cada semana puedes ver noticias de una u otra es la mejor del mundo según el modelo que saquen.

Por si acaso en el futuro decides dar el salto a usar herramientas externas conectadas por API (donde pagas por uso real y no por tarifa plana mensual), te dejo aquí los precios oficiales por cada millón de tokens (el equivalente aproximado a bloques de palabras):

| Servicio / Modelo...............................| Entrada (por 1M tokens) | Salida (por 1M tokens) |

| Claude (Sonnet / gama equilibrada)..| $2.00 – $3.00 |.................| $10.00 – $15.00 |
| Claude (Opus / gama alta).................| $4.00 – $5.00 |.................| $20.00 – $25.00 |
| ChatGPT (Modelos insignia)..............| $1.25 – $2.50 |.................| $10.00 – $15.00 |

Para la web de 20€ no te va a afectar esta tabla, pero sirve para entender por qué Claude corta el grifo antes si le metes textos gigantescos: sus costes de procesamiento internos son más elevados. Esto también lo digo porque tanto OpenAI como Anthropic llevan tiempo amenazando con que van a cambiar al método de suscripción por token.

Y mucho ánimo con ese Lunar. 💪🏻💪🏻💪🏻
@psicopompo Me quedaré con mi Chati entonces. De momento he instalado LM con Qwen y ahora estoy instalando Ollama + Open WebUI + SearXNG, después decidiré el modelo. Con algo local y gratuito me olvido de pagar xD
Para estas cosas mejor trastear con algo gratuito si los márgenes de Claude y demás son tan limitados. Total, no soy programador ni voy a hacer grandes tareas, para cacharrear me sobra. ¡Gracias por la explicación!
Yo estoy usando Claude con la versión mensual y alguna vez que me he quedado sin tokens he tirado de billetera.
Con eso he sacado adelante todos los proyectos que comenté eso si por ejemplo Opus 5.5 gasta la sesión diaria en nada de tiempo y hay que jugar un poco con eso. Pero es una maravilla esta versión de la IA de Claude.
@lolerbober
Muy bueno compañero. Y una currada las webs de cada proyecto. ¿Con que haz realizado las webs?
Todas con Claude algunas con Claude Sonnet y otras con Claude Oppus montadas sobre la Pages de la propia Github. Pronto subiré las herramientas en las que me apoyé por si alguien quiere editar las traducciones o traducir a otras lenguas.
Bueno, gracias a mi chati sigo avanzando comprendiendo el Lunar de Game Gear.
Estoy preparando todo para comprender la traducción, cómo funciona la tabla hexadecimal, la introducción de texto y demás. Chati me ha creado una herramienta para traducir visualmente, con verificador de bytes, sustitución de códigos etc.. aunque está en fase de pruebas. Cuando tenga todo intentaré añadir los acentos, signos y la ñ y después ya empezaré a lo serio. Además tengo varios grupos de Discord aficionados a los RPG que creo que pueden ayudarme con el testeo.
Me está molando esto aunque hay muchas cosas que no pillo aún del todo. Me ha ayudado bastante la herramienta de Wave, conocido forero de EOL :P
Imagen
Imagen
Imagen
Lázaro escribió:...


Buenas,

le he echado un ojo al juego, tienes la fuente descomprimida en 48200 en 1bpp, fácil de editar:

Imagen
Imagen

Te iba a decir que para hacer un juego así te iba a ser realmente útil encontrar los punteros del juego, pero parece que no se usan al menos para el texto principal, es decir, no hay una dirección que le indique al programa donde empieza un diálogo, deben tener un ID y el programa simplemente muestra el diálogo del ID que necesita, sin puntero. Por ejemplo, Si tuvieras "Hola Lucas"<00>"Hola Don José"<00>, el byte de fin es "00", si plantas un 00 así: "Hola<00>Lucas" Lucas pararía a ser el ID2 en lugar de "Hola Don José", esto te da cierta libertad a la hora de traducir, igual hay espacio a espuertas después de cada INMENSO bloque de texto, te lo vas a pasar bien. Suerte.
Lázaro escribió:Bueno, gracias a mi chati sigo avanzando comprendiendo el Lunar de Game Gear.
Estoy preparando todo para comprender la traducción, cómo funciona la tabla hexadecimal, la introducción de texto y demás. Chati me ha creado una herramienta para traducir visualmente, con verificador de bytes, sustitución de códigos etc.. aunque está en fase de pruebas. Cuando tenga todo intentaré añadir los acentos, signos y la ñ y después ya empezaré a lo serio. Además tengo varios grupos de Discord aficionados a los RPG que creo que pueden ayudarme con el testeo.
Me está molando esto aunque hay muchas cosas que no pillo aún del todo. Me ha ayudado bastante la herramienta de Wave, conocido forero de EOL :P
Imagen
Imagen
Imagen

La verdad es que a estas alturas no te recomiendo usar mi herramienta, es preferible que la IA extraiga el texto a algún tipo de json y se encargue luego de insertarlo sola (puedes ayudarte con una herramienta como la que tienes para traducirlo e incluso pedirle a la IA una primera versión del texto). Con eso y lo que ha dicho Cebolleto lo tienes fácil.
@Cebolleto WoW! Muchas gracias por la ayuda! Me viene genial!
@wave Sí, tienes razón y es lo que hice, pero los primeros pasos los di con tu herramienta (y me sirvió un montón para comprender las cosas) y aunque al final mi chati lo hizo ella sola, creo que es de recibo dar los merecidos kudos a tu herramienta y tu persona. Es la diferencia entre ser honesto, dar los créditos adecuados o dejar que lo haga todo la IA y decir que lo has hecho tu solo [carcajad] [carcajad]. Gracias por tu herramienta!

EDIT: Joder @cebolleto no entendía lo que querías decir y me ha costado pillarlo XD. Al final descargué el Tile Layer Pro, lo puse como tu, no entendía nada y al final caí en que había que pintar las letras a mano, guardar y listo jajaja

Listo, ya añadí los caracteres especiales y lo tengo preparado en el editor para añadirlos :D

Imagen
Lázaro escribió:...


Muy bien,
iba a contestar el privado pero veo que ya lo dominas, como ves, en caso de estar descomprimido, es muy fácil modificar algo así.

Con respecto a la edición en sí mismo, parece que hay muy pocos códigos de control (solo lo he mirado 5 minutos), hay dos bytes antes del texto "09XX" que indican qué retrato hay que poner en pantalla y luego tienes el salto de línea "01" y el fin de cadena de texto que es "00", con esto la IA debería tener más que de sobra para hacerte un editor que no tenga limitación alguna a la hora de escribir, la caja de texto de este juego es variable, es decir, es tan ancha como el texto que hay dentro hasta un límite de 18 caracteres por línea(más se sale de la pantalla) y puedes jugar con eso para poner más texto y mucho mejor presentado. Con esto y poco más solo te queda ponerte a traducir el mazacote, perdón, LOS mazacotes de texto y a correr. Luego son 4 cosas que están dispersas por la rom.
@Lázaro
Perfecto, me alegra que aunque sea sirva para ayudar a la gente xD
No se si lo hace pero te recomendaría que le digas que intente poder ampliar/reducir el tamaño de los textos según la traducción para no tener que ceñirte al espacio de la tradu inglesa.
Te recomiendo también mover un píxel a la izquierda el ¿ o se pegará con algunas letras.
wave escribió:@Lázaro
Perfecto, me alegra que aunque sea sirva para ayudar a la gente xD
No se si lo hace pero te recomendaría que le digas que intente poder ampliar/reducir el tamaño de los textos según la traducción para no tener que ceñirte al espacio de la tradu inglesa.
Te recomiendo también mover un píxel a la izquierda el ¿ o se pegará con algunas letras.

Ya te digo yo que sí lo hace. 😁

EDITO: Añadido al mensaje inicial el Super Mario Kart - Fullscreen Edition que terminé hace unas horas.
@psicopompo @Cebolleto Pues si me dais alguna pista para decírselo a chati… cojonudo, porque es el único problema que me queda ahora, el espacio. El resto (controles y tal) lo tengo ya finiquitado y dominado.

@wave Vale, apunto el consejo y ahora luego lo hago ;)
@Lázaro Yo precisamente siempre hago lo que comenta wave, pedírselo. Le digo que necesito que amplíe la ventana de texto, le envío states si es preciso y capturas. Le escribo maquetas de cómo quiero que quede un texto, por ejemplo: "Me pica la espalda, / pero sólo en los / días pares." También cuento caracteres para calcular cuántos voy a querer por línea, y que así cree un script que automatice una primera traducción sin pasarse de esos caracteres y sin que corte palabras a mitad (que las pase al siguiente renglón), etc. O también le puedes pedir que te amplíe las ventanas sobre las que se muestra el texto.

Yo tuve que hacer todos eso para el Momotaro Katsugeki porque originalmente los recuadros eran más altos que anchos debido a los textos japoneses en vertical. En definitiva, a la IA sólo se lo tienes que explicar para que te entienda, pero todo lo que le puedas aportar adicionalmente le ayudará.

En mi caso, la IA tiene su propio emulador compilado (es lo primero que le pido cuando empiezo un proyecto) y prueba todos los states que le paso. En esto hay que ser bastante preciso porque su concepción del tiempo es muy diferente. Si le digo que cargue un state y que verá el fallo del que le hablo nada más empezar, me dice que en 2 putos frames no ha visto el error. 😂 Tampoco puedes esperar que la IA llegue siempre por si sola a un menú y lo compruebe, porque eso se les da muy mal. De hecho, hay un bechmark que mide ciertas capacidades de las IAs, y les pone una prueba que consiste en mover un cuadrado hasta un hueco al que tiene que llegar por un pasillo en forma de L, algo que podría hacer un niño, y la mayoría no lo logran (aunque no tardarán en hacerlo). 🤦🏻 Así que yo se lo doy masticado. Una vez dijo (literalmente): "Me vas a tener que ayudar, porque cada vez que quiero llegar al menú del personaje tardo 15 minutos. Necesitaría que me pases un save state justo en dicho menú". 😆
@psicopompo Seguramente estés usando una de pago buena, yo lo hago todo con ChatGPT Go y Codex se termina en un suspiro (de hecho lo agoté en un día montando la IA Local xD). Y cuando probé Claude de manera gratuita se consumió mi prueba solo diciéndole que analizara la rom, así que... xD.
Estoy limitadillo en ese asunto, la verdad.
Ahora por ejemplo tenemos un problema, y es que hay un texto en concreto que tiene un 01 adicional en la rom traducida, pero no se encuentra ni en el editor ni en el ext, pero lo muestra el juego. Hemos probado con copias adicionales pero nada. La teoría es que insertAll.bat de Hextractor.jar añade esos números adicionales si no se llega a completar la cadena como el texto requiere.

Para que veas mis limitaciones (y parte también de mi nulo conocimiento en esto, pero me viene bien para aprender), anoche estuvimos casi 4h intentando sacar las palabras con acentos, eñes y símbolos. No fue capaz en todo este tiempo de decirme "tienes que pintarlas tu en tiles que no se usan y luego las añadimos al juego". Ya digo, seguramente sea porque es mi primera vez en esta movida y no puedo ser concreto con lo que le pido porque no se jeje.
No está muy pulido pero lo dejo por aquí, parche para Ghost Hunter (Unl) originalmente Zhuā Guǐ Dàshī / 抓鬼大師 (Taiwán/China, ~1994, Jumbo / Senchi). Cartucho sin licencia para Mega Drive, clon de Pang / Buster Bros.

Se debe usar la rom: Ghost Hunter (Unl).bin (76C62A8B)

¿Qué aporta el hack? La rom original tiene mal el header por lo que sólo se puede jugar en consolas JAP, modificadas o mediante la utilidad everkey del everdrive. La lista de cambios es la siguiente:

· Corregida la cabecera, ahora se puede jugar en cualquier Mega Drive/Genesis, no tiene ningún bloqueo de región.
· Eliminadas las pantallas en chino que describían los fantasmas, realmente no aportaban mucho para un juego de esta naturaleza.
· El título se ha cambiado a GHOST HUNTER.
· Salvado de memoria SRAM, esto es útil porque en el menú de opciones te permite empezar desde la última pantalla a la que hayas llegado. Se puede borrar la partida guardada mediante A + C + START en la pantalla de título.

Lo que no he tocado son gráficos más allá de cambiar el título ni he arreglado las ralentizaciones ni la falta de optimización que tenía el juego, sigue siendo como es, pero sin el bloqueo, y con la SRAM activada, poco más.

https://1drv.ms/f/c/bc866fbcab8bdd37/IgD5kQbo8HnPSoJa-jt1zvEPAXE70F6a96Z44_hbgNdydrg?e=FAewCZ
psicopompo escribió:
wave escribió:@Lázaro
Perfecto, me alegra que aunque sea sirva para ayudar a la gente xD
No se si lo hace pero te recomendaría que le digas que intente poder ampliar/reducir el tamaño de los textos según la traducción para no tener que ceñirte al espacio de la tradu inglesa.
Te recomiendo también mover un píxel a la izquierda el ¿ o se pegará con algunas letras.

Ya te digo yo que sí lo hace. 😁

EDITO: Añadido al mensaje inicial el Super Mario Kart - Fullscreen Edition que terminé hace unas horas.

Quería decir si ya lo hacía su versión, ya se que lo hace ya xD
He intentado ampliar las cajas o reducirlas según sea necesario pero no he conseguido mucho. Lo que sí puedo ahora es insertar un renglón más (máximo 4). He probado con Claude Free y algo he conseguido (lo de las cuatro líneas), también con Antigravity, pero nada, no doy con ello. Además estoy teniendo bastantes problemas con el editor, cuando no es un pito es una flauta, ya no se si editarlo por html es buena idea o qué. Con json lo intenté ayer y también daba problemas.
Ya digo, el no tener mucha idea de esto es lo que me hace dar tanta vuelta, y supongo que las limitaciones de mi chati lo mismo. Llevo desde ayer sobre las 22:00 hasta ahora mismo lidiando con este problema... y me acosté a las 5:00 y me desperté a las 10:00, llevo bastantes horas con esto.
Podéis decirme qué debo hacer para hacer las cajas dinámicas y la mejor manera de editar el texto visualmente? O qué herramienta le digo que me haga mi chati para ello. Ya digo, me pasa por ser la primera vez y no entender mucho, estoy aprendiendo pero joer... a hostias (supongo que como todos) xD
Lázaro escribió:He intentado ampliar las cajas o reducirlas según sea necesario pero no he conseguido mucho. Lo que sí puedo ahora es insertar un renglón más (máximo 4). He probado con Claude Free y algo he conseguido (lo de las cuatro líneas), también con Antigravity, pero nada, no doy con ello. Además estoy teniendo bastantes problemas con el editor, cuando no es un pito es una flauta, ya no se si editarlo por html es buena idea o qué. Con json lo intenté ayer y también daba problemas.
Ya digo, el no tener mucha idea de esto es lo que me hace dar tanta vuelta, y supongo que las limitaciones de mi chati lo mismo. Llevo desde ayer sobre las 22:00 hasta ahora mismo lidiando con este problema... y me acosté a las 5:00 y me desperté a las 10:00, llevo bastantes horas con esto.
Podéis decirme qué debo hacer para hacer las cajas dinámicas y la mejor manera de editar el texto visualmente? O qué herramienta le digo que me haga mi chati para ello. Ya digo, me pasa por ser la primera vez y no entender mucho, estoy aprendiendo pero joer... a hostias (supongo que como todos) xD


Aquí seguramente el problema es las cuentas gratuitas ya que lo mejor es usar la versión de pago (o montarte una IA local) yo uso la de pago mensual creo que son 22€ y utilizar code en Claude o Codex en Chatgpt. En este punto le pasas el proyecto y te genera la herramienta en python o c lo que mejor veas y ya una vez que examine cómo va el texto en la rom le pidas que utilice punteros con huecos vacios para obtener más texto pero esto da muchos problemas si no se hace bien.
@lolerbober Lo primero de todo, gracias por contestar. Agradezco tu tiempo.
Tengo una IA local con Gemma (en LM y Bionic) y Qwen (en LM), tanto en Windows como en Linux, y pago ChatGPT + Gemini (porque me viene con el almacenamiento ampliado para Google Fotos, si no ni de coña xD), además de Claude y Antigravity en free. Ninguna ha podido conseguir lo que busco. Seguramente por lo que digo, es mi primer proyecto y voy pez.
Si bien el problema de los textos ya está resuelto (voy por el capítulo 3, casi un 15% traducido), me ha salido un problema que no consigo solucionar. Al ampliar los textos, ahora hay npcs que dicen cosas que deberían decir otros. Parece ser que es algo de que los punteros se han movido pero no logramos encontrar cómo dicta el juego los punteros así que no se cómo asignar los textos a sus respectivos y originales NPC. Llevo casi tres días sin tocar el proyecto por esto mismo, no consigo ayuda ni con las IA consigo avanzar. Repito, seguramente porque no se términos ni manera de explicárselo, no creo que las 5 IA que tengo no puedan hacerlo XD

Lo que sí he conseguido son un montón de herramientas. Extractor de textos, para insertar traducciones, interfaz html para traducir respetando los códigos, otra de prueba con la api de deepl integrada (para traducir todo el texto del juego o por conversariones y luego yo reviso y corrijo todo, tanto semánticamente como los posibles errores -se avanza mucho así-), formas de cambiar gráficos etc... pero ese problema en concreto no doy con él xD
Lázaro escribió:@lolerbober Lo primero de todo, gracias por contestar. Agradezco tu tiempo.
Tengo una IA local con Gemma (en LM y Bionic) y Qwen (en LM), tanto en Windows como en Linux, y pago ChatGPT + Gemini (porque me viene con el almacenamiento ampliado para Google Fotos, si no ni de coña xD), además de Claude y Antigravity en free. Ninguna ha podido conseguir lo que busco. Seguramente por lo que digo, es mi primer proyecto y voy pez.
Si bien el problema de los textos ya está resuelto (voy por el capítulo 3, casi un 15% traducido), me ha salido un problema que no consigo solucionar. Al ampliar los textos, ahora hay npcs que dicen cosas que deberían decir otros. Parece ser que es algo de que los punteros se han movido pero no logramos encontrar cómo dicta el juego los punteros así que no se cómo asignar los textos a sus respectivos y originales NPC. Llevo casi tres días sin tocar el proyecto por esto mismo, no consigo ayuda ni con las IA consigo avanzar. Repito, seguramente porque no se términos ni manera de explicárselo, no creo que las 5 IA que tengo no puedan hacerlo XD

Lo que sí he conseguido son un montón de herramientas. Extractor de textos, para insertar traducciones, interfaz html para traducir respetando los códigos, otra de prueba con la api de deepl integrada (para traducir todo el texto del juego o por conversaciones y luego yo reviso y corrijo todo, tanto semánticamente como los posibles errores -se avanza mucho así-), formas de cambiar gráficos etc... pero ese problema en concreto no doy con él xD


(Yo tambien soy principiante y llevo poco en esto)

Por si te ayuda primero siempre sacate la Tabla de Punteros y dejar claro los offset de inicio y final ya que esto evita que te pases.

(un ejemplo)

1. El formato Little-Endian
En Game Gear, las direcciones de memoria de 2 bytes (16 bits) se escriben y leen al revés.
Si el texto de un NPC empieza en la dirección de memoria $4FA2, en el código del juego (en el editor hexadecimal) no vas a encontrar 4F A2. Lo vas a encontrar invertido: A2 4F.

2. Los Bancos de Memoria (Paginación)
La Game Gear no lee toda la ROM de golpe, lee fragmentos de 16KB (bancos). Por tanto, la dirección física en la ROM (offset) no es la misma que la dirección que usa el juego (CPU address). Normalmente, los textos se cargan en el espacio de memoria que va desde $4000 hasta $7FFF, o desde $8000 hasta $BFFF.

Cómo encontrar y arreglar los punteros (Paso a Paso)
Dile a tu compañero que haga esta prueba manual con un editor hexadecimal (como HxD) sobre la ROM original (sin traducir):

Paso 1: Localizar el inicio exacto de una frase original.
Busca en la ROM original dónde empieza la primera letra de lo que dice un NPC en concreto. Anota esa dirección hexadecimal (offset).
Ejemplo: Supongamos que el texto empieza en el offset 0x015A20.

Paso 2: Calcular la dirección de CPU (Game Gear).
Como los bancos son de 16KB (0x4000 en hexadecimal), hay que convertir ese offset en una dirección de CPU.

Fórmula rápida (suele funcionar en el 90% de juegos de GG): Toma los últimos 4 dígitos del offset (5A20) y si el primer número es menor de 4, súmale 4. Si es entre 4 y 7, déjalo igual o súmale 4 dependiendo del mapper, pero por norma general, el texto se mapeará en el rango $4000-$7FFF o $8000-$BFFF.

Asumamos que la dirección calculada de la CPU es $5A20.

Paso 3: Darle la vuelta (Little-Endian).
Coge $5A20 y sepáralo en dos bytes: 5A y 20.
Inviértelos: 20 5A.

Paso 4: Buscar el puntero en la ROM.
Busca los valores hexadecimales 20 5A en la ROM original.
Si encuentras esa pareja de bytes, ¡bingo! Has encontrado la Tabla de Punteros. Verás que justo al lado (dos bytes antes o después) están los punteros de las frases del NPC anterior y del siguiente.

Paso 5: Actualizar el puntero en la ROM traducida.
Cuando insertes la traducción, si esa misma frase ahora empieza en $5A80, tendrás que ir a esa tabla de punteros y sobrescribir el viejo 20 5A por el nuevo 80 5A.

Un detalle crítico que puede estar rompiendo el juego
Las herramientas automáticas de inserción a veces fallan por el límite de banco. Un banco de texto en Game Gear solo tiene 16KB de espacio. Si la traducción es tan larga que el texto "se sale" de esos 16KB, el puntero se romperá o leerá datos de otra parte. Si ocurre esto, hay que hacer repointing hacia zonas vacías de la ROM (espacio libre o free space), lo cual es más avanzado.

Te añado un prompt por si te ayuda :
Actúa como un experto programador especializado en ROM Hacking, ingeniería inversa y arquitectura de consolas de 8-bits, concretamente para Sega Game Gear (procesador Zilog Z80).

Estoy traduciendo un juego de Game Gear al español. Ya he extraído e insertado los textos, pero debido a la expansión del texto (el español ocupa más), las direcciones de los textos se han desplazado. Ahora los NPCs dicen frases incorrectas o el juego lee a mitad de una frase. El problema es que no he actualizado la Tabla de Punteros (Pointer Table).

Teniendo en cuenta las reglas de la arquitectura Z80 de Game Gear:

Los punteros son de 16 bits y usan formato Little-Endian (ej. la dirección $5A20 se escribe en hexadecimal como 20 5A).

La consola usa bancos de memoria (Memory Paging) de 16KB, por lo que la dirección física del archivo ROM (ROM Offset) no coincide con la dirección de memoria que lee la CPU (normalmente mapeada en $4000-$7FFF o $8000-$BFFF).

Necesito que me ayudes paso a paso con lo siguiente:

¿Cuál es la fórmula matemática exacta para convertir un "ROM Offset" físico (ej: 0x015A20) a una "CPU Address" de Game Gear, y cómo la convierto a Little-Endian para buscarla en el editor hexadecimal?

Una vez que localice la Tabla de Punteros, ¿cómo puedo programar un script sencillo en Python (ya que estoy usando herramientas personalizadas) que tome una lista de offsets originales, busque sus punteros en Little-Endian y los reemplace por los nuevos offsets generados tras la traducción?

Sé lo más técnico, metódico y didáctico posible. Pregúntame por los offsets hexadecimales concretos de mi ROM si necesitas hacer cálculos de ejemplo.
@Lázaro pues lo primero, sería que tú entendieras como van los punteros, luego guías a la IA.
Que si la IA hace todo,, lo que va a hacer es adivinar con lo que hay en la red (o sea, generalizar).
Así que hasta que entiendas eso, lo tienes complicado, a veces un poco de intuición viene bien. Algunos punteros no suelen ser correlativos.
Y un solo puntero equivocado hacen un desastre con el resto.
@lolerbober ¡Información super buena! Me pongo a investigar un poco más. ¡Gracias!
@blade133bo Por eso tengo el proyecto parado casi 3 días, porque estoy informándome de todo lo posible, pero esto es como todo, si te dan cuarenta libros, no sabes qué buscar, no sabes qué problema tienes y no tienes un profesor, acabas loco perdido y sin saber nada. La información que me ha dado loler es más o menos lo que he pedido anteriormente y nadie me ofrecía. De hecho preguntaba y sonaba el aire xD. Si te explican un poco los conceptos o sabes más o menos por donde tirar la cosa ayuda mucho, porque puedes buscar información, mirar en Mesen, ser más certero etc... pero es la primera vez que abro una rom por dentro y comprendo cómo funciona esto, y a solas, así que algo de ayudita nunca viene mal jeje.
Luego tenemos la parte "inteligente", las IA. Una te dice A, la otra B, otra C, internet dice D... y si a eso le sumas mi novatez, pues el cacao es bueno jajaja. Pero bueno, es divertido, se aprende y te entretiene un rato. Dudo mucho que de aquí salga con un máster en trastear roms pero al menos conozco un poco más los entresijos de todo esto.
85 respuestas
1, 2