Outpost 2 Ifomethi Zezifayela · bei.pm
Amafomethi edokhumenti achazwe kule ndawo asuselwa ekuhlaziyweni kwezobuchwepheshe kobunikazi bokwakha be-Dynamix, Inc. kanye ne-Sierra Entertainment.
Ubunikazi bokwakha manje sebuye ingxenye ye-Activision Publishing, Inc.- / Activision Blizzard, Inc. futhi manje kuphathwa yi-Microsoft Corp..
Ulwazi luqoqwe ngokuqhuba Reverse Engineering kanye Datenanalyse ngenhloso yokugcinwa futhi kuhlanganyela nedatha yomlando.
Amazwibela okwakha angama-proprietary noma afihlekile awasetshenziswanga.
Umdlalo manje ungathengwa ku-gog.com njengokulanda.
Uchungechunge lwama-athikili olulandelayo lubhala ngokuqonda kwami ngama-format wedatha emidlalweni ye-strategy yesikhathi sangempela "Outpost 2: Divided Destiny", eyakhishwa nguSierra ngo-1997 futhi yathuthukiswa yiDynamix.
Ngeholo engisebenze ngalo kusukela ngo-01 Novemba 2015 kuya ku-14 Novemba 2015, ngagxila ekuhlaziyeni idatha yomdlalo - nokuthi iyenzani.
Ngezinsiza engizithole kuze kube manje, iDynamix - njengamabhizinisi amaningi ezentengiselwano - ayithuthukisanga ama-format wedatha ngokukhethekile ukuze kube se-Outpost 2, kodwa ayisebenzisa nakwezinye ukuthuthukiswa njengeMechwarrior-series (kushintshiwe).
Noma kunjalo, kubonakala ukuthi amandla okwakha ama-format wedatha akhululekile kakhulu futhi avame ukususelwa ezicini ezindala ezivela kuma-format ajwayelekile njenge-JFIF ne-RIFF.
Ngokuphathelene nokuchazwa kwamatafula namafomethi wedatha, kunezinye izinsiza ezitholakalayo ku- Yini okufanele iyiphi?.
Idatha enikeziwe lapha ngokujwayelekile ibonwa njenge-Little Endian.
Ekuqedeni, kungasho ukuthi ukuhlela kabusha kube mnandi kakhulu, nakuba kungaphelele.
Nakanjani, ngingaphinde ngincome ukuba udlale umdlalo uqobo, njengoba unikeza izindlela zokudlala ezithakazelisayo.
Intshayelelo
Izifomethi zedatha ezisetshenziswa yi-Outpost 2 zinezakhiwo ezikhumbuza i-JFIF / PNG - ama-block wedatha ngamunye anenhloko ye-byte engu-8. Ngakho-ke ngizogcina isikhathi, ngingabhali izihloko ezithile ezindaweni ezifanele futhi ngizobhala kuphela ngezinguquko.
Ifomethi ihlale ingeyona; idatha yokusetshenziswa itholakala ngaphakathi:
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Iziphathamandla Zemilingo | Ikhombisa ulwazi lokuthi yini okulindelekile emgqeni wedatha olandelayo. Imigomo eyaziwa:
|
0x0004 | uint(24) | Ubude beBlock | Lezizindaba ziqukethe ulwazi mayelana nosayizi (ngoku-Byte) wombhalo wedatha olandelayo. Kukhulunywa ngedatha yokusebenzisa kuphela - ama-Byte ayi-8 e-Header awabandakanyi kulokhu. |
0x0007 | uint(8) | Amathegi? | Akukaziwa kahle ukuthi lo mqulu usebenza kuphi. Emavolumu, le mvalue ivamise ukuba ngu-0x80, kwezinye ifayela ivamise ukuba ngu-0x00. Lokhu kukhombisa ukuthi kungase kube kuyi-flag-set. |
Izithombe
Izivolumu ziwumgqibelo wedatha yomdlalo, efana nefomethi ye-archive njenge Tarball. Nakuba i-Outpost 2 iyazi le fomethi, ithola kuphela amafayela - ayikho imibhalo. Kungenzeka ukuthi lezi zingafakazelwa ngamagama efayela afanele.
IVolume iqukethe i-volume-header kanye nezinqamuleli eziningi ze-volume ezihambisana namafayela athile.
"Izivolumu" zingamafayela anenhloso 'vol'
endaweni yomdlalo.
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Izigcawu Zemilingo | |
0x0004 | uint(24) | Ubude bebhulokhi | |
0x0007 | uint(8) | Amathegi |
Isihloko Sezinga
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Izigcawu Zemilingo | |
0x0004 | uint(24) | Ubude bebhulokhi | |
0x0007 | uint(8) | Amathegi |
I-Volume Header ayinayo imikhiqizo ethile.
Isebenza kuphela njengenhlaka.
Ngokokuqala, idatha ku-Volume Header kufanele kube ama-Volume Strings; kulandela lokho imininingwane ye-Volume.
Izintambo Zomthamo
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Izigcawu Zemilingo | |
0x0004 | uint(24) | Ubude bebhulokhi | |
0x0007 | uint(8) | Amathegi |
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Izigcawu Zemilingo | |
0x0004 | uint(24) | Ubude bebhulokhi | |
0x0007 | uint(8) | Amathegi | |
0x0008 | uint(32) | Ubude be-Payload | Ikhombisa ukuthi mangaki ama-bytes alawa madatha alungile njengamadatha asetshenziswayo. Amanye ama-data aseleyo ohlwini lwe-Volume-Strings kubonakala kufanele abhekwa njengokuthi garbage. Kwi-fayili ezine-usuku olwandulele, la 'madatha aseleyo' angama-0x00, okungase kube wuphawu lokungahambi kahle kwe-toolchain ngesikhathi sokuthuthukiswa komdlalo, okusho ukuthi umthuthukisi wakhathalela ukufakwa kahle kwamabhafa kuphela kamuva, njengoba kungathinti umdlalo ukuthi ama-data afakiwe noma cha. |
0x000c | uint(8)[] | Uhlu lwegama lefayela | Lezi yizinhlu zezimfanelo zezikhalazo eziphelele ezine-byte eziphelile, ezilindele kuphela izimpawu ze-ASCII - okungenani kule ngxenye yedatha efakiwe. Akudingeki ukuba sihlaziye le datha ngokuqinile ngesikhathi sokuhlukanisa, njengoba ama-volumu-emininingwane asevele ebhekisela ku-offsets zezimfanelo zezikhalazo ngqo. |
I-Volume Strings iyaluhlu lwegama lamafayela athi ngaphakathi kwe-Volume.
Ulwazi lweVOLUME
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Izigcawu Zemilingo | |
0x0004 | uint(24) | Ubude bebhulokhi | |
0x0007 | uint(8) | Amathegi |
Ulwazi lwe-Volume luthola ulwazi olunembile ngemafayela. Lokhu kungathathwa njengohlobo lwe-FAT (FAT = File Allocation Table) olwakha umaki wombhalo.
Inani lamafayela litholwa ngokuhlukanisa usayizi wombhoxo ngokuqhathaniswa nobude bemaki - 14 Byte.
Lezi zinkomba zefayela zinezakhiwo ezilandelayo:
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Ukuphambuka Kwamagama Wefayela | Ikhombisa ukuthi kuphi (offset) ngaphakathi kohlu lwegama lefayela (Volume-Strings) igama lefayela litholakala khona. Lokhu kubhekisela ekuqaleni kwehlaka lemininingwane. |
0x0004 | uint(32) | I-Offset yeFayela | Ikhombisa ukuthi ikuphi ukushintshwa ngaphakathi kwefayela eliphelele le-Volume. |
0x0008 | uint(32) | Usayizi wefayela | Ikhombisa ukuthi usayizi wefayela ungakanani nge-Byte. |
0x000c | uint(16) | Amathegi? | Kubonakala kunemininingwane eyengeziwe mayelana nokuhlelwa kwamafayela.
|
Isikhala Sovolumu
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Izigcawu Zemilingo | |
0x0004 | uint(24) | Ubude bebhulokhi | |
0x0007 | uint(8) | Amathegi |
I-Volume-Block iyi-container, ethatha amafayela. Iqukethe kuphela - bona ngenxa yesakhiwo se-Block - kabili usayizi wefayela futhi kulandela ngqo idatha esetshenziswayo.
Amathayela
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 42 | 4d | 50 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | B | M | P | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Imibhalo Yemagic | |
0x0004 | uint(24) | Ubude bebhlogo | |
0x0007 | uint(8) | Amathikithi |
I-Tiles yizifomathi ze-Bitmap ezikhethekile ze-Outpost-2. Zihlanganisa ama-Tilesets angu-13, abizwa ngokuthi "wells" (well0000.bmp
kuya ku-well0012.bmp
), ezitholakala ngaphakathi kwe-volumu maps.vol.
I-Tilesets / Wells ziqukethe lokhu okulandelayo:
Igama lefayela | Okuqukethwe |
---|---|
well0000.bmp | Umfanekiso omncane ongu-32x32px, oluhlaza - ufaneleka kahle njengezivivinyo zokuthi ingabe i-image-loader yakho iyasebenza |
well0001.bmp | Uqukethe litha eliphakeme, izintaba eziphakeme phezulu kwelitha eliphakeme kanye nezinhlobonhlobo ezingenamkhawulo zeziqhumane ezitholakala nelitha eliphakeme |
well0002.bmp | Uqukethe 'Doodads' lwe-litha eliphakeme - izakhi ezilungele ukuhlinzeka (noma ngokuqondile njengokwakhiwa, njengezindonga) ezitholakala nelitha eliphakeme, kuhlanganisa nevegetation |
well0003.bmp | Uqukethe isakhiwo esifana ne-crust phezulu kwelitha eliphakeme |
well0004.bmp | Uqukethe litha elinsomi, izintaba eziphakeme phezulu kwelitha elinsomi kanye nezinhlobonhlobo ezingenamkhawulo zeziqhumane ezitholakala nelitha elinsomi |
well0005.bmp | Uqukethe 'Doodads' lwe-litha elinsomi - izakhi ezilungele ukuhlinzeka (noma ngokuqondile njengokwakhiwa, njengezindonga) ezitholakala nelitha elinsomi |
well0006.bmp | Uqukethe isakhiwo esifana ne-crust phezulu kwelitha elinsomi, kanye nezinguquko phakathi kwelitha eliphakeme nelinsomi |
well0007.bmp | Uqukethe i-lava kuhlanganiswe nezithombe ezingu-4-5 zokunyakaza kwayo |
well0008.bmp | Uqukethe is sand nezinhlobonhlobo ezingenamkhawulo zeziqhumane ezitholakala esandleni |
well0009.bmp | Uqukethe 'Doodads' zesand - izakhi ezilungele ukuhlinzeka (noma ngokuqondile njengokwakhiwa, njengezindonga) ezitholakala esandleni |
well0010.bmp | Uqukethe izinguquko eziyi-48 ukusuka esandleni kuya kwelitha eliphakeme nelinsomi |
well0011.bmp | Uqukethe ama-Polar Caps eMap, ane litha elinsomi njengesisekelo |
well0012.bmp | Uqukethe ama-Polar Caps eMap, ane litha eliphakeme njengesisekelo |
Kuyasiza ukuhlela kahle, ukuthi amaTiles angakanyathelwa ngaphambi kokuba abekwe ekhadini, ngoba idatha yokujikeleza kosuku/nokuhlwa isadinga ukulungiswa - futhi kuzodingeka idatha eningi kakhulu.
AmaTiles angama-8bpp-grafiki anepalethi eyindekade, ayisigaba esingu-32x32 pixel, ahlelwe ngokuqondile. Kodwa kwiTileset enjalo, kungaba khona okungaphezulu
I-Container eyinhloko iqukethe izingxenye ezi-2: head
kanye data
.
Isihloko Sezitshalo
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Imibhalo Yemagic | |
0x0004 | uint(24) | Ubude bebhlogo | |
0x0007 | uint(8) | Amathikithi | |
0x0008 | uint(32) | Inguqulo / Amabhanoyi? | Kungenzeka ukuthi lokhu kuyinkomba ye-versions ye-format ye-file; kuzo zonke amafayela enginazo, leli nani bekungukuthi |
0x000c | uint(32) | Ububanzi (Ukuxazulula Okujolile) | Khombisa ukuthi ububanzi befayela lesithombe bukhulu kangakanani (ngaphakathi kwe-Pixel). Kuwo wonke ama-Wells e-Outpost 2, kulindeleke ukuthi kube nenani |
0x0010 | uint(32) | Ukuphakama (Ukuxazulula Okujolile) | Khombisa ukuthi iphayiphi yesithombe iphakama kangakanani (nge-Pixel). Kuwo wonke amaWells e-Outpost 2, kulindeleke ukuthi lena inani |
0x0014 | uint(32) | Ukujula kombala? | Inani leli alaziwa. Njengoba likhona kuwo wonke amafayela ahlolwe, linomsebenzi |
0x0018 | uint(32) | Ubulukhuni bombala 2? | Incazelo yalolu hlu ayaziwa. Kungenzeka ukuthi kuyi 'njongo'-ubukhulu bombala. |
Ngokwalokhu, kuzolandela ifayela lepalethi elitholakala kufomat ye-RIFF evunyelwe. Ukucaciswa okunembile kutholakala - njengoba ama-palethi ephuma nakwezinye izindawo - ngaphansi kwe Amapalethi.
Idatha yeTiles
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Imibhalo Yemagic | |
0x0004 | uint(24) | Ubude bebhlogo | |
0x0007 | uint(8) | Amathikithi |
Ukuze kube sekupheleni, sekuphume izithombe ze-pixel ezicacile, zisuka phezulu kwesobunxele ziye phansi kwesokudla.
Ikhodi yedatha kumagrafu avamise ukuba ama-8bpp-bitmaps ihambisana ne-index yombala ku-palette yombala.
i-Game Engine ibonisa ama-Tiles *mhlawumbe* on-demand.
Lokhu kubonakala kuxhumene, phakathi kokunye, ne-cycle ye-day-night, enezigaba eziyi-32 zama-Tiles ahlukene. Kubonakala ukuthi kuthathwa 'kancane' kumazinga okukhanya. Amanani anembile awakatholakala, ngisebenza ngokusekelwe ekubalwa
v *= (daylight / 48) + 0.25;
nge-HSV data ye-pixels, lapho i-daylight ingu-0-31 futhi i-v ingu-0-1. Ukuze kwenziwe kahle, kufanele kuqashelwe ukuthi emaphandleni kukhona umngcele we-Tiles eziyi-16 ngakwesokunxele nasokudla (lokhu kusetshenziselwa ukufaka ama-units engabonakali).
Okwengeziwe, i-cycle ye-day-night ibonakala ivuselela isikhala esisodwa se-map ngokuqhubekayo.
I-cycle ye-day-night esheshayo ibukeka kanje:
I-PRT
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 43 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | C | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Ama-Magic Bytes | |
0x0004 | uint(24) | Ubude bePalethi | Khombisa, ngokuphambene ne-Block format ejwayelekile, inani lemaphakeji atholakala kule fayili - hhayi ubude be-block ngo-byte. |
0x0007 | uint(8) | Amabhande | Mhlawumbe, njengajwayelekile, amafulegi. Kepha angaziwa amafulegi; njengoba wonke amanani engiwaziyo efana |
Kungani PRT
imele kahle, angazi; kungenzeka ukuthi 'Palette and Ressource Table' - njengoba le fayela - etholakala njenge op2_art.prt kwi maps.vol - ibhekisela kulokhu, noma lokhu kungachaza kahle umsebenzi.
Le fayela iqukethe uhlu lwama-palettes, ithebula le-bitmap esetshenziswe, yonke imishini yokuhlanganisa, kanye nemininingwane eminingi engaziwa. Ilandela ifomethi ye-container edlule ngokukhululeka, ngoba hhayi wonke amarekhodi alandela leli shadi.
Ingxenye CPAL
(mhlawumbe imele ama-palettes-container) ihlanganisa kuphela idatha ye-palettes, ibonisa ukuthi zingaki ze-8-Bit palettes zinezi-1052 Bytes ezivamile.
Okukhuluma ngama-1052 Bytes akubhekwa njengokubophelelekile, njengoba ifomethi ye-palettes ingase ibe nezilinganiso ezahlukene. Lokhu kubhekiselwa kuphela kumthamo wedatha, okwenziwa nge-Outpost 2.
Ngemuva kwezinhlu ze-palettes, kulandela ngqo futhi ngaphandle kokwethulwa kwe-header, uhlu lwe-bitmaps; ngokufana, kulandela uhlu lwe-animations.
Zombili zihanjiswa ngesisekelo se-uint(32) (noma futhi uint24+uint8 flags?) esiqukethe inani lamarekhodi.
Amapalethi
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Izinsiza zamanga | |
0x0004 | uint(24) | Ubude bephalethi | Inikeza, ngokuphambene ne-Block format ejwayelekile, inani lamapalethi atholakala kule fayela - hhayi ubude be-block ngama-byte. |
0x0007 | uint(8) | Amabhande | Kungenzeka, njengajwayelekile, ama-Flags. Ngaphandle kwalokho, angazi ama-Flags; njengoba wonke ama-value engiwazi afana |
Ulwazi lwezikhala lufundeka kalula.
Lwakhiwa ngentambo yokuqala kanye nesigaba sedatha.
Isihloko sePalethi
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Izinsiza zamanga | |
0x0004 | uint(24) | Ubude bephalethi | Inikeza, ngokuphambene ne-Block format ejwayelekile, inani lamapalethi atholakala kule fayela - hhayi ubude be-block ngama-byte. |
0x0007 | uint(8) | Amabhande | Kungenzeka, njengajwayelekile, ama-Flags. Ngaphandle kwalokho, angazi ama-Flags; njengoba wonke ama-value engiwazi afana |
0x0008 | uint(32) | Uhlobo lwepalethi? | Kuhlonza ukuthi yiluphi uhlobo lwephakheji lepalethi oluhambisana nepalethi. Bonke amapalethi e-Outpost2 abonakala enesigaba |
Idatha yePalethi
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Izinsiza zamanga | |
0x0004 | uint(24) | Ubude bebhlogo | |
0x0007 | uint(8) | Amabhande |
Isigaba sedatha sithatha izinhlu zephalethi ezithile. Inani lezinhlu zephalethi lihlala liyehluka ngokwelokhu ubude bebhulokhi / 4.
Izinhlu ezithile zinekulungiselelo okulula okulandelayo;
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | 04 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(8) | Ikomponenti ebomvu | Ikhombisa ingxenye ye-Rot yemibala |
0x0001 | uint(8) | Ingxenye ye-Green | Kukhombisa ingxenye eluhlaza color |
0x0002 | uint(8) | Iphuzu leBlue | Ikhombisa ingxenye ye-blue yombala |
0x0003 | uint(8) | Ayaziwa - Amathagethi? | Kuyacaca ukuthi le mvalue ayicacile, ngoba ibonakala ingu |
Okuhlobene nepalethi, kukhona okunye okufanele kushiwo, okuthi uma kukhulunywa ngepalethi ezosetshenziswa ku-animation kukhona imithetho elandelayo:
- Umbala wokuqala UYAKHANGELA ngaso sonke isikhathi, kungakhathaliseki ukuthi iyiphi inani elishiwo.
-
Izinto ze-palethi ezingu-1-24 zibalwa njengezombala zomdlali ku-palethi 1-8.
Ubani onama-umbala angaphandle komdlali wokuqala, akusobala.
Ngethukela ukuthi ama-umbala asele ahlale enziwe ngekhodi.
Ama-Bitmaps
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Ububanzi obuhlelwe kahle | Khombisa ububanzi bezigaba zedatha ze-pixel ku-Byte - ngoba lezi ziqondaniswa emaphethelweni e-4-Byte. Kanjalo, kulula ukufinyelela emgqeni ophakathi kwesithombe othile. Kungani le mvume igcinwa ngokwehlukana, nakuba ingabala, akucaci. |
0x0004 | uint(32) | Ukuphambuka | Ikhombisa i-offset yomugqa wokuqala ku-Bitmap |
0x0008 | uint(32) | Ukuphakama | Khombisa ukuphakama kwesithombe ngama-pixel |
0x000c | uint(32) | Ububanzi | Ikhombisa ububanzi besithombe nge-pixel |
0x0010 | uint(16) | Thayipha | Kukhombisa uhlobo lwe-sithombe. Kubonakala sengathi lokhu kuyi-Bitmaske:
|
0x0012 | uint(16) | Iphalethi | Ichaza ukuthi iyiphi iphalethi ephuma kufayela le-PRT okufanele isetshenziswe |
Lolu hlelo lwedatha lwefayela le-PRT lukhombisa ukuthi ama-Bitmaps asetshenziswa ku-Sprites akhiwe kanjani. Lezi zindawo ze-Bitmaps zisebenza ngokuthi zingxenye eziyodwa, eziningi zixhunywe ndawonye ukuze zenze ifreyimu ye-animethishini ye-Sprite.
Idatha ethile yezithombe ibhiddena kumafayela
op2_art.BMP emgqeni womdlalo.
Kungani leli fayela le-Bitmap line (ngokuvamile eliqondile) i-RIFF-Bitmapheader,
akucaci. Kungenzeka ukuthi u-Outpost 2 usebenzisa ama-API ezinhlelo ukuze alandele izithombe,
njengoba le header ithathwa ngezikhathi ezithile futhi izigaba ezihambisanayo, ezihlukile zibhidlikiswa.
Idatha ye-Pixel itholakala kwi-BMP-file endaweni ye Offset + uint32-Offset, etholakala kwi-BMP-file ku-adresi 0x000A (i-RIFF-Bitmap-dataoffset), - futhi iphinde ihambisane nohlelo lwezintambo ukusuka phezulu kwesokunxele ukuya phansi kwesokudla.
Izithombe ze-monochrome ezingu-1bpp zingadwetshwa njengoba umbala 0 unokuhlanzeka okuphelele, kanti umbala 1 uwumbala omnyama/grey ophakathi kokuhlanzeka, njengoba izithombe ze-monochrome zivame ukusetshenziswa ukuze zihlabe umoya ezithombeni zezimoto nemikhakha emidlalweni.
Ngakho-ke ungakwazi ukuhlanganisa izithombe eziningi.
Izinhlobonhlobo zokuhlanganisa.
Hhayi, manje sifika esigabeni esiphezulu seziqu zezikrini ngaphakathi kwezimo ze- Outpost 2:
Izenzakalo.
Uhlu lwezenzakalo luqala ngekhanda elijoliso, elihloselwe ukuqinisekisa idatha. Kulandele izincazelo ezithile zezenzakalo, ezihlukaniswe ngezitezi ezi-3:
-
Ukwenza Izenzakalo
Ukwenza izenzakalo kuwumsebenzi ophakeme; kubonisa ukwenza isenzakalo senhlangano, isakhiwo noma 'ukwenza izenzakalo' (ukuhlasela kwekhamera, isimo sezulu, ukuwa) endaweni ethile. -
Isithombe
Isithombe sikhuluma ngesithombe esisodwa ngaphakathi kokwenza izenzakalo. Ukwenza izenzakalo kungaba nesithombe esisodwa noma eziningi. -
Isithombe Esincane
Isithombe esincane sikhuluma ngemininingwane yokuthi i-Bitmap ethile kufanele iboniswe endaweni ethile yesithombe ngaphansi kwezimo ezithile. Isithombe singaba nesithombe esincane esisodwa noma eziningi.
Qhubeka, kulandela izincazelo ezithile zezenzakalo.
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Inani leziqeshana zomdwebo | Bangaki amadokhumenti okwenziwa anekhono elikhona |
0x0004 | uint(32) | Inani lemiqondo | Kangaki ama-frames kufanele abe khona ngokuphelele |
0x0008 | uint(32) | Inani leSubframes | Bangaki ama-subframe okufanele akhona ngokuphelele |
0x000c | uint(32) | Inani leziqinisekiso ezikhethwayo | Kangaki "ukufakwa okukhethwayo" okukhona. |
Ukuhamba
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(32) | Unknown 1 | Ulwazi olungaziwa |
0x0004 | uint(32) | Ibhokisi Elimnyama: Izinkomba | Kuchaza ukuqala kwesobunxele (ngama-pixel) kwe Bounding Box. |
0x0008 | uint(32) | Ibhokisi Elilinganiselwe: Phezulu | Inikeza i-Bounding Box phezulu (ngama-pixel). |
0x000c | uint(32) | Ibokhwe: Ububanzi | Ikhombisa ububanzi (ku-pixel) be Bounding Box. |
0x0010 | uint(32) | Ibhokisi elibandayo: Ukuphakama | Ikhomba ukuphakama (ngamaphikseli) kwe- Bounding Box. |
0x0014 | uint(32) | Offset: X | Ikhombisa indawo ephakathi ye-animation ngokuhamba ngokuqondile |
0x0018 | uint(32) | Offset: Y | Ikhombisa iphuzu eliphakathi kwe-anime eliphakeme |
0x001c | uint(32) | Unknown 2 | Ulwazi olungaziwa |
0x0020 | uint(32) | Inani lemiqondo | Ikhombisa ukuthi zingaki izithombe zokuhlanganisa ezikulesi sithombe sokuhluza |
0x0024 | uint(32) | Inani leWindows | Kukhomba ukuthi bangaki amawindi okufanele asetshenziswe lapho kudweba |
Idatha yeqhuzu eliphezulu, leye-animation, ikakhulu iyidatha yokuphatha - Boundingbox ibonisa ama-coordinates okubeka uphawu emotweni/nemoto, nxa lokho kukhethwe futhi iphinde ibonise ukuthi iyiphi ingxenye okufanele ikhethwe.
Offset ikakhulu ichaza "iphuzu lokuqala"; iphuzu, elidinga ukuhunyushwa kuma-coordinates okudlala. Ungathi futhi ngokwentengiso: i-offset ibonisa lapha umsuka we-coordinates.
I-Windows ihluke, njengokwe-offset, ibe (ngokwe-Windows) 4 uint(32)-amanani, abeka isikhala esithile esivunyelwe ukusetshenziswa kuma-subframes. Ngaphandle kwe-Windows, uma kwenzelwe i-Bitmap, akufanele kudwetshwe.
Isikhala
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(8) | Inani le-Subframe kanye ne-Toggle ye-Optional 1, 2 | Le msebenzi uqukethe:
|
0x0001 | uint(8) | Ungaziwa 1 kanye ne-Toggle ye-Optional 3, 4 | Le msebenzi uqukethe:
|
0x0002 | uint(8) | Okukhethwa 1 | Ingaziwa |
0x0003 | uint(8) | Okwesibili okukhethwayo | Ingaziwa |
0x0004 | uint(8) | Okwenza 3 | Ingaziwa |
0x0005 | uint(8) | Okukhethwa 4 | Ingaziwa |
iSubframe
I-Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ubcharacter | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
I-Offset | Uhlobo lwedatha | Igama leDatha | Incazelo |
---|---|---|---|
0x0000 | uint(16) | Bitmap-Id | Khombisa ukuthi iyiphi i-Bitmap okufanele isetshenziswe kulesi Subframe |
0x0002 | uint(8) | Unknown 1 | Akukaziwa - kodwa ngicabanga kakhulu ukuthi lokhu kubhekisela kwi-Render-Priorität (Z-Layer). |
0x0003 | uint(8) | Subframe-Id | Khombisa ukuthi sikhona kuphi ku-subframe |
0x0004 | sint(16) | Ukukhishwa - Okuhamba eceleni | Ikhombisa ukuthi kuphi ngaphakathi kwe-Frame okufanele kubekwe khona i-Subframe, noma ukuthi kufanele kushintshwe ama-pixel angakanani ngokuqondile i-Bitmap. |
0x0006 | sint(16) | Offset - I-Vertical | Khombisa ukuthi kuphi ngaphakathi kwefremu okufanele kufakwe khona i-subframe, noma ukuthi kufanele kushintshe kangakanani i-Bitmap ngaphezulu noma phansi ngamaphikseli. |
Ngalokhu, singakwazi ukuhlela ama-frames athile, kanye nezithombe eziphelele ngokuhambisana, lapha kukhombisa njengomfanekiso owodwa wokuhamba, ukukhethwa kokuhamba okukhombisa i-index 500.
Ukuhamba 500
Animation 500 ikhombisa indlela i-Plymouth-Transporter, elayishwe ngensimbi ejwayelekile, ekhishwa ngayo. Le yinye ye-animation ezimbalwa ezisebenzisa ukusebenza kwe-Windowing.
Futhi ngakho-ke i-animation ephelele ingahlanganiswa.
Ngokudabukisayo, kusekhona inkinga ngethuluzi eliphezulu lokulayisha, njengoba ibhithi efanele ingasethwanga kulwazi lwe-grafikhi.
Nansi eminye imifanekiso emihle, ehlanzekile ye-sprites evela emidlalweni:
Umsebenzisi-Webhu
Manje sekukhona i-User-Interface yomdlalo, ebukeka njenge metal ebhakiwe.
Kepha futhi lapha kubonakala ukuthi Dynamix akufanele aphinde akhe iwheel; lapha akuphumeleli nje ukukhipha i-User32 ne-GDI32-APIs ezitholakala ku-Windows - ikakhulukazi, kuhlelwa futhi ukuphathwa kwezinsiza ze-User32.
Lokhu kungenziwa ngokwesibonelo ngezimoto ezifana nale etholwe ku Angus Johnson njengelungelo lokusebenzisa Resource Hacker, noma - uma ungathandi ukusebenzisa i-Wine ku-Linux / Mac OS - ngokusebenzisa i-wrestool etholakala ku-icoutils.
Igama Lefa | Okuqukethwe |
---|---|
Outpost2.exe | Contains only the game's icon, which shows the space station in front of New Terra |
op2shres.dll | Contains graphics for controls such as borders, buttons, radio buttons, and checkboxes, as well as dialog backgrounds, accompanying images for the story mission texts, and the main menu background graphic |
out2res.dll | Contains in-game window decorations, icons for regular and special metal, the loading screen, graphics for dialogues, as well as other cursor graphics, in addition to the animated ones in the game directory |