Animationer · bei.pm
De filformater, der er beskrevet på denne side, er baseret på den tekniske analyse af intellektuel ejendom fra Dynamix, Inc. og Sierra Entertainment.
Den intellektuelle ejendom er i dag en del af Activision Publishing, Inc. / Activision Blizzard, Inc. og ejes i øjeblikket af Microsoft Corp..
Oplysningerne er indsamlet gennem Reverse Engineering og dataanalyse med henblik på arkivering og interoperabilitet med historiske data.
Der er ikke anvendt nogen proprietære eller fortrolige specifikationer.
Spillet kan i øjeblikket købes som download på gog.com.
Nu kommer vi til kongeklassen af discipliner inden for Outpost 2 dataformater:
Animationerne.
Animationslisterne indledes med en global header, der primært tjener til dataverifikation. Herefter følger de konkrete animationsdefinitioner, der er opdelt i 3 niveauer:
-
Animation
En animation er den øverste instans; den repræsenterer en animation af en enhed, en bygning eller en 'partikel-animation' (kometnedslag, vejr, eksplosion) i en bestemt udgangssituation. -
Frame
Et frame er et enkelt billede inden for en animation. En animation kan indeholde et eller flere frames. -
Subframe
Et subframe er informationen om, at et bestemt bitmap skal tegnes på en bestemt position i et frame under bestemte kriterier. Et frame kan indeholde et eller flere subframes.
Herefter følger de enkelte animationsdefinitioner.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tegn | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Datatype | Betegnelse | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Antal animationer | Hvor mange animationsdatasæt er der? |
0x0004 | uint(32) | Antal rammer | Hvor mange rammer bør der i alt være |
0x0008 | uint(32) | Antal subrammer | Hvor mange subframes der i alt bør være til stede |
0x000c | uint(32) | Antal valgfrie poster | Hvor mange "valgfri poster" der er tilgængelige. |
Animation
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tegn | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Datatype | Betegnelse | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Ukendt 1 | Ubekendte oplysninger |
0x0004 | uint(32) | Afgrænsningsboks: Venstre | Angiver venstre start (i pixel) af Bounding Box. |
0x0008 | uint(32) | Afgrænsningsboks: Ovenfor | Angiver den øverste begyndelse (i pixel) af Bounding Box. |
0x000c | uint(32) | Afgrænsningsboks: Bredde | Angiver bredden (i pixel) af Bounding Box. |
0x0010 | uint(32) | Bounding Box: Højde | Angiver højden (i pixel) af Bounding Box. |
0x0014 | uint(32) | Offset: X | Angiver den horisontale midtpunkt for animationen |
0x0018 | uint(32) | Offset: Y | Angiver den vertikale midtpunkt for animationen |
0x001c | uint(32) | Ukendt 2 | Ukendt information |
0x0020 | uint(32) | Antal rammer | Angiver, hvor mange animationsrammer der er i denne animation |
0x0024 | uint(32) | Antal vinduer | Angiver, hvor mange vinduer der skal anvendes ved tegning |
Dataene fra det øverste lag, animationen, er primært administrationsdata - Boundingbox angiver koordinaterne for markeringen omkring køretøjet/bygningen, når det er valgt, og angiver samtidig, hvilket område der skal være klikbart.
Offsettet bestemmer primært "nulpunktet"; det punkt, der skal lægges til eller trækkes fra de interne koordinater. Man kunne også sige mere matematisk, at offsettet her angiver koordinatursprunget.
Windowsene består, ligesom offsettet, af 4 uint(32)-værdier pr. vindue, der angiver et område, der betragtes som anvendeligt for enkelte subframes. Uden for vinduerne må der, hvis det er relevant for bitmap'en, ikke tegnes.
Ramme
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tegn | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Datatype | Betegnelse | Forklaring |
---|---|---|---|
0x0000 | uint(8) | Subframe-antal og toggle for valgfri 1, 2 | Denne værdi indeholder:
|
0x0001 | uint(8) | Ukendt 1 og Toggle for Valgfri 3, 4 | Denne værdi indeholder:
|
0x0002 | uint(8) | Valgfri 1 | Ukendt |
0x0003 | uint(8) | Valgfri 2 | Ukendt |
0x0004 | uint(8) | Valgfri 3 | Ukendt |
0x0005 | uint(8) | Valgfri 4 | Ukendt |
Underramme
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tegn | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Datatype | Betegnelse | Forklaring |
---|---|---|---|
0x0000 | uint(16) | Bitmap-id | Angiver hvilken bitmap der skal bruges til denne subframe |
0x0002 | uint(8) | Ukendt 1 | Det er ukendt - jeg formoder dog stærkt, at det handler om en render-prioritet (Z-lag). |
0x0003 | uint(8) | Subframe-id | Angiver, i hvilken subramme vi befinder os |
0x0004 | sint(16) | Offset - Vandret | Angiver, hvor inden for rammen subrammen skal placeres, eller med hvor mange pixel bitmap'en skal flyttes horisontalt. |
0x0006 | sint(16) | Offset - Vertikal | Angiver, hvor inden for rammen subrammen skal placeres, eller hvor mange pixels bitmap’en skal flyttes vertikalt. |
Med dette kan vi nu samle individuelle rammer såvel som komplette animationer, her vist som eksempel med en mere kompleks animation, animationen med indeks 500.
Animation 500
Animation 500 viser, hvordan en Plymouth-transportør, der er lastet med almindeligt mineral, bliver tømt. Dette er en af de få animationer, der bruger vinduesfunktionaliteten.
Og sådan kan den komplette animation samles.
Desværre er der stadig et problem med den øverste lastelem, da det relevante bit i grafiktypen-informationen ikke er sat.
Her er nogle flere, smukt animerede sprites fra spillet: