Outpost 2 Àwọn fọ́ọ̀màtì fáìlì · bei.pm

Iwe yii ni a ṣe itumọ laifọwọyi nipasẹ OpenAI GPT-4o Mini.

Àwọn fò́rmat fáìlì tí a ṣàpèjúwe nínú ojú ẹ̀yà yìí jẹ́ ti àyẹ̀wò imọ́ ẹrọ ti ẹ̀tọ́ ọkàn ti Dynamix, Inc. àti Sierra Entertainment.
Ẹ̀tọ́ ọkàn náà jẹ́ apá ti Activision Publishing, Inc.- / Activision Blizzard, Inc.-ìṣàkóso àti pé ó wà lọwọ Microsoft Corp. ní báyìí.

Àlàyé náà ni a kó jọ nípasẹ̀ Reverse Engineering àti Datenanalyse fún ìdí ìkànsí àti ìfọwọ́sowọpọ̀ pẹ̀lú àwọn ìtàn ìmúlò.
Àwọn àlàyé tó jẹ́ ti ara ẹni tàbí àkọsílẹ̀ tó jẹ́ ìkọ̀kọ́ kò ní lo.

Ètò ìdárayá náà lè jẹ́ ra ní gog.com gẹ́gẹ́ bí ìkó àtòkọ́.

Àwòrán ìṣere

Irọrùn àtẹle yìí n ṣe àkóónú ìmọ̀ mi nípa àwọn àkóónú data ninu ere-ìmọ̀ràn àkópọ "Outpost 2: Divided Destiny", tó jẹ́ pé a tẹ̀jáde ní ọdún 1997 nipasẹ Sierra àti pé Dynamix ni ó dá a sílẹ̀.

Mo ti n ṣiṣẹ́ lórí àyẹ̀wò data ere yìí - àti ohun tí ó ṣe pẹ̀lú rẹ̀ - láti ọjọ́ 01 oṣù kọkànlá 2015 sí 14 oṣù kọkànlá 2015.

Gẹ́gẹ́ bí ìtàn tí mo ti ní, Dynamix - bíi ọ̀pọ̀ àwọn ilé-iṣẹ́ tó jẹ́ ti ẹ̀rọ - kò dá àwọn àkóónú data pàtó fún Outpost 2 nikan, ṣùgbọ́n tún lo wọ́n ninu àwọn ìdàgbàsókè míì gẹ́gẹ́ bí ẹ̀ka Mechwarrior (tí a ṣe àtúnṣe).
Kò sí ìdí kankan tó fi jẹ́ pé a lè sọ pé agbára ìmúdàgba ti àwọn àkóónú data ní àkókò yìí dà lórí àwọn ìmọ̀ tó ti pẹ́ jù lọ, gẹ́gẹ́ bí JFIF àti RIFF.

Fún ìtumọ̀ àwọn tábìlì àti àwọn àkóónú data, àwọn ìtàn míì wà ní Kini kini?.
Àwọn data tí a sọ yìí jẹ́ àkọlé gẹ́gẹ́ bí Little Endian.

Níparí, a lè sọ pé iṣé àtúnṣe ẹ̀rọ yìí jẹ́ igbadun pẹ̀lú, bó tilẹ̀ jẹ́ pé kò péye.
Nítorí náà, mo tún ní láti ṣàkóso pé kí ẹ jẹ́ kí ẹ ṣere ere yìí fúnra yín, torí pé ó ní àwọn ìlànà ìṣere tó ní ìmúlò.

Ifihan

Àwọn àkópọ̀ dókítà tí Outpost 2 lò ni àtúnṣe tó dá lórí JFIF / PNG - àwọn àkópọ̀ dókítà kọọkan ni àkópọ̀ 8 Byte Header pẹ̀lú. Nítorí náà, mo máa fipá pamọ́ láti kọ àwọn header kọọkan ní àwọn ibi tó yẹ, mo sì máa kọ́kọ́ méjèèjì níbẹ̀.

Àkópọ̀ náà jẹ́ tẹ́lẹ̀; àwọn dókítà ìlò gidi ni a fi sínú rẹ:

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Iye Imọlẹ

O ni alaye nipa ohun ti a le reti ninu data block to n bọ.

Awọn iye ti a mọ:

  • 0x204C4F56 ('VOL '):
    Iwọn
  • 0x686C6F76 ('VOLH'):
    Iwọn-Header
  • 0x736C6F76 ('VOLS'):
    Iwọn-Strings
  • 0x696C6F76 ('VOLI'):
    Alaye-Iwọn
  • 0x4B4C4256 ('BLCK'):
    Block-Iwọn
  • 0x504D4250 ('PBMP'):
    Data-Grafiki
  • 0x4C415050 ('PPAL'):
    Paleti awọ
  • 0x4C415043 ('CPAL'):
    Apoti paleti awọ
  • 0x64616568 ('head'):
    Header
  • 0x61746164 ('data'):
    Data to wulo
0x0004 uint(24) Iwọn bloku

O ni alaye nipa bi iwọn (ni Byte) ti data block ti nbọ ṣe to.

Níbi, a n sọrọ nipa awọn data to wulo nikan - awọn 8 Header-Byte ko si ninu rẹ.

0x0007 uint(8) Awọn asia?

Ko si nkan ti a mọ, ohun ti apakan yi n ṣe gangan.

Ni awọn iwọn, iye yii maa n jẹ 0x80, ninu awọn faili miiran, maa n jẹ 0x00. Eyi tọka si pe o jẹ eto asia kan.

Iwọn

Ni awọn Volumes, o jẹ apoti data fun ere, ti o jọra si fọọmu ibi ipamọ bi apẹẹrẹ, Tarball. Ní kéré jùlọ ní Outpost 2, fọọmu naa mọ̀ọ́mọ́ awọn faili nikan - ko si awọn folda. Ó ṣee ṣe pé a lè ṣe àfihàn àwọn wọ̀nyí pẹ̀lú orúkọ faili tó yẹ.

Volume kan ni àpapọ̀ láti ọ̀dọ̀ Volume-Header àti diẹ ninu awọn Volume Blocks, ti o baamu pẹlu awọn faili gangan.

"Volumes" ni awọn faili pẹlu itẹsiwaju 'vol' ninu itọsọna ere.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Iwọn Ọgbọn
0x0004 uint(24) Iwọn-Block
0x0007 uint(8) Àwò ìkànsí

Orukọ Iwọle

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Iwọn Ọgbọn
0x0004 uint(24) Iwọn-Block
0x0007 uint(8) Àwò ìkànsí

Àkọsílẹ̀ Volume kò ní àwọn ìkànsí data kankan.
O kan jẹ́ àpo.

Gẹ́gẹ́ bí ọjọ́ àkọ́kọ́ nínú Àkọsílẹ̀ Volume, àwọn Strings Volume yẹ kí ó wà; lẹ́yìn náà ni àwọn alaye Volume á tẹlé.

Awọn Ọrọ Iwọn

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Iwọn Ọgbọn
0x0004 uint(24) Iwọn-Block
0x0007 uint(8) Àwò ìkànsí
Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Iwọn Ọgbọn
0x0004 uint(24) Iwọn-Block
0x0007 uint(8) Àwò ìkànsí
0x0008 uint(32) Iwọn ẹru

Ṣe afihan iye awọn bytes ti awọn data wọnyi jẹ gangan awọn data ti a lo.

Awọn data to ku ti atokọ awọn okun iwọn jẹ kedere bi efo lati ka.

Ni awọn faili pẹlu ọjọ ti o pẹ, awọn 'data to ku' wọnyi jẹ 0x00, eyiti o le tọka si awọn ailagbara pẹlu irinṣẹ nigba idagbasoke ere naa, ni ọrọ miiran, pe oludasilẹ kan ko ṣe akiyesi iṣeto to pe ti awọn buffers titi di igba pipẹ, nitori ko ni ipa lori ere naa boya awọn data ti wa ni iṣeto tabi rara.

0x000c uint(8)[] Akojọ orukọ faili

Eyi jẹ akojọ awọn orukọ faili ti a ti parí ni 0-byte, ti o - o kere ju ni ẹya data ti a nṣakiyesi - ni itumo pe o n reti awọn ohun kikọ ASCII nikan.

Ko si dandan lati ṣe itupalẹ bulọọku data yii ni pẹkipẹki nigba ti a ba n ṣawari data, nitori ni awọn alaye Volume, awọn offset ti awọn orukọ faili ni a tọka taara.

Nípa àwọn Volume Strings, ó jẹ́ àtòjọ àwọn orúkọ fáìlì, tí ó wà nínú Volume yìí.

Alaye Iwọn

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Iwọn Ọgbọn
0x0004 uint(24) Iwọn-Block
0x0007 uint(8) Àwò ìkànsí

Alaye Volume naa gba alaye to daju nipa awọn faili. Eyi jẹ iru irufẹ akọsilẹ FAT (FAT = File Allocation Table).

Iye awọn faili naa jẹ ẹyọkan ti iwọn bulọọki pin nipasẹ iwọn awọn akọsilẹ itọsọna - 14 Byte.

Awọn akọsilẹ itọsọna kọọkan ni eto atẹle:

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Orukọ faili-Offset

Fihan ibi ti orukọ faili naa wa ni akojọ orukọ faili (Volume-Strings) ni offset (!) kan.

O ni ibatan si ibẹrẹ ti bulọọku data ti a n lo.

0x0004 uint(32) Ipo faili

Ṣe afihan ibi ti faili naa wa laarin gbogbo faili iwọn.

0x0008 uint(32) Iwọn faili

Fihan bi iwọn faili ṣe to ni Byte.

0x000c uint(16) Àwọn asia?

O dabi pe o ni alaye afikun nipa ikọkọ faili.

  • 0x03 ti wa ni ṣeto, nigbati faili naa ba ti dapọ. Nibi, o dabi pe igi Huffmann ni a lo.
  • 0x80 dabi pe o wa ni ṣeto ni gbogbo igba.

Ẹ̀ka Iwọn

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Iwọn Ọgbọn
0x0004 uint(24) Iwọn-Block
0x0007 uint(8) Àwò ìkànsí

Nípa àkópọ̀ volumu, ó jẹ́ apoti kan, ẹyọ̀nà ti o gba àwọn fáìlì. Ó ní àkópọ̀ - nítorí irú àkópọ̀ yẹn - àkópọ̀ iwọn fáìlì náà ati lẹ́yìn náà ni àwọn data tó n ṣiṣẹ́ yẹn.

Àwọ̀n àgbá.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 50 42 4d 50 -- -- -- -- -- -- -- -- -- -- -- -- P B M P . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Iwọn Aṣẹ́gẹ́dẹ́
0x0004 uint(24) Iwọn blọku
0x0007 uint(8) Àwọ̀ àjàrà

Àwọn Tiles jẹ́ fọ́ọ̀mù àwòrán Bitmap pato fún Outpost-2. Wọ́n gbooro sí i lẹ́ẹ̀kan 13 Tilesets, "wells" ni a npe ni (well0000.bmpwell0012.bmp), ẹ̀yí tí ó wà nínú àkópọ maps.vol.

Nígbà náà, àwọn Tilesets / Wells ní àwọn nkan tó wà nínú rẹ:

Orukọ faili Akopọ
well0000.bmp Àwòrán bulu tó tó 32x32px - dára gẹ́gẹ́ bí ayẹwo, bí olùkó àwòrán rẹ bá ṣiṣẹ́
well0001.bmp Ni akopọ, àwọn irú ẹ̀rọ tó rọrùn, àwọn òke-nla lórí irú ẹ̀rọ tó rọrùn àti oríṣìí ẹ̀dá tí ó pọ̀ jù lọ ti àwọn ibè kó-láti-irú ẹ̀rọ tó rọrùn
well0002.bmp Ni akopọ, 'Doodads' irú ẹ̀rọ tó rọrùn - iyẹn ni, àwọn ẹ̀ka tí a lè fi hàn gẹ́gẹ́ bí ohun èlò (tabi ní kedere gẹ́gẹ́ bí ilé, gẹgẹ bí àwọn ogiri) lórí irú ẹ̀rọ tó rọrùn, pẹ̀lú àwọn ewéko
well0003.bmp Ni akopọ, àtọ́ka kan lórí irú ẹ̀rọ tó rọrùn
well0004.bmp Ni akopọ, ẹ̀rọ dudu, àwọn òke-nla lórí irú ẹ̀rọ dudu àti oríṣìí ẹ̀dá tí ó pọ̀ jù lọ ti àwọn ibè kó-láti-irú ẹ̀rọ dudu
well0005.bmp Ni akopọ, 'Doodads' irú ẹ̀rọ dudu - iyẹn ni, àwọn ẹ̀ka tí a lè fi hàn gẹ́gẹ́ bí ohun èlò (tabi ní kedere gẹ́gẹ́ bí ilé, gẹgẹ bí àwọn ogiri) lórí irú ẹ̀rọ dudu
well0006.bmp Ni akopọ, àtọ́ka kan lórí irú ẹ̀rọ dudu, pẹ̀lú awọn ìkànsí láàárín irú ẹ̀rọ tó rọrùn àti dudu
well0007.bmp Ni akopọ, lava pẹ̀lú 4-5 frames àkọsílẹ̀ ti rẹ̀
well0008.bmp Ni akopọ, iyan àti oríṣìí ẹ̀dá tí ó pọ̀ jù lọ ti àwọn ibè kó-láti-iyan
well0009.bmp Ni akopọ, 'Doodads' iyan - iyẹn ni, àwọn ẹ̀ka tí a lè fi hàn gẹ́gẹ́ bí ohun èlò (tabi ní kedere gẹ́gẹ́ bí ilé, gẹgẹ bí àwọn ogiri) lórí iyan
well0010.bmp Ni akopọ, 48 ìkànsí láàárín iyan, irú ẹ̀rọ tó rọrùn àti dudu
well0011.bmp Ni akopọ, àwọn kápùlà póla ti maapu, pẹ̀lú irú ẹ̀rọ dudu gẹ́gẹ́ bí ilẹ̀
well0012.bmp Ni akopọ, àwọn kápùlà póla ti maapu, pẹ̀lú irú ẹ̀rọ tó rọrùn gẹ́gẹ́ bí ilẹ̀

O jẹ dandan fun imuse to pe, lati ma ṣe rendering awọn Tiles ni ilosiwaju lati le fi wọn pamọ, nitori awọn data fun iyipo ọjọ/ọjọ gbọdọ tun ṣe atunṣe - ati pe ọpọlọpọ pupọ ti awọn data yoo wa.

Awọn Tiles jẹ awọn aworan 8bpp pẹlu paleti ti a yan ti 32x32 pixel ipinnu, ti a ṣeto ni ibamu. Sibẹsibẹ, ni Tileset bẹ, o le ni pupọ diẹ sii

Apoti akọkọ ni awọn apakan 2: head ati data.

Àkọsílẹ Àwọn Tààrà

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Iwọn Aṣẹ́gẹ́dẹ́
0x0004 uint(24) Iwọn blọku
0x0007 uint(8) Àwọ̀ àjàrà
0x0008 uint(32) Iyipada / Àmì?

Ẹ̀yà yìí lè jẹ́ ìkọ́kọ̀ọ́ àtúnṣe ti fọ́ọ̀mù fáìlì; nínú gbogbo fáìlì tí mo ní, iye 0x02 ni ó wà nibi.

0x000c uint(32) Iwọn (Iwọn ipinnu Oorun)

Ṣe afihan bi o ti gbooro aworan faili naa jẹ (ninu Pixel).

Ni gbogbo awọn iwẹ ti Outpost 2, a nireti pe iye 0x20 tabi 32 ni ibi yi.

0x0010 uint(32) Iga (Ipinnu Oorun)

Fihan bi giga faili aworan ṣe jẹ (ni Pixel).

Ní gbogbo Wells ti Outpost 2, a nireti iye 0x20 tàbí 32 nibi.

0x0014 uint(32) Iwọ̀n àwọ̀?

Ọ̀nà ti ìtúmọ̀ ti iye yìí kò mọ.

Nígbà tí ó wà nínú gbogbo fáìlì tí a ṣe àyẹ̀wò, o ní iye 8, ó lè jẹ́ pé ó jẹ́ ìtúmọ̀ àwọ̀ jinlẹ̀.

0x0018 uint(32) Iru awọ 2?

Itumọ̀ iye yìí kò mọ́.

Ó lè jẹ́ ìwọ̀n 'àfojúsùn' àwọ̀.

Lẹ́yìn àwæn àlàyé yìí, àyẹ̀wò palẹ́tì tó wà ní fọ́ọ́mátì RIFF tó jẹ́ ìmúlòlùú yóò tẹ̀síwájú. Àlàyé tó péye wà - bí àwæn palẹ́tì ṣe tún ń bẹ ní ibòmíràn - ní Àwọn palẹ́tì.

Alaye Tiles

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Iwọn Aṣẹ́gẹ́dẹ́
0x0004 uint(24) Iwọn blọku
0x0007 uint(8) Àwọ̀ àjàrà

Níkẹyìn, àwọn àwòrán píksẹl tí kò ní fọ́ jẹ́, láti apa ọtún-òkè ní ìlò òtún-ìsàlẹ̀.
Iye data ní àwọn àwòrán tí a maa ń rí gẹ́gẹ́ bí 8bpp-Bitmaps ni o yẹ ki o jẹ́ ìkànsí ti àwọ̀ nínú àtẹ́jáde àwọ̀.

Àwọn píksẹl bẹ̀rẹ̀ láti oke apa osi àti parí ní isalẹ apa otun.

Engine ere idaraya naa n ya awọn Tiles *dájọ́pọ̀* nípa ìbéèrè.
Eyi dabi pe o jẹ nitori iyipo ọjọ́-óru, eyiti o ni awọn ipele 32 ti àwọn Tile kọọkan. Ni ọna yii, o han pe a n yọ 'diẹ' kuro ninu iye imọlẹ. Awọn iye pato ko ti le wa ni ipinnu, mo n ṣiṣẹ lori ipilẹ iṣiro

v *= (daylight / 48) + 0.25;

pẹlu awọn data HSV ti awọn pixel, nibiti daylight jẹ iye lati 0-31 ati v jẹ iye laarin 0-1. Ni afikun, o yẹ ki a ranti pe lori maapu naa, o tun jẹ pe a ni ẹgbẹ 16 Tiles si apa osi ati otun (eyi n ṣiṣẹ fun ibẹrẹ aifọwọyi ti awọn ẹka).

Ni afikun, iyipo ọjọ́-óru dabi pe o n ṣe imudojuiwọn ẹka kan ti maapu fun ọkọọkan Gamecycle.
Iyipo ọjọ́-óru ti a mu yara ni eyi ni:

Ìfihàn ti iyipo ọjọ́-óru

PRT

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 43 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- C P A L . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Iwọ́ntunwọ́nsì Àjèjì
0x0004 uint(24) Iwọn palẹti

Fún un yàtọ̀ sí àtẹ̀jáde àtẹ́wọ́dá, sọ iye àwọn pálẹ́tì tó wà nínú fáìlì yìí - kì í ṣe ipò àtẹ́wọ́dá nínú Byte.

0x0007 uint(8) Aami ilẹ

O ṣee ṣe, gẹgẹ bi deede, Awọn asia.

Sugbon, mi o mọ eyikeyi awọn asia; nitori gbogbo awọn iye ti mo mọ jẹ 0x00, o ṣee ṣe paapaa pe nọmba awọn paleti jẹ nikan uint(32).

Nípa wo ni PRT dájú pé ó túmọ̀ sí, kò sí ìmọ̀ mi; ó lè jẹ́ pé 'Palette and Resource Table' - nítorí pé fáìlì yìí - tó wà gẹ́gẹ́ bí op2_art.prt nínú maps.vol - jẹ́ irú èyí, tàbí pé èyí yóò ṣe àpejuwe iṣẹ́ náà dáadáa.

Fáìlì yìí ní àkójọ àwọn palẹ́tì, tábìlì nípa gbogbo bitmap tí a lò, gbogbo àṣà àfihàn, àti pẹ̀lú àkójọ àwọn ìmọ̀ tó jẹ́ àìmọ̀. Ó tẹ̀síwájú nípa àtẹ̀jáde ìkànsí ìṣàkóso tí a ti sọtọ, nítorí pé kò gbogbo àwọn àkọọlẹ tó tẹ̀le àkóónú yìí.

Àpá CPAL (tó ṣeé ṣe kó túmọ̀ sí palẹ́tì-ìkànsí) kan níkan gba àwọn ìmọ̀ palẹ́tì, nípa sisọ iye tí àwọn palẹ́tì 8-bit tó jẹ́ 1052 Byte wà.

Iye 1052 Byte kì í jẹ́ pé a gbọ́dọ̀ tẹ́numọ́, nítorí pé àkóónú palẹ́tì lè ní àwọn palẹ́tì tó yàtọ̀. Ó jẹ́ fún ìkànsí data tí a fi Outpost 2 fún.

Lẹ́yìn àkójọ palẹ́tì, àkójọ bitmap ń bọ́ lẹ̀sẹ̀kẹsẹ, láìsí àkọ́kọ́ akọsílẹ̀, pẹ̀lú àkójọ àwọn àfihàn náà.
Ẹ̀ka méjèèjì ni a máa bẹ̀rẹ̀ pẹ̀lú uint(32) (tàbí tún uint24+uint8 àmi?) tó ní iye àkọọlẹ.

Àwọn palẹ́tì

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 50 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- P P A L . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Ìkànsí Ẹ̀rọ mágìkì
0x0004 uint(24) Iwọn pálẹ́tì

Fún un, ni idakeji si fọọmu iṣọpọ ti a maa n lo, sọ nọmba awọn paleti ti a le ri ninu faili yii - kii ṣe ipari ti bulọọku ni byte.

0x0007 uint(8) Aami iṣẹ́

O ṣee ṣe, gẹgẹ bi iṣe, Awọn asia.

Ṣugbọn, emi ko mọ eyikeyi asia; nitori gbogbo awọn iye ti mo mọ jẹ 0x00, o ṣee ṣe paapaa pe nọmba awọn paleti jẹ ọkan lasan ti uint(32).

Alaye Paleti jẹ rọrun lati ka.
Wọ́n ní apá akọsori kan àti apá data kan.

Olori Palẹti

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Ìkànsí Ẹ̀rọ mágìkì
0x0004 uint(24) Iwọn pálẹ́tì

Fún un, ni idakeji si fọọmu iṣọpọ ti a maa n lo, sọ nọmba awọn paleti ti a le ri ninu faili yii - kii ṣe ipari ti bulọọku ni byte.

0x0007 uint(8) Aami iṣẹ́

O ṣee ṣe, gẹgẹ bi iṣe, Awọn asia.

Ṣugbọn, emi ko mọ eyikeyi asia; nitori gbogbo awọn iye ti mo mọ jẹ 0x00, o ṣee ṣe paapaa pe nọmba awọn paleti jẹ ọkan lasan ti uint(32).

0x0008 uint(32) Iru iwe palẹti?

O ṣeese ki o ṣe afihan iru ẹya paleti ti paleti naa n tẹle.

Gbogbo awọn paleti Outpost2 dabi pe o ni ẹya 0x01.

Àlàyé Palẹ́tì

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Ìkànsí Ẹ̀rọ mágìkì
0x0004 uint(24) Iwọn-ibèèrè
0x0007 uint(8) Aami iṣẹ́

Ẹka data naa gba awọn akọsilẹ paleti kọọkan. Iye awọn akọsilẹ paleti da lori gigun bloc / 4.

Akọsilẹ kọọkan ni ipilẹ ti o rọrun bẹ́ẹ̀;

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 -- -- -- 04 -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(8) Apá pupa

Ṣe afihan ipin pupa ti awọ naa

0x0001 uint(8) Eya alawọ ewe

Fihan ipin alawọ ewe ti awọ naa

0x0002 uint(8) Apakan buluu

Fihan ipin bulu ti awọ naa

0x0003 uint(8) Aiyé - Àwọn ibè?

O jẹ aiṣedeede, kini iye yii tumọ si, nitori o dabi pe o jẹ ipilẹ 0x04.

Nípa àwọn palẹtì, kò sí ohun míràn tó yẹ kí n sọ, síbẹ̀, fún àwọn palẹtì tí a lo fún ìfarahan, àwọn ìlànà tó tẹ̀le ni wọ̀nyí:

  • Àwọ̀ àkọ́kọ́ jẹ́ GBOGBO ÀKÓKÒ àfihàn, kó jẹ́ kí ni iye tó wà níbẹ̀.
  • Àwọn ìkà palẹtì 1-24 ni a gbà pé jẹ́ àwọ̀ ẹrọ aṣáájú 1-8.
    Bí àwọn àwọ̀ ṣe wá láti ibikibi níta ẹrọ aṣáájú 1, kò dájú fún mi.
    Mo ro pé àwọn àwọ̀ tó kù jẹ́ àkọsílẹ̀.

Ìtọ́kasí palẹtì

Bitmẹ́ẹ́pùs

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Iwọn ti a tọka.

Fi iwọn ti awọn ila data pixel han ni Byte - nitori pe wọn ti wa ni itọnisọna si awọn aala 4-Byte.

Nitorina, o rọrun lati lọ si ila aworan kan pato.

idi ti a fi n fi iye yii pamọ ni iyasọtọ, bi o ti le ṣe iṣiro, ko ye.
O ṣee ṣe pe o jẹ imudara fun koodu iyaworan.

0x0004 uint(32) Ibi àyàtọ̀

Fihan àkọsílẹ̀ ti ìkọ̀kọ̀ àkọ́kọ́ nínú bitmap

0x0008 uint(32) Iga

Fi iwọn giga ti aworan naa han ni piksẹli

0x000c uint(32) Iwọn apẹẹrẹ

Ṣe afihan iwọn didun aworan naa ni píksẹ́lì

0x0010 uint(16) Typ

Ṣe afihan iru aworan naa. Nibi, o dabi pe o jẹ Bitmaske:

  • 0x04 ti ṣeto, ti o ba jẹ pe o jẹ aworan 1bpp.
  • 0x40 ti ṣeto, ti o ba jẹ pe o jẹ aworan ti o gbọdọ ṣe Windowing.
0x0012 uint(16) Paleti

Ṣalaye, iru pálẹ́ẹ̀tì wo ni lati lo lati inu faili PRT

Eto data yi ti faili PRT n sọ bi a ṣe n ṣe afihan awọn bitmap ti a lo fun awọn sprites. Awọn bitmap wọnyi n ṣiṣẹ gẹgẹ bi ẹya kọọkan, lati eyiti ọpọlọpọ ni a ṣe papọ si oju-iwoye animasiko ti sprite kan.

Awọn data aworan pato wa ni op2_art.BMP ninu itọsọna ere.
Idi ti faili bitmap yii fi ni ori (ti o jẹ deede) RIFF-bitmapheader, kò ye. O ṣee ṣe pe Outpost 2 n lo awọn API eto lati gbe awọn aworan, ni ṣiṣe ori yii ni igba diẹ ati ki o kọju awọn aaye ti o ni ibatan, ti o yato si.

Awọn data pixel wa ni faili BMP ni ipo Offset + uint32-Offset, ti o wa ninu faili BMP ni adirẹsi 0x000A (RIFF-bitmap-dataoffset), ati pe o tun ṣe afihan iṣeto laini lati oke osi si isalẹ ọtun.

Awọn aworan monochrome 1bpp le ṣee fa ni ọna ti color 0 jẹ transparent patapata, bi o ti jẹ pe color 1 je dudu/grey ti o ni idapo, nitori awọn aworan monochrome ma n lo fun awọn ojiji ọkọ ayọkẹlẹ ati ile ni awọn animasiko.

Pẹlu eyi, o le ṣe akojọpọ ọpọlọpọ awọn aworan.

Modulu ibugbe ti a daabobo (Plymouth)

Iṣẹ́ àtinúdá

Bayi a ti de si ipele ọba ti awọn ẹka inu awọn ọna kika data Outpost 2:
Awọn animasiko.

Awọn atokọ animasiko bẹrẹ pẹlu akọle agbaye kan, ti o jẹ pataki fun iṣedede data. Lẹhinna awọn itumọ animasiko kan pato wa, ti a pin si ipele mẹta:

  1. Animasiko
    Animasiko jẹ apẹẹrẹ ti o ga julọ; o ṣe aṣoju animasiko ti ẹyọ, ile, tabi 'animasiko patikulu' (ikọlu komeeti, oju-ọjọ, eksplosonu) ni ipo kan pato.
  2. Faramu
    Faramu jẹ aworan kan ṣoṣo ninu animasiko kan. Animasiko le ni ọkan tabi diẹ ẹ sii awọn faramu.
  3. Subfaramu
    Subfaramu jẹ alaye nipa pe bitmap kan pato gbọdọ jẹ fa si ipo kan pato ti faramu kan labẹ awọn itọkasi kan. Faramu le ni ọkan tabi diẹ ẹ sii awọn subfaramu.

Lẹhinna, awọn itumọ animasiko kọọkan ni a tẹle taara.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Iye awọn ere idaraya

Meloo ni awọn akọsilẹ iṣẹ-ṣiṣe wa

0x0004 uint(32) Iye awọn fireemu

Meloo ni awọn fere ti o yẹ ki o wa lapapọ

0x0008 uint(32) Iye Subframes

Meloo ni Subframes lapapọ ti o yẹ ki o wa

0x000c uint(32) Iye awọn idiyele ti o jẹ aṣayan

Meloo ni "àwọn ìforúkọsílẹ̀ àṣàyàn" wà.

Anaimashọn

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0020 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(32) Aiyé 1

Alaye ti ko mọ

0x0004 uint(32) Apoti Iye: Awọn Ika

Fún un àkọ́kọ́ òtún (ní Pixel) ti Bounding Box.

0x0008 uint(32) Iwọn Ibo: Oke

Fi ìbẹ̀rẹ̀ oke (nínu píksẹ́lì) ti Bounding Box hàn.

0x000c uint(32) Ipo Iwọn: Iwọn

Fúnni iwa (ninu Pixel) ti Bounding Box.

0x0010 uint(32) Apoti Iwọn: Giga

Ṣe afihan giga (ni Pixel) ti Bounding Box.

0x0014 uint(32) Ipo: X

Fihan aarin ibudo ti aarin iṣẹ́-ṣiṣe naa

0x0018 uint(32) Ọkàn: Y

Fi aaye aarin inaro ti iṣere han

0x001c uint(32) Aiyé 2

Alaye ti a ko mọ

0x0020 uint(32) Iye awọn fireemu

Fihan iye awọn fọto ẹda ti o wa ninu animẹṣan yii

0x0024 uint(32) Iye Windows

Fihan iye awọn ferese ti o gbọdọ lo nigba ti o ba n ṣe àwòrán

Àwọn data ti ipele to ga julọ, ti ifamọra, jẹ́ àkọ́kọ́ data iṣakoso - Boundingbox n tọ́ka si àwọn kóòdìnẹ́tì ti aami yíyí ká àkọ́kọ́ ọkọ ayọ́kẹ́lẹ́/tabi ile, nigba ti a bá yan rẹ, àti pe o tún n tọ́ka si apá wo ni a yẹ ki a le tẹ.

Ìdípa náà ni o n jẹ́ àkọ́kọ́ "ìpẹ̀yà"; ìpẹ̀yà yẹn, ni a ti nṣàkóso sí kóòdìnẹ́tì inú ere tabi yíyọ kúrò. A lè sọ pé, ní iṣiro, ìdípa náà n tọ́ka sí orisun kóòdìnẹ́tì.

Nípa àwọn Windows, ó jẹ́ pé, gẹ́gẹ́ bí ìdípa náà, ni kọọkan (fun Window kọọkan) 4 uint(32)-ìye, wọn n tọ́ka si apá kan ti a gba gẹgẹbi wúlò fún subframes kọọkan. Níta Windows, bí ó tilẹ̀ jẹ́ pé a ti ṣe é fún Bitmap, a ko gbọdọ́ ya aworan.

Faramu

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(8) Iye subframe ati Toggle fun Aṣayan 1, 2

Àkóónú yìí ní:

  • 0x7F (Bitmaske): Iye àwọn Subframes tó wà nínú fáìlì yìí
  • 0x80: Alaye nípa bóyá Optional 1 àti 2 wà
0x0001 uint(8) Aiyede 1 àti Toggle fún Àṣàyàn 3, 4

Ìye yìí ní:

  • 0x7F (Bitmaske): Aìmọ̀ - Mo ní ìrònú pé ó jẹ́ ìwọn àkókò àwọn Gameticks tó máa ṣẹlẹ̀, títí di àkókò tó kànnàá yóò hàn
  • 0x80: Àlàyé nípa bí Optional 3 àti 4 ṣe wà
0x0002 uint(8) Aṣayan 1

Aláìmọ̀

0x0003 uint(8) Aṣayan 2

Aláìmọ̀

0x0004 uint(8) Aṣayan 3

Aláìmọ̀

0x0005 uint(8) Aṣayan 4

Aláìmọ̀

Subframe

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF ìkọ́rọ̀
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Ipo Iru data Orukọ Apejuwe
0x0000 uint(16) Bitmap-Id

Fihan eyi ti a fi Bitmap ṣe fun Subframe yi

0x0002 uint(8) Aiyé 1

Ko ye mi - ṣugbọn mo ni igbagbọ pe eyi ni nipa pataki rira (Z-Layer).

0x0003 uint(8) Id Subframe

Fi hàn pé, n'ibè ni subframe wo wa

0x0004 sint(16) Ipo - Iwọn ọna horizontal

Ṣe afihan ibiti a ti yẹ ki a gbe subframe naa ninu fureemu, tabi bi ọpọlọpọ pixel ni a yẹ ki a gbe bitmap naa si apa otun.

0x0006 sint(16) Offset - Iwọn inaro

Fihan ibi ti a fi le gbe subframe sinu frame naa, tabi bi ọpọlọpọ awọn pixel ti a gbọdọ gbe bitmap naa soke ni ọrọ-ọrọ.

Nitori eyi, a le bayi so awọn ìkà, ati awọn ìmúlò ti o péye jọ, nibi a fi hàn àpẹẹrẹ kan lori ìmúlò to nira, ìmúlò pẹlu àdàkọ 500.

Ìtàn ìmọ́lẹ̀ 500

Animation 500 fihan bi a ṣe nṣan Plymouth-Transporter, ti a fi erù to wọpọ kọ, ti wa ni ṣe ẹlẹsẹ. Eyi jẹ ọkan ninu awọn ipilẹ animation diẹ ti o nlo ṣiṣẹpọ windowing.

Ati bẹ, a le darapọ gbogbo animation naa.
Ṣugbọn, iṣoro kan wa pẹlu ilẹkun ikọkọ oke, nitori pe bit to yẹ ko ti ṣeto ninu information irufẹ aworan.

Nibi ni diẹ ẹ sii, awọn sprites ti o ni ẹwa ti a ṣe anime lati inu ere:

Rendering ti Animation 500 ṣe afihan

Animation 500 ti pari ni kikun

Plymouth Ilé-iṣẹ́

Eden Ibèro ọ̀run

Eden Ilé-ìwòsàn

SCAT

Plymouth Ibèro ọ̀run

Easteregg:
Baba Kérésìlè

Easteregg:
Dans Aja

Ibo ibanisọrọ olumulo

Báyìí ni a ṣe kó àfihàn olùṣàkóso ti ere náà, tó jẹ́ pé ó ní àyípadà métal tó ti wa lórí ikọ́.

Síbẹ̀, ó tún jẹ́ kedere pé Dynamix kò ní láti ṣe ìmúdàgba tuntun; nibi, kò jẹ́ pé a kan lo àwọn API User32 àti GDI32 tó wà láti ọdọ Windows - pàápàá, a tún n lo ìṣàkóso oríṣìíríṣìí láti User32.

Àwọn wọ̀nyí le ṣee fa, fún àpẹẹrẹ, pẹ̀lú àwọn ìṣàkóso bíi ti Angus Johnson, tó jẹ́ Freeware tí a ṣe àgbékalẹ́ Resource Hacker, tàbí - bí o bá bẹ́rù láti lo Wine lórí Linux / Mac OS - pẹ̀lú ìrànlọwọ wrestool tó wà nínú icoutils.

Oruko faili Iha
Outpost2.exe O ni aami ere naa nikan, ti o nfihan ibudo oju-ọjọ ni New Terra
op2shres.dll O ni aworan fun awọn eroja iṣakoso gẹgẹbi awọn idasilẹ, bọtini, bọtini redio ati awọn apoti ayẹwo, ati awọn abẹlẹ ibaraẹnisọrọ, awọn aworan atilẹyin fun awọn akọsilẹ itan-idanwo ati aworan abẹlẹ akojọ aṣayan akọkọ
out2res.dll O ni ẹṣọ ferese inu ere, aami fun irin ti o wọpọ ati pataki, iboju ikojọpọ, awọn aworan fun ibaraẹnisọrọ ati miiran awọn aworan aami, ni afikun si awọn ti a ṣe afihan ni itọsọna ere