Outpost 2 Formati za Faili · bei.pm
Fomati za faili zilizoorodheshwa kwenye ukurasa huu zinategemea uchambuzi wa kiufundi wa mali miliki kutoka Dynamix, Inc. na Sierra Entertainment.
Mali miliki sasa ni sehemu ya mali ya Activision Publishing, Inc. / Activision Blizzard, Inc. na kwa sasa inamilikiwa na Microsoft Corp..
Taarifa hizi zimekusanywa kupitia Uhandisi wa Kinyume na Uchambuzi wa Takwimu kwa lengo la uhifadhi na ushirikiano na data za kihistoria.
Hakukuwa na vipimo vya miliki au vya siri vilivyotumika.
Mchezo huu kwa sasa unaweza kununuliwa kama upakuaji kwenye gog.com.
Mfululizo huu wa makala unadokumenti maarifa yangu kuhusu muundo wa data katika mchezo wa mikakati wa wakati halisi "Outpost 2: Divided Destiny", ambao ulitolewa na Sierra mwaka 1997 na kuendelezwa na Dynamix.
Nimejishughulisha hasa na uchambuzi wa data za mchezo huu - na jinsi zinavyotumika - kuanzia tarehe 01 Novemba 2015 hadi tarehe 14 Novemba 2015.
Kulingana na taarifa nilizoweza kupata hadi sasa, Dynamix - kama vile kampuni nyingi za kibiashara - haikuunda muundo wa data maalum kwa ajili ya Outpost 2, bali pia ilitumia katika maendeleo mengine kama vile mfululizo wa Mechwarrior (iliyobadilishwa).
Pamoja na hayo, pia inaonekana kwamba uvumbuzi wa muundo wa data unashikiliwa katika mipaka na mara nyingi unategemea dhana zilizodumu kwa muda kutoka kwa muundo wa kawaida kama JFIF na RIFF.
Kwa tafsiri ya meza na muundo wa data, taarifa zaidi zinapatikana kwenye Nini ni nini?.
Taarifa zilizotolewa hapa kwa ujumla zinapaswa kueleweka kama Little Endian.
Mwisho, inaweza kusemwa kuwa uhandisi wa nyuma ulikuwa na furaha kubwa, ingawa haujakamilika.
Kwa kweli, naweza pia kupendekeza kucheza mchezo mwenyewe, kwani unatoa mitindo ya mchezo ya kuvutia.
Utangulizi
Muundo wa data unaotumika na Outpost 2 una muundo unaokumbusha JFIF / PNG - vipande tofauti vya data kila wakati vina kichwa cha byte 8. Hivyo basi, sina haja ya kurekodi vichwa vya data kwenye maeneo mahsusi na ninaandika tu tofauti.
Muundo ni kila wakati ifuatavyo; data halisi za matumizi zimeingizwa ndani yake:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Mifumo ya Uchawi | Inajumuisha habari kuhusu kile kinachotarajiwa katika block inayofuata ya data. Thamani zinazojulikana:
|
0x0004 | uint(24) | Urefu wa Kizuizi | Inajumuisha taarifa kuhusu ukubwa (katika Byte) wa block ya data ifuatayo. Hapa inamaanisha tu data halisi - byte 8 za kichwa hazijajumuishwa. |
0x0007 | uint(8) | Bendera? | Haijulikani ni kwa nini kizuizi hiki kinatumika hasa. Katika Volumes, thamani hii mara nyingi ni 0x80, katika faili nyingine mara nyingi ni 0x00. Hii inaashiria kwamba ni seti ya bendera. |
Vijaridi
"Volumes" ni kontena za data kwa ajili ya mchezo, sawa na muundo wa archive kama vile Tarball. Angalau katika Outpost 2, muundo huu unajulikana tu na faili - hakuna folda. Iwezekana kwamba folda hizi zinaweza kuigwa kwa kutumia majina sahihi ya faili.
Volume inajumuisha kichwa cha Volume pamoja na vizuizi kadhaa vya Volume, ambavyo vinawakilisha faili halisi.
"Volumes" ni faili zenye kiendelezi 'vol'
katika directory ya mchezo.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Byte za Uchawi | |
0x0004 | uint(24) | Urefu wa Block | |
0x0007 | uint(8) | Bendera |
Kichwa cha Volume
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Byte za Uchawi | |
0x0004 | uint(24) | Urefu wa Block | |
0x0007 | uint(8) | Bendera |
Header ya Volume haitoi data zozote za matumizi.
Inatumika tu kama chombo.
Tarehe ya kwanza katika Header ya Volume inapaswa kuwa Volume Strings; kisha kufuatia ni taarifa za Volume.
Nyota za Kijito
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Byte za Uchawi | |
0x0004 | uint(24) | Urefu wa Block | |
0x0007 | uint(8) | Bendera |
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Byte za Uchawi | |
0x0004 | uint(24) | Urefu wa Block | |
0x0007 | uint(8) | Bendera | |
0x0008 | uint(32) | Urefu wa Payload | Inaonyesha ni kiasi gani cha Bytes cha data ifuatayo ni data halisi za matumizi. Data nyingine zilizobaki katika orodha ya Volume-Strings zinaonekana kuwa kama garbage. Kwenye faili zenye tarehe ya baadaye, 'data zilizobaki' ni 0x00, ambayo inaweza kuashiria udhaifu katika zana za maendeleo wakati wa kuendeleza mchezo, yaani, kwamba mendelezi walijali juu ya kuanzishwa sahihi ya buffer mwishoni mwa mchakato, kwani haina athari kwenye mchezo ikiwa data zimeanzishwa au la. |
0x000c | uint(8)[] | Orodha ya majina ya faili | Hii ni orodha ya majina ya faili yenye byte sifuri, ambayo - angalau katika sehemu hii ya data - inatarajia tu alama za ASCII. Sio lazima kuchambua block hii ya data kwa undani wakati wa kuchambua data, kwani katika taarifa za volumu tayari hutajwa moja kwa moja offsets za majina ya faili. |
Volume Strings ni orodha ya majina ya faili yaliyomo ndani ya volume.
Habari za Kiasi
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Byte za Uchawi | |
0x0004 | uint(24) | Urefu wa Block | |
0x0007 | uint(8) | Bendera |
Taarifa za volumu zinachukua habari za kina kuhusu faili. Hii ni aina fulani ya kuingizwa katika orodha ya FAT (FAT = Jedwali la Mgawanyiko wa Faili)
Idadi ya faili inapata kutokana na ukubwa wa block ukigawanywa na urefu wa kuingizwa kwa orodha - 14 byte.
Kila kuingizwa kwa orodha kuna muundo ufuatao:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Offset ya jina la faili | Inaonyesha ni offset gani (!) ndani ya orodha ya majina ya faili (Vikundi vya Volume) ambapo jina la faili linapatikana. Inahusisha mwanzo wa kizuizi cha data muhimu. |
0x0004 | uint(32) | Mahali pa faili | Inaonyesha offset gani ndani ya faili nzima ya volume ambapo faili hiyo inapatikana. |
0x0008 | uint(32) | Sawa ya faili | Inaashiria ukubwa wa faili kwa byte. |
0x000c | uint(16) | Bendera? | Inaonekana kuna maelezo ya ziada kuhusu uandishi wa faili.
|
Kipengele cha Kiasi
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Byte za Uchawi | |
0x0004 | uint(24) | Urefu wa Block | |
0x0007 | uint(8) | Bendera |
Volume-Block ni konteina inayohifadhi faili. Inajumuisha tena - kwa sababu ya muundo wa block - ukubwa wa faili kwa njia ya kupita, na kisha moja kwa moja zinafuatia data za matumizi.
Tiles
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 42 | 4d | 50 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | B | M | P | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Vikundi vya Uchawi | |
0x0004 | uint(24) | Muda wa Block | |
0x0007 | uint(8) | Makaratasi |
Vyumba vinavyohusiana na Tiles ni muundo wa picha ya Bitmap
maalum kwa Outpost-2. Vinapanuka juu ya Tilesets 13,
vinavyojulikana kama "wells" (well0000.bmp
hadi well0012.bmp
),
ambavyo viko ndani ya kiasi maps.vol.
Katika Tilesets / Wells kuna yafuatayo:
Jina la Faili | Maudhui |
---|---|
well0000.bmp | Grafiki ya rangi ya buluu yenye ukubwa wa 32x32px - bora kama jaribio la kuangalia kama mpakiaji wa picha unafanya kazi |
well0001.bmp | Inajumuisha mwamba mweupe, milima juu ya mwamba mweupe na aina nyingi za crater za athari kwenye mwamba mweupe |
well0002.bmp | Inajumuisha 'Doodads' za mwamba mweupe - yaani vipengele vinavyoweza kuwekwa ili kupamba (au kwa makusudi kama muundo, kama vile kuta) kwenye mwamba mweupe, ikijumuisha mimea |
well0003.bmp | Inajumuisha muundo wa ganda kwenye mwamba mweupe |
well0004.bmp | Inajumuisha mwamba mweusi, milima juu ya mwamba mweusi na aina nyingi za crater za athari kwenye mwamba mweusi |
well0005.bmp | Inajumuisha 'Doodads' za mwamba mweusi - yaani vipengele vinavyoweza kuwekwa ili kupamba (au kwa makusudi kama muundo, kama vile kuta) kwenye mwamba mweusi |
well0006.bmp | Inajumuisha muundo wa ganda kwenye mwamba mweusi, pamoja na mabadiliko kati ya mwamba mweupe na mweusi |
well0007.bmp | Inajumuisha lava ikiwa na fremu 4-5 za uhuishaji wa lava hiyo |
well0008.bmp | Inajumuisha mchanga na aina nyingi za crater za athari kwenye mchanga |
well0009.bmp | Inajumuisha 'Doodads' za mchanga - yaani vipengele vinavyoweza kuwekwa ili kupamba (au kwa makusudi kama muundo, kama vile kuta) kwenye mchanga |
well0010.bmp | Inajumuisha mabadiliko 48 kutoka mchanga hadi mwamba mweupe na mweusi |
well0011.bmp | Inajumuisha vichwa vya polar vya ramani, kwa mwamba mweusi kama msingi |
well0012.bmp | Inajumuisha vichwa vya polar vya ramani, kwa mwamba mweupe kama msingi |
Inashauriwa kwa utekelezaji sahihi, kutoshiriki Tiles mapema ili zikae kwenye cache, kwani data za mzunguko wa mchana/usiku bado zinahitaji kusindika - na kutakuwa na data nyingi sana.
Tiles ni picha za 8bpp zenye palette iliyo na viwango vya rangi inayopangwa kwa 32x32 pixels, ambazo zimewekwa pamoja. Katika seti ya Tiles iliyoundwa kwa njia hii, inaweza kuwa na zaidi.
Container kuu ina sehemu 2: head
na data
.
Vichwa vya Tiles
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Vikundi vya Uchawi | |
0x0004 | uint(24) | Muda wa Block | |
0x0007 | uint(8) | Makaratasi | |
0x0008 | uint(32) | Toleo / Bendera? | Hii inaweza kuwa ni taarifa ya toleo la muundo wa faili; katika faili zote nilizo nazo, thamani iliyoandikwa hapa ilikuwa |
0x000c | uint(32) | Upana (Uamuzi wa Usawa) | Inaonyesha jinsi mpana wa faili ya picha ilivyo (katika pixels). Katika visima vyote vya Outpost 2, thamani ya |
0x0010 | uint(32) | Kimo (Ufafanuzi wa wima) | Inaonyesha jinsi picha ilivyo juu (katika pikseli). Kwa Wells zote za Outpost 2, hapa thamani ya |
0x0014 | uint(32) | Udeepu wa rangi? | Maana ya thamani hii haijulikani. Kwa sababu ina thamani ya |
0x0018 | uint(32) | Depth ya rangi 2? | Maana ya thamani hii haijulikani. Inaweza kuwa 'lengo' la kina cha rangi. |
Baada ya taarifa hizi, itafuata faili ya paleti iliyopo katika muundo wa RIFF wa kawaida. Maelezo kamili yanaweza kupatikana - kwa sababu paleti hizo pia zinapatikana mahali pengine - chini ya Rangi za paleti.
Data za Tiles
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Vikundi vya Uchawi | |
0x0004 | uint(24) | Muda wa Block | |
0x0007 | uint(8) | Makaratasi |
Mwisho, data za pikseli zimeandikwa kwa safu kutoka kushoto juu hadi kulia chini.
Thamani ya data katika picha ambazo kwa kawaida zinakuja kama bitmaps za 8bpp inalingana na kiashiria cha rangi katika pallet ya rangi.
Engine ya mchezo inachora Tiles *labda* kwa mahitaji.
Hii inaonekana kuwa na uhusiano na mzunguko wa siku na usiku, ambao una hatua 32 za Tiles tofauti. Inaonekana kwamba thamani ya mwangaza inakatwa 'kidogo' kwa kila mmoja. Thamani halisi bado hazijapata kubainishwa, nafanya kazi kwa msingi wa hesabu
v *= (daylight / 48) + 0.25;
kutumia data za HSV za pikseli, ambapo daylight ni thamani kati ya 0-31 na v ni thamani kati ya 0-1. Vilevile, inapaswa kuzingatiwa kwamba kwenye ramani kuna mipaka ya Tiles 16 upande wa kushoto na kulia (hii inatumiwa kwa kuzalisha vitengo ambavyo havionekani).
Ziada, mzunguko wa siku na usiku kwa kila mzunguko wa mchezo unasaidia kuboresha safu moja ya ramani tu.
Mzunguko wa siku na usiku unaoimarishwa unaonekana kama ifuatavyo:
PRT
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 43 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | C | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Magi Bytes | |
0x0004 | uint(24) | Urefu wa paleti | Badilisha, kinyume na muundo wa kawaida wa block, idadi ya paleti zinazopatikana katika faili hii - si urefu wa block kwa byte. |
0x0007 | uint(8) | Bendera | Inawezekana, kama kawaida, bendera. Sijui kuhusu bendera; kwani thamani zote ninazozijua zinakidhi |
Nisawa PRT
inamaanisha nini hasa, siijui; inaweza kuwa mfano 'Jedwali la Palette na Rasilimali' - kwa sababu faili hii - inayopatikana kama op2_art.prt katika maps.vol - ni hivyo, au hii inaweza kuelezea kazi hiyo vizuri.
Faili hii ina orodha ya palettes, jedwali la bitmaps zote zinazotumiwa, maelezo ya kila animation, na pia safu ya data zisizojulikana. Inafuata muundo wa kawaida wa kontena kwa namna isiyo rasmi, kwani si kila rekodi inafuata mpangilio huu.
Sehemu ya CPAL
(inaweza kuwa inamaanisha kontena la palettes) inashughulikia tu data za palettes, kwa kuonyesha ni ngapi kati ya palettes za 8-bit zenye ukubwa wa 1052 byte zipo.
Taarifa ya 1052-byte haitambuliki kama ya lazima, kwani muundo wa palettes unaweza kuwa na ukubwa tofauti. Inatumika tu kwa data ambayo Outpost 2 inatolewa nayo.
Baada ya orodha za palettes, inafuata mara moja bila kichwa cha utangulizi, orodha ya bitmaps; vivyo hivyo, orodha za animations zinafuata mara moja.
Zote zinazoanzishwa na uint(32) (au tena uint24 + uint8 bendera?) inayohesabu idadi ya rekodi.
Rangi za paleti
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Vifaa vya Uchawi | |
0x0004 | uint(24) | Urefu wa paleti | Badilisha, kinyume na muundo wa kawaida wa block, idadi ya palet zinazopatikana katika faili hii - si urefu wa block kwa byte. |
0x0007 | uint(8) | Bendera | Inaweza kuwa, kama kawaida, Bendera. Hata hivyo, sina taarifa kuhusu Bendera; kwani thamani zote ninazozijua zinafanana na |
Taarifa za paleti ni rahisi sana kusoma.
Zinajumuisha kichwa na sehemu ya data.
Kichwa cha Pallet
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Vifaa vya Uchawi | |
0x0004 | uint(24) | Urefu wa paleti | Badilisha, kinyume na muundo wa kawaida wa block, idadi ya palet zinazopatikana katika faili hii - si urefu wa block kwa byte. |
0x0007 | uint(8) | Bendera | Inaweza kuwa, kama kawaida, Bendera. Hata hivyo, sina taarifa kuhusu Bendera; kwani thamani zote ninazozijua zinafanana na |
0x0008 | uint(32) | Toleo la muundo wa pallet? | Kila inaonekana kuamua ni toleo gani la muundo wa pallet ambalo pallet inafuata. Paleti zote za Outpost2 zinaonekana kuwa na toleo |
Data za Pallet
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Vifaa vya Uchawi | |
0x0004 | uint(24) | Urefu wa Block | |
0x0007 | uint(8) | Bendera |
Sehemu ya data inachukua ingizo la kila pallets. Idadi ya ingizo la pallets inapatikana kutokana na urefu wa block / 4.
Ingizo kila moja ina muundo huu rahisi;
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | 04 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(8) | Sehemu ya Red | Inaonyesha kiasi cha rangi nyekundu katika rangi hiyo |
0x0001 | uint(8) | Kipengele cha kijani | Inaonyesha kiwango cha kijani cha rangi |
0x0002 | uint(8) | Sehemu ya buluu | Inatia kiasi cha buluu katika rangi |
0x0003 | uint(8) | Haijulikani - Bendera? | Haijulikani ni nini maana ya thamani hii, kwani inaonekana kimsingi ni |
Kuhusu paleti, kuna kanuni zifuatazo ambazo zinatumika kwa paleti zinazotumika kwa michoro:
- rangi ya kwanza KILA WAKATI ni wazi, bila kujali thamani iliyowekwa hapo.
-
Entries za paleti 1-24 zinachukuliwa kama rangi za mchezaji katika paleti 1-8.
Sijui rangi zinatoka wapi isipokuwa mchezaji 1.
Nadhani rangi zingine zimewekwa kwa njia ya hardcoded.
Bitmaps
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Upana uliowekwa | Inatoa upana wa mistari ya data ya pikseli kwa baiti - kwani hizi zimepangwa kulingana na mipaka ya baiti 4. Hivyo inakuwa rahisi kuingia kwenye mstari fulani wa picha. Kwanini thamani hii inahifadhiwa kwa njia ya pekee, ingawa inaweza kuhesabiwa, bado haijulikani. |
0x0004 | uint(32) | Uondoaji | Inaonyesha offset ya mstari wa kwanza katika bitmap |
0x0008 | uint(32) | Kimo | Onyesha urefu wa picha katika pikseli |
0x000c | uint(32) | Upana | Onyesha upana wa picha katika pixels |
0x0010 | uint(16) | Aina | Inaelezea aina ya picha. Hapa inaonekana kuwa ni Bitmask:
|
0x0012 | uint(16) | Palette | Inafafanua ni palette ipi inayopaswa kutumika kutoka kwenye faili la PRT |
Muundo huu wa data wa faili ya PRT unaelezea jinsi bitmaps zinazotumika kwa sprites zilivyojengwa. Bitmaps hizi zinatumika kama sehemu moja, ambapo nyingi zinakusanywa kuwa fremu ya animasiyo ya sprite.
Taarifa halisi za picha zinapatikana katika
op2_art.BMP kwenye directory ya mchezo.
Kwanini faili hii ya bitmap ina kichwa cha RIFF-bitmap ambacho ni (kimsingi sahihi),
hakijulikani. Inawezekana Outpost 2 inatumia APIs za mfumo kupakia picha,
kwa kuhamasisha kichwa hiki kwa muda na kubadilisha sehemu zinazofaa, zinazobadilika.
Data za pikseli zinapatikana katika faili ya BMP katika nafasi ya Offset + uint32-Offset, ambayo inaonekana katika faili ya BMP katika anwani 0x000A (offset ya data ya RIFF-bitmap), na zinawiana tena na mpangilio wa mistari kutoka juu kushoto hadi chini kulia.
Grafiki za monochrome 1bpp zinaweza kuchorwa kwa njia ambayo rangi 0 inawakilisha uwazi kamili, na rangi 1 ni nyeusi/hudhurungi ya nusu uwazi, kwani grafiki za monochrome kawaida hutumika kwa vivuli vya magari na majengo katika animations.
Hivyo mtu anaweza tayari kuunganisha grafiki nyingi.
Michezo ya kuhamasisha
Sasa tunafika kwenye kiwango cha juu zaidi cha nidhamu ndani ya format za data za Outpost 2:
Animasheni.
Orodha za animasheni zinaanzishwa na kichwa cha kimataifa, ambacho kinahudumu hasa kwa ajili ya uthibitishaji wa data. Baada ya hapo, zinafuatiwa na maelezo ya wazi ya animasheni, ambayo yanagawanywa katika hatua 3:
-
Animasheni
Animasheni ni kiwango cha juu zaidi; inawakilisha animasheni ya kitengo, jengo au 'animasheni ya chembe' (mgongano wa kome, hali ya hewa, milipuko) katika hali fulani ya awali. -
Frame
Frame ni picha moja ndani ya animasheni. Animasheni inaweza kuwa na frame moja au zaidi. -
Subframe
Subframe ni taarifa inayoeleza kwamba bitmap fulani inapaswa kuchorwa kwenye nafasi maalum ya frame chini ya vigezo fulani. Frame inaweza kuwa na subframe moja au zaidi.
Mara baada ya hapo, zinakuja moja kwa moja maelezo ya kila animasheni.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Idadi ya michoro | Ni vipi idadi ya rekodi za uhuishaji zilizopo |
0x0004 | uint(32) | Idadi ya Frame | Ni frame ngapi kwa jumla zinapaswa kuwepo |
0x0008 | uint(32) | Idadi ya subframe | Ni subframes ngapi kwa jumla zinapaswa kuwepo |
0x000c | uint(32) | Idadi ya chaguzi za hiari | Ni wangapi "ingizo la hiari" lililopo. |
Uhuishaji
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(32) | Haitambuliki 1 | Taarifa zisizojulikana |
0x0004 | uint(32) | Box ya Mipaka: Kushoto | Inatoa mwanzo wa kushoto (katika pikseli) wa Bounding Box. |
0x0008 | uint(32) | Sanduku la Mpaka: Juu | Inatoa mwanzo wa juu (katika pikseli) wa Bounding Box. |
0x000c | uint(32) | Sanduku la Mipaka: Upana | Inaonyesha upana (katika Pixel) wa Bounding Box. |
0x0010 | uint(32) | Sanduku la Mipaka: Kimo | Inatoa urefu (katika pikseli) wa Bounding Box. |
0x0014 | uint(32) | Offset: X | Inatoa katikati ya usawa ya mchakato wa uhuishaji |
0x0018 | uint(32) | Kipimo: Y | Inatoa katikati ya wima ya uhuishaji |
0x001c | uint(32) | Haijulikani 2 | Habari za kutatanisha |
0x0020 | uint(32) | Idadi ya Frame | Inasema ni frames ngapi za uhuishaji zilizomo katika uhuishaji huu |
0x0024 | uint(32) | Idadi ya Madirisha | Onyesha ni dirisha ngapi zinapaswa kutumika wakati wa kuchora |
Taarifa za safu ya juu, ya uhuishaji, hasa ni taarifa za usimamizi - Boundingbox inarejelea koordinati za alama inayozunguka gari/jengo, wakati inachaguliwa na pia inaonyesha eneo gani linaweza kubofyoshiwa.
Offset hasa huamua "nukta sifuri"; nukta ambayo inapaswa kuhesabiwa au kuondolewa kwenye koordinati za ndani ya mchezo. Inaweza pia kusemwa kwa kisayansi: offset hapa inamaanisha chanzo cha koordinati.
Kuhusu madirisha, kama ilivyo kwa offset, kuna kila moja (kwa kila dirisha) thamani 4 za uint(32), zinaonyesha eneo ambalo linaweza kutumiwa kwa subframes tofauti. Njia za nje ya madirisha hazitarajiwi, kama imepangwa kwa bitmap, kuchorwa.
Framu
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(8) | Idadi ya subframe na Toggle kwa Hiari 1, 2 | Thamani hii inajumuisha:
|
0x0001 | uint(8) | Haijulikani 1 na Toggle kwa Chaguo 3, 4 | Thamani hii ina:
|
0x0002 | uint(8) | Hiari 1 | Haijulikani |
0x0003 | uint(8) | Hiari 2 | Haijulikani |
0x0004 | uint(8) | Hiari 3 | Haijulikani |
0x0005 | uint(8) | Chaguo 4 | Haijulikani |
Subframe
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | herufi | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Sehemu ya Kuingia | Aina ya data | Jina | Maelezo |
---|---|---|---|
0x0000 | uint(16) | Bitmap-Id | Onyesha ni bitmap gani itatumika kwa ajili ya subframe hii |
0x0002 | uint(8) | Haitambuliki 1 | Haijulikani - lakini nina shaka kubwa kwamba hii ni kipaumbele cha rendi (Z-Layer). |
0x0003 | uint(8) | Subframe-Id | Inaonyesha ni katika subframe gani tulipo |
0x0004 | sint(16) | Offset - Kiwango cha Usawa | Inaeleza wapi ndani ya fremu subframe inapaswa kuwekwa, au ni kwa kiasi gani pikseli bitmap inapaswa kusogezwa kwa usawa |
0x0006 | sint(16) | Offset - Wima | Onyesha mahali ndani ya fremu ambapo subframe inapaswa kuwekwa, au ni kwa kiasi gani pixels bitmap inapaswa kusogezwa wima |
Hivi sasa tunaweza kuunganisha frame moja moja, pamoja na animation kamili, hapa tunaonyesha mfano wa animation ngumu, animation yenye index 500.
Uhuishaji 500
Animation 500 inaonyesha jinsi ya kubeba na kutolewa kwa Plymouth-Transporter, ambao umejaa madini ya kawaida. Hii ni moja ya animation chache zinazotumia kazi ya Windowing.
Hivyo, animation kamili inaweza kuunganishwa.
Kwa bahati mbaya, bado kuna tatizo na mlango wa juu wa kuingilia, kwani hapa kipande husika katika taarifa ya aina ya grafiki hakijatumika.
Hapa kuna baadhi ya sprites nyingine nzuri sana zenye animation kutoka mchezo:
Kichakataji cha Mtumiaji
Sasa inabaki tu kuunda interface ya mtumiaji ya mchezo, ambayo imeandaliwa kwa muonekano wa metali iliyosafishwa.
Lakini pia hapa inaonekana kwamba Dynamix haikuhitaji kuunda tena mduara; hapa si tu kwamba inatumia APIs za User32 na GDI32 zinazotolewa na Windows - haswa pia inatumia usimamizi wa rasilimali kutoka User32.
Hizi zinaweza kutolewa kwa mfano kupitia programu kama ile iliyotengenezwa na Angus Johnson kama freeware Resource Hacker, au - ikiwa unakwepa kutumia Wine kwenye Linux / Mac OS - kwa msaada wa wrestool iliyojumuishwa kwenye icoutils.
Jina la Faili | Maudhui |
---|---|
Outpost2.exe | Inaonyesha tu ikoni ya mchezo, ambayo inaonesha kituo cha anga za mbali mbele ya New Terra |
op2shres.dll | Inajumuisha picha za vipengee vya kudhibiti kama mipaka, mabandiko, mabandiko ya redio na masanduku ya kuangalia, pamoja na mandharinyuma ya mazungumzo, picha za kusaidia za maandiko ya hadithi ya misheni na picha ya mandharinyuma ya menyu kuu |
out2res.dll | Inajumuisha mapambo ya dirisha la ndani ya mchezo, ikoni za chuma cha kawaida na maalum, skrini ya upakuzi, picha za mazungumzo pamoja na picha nyingine za cursor, pamoja na picha zinazohamashika katika saraka ya mchezo |