Outpost 2 Dátufyrimyndir · bei.pm
Formatini, sum lýst er á hesi síðu, byggja á tekniskum greining av ávøttum iðnaði frá Dynamix, Inc. og Sierra Entertainment.
Ávøtt iðnaður er í dag partur av Activision Publishing, Inc.- / Activision Blizzard, Inc.-eignini og er nú í egn til Microsoft Corp..
Upplýsingarnar eru savnaðar við Reverse Engineering og Datanalysu við tíði at arkivera og tryggja samsvar við historiskar upplýsingar.
Ikki er brúkt aðrar privat ella trúnaðar spesifikatiónir.
Spælið kann nú keypast sum niðurlating á gog.com.
Nei følgjandi greinarrøð dokumenterar míni upplýsingar um dátutypurnar í realtíðar-strategispelet "Outpost 2: Divided Destiny", sum varð útgivið av Sierra í 1997 og utviklað av Dynamix.
Eg havi arbeitt við at greina dátur úr spelet - og hvussu tær verða nýttar - frá 1. november 2015 til 14. november 2015.
Í upplýsingunum, sum eg havi fingið so langt, er at siga, at Dynamix - líkt og so mong onnur kommersiel virksemi - ikki hevur utviklað nakrar dátutypur serliga til Outpost 2, men hevur eisini brúkt tær í aðrar utviklingar, so sum Mechwarrior-seriuna (breytt).
Óansæð hetta er eisini at leggja dent á, at nýskapanarkrafturin í dátutypunum er relativt avmarkaður og ofta byggir á longri staðfestar konceptir úr vanligum typum sum JFIF og RIFF.
Til at túrar um tabellur og dátutypur eru aðrar upplýsingar at finna undir Hvat er hvat?.
Upplýsingarnar her eru í almenna lókinum at skilja sum Little Endian.
Avslutandi má sigast, at Reverse Engineering var ein sera skemtilig uppliving, eisini sjálvt um tað ikki er fullkomið.
Sjálvandi kann eg eisini bara mæla til, at tú spælir spelet sjálvur, tí tað hevur áhugaverdar spælarmeganikkar.
Inngangur
Dati, sum verður brúkt í Outpost 2, hava eina uppbygging, sum minnir um JFIF / PNG - deildirnar hava altíð eina 8 byte hedar. Tí spari eg meg fyri at dokumentera einstøku heðarnar á teimum serligu støðunum og dokumentera bert avvik.
Formatin er altíð hesin; søguligu nyttudaturnar eru so innbýttar í tað:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Magisk Bitar | Inniheldur upplýsingar um, hvat vit kunnu vænta í næsta dátublaði. Kend virði:
|
0x0004 | uint(24) | Block-lengd | Inniheldur upplýsingarnar um, hvussu stór (í Byte) data blokkin er niðri. Her er talan um beinleiðis nýtsludata - 8 header-byte eru ikki við í hesum. |
0x0007 | uint(8) | Føtt? | Hetta er ókent, hvat hesin blokk í veruleikanum nýtist til. Í volumunum er hesin virði ofta 0x80, í øðrum skrám ofta 0x00. Hetta bendir á, at tað er um eitt flagg-set at tala. |
Vøttir
Volumini eru ein dátupakk fyri spelet, líkt einum arkivformat, so sum Tarball. Í minsta lagi í Outpost 2 kennir formatini bert til dátufailar - eingi mappar. Sannlíkt ber til at simulera hetta við at brúka svarandi datunøtt.
Eitt volume består av volume-headerinum og fleiri volume blokkum, sum svara til serligu dátufailarnar.
"Volumes" eru dátufailarnar við endingini 'vol'
í speletmyndini.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Magisk Býtir | |
0x0004 | uint(24) | Block-lengd | |
0x0007 | uint(8) | Føttur |
Vøtturhettur
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Magisk Býtir | |
0x0004 | uint(24) | Block-lengd | |
0x0007 | uint(8) | Føttur |
Volume Header'in einki nýtsluupplýsingar í sær.
Hann tænir bert sum ein íløgukassi.
Fyrsta dátan í Volume Header'in eru Volume Strings; eftir tað koma so Volume-upplýsingarnar.
Vøttur Strengar
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Magisk Býtir | |
0x0004 | uint(24) | Block-lengd | |
0x0007 | uint(8) | Føttur |
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Magisk Býtir | |
0x0004 | uint(24) | Block-lengd | |
0x0007 | uint(8) | Føttur | |
0x0008 | uint(32) | Payload-lengd | Sigur um, hvussu nógv bytes av teimum fylgjandi dátu veruliga eru nýtslu dátur. Restin av dátu í listanum yvir volume-strengar er tilsynar at meta sum skrot. Í skrám við seinni datum eru hesi 'restandi dátu' 0x00, sum kann vísa á bris í verktygjum under utviklingina av spølunum, tað vil siga, at ein utviklari fyrst nógv seint hevur hugsað um rættan inicialisering av buffruni, tí tað hevur ongan ávirkan á spælið, um dátu eru inicialiseraðar ella ikki. |
0x000c | uint(8)[] | Dátunøtt-listi | Hetta snýr seg um eina 0-byte-tíðindalista av filanøttum, sum - í minnsta lagið í hesum dátueindinum - bert væntar ASCII-tekin. Ikki er neyðugt at gera eina nærri útgreining av hesum dátublaði, tá ið vit parsara dátunar, tí í voluminformasjonunum verður beinleiðis vísað til offsets av filanøttunum. |
Í Volume Strings er talan um ein lista av fílunøttum, sum eru við í volume.
Vøttur upplýsingar
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Magisk Býtir | |
0x0004 | uint(24) | Block-lengd | |
0x0007 | uint(8) | Føttur |
Volume-upplýsingarnar taka við fleiri ítøkiligum upplýsingum um skrárnar. Hetta er á ein hátt ein slags FAT-skráseting (FAT = File Allocation Table).
Útrokningin av skránum kemur frá blokkstørrelsen deilt við lengdin av skrársetingunum - 14 byte.
Hver einstaka skrárseting hevur hendan uppbygning:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Dátunøtt-Offset | Vísir til, hvar í listanum av filanøttum (Volume-Strings) filanavnið á filinum finst. Hetta er relatert til byrjanina av nytta data blokkinum. |
0x0004 | uint(32) | Dátuflýtur | Vísir á, hvar í heildar volume-failini tíðindini liggja. |
0x0008 | uint(32) | Fíla-stødd | Vísir, hvussu stór føroyska filurin er í byte. |
0x000c | uint(16) | Føtt? | Vístir seg, at tað eru ávísar álítandi upplýsingar um fíla kodaing.
|
Vøttur Blokkur
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Magisk Býtir | |
0x0004 | uint(24) | Block-lengd | |
0x0007 | uint(8) | Føttur |
Ein volumeblokkur er ein kassi, sum tekur móti skrám. Hann inniheldur bara einaferð til - vegna blokkformatin - avskipaða skrásstøddina, og síðani fylgja beinleiðis brúkaradatar.
Flisar
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 42 | 4d | 50 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | B | M | P | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Trollibytar | |
0x0004 | uint(24) | Block-longd | |
0x0007 | uint(8) | Fjøldur |
Tile-ini eru eitt serligt Bitmap-grafikformat fyri Outpost-2.
Teir strika seg yvir 13 tilesets, kallað "wells" (well0000.bmp
til well0012.bmp
),
sum eru inni í volumini maps.vol.
Tilesets / Wells innihalda hetta:
Fílunavn | Innihald |
---|---|
well0000.bmp | Ein 32x32px stór, blá grafikk - ideal at testa, um egni myndavøtturin virkar |
well0001.bmp | Inniheldur ljósar steinar, fjallabrekku á ljósum steinum og óteljandi variantir av árinum í ljósum steinum |
well0002.bmp | Inniheldur ljósar-steinar-'Doodads' - tað er element, sum kunnu setast til at liva upp (ella medvitað sum struktúr, sum til dømis múrar) á ljósum steinum, eisini vegetation |
well0003.bmp | Inniheldur eina krustuliga struktura á ljósum steinum |
well0004.bmp | Inniheldur myrkar steinar, fjallabrekku á myrkum steinum og óteljandi variantir av árinum í myrkum steinum |
well0005.bmp | Inniheldur myrkar-steinar-'Doodads' - tað er element, sum kunnu setast til at liva upp (ella medvitað sum struktúr, sum til dømis múrar) á myrkum steinum |
well0006.bmp | Inniheldur eina krustuliga struktura á myrkum steinum, so velur millum ljósum og myrkum steinum |
well0007.bmp | Inniheldur lava, við 4-5 rammum animering av sama |
well0008.bmp | Inniheldur sand og óteljandi variantir av árinum í sandi |
well0009.bmp | Inniheldur sand-'Doodads' - tað er element, sum kunnu setast til at liva upp (ella medvitað sum struktúr, sum til dømis múrar) á sandi |
well0010.bmp | Inniheldur 48 velur av sandi til ljósum og myrkum steinum |
well0011.bmp | Inniheldur pólkappurnar á kortinum, við myrkum steinum sum undirlag |
well0012.bmp | Inniheldur pólkappurnar á kortinum, við ljósum steinum sum undirlag |
Hetta er ráðiligt fyri eina nákvæma framleiðslu, at tiles ikki verða rendrað áðrenn, fyri at kunna cache'a teir, tí at dátan fyri dag/náttarlagið má enn verða bearbeidd - og tað vil skapa nógv nógv data.
Tile'ini eru 8bpp-grafikkur við indexeraðari palettu, hvør við 32x32 pikslar uppløtt, sum standa saman. Í einum so framkomnum tileset kunnu tó nógv meira
Høvuðskontainarin er bygdur upp av 2 seksjónum: head
og data
.
Tíggjur Hevur
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Trollibytar | |
0x0004 | uint(24) | Block-longd | |
0x0007 | uint(8) | Fjøldur | |
0x0008 | uint(32) | Versjón / Flagdir? | Hetta kann vera ein útgávuuppgerð av dateformatinum; í øllum mínum fáum skrám stóð her virðið |
0x000c | uint(32) | Breidd (Horisontalur upplýsing) | Vísir, hvussu breitt myndafílan er (í pikslar). Í øllum brunnunum frá Outpost 2 verður her væntað, at gildið |
0x0010 | uint(32) | Hædd (Lóðræt úrslit) | Vísir hvussu høgt myndarfílin er (í pixlum). Við øllum Wells frá Outpost 2 verður her væntað at vera virði |
0x0014 | uint(32) | Litdjúbd? | Merkingin av hesum virði er ókendur. Fordi hann í øllum kannaðu fílar hevur virðið |
0x0018 | uint(32) | Farvadybdi 2? | Merkingin av hesum virði er ókendur. Kanska er talan um eina 'mál'-litdjúpd. |
Afturat hesum upplýsingum fer ein pallfíl við standardiseruðum RIFF-formati. Náttúran av spesifikasjónini kann finnast - tí pallarnir eisini eru aðrastaðni - á Pallir.
Tíðindini um flisarnar
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Trollibytar | |
0x0004 | uint(24) | Block-longd | |
0x0007 | uint(8) | Fjøldur |
Aftur fylgir tað beinleiðis pixeldaturnar, frá vinstru-uppi línuliga móti høgru-neðri.
Datavirðið hjá teimum grafikkunum, sum vanliga eru 8bpp-bitmaps, svarar til indeksin av litinum í litpalettuni.
Spil-Engine'in málar Tiles *kanska* on-demand.
Hetta tykist millum annað at vera tengt til dag-náttarsyklusin, sum hevur 32 stig av einstøkum Tiles. Her verður greitt frá, at eitt 'lítið' verður dregið frá ljósverdi. Nákvæmar virði eru framvegis ikki komin fram, eg arbeiði útfrá útreikningargrunni
v *= (daylight / 48) + 0.25;
við HSV-datum av pikslar, har daylight er eitt virði frá 0-31, og v er eitt virði millum 0-1. Afturat hesum er at taka í mánað, at á kortinum eru enn 16 Tiles til vinstru og høgru (hesi tæna til ósjónliga spawning av einingum).
Afturat hesum tykist dag-náttarsyklusin bert at uppdatera eina kolonu á kortinum hvørja ferð í einum gamecycle.
Ein skundaður dag-náttarsyklus sær tí út soleiðis út:
PRT
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 43 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | C | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Magisku Bitar | |
0x0004 | uint(24) | Palett-longd | Vísti, ímóti vanligu blokkformatinum, taluna av pallum sum finnast í hesi fílu - ikki longdina av blokknum í byte. |
0x0007 | uint(8) | Fjøldar | Vóni, sum vanligt, flagg. Vit kenna tó ikki naka flagg; tí at allar tær vit kenna, svara til |
Hvat PRT
nøyaktiliga stendur fyri, er mær ikki kunnugt; hugsaði um til dømis 'Palette and Resource Table' - tí tað snýr seg um hesa filina - at finna sum op2_art.prt í maps.vol - sum er ein slíkur, ella hetta kundi lýst funktiónina væl.
Henda filin inniheldur eina lista av palettum, eina tabellu yvir allar brúktar bitmap-ar, allar animatiónsdefineringar og enn eina røð av ókendum upplýsingum. Hon fylgir fram til núverandi containerformatinum leyst, tí ikki allar dataskrivi fylgja hesum skemanu.
CPAL
-sektionen (stendur kanska fyri palettukontainer) umfatttur bert palettudatuna, við at vísa, hvussu mong av teimum vanligu 1052 byte stórum 8-bit palettum eru til staðar.
1052-byte angivin verður ikki mettað sum bindandi, tí palettuformatini kunnu potensielt hava ymiskar palettustøddir. Hon er bert galdandi fyri datalagerið, sum Outpost 2 verður útgivin við.
Eftir palettulistarnar fylgir beint og uttan inntøkuheader, longu listin av bitmap-ar; líka so beint fylgja so animatiónslistarnar.
Bæði verða byrjað við einum uint(32) (ella aftur uint24+uint8 flagg?) sum inniheldur talvuna av dataskrivum.
Palettir
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Mágiska Bitar | |
0x0004 | uint(24) | Palettalengd | Vísir, ímóti vanligu blokkarformati, talið av pallum, sum finnast í hesi fil, - ikki longdina av blokkinum í byte. |
0x0007 | uint(8) | Merki | Vónandi, sum vanligt, Flags. Vit kenna tó ikki nakað av Flags; tí at allir vit kenna til eru |
Palettupplýsingarnar eru very einfaldar at lesa.
Teir eru gjørdir av einum header og einum data-segmenti.
Palettuhøvd
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Mágiska Bitar | |
0x0004 | uint(24) | Palettalengd | Vísir, ímóti vanligu blokkarformati, talið av pallum, sum finnast í hesi fil, - ikki longdina av blokkinum í byte. |
0x0007 | uint(8) | Merki | Vónandi, sum vanligt, Flags. Vit kenna tó ikki nakað av Flags; tí at allir vit kenna til eru |
0x0008 | uint(32) | Palettustødd-útgáva? | Definera helst, hvønn palettformat-version paletten fylgir. Allar Outpost2-palettir tykjast at hava version |
Palettadátur
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Mágiska Bitar | |
0x0004 | uint(24) | Block-lengd | |
0x0007 | uint(8) | Merki |
Datasektionen taka ímóti einstøku pallhúsini. Talvan av pallhúsum kemur fram úr blokk-longdini / 4.
Einstøku innlættini hava hesa, einfaldan uppbygning;
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | 04 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(8) | Reyd-komponentur | Vísir á reyða partin av litinum |
0x0001 | uint(8) | Grøna komponentan | Vísir grøna partin av litinum |
0x0002 | uint(8) | Bláa komponenta | Vísir bláu partin av litinum |
0x0003 | uint(8) | Ókendur - Føtt? | Hetta er ógreitt, hvat hesin virðið merkir, tí tað sær út til at vera grundgeiran |
Til palettarnar er bert at siga, at fyri animationir brúktar palettir gilda hesar reglur:
- Fyrsta liturin er ALTID transparent, óansæð hvørjin verdi er givin har.
-
Palett-innskot 1-24 skulu metast sum spælaralitir í palettum 1-8.
Hvar litirnir koma frá uttan frá spælara 1 er mær ógreitt.
Eg ætla, at restin av litunum er hardcoded.
Bitmaps
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Rættað breidd | Vísir breiddina av píkseldatulinjum í byte - tí hetta er stillað til 4-byte mark. Tí er tað skjót at hoppa til eina ávísan myndarlinju. Hví hesin virði verður goymdur særstakliga, hóast hann kundi blivi útroknaður, er ógreitt. |
0x0004 | uint(32) | Offset | Vísir avbrotnið hjá fyrstu línuni í bitmapinum |
0x0008 | uint(32) | Hædd | Vís høgdin á myndini í pikslar |
0x000c | uint(32) | Brett | Vísir breiddina av myndini í pikslar |
0x0010 | uint(16) | Slag | Vísir til slagið av myndini. Her tykist tað at vera um ein bitmasku:
|
0x0012 | uint(16) | Palett | Definerer, hvussu paletten úr PRT-failinum skal brúkast |
Henda data-strukturin í PRT-failinum vísar til, hvussu bitmappirnir, sum verða nýttir til sprites, eru bygdir. Hesir bitmappir eru einliðandi partur, har fleiri verða samansett til ein animaferð í einum sprite.
Teir konkretu mynddata eru afturímóti at finna í
op2_art.BMP í spælinum mappa.
Hví henda bitmap-failin hevur ein (fyrr mest rættan) RIFF-bitmap-header,
er ógreitt. Kanska brúkar Outpost 2 system-API'ir at hlaða grafikkarnar,
har hesin header verður temporært ílagdur og viðkomandi, breytandi felti verða yvirskrivað.
Pixeldaturnar eru í BMP-failinum á tilfari Offset + uint32-Offset, sum er at finna í BMP-failinum á adresu 0x000A (RIFF-bitmap-data offset), til finna - og svarar aftur til línuliga uppsetningin frá vinstra aftur til høgru niðri.
Monokrome 1bpp-grafikkir kunnu verða málaðar, soleiðis at litur 0 er fullkomin transparens, meðan litur 1 er hálvtransparantur svart/grátt, tí monokromu grafikkirnar vanliga verða nýttar til kjøretøyi og bygningaskuggar í animatiónunum.
Hetta ger, at man longu kann seta nógv grafikkir saman.
Animationir
Nú koma vit til kongaklassan í disiplinunum innan Outpost 2 dataformata:
Animationirnar.
Animationslistarnar byrja við einum globalum header, sum fyrst og fremst tænir til dátuverifikation. Eftir fylgja tær konkrettu animationsdefinitiónirnar, sum eru uppbygd í 3 stig:
-
Animation
Ein animation er hægsta instans; hon vísir eina animation av einari eining, einari bygning ella einari 'partikulanimation' (kometaskot, veður, eksplosjón) í einum ávísum útgangsstøðu. -
Frame
Eitt frame er eitt einstakt mynd innan eina animation. Ein animation kann hava eitt ella fleiri frames. -
Subframe
Eitt subframe er upplýsing um, at ein ávís bitmap skal verða málað undir ávísum dømum á eina ávíst støðu av einari frame. Ein frame kann hava eitt ella fleiri subframes.
Eftir hetta koma tær serligu animationsdefinitiónirnar beint eftir.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Fjøldin av animatiónum | Hvussu nógv animatiónsdata eru til staðar |
0x0004 | uint(32) | Fjøldin av rammunum | Hvussu mong rammið á heildina skuldu vera til staðar |
0x0008 | uint(32) | Fjall av underrammum | Hvussu nógv subframes skulu vera til taks í alt? |
0x000c | uint(32) | Tal av valfríum inntøkum | Hvussu nógvar "valfríar innskot" eru til staðar. |
Animatión
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(32) | Ókenda 1 | |
0x0004 | uint(32) | Avmarkingin: Vinstra | Gefur til vøttin byrjan (í pikslar) av Bounding Box. |
0x0008 | uint(32) | Grøttur: Ovan. | Vísir á ovasta byrjan (í pikslar) av Bounding Box. |
0x000c | uint(32) | Støttukassi: Breidd | Vísir breiddina (í pikslar) av Bounding Box. |
0x0010 | uint(32) | Avmarkingarbox: Hædd | Vísir hæddina (í pixlum) av Bounding Box. |
0x0014 | uint(32) | Offset: X | Vísir miðdepilin í hásvøttinum av flettinum |
0x0018 | uint(32) | Offset: Y | Vísir miðpunktin í vertikala av teimum animatiónini |
0x001c | uint(32) | Ókendir 2 | |
0x0020 | uint(32) | Fjøldin av rammunum | Vísir hvussu mong animatiónsrammar eru í hesi animatión |
0x0024 | uint(32) | Fjøldin av vindeygum | Vísir, hvussu nógv vindeyga skulu brúkast tá ið tú teiknar |
Upplýsingarnar í ovasta lagnum, animatiónini, eru fyrst og fremst stjórnarupplýsingar - Boundingbox vísir til koordinaturnar hjá merkinum rundan um bil/bygning, nær tað er valt, og gevur eisini vísing til, hvørjar økir skulu vera klikkbar.
Offsetið avger fyrst og fremst "nullpunktið"; punktin, sum skal leggjast at, ella dragast frá spølini-internu koordinatum. Man kundi eisini sagt matematiskt: offsetið vísir her til koordinatursupruni.
Her eru vindeytini, eins og við offsetinum, 4 uint(32)-virði fyri hvørt vindeyti, som vísa eina øki, sum er brúkt fyri einstakar subframes. Uttan fyri vindeytini, so leingi sum tað er ætlað fyri bitmapina, má ikki málast.
Ramm
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(8) | Undirramma fjøld og Togl fyri Valfrítt 1, 2 | Hesin virðið inniheldur:
|
0x0001 | uint(8) | Ókent 1 og Toggle fyri Valfrí 3, 4 | Hesin virðið inniheldur:
|
0x0002 | uint(8) | Valfrítt 1 | Ókendur |
0x0003 | uint(8) | Valfrí 2 | Ókendur |
0x0004 | uint(8) | Valfrítt 3 | Ókendur |
0x0005 | uint(8) | Valfrítt 4 | Ókendur |
Undirramma
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | tekin | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Data slagi | Heiti | Forklaring |
---|---|---|---|
0x0000 | uint(16) | Bitmap-ID | Vísir til, hvussu Bitmap skal brúkast fyri hesa undirrammu |
0x0002 | uint(8) | Ókenda 1 | Er tað ókunnugt - eg haldi tó sterkt, at hetta snýr seg um ein render-prioritet (Z-lag). |
0x0003 | uint(8) | Subframe-Id | Vístir hvar í subframe vit eru |
0x0004 | sint(16) | Offset - Lóðrætt | Vísir, hvar inni í rammanum undirramman skal setast, ella hvussu nógvum pikslar bitmapin skal flytast lóðrætt. |
0x0006 | sint(16) | Offset - Vertikalt | Gevur upp, hvar innanfyri rammuna undirramman skal setast, ella hvussu nógv pikslar bitmapin skal flytast niður í vøttinum. |
Vit kunnu nú seta saman einstaka frames, so væl sum fullar animationer, her vísast ein dømi av eini meira komplisert animation, animationina við index 500.
Animator 500
Animation 500 vísir, hvussu ein Plymouth-transportør, sum er læddur við vanligum malm, verður leyslagdur. Hetta er ein av fáu animationunum, sum nýtir vinduvirkna.
Soleiðis kann man samanseta alla animationina.
Óheppiliga er tað enn eitt trupulleiki við ovastu lastlúkuna, tí at her
er tað svarandi bit í grafikktypupplýsingunum ikki sett.
Her eru eisini nakrar aðrar, vøttandisliga animeraðar sprites úr spølunum:
Brúkaragrind
Nú manglar enn brúkaragrunnin til spelet, sum er hildin í einum børstaðum metal-útbúgving.
Men eisini her er greitt, at Dynamix ikki mátti uppfinna hjólið aftur; her verða ekki bara beinleiðis nýtt API'ini frá Windows, User32 og GDI32 - serliga verður eisini ressursumanagementið hjá User32 brúkt.
Hetta kann til dømis útvørðast við hjálp av programum sum tað frá Angus Johnson, sum er frítt tilfar, Resource Hacker, ella - um tú skalt brúka Linux / Mac OS og einki ynskir at brúka Wine - við hjálp av wrestool, sum er í icoutils.
Filnavn | Innihald |
---|---|
Outpost2.exe | Inniheldur bert ikonið fyri spelet, sum vísir rúmdarstøðina framman fyri New Terra |
op2shres.dll | Inniheldur umframt grafikk fyri stýringar, so sum umfatningar, knøttir, radioknøttir og avkoyringar, eisini dialog-bakgrundir, fylgismyndir fyri søgu-missiónstekstirnar og bakgrundsgrafikk fyri høvuðsmenuið |
out2res.dll | Inniheldur in-game vindeyrsmálning, ikoni fyri vanligt og serligt metall, lasti-skjá, grafikk fyri dialogar og aðrar músar-grafikkir, viðauka til tær animatorisku í spilsbókini |