TA e TA: Kingdoms: diferenças entre os formatos
Fonte: coreprime/kbot @ 0ab97bf · Editar no GitHub
Uma única página que resume o que é igual, parecido ou diferente entre o Total Annihilation (1997) e o TA: Kingdoms (1999). Serve para quem leva trabalho de um jogo para o outro ou precisa decidir qual jogo sua ferramenta deve suportar.
Tip
Resumo. O TA:K manteve a maior parte dos formatos de contêiner do TA
(HPI, GAF, TDF, COB), mas simplificou os invólucros (sem XOR no HPI v2,
sem diretório weapons/ separado, sem grade de construção 2×3) e acrescentou
coisas totalmente novas por cima (4 lados, economia de mogrium, "armas" que
lançam feitiços, arquivos compactados .kmp por missão).
Tabela de consulta rápida
| Formato | TA | TA: Kingdoms | Situação no kbot |
|---|---|---|---|
| Arquivo compactado HPI / UFO / CCX / GP3 | v1: criptografia XOR, vários chunks por arquivo, chunks de ≤64 KiB | v2: envelope em texto puro, um único chunk SQSH por arquivo, cabeçalho de ~32 bytes | ✅ lê os dois; ✅ grava v1; ❌ grava v2 |
Arquivos compactados de campanha .kmp |
N/A | HPI v2 com a extensão trocada; reúne o mapa, os scripts e os GAFs de cada missão | ✅ Lê |
| Animações de sprites GAF / TAF | .gaf, a paleta vem de palettes/palette.pal |
.taf com paleta (mesmo formato binário), paleta vinda de um .pcx por lado; e também uma variante truecolor .taf/.tsf (ARGB de 16 bits, veja taf.md) |
✅ lê todos; ✅ grava GAF e TAF/TSF truecolor |
| Imagens PCX | unitpics/<name>.pcx para os retratos das unidades (96×96 com paleta) |
Usado como portador de paleta 1×1 ao lado do .taf |
✅ Lê/grava |
| PAL / ALP / LHT / SHD | Paleta global do TA + tabelas de consulta | Paletas por lado e por terreno, quase todas dentro de portadores PCX; palettes/ também traz um .alp (65.536 bytes) e um .shd / .lht (8.192 bytes) com a mesma estrutura para quase todas elas (41 conjuntos) |
✅ Os dois (kbot pal lookup --palette aceita um .pal ou um .pcx) |
| Fontes bitmap FNT | fonts/*.fnt, glifos de 1 bpp |
Mesmo formato, em geral com um conjunto de glifos maior | ✅ Lê |
| Seções de mapa SCT | sections/<biome>/*.sct, blocos de terreno reutilizáveis para o editor TAE |
Não é usado: o sistema de blocos do TA:K é outro | ✅ TA; N/A TA:K |
| Terreno de mapa TNT | IDVersion == 0x2000, grade de blocos + mapa de altura + elementos + minimapa |
IDVersion == 0x4000 (variante); mesma estrutura geral, decodificador de blocos diferente |
✅ TA; ⚠️ TA:K (lê o cabeçalho, blocos não decodificados) |
| Arquivos que acompanham os mapas do TA:K | N/A | .ota (metadados TDF), .txt (descrição), .crt (binário, finalidade desconhecida) |
✅ .ota; — .crt/.txt |
| Modelos 3DO | Hierárquicos, faces com cor indexada da paleta ou texturizadas | Parecidos, mas o modelo de texturização é outro; alguns campos extras por primitiva | ✅ TA; ⚠️ TA:K (carrega, mas a cinemática é diferente) |
| Scripts de unidades COB / BOS | scripts/*.cob; bytecode baseado em pilha |
Mesmo formato de bytecode e mesmos opcodes; algumas portas de GET_UNIT_VALUE a mais |
✅ Os dois |
| Configurações em texto TDF / FBI / OTA | Mesma gramática em forma de INI | Mesma gramática | ✅ Os dois |
| Definições de arma embutidas | Não: as armas ficam em weapons/*.tdf, referenciadas pelo nome |
Sim: subseções [WEAPON1]/[WEAPON2]/[WEAPON3] dentro do FBI de cada unidade |
✅ Os dois, via documentor |
| Perfis de IA | ai/*.txt com as diretivas plan/weight/limit |
ai/*.txt só com weight/limit (sem bloco plan) |
✅ Os dois |
| Menus de construção | gamedata/sidedata.tdf [CANBUILD] estático + sobreposições dinâmicas download/*.tdf [MENUENTRY] |
Um diretório por construtor, canbuild/<builder>/<unit>.tdf, cada um com [Menu].Priority |
✅ Os dois |
| Grade do menu de construção | 2 colunas × 3 linhas por página (BUTTON 0–5) | Lista linear por construtor, ordenada por Priority | — |
| Ligação dos bancos de som | 3 camadas: FBI SoundCategory → gamedata/sound.tdf → sounds/*.wav |
Campos soundclass= / soundcategory=, resolvidos de outro jeito |
✅ ligação do TA; ⚠️ a ligação do TA:K ainda precisa ser documentada |
| Vídeo Smacker / ZRB | data/*.zrb (.smk renomeado) |
Mesmo formato Smacker com outras extensões | ✅ Os dois |
| Menus GUI | .gui (formato diferente do TA:K) |
.gui, árvore de widgets separada por espaços; veja takgui.md |
⚠️ só o do TAK está descrito; o .gui do TA ainda não foi coberto |
Legenda: ✅ suporte completo · ⚠️ parcial · ❌ sem suporte · — N/A ou sem planos
O que é realmente compartilhado
Mesmos bytes, mesmo analisador, mesmos tipos Go:
- Marcador do HPI (
'HAPI'): todo contêiner de arquivo compactado começa com ele. - Gramática TDF: os dois jogos leem os TDFs de FBI/OTA/armas com o mesmo analisador. Os nomes dos campos mudam, mas a sintaxe é idêntica.
- Bytecode COB: os opcodes, o modelo de pilha, as máscaras de sinais e todos os
valores
0x10xxxxxxcatalogados em cob.md funcionam nos dois. - Vídeo Smacker:
.smk/.zrbsão idênticos bit a bit; só muda a extensão do arquivo. - Conceito de hierarquia do 3DO: os dois jogos usam árvores pai/filho/irmão de peças com nome, coordenadas em ponto fixo e primitivas que referenciam texturas pelo nome.
O que é sutilmente diferente (leia com atenção)
- Estrutura do cabeçalho HPI. v1 = 20 bytes no total (5 × uint32). v2 = prólogo de 8 bytes + subcabeçalho de 24 bytes. Os 8 primeiros bytes são idênticos nos dois (marcador + versão), então um leitor que só conhece a v1 consegue validar o número mágico antes de quebrar no resto. Veja HPI v2 em hpi.md.
- Campos de economia do FBI. TA:
BuildCostMetal=+BuildCostEnergy=. TA:K: um únicobuildcost=(mogrium). O documentor trata os dois viaUnit.BuildMetal/BuildEnergy(TA) eUnit.BuildCost(TA:K); veja types.go. - Códigos de lado. TA:
ARM/CORE. TA:K:ARA/TAR/VER/ZON+CRE(Iron Plague) +MON/LIF/NPC. - Arquétipo de arma. TA: um saco de campos booleanos
(
ballistic=1,lineofsight=1,guidance=1,beamweapon=1, …). TA:K: uma única stringtype=Ballistic/Missile/Magical/Melee. - Modelagem de dano. Os dois usam uma subseção
[DAMAGE]dentro da arma, com umdefault=e substituições por alvo. O TA:K usa aindadamagecategory=em cada unidade (Human,Building,Magical) para modelar a resistência por classes amplas.
O que só o TA tem
- Dados de arquivo em vários chunks nos arquivos compactados HPI (o modelo de "chunks de ≤64 KiB com tabela de tamanhos").
- Criptografia XOR do HPI (semente por posição + chave transformada).
- Sobreposição
download/*.tdf[MENUENTRY]para acrescentar entradas ao menu de construção sem fazer um fork do sidedata.tdf. - Grade 2×3 do menu de construção, com
BUTTON0–5 (do canto superior esquerdo ao inferior direito). - Diretório
weapons/separado, com TDFs referenciados pelo nome. - Formato de editor SCT (seção), específico do TAE.
- Uma única paleta global (
palettes/palette.pal) com que todo recurso é desenhado, e um único conjunto de tabelas.alp/.shd/.lht. O TA: Kingdoms tem uma paleta por lado e por conjunto de terreno, a maioria com tabelas da mesma estrutura.
O que só o TA: Kingdoms tem
- HPI v2, com dados de arquivo simplificados em um único chunk.
- Árvore de diretórios
canbuild/<builder>/<unit>.tdfpara registrar itens no menu de construção (linear, sem grade). - Definições de arma
[WEAPONn]embutidas nos FBIs. - Economia de um único recurso, o mogrium (
buildcost=, sem separação entre metal e energia). - Paletas por lado guardadas dentro de PCX 1×1 de fachada, ao lado dos
arquivos de animação
.taf. - Unidades de magia que lançam feitiços (
arapries,vermage,zonsham), cujas armas são feitiços. - Quatro (+1) lados: Aramon, Taros, Veruna, Zhon, além de Creon, da expansão Iron Plague.
anims/buildpic/*.jpg: retratos das unidades como JPGs de 64×48 (o TA usa PCX emunitpics/).- Arquivos compactados HPI v2
.kmpde missões de campanha, que reúnem os mapas de cada missão com os scripts da missão. -disablecavedogverification, opção de linha de comando exigida para carregar a maioria dos arquivos de mods.
Diferenças por página: onde fica a cobertura de cada jogo
Toda página de formato que tem particularidades do TA:K traz uma seção "TA: Kingdoms" bem identificada. Índice rápido:
| Página | Seção do TA:K |
|---|---|
| hpi.md | HPI v2 do TA: Kingdoms, percurso hexadecimal completo no Apêndice: Jersey.hpi |
| ai.md | TA: Kingdoms: perfis sem plan |
| takgui.md | A página inteira é só do TA:K |
| takmap.md | A página inteira é só do TA:K |
Os catálogos de referência ficam em repositórios separados:
coreprime/reference-ta: 278 unidades, 199 armas, 45 construtores.coreprime/reference-tak: 203 unidades, 198 armas, 32 construtores.
Veja também
internal/documentor: o pacote Go que faz a extração dos dois jogos.- Armadilhas: as armadilhas específicas de cada jogo, em um só lugar.
- Tutorial de modding: por enquanto só para o TA; a cobertura do TA:K é uma lacuna conhecida.
- Glossário: referência de terminologia entre os dois jogos.