Outpost 2 Dǫtrnaformǫt · bei.pm
Þeir skráarsnið, er hér á þessari síðu eru lýst, byggja á tæknilegri greiningu andlegum eignum frá Dynamix, Inc. ok Sierra Entertainment.
Andleg eign er í dag hluti af Activision Publishing, Inc.- / Activision Blizzard, Inc.-eignum ok er nú í eigu Microsoft Corp..
Þessar upplýsingar voru safnað með Öfugri verkfræði ok Gagnaanalysering til að varðveita ok samvirkni við söguleg gögn.
Engar einkaréttarspecificationer eða trúnaðargögn voru notuð.
Leikurinn má nú kaupa á gog.com sem niðurhal.
Þessi greinarkafli skráir mína þekkingu á gagnasniðum í rauntíma-strategíu leiknum "Outpost 2: Divided Destiny", sem var gefinn út af Sierra árið 1997 og þróaður af Dynamix.
Frá 1. nóvember 2015 til 14. nóvember 2015 hef ég aðallega einbeitt mér að greiningu gagna leiksins - og hvað það gerir við þau.
Frá þeim upplýsingum, sem ég hef fengið hingað til, hefur Dynamix - eins og svo mörg viðskiptafyrirtæki - ekki þróað sum gagnasnið sérstaklega fyrir Outpost 2, heldur einnig notað þau í öðrum þróunum eins og Mechwarrior-seríunni (breytt).
Óháð því má einnig staðfesta að nýsköpunargáfa gagnasniðanna er að mestu leyti takmörkuð og oft byggð á eldri hugmyndum úr venjulegum sniðum eins og JFIF og RIFF.
Þar að auki eru frekari upplýsingar um túlkun taflna og gagnasnið að finna undir Hvat er hvat?.
Þau gögn, sem hér eru gefin upp, eru almennt að skilja sem Little Endian.
Að lokum má segja að endurhönnunin hafi verið mjög skemmtileg, jafnvel þó hún sé ekki fullkomin.
Að sjálfsögðu mæli ég einnig með að spila leikinn sjálfan, þar sem hann býður upp á áhugaverðar leikjamekaníkur.
Inngangr
Þat er sem at Outpost 2 nýta gögnformát, hafa eigi líkt JFIF / PNG uppbygging - hverr gögnkubb hefur ávalt 8 byte höfuð. Því spara ek mér at skrá niðr hvert höfuð á viðeigandi sérstökum stöðum, ok skrá ek þar einungis frávik.
Formatit er ávalt svá; hin raunverulega notagögn eru þar ífelld.
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Fǫrðr Bitar | Inniheldr þær upplýsingar um, hvað í næsta gagnaflokk er að vænta. Þekktir virði:
|
0x0004 | uint(24) | Block-lengð | Inniheldr upplýsing um, hve mikill (í byte) er sá gagnablaðr hér á eftir. Þar er átt við hreina notkunargögnin - 8 fyrirsagnarbita eru eigi með í því. |
0x0007 | uint(8) | Fana? | Óvíst er, hvat þat blokkr er til, nákvæmlega. Í volumum er þessi verð oft 0x80, í öðrum skrám oft 0x00. Þat leggur til, at þetta sé flagg-sett. |
Vollr
Við volumin er at um dætaílkrá fyrir leikinn, líkt og í skjalavörsluformi eins og t.d. Tarball. Að minnsta kosti í Outpost 2 þekkir formin aðeins skjal - engin mappa. Vandlega má þó koma í veg fyrir þetta með viðeigandi skjalanöfnum.
Eitt volume samanstendur af volume-hefð og mörgum volume-blokkunum, sem samsvara skjalunum.
"Volumes" eru skjalin með endingu 'vol'
í leikaskránni.
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Mágisk Bitar | |
0x0004 | uint(24) | Block-lengð | |
0x0007 | uint(8) | Flautar |
Rúmshǫfuð
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Mágisk Bitar | |
0x0004 | uint(24) | Block-lengð | |
0x0007 | uint(8) | Flautar |
Volume-hǫfðr inniheldr eigi nytsamligar dǫttur.
Hann þjónar einungis sem hylki.
Fyrsta dǫtt í Volume-hǫfðr skulu vera Volume-strengir; á eftir koma þá Volume-upplýsingar.
Völundr Strengir
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Mágisk Bitar | |
0x0004 | uint(24) | Block-lengð | |
0x0007 | uint(8) | Flautar |
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Mágisk Bitar | |
0x0004 | uint(24) | Block-lengð | |
0x0007 | uint(8) | Flautar | |
0x0008 | uint(32) | Þyngd á afl. | Gefrǫg, hve margir bytes þessara gagna eru í raun nytsamleg gögn. Hin ǫnnur, eftirliggjandi gögn lista yfir volum-strings eru greinilega að teljast sem rusl. Í skrám með síðar dagsetningu eru þessi 'eftirliggjandi gögn' 0x00, er sýnir ófullnægjanir í tólum meðan á þróun leiksins stóð, þ.e.a.s. að einn þróunarmaður sé ekki farið að kippa sér upp við rétta upphafssetningu pufferanna fyrr en seint, þar sem það hefur enga áhrif á leikinn hvort gögnin séu upphafssett eða ekki. |
0x000c | uint(8)[] | Dǫrðr-nafna-listi | Hér er um 0-Byte-tímala lista af skráarnafn, er - a.m.k. í þessum gögnum - aðeins ASCII-stafi vænta. Ekki er nauðsynlegt at greina þessa gagnablokk nánar, því í skráarupplýsingunum er beint vísað til skráarnafnanna. |
Um Volumstrangar er lista yfir skráarnöfn, er innan volumsins eru.
Volumvísindi
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Mágisk Bitar | |
0x0004 | uint(24) | Block-lengð | |
0x0007 | uint(8) | Flautar |
Volum-upplysningar taka til sérhvert dýrmætari upplýsingar um skrár. Þær eru á einhvern hátt eins konar FAT-skrásetning (FAT = Skrásetning á skráarsvæði)
Fjöldi skráa kemur fram úr blokkstærð deilt með lengd skrásetninganna - 14 bítar.
Hver skrásetning hefur hér að segja eftirfarandi uppbyggingu:
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Dátunefn-Offset | Segir hvar á hvílku offset (!) innan nafna lista (Volume-Strings) nafnit á þeiri skrá finnist. Varðar þat upphaf gagnanna bloks. |
0x0004 | uint(32) | Dǫkkvandi-útlǫg | Seggr um hvat offset innan heildar volums-fíla sér stað þessi fíla. |
0x0008 | uint(32) | Skap-stǫrð | Segg, hve mikit filin er í bættum. |
0x000c | uint(16) | Flautar? | Virðist auka upplýsingar um skráar kóðun.
|
Hljóðsæti
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Mágisk Bitar | |
0x0004 | uint(24) | Block-lengð | |
0x0007 | uint(8) | Flautar |
Í volume-block er um kassa, er tekur við skrám. Hann inniheldr einungis enn einu sinni - vegna blockformátins - endurtekin skráarstærð ok síðan fylgja beint notkunargögnin.
Flisar
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 42 | 4d | 50 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | B | M | P | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Þulur einar mágiskar bætur | |
0x0004 | uint(24) | Blokkr-lengð | |
0x0007 | uint(8) | Fjǫlðr |
Í tiles eru sérstakar myndir fyrir Outpost-2,
sem eru búnar til í Bitmap-grafíksformi. Þau teygja sig yfir 13 tileset,
nefnd "brunnar" (well0000.bmp
til well0012.bmp
),
sem eru innan rúmsins maps.vol.
Hér innihalda tileset / brunnar eftirfarandi:
Filenamn | Innhald |
---|---|
well0000.bmp | Ein 32x32px stór, blár grafík - ætlað sem próf, ef eigin myndarhlutaverk virkar |
well0001.bmp | Inniheldur ljós stein, fjallagarða á ljósum steini og ótal afbrigði af árekstrarkrötum í ljósum steini |
well0002.bmp | Inniheldur ljós-steins-'Doodads' - þ.e. þættir, sem má setja til að létta (eða meðvituð sem uppbyggingu, eins og múrar) á ljósum steini, þar á meðal gróður |
well0003.bmp | Inniheldur skorpulegan uppbyggingu á ljósum steini |
well0004.bmp | Inniheldur dökkan stein, fjallagarða á dökku steini og ótal afbrigði af árekstrarkrötum í dökku steini |
well0005.bmp | Inniheldur dökkan-steins-'Doodads' - þ.e. þættir, sem má setja til að létta (eða meðvituð sem uppbyggingu, eins og múrar) á dökku steini |
well0006.bmp | Inniheldur skorpulegan uppbyggingu á dökku steini, sem og yfirfærslur milli ljóss og dökks steins |
well0007.bmp | Inniheldur hraun, þar á meðal 4-5 rammi af hreyfingu þeirra |
well0008.bmp | Inniheldur sand og ótal afbrigði af árekstrarkrötum í sand |
well0009.bmp | Inniheldur sand-'Doodads' - þ.e. þættir, sem má setja til að létta (eða meðvituð sem uppbyggingu, eins og múrar) á sand |
well0010.bmp | Inniheldur 48 yfirfærslur frá sandi til ljós og dökk steins |
well0011.bmp | Inniheldur pólarkappann á kortinu, með dökku steini sem undirlag |
well0012.bmp | Inniheldur pólarkappann á kortinu, með ljósu steini sem undirlag |
Það er ráðlegt fyrir nákvæma framkvæmd, at ekki sé rendrað flísirnar fyrirfram til at geyma þær, því at gögnin fyrir dag/nótt-hringrásina verða enn unnin - ok mjög, mjög mörg gögn munu safnast.
Flísirnar eru 8bpp-grafíkur með lýsandi palettu á 32x32 pixla upplausn, er skipað er í röð. Í slíkum flísasafni getur þó miklu fleiri
Aðal-ílátit samanstendur af 2 hlutum: head
ok data
.
Flokkunar Hǫfðingr
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Þulur einar mágiskar bætur | |
0x0004 | uint(24) | Blokkr-lengð | |
0x0007 | uint(8) | Fjǫlðr | |
0x0008 | uint(32) | Útgáfa / Fáni? | Hér má vera um breytivísu á skráarformi að ræða; í öllum þeim skráum, er mér liggja fyrir, var hér gildið |
0x000c | uint(32) | Breiða (Horisontal fynning) | Segir hveim breidd myndarfile er (í pixlum). Við allar vötn í Outpost 2 mun hér vera vænt um gildið |
0x0010 | uint(32) | Hægr (Lóðrétt útlit) | Segg þat, hve há er myndar-failit (í pixlum). Í öllum Wells af Outpost 2 mun hér vera væntaðr verð |
0x0014 | uint(32) | Fjalla dýpi? | Þat merki þessa verðs er ókunnugt. Því at hann er í öllum prufum skjalda, er verð |
0x0018 | uint(32) | Fjǫrr litra dýpt 2? | Þat merki þessa vits er ókunnugt. Vera má að þat sé 'mark'-litdýpt. |
Eftir þessum upplýsingum fer fram enn ein palettuskjal í staðlaðri RIFF-formi. Nákvæm lýsing finnst - þar sem palettur koma einnig fram annars staðar - undir Palettin.
Þætlir Datan
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Þulur einar mágiskar bætur | |
0x0004 | uint(24) | Blokkr-lengð | |
0x0007 | uint(8) | Fjǫlðr |
Í síðasta lagi fylgja nú þegar berir pixeldatarnir, frá vinstri-upp til hægri-neðri, línu fyrir línu.
Þegar gildi gagna er fyrir þær grafíkur sem venjulega eru 8bpp-bitmapar, samsvarar það vísitölunni á litnum í litapalettunni.
Leik-mátið teiknar flöturnar *útlitandi* á viðeigandi tíma.
Ventir þetta meðal annars af sólar- og myrkvacyklinum, sem þekkir 32 stig af einstökum flötum. Þar er augljóslega dregið 'lítið' frá ljósagildinu. Nákvæmt gildi hefur ekki verið fundið, ekk er að vinna á útreikningagrunni
v *= (daylight / 48) + 0.25;
með HSV-gögnum pixla, þar sem daylight er gildi frá 0-31 og v er gildi á milli 0-1. Auk þess er að athuga að á kortinu er í hvoru lagi til 16 flötum til vinstri og hægri (það þjónar til ósýnilegar spawning eininga) til staðar.
Auk þess virðist sólar- og myrkvacyklið uppfæra aðeins eina súlu kortsins á hverju leikhring.
Hraðari sólar- og myrkvacyklið lítur því út svona:
PRT
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 43 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | C | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Álfar Stafr | |
0x0004 | uint(24) | Palett-lengd | Gefrǫngum, móti venjulegu blokkformati, fjǫlð palettna er at finna í þessari skrá - eigi lengd bloksins í byte. |
0x0007 | uint(8) | Fǫlkr | Vera, sem venja er, merki. Ek veit þó eigi um merki; þar sem öll verð, er ek veit um, eru |
Hva PRT
nøyaktig står for, er meg ukjent; det er tenkelig at det kunne være 'Palette and Resource Table' - da denne filen - funnet som op2_art.prt i maps.vol - er av en slik art, eller dette ville beskrive funksjonen godt.
Denne fil inneholder en liste over paletter, en tabell over alle brukte bitmaps, alle animasjonsdefinisjoner, og en rekke ukjente data. Den følger det tidligere containerformatet løst, da ikke alle dataopptegnelser følger dette skjemaet.
CPAL
-seksjonen (som sannsynligvis står for palett-container) omslutter bare palettdataene, idet den angir hvor mange av de vanligvis 1052 byte store 8-bit palettene som finnes.
1052-byte angivelsen er ikke å anse som bindende, da palettformatet potensielt kan ha forskjellige palettstørrelser. Den gjelder kun for datainnholdet som Outpost 2 leveres med.
Etter palettlistene følger straks, uten innledende overskrift, listen over bitmaps; likeledes følger deretter animasjonslistene umiddelbart.
Begge innledes med en uint(32) (eller igjen uint24+uint8 flagg?) som inneholder antall dataopptegnelser.
Palettin
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Töfru Bytear | |
0x0004 | uint(24) | Paletten-lengð | Gef, í mót venjulegri blokkformi, fjölda paletta í þessari skrá - eigi lengd blocks í byte. |
0x0007 | uint(8) | Flautar | Víst, sem venjulega, merki. En mér eru engin merki kunn; þar sem öll þau gildi, er ég veit um, eru |
Palettenupplýsingarnar eru mjög auðveldar að lesa.
Þær samanstendur af einum fyrirsagn og einu gagnaþætti.
Paletta-Hofði
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Töfru Bytear | |
0x0004 | uint(24) | Paletten-lengð | Gef, í mót venjulegri blokkformi, fjölda paletta í þessari skrá - eigi lengd blocks í byte. |
0x0007 | uint(8) | Flautar | Víst, sem venjulega, merki. En mér eru engin merki kunn; þar sem öll þau gildi, er ég veit um, eru |
0x0008 | uint(32) | Palettaformát útgáfa? | Veit sér líklega, hvérr palettufræði-tími paletta fylgir. Allar Outpost2-palettur virðast hafa útgáfu |
Palettar-Datö
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Töfru Bytear | |
0x0004 | uint(24) | Block-lengð | |
0x0007 | uint(8) | Flautar |
Þá datasektionen taka einstaka paletta-einträgi. Fjöldi paletta-einträgi er af leiðandi úr blokk-lengdu / 4.
Einstaka einträgi hafa þá eftirfarandi, einfaldan bygging;
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | 04 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(8) | Rauðr hluti | Gefrǫngr rauðan hlutann í litnum |
0x0001 | uint(8) | Grønnrǫnd | Gefrǫðr grœnna hluta litanna |
0x0002 | uint(8) | Blá-koma | Gefrǫðr bláa hlutr litanna |
0x0003 | uint(8) | Óþekkr - Fágar? | Þat er óljóst, hvat þessar verðr þýða, því at hann sýnist grundvallar |
Um palettarnar er enn að segja, at palettar er nota í animasjona fylgja þessar reglur:
- Fyrsta litur er ALLTAF gegnsær, sama hverjar tölur eru þar settar.
-
Palettar-eintr 1-24 eru í palettum 1-8 taldar sem leikmannalitur.
Hvar litirnir koma frá, nema leikmaður 1, er mér ókunnugt.
ég gruna að hinir litirnir séu harðkóðaðir.
Bitmǫrk
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Árviðr breiða | Gefrøt breidd pixeldata-lína í byte - því at þær eru á 4-byte mörkum. Svo er skjótt mögulegt at springa til ákveðinnar myndlínu. Hví þessi verð er sértaka geymt, þó at það gæti verið reiknað, er óljóst. |
0x0004 | uint(32) | Offset | Gefrǫðr um þat hvar fyrsta lína í bitmap er staðsett. |
0x0008 | uint(32) | Hǫgðr | Gefrǫgðu hæð myndarinnar í pikslar |
0x000c | uint(32) | Breiða | Gefræðir breidd myndar í pikslar |
0x0010 | uint(16) | Þýðing | Giv þat slǫg myndarinnar. Hér virðast vera um bitmaska at ræða:
|
0x0012 | uint(16) | Paletta | Skilgrynir, hverja paletta skal nota úr PRT-skrá. |
Þessi gagnaskipan PRT-skrár segir frá, hvat bitmýndurnar, sem notaðar eru fyrir spriturnar, eru uppbyggðar. Þessar bitmýndur þjóna sem einstakur hluti, þar sem margar eru samanlagðar í eina hreyfingaramma spritu.
Þau skýru myndagögnin leynast aftur á móti í op2_art.BMP í leikskránni.
Hvers vegna þessi bitmýndarskrá hefur RIFF-bitmýndarhöfuð (sem er að mestu leyti rétt) er óljóst. Væntanlega notar Outpost 2 kerfis-API til að hlaða grafíkum, með því að þetta höfuð er tímabundið tekið og viðeigandi breytilegu sviðin eru skrifuð yfir.
Pixeldatarnir eru í BMP-skránni á staðsetningu Offset + uint32-Offset, sem finna má í BMP-skránni á heimilisfangi 0x000A (RIFF-bitmýndar- gögn offset), og samsvara aftur lagskiptingu frá efst til vinstri niður til hægri.
Monochrome 1bpp-grafík geta verið teiknaðar þannig að litur 0 sé fullkomin gegnsæi, en litur 1 sé hálfgegnsætt svart/grátt, þar sem monochrom-grafík eru venjulega notaðar fyrir skugga farartækja og bygginga í hreyfingunum.
Með því má setja saman margar grafík.
Álfrunnir
Nú koma vér at konungaskipum þeira greina innan Outpost 2 gagnaformata:
Þá animatiónum.
Þær animatiónalistar byrja með alheims höfuð, er aðallega þjónar gagna staðfestingu. Eftir þetta fylgja þær sértæku animatiónar skýringar, er skiptast í 3 stig:
-
Animatión
Ein animatión er æðsta veran; hún sýnir animatión á einingu, byggingu eða 'örvunar-animatión' (stjörnuárekstur, veður, sprengja) í ákveðnu upphafsástandi. -
Rammi
Einn rammi er einstakt mynd innan animatiónar. Ein animatión getur innihafað einn eða fleiri ramma. -
Undirrammi
Einn undirrammi er upplýsing um, að ákveðin bitmap eigi að teiknast undir ákveðnum skilyrðum á ákveðna staðsetningu rammans. Ein rammi getur innihafað einn eða fleiri undirramma.
Síðan fylgja nú strax þær einstöku animatiónarskýringar.
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Fjöldi hreyfinga | Hversu margar hreyfingarfréttir eru til? |
0x0004 | uint(32) | Fjöldi ramma | Hversu marga ramma skulu vera til staðar heildar? |
0x0008 | uint(32) | Ár subrammanna | Hversu mörg undirrammar skulu vera til staðar? |
0x000c | uint(32) | Tala af valkosti skráningar | Hversu margir "valfríðir skráningar" eru til staðar. |
Hreyfing
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(32) | Ókunnigr 1 | Ókunnug rǫk |
0x0004 | uint(32) | Gǫrð kassa: Vinstri | Gefrǫngar þann vinstri upphaf (í pixlum) af Bounding Box. |
0x0008 | uint(32) | Búnding kassi: Ofan | Skýrir efri byrjun (í pixlum) á Bounding Box. |
0x000c | uint(32) | Búnding Bókka: Breiða | Gefrǫð breidd (í piksilum) Bounding Box segir. |
0x0010 | uint(32) | Baugrǫnd: Hǫgð | Gefrǫngr hæð (í pixelum) Bounding Box segir. |
0x0014 | uint(32) | Offset: X | Gefrǫngar þann hórizontala miðpunkt á animasjóni |
0x0018 | uint(32) | Offset: Y | Gefrǫngina miðja hreyfingarinnar |
0x001c | uint(32) | Óþekkt 2 | Ókunnig upplýsing |
0x0020 | uint(32) | Fjöldi ramma | Segir hveim mörgum hreyfiframum sé í þessari hreyfingu innihald |
0x0024 | uint(32) | Fjǫlda glugganna | Segjum hve margir gluggar skulu nýta við teikning. |
Þau gögn hinna efstu laga, hinna hreyfingu, eru fyrst og fremst stjórngögn - Boundingbox merkir hér hnit merkingarinnar um farartæki/byggingu, er þau eru valin og gefur einnig til kynna, hvaða svæði skal vera smellanlegt.
Offsetið ákvarðar fyrst og fremst "nullpunktinn"; punktinn, sem skal á reikna eða draga frá innanhúss hnitum. Maður má einnig segja á stærðfræði máta: offsetið merkir hér hnitaupptök.
Þegar kemur að Windows, þá eru þau, líkt og með offsetið, hver um sig (fyrir hvert Window) 4 uint(32)-gildi, sem gefa til kynna svæði, sem telst nota til einstakra undirramma. Utan Windows má, svo framarlega sem það sé fyrir bitmapið tilgreint, ekki teikna.
Rammi
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(8) | Undirrammantal og Kveikja fyrir Valfrjáls 1, 2 | Þessi verðr inniheldr:
|
0x0001 | uint(8) | Óþekkr 1 ok Kveikja fyrir Valfritt 3, 4 | Þessi verðr inniheldr:
|
0x0002 | uint(8) | Valfríðr 1 | Ókunnigr |
0x0003 | uint(8) | Valfríðr 2 | Ókunnigr |
0x0004 | uint(8) | Valfríðr 3 | Ókunnigr |
0x0005 | uint(8) | Valfrí 4 | Ókunnigr |
Undirramma
Aðr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ᚲᚺᚨᚱ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᚢᚺᚦᚢᚦ (Offset) | Þýðingardróttur | Nafn | Forkunnr |
---|---|---|---|
0x0000 | uint(16) | Bitmap-Id | Segg, hvaða bitmap skal nyttast fyrir þenna subframe |
0x0002 | uint(8) | Ókunnigr 1 | Er er óvíst - en ek hygg að þetta sé um render-prióritet (Z-lag) at ræða. |
0x0003 | uint(8) | Subframe-Id | Segðu í hvílíkum undirramma vér erum |
0x0004 | sint(16) | Offset - Hórisontall | Seggir hvat innan ramma subrammin skal vera sett, eða hvé margir pixlar bitkortið skal hreyfast á víðvøtt. |
0x0006 | sint(16) | Offset - Lóðrétt | Segg hvað staða innan rammsins subramminn á að vera, eða hve mörgum pixlum bitmapin á að hreyfast lóðrétt. |
Þannig getum vér nú sett saman einstök ramma, sem og heilar hreyfingar, hér sýnt í fordæmi á flóknari hreyfingu, hreyfingunni með vísitölu 500, sýnd.
Hreyfing 500
Animation 500 sýnir, hvat Plymouth-flutningr, er með venjulegu járni hlaðinn, er losaðr. Þat er einn af fáum animations, er nýta windowing-funktionalitet.
Ok svá má samansetja alla animationina.
Óheppilegt er, at enn er vandamál með efri hlaðglugga, því at hér er
viðkomandi bit ekki sett í grafík-týpu-upplýsingunum.
Hér eru fleiri, fallega animeraðir sprites úr leiknum:
Notandi-rás
Nú vantar enn notanda-flokkið í leikinn, er það í burstað málmur-útliti.
En hér sést einnig, að Dynamix þurfti ekki að enduruppgötva hjólið; hér eru ekki aðeins notaðar einfaldlega þær sem Windows veitir með User32- og GDI32-API-um - sérstaklega er einnig notað auðlindastjórnun frá User32.
Þessar má t.d. draga út með forritum eins og því sem Angus Johnson þróaði sem frítt forrit, Resource Hacker, eða - ef maður forðast notkun Wine undir Linux / Mac OS - með hjálp á icoutils sem inniheldur wrestool.
Skaldsnafn | Snið |
---|---|
Outpost2.exe | Inniheldr einungis tákn leiksins, er sýnir geimstöðina fyrir New Terra |
op2shres.dll | Inniheldr grafíkar fyrir stýripunkta eins og ummálar, takkar, útvarpstakka og kassa, líka víðtæk bakgrunnar fyrir samtöl, fylgibildir fyrir söguna og aðalvalmyndarbakgrunnsgrafik |
out2res.dll | Inniheldr leikja-gluggaskreytingar, tákn fyrir venjulegt og sérstöku málm, hleðsla-skjár, grafíkar fyrir samtöl og fleiri músartákn, að auki hreyfanleg í leiksniðinu |