Outpost 2 file format · bei.pm
Na dispela sait, ol deitformats i stap long teknikal analis bilong ol samting bilong Dynamix, Inc. na Sierra Entertainment.
Samting bilong tingting i stap long Activision Publishing, Inc.- / Activision Blizzard, Inc. na i stap long han bilong Microsoft Corp..
Ol infomesen i bin gat long Reverse Engineering na Datenanalyse bilong ol samting long arkiiving na interoparabelity wantaim ol istorikal data.
Ol i no yusim eni proprieta o konfidenchal spesifikesen.
Dispela geim i stap long gog.com long pekim olsem download.
Dispela artikl i raitim ol inforamshen bilong mi long data format bilong real-time strategy game "Outpost 2: Divided Destiny", we i bin publish long 1997 bilong Sierra na i bin develop long Dynamix.
Mi bin spende taim long 01 November 2015 go long 14 November 2015 long analisis bilong data bilong dispela game - na wanem samting i stap long en.
Ol inforamshen we mi bin kisim so far, i tok olsem Dynamix - olsem planti komershal kampani - i no bin mekim ol data format spesifik long Outpost 2, tasol i bin yusim ol long narapela developmen olsem Mechwarrior series (wanpela kain).
Na tu, i ken lukim olsem ol innovashon bilong data format i no tumas na i save wok long ol long taim i stap olsem JFIF na RIFF.
Long interpretim ol tabel na data format, ol narapela inforamshen i stap long Oro igo?.
Ol data we i stap hia i mas kisim olsem Little Endian.
Finis, mi ken tok olsem reverse engineering i bin mekim mi hamamas, maski i no pinis.
Olsem na, mi tok long yu long playim dispela game, long wanem i gat ol interesting game mekanik.
Oroka
Outpost 2 iusim data format i olsem JFIF / PNG - ol data blok i gat 8 Byte header. Olsem na mi no save raitim ol header long spesifik ples, mi raitim tasol ol difrens.
Format i olsem; ol gutpela data i stap insait:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Magi Paita | Emi in forma hevi, bihain blo nait data blo em i go kam. Ol save olsem:
|
0x0004 | uint(24) | Block-Longa | Emi moa informason long olsem wanem bikpela (long Byte) dispela data blok i bikpela. Olsem na, ol genuin usim data i stap - 8 header-byte i no stap insait. |
0x0007 | uint(8) | Flae? | Em i no save, wanem displa block i wokim. Long ol Volumes, dispela value i planti taim 0x80, long narapla file i planti taim 0x00. Dispela i soim, olsem em i wanpela flag-set. |
Volumes
Volumes em wan data container bilong game, olsem wan archive format olsem Tarball. Olsem na, long Outpost 2, format i save long ol files tasol - nogat ol folders. Ol i save likim ol dispela long ol file nem.
Wan volume i kam long volume-header na ol several volume blocks, we i bilong ol spesifik files.
"Volumes" em ol files we i gat end olsem 'vol'
long game directory.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Block-lenait. | |
0x0007 | uint(8) | Pela |
Volume Hed
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Block-lenait. | |
0x0007 | uint(8) | Pela |
Volume Header no gat nogat data bilong yus.
Em i olsem container tasol.
Numba wan data long Volume Header em i mas gat Volume Strings; bihain long dispela i kamap Volume-information.
Volume Strin
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Block-lenait. | |
0x0007 | uint(8) | Pela |
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Block-lenait. | |
0x0007 | uint(8) | Pela | |
0x0008 | uint(32) | Payload-lenght | Givim olsem, hamas bytes bilong dispela data tru em i ol samting we i wok long en. Ol narapela data we i stap long volum-strings-list i luk olsem i mas likim olsem garbage. Long ol faile we i gat leta bihain, ol 'remaining data' i 0x00, we i ken soim ol hevi long toolchain taim ol i wokim game, i olsem, ol developa i lukim olsem i no gat hevi long game sapos data i no i stap gut, olsem, ol i no bin lukautim ol buffer long stret wei. |
0x000c | uint(8)[] | Nam bilong faile | Dis em 0-byte terminat list bilong file nem, we - long dis data we i stap nau - em i lukim olsem i no gut long expectim ol ASCII liks. Em i no nid long lukim dispela data block moa gut long parsing, bikos long ol volume information, ol offsets bilong file nem i stap direct referens. |
Volume Strings iwanua na lista bilong ol file nem, we i stap long volume.
Voluma in forma
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Block-lenait. | |
0x0007 | uint(8) | Pela |
Volume information i gat moa detel inforamshon long di files. Dis i olsem wan kain FAT directory entry (FAT = File Allocation Table)
Di namba blong files i kam long block size divaidim long di length blong directory entries - 14 Byte.
Di evri directory entries i gat di following structure:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Filenem offset | Oro iana, na offset (!) i go pasin long list bilong file nem (Volume-Strings) we file nem bilong file i stap. I tok long stat bilong data blok. |
0x0004 | uint(32) | Faita ofset | Emi tokim, long wanem ofset insait long olgeta volium faile we displa i stap. |
0x0008 | uint(32) | Faili siza | Oskai long, olsem wanem, disfala faile i gat samting olsem byte. |
0x000c | uint(16) | Flaiga? | Oka i go longim moa information long file encoding.
|
Volume Blok
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Block-lenait. | |
0x0007 | uint(8) | Pela |
Volume-Block emi wan container, hem kisim ol faile. Hem i gat wanpela moa - bikpela bilong block format - redundant de faile size na na em i go stret long ol user data.
Taira
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 42 | 4d | 50 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | B | M | P | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Magi Byts | |
0x0004 | uint(24) | Block-lenght | |
0x0007 | uint(8) | Sikim |
Ol tiles em iwanan Outpost-2 spesifik
Bitmap grafiks format. Ol i go long 13 tilesets,
"wells" em i kolim (well0000.bmp
go long well0012.bmp
),
wea ol i stap insait long volyum maps.vol.
Ol tilesets / wells i gat dispela:
File Name | Content |
---|---|
well0000.bmp | Em 32x32px, blua grafik - gut long test, if yu image-loader i wok |
well0001.bmp | Em contain lait rock, mountain lines long lait rock an plenti variations bilong impact craters long lait rock |
well0002.bmp | Em contain lait-rock 'Doodads' - olsem elements we i save putim long lait rock long mekem i no mas tight (o long putim olsem structure, olsem walls), i gat vegetation tu |
well0003.bmp | Em contain wan crust-like structure long lait rock |
well0004.bmp | Em contain dark rock, mountain lines long dark rock an plenti variations bilong impact craters long dark rock |
well0005.bmp | Em contain dark-rock 'Doodads' - olsem elements we i save putim long dark rock long mekem i no mas tight (o long putim olsem structure, olsem walls) |
well0006.bmp | Em contain wan crust-like structure long dark rock, na transition long lait an dark rock |
well0007.bmp | Em contain lava we i gat 4-5 frames animation |
well0008.bmp | Em contain sand an plenti variations bilong impact craters long sand |
well0009.bmp | Em contain sand 'Doodads' - olsem elements we i save putim long sand long mekem i no mas tight (o long putim olsem structure, olsem walls) |
well0010.bmp | Em contain 48 transitions long sand long lait an dark rock |
well0011.bmp | Em contain polar caps bilong map, we i gat dark rock olsem ground |
well0012.bmp | Em contain polar caps bilong map, we i gat lait rock olsem ground |
Em i gutpela samting long mekim stret, no renderim Tiles bipo long wanem, long lukim ol i save cache, bikos ol data bilong de/nait saik i mas wokim yet - na plenti tru ol data bai kamap.
Ol Tiles i 8bpp piksa bilong indexed palette, long 32x32 piksel resolusen, na ol i stap wantaim. Long wanpela olsem Tileset, i gat planti moa.
The main container i gat 2 sekshen: head
na data
.
Tiles Header
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Magi Byts | |
0x0004 | uint(24) | Block-lenght | |
0x0007 | uint(8) | Sikim | |
0x0008 | uint(32) | Version / Flag? | Dispela i ken i olsem wanpela version bilong file format; long olgeta file mi gat, em i gat value |
0x000c | uint(32) | Bai (Horisontal Reselesen) | Oro iana, olsem wanem gutpela bilong piksa faile i gat (long piksel). Long olgeta Wells bilong Outpost 2, yu mas lukim dispela balens |
0x0010 | uint(32) | Taim (Vertikal resoluson) | Emi toktok, olsem wanem i likim long piak na i go (long pixel). Long olgeta Wells bilong Outpost 2, yu mas ekspektim dispela valu |
0x0014 | uint(32) | Kolori dep! | Dispela samting i no klia. Orait, em i gat valu |
0x0018 | uint(32) | Kolor deip 2? | Dispela samting i no save. Em inap long wanpela 'aim' kol dip. |
Ol man bilong dispela, wanpela paleti faile i stap long RIFF format. Ol samting i gat long dispela i lukim - sapos ol paleti i kamap long narapela ples - long Paleti.
Tiles Data
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Magi Byts | |
0x0004 | uint(24) | Block-lenght | |
0x0007 | uint(8) | Sikim |
Na iua, na piksel data i go i soso, i kam long left-top na i go long right-bottom.
Na data value long ol piksel we i mas i olsem 8bpp-bitmaps i kam long index bilong kolok long kolok palate.
Dispela play-engine i nogat ol tiles *liklik* long taem yu laikim.
Dispela i luk olsem i gat bikpela rison long dei-nait sikil, we i gat 32 narakain ol tiles. Olsem na, i luk olsem ol brighness value i no moa likim. I no yet inap long kisim ol stret value, mi wok long ol calculation
v *= (daylight / 48) + 0.25;
wanem i gat long ol HSV data bilong ol pixel, we daylight i gat value bilong 0-31 na v i gat value bilong 0-1. Sapos yu lukim, i gat wanpela rand long map, we i gat 16 tiles long left na right (dispela i helpim long no lukim unit i spawn).
Mo yet, i luk olsem dei-nait sikil i resem wanpela kolim bilong map long olgeta gamecycle.
Wanem i kirap long faster dei-nait sikil em i luk olsem:
PRT
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 43 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | C | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Paleti long | Giv, nogat long ol normal blok format, di namba bilong ol palet we i stap long displa faile - no di lent bilong blok long bait. |
0x0007 | uint(8) | Nai flag | Likely, olsem usu, Flags. Mi no save long any flags; olsem ol values mi save, ol i |
Olsem wanem PRT
i mean, mi no save; wanem samting olsem 'Palette and Ressource Table' - bikos dispela fael - yu ken lukim olsem op2_art.prt long maps.vol - em i olsem, o dispela i gutpela tokim ol wok bilong en.
Dispela fael i gat wanpela liste bilong paletten, wanpela tebel long olgeta bitmap we i yusim, olgeta definisen bilong animasiyon, na moa yet planti samting we mi no save. Em i no stret long container format we i bin stap bipo, bikos no olgeta data i kam long dispela skema.
CPAL
sekshen (i likim olsem paletten-container) i soim tasol paletten data, na i tokim hao planti 8-bit paletten i gat 1052 byte i stap.
Dispela 1052-byte tok i no olsem raitim, bikos paletten format i ken gat plante narapela paletten size. Em i soim tasol long data we Outpost 2 i kam wantaim.
Afte paletten liste, i kam nau olgeta bitmap liste; na klostu i kam yet animasiyon liste.
Both i stat long wanpela uint(32) (o gen uint24 + uint8 flags?) we i soim namba bilong data.
Paleti
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Paleti-lenght | Givim, longim nogut block format, namba bilong ol pallet we i stap long dis file - no longth bilong block long byte. |
0x0007 | uint(8) | Pela | Likely, olsem usul, Flags. Mi no save long any flags; bikos ol values mi save long |
Ol palete infromesen i isi long raitim.
Em i gat wan header na wan data-segment.
Paleti-Header
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Paleti-lenght | Givim, longim nogut block format, namba bilong ol pallet we i stap long dis file - no longth bilong block long byte. |
0x0007 | uint(8) | Pela | Likely, olsem usul, Flags. Mi no save long any flags; bikos ol values mi save long |
0x0008 | uint(32) | Palet fomet version? | Likely define, which palette format version the palette follows. All Outpost2 palettes seem to have version |
Paleti data
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Magic Bytes | |
0x0004 | uint(24) | Blok-lenght | |
0x0007 | uint(8) | Pela |
Das sekson bilong data i kisim olgeta palet entri. Ol namba bilong palet entri i kam long blok leng / 4.
Olgeta entri i gat dispela, simpul straktua;
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | 04 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(8) | Rot komponent | Tokim red i namba bilong kol |
0x0001 | uint(8) | Grin komponen | Oro i aiba ian greeni bilong kolora |
0x0002 | uint(8) | Blu komponente | Tokim iuma bilong blua kolora |
0x0003 | uint(8) | Bikpela - Flak? | Emi no klar, wanem disfala valu i stori, bikos em i luk olsem hem i |
Ol i paleti, ol i no moa tokim, na long ol paleti bilong animason, ol dispela ruls i wok long:
- Ol fasa bilong nambawan i BAMU transparen, nogat wanem val i stap long dispela.
-
Ol paleti entri 1-24 i mas lukim olsem ol kol bilong pleya long paleti 1-8.
Ol kol i kam long ol pleya 1 i no klia long mi.
Mi ting, ol narapela kol i hardcoded.
Bitmaps
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Wikiliu longu | Givim wid na pixel data lain long byte - bikos ol i stap long 4-byte border. Ol i mekem olsem, i wasi long jekim wanpela spesifik piksa lain. Olsem wanem, dispela value i stap separet, na em i no stret long kalkuleit, i no klia. |
0x0004 | uint(32) | Offset | Em givim offset bilong fes lain long bitmap |
0x0008 | uint(32) | Höhe | Tokim height bilong piksa long pixel |
0x000c | uint(32) | Wideness | Sayim bilong piksa long piksel |
0x0010 | uint(16) | Typ | Oro iumi ka na pum paita. Hia, em iumi ka bitmaske:
|
0x0012 | uint(16) | Pallet | Em i definim, wanem palaet bilong PRT faile i mas yusim |
Dis data structure bilong PRT file i tokim olsem wanem bitmaps we i yusim bilong sprites i stap. Dis bitmaps i wok olsem wanpela komponen, we planti i join wantaim long wanpela animasyon frame bilong sprite.
Ol konkretn data bilong piksa i stap long
op2_art.BMP long game directory.
Olsem wanem dispela bitmap file i gat wan (we i mostly stret) RIFF-bitmap header,
i no klia. Liklik liklik, Outpost 2 i yusim system-APIs long load grafik,
bai dispela header i tekim temparari na ol samting i save, i go long dispela samting i no same.
Ol pixel data i stap long BMP file long Position Offset + uint32-Offset, we i stap long BMP file long address 0x000A (RIFF-bitmap-data offset), i save long - na ol i yet i go long lain bilong ol piksa, i stat long hap up i go long hap daun.
Monochrome 1bpp grafik i ken soim olsem wanem, we kala 0 i wanpela transparensi, na kala 1 i wanpela halftam black/grey, olsem monochrome grafik i kasem olgeta long vehicle na building shadow long animasyon.
Olsem na yu ken wokim planti grafik wantaim.
Animashon
Na, yumi kamap long king klas bilong displin insait long Outpost 2 data format:
Ani mas.
Ani mas list i stat wantaim wanpela global header, we i wok long veri data. Olsem na, i kamap ol konkreti ani mas definision, we i split long 3 step:
-
Ani mas
Wanpela ani mas em i hap bilong antap; em i soim ani mas bilong wanpela unit, wanpela bilding o wanpela 'partikel-ani mas' (komet hit, weatha, eksploson) long wanpela spesifik ples. -
Frame
Wanpela frame em i wanpela piksa insait long wanpela ani mas. Wanpela ani mas i ken gat wan o plenti frame. -
Subframe
Wanpela subframe em i informasion long ol samting we wanpela bitmap i mas painim olsem ol kriteriya i kam long wanpela spesifik ples bilong wanpela frame. Wanpela frame i ken gat wan o plenti subframe.
Na, ol ani mas definision i kamap klostu.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Namba animasone | Hamamas animasoin data set i stap |
0x0004 | uint(32) | Namba fram | Orait, olsem wanem frames i mas stap long olgeta |
0x0008 | uint(32) | Namba subframe | Hamamas subframes i go kasem |
0x000c | uint(32) | Namba bilong ol optional entry | Hamamas "optionale entri" i go. |
Animasi
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(32) | Unbekannt 1 | Oro i no save |
0x0004 | uint(32) | Bounding Box: Lain | Givim left start (long pixel) bilong Bounding Box. |
0x0008 | uint(32) | Bounding Box: Abovet | Givim the top start (long pixels) blong Bounding Box. |
0x000c | uint(32) | Bounding Box: Wara | Givim width (long pixel) bilong Bounding Box. |
0x0010 | uint(32) | Bounding Box: Height | Oro i bin givim hap (long Pixel) bilong Bounding Box. |
0x0014 | uint(32) | Offset: X | Ona weka horizontal mipot bilong animason |
0x0018 | uint(32) | Offset: Y | Em tasol long hap we animetion i stap long miripela |
0x001c | uint(32) | Unkown 2 | Ingo na inforamason |
0x0020 | uint(32) | Namba fram | Oro eai, na animasion frames i gat long disim animasion |
0x0024 | uint(32) | Namba Windows | Oro i tokim, hau long wanem pletim i mas yusim long draivim |
Dei data bilong hap bikpela, bilong animetion, em i olsem ol data bilong administrasion - Boundingbox em i makim ol koordinet bilong mak bilong vehikel/ohaus, samting em i pilai na i tokim tu, wanem hap em i ken kliki.
Offset em i makim "nullpoint"; dispela point, em i mas i go long ol internal koordinet bilong plei o i mas i rausim. Yu ken tok matematik: offset em i makim hap koordinet bilong stat.
Ol Windows em i olsem, olsem offset, i gat 4 uint(32) values long wanpela Windows, em i makim wanpela hap we i ken yusim long ol subframes. Long outsait bilong Windows, samting em i no olsem bitmap, i no ken draim.
Fram
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(8) | Subframe namba na toggle bilong optional 1, 2 | Dispela valyu i gat:
|
0x0001 | uint(8) | Unbekannt 1 na Toggle bilong Optional 3, 4 | Dis value i gat:
|
0x0002 | uint(8) | Optional 1 | Inap |
0x0003 | uint(8) | Optional 2 | Inap |
0x0004 | uint(8) | Optional 3 | Inap |
0x0005 | uint(8) | Optional 4 | Inap |
Subfrem
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karakter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Pasa | Taitai data | Nama | Tok Pisin |
---|---|---|---|
0x0000 | uint(16) | Bitmap-Id | Em i tokim wanem Bitmap bilong dispela Subframe bilong yusim |
0x0002 | uint(8) | Unbekannt 1 | Em i no save - mi tingim strong, olsem em i wanpela Render-Prioriti (Z-Layer). |
0x0003 | uint(8) | Subframe-Id | Tokim se, moa we subframe mipla stap |
0x0004 | sint(16) | Offset - Horizontal | Oro, we laim long wanem ples insait long frame, subframe bai stap, o olsem wanem planti pixel bitmap bai go long horizontal. |
0x0006 | sint(16) | Offset - Votok | Gives information where inside the frame the subframe should be placed, or how many pixels the bitmap should be moved vertically. |
Nau, mipela inap nau putim wan wan frame, na tupla animetion olsem, mi laik soim long wan bikpela animetion, animetion wantaim index 500, bilong soim.
Animation 500
Animation 500 emonisi, olsem wanem wanpela Plymouth-transporta, wanem i karim ol narakain ore, i ken raus. Dispela em i wanpela long ol feisal anima we i yusim windowing-funktionalit.
Na olsem wanem yumi ken putim olgeta anima i go wanpela.
Sori, i gat wanpela problem yet wantaim long apinun lida,
bikos long dispela hap, bit i no setim long grafik type infomesen.
Here i gat sampela moa, bel isi animet sprite long dispela game:
Ol ius.
Na, em i no gat wan User-Interface bilong dispela game, we i stap long brushed metal luk.
Na tu, em i klia olsem Dynamix i no nidim long mekim nupela roud; dispela i no luksave long ol simpli we ol i yusim ol User32 na GDI32-APIs we i kam long Windows - ol i yusim tu ol resources management bilong User32.
Ol i ken kisim ol samting olsem long program olsem we Angus Johnson i mekim free software, Resource Hacker, o sapos yu no laik yusim Wine long Linux / Mac OS, yu ken yusim wrestool we i stap long icoutils long kisim ol.
File Name | Content |
---|---|
Outpost2.exe | Emi na ikon bilong game, em i soim spacestation long New Terra |
op2shres.dll | Emi gotim piksa bilong control likim olsem border, button, radio button na checkbox, tu em i gotim dialog background, ol piksa bilong story mission text na background graphic bilong main menu |
out2res.dll | Emi gotim in-game window decoration, ikon bilong ordinary na special metal, loading screen, grafiks bilong dialog na narapla cursor graphics, inap long animated wan long game directory |