miércoles, 7 de octubre de 2026

Tiempos de carga ligeramente optimizados

No me rindo y sigo tratando de mejorar los lentos tiempos de carga de este juego. En esta ocasión Claude Opus 5.5 me ha hecho unas sugerencias que he querido explorar y desarrollar, y al parecer han dado buenos resultados. Como dije, el módulo de los combates ocupa él solo 600 KB y dicho tamaño es fijo y no puede cambiarse, así que la solución era mejorar por otros lados.

La idea de fondo: casi todo el tiempo de carga del juego es leer del CD. Cada lectura tiene un coste fijo, aunque sea de un fichero diminuto, y además el lector tarda más cuanto más lejos tiene que saltar en el disco. Por eso hemos atacado tres cosas: leer menos veces, leer menos datos y saltar menos por el disco.

1. Dejar de leer cosas repetidas

  • La fuente de combate se leía 3 veces seguidas al empezar cada combate (una por personaje). Ahora se lee una vez.
  • La fuente de texto del combate (WRIT0) se cargaba dos veces casi seguidas. Hemos quitado la primera, que sobraba.
  • La fuente de los diálogos del mapa (READ0) y un gráfico del mapamundi (ADBC) se volvían a leer del CD cada vez que volvías de un combate o entrabas al mapamundi. Ahora se guarda una copia en un hueco libre de la memoria y se recupera de ahí. Si algo la estropeara, el juego lo detecta y la lee del CD como antes.

2. Juntar varias lecturas en una

  • Las 5 imágenes del menú se leían una a una. Las pusimos seguidas en el disco y ahora se leen de una vez.
  • Las tres fuentes del inicio de combate también se leen ahora en una sola lectura.

3. Pedir las cosas al CD más deprisa

  • El juego mandaba los comandos del CD de uno en uno, uno por fotograma. Ahora los encadena en el mismo fotograma, y cada lectura arranca antes.

4. Comprimir mejor (LZSA2)

  • Los cuatro bloques grandes del juego (combate, mapa, mapamundi y menú) están ahora comprimidos con un método más eficaz: ~30 % menos datos que leer del CD.

5. Descomprimir mientras se lee

  • Antes el juego leía todo el bloque y, con el CD ya parado, lo descomprimía. Ahora descomprime a la vez que van llegando los datos, así que la descompresión queda prácticamente "escondida" dentro de la lectura.

6. Reordenar el disco (se nota en DuckStation y en consola real)

  • La música está ahora junto a los datos de combate y mapa, en vez de al final del disco.
  • Los datos de cada mapa y sus monstruos estaban en dos ficheros enormes, muy separados. Los hemos intercalado para que el trozo de cada mapa vaya seguido del de sus monstruos.

7. Otros

  • La fuente se sube a la pantalla por filas de 16 letras en vez de letra a letra. No se nota en el emulador, pero en consola real ahorra unas mil esperas a la tarjeta gráfica en cada carga.
  • Arreglamos un fallo antiguo de la traducción. En DuckStation (y probablemente en consola real) la imagen salía como una franja estrecha. No tenía que ver con los tiempos de carga, pero salió a la luz al probar en DuckStation.

Resultado total (segundos ahorrados por transición)

TransiciónPCSX-ReduxExtra en DuckStation / consola real
Inicio de combate~2,5 s—
Abrir el menú~1,7 s~0,3 s más
Cerrar el menú (al mapamundi)~1,25 s—
Combate → mapa~1,1 s~0,3 s más
Entrar en una zona~0,9 s~0,85 s más
Mapa → mapamundi~0,75 s—

Todo está probado en el juego por ti, integrado en workflow.sh y guardado en GitHub.

Lo último que estaba mirando (aún sin implementar): un compresor más fuerte (LZMA) reduciría otro 10–20 % los datos de combate, menú, mapa y mapamundi, aunque descomprime más despacio.

sábado, 5 de septiembre de 2026

De momento, imposible corregir la lentitud de batallas y menús

Como sabréis, este juego es muy criticado por la lentitud con la que se cargan batallas y menús, y ayer me propuse solucionarlo, optimizando el código, analizando ficheros, etc. De momento os digo que no es posible. El mapa de RAM está apretadísimo, no cabe un alfiler. Solamente el motor de batalla ya ocupa más de 600 KB, y dicho archivo tiene que leerse desde el CD y copiarse a RAM, y habiendo solo 2 MB de memoria disponible en total, la cosa va muy justa como os podéis imaginar. Los tiempos de carga de este port son el precio a pagar por haber cambiado la arquitectura de cartucho a CD. La solución temporal es la que comenté tiempo atrás, usar el emulador Duckstation y acelerar al máximo la lectura de CD:

Settings > Console > CD-ROM Emulation > "Read Speedup" y "Seek Speedup".

Si a alguien se le ocurre otra solución, soy todo oídos.

Saludos.

jueves, 7 de mayo de 2026

VFW medio implementada

No me apetecía seguir jugando, así que me he dedicado a otras cosas. Mediante Claude Code, debugger y mucho ensayo-error, he implementado una VFW en ciertas zonas donde se usa la fuente pequeña. La verdad es que no ha salido bien del todo, he de dedicarle más horas, pero voy bien encaminado. Cuando la tenga lista (o listas, porque hay varias zonas), ya os lo diré y pondré imágenes. Saludos.

miércoles, 1 de abril de 2026

Activar los trucos de Duckstation no es buena idea

Durante la partida para comprobar los diálogos detecté glitches gráficos en el mapamundi que yo atribuí a algún error por mi parte, pero no, resulta que estaban provocados por activar ciertos trucos en Duckstation. Al desactivar los trucos y reiniciar el juego, los glitches desaparecen. Supongo que ciertos errores en los diálogos también se deben a esto.

El juego estoy a punto de terminarlo, voy por la parte final, donde te dan la opción de hacer 7 aventuras secundarias o ir a la mazmorra final.

Sorprendentemente no he encontrado bugs catastróficos, solo detalles estéticos fáciles de arreglar presumiblemente.

Queda pendiente lo más complicado: textos en menús y textos en batallas.

Saludos

jueves, 26 de marzo de 2026

He avanzado un poco más

Tras 9 horas de juego, ahora estoy en el Palacio de Zeal, a ver si me animo y termino el juego pronto. De momento parece que todos los diálogos se han insertado correctamente, y la herramienta que programé para auto-colocar saltos de línea ha sido un éxito. Creo que el juego dura unas 20 o 21 horas, así que voy por la mitad. Esto avanza lento porque estoy ocupado con mis otros proyectos, pero no he abandonado la idea de terminarlo, ni mucho menos. Saludos.

domingo, 21 de diciembre de 2025

Estoy testeando los diálogos

Como sabréis, ya inyecté todos los diálogos en el juego e incluso me puse a jugarlo para ver cómo quedaban. Pues bien, avancé hasta la Guarida de Tyrano y ahí me quedé, no he avanzado más por pereza y por estar ocupado en otros asuntos, pero os diré que la inmensa mayoría de los diálogos se han inyectado correctamente y solo necesitarán meros retoques estéticos aquí y allá.

No quiero abandonar el proyecto, cuando vuelva a tener tiempo y energía seguiré con él.

Eso es todo, saludos y Feliz Navidad a todos.

domingo, 28 de septiembre de 2025

Nuevo descubrimiento

Como recordaréis, tuve que reestructurar toda la ROM para que cupieran todos los diálogos. El tema en sí no tuvo problemas, moví todo al principio y ya está, porque Vehek me aseguró que lo único que se usa de ROM.BIN son eventos y diálogos. Pero estos días estoy haciendo pruebas y he descubierto que también se usan otros elementos.

Me di cuenta de esto en el tutorial del juego, donde te explican las técnicas de los personajes en casa del alcalde de Truce, primer piso. Ahí deberían aparecer unos enemigos de muestra, pero no aparecían. También seguí avanzando en el juego y vi que el Tanque Dragón del 600 a.C. tampoco aparecía.

Es decir, los eventos cargaban bien, los diálogos también, pero algunos sprites no. Por suerte tengo un Excel gigantesco donde se explica de forma pormenorizada el mapeo del juego, así que busqué GFX y SPRITE ASSEMBLY, y si conservo esas dos cosas, más los eventos y los diálogos, parece que ya se ven tanto los enemigos del tutorial como el Tanque Dragón.

De momento eso es todo.