Outpost 2 Àwọn fọ́ọ̀màtì fáìlì · bei.pm
À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ọ́.
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ọ:
|
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.
|
Ẹ̀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.bmp
sí well0012.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 |
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 |
0x0010 | uint(32) | Iga (Ipinnu Oorun) | Fihan bi giga faili aworan ṣe jẹ (ni Pixel). Ní gbogbo Wells ti Outpost 2, a nireti iye |
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 |
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ọ̀.
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:
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ẹ |
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ẹ |
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ẹ |
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 |
À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ẹ |
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ẹ̀.
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. |
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:
|
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.
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:
-
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. -
Faramu
Faramu jẹ aworan kan ṣoṣo ninu animasiko kan. Animasiko le ni ọkan tabi diẹ ẹ sii awọn faramu. -
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í:
|
0x0001 | uint(8) | Aiyede 1 àti Toggle fún Àṣàyàn 3, 4 | Ìye yìí ní:
|
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:
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 |