Outpost 2 skráarsnið · bei.pm
Skjalamyndir sem lýst er á þessari síðu byggja á tæknilegri greiningu á hugverki frá Dynamix, Inc. og Sierra Entertainment.
Hugverkið er nú hluti af Activision Publishing, Inc. / Activision Blizzard, Inc. og er nú í eigu Microsoft Corp..
Upplýsingarnar voru safnaðar með Reverse Engineering og gagnagreiningu í þeim tilgangi að varðveita og tryggja samhæfi við söguleg gögn.
Ekkert var notað af einkareknu eða trúnaðarupplýsingum.
Leikurinn er nú hægt að kaupa sem niðurhal hjá gog.com.
Þessi greinaskemmtun skráir niðurstöður mínar um gagnasnið í rauntíma-strategíuleiknum "Outpost 2: Divided Destiny", sem Sierra gaf út árið 1997 og var þróað af Dynamix.
Frá 1. nóvember 2015 til 14. nóvember 2015 var ég aðallega að rannsaka gögnin úr leiknum - og hvað hægt er að gera við þau.
samkvæmt þeim upplýsingum sem ég hef safnað, hefur Dynamix - líkt og mörg önnur viðskiptaleg fyrirtæki - ekki þróað nokkur gagnasnið sérstaklega fyrir Outpost 2, heldur einnig notað þau í öðrum verkefnum eins og Mechwarrior-seríunni (breytt).
Auk þess er hægt að staðfesta að nýsköpunargildi gagnasniðanna er í raun takmarkað og oft byggt á lengur til staðar hugmyndum úr venjulegum sniðum eins og JFIF og RIFF.
Þar að auki má finna frekari upplýsingar um túlkun töflanna og gagnasniðin undir Hvað er hvað?.
Þau gögn sem hér eru gefin upp eru almennt að skilja sem Little Endian.
Að lokum má segja að afturhönnunin var mjög skemmtileg, jafnvel þó hún sé ekki fullkomin.
Að sjálfsögðu mæli ég líka með að spila leikinn sjálfan, þar sem hann býður upp á áhugaverða leikmechanik.
Inngangur
Þau gagnasnið sem Outpost 2 notar hafa uppbyggingu sem minnir á JFIF / PNG - einstaka gagnablökin hafa alltaf 8 bita fyrirsagnir. Þess vegna sleppi ég því að skrá fyrirsagnirnar á tilgreindum stöðum og skrá aðeins frávik þar.
Sniðið er alltaf eftirfarandi; raunverulegu gagnin eru þá innbyggð í því:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Töfrabitar | Inniheldur upplýsingar um hvað er að vænta í næsta gagnablocki. Þekkt gildi:
|
0x0004 | uint(24) | Block-lengd | Inniheldur upplýsingarnar um hversu stór (í bætum) næsti gagnaflokkur er. Þar er átt við hreina notendagögnin - 8 fyrirsagnarbætin eru ekki innifalin. |
0x0007 | uint(8) | Fánar? | Það er óljóst hvaða tilgangi þessi blokk þjónar nákvæmlega. Í volumunum er þessi gild oft 0x80, en í öðrum skrám oft 0x00. Þetta bendir til þess að um sé að ræða flagg-setningu. |
Hlutir
Volumes eru gögnagámar fyrir leikinn, svipað og skjalasnið eins og Tarball. Að minnsta kosti í Outpost 2 þekkir sniðið aðeins skjal - engar möppur. Líklegt er að hægt væri að herma þetta með viðeigandi skjalanafni.
Ein Volume samanstendur af Volume-fyrirsagninni auk nokkurra Volume blokkra sem samsvara tilteknum skrám.
"Volumes" eru skjalin með endingunni 'vol'
í leikaskránni.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Töfraskeyti | |
0x0004 | uint(24) | Blocklengd | |
0x0007 | uint(8) | Fánar |
Rúmmál fyrirsagnir
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Töfraskeyti | |
0x0004 | uint(24) | Blocklengd | |
0x0007 | uint(8) | Fánar |
Volume hausamurinn inniheldur sjálfur engin notkunargögn.
Hann þjónar aðeins sem gáma.
Þeir Volume strengir ættu að vera fyrsta dagsetningin í Volume hausamurnum; síðan fylgja upplýsingarnar um Volume.
Rúmmál Strengir
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Töfraskeyti | |
0x0004 | uint(24) | Blocklengd | |
0x0007 | uint(8) | Fánar |
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Töfraskeyti | |
0x0004 | uint(24) | Blocklengd | |
0x0007 | uint(8) | Fánar | |
0x0008 | uint(32) | Pökkunarlengd | Gefur til kynna hversu margir bytes af eftirfarandi gögnum eru í raun notagögn. Þau afgangsgögn sem eftir eru í lista yfir volume-strengi virðast greinilega teljast sem úrgangur. Í skrám með síðari dagsetningu eru þessi 'afgangsgögn' 0x00, sem gæti bent til ófullnægjandi í verkfæragáttinni meðan á þróun leiksins stóð, þ.e. að forritari hafi ekki sinnt réttri upphafssetningu buffera fyrr en mjög seint, þar sem það hefur enga áhrif á leikinn hvort gögnin séu upphafssett eða ekki. |
0x000c | uint(8)[] | Skráarnafnaskrá | Þetta er 0-byte lokin listi af skráarnafni sem - að minnsta kosti í þessum gagnaþætti - aðeins gerir ráð fyrir ASCII táknum. Ekki er nauðsynlegt að greina þennan gagnablokk nánar þegar verið er að parse-a gögnin, þar sem í upplýsingum um volume eru bein tilvísanir í forskriftir skráarnafnanna. |
Volume strengjarnir eru lista yfir skráarnafn sem eru innifalin í volume-inu.
Hljóðmagn upplýsingar
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Töfraskeyti | |
0x0004 | uint(24) | Blocklengd | |
0x0007 | uint(8) | Fánar |
Volume-upplýsingarnar innihalda ítarlegri upplýsingar um skrárnar. Þessar upplýsingar eru í vissum skilningi svona eins og FAT-skráning (FAT = File Allocation Table)
Fjöldi skrár kemur fram með því að deila blokkastærð með length á skrárskrám - 14 bætum.
Hver skrárskrá hefur eftirfarandi uppbyggingu:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Skráarnafn-Offset | Gefur til kynna hvar í skráarnafnalistanum (Volume-Strings) skráarheiti skráarinnar finnist. Vísar til byrjun gagnabloksins. |
0x0004 | uint(32) | Skráarsnið | Vísar á hvar í heildar skráarinnihaldinu er skráin staðsett. |
0x0008 | uint(32) | Skjalastærð | Gefur til kynna hversu stór skráin er í bætum. |
0x000c | uint(16) | Fánar? | Virðist gefa frekari upplýsingar um skráarkóðun.
|
Rúmmál blokk
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Töfraskeyti | |
0x0004 | uint(24) | Blocklengd | |
0x0007 | uint(8) | Fánar |
Volume-blokk er í rauninni gáma, sem tekur við skrám. Hann inniheldur aðeins einu sinni til viðbótar - vegna blokkarsniðsins - auka skráarstærðina og síðan koma beint á eftir notendagögnin.
Flísar
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 42 | 4d | 50 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | B | M | P | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Töfrabitar | |
0x0004 | uint(24) | Block-lengd | |
0x0007 | uint(8) | Fánar |
Hér er um að ræða sérstakt bitmap-grafíkerfnisform fyrir Outpost-2.
Þeir ná yfir 13 flísasett, kallaðir "wells" (well0000.bmp
til well0012.bmp
),
sem eru innan rúmsins maps.vol.
Flísasettin / Wells innihalda eftirfarandi:
Skráarnafn | Innihald |
---|---|
well0000.bmp | 32x32px stór blá grafík - fullkomin til að prófa hvort myndahleðslutæki virki |
well0001.bmp | Inniheldur ljós berg, fjallgarða á ljósu bergi og ótal afbrigði af áhrifavöldum á ljósu bergi |
well0002.bmp | Inniheldur ljós-bergs 'Doodads' - þ.e. þætti sem hægt er að setja á ljósu bergi til að brjóta upp landslagið (eða meðvitað sem uppbyggingu, svo sem veggi), þar á meðal gróður |
well0003.bmp | Inniheldur skorpulaga uppbyggingu á ljósu bergi |
well0004.bmp | Inniheldur dökkt berg, fjallgarða á dökku bergi og ótal afbrigði af áhrifavöldum á dökku bergi |
well0005.bmp | Inniheldur dökkt-bergs 'Doodads' - þ.e. þætti sem hægt er að setja á dökku bergi til að brjóta upp landslagið (eða meðvitað sem uppbyggingu, svo sem veggi) |
well0006.bmp | Inniheldur skorpulaga uppbyggingu á dökku bergi, auk tilfærslna milli ljósu og dökku bergs |
well0007.bmp | Inniheldur eldfjallaefni, þar á meðal 4-5 ramma af animation fyrir það |
well0008.bmp | Inniheldur sand og ótal afbrigði af áhrifavöldum á sandi |
well0009.bmp | Inniheldur sand-'Doodads' - þ.e. þætti sem hægt er að setja á sandi til að brjóta upp landslagið (eða meðvitað sem uppbyggingu, svo sem veggi) |
well0010.bmp | Inniheldur 48 tilfærslur frá sandi yfir í ljósu og dökku bergi |
well0011.bmp | Inniheldur pólarkapla kortsins, með dökku bergi sem undirstöðu |
well0012.bmp | Inniheldur pólarkapla kortsins, með ljósu bergi sem undirstöðu |
Það er ráðlagt að framkvæma nákvæmlega, að rendera flísarnar ekki fyrirfram til að geyma þær, þar sem gögnin fyrir dag/nótt hringrásina þurfa enn að vinna - og mjög, mjög mikil gögn myndu safnast.
Flísarnar eru 8bpp grafík með indexaðri palettu á 32x32 pixla upplausn, sem raðað er saman. Í slíkum flísasafni er hins vegar hægt að hafa miklu fleiri
Aðal gáminn samanstendur af 2 sektionum: head
og data
.
Flísar fyrirsagnir
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Töfrabitar | |
0x0004 | uint(24) | Block-lengd | |
0x0007 | uint(8) | Fánar | |
0x0008 | uint(32) | Útgáfa / Fánar? | Þetta gæti verið útgáfutákn fyrir skráarsniðið; í öllum skráum sem ég hef í höndunum var gildið |
0x000c | uint(32) | Breidd (Lárétt upplausn) | Veitir til um hversu breið myndaskráin er (í pixlum). Í öllum Wells í Outpost 2 má búast við að gildi |
0x0010 | uint(32) | Hæð (Lóðrétt upplausn) | Gefurðu til kynna hversu há myndskráin er (í pixlum). Í öllum brunnunum í Outpost 2 má búast við að gildið hér sé |
0x0014 | uint(32) | Litadýpt? | Merking þessa gildis er ókunnug. Þar sem það inniheldur gildið |
0x0018 | uint(32) | Litadýpt 2? | Þýðing þessa gildis er ókunnug. Það gæti verið 'markmið' litadýpt. |
Eftir þessar upplýsingar kemur enn ein palettuskrá í staðlaða RIFF-sniði. Nákvæm sérsniðin er að finna - þar sem palettur koma einnig fram á öðrum stöðum - undir Palettur.
Flísagögn
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Töfrabitar | |
0x0004 | uint(24) | Block-lengd | |
0x0007 | uint(8) | Fánar |
Að lokum fylgja hreinu pixeldatarnir, frá vinstri efst raðað eftir röð niður í hægra horn.
Verdid í gögnunum sem venjulega koma fram sem 8bpp-bitmaps samsvarar vísinum á litnum í litapalettunni.
Leikjaforritið teiknar flísarnar *sennilega* eftir þörfum.
Þetta virðist meðal annars vera vegna dags- og næturhringsins, sem þekkir 32 stig af einstökum flísum. Í því ferli er greinilega 'lítið' dregið frá birtumætinu. Nákvæm gildi hafa ekki verið ákveðin enn, ég vinn út frá útreikningum
v *= (daylight / 48) + 0.25;
með HSV-gögnum pixla, þar sem daylight er gildi á bilinu 0-31 og v er gildi á bilinu 0-1. Auk þess þarf að hafa í huga að á kortinu er einnig til 16 flísar rúm á vinstri og hægri hlið (sem þjónar til ósýnilegs spawns eininga).
Auk þess virðist dags- og næturhringurinn aðeins uppfæra eina súlu á kortinu í hverju leiktímabili.
Hratt dags- og næturhringur lítur því út eins og hér segir:
PRT
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 43 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | C | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Töfrastafir | |
0x0004 | uint(24) | Pallastærð | Gefur, í stað þess að nota hefðbundið blokkform, fjölda paletta sem finna má í þessari skrá - ekki lengd blokkanna í byteum. |
0x0007 | uint(8) | Fánar | Vafalaust, eins og venjulega, fána. Ég þekki hins vegar ekki neina fánar; þar sem allar þær tölur sem ég þekki eru |
Hvað PRT
stendur nákvæmlega fyrir er mér ekki kunnugt; hugsanlegt væri til dæmis 'Palette and Resource Table' - þar sem þessi skrá - að finna sem op2_art.prt í maps.vol - er af þeirri gerð, eða þetta myndi lýsa virkni hennar frekar vel.
Þessi skrá inniheldur lista af paletum, töflu um allar notaðar bitamyndir, allar skilgreiningar á hreyfingum og einnig fjölda óþekktra gagna. Hún fylgir lauslega fyrra skáldformi, þar sem ekki allar skráð gögn fylgja þessu mynstur.
CPAL
-hlutinn (sem líklega stendur fyrir paletuhaldara) umlykur aðeins paletugögnin, með því að tilgreina hversu margar af venjulegu 1052 bita stórum 8-bita paletum eru til staðar.
1052-bita tilgreiningin er ekki talin bindandi, þar sem paletufræðin gæti hugsanlega haft mismunandi paletustærðir. Hún gildir aðeins fyrir gögnin sem Outpost 2 er afhent með.
Eftir paletulistana fylgir strax og án forskriftar, listi yfir bitamyndir; og þar á eftir fylgja hreyfingalistarnir strax.
Báðir eru hver um sig hafnir með uint(32) (eða aftur uint24+uint8 merki?) sem inniheldur fjölda skráðra gagna.
Palettur
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Töfrastafir | |
0x0004 | uint(24) | Pallettulengd | Gefur, í stað venjulegs blokkformats, fjölda pallanna sem finna má í þessari skrá - ekki lengd blokkanna í byte. |
0x0007 | uint(8) | Fána | Vældilega, eins og venjulega, fána. Ég þekki hins vegar enga fána; þar sem allir gildin sem ég þekki samsvara |
Upplýsingarnar um pallana eru mjög auðvelt að lesa.
Þær samanstanda af fyrirsagnarpunkti og gögnunum.
Paletten-haus
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Töfrastafir | |
0x0004 | uint(24) | Pallettulengd | Gefur, í stað venjulegs blokkformats, fjölda pallanna sem finna má í þessari skrá - ekki lengd blokkanna í byte. |
0x0007 | uint(8) | Fána | Vældilega, eins og venjulega, fána. Ég þekki hins vegar enga fána; þar sem allir gildin sem ég þekki samsvara |
0x0008 | uint(32) | Palettenformát útgáfa? | Skilgreinir líklega hvaða útgáfu palettufrformats palettan fylgir. Allar Outpost2-palettur virðast hafa útgáfu |
Palettugögn
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Töfrastafir | |
0x0004 | uint(24) | Block lengd | |
0x0007 | uint(8) | Fána |
Datasamningurinn tekur við einstökum pallettuinnskotum. Fjöldi pallettuinnskota kemur fram úr blokkarlengd / 4.
Einstök innskot hafa einfaldan uppbyggingu eins og hér segir;
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | 04 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(8) | Rauður hluti | Gefur til kynna rauða hluta litanna |
0x0001 | uint(8) | Grænn hluti | Gefur til kynna græna hluta litanna |
0x0002 | uint(8) | Blár þáttur | Gefur til kynna bláa hluta litanna |
0x0003 | uint(8) | Óþekkt - Fánar? | Óljóst er hvað þessi gildi þýðir, þar sem það virðist í grundvallaratriðum vera |
Um palettunum er aðeins að segja, að fyrir palettur sem notaðar eru í animationum gilda eftirfarandi reglur:
- Þriðja liturinn er ALLTAF gegnsær, sama hvað gildi er gefið.
-
Palettueinleggin 1-24 teljast sem leikmannalitur í palettum 1-8.
Hvar litirnir, aðrir en leikmaður 1, koma nákvæmlega frá er mér óljóst.
Ég geri ráð fyrir að hinir litirnir séu hardcoded.
Bitmýndir
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Stilling breidd | Gefur breidd pixeldataskemmtanna í byte - þar sem þær eru aðlagaðar að 4-byte mörkum. Þannig er auðvelt að skiptast á ákveðna myndlínu. Af hverju þessi gild er geymt sérstaklega, þrátt fyrir að það mætti reikna það út, er óljóst. |
0x0004 | uint(32) | Afskrift | Gefur tilkynningu um forskot fyrstu línunnar í bitmap-inni |
0x0008 | uint(32) | Hæð | Gefur hæð myndarinnar í pixlum |
0x000c | uint(32) | Breidd | Gefur breidd myndarinnar í pixlum |
0x0010 | uint(16) | Tegund | Tilgreinir tegund myndarinnar. Hér virðist vera um bitmask að ræða:
|
0x0012 | uint(16) | Paletta | Skilgreinir hvaða palettur á að nota úr PRT-skránni |
Þetta gögnaskipulag PRT-skrárinnar vísar til þess hvernig bitmap-áskriftirnar sem notaðar eru fyrir spriturnar eru byggðar. Þessar bitmap-áskriftir þjóna sem einstök eining, þar sem margar eru settar saman í animasjonsramma fyrir sprit.
Þau ákveðnu myndgögn eru aftur á móti falin í
op2_art.BMP í leikjaskránni.
Hvers vegna þessi bitmap-skrá hefur RIFF-bitmaphaus (að mestu leyti rétt),
er óljóst. Væntanlega notar Outpost 2 kerfis-API til að hlaða grafík,
með því að taka tímabundið við þessum haus og skrifa yfir viðeigandi, breytilegu reitina.
Pixlagögnin eru í BMP-skránni á stöðu Offset + uint32-Offset, sem er að finna í BMP-skránni á adresu 0x000A (RIFF-bitmap-gagnastöð), og samsvarar aftur línulegri uppsetningu frá efst til vinstri niður til hægri.
Einlit 1bpp grafík getur verið teiknuð þannig að litur 0 sé algjörlega gegnsær, og litur 1 verði hálfgegnsætt svart/svartan, þar sem einlita grafík er venjulega notuð fyrir skugga farartækja og bygginga í animasjónunum.
Þannig er hægt að setja saman margar grafík.
Sýndarmyndir
Nú förum við í konungsklassa greina innan Outpost 2 gagnasniðanna:
Þeirra sem snerta á animations.
Animationslistarnir byrja með alheimsheiti sem þjónar fyrst og fremst til gagnavottunar. Því næst koma tilteknar animationsskilgreiningar sem skiptast í 3 stig:
-
Animation
Animation er efsta einingin; hún sýnir animation fyrir einingu, byggingu eða 'partikla-animation' (kometáfall, veður, sprenging) í ákveðnu upphafi. -
Frame
Frame er einstakt mynd í animation. Animation getur innihaldið eitt eða fleiri frames. -
Subframe
Subframe er upplýsingarnar um að ákveðin bitmap eigi að teiknast á ákveðna staðsetningu á frame undir ákveðnum skilyrðum. Frame getur innihaldið eitt eða fleiri subframes.
Því næst koma strax einstakar animationsskilgreiningar.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Fjöldi hreyfimynda | Hversu marga gagnasett af hreyfimyndum eru til |
0x0004 | uint(32) | Fjöldi ramma | Hversu marga ramma ætti að vera til staðar samtals |
0x0008 | uint(32) | Fjöldi undirkafla | Hversu marga undirramma ætti að vera alls til staðar |
0x000c | uint(32) | Fjöldi valkera skráninga | Hversu margir "valfrjálsir færslur" eru til staðar. |
Teiknimynd
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(32) | Óþekkt 1 | Óþekktar upplýsingar |
0x0004 | uint(32) | Afmarkandi kassi: Vinstri | Gefur til kynna vinstri upphafið (í pixlum) á Bounding Box. |
0x0008 | uint(32) | Afmarkandi kassi: Ofan | Tilgreinir efri upphafspunktinn (í pixlum) fyrir Bounding Box. |
0x000c | uint(32) | Bending Box: Breidd | Gefur breiddina (í pixlum) á Bounding Box. |
0x0010 | uint(32) | Afmarkaður kassi: Hæð | Gefur hæðina (í pixlum) á Bounding Box. |
0x0014 | uint(32) | Afstæð: X | Gefur til kynna láréttan miðpunkt teikningarinnar |
0x0018 | uint(32) | Afsláttur: Y | Gefur miðju hreyfingarinnar á lóðrétta ásnum |
0x001c | uint(32) | Óþekkt 2 | Óþekkt upplýsing |
0x0020 | uint(32) | Fjöldi ramma | Gefur til kynna hversu marga animasjónarramma þessi animasjón inniheldur |
0x0024 | uint(32) | Fjöldi glugga | Gefur til kynna hversu mörg gluggum á að nota við teikningu |
Gögnin í efstu lögun, sem tengjast animation, eru fyrst og fremst stjórnunargögn - Boundingbox vísar hér til hnitanna sem umlykur farartækið/bygginguna, þegar það er valið og gefur jafnframt til kynna hvaða svæði á að vera smellanlegt.
Offset-ið ákveður fyrst og fremst "núllpunktinn"; punktinn sem á að reikna á móti eða draga frá innanhúss hnitum. Það má einnig segja á stærðfræðilegan hátt: offset-ið vísar hér til hitnagrunns.
Í Windows er um að ræða, eins og við offset-ið, 4 uint(32)-gildi fyrir hvert Window, sem gefa til kynna svæði sem telst nothæft fyrir einstaka subframes. Utan Windows má ekki, svo framarlega sem það sé ekki tilgreint fyrir bitmap-ið, teikna.
Ramma
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(8) | Undirgrindarfjöldi og Toggle fyrir Valkost 1, 2 | Þessi gildið inniheldur:
|
0x0001 | uint(8) | Óþekkt 1 og Toggle fyrir valfrjálsa 3, 4 | Þessi gildi inniheldur:
|
0x0002 | uint(8) | Valkostur 1 | Óþekkt |
0x0003 | uint(8) | Valkostur 2 | Óþekkt |
0x0004 | uint(8) | Valfrjálst 3 | Óþekkt |
0x0005 | uint(8) | Valfrjálst 4 | Óþekkt |
Undirrammi
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | stafir | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Fyrirkomulag | Gagnategund | Heiti | Skýring |
---|---|---|---|
0x0000 | uint(16) | Bitmap-Id | Vísar til þess hvaða bitmap á að nota fyrir þennan undirkassa |
0x0002 | uint(8) | Óþekkt 1 | Er er ókunnugur - ég geri þó ráð fyrir að þetta snúist um render-prioritets (Z-lag). |
0x0003 | uint(8) | Undirgrindar-ID | Tilgreinir í hvaða undrahöfuð við erum |
0x0004 | sint(16) | Fyrirkomulag - Lárétt | Gefur til kynna hvar innan rammans á að staðsetja undirrammann, eða um hversu marga pixla bitmapinn á að færa til hliðar. |
0x0006 | sint(16) | Offset - Lóðrétt | Gefur til kynna hvar innan rammans subramminni eigi að vera staðsett, eða um hversu marga punkta bitmapið eigi að vera flutt lóðrétt. |
Með þessu getum við nú sameinað einstaka ramma, sem og heilar hreyfimyndir, hér er sýnt sem dæmi á flóknari hreyfimynd, hreyfimyndinni með index 500.
Animation 500
Animation 500 sýnir hvernig Plymouth-flutningabíll, sem er fullur af venjulegu málmi, er tæmdur. Þetta er ein af fáum teiknimyndum sem notar gluggastjórnunar virkni.
Þannig má sameina alla teiknimyndina.
Því miður er enn eitt vandamál með efri hleðslulúguna, þar sem viðkomandi bit í grafíkgerðarupplýsingunum er ekki stillt.
Hér eru nokkrir aðrir, fallega teiknaðar sprit úr leiknum:
Notendaviðmót
Nú vantar enn notendaviðmót leiksins, sem er í burstaðri málm-útliti.
En einnig hér sést að Dynamix þurfti ekki að enduruppgötva hjólið; hér eru ekki bara einfaldlega notaðar User32- og GDI32-API sem Windows býður upp á - sérstaklega er einnig notað auðlindastjórnun frá User32.
Þetta má til dæmis vinna úr með forritum eins og Resource Hacker, sem Angus Johnson þróaði sem fríforrit, eða - ef maður óttast að nota Wine á Linux / Mac OS - með hjálp wrestool sem er innifalið í icoutils.
Skráarnafn | Innihald |
---|---|
Outpost2.exe | Inniheldur aðeins táknið fyrir leikinn, sem sýnir geimstöðina fyrir New Terra |
op2shres.dll | Inniheldur, auk grafík fyrir stjórnþætti eins og umgjörð, takka, valhnappa og valkassa, einnig bakgrunna fyrir samræður, fylgibyrtingar fyrir sögu-missíutexta og aðalmenu bakgrunnsgrafík |
out2res.dll | Inniheldur in-game gluggaskreytingar, tákn fyrir venjulegt og sérstakt málm, hleðsluskjá, grafík fyrir samræður, auk fleiri músartákna, að auki þær hreyfanlegu í leikjaskránni |