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). É útil quando se porta trabalho de um jogo para o outro ou quando se decide que jogo a sua ferramenta precisa de suportar.
Tip
Em resumo. O TA:K manteve a maioria dos formatos de contentor do TA
(HPI, GAF, TDF, COB), mas simplificou os invólucros (sem XOR no HPI v2,
sem pasta weapons/ separada, sem a grelha de construção 2×3) e
acrescentou por cima coisas totalmente novas (4 lados, a economia do
mogrium, "armas" que lançam feitiços, arquivos .kmp por missão).
Matriz de referência rápida
| Formato | TA | TA: Kingdoms | Estado no kbot |
|---|---|---|---|
| Arquivo HPI / UFO / CCX / GP3 | v1 — cifrado com XOR, vários blocos por ficheiro, blocos de ≤64 KiB | v2 — invólucro em claro, um único bloco SQSH por ficheiro, cabeçalho de ~32 bytes | ✅ Leitura dos dois; ✅ escrita da v1; ❌ escrita da v2 |
Arquivos de campanha .kmp |
N/A | HPI v2 com outra extensão; junta o mapa, os scripts e os GAF de cada missão | ✅ Leitura |
| Animações de sprites GAF / TAF | .gaf, a paleta vem de palettes/palette.pal |
.taf com paleta (o mesmo formato binário), com a paleta tirada de um .pcx de cada lado; e ainda uma variante truecolor .taf/.tsf (ARGB de 16 bits, ver taf.md) |
✅ Leitura de todos; ✅ escrita de GAF e de TAF/TSF truecolor |
| Imagens PCX | unitpics/<name>.pcx para os retratos das unidades (96×96 com paleta) |
Usado como transportador de paleta de 1×1 ao lado do .taf |
✅ Leitura/escrita |
| PAL / ALP / LHT / SHD | Paleta global do TA + tabelas de consulta | Paletas por lado e por terreno, na maioria dentro de PCX transportadores; palettes/ guarda também um .alp (65 536 bytes) e .shd / .lht (8192 bytes) com a mesma disposição para quase todas elas (41 conjuntos) |
✅ Os dois (kbot pal lookup --palette aceita um .pal ou um .pcx) |
| Tipos de letra bitmap FNT | Glifos de 1bpp em fonts/*.fnt |
O mesmo formato, normalmente com um conjunto de glifos maior | ✅ Leitura |
| Secções de mapa SCT | Blocos de mosaicos reutilizáveis sections/<biome>/*.sct para o editor TAE |
Não usado: o sistema de mosaicos do TA:K é diferente | ✅ TA; N/A TA:K |
| Terreno dos mapas TNT | IDVersion == 0x2000, grelha de mosaicos + mapa de alturas + elementos + minimapa |
IDVersion == 0x4000 (variante); a mesma estrutura geral, com um descodificador de mosaicos diferente |
✅ TA; ⚠️ TA:K (o cabeçalho é lido, os mosaicos não são descodificados) |
| Ficheiros auxiliares dos mapas do TA:K | N/A | .ota (metadados TDF), .txt (descrição), .crt (binário, função desconhecida) |
✅ .ota; — .crt/.txt |
| Modelos 3DO | Hierárquicos, com faces indexadas na paleta ou com textura | Parecido, mas o modelo de skinning é diferente; alguns campos adicionais por primitiva | ✅ TA; ⚠️ TA:K (carrega, mas a cinemática difere) |
| Scripts das unidades COB / BOS | scripts/*.cob; bytecode baseado em pilha |
O mesmo formato de bytecode e os mesmos opcodes; algumas portas GET_UNIT_VALUE acrescentadas |
✅ Os dois |
| Configurações de texto TDF / FBI / OTA | A mesma gramática ao estilo INI | A mesma gramática | ✅ Os dois |
| Definições de armas embutidas | Não: as armas estão em weapons/*.tdf e são referidas pelo nome |
Sim: subsecções [WEAPON1]/[WEAPON2]/[WEAPON3] dentro do FBI de cada unidade |
✅ Os dois, através do documentor |
| Perfis de IA | ai/*.txt com diretivas plan/weight/limit |
ai/*.txt só com weight/limit (sem bloco plan) |
✅ Os dois |
| Menus de construção | [CANBUILD] estático em gamedata/sidedata.tdf + sobreposições dinâmicas [MENUENTRY] em download/*.tdf |
Uma pasta por construtor, canbuild/<builder>/<unit>.tdf, cada ficheiro com [Menu].Priority |
✅ Os dois |
| Grelha 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: SoundCategory do FBI → gamedata/sound.tdf → sounds/*.wav |
Campos soundclass= / soundcategory= com uma resolução diferente |
✅ Ligação do TA; ⚠️ falta documentar a ligação do TA:K |
| Vídeo Smacker / ZRB | data/*.zrb (.smk com outra extensão) |
O mesmo formato Smacker, com outras extensões | ✅ Os dois |
| Menus GUI | .gui (formato diferente do do TA:K) |
Árvore de widgets .gui separados por espaços; ver takgui.md |
⚠️ Só o do TAK está descrito; o .gui do TA ainda não é tratado |
Legenda: ✅ suporte completo · ⚠️ parcial · ❌ não suportado · — N/A ou sem planos
O que é realmente partilhado
Os mesmos bytes, o mesmo analisador, os mesmos tipos de Go:
- Marcador HPI (
'HAPI'): todos os contentores de arquivo começam por ele. - Gramática TDF: os dois jogos analisam os TDF FBI/OTA/de armas com o mesmo analisador. Os nomes dos campos diferem, 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 nome do ficheiro. - Conceito de hierarquia do 3DO: os dois jogos usam árvores pai/filho/irmão de peças com nome, coordenadas em vírgula fixa e primitivas que referem texturas pelo nome.
O que é subtilmente diferente (leia com atenção)
- Disposição do cabeçalho HPI. v1 = 20 bytes no total (5 × uint32). v2 = prólogo de 8 bytes + subcabeçalho de 24 bytes. Os primeiros 8 bytes são idênticos nos dois (marcador + versão), por isso um leitor só de v1 consegue validar o número mágico antes de rebentar com o 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 através deUnit.BuildMetal/BuildEnergy(TA) e deUnit.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 das armas. TA: um saco de campos booleanos
(
ballistic=1,lineofsight=1,guidance=1,beamweapon=1, …). TA:K: uma única cadeiatype=Ballistic/Missile/Magical/Melee. - Modelação do dano. Os dois usam uma subsecção
[DAMAGE]dentro de uma arma, com umdefault=e substituições por alvo. O TA:K usa aindadamagecategory=em cada unidade (Human,Building,Magical) para modelar resistências por classe geral.
O que só o TA tem
- Payloads de ficheiros com vários blocos nos arquivos HPI (o modelo dos "blocos de ≤64 KiB com tabela de tamanhos").
- Cifra XOR do HPI (semente por posição + chave transformada).
- Sobreposição
[MENUENTRY]emdownload/*.tdfpara acrescentar entradas ao menu de construção sem fazer uma cópia própria do sidedata.tdf. - Grelha 2×3 do menu de construção, com
BUTTON0–5 (do canto superior esquerdo ao inferior direito). - Pasta
weapons/separada, com TDF referidos pelo nome. - Formato de editor SCT (secções): específico do TAE.
- Uma única paleta global (
palettes/palette.pal) com que todos os recursos são desenhados, 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 disposição.
O que só o TA: Kingdoms tem
- HPI v2, com payloads de ficheiros simplificados num único bloco.
- Árvore de pastas
canbuild/<builder>/<unit>.tdfpara o registo no menu de construção (linear, sem grelha). - Definições de armas
[WEAPONn]embutidas nos FBI. - Economia de recurso único, o mogrium (
buildcost=, sem divisão entre metal e energia). - Paletas por lado transportadas em pequenos PCX de 1×1, colocados
ao lado dos ficheiros de animação
.taf. - Unidades mágicas, que lançam feitiços (
arapries,vermage,zonsham), cujas armas são feitiços. - Quatro (+1) lados: Aramon, Taros, Veruna, Zhon, mais os Creon da expansão Iron Plague.
anims/buildpic/*.jpg: retratos das unidades em JPG de 64×48 (o TA usa PCX emunitpics/).- Arquivos HPI v2
.kmpdas missões da campanha, que juntam os mapas de cada missão aos scripts da missão. - Obrigatoriedade do argumento de linha de comandos
-disablecavedogverificationpara carregar a maior parte dos ficheiros modificados.
Diferenças página a página — onde encontrar o que cobre cada jogo
Todas as páginas de formatos com particularidades do TA:K têm uma secção "TA: Kingdoms" bem assinalada. Índice rápido:
| Página | Secção do TA:K |
|---|---|
| hpi.md | TA: Kingdoms — HPI v2, com o 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 estão em repositórios separados:
coreprime/reference-ta— 278 unidades, 199 armas, 45 construtores.coreprime/reference-tak— 203 unidades, 198 armas, 32 construtores.
Ver também
internal/documentor— o pacote Go que trata da extração dos dois jogos.- Armadilhas — as armadilhas específicas de cada jogo, num só sítio.
- Tutorial de criação de mods — por agora só para o TA; a cobertura do TA:K é uma lacuna conhecida.
- Glossário — referência de terminologia comum aos dois jogos.