Nā ʻano faila o ka Outpost 2 · bei.pm

Ua hoʻololi ʻia kēia kīʻaha e nā ʻīpuka ʻike o OpenAI GPT-4o Mini.

Nā ʻano faila i hoʻololi ʻia ma kēia ʻāina e pili ana i ka ʻākau o nā ʻāina kūlana o ka nohona o Dynamix, Inc. a me Sierra Entertainment.
ʻO nā pono ʻāina, i kēia lā, he mau ʻāpana o Activision Publishing, Inc. / Activision Blizzard, Inc. a i kēia manawa, aia ia i loko o ka mea e noho ana o Microsoft Corp..

Nā ʻike i hōʻiliʻili ʻia e ke koho ʻana o Reverse Engineering a me Datenanalyse no ka pahuhopu o ka mālama ʻana a me ka hoʻokomo ʻana i nā ʻike kūloko.
Aʻohe mau kikoʻī kūʻokoʻa a i ʻole ʻike kākoʻo i hoʻohana ʻia.

Ke loaʻa nei ka pāʻani ma gog.com e like me ka kūʻai ʻana no ka hoʻoiho ʻana.

Ke kiʻi o ka pāʻani

Hoʻololi kēia ʻāpana i nā ʻike e pili ana i nā ʻano ʻike ma ke ʻano o ka pāʻani ʻo "Outpost 2: Divided Destiny", i hoʻokumu ʻia e Sierra i ka makahiki 1997 a me Dynamix.

Aia koʻu hoʻāʻo ʻana e nānā i nā ʻike o ke kaʻina hana o ka pāʻani mai ka lā 01 o Nowemapa 2015 a hiki i ka lā 14 o Nowemapa 2015.

Ke nānā aku nei i nā ʻike, ua ʻike ʻia e Dynamix - e like me nā ʻoihana kālepa ʻē aʻe - ʻaʻole lākou i hoʻokumu i nā ʻano ʻike no Outpost 2, akā, ua hoʻohana ʻia hoʻi ia mau ʻano i nā hoʻomohala ʻē aʻe e like me ka Mechwarrior-series (e hoʻololi ana).
ʻO ia hoʻi, hiki ke ʻike ʻia, ʻo ia hoʻi, ua paʻa ka mana hoʻomohala o nā ʻano ʻike a me nā manaʻo o nā ʻano ʻike maʻamau e like me JFIF a me RIFF.

No ka hana ʻana i nā kaʻina hana a me nā ʻano ʻike, e loaʻa ana nā ʻike hou aku ma lalo o He aha ia?.
ʻO nā ʻike i hoʻokomo ʻia ma ʻaneʻi, e ʻike ʻia ana i ke ʻano ʻo Little Endian.

I ka hopena, hiki ke ʻōlelo, ua ʻoluʻolu ka hoʻāʻo ʻana i ka reverse engineering, eia naʻe, ʻaʻole ia i hoʻokomo i nā mea a pau.
ʻAʻole e ʻike ʻia, akā, e manaʻo ana au e pāʻani i ka pāʻani iho, no ka mea, hāʻawi ia i nā hana pāʻani ʻoi aku ka maikaʻi.

Hoʻolauna

Nā ʻano ʻike e hoʻohana ʻia ana e Outpost 2, he ʻano e hoʻopili ana i ka JFIF / PNG - loaʻa i nā ʻāpana ʻike hoʻokomo i nā ʻōlelo ʻelima o nā byte. No laila, e mālama ana au i ka ʻike e pili ana i nā ʻōlelo ʻelima ma nā wahi kūpono a document only deviations.

He mau ʻano maʻamau kēia; ʻo nā ʻike e hoʻohana ʻia ana, e hoʻokomo ʻia ana i loko:

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Nā Pākīpika Mākau

Ua loaʻa i kēia ʻike e pili ana i ka mea e manaʻo ʻia ana i ka nānā ʻana i ka data e hiki mai ana.

Nā ʻike i ʻike ʻia:

  • 0x204C4F56 ('VOL '):
    Kākoʻo
  • 0x686C6F76 ('VOLH'):
    Kākoʻo-Header
  • 0x736C6F76 ('VOLS'):
    Kākoʻo-Strings
  • 0x696C6F76 ('VOLI'):
    Kākoʻo-Mōʻī
  • 0x4B4C4256 ('BLCK'):
    Kākoʻo-Block
  • 0x504D4250 ('PBMP'):
    Nā ʻike kiʻi
  • 0x4C415050 ('PPAL'):
    Palena ʻākoakoa
  • 0x4C415043 ('CPAL'):
    Container Palena ʻākoakoa
  • 0x64616568 ('head'):
    Header
  • 0x61746164 ('data'):
    Nā ʻike hoʻohana
0x0004 uint(24) Lāʻau o ke kukui

Ua loaʻa ka ʻike e pili ana i ka nui (i nā byte) o kēia data block e hiki mai ana.

O ia hoʻi, ʻo nā ʻike no ka hoʻohana wale nō - ʻaʻohe o nā header byte 8 i loko.

0x0007 uint(8) Nā puke?

ʻAʻole ʻike ʻia, no ke aha kēia blo kū hoʻokumu.

Ma nā Volumes, he 0x80 kēia mea, a ma nā faila ʻē aʻe, he 0x00 ko lākou. ʻO ia hoʻi, e komo ana i loko o kahi ʻākau.

Nā Pākīpika

Aia nā Volumes i loko o ke ʻano o nā pahu ʻike no ke koho pāʻani, e like me ke ʻano o nā waihona e like me ka Tarball. I loko o ka Outpost 2, ʻike ʻia ke ʻano o nā faila wale nō - ʻaʻohe mau pahu. Hoʻopili ʻia nō ia mau faila e nā inoa faila kūpono.

O nā Volume, e noho ana i loko o ke poʻo o ka Volume a me nā Pākīpika Volume ʻelua, e hoʻokomo i nā faila kūʻokoʻa.

"O nā 'Volumes' nā faila me ka hopena 'vol' i loko o ke ala o ke koho pāʻani.

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Nā Pākīpika Mana
0x0004 uint(24) Lōʻihi Pākuʻi
0x0007 uint(8) Nā hōʻailona

Kīwaha ʻŌlelo

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Nā Pākīpika Mana
0x0004 uint(24) Lōʻihi Pākuʻi
0x0007 uint(8) Nā hōʻailona

Aia i loko o ka ʻīpuka volume, ʻaʻohe ʻike e pili ana i nā ʻike hoʻohana.
O ia hoʻi, he pahu wale nō ia.

Ma ke koho ʻana i ka ʻike mua i loko o ka ʻīpuka volume, e loaʻa ana nā ʻīpuka koʻikoʻi; e noho pū ana i nā ʻike e pili ana i ka ʻīpuka.

Nā Pākuʻi Kī

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Nā Pākīpika Mana
0x0004 uint(24) Lōʻihi Pākuʻi
0x0007 uint(8) Nā hōʻailona
ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Nā Pākīpika Mana
0x0004 uint(24) Lōʻihi Pākuʻi
0x0007 uint(8) Nā hōʻailona
0x0008 uint(32) Ka lōʻihi o ka payload

Hoʻomaopopo i ka helu o nā bytes o nā ʻike e pili ana i nā mea i ʻike ʻia.

ʻO nā ʻike koena, e noho ana i ka loulou o nā palena, e noho ana i loko o ke kala.

I nā faila me nā lā i kēia manawa, ʻike ʻia kēia mau ' ʻike koena' i 0x00, e hōʻike ana i nā mea i loaʻa mai ka hana ʻana o ka mea hana i ka hoʻoili ʻana o ka pāʻani, eia naʻe, ʻaʻole i kōkua i ka pāʻani ke mālama ʻia nā ʻike a i ʻole.

0x000c uint(8)[] Lāʻau inoa kaʻahaʻole

O kēia he lista o nā inoa faila e hoʻomaka ana i ka 0-byte termination, e nānā ana i nā hōʻailona ASCII wale nō i loko o kēia ʻāpana ʻike.

ʻAʻohe mea e pono ai e nānā hou aku i kēia ʻāpana ʻike i ka wā e parsing ai, no ka mea, e hoʻohui ana nā ʻike o nā ʻāina me nā offsets o nā inoa faila no ka mea ʻo ia hoʻi nā ʻike e pili ana i nā Volume.

Na nā Volume Strings, he lālista ia o nā inoa faila e noho ana i loko o ka volume.

Nā ʻike e pili ana i ka nui

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Nā Pākīpika Mana
0x0004 uint(24) Lōʻihi Pākuʻi
0x0007 uint(8) Nā hōʻailona

Ke nā ʻike o ke ʻāina e hoʻokomo ana i nā ʻike kikoʻī e pili ana i nā faila. He ʻano lāʻau o ka FAT (FAT = File Allocation Table) kēia.

Ke loaʻa ka helu o nā faila mai ka nui o nā pākīpika e keu i ka lōʻihi o nā lāʻau kuʻikahi - 14 Byte.

Aia nā lāʻau kuʻikahi i nā ʻano e pili ana i kēia mau ʻano:

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Ka helu ʻāina o nā faila

Hoʻohana i kēia e hōʻike ai i ke koho ʻana o kahi offset (!) i loko o ka papa inoa inoa o nā faila (nā hoʻoili Volume).

O nā ʻike e pili ana i ke koho ʻana i ke kumukūʻai o ka papa ʻike.

0x0004 uint(32) Kahi ʻĀkau o ka Faila

Hōʻike i ke koho ʻana o nā kūlana i loko o ka ʻikepili o nā Volume.

0x0008 uint(32) Ka nui o ka faila

Hoʻokomo i ka nui o ka faila i loko o nā byte.

0x000c uint(16) Nā pākīpika?

Ua hoʻokomo ʻia kekahi mau ʻike hou aku e pili ana i ka hoʻohui ʻana o nā faila.

  • 0x03 ua hoʻokomo ʻia, inā ua hoʻomaikaʻi ʻia ka faila. Eia kekahi, e hoʻohana ana i ka lāʻau Huffmann.
  • 0x80 ua hoʻokomo ʻia, e like me nā manaʻo.

Ka Pākīpika Kī

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Nā Pākīpika Mana
0x0004 uint(24) Lōʻihi Pākuʻi
0x0007 uint(8) Nā hōʻailona

He kaʻākoʻo volume kēia, he container e mālama ana i nā faila. Aia nō hoʻi, no ka mea o ka ʻano block, he ʻelua ka nui o nā faila a me nā ʻike e pili ana i nā mea e hoʻohana ʻia.

Nā pāka hoʻonani

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 50 42 4d 50 -- -- -- -- -- -- -- -- -- -- -- -- P B M P . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Nā Pākīpika Makālei
0x0004 uint(24) Lāʻau lōʻihi
0x0007 uint(8) Nā hālau

Na nā Tiles, he ʻano Bitmap kiʻi kū hoʻokumu no ka Outpost-2. E hoʻokuʻu lākou i nā Tilesets 13, ʻo ia hoʻi, "wells" (well0000.bmp a hiki i well0012.bmp), ʻo ia hoʻi i loko o ka volume maps.vol.

No laila, loaʻa i nā Tilesets / Wells kēia mau mea:

Inoa Faila Nā ʻIke
well0000.bmp He kiʻi ʻākau, 32x32px ka nui - kūpono no ka hoʻāʻo ʻana inā hana ka mea hoʻoili kiʻi
well0001.bmp Hoʻokomo i ke kōnaka ʻālohilohi, nā kuahiwi ma ke kōnaka ʻālohilohi a me nā ʻano like ʻole o nā puka i ka ke kōnaka ʻālohilohi
well0002.bmp Hoʻokomo i nā 'Doodads' ke kōnaka ʻālohilohi - ʻo ia hoʻi nā ʻelima e hiki ke hoʻokomo ʻia no ka hoʻokomo ʻana (a i ʻole ma ke ʻano he kūlana, e like me nā pā) ma ke kōnaka ʻālohilohi, me nā mea lāʻau pū kekahi
well0003.bmp Hoʻokomo i kekahi ʻano ʻākoakoa ma ke kōnaka ʻālohilohi
well0004.bmp Hoʻokomo i ke kōnaka ʻēkau, nā kuahiwi ma ke kōnaka ʻēkau a me nā ʻano like ʻole o nā puka i ke kōnaka ʻēkau
well0005.bmp Hoʻokomo i nā 'Doodads' ke kōnaka ʻēkau - ʻo ia hoʻi nā ʻelima e hiki ke hoʻokomo ʻia no ka hoʻokomo ʻana (a i ʻole ma ke ʻano he kūlana, e like me nā pā) ma ke kōnaka ʻēkau
well0006.bmp Hoʻokomo i kekahi ʻano ʻākoakoa ma ke kōnaka ʻēkau, me nā ʻākau ma waena o ke kōnaka ʻālohilohi a me ke kōnaka ʻēkau
well0007.bmp Hoʻokomo i ke lava i ka lāʻau me nā kiʻi 4-5 o ka hoʻoikaika ʻana o ia mau kiʻi
well0008.bmp Hoʻokomo i ka lāʻau a me nā ʻano like ʻole o nā puka i ka lāʻau
well0009.bmp Hoʻokomo i nā 'Doodads' lāʻau - ʻo ia hoʻi nā ʻelima e hiki ke hoʻokomo ʻia no ka hoʻokomo ʻana (a i ʻole ma ke ʻano he kūlana, e like me nā pā) ma ka lāʻau
well0010.bmp Hoʻokomo i nā ʻākau 48 mai ke lāʻau a i ke kōnaka ʻālohilohi a me ke kōnaka ʻēkau
well0011.bmp Hoʻokomo i nā kapakahi o ke kaʻa, me ke kōnaka ʻēkau ma ke kumu
well0012.bmp Hoʻokomo i nā kapakahi o ke kaʻa, me ke kōnaka ʻālohilohi ma ke kumu

He mea kūpono e mālama i ka ʻike pono, ʻaʻole e hoʻomaikaʻi i nā Tiles ma mua, no ka mea, e pono e hana i nā ʻike no ka lā/poʻi ʻākoakoa, a he nui nā ʻike e hōʻea mai.

ʻO nā Tiles he kiʻi 8bpp me ka palena i hoʻonohonoho ʻia i nā palena 32x32 pikseli, e hoʻokomo pū ana. I loko o kēia Tileset e loaʻa ka nui aku o nā

ʻO ke kumu container ʻo ia hoʻi e noho ana mai 2 mau ʻāpana: head a me data.

Kūlana Pākuʻi

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Nā Pākīpika Makālei
0x0004 uint(24) Lāʻau lōʻihi
0x0007 uint(8) Nā hālau
0x0008 uint(32) Nā Loli / Pākīpika?

O kēia, eia, he hōʻike manaʻo o ka ʻano o ka faila; i nā faila a pau i loaʻa iaʻu, ua waiho ʻia ma ʻaneʻi ke kuleana 0x02

0x000c uint(32) Ka laula (Hoʻololi i ke ʻano o nā kiʻi)

Hoʻohana kēia e hōʻike i ke anawaena o ka ʻike kiʻi (ma nā pikselu).

I nā well a pau o ka Outpost 2, e hoʻolike ʻia i ke kumu 0x20 a i ʻole 32.

0x0010 uint(32) Hoʻokomo (Ke kaʻina ʻike i ke kūlana)

Ke hōʻike i ke kiʻekiʻe o ka kiʻi (i loko o nā pika).

No nā wells a pau o Outpost 2, e ʻike ʻia ana ka mea 0x20 a i ʻole 32 ma ʻaneʻi.

0x0014 uint(32) ʻO ka hohonu o nā waihoʻoluʻu?

O ke koho ʻana o kēia mea, ʻaʻole ʻike ʻia.

No ka mea, aia i nā faila i nānā ʻia, loaʻa ka mea 8, e hiki iā ia ke ʻano o ka ʻike ʻana i ke kūlana o nā kala.

0x0018 uint(32) ʻO ka hohonu kala 2?

O ka manaʻo o kēia mau helu, he mea ʻike ʻole.

Pehea lā, he 'nā lāʻau' kona ʻano ʻākoakoa.

Mai nā ʻike e loaʻa ana he faila palena i loko o ke ʻano RIFF kūlana. Aia ka ʻike kūpono ma - no ka mea, e ʻike ʻia nā palena i nā wahi ʻē aʻe - ma lalo o Nā Palena kolor.

Nā ʻike o nā papa

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Nā Pākīpika Makālei
0x0004 uint(24) Lāʻau lōʻihi
0x0007 uint(8) Nā hālau

I ka hopena, e ʻike ʻia ana nā ʻikepili pixel, mai ke kihi ʻākau o luna, e hele ana i lalo i ke kihi ʻākau.
ʻO ka ʻikepili i loko o nā kiʻi e noho ana ma ke ʻano he 8bpp-Bitmaps, e pili ana i ka ʻike o ka waihoʻoluʻu i loko o ka palena waihoʻoluʻu.

Hoʻomaka nā ʻikepili pixel ma luna ʻākau a pau ka ʻākau.

Ke nā mea pāʻani, e hoʻomohala ana i nā tiles *e manaʻo ʻia* ma ke koho ʻana.
He mea kēia e pili ana i ke koho ʻana o ka lā a me ke po, e loaʻa ana nā 32 mau ʻano o nā tiles. Eia naʻe, e ʻike ʻia ana, e hoʻomaikaʻi ʻia ana nā manaʻo o ke aniani me nā 'kahi liʻiliʻi'. ʻAʻole hiki ke ʻike i nā ʻike pololei, e hana ana au i nā ʻano helu

v *= (daylight / 48) + 0.25;

ma nā ʻike HSV o nā pixel, me ka 'daylight' he mau ʻano 0-31 a me 'v' he mau ʻano 0-1. Eia kekahi, e ʻano like pū ana ke 'map' me nā 'kahi' 16 i ke kula a me nā 'kahi' 16 i ke kūkulu (no ka ho'ohana ʻole i nā mea).

I ka mea hou aku, he ʻike ʻia o ke koho ʻana o ka lā a me ke po e hoʻomaikaʻi ana i hoʻokahi mau kolamu o ka map i kēlā me kēia kaʻina pāʻani.
No laila, e like me nā ʻano lā a me ke po, e like me kēia:

Hoʻonohonoho ʻana i ke koho ʻana o ka lā a me ke po

PRT

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 43 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- C P A L . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Nā Pākīpika Kelea
0x0004 uint(24) Ka lōʻihi o nā palena

E noho ana, e kū i ka palena koʻikoʻi, e hōʻike i ka helu o nā palena i loaʻa i kēia faila - ʻaʻole i ka lōʻihi o ka pā i ka byte.

0x0007 uint(8) Nā lāʻau

Naʻe, e like me ka maʻamau, nā flag.

Akā, ʻaʻole au i ʻike i nā flag; no ka mea, ʻo nā mea a pau i ʻike ʻia e pili ana i kaʻu ʻike ʻana, ʻo ia hoʻi 0x00, ʻike pū ʻia, hiki iā ia ke noʻonoʻo i ka nui o nā palena he mau uint(32).

Aia ka ʻike ʻole i ka mea e pili ana i ka hoʻokumu ʻana o PRT; e noho ana i ka manaʻo e like me 'Palette and Resource Table' - no ka mea, ʻo ia kēia faila - e loaʻa ana ʻo ia ka op2_art.prt i loko o ka maps.vol - he ʻano ia, a i ʻole e hiki ke wehewehe i kēia hana ma ke ʻano maikaʻi.

Hoʻokomo kēia faila i kahi papa o nā palena, kahi papa e pili ana i nā bitmap āpau i hoʻohana ʻia, nā kaʻina hana hoʻololi a me kekahi mau ʻike kū ʻole. E noho ana ia i ke ʻano container o nā ʻike i loko, akā ʻaʻole i nānā nā ʻike a pau i kēia ʻano.

ʻO ka ʻāpana CPAL (no ka mea e pili ana i ka palena container) e hoʻokomo ana i nā ʻike palena, e hōʻike ana i ke koho i nā palena ʻelima i nā 1052 byte me nā palena 8-Bit i loaʻa.

ʻO ka ʻike 1052-byte, ʻaʻole ua hoʻokumu ʻia, no ka mea, e hiki ke loaʻa nā palena like ʻole. E noho ana ia no nā ʻike e hāʻawi ʻia ana me Outpost 2.

Muia hoʻi i nā papa palena, e noho pū ana a me nā nīnau, e noho ana nā bitmap; nā palena hoʻololi e pili pū ana.
E hoʻokumu ʻia nā mea ʻelua me ka uint(32) (a i ʻole e ʻike ʻia uint24+uint8 nā hōʻailona?) e noho ana i ka helu o nā ʻike.

Nā Palena kolor

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 50 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- P P A L . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Nā Pūerto Makawalu
0x0004 uint(24) Lōʻihi o nā palena

E hōʻike i ka nui o nā palena i loaʻa i kēia faila, ʻaʻole i ka lōʻihi o ka pā i nā byte.

0x0007 uint(8) Nā Pākīpika

Ke manaʻo ʻia, me nā flag maʻamau.

O nā flag, ʻaʻole ʻike au; no ka mea, ʻo nā mea a pau e ʻike ʻia ana e nā waiwai 0x00, loaʻa pū ʻia ka manaʻo e hiki nō ke noho ka helu o nā palena he mau uint(32).

Aia nā ʻike palena i loko o ka ʻoluʻolu.
Kū ʻia lākou mai ke poʻo a me ke ʻano ʻōlelo.

Hoʻololi Palena

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Nā Pūerto Makawalu
0x0004 uint(24) Lōʻihi o nā palena

E hōʻike i ka nui o nā palena i loaʻa i kēia faila, ʻaʻole i ka lōʻihi o ka pā i nā byte.

0x0007 uint(8) Nā Pākīpika

Ke manaʻo ʻia, me nā flag maʻamau.

O nā flag, ʻaʻole ʻike au; no ka mea, ʻo nā mea a pau e ʻike ʻia ana e nā waiwai 0x00, loaʻa pū ʻia ka manaʻo e hiki nō ke noho ka helu o nā palena he mau uint(32).

0x0008 uint(32) Pūerto palena?

Hoʻohana ʻia e hoʻokumu i ka lāʻau palena o nā ʻano palena palena e noho ana i ke ʻano palena.

A pau nā palena Outpost2 e ʻike ʻia ana me ke ʻano 0x01.

Nā ʻike o nā palena

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Nā Pūerto Makawalu
0x0004 uint(24) Lōʻihi o ke kīʻaha
0x0007 uint(8) Nā Pākīpika

Ke nā ʻāina ʻike, e noho ana nā palena palena. O nā palena palena e loaʻa ana, e like me ka lōʻihi o ka ʻākau / 4.

Aia nā palena hoʻokomo i kēia mau ʻano maʻalahi;

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 -- -- -- 04 -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(8) Nā ʻĀkau ʻUla

Hāʻawi i ka ʻāpana ʻula o ka waihoʻoluʻu

0x0001 uint(8) Komponen kuʻina ʻōmaʻomaʻo

Hana i ka ʻāpana ʻōlinolino o ke kala

0x0002 uint(8) Komo waihoʻoluʻu ʻōmika

Hoʻohālikelike i ka ʻāpana keʻokeʻo o ke kala

0x0003 uint(8) Hoʻōlelo ʻole - Nā hīnaʻi?

Ua ʻole ke ʻike aku i ka mea e hoʻomanaʻo ʻia ai kēia kuleana, no ka mea, ua ʻike ʻia kēia 0x04 ma ke ʻano he kumu.

No ka palena, e hōʻike ʻia ana, ʻo ia hoʻi, no nā palena e hoʻohana ʻia no nā animation, ʻo nā kuleana e pili ana i kēia mau palena:

  • ʻo ka waihoʻoluʻu mua, he mea PŪʻE ʻO ia, me nā mea āpau e hoʻololi ʻia i loko.
  • ʻo nā palena e komo i loko o 1-24, e pili ana i nā palena 1-8, e noho ana ʻo ia nā waihoʻoluʻu o nā mea pāʻani.
    ʻo kahi e loaʻa ai nā waihoʻoluʻu e noho ana i nā mea pāʻani ʻē aʻe, ʻaʻole maopopo iaʻu.
    ʻo wau e noʻonoʻo ana, ʻo nā waihoʻoluʻu e noho pū ana i hoʻokomo ʻole ʻia.

Palena ʻIke

Nā kiʻi pixel

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Keʻano o ka laulā

Ke hōʻike i ka laula o nā laina ʻikepili i loko o nā byte - no ka mea, ua hoʻokomo ʻia ia i nā palena 4-byte.

No laila, maʻalahi ia e ʻike i kahi laina kiʻi koʻikoʻi.

He mea ʻole ke ʻike ʻia, no ke aha e mālama ʻia ai kēia mea i loko, i ʻole e hiki ke helu ʻia, akā, ua noho kēia i loko o ka manaʻo.


Aia paha he mea hoʻomaikaʻi no ka ʻākoakoa kiʻi.
0x0004 uint(32) Hoʻopili

Hōʻike i ka offset o ka lāʻau mua ma ke kiʻi bitmap

0x0008 uint(32) ka kiʻekiʻe

Hoʻololi i ka kiʻekiʻe o ka kiʻi i nā piksel

0x000c uint(32) ʻĀkau

E hāʻawi i ka laula o ka kiʻi ma nā pika

0x0010 uint(16) Kino

E hōʻike ana i ke ʻano o ka kiʻi. E like me kēia, ke manaʻo ʻia he Bitmaske kēia:

  • 0x04 e hoʻokomo ʻia, inā he 1bpp kiʻi.
  • 0x40 e hoʻokomo ʻia, inā he kiʻi e pono ai e hoʻokō i ka Windowing
0x0012 uint(16) Pāleka

Hoʻokumu i ka palena e hoʻohana ʻia mai ka PRT faila

O kēia ʻano ʻikepili o ka PRT-pūerto e hōʻike ana i ke ʻano o nā bitmap i hoʻohana ʻia no nā sprite. Aia nā bitmap e like me ke ʻano hoʻokomo, mai nā mea i hoʻokomo ʻia i loko o kahi ʻāpana o ke anaina o nā sprite.

Aia nā ʻike kiʻi kū hoʻokahi i loko o ka op2_art.BMP ma ke koho pāʻani.
O ke kumu e loaʻa ai kēia bitmap i hoʻokomo ʻia e kekahi (nui i hoʻokomo) RIFF-bitmap header, he mea kū ʻia. Eia naʻe, he mea kūpono e hoʻohana ana o Outpost 2 i nā API kūloko no ka hoʻoiho ʻana i nā kiʻi, ma ke ʻano e hoʻokomo ʻia ana kēia header no ka manawa a me nā wahi e manaʻo ʻia, e hoʻololi ʻia.

Aia nā ʻike pixel i loko o ka BMP-pūerto ma ke ʻano o ke koho Offset + ke uint32-Offset, ʻo ia hoʻi e loaʻa i ka BMP-pūerto ma ke koho 0x000A (RIFF-bitmap data offset), e hoʻihoʻi ana i ka hoʻokomo ʻana i nā laina o ka ʻākau a i ʻole.

Hiki i nā kiʻi monochrome 1bpp ke hoʻokomo ʻia e like me kēia, e noho ana ke kala 0 i ka ʻike ʻike ʻole, a me ke kala 1 ʻo ia hoʻi he ʻākau ʻākoakoa me nā ʻana ʻē aʻe, no ka mea, e hoʻohana ʻia ana nā kiʻi monochrome i nā hōʻike ʻana o nā kaʻa a me nā hale i loko o nā ʻike.

I kēia ʻano, hiki iā ʻoe ke hoʻokomo i nā kiʻi he nui.

Ke module wahi e pale ana (Plymouth)

Nā hoʻololi kiʻi

Eia hoʻi mākou i ke ʻano kiʻekiʻe o nā kaʻina hana i loko o nā ʻōnaehana ʻikepili o Outpost 2:
Nā ʻanuʻu.

Hoʻomaka nā palena ʻanuʻu me ke poʻo kūloko, e noho ana i ke kuleana no ka hōʻoia ʻana i nā ʻike, a laila e pili ana i nā wehewehe ʻanuʻu e kū nei i nā kuleana ʻekolu:

  1. ʻAnuʻu
    He ʻanuʻu kēia i mea e hōʻike ana i ke ʻano o ka ʻāina, ke kūlana o ke kūlana, a i ʻole ke ʻano 'partikala' (ka hāʻule ʻana o nā kīhāpai, ka wā, ka pōʻino) i loko o kekahi mau kūlana e hoʻokumu ʻia.
  2. Frame
    He kiʻi hoʻokahi kēia i loko o kahi ʻanuʻu. He manaʻo ko nā ʻanuʻu e hoʻokomo i hoʻokahi a i ʻole nā ​​frames.
  3. Subframe
    He ʻike kēia e pili ana i ka ʻike e pili ana i ka ʻike Bitmap e draw i kekahi mau kūlana i loko o ka hoʻokomo ʻana o kahi frame. He manaʻo ko nā frames e hoʻokomo i hoʻokahi a i ʻole nā ​​subframes.

A laila, e komo wale ana nā wehewehe ʻanuʻu.

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) Ke kaʻina hana ʻana o nā hoʻololi

Ehia mau ʻike ʻikepili kiʻi e loaʻa ana

0x0004 uint(32) Nui o nā kiʻi

Ehia mau frames e pono ai e loaʻa i loko o ia mau mea a pau

0x0008 uint(32) ʻO nā helu subframes.

O nā subframe e pono ai e loaʻa i loko o ka ʻike.

0x000c uint(32) Nui o nā koho kūpono

Pehea ka nui o nā "nā koho i hoʻokomo ʻia" e loaʻa ana.

Hoʻololi

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0020 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(32) ʻAʻohe ʻike 1

Nā ʻike kūloko

0x0004 uint(32) Ke Kīʻaha Pā: Nā Pākīpika

Hāʻawi i ke koho ʻana o ka hoʻomaka i loko o nā pikselu no ka Bounding Box.

0x0008 uint(32) Ke Kīpuka: I loko o ke alanui

Hoʻolauna i ke koho kiʻekiʻe (i loko o nā piksel) o ka Bounding Box.

0x000c uint(32) Kākoʻo ʻĀkau: Lōʻihi

Hāpai i ka anawaena (i loko o nā piksel) o ka Bounding Box.

0x0010 uint(32) Keʻena Pōkole: Kiaʻi

Mea komo i ke kiʻekiʻe (i loko o nā pīkī) o ka Bounding Box.

0x0014 uint(32) Hoʻopili: X

Hoʻihoʻi i ke kikowaena o ke ʻano ʻana

0x0018 uint(32) Hoʻonohonoho: Y

Ke hōʻike i ke kūlana waena o ke aniani

0x001c uint(32) ʻAʻole ʻike ʻia 2

Hoʻolauna Kumu ʻike ʻole

0x0020 uint(32) Nui o nā kiʻi

Hoʻolauna i ke koho o nā frame animation i loko o kēia animation

0x0024 uint(32) Nui nā puka Windows

Hoʻokaika i ka helu o nā puka i ka hoʻokomo ʻana.

ʻo nā ʻike o ke ʻano kiʻekiʻe, ʻo ia hoʻi ka hoʻoikaika ʻana, he mau ʻike mālama ia - ʻo ia hoʻi, ʻo Boundingbox ke ʻano o nā koordina i hoʻokomo ʻia e pili ana i ka mea hoʻoikaika/ke kūlana, inā ua koho ʻia ia, a hāʻawi pū hoʻi i ka ʻike e pili ana i ke kikowaena e hiki ke paʻi.

ʻo ka Offset i hoʻokomo ʻia e mālama i ka "pūerto"; ʻo ia hoʻi, ke kūlana e loaʻa i nā koordina ma loko o ka pāʻani a e kāpili i kēia mau koordina. Hiki ke ʻōlelo i ke ʻano matematikal: ʻo ka Offset e hōʻike ana i kēia ka kumu koordina.

ʻo nā Windows, me nā Offset pū kekahi, he mau (no kēlā me kēia Window) 4 uint(32)-manaʻo, e hōʻike ana i kahi e kūpono ana no nā subframes hoʻokomo. I waho o nā Windows, inā he mea e hoʻokomo ʻia i nā Bitmap, ʻaʻole kūpono e paʻi.

Ka ʻŌuli

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(8) Ka helu o nā subframe a me ka toggle no ka ʻoihana 1, 2

Ua loaʻa kēia waiwai:

  • 0x7F (Māmā Pākuʻi): Ke ʻano o nā subframe e hoʻohana ʻia ana i kēia frame
  • 0x80: Ka ʻike e pili ana i ka loaʻa ʻana o nā koho 1 a me 2
0x0001 uint(8) ʻAʻohe ʻike 1 a me ka hoʻokaʻawale no nā koho 3, 4

He mea kēia:

  • 0x7F (Pākuʻi): ʻAʻole ʻike ʻia - Manaʻo koʻu manaʻo, ʻo ia hoʻi, he nui nā Gameticks e noho ana, a hiki i ka ʻike ʻana i ka frame aʻe
  • 0x80: Ka ʻike e pili ana i ke koho ʻana o 3 a me 4
0x0002 uint(8) Hoʻohālikelike 1

ʻAʻohe ʻike

0x0003 uint(8) O nā koho 2

ʻAʻohe ʻike

0x0004 uint(8) Kākoʻo 3

ʻAʻohe ʻike

0x0005 uint(8) Hoʻohui 4

ʻAʻohe ʻike

Ka ʻĀkau

ʻĀkau x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF nā hōʻailona
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Kākoʻo ʻIkeʻike o nā ʻike Kumu inoa Nā ʻōlelo hoʻomaopopo
0x0000 uint(16) Bitmap-Id

E hoʻomaikaʻi i ka Bitmap e hoʻohana ʻia no kēia Subframe

0x0002 uint(8) ʻAʻohe ʻike 1

He mea ʻike ʻole - akā, manaʻo au he mea e pili ana i ka mana render (Z-Layer) kēia.

0x0003 uint(8) Subframe-Id

Hoʻokomo i loko o ka lāʻau e noho ana mākou

0x0004 sint(16) Hoʻokomo - Kōmike

Hoʻolauna i kahi e hoʻokomo ai i ka subframe ma loko o ka frame, a i ʻole pehea e hoʻololi ai i nā pikselu i ke ʻano o ka bitmap.

0x0006 sint(16) Hoʻonohonoho - Kēkau

E hōʻike ana i ke koho ʻana i kahi i loko o ka frame e hoʻokomo ai i ka subframe, a i ʻole e pili ana i ke koho ʻana i nā pixel e hoʻokomo i ke kiʻi i loko o ka piha.

No laila, hiki iā mākou ke hoʻopili i nā frame kū hoʻokumu, a me nā ʻānai piha i hoʻokomo pū ʻia, e hōʻike ana i nā mea e pili ana i ka hoʻokuʻikahi paʻakikī, me ka hoʻokuʻu ʻana i ka hoʻokuʻu ʻana me ka inoa 500

Hoʻololi 500

Hoʻololi 500 e hōʻike ana i ke koho ʻana o ka Plymouth-Transporter, e hoʻoikaika ʻia me nā ʻōpala maʻamau. ʻO ia hoʻi, he mea ʻelima o nā hoʻololi i hoʻohana i ke kūlana ʻāina.

Aia hoʻi ka hui ʻana i ka hoʻololi piha.
Eia naʻe, aia kekahi pilikia me ka ʻūhā kiʻekiʻe, no ka mea, ʻaʻole i hoʻokomo ʻia ka ʻāpana pili i ka ʻike ʻano kiʻi.

Eia kekahi mau sprit ʻelima, hōʻoluʻolu i nā kiʻi e nānā i ka pāʻani:

Ke hōʻike ʻia ka hoʻoili ʻana o ka hoʻololi 500

Hoʻopiha ka hoʻololi 500 i ka hui ʻana

Ka Hale Pākīpika o Plymouth

Ke Kūkulu o Eden

Ke Kulanakauhale Hoʻola o Eden

SCAT

Ke Kūkulu o Plymouth

Easteregg:
Ke Kākau o nā Makahiki

Easteregg:
Ke ʻīlio o Dans

Ke ʻĀkau o ke Kamepiula

Eia hoʻi, ʻo nā mea e pili ana i ka user-interface o ke koho, e noho ana i loko o ka metala mānoanoa-ke ʻano.

A akā, e ʻike ʻia, ʻaʻole pono Dynamix e hana hou i ke aupuni; ʻaʻole hoʻokomo wale ʻia nā API User32 a me GDI32 i hāʻawi ʻia e Windows - e pili ana hoʻi i ka mālama ʻana i nā kumuhana mai User32 e hoʻohana ʻia.

E hiki nō hoʻi ke hoʻokomo ʻia nā mea kēia no nā polokalamu e like me ka mea i hoʻokumu ʻia e Angus Johnson i mea free, Resource Hacker, a i ʻole - inā ʻaʻole makemake ʻoe e hoʻohana i ka Wine ma Linux / Mac OS - me ke kōkua o ka wrestool i loko o icoutils.

Inoa Faila Kāleka
Outpost2.exe Noho wale nō i ka iʻoni o ke kēmu, e hōʻike ana i ka hale kūloko ma ke alanui New Terra
op2shres.dll Noho pū me nā kiʻi no nā mea hana e like me nā palena, nā pihi, nā pihi radio a me nā pihi koho, a me nā kumu kiʻi no nā hālāwai, nā kiʻi ʻākau no nā manaʻo kūlana a me nā kiʻi ʻākau o ke koho ʻana
out2res.dll Noho i ka hoʻololi ʻana i nā puka i loko o ke kēmu, nā iʻoni no ke aʻo a me nā metala kūikawā, ke koho ʻana o ka hoʻoili ʻana, nā kiʻi no nā hālāwai a me kiʻi iʻoni, me nā kiʻi i hoʻomākeʻaka i loko o ke kikowaena o ke kēmu