Diferencias de formato entre TA y TA: Kingdoms
Fuente: coreprime/kbot @ 0ab97bf · Editar en GitHub
Una sola página que resume qué es igual, qué se parece y qué es distinto entre Total Annihilation (1997) y TA: Kingdoms (1999). Resulta útil para llevar trabajo de un juego a otro o para decidir qué juego tiene que admitir tu herramienta.
Tip
En resumen. TA:K conservó la mayoría de los formatos contenedores de
TA (HPI, GAF, TDF, COB), pero simplificó los envoltorios (sin XOR en
HPI v2, sin directorio weapons/ aparte, sin cuadrícula de construcción
de 2×3) y añadió encima cosas totalmente nuevas (4 bandos, economía de
mogrium, «armas» que lanzan hechizos, archivos comprimidos .kmp por
misión).
Matriz de referencia rápida
| Formato | TA | TA: Kingdoms | Estado en kbot |
|---|---|---|---|
| Archivo comprimido HPI / UFO / CCX / GP3 | v1: cifrado con XOR, varios chunks por archivo, chunks de ≤64 KiB | v2: envoltorio sin cifrar, un solo chunk SQSH por archivo, cabecera de ~32 bytes | ✅ Lee los dos; ✅ escribe v1; ❌ escribe v2 |
Archivos comprimidos de campaña .kmp |
N/A | HPI v2 con otra extensión; reúne el mapa, los scripts y los GAF de cada misión | ✅ Lectura |
| Animaciones de sprites GAF / TAF | .gaf, la paleta sale de palettes/palette.pal |
.taf con paleta (mismo formato binario), paleta tomada de un .pcx por bando; además, una variante truecolor .taf/.tsf (ARGB de 16 bits, consulta taf.md) |
✅ Lee todos; ✅ escribe GAF y TAF/TSF truecolor |
| Imágenes PCX | unitpics/<name>.pcx para los retratos de unidad (96×96 con paleta) |
Se usa como portador de paleta de 1×1 junto al .taf |
✅ Lectura/escritura |
| PAL / ALP / LHT / SHD | Paleta global de TA + tablas de consulta | Paletas por bando y por terreno, casi todas dentro de PCX portadores; palettes/ contiene además un .alp (65 536 bytes) y un .shd / .lht (8192 bytes) con la misma disposición para casi cada una de ellas (41 conjuntos) |
✅ Los dos (kbot pal lookup --palette acepta un .pal o un .pcx) |
| Fuentes de mapa de bits FNT | fonts/*.fnt, glifos de 1 bpp |
Mismo formato; suele tener un juego de glifos más amplio | ✅ Lectura |
| Secciones de mapa SCT | sections/<biome>/*.sct, bloques de casillas reutilizables para el editor TAE |
No se usan: el sistema de casillas de TA:K es distinto | ✅ TA; N/A TA:K |
| Terreno de mapa TNT | IDVersion == 0x2000, cuadrícula de casillas + mapa de alturas + elementos + minimapa |
IDVersion == 0x4000 (variante); la misma estructura general, con otro decodificador de casillas |
✅ TA; ⚠️ TA:K (se lee la cabecera, las casillas no se decodifican) |
| Archivos acompañantes de mapas de TA:K | N/A | .ota (metadatos TDF), .txt (descripción), .crt (binario, finalidad desconocida) |
✅ .ota; — .crt/.txt |
| Modelos 3DO | Jerárquicos, caras indexadas en la paleta o con textura | Parecidos, pero el modelo de skinning es distinto; algunos campos adicionales por primitiva | ✅ TA; ⚠️ TA:K (se carga, pero la cinemática es distinta) |
| Scripts de unidad COB / BOS | scripts/*.cob; bytecode basado en pila |
El mismo formato de bytecode y los mismos opcodes; se añaden algunos puertos de GET_UNIT_VALUE |
✅ Los dos |
| Configuración en texto TDF / FBI / OTA | La misma gramática al estilo INI | La misma gramática | ✅ Los dos |
| Definiciones de armas en línea | No: las armas están en weapons/*.tdf y se referencian por nombre |
Sí: subsecciones [WEAPON1]/[WEAPON2]/[WEAPON3] dentro del FBI de cada unidad |
✅ Los dos, mediante el documentor |
| Perfiles de IA | ai/*.txt con directivas plan/weight/limit |
ai/*.txt con weight/limit sueltos (sin bloque plan) |
✅ Los dos |
| Menús de construcción | [CANBUILD] estático en gamedata/sidedata.tdf + añadidos dinámicos [MENUENTRY] en download/*.tdf |
Directorio por constructor canbuild/<builder>/<unit>.tdf, cada uno con [Menu].Priority |
✅ Los dos |
| Cuadrícula del menú de construcción | 2 columnas × 3 filas por página (BUTTON 0–5) | Lista lineal por constructor, ordenada por Priority | — |
| Asignación de bancos de sonido | 3 capas: SoundCategory del FBI → gamedata/sound.tdf → sounds/*.wav |
Campos soundclass= / soundcategory= con otra resolución |
✅ Asignación de TA; ⚠️ falta documentar la asignación de TA:K |
| Vídeo Smacker / ZRB | data/*.zrb (.smk con otra extensión) |
El mismo formato Smacker con otras extensiones | ✅ Los dos |
| Menús de la interfaz | .gui (formato distinto del de TA:K) |
.gui, árbol de widgets separados por espacios; consulta takgui.md |
⚠️ Solo está descrito el de TAK; el .gui de TA aún no se cubre |
Leyenda: ✅ soporte completo · ⚠️ parcial · ❌ no admitido · — N/A o no previsto
Lo que de verdad se comparte
Los mismos bytes, el mismo analizador, los mismos tipos de Go:
- Marca HPI (
'HAPI'): todos los contenedores de archivos comprimidos empiezan por ella. - Gramática TDF: los dos juegos analizan los TDF de FBI, OTA y armas con el mismo analizador. Los nombres de campo cambian, pero la sintaxis es idéntica.
- Bytecode COB: los opcodes, el modelo de pila, las máscaras de
señales y todos los valores
0x10xxxxxxcatalogados en cob.md funcionan en los dos. - Vídeo Smacker:
.smk/.zrbson idénticos bit a bit; solo cambia la extensión del archivo. - Concepto de jerarquía de 3DO: los dos juegos usan árboles padre/hijo/hermano de piezas con nombre, coordenadas en coma fija y primitivas que hacen referencia a las texturas por nombre.
Lo que cambia en detalles sutiles (léelo con atención)
- Disposición de la cabecera HPI. v1 = 20 bytes en total (5 × uint32). v2 = un prólogo de 8 bytes + una subcabecera de 24 bytes. Los 8 primeros bytes son idénticos en las dos (marca + versión), así que un lector que solo entienda v1 validará el número mágico sin problemas antes de estrellarse con el resto. Consulta HPI v2 en hpi.md.
- Campos económicos del FBI. TA:
BuildCostMetal=+BuildCostEnergy=. TA:K: un únicobuildcost=(mogrium). El documentor trata los dos medianteUnit.BuildMetal/BuildEnergy(TA) yUnit.BuildCost(TA:K): consulta types.go. - Códigos de bando. TA:
ARM/CORE. TA:K:ARA/TAR/VER/ZON+CRE(Iron Plague) +MON/LIF/NPC. - Arquetipo de las armas. TA: un saco de campos booleanos
(
ballistic=1,lineofsight=1,guidance=1,beamweapon=1, …). TA:K: una única cadenatype=Ballistic/Missile/Magical/Melee. - Modelado del daño. Los dos usan una subsección
[DAMAGE]dentro de un arma con undefault=más modificaciones por objetivo. TA:K usa ademásdamagecategory=en cada unidad (Human,Building,Magical) para modelar la resistencia por grandes clases.
Lo que solo tiene TA
- Datos de archivo en varios chunks dentro de los archivos comprimidos HPI (el modelo de «chunks de ≤64 KiB con tabla de tamaños»).
- Cifrado XOR de HPI (semilla por posición + clave transformada).
- Añadidos
[MENUENTRY]endownload/*.tdfpara añadir entradas al menú de construcción sin hacer una copia propia de sidedata.tdf. - Cuadrícula del menú de construcción de 2×3 con
BUTTON0–5 (de arriba a la izquierda a abajo a la derecha). - Directorio
weapons/aparte con TDF que se referencian por nombre. - Formato SCT (secciones) del editor, propio de TAE.
- Una única paleta global (
palettes/palette.pal) con la que se dibujan todos los recursos, y un único conjunto de tablas.alp/.shd/.lht. TA: Kingdoms tiene una paleta por bando y por conjunto de terreno, la mayoría con tablas de la misma disposición.
Lo que solo tiene TA: Kingdoms
- HPI v2, con datos de archivo simplificados en un solo chunk.
- Árbol de directorios
canbuild/<builder>/<unit>.tdfpara registrar unidades en el menú de construcción (lineal, sin cuadrícula). - Definiciones de armas
[WEAPONn]en línea dentro de los FBI. - Economía de un solo recurso, el mogrium (
buildcost=, sin división entre metal y energía). - Paletas por bando guardadas en PCX mínimos de 1×1 colocados junto a
los archivos de animación
.taf. - Unidades mágicas o que lanzan hechizos (
arapries,vermage,zonsham), cuyas armas son hechizos. - Cuatro (+1) bandos: Aramon, Taros, Veruna y Zhon, más Creon de la expansión Iron Plague.
anims/buildpic/*.jpg: retratos de unidad como JPG de 64×48 (TA usa PCX enunitpics/).- Archivos comprimidos HPI v2
.kmpde misiones de campaña, que reúnen los mapas de cada misión con sus scripts. - El requisito de la opción de línea de comandos
-disablecavedogverificationpara cargar la mayoría de los archivos modificados.
Diferencias página a página: dónde encontrar la cobertura de cada juego
Todas las páginas de formatos que tienen particularidades de TA:K incluyen una sección «TA: Kingdoms» bien marcada. Índice rápido:
| Página | Sección de TA:K |
|---|---|
| hpi.md | HPI v2 de TA: Kingdoms, con el recorrido hexadecimal completo en el apéndice: Jersey.hpi |
| ai.md | Perfiles sin plan de TA: Kingdoms |
| takgui.md | Toda la página es solo de TA:K |
| takmap.md | Toda la página es solo de TA:K |
Los catálogos de referencia están en repositorios aparte:
coreprime/reference-ta: 278 unidades, 199 armas, 45 constructores.coreprime/reference-tak: 203 unidades, 198 armas, 32 constructores.
Véase también
internal/documentor: el paquete de Go que se encarga de la extracción de los dos juegos.- Escollos: los escollos propios de cada juego, en un solo sitio.
- Tutorial de modding: de momento solo para TA; la cobertura de TA:K es una laguna conocida.
- Glosario: referencia de terminología común a los dos juegos.