Outpost 2 Formati tal-Fajls · bei.pm
Formati tal-fajls deskritti f'din il-paġna huma bbażati fuq l-analiżi tekniċi tal-proprjetà intellettwali ta' Dynamix, Inc. u Sierra Entertainment.
Il-proprjetà intellettwali hija llum parti mill-massa ta' Activision Publishing, Inc. / Activision Blizzard, Inc. u bħalissa hija fil-pussess ta' Microsoft Corp..
Informazzjoni ġiet miġbura permezz ta' Reverse Engineering u Data Analysis għal skopijiet ta' arkitettura u interoperabilità ma' data storika.
M'għandhomx ġew użati spekifikazzjonijiet proprjetarji jew konfidenzjali.
L-logħba tista' bħalissa tiġi akkwistata bħala download fuq gog.com.
L-istess serje ta' artikli tiddokumenti l-għarfien tiegħi dwar il-formati tad-data fil-logħba ta' strateġija f'real-time "Outpost 2: Divided Destiny", li ġiet ippubblikata fl-1997 minn Sierra u żviluppata minn Dynamix.
Bejn l-1 ta' Novembru 2015 u l-14 ta' Novembru 2015, jien b'mod prinċipali ħdimt fuq l-analiżi tad-data tal-logħba - u x'tagħmel magħha.
Skond l-informazzjoni li rnexxieli nikseb sa issa, Dynamix - bħalma jagħmlu tant kumpaniji kummerċjali - ma żviluppatx xi formati tad-data speċifikament għall-Outpost 2, iżda użat ukoll f'żviluppi oħra bħall-Serje Mechwarrior (bidliet).
B'mod indipendenti, għandha wkoll tiġi nnutata li l-qawwa innovattiva tal-formati tad-data hija prattikament limitata u spiss ibbażata fuq koncepti li jeżistu għal żmien twil minn formati komuni bħal JFIF u RIFF.
Għall-interpretazzjoni tal- tabeli u l-formati tad-data, hemm aktar informazzjoni disponibbli taħt X'inhu x'inhu?.
Dejta hawnhekk imsemmija għandha tiġi interpretata ġeneralment bħala Little Endian.
Fl-aħħar, tista' tgħid li l-inġinerija reversa kienet verament divertenti, anki jekk mhix kompluta.
Naturali, nista' nirrakkomanda wkoll li tilgħab il-logħba nnifisha, peress li toffri mekaniċi tal-logħob interessanti.
Introduzzjoni
L-istruttura tal-format ta' data użata minn Outpost 2 għandha struttura li tfakkar lil JFIF / PNG - il-blokki ta' data individwali dejjem ikollhom headers ta' 8 bytes. Għalhekk, ma nħossx il-bżonn li niddokumenti l-headers individwali fil-postijiet speċifiċi tagħhom, u niddokumenti hemmhekk biss id-differenzi.
Il-format huwa dejjem li ġej; id-dati reali tal-użu huma mbagħad inkorporati fih:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Bytes Maġċiċi | Fiha l-informazzjoni dwar x'għandek tistenna fil-blokk tad-data li jmiss. Valuri magħrufa:
|
0x0004 | uint(24) | Tul ta' Blokka | Fiha l-informazzjoni dwar kemm hu kbir (f'Byte) il-blokk tad-dejta li ġej. F'dan il-każ, il-pure data qed jiġu mfittxija - l-8 Header-Byte mhumiex inklużi fihom. |
0x0007 | uint(8) | Bandiere? | Mhux magħruf x'għandu dan il-Block eżattament. Fil-Volumes, dan il-valur spiss ikun 0x80, fil-fajls l-oħra spiss ikun 0x00. Dan jindika li jista' jkun li huwa sett ta' flags. |
Volumes
Fil-Volumes għandna kontenitur tad-dejta għall-logħba, simili għal format ta' arkiv bħal eżempju Tarball. Almenu fl-Outpost 2, il-format jifhem biss fajls - xejn jikkonsisti f'folderi. Probabbilment, dawn jistgħu jiġu simulati permezz ta' isimijiet ta' fajls adekwati.
Volume jikkonsisti mill-Volume-Header u minn bosta blokki tal-Volume, li jikkorrispondu għall-fajls konkret.
"Volumes" huma l-fajls biż-żewġt it-tarf 'vol'
fil-directory tal-logħba.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Bytes tal-Magija | |
0x0004 | uint(24) | Tul ta' blokk | |
0x0007 | uint(8) | Bandiere |
Intestazzjoni tal-Volum
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Bytes tal-Magija | |
0x0004 | uint(24) | Tul ta' blokk | |
0x0007 | uint(8) | Bandiere |
Il-Header tal-Volume fih l-ebda data ta' użu.
Jagħmel biss bħala kontenitur.
bħala l-ewwel data fil-Header tal-Volume għandhom ikunu l-Volume Strings; wara dan jiġu l-informazzjonijiet tal-Volume.
Strings tal-Volum
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Bytes tal-Magija | |
0x0004 | uint(24) | Tul ta' blokk | |
0x0007 | uint(8) | Bandiere |
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Bytes tal-Magija | |
0x0004 | uint(24) | Tul ta' blokk | |
0x0007 | uint(8) | Bandiere | |
0x0008 | uint(32) | Tul il-payload | Indika kemm għandha byte tal-data li ġejja huma fil-fatt data utli. Id-data l-oħra, li jibqgħu fil-lista tal-strings tal-volume, jidher li għandhom jiġu kkunsidrati bħala garbage. Fajls b'data aktar tard dawn 'il datti li jibqgħu' huma 0x00, li jista' jindika nuqqasijiet fil-toolchain waqt l-iżvilupp tal-logħba, jiġifieri, li żviluppatur ma kkonċernax ruħu b'kif għandha tkun inizjalizzata l-buffer sa tmiem l-iżvilupp, peress li m'għandux impatt fuq il-logħba jekk id-data tkun inizjalizzata jew le. |
0x000c | uint(8)[] | Lista ta' Isem tal-Fajls | Dan huwa lista ta' isimijiet ta' fajls terminata bi 0-Byte, li - mill-anqas fil-komponent tad-dejta preżenti - tidher li tistenna biss karattri ASCII. Mhux meħtieġ li tnaqqas id-dejta f'dan il-blok tad-dejta b'mod aktar dettaljat waqt li tkun qed tipparsa, peress li fil-informazzjoni tal-volum diġà jiġu referenziati direttament l-offsets ta' isimijiet il-fajls. |
Fil-Volume Strings, għandna lista ta' ismijiet ta' fajls li jinstabu fi ħdan il-volume.
Informazzjoni dwar il-Volu
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Bytes tal-Magija | |
0x0004 | uint(24) | Tul ta' blokk | |
0x0007 | uint(8) | Bandiere |
Informazzjoni dwar il-volume tinkludi informazzjoni aktar dettaljata fuq il-fajls. Din hi, f'ċertu sens, tip ta' entrata fil-verżjon FAT (FAT = File Allocation Table)
L-għadd ta' fajls jiġi kkalkulat billi l-għamla tal-blokk tiġi diviża mill-lunghezza tal-entrati tal-verżjon - 14 byte.
L-entrati individwali tal-verżjon għandhom kull wieħed struttura li ġejja:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Offset tal-Isem tal-Fajl | Indika fejn jinsab l-offset (!) fil-lista tal-isem tad-dokumenti (Volume-Strings) tal-isem tad-dokument. Dan jirreferi għall-bidu tal-blokkop ta' dejta. |
0x0004 | uint(32) | Offset tal-Fajl | Indika fejn jinsab l-offset fi ħdan il-fajl totali tal-volume. |
0x0008 | uint(32) | Id-daqs tal-fajl | Indika kemm hija kbira l-fajl f'byte. |
0x000c | uint(16) | Flags? | Jidher li hemm informazzjoni addizzjonali dwar il-kodifikazzjoni tal-fajl.
|
Blokk tal-Volum
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Bytes tal-Magija | |
0x0004 | uint(24) | Tul ta' blokk | |
0x0007 | uint(8) | Bandiere |
Blokk ta' Volum huwa kontenitur, li jimmagazzina fajls. Huwa jinkludi biss darbtejn - minħabba l-format tal-blokk - ir-redundanti tal-daqs tal-fajl u imbagħad jiġu eżatt wara d-dejta użata.
Fliex
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 42 | 4d | 50 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | B | M | P | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Bytes tal-Magija | |
0x0004 | uint(24) | Tul ta' Blokk | |
0x0007 | uint(8) | Bandiere |
Il-Tiles huma format ta' grafika bitmap speċifiku għal Outpost-2.
Huma jkopru 13 Tilesets, imsejħa "wells" (well0000.bmp
sal well0012.bmp
),
li jinsabu ġewwa l-volum maps.vol.
Il-Tilesets / Wells fihom dan li ġej:
Isem tal-Fajl | Kontenut |
---|---|
well0000.bmp | Grafika blu ta' 32x32px - ideali bħala test biex jiġbed l-attenzjoni jekk il-loader tal-immaġni tiegħek jaħdem |
well0001.bmp | Fiha roccia ċara, muntanji fuq roccia ċara u numru bla limitu ta' varjazzjonijiet ta' krateri ta' impatt fuq roccia ċara |
well0002.bmp | Fiha 'Doodads' ta' roccia ċara - jiġifieri elementi li jistgħu jiġu mdaħħlin biex jagħmlu l-ambjent aktar interessanti (jew intenzjonalment bħala struktura, bħalma huma l-ħitan) fuq roccia ċara, inkluż vegetazzjoni |
well0003.bmp | Fiha struttura krustali fuq roccia ċara |
well0004.bmp | Fiha roccia dark, muntanji fuq roccia dark u numru bla limitu ta' varjazzjonijiet ta' krateri ta' impatt fuq roccia dark |
well0005.bmp | Fiha 'Doodads' ta' roccia dark - jiġifieri elementi li jistgħu jiġu mdaħħlin biex jagħmlu l-ambjent aktar interessanti (jew intenzjonalment bħala strutturi, bħal ħitan) fuq roccia dark |
well0006.bmp | Fiha struttura krustali fuq roccia dark, kif ukoll transizzjonijiet bejn roccia ċara u dark |
well0007.bmp | Fiha lava inkluż 4-5 frammenti ta' animazzjoni tagħha |
well0008.bmp | Fiha sand u numru bla limitu ta' varjazzjonijiet ta' krateri ta' impatt fis-sand |
well0009.bmp | Fiha 'Doodads' ta' sand - jiġifieri elementi li jistgħu jiġu mdaħħlin biex jagħmlu l-ambjent aktar interessanti (jew intenzjonalment bħala strutturi, bħal ħitan) fis-sand |
well0010.bmp | Fiha 48 transizzjonijiet ta' sand għal roccia ċara u dark |
well0011.bmp | Fiha l-kappe polari tal-mappa, b'roccia dark bħala taħt |
well0012.bmp | Fiha l-kappe polari tal-mappa, b'roccia ċara bħala taħt |
Huwa rrakkomandat li ma jsirx rendering tal-tiles fil-preliminari sabiex jiġu kċaċċjati, peress li d-dejta għall-ciklu ta' ġurnata/lejl għadha għandha tiġi pproċessata - u se jinqasmu ħafna ħafna dejta.
Il-tiles huma grafika 8bpp bil-palette indicizzata ta' 32x32 pixel risoluzzjoni, li huma ordnati bejniethom. F'set tal-tiles hekk magħmul, madankollu jistgħu jkunu ħafna iktar
Il-kontenitur ewlieni jikkonsisti f'2 sezzjonijiet: head
u data
.
Intestazzjoni tal-Pjanċa
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Bytes tal-Magija | |
0x0004 | uint(24) | Tul ta' Blokk | |
0x0007 | uint(8) | Bandiere | |
0x0008 | uint(32) | Verżjoni / Bandieri? | Dan jista' jkun indikazzjoni ta' verżjoni tal-format tal-fajl; fil-fajls kollha li għandi, kienu hemm il-valur |
0x000c | uint(32) | Wisa' (Risoluzzjoni Orizzontali) | Indika kemm hi wiesgħa l-fajl tal-immaġni (f'Pixel). F'kulħadd Wells ta' Outpost 2, hawnhekk l-valur |
0x0010 | uint(32) | Twila (Riżoluzzjoni Vertikali) | Indika kemm hu għoli l-fajl tal-immaġni (f'Pixel). F'kull Well ta' Outpost 2, hawn se jkun mistenni l-valur |
0x0014 | uint(32) | Profondità tal-kuluri? | Il-valur ta' dan huwa mhux magħruf. Peress li fih fil-fajls kollha eżaminati l-valur |
0x0018 | uint(32) | Profondità tal-Kuluri 2? | Il-valur ta' dan huwa mhux magħruf. Jista' jkun li huwa 'fond ta' kulur' ta' 'għan'. |
Wara dawn l-informazzjonijiet, se jkun hemm ukoll fajl ta' palett li jinsab fil-format standardizzat RIFF. Is-speċifikazzjoni eżatta tista' ssir - peress li l-paletti jidhru wkoll f'postijiet oħra - taħt Paletti.
Data tal-Pjanji
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Bytes tal-Magija | |
0x0004 | uint(24) | Tul ta' Blokk | |
0x0007 | uint(8) | Bandiere |
Fl-aħħarnett, il-pixeldati l-aktar sempliċi jsegwu, minn fuq xellug, linja b'linja, lejn is-sotto xellug.
Il-valur tad-dejta fil-graffi li ġeneralment jinsabu bħala 8bpp-Bitmaps jikkorrispondi mal-indeks tal-kulur fil-palette tal-kuluri.
L-Engine tal-logħob tagħmel l-tiles *probabbilment* on-demand.
Dan jidher li huwa dovut, fost affarijiet oħra, għall-ciklu ta' jum u lejl li għandu 32 gradazzjonijiet ta' tiles individwali. Jidher li l-valur tal-luminosità huwa 'm'naqqas 'ftit'. Valuri eżatti għadhom ma ġewx identifikati, qed naħdem fuq il-bażi tal-kalkolu
v *= (daylight / 48) + 0.25;
bil-data tal-HSV tal-pixel, fejn daylight huwa valur minn 0-31 u v huwa valur bejn 0-1. Barra minn hekk, għandha tiġi kkunsidrata l-fatt li fuq il-map hemm żona ta' 16 tiles fuq in-naħa tax-xellug u l-lemin (li tintuża għat-twelid invisibbli ta' unitajiet).
Addizzjonalment, jidher li l-ciklu ta' jum u lejl jaġġorna biss kolonna waħda tal-map għal kull gamecycle.
Ciklu ta' jum u lejl mgħaġġel jidher hekk:
PRT
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 43 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | C | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Bytes tal-Magija | |
0x0004 | uint(24) | Tul il-Paletta | Jipprovdi, minflok il-format normali tal-blokka, in-numru ta' paletti li jista' jsib f'din il-fajl - mhux it-tul tal-blokka f'byte. |
0x0007 | uint(8) | Bandiere | Probabbli, kif in-norma, Flags. Madankollu, m'hemmx flags magħrufa; minħabba li l-valuri kollha li naf jikkorrispondu għal |
X'jifhem eżatt PRT
ma nafux; jista' jkun li jfisser 'Palette and Ressource Table' - peress li din il-fajl - li ssib bħala op2_art.prt fil maps.vol - hija bħal din, jew dan jiddeskrivi l-funzjoni tajjeb ħafna.
Din il-fajl tinkludi lista ta' paletti, tabella ta' bitmap kollha użati, id-definizzjonijiet ta' animazzjoni, u għadd ta' data mhux magħrufa. Hija ssegwi l-format tal-kontenituri preċedenti b'mod imdaqqas, peress li mhux kollha tad-dati jsegwu dan l-iskema.
Il-sezzjoni CPAL
(probabbilment tfisser kontenitur tal-paletti) tinkludi biss id-dati tal-paletti, billi tiddikjara kemm hemm paletti ta' 1052 byte ta' 8-bit.
Il-1052-byte li jidher m'għandux jiġi kkunsidrat bħala obbligatorju, peress li l-format tal-paletti jista' jinkludi daqsijiet differenti. Hija tapplika biss għall-fond tad-dati li Outpost 2 jiġi kkunsinnat bih.
Wara l-listi tal-paletti, hemm il-lista tal-bitmaps; bl-istess mod, wara jsiru l-listi tal-animazzjonijiet.
Iż-żewġi huma introdotti kull wieħed b'uint(32) (jew forsi uint24+uint8 flags?) li jikkalkula l-ammont ta' rekords.
Paletti
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Bytes tal-Magija | |
0x0004 | uint(24) | Tul il-Pallett | Tagħti, minflok il-format normali tal-blokki, in-numru ta' paletti li jistgħu jinstabu f'din il-fajl - mhux it-tul tal-blok f'bytes. |
0x0007 | uint(8) | Bandiere | Probabbli, bħal soltu, Flags. Madankollu, m'għandix xi Flags magħrufa; peress li l-valuri kollha magħrufa għalija jikkorrispondu għal |
L-informazzjoni dwar il-palette hija faċli biex tiġi aċċessata.
Huma jikkonsistu minn header u segment ta' data.
Header tal-Paletti
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Bytes tal-Magija | |
0x0004 | uint(24) | Tul il-Pallett | Tagħti, minflok il-format normali tal-blokki, in-numru ta' paletti li jistgħu jinstabu f'din il-fajl - mhux it-tul tal-blok f'bytes. |
0x0007 | uint(8) | Bandiere | Probabbli, bħal soltu, Flags. Madankollu, m'għandix xi Flags magħrufa; peress li l-valuri kollha magħrufa għalija jikkorrispondu għal |
0x0008 | uint(32) | Verżjoni tal-format tal-palette? | Jiddispjacini, li tlabt li tiġi ddefinita verżjoni tal-format tal-palett li l-paletta ssegwi. Il-paletti kollha ta' Outpost2 jidhrilhom li għandhom verżjoni |
Data tal-Paletti
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Bytes tal-Magija | |
0x0004 | uint(24) | Tul tal-Block | |
0x0007 | uint(8) | Bandiere |
Il-sezzjoni tad-dejta tinkludi l-entrati tal-paletti individwali. Il-ħadd ta' entrati tal-paletti jirriżulta mill-lunghezza tal-blokk / 4.
L-entrati individwali għandhom dan il-ponot sempliċi;
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | 04 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(8) | Komponenta Aħmar | Jipprovdi l-proporzjon aħmar tal-kulur |
0x0001 | uint(8) | Komponenti Aħdar | Indika l-ammont ta' ħadra fil-kulur |
0x0002 | uint(8) | Komponenti Blu | Juri l-portjoni blu tal-kulur |
0x0003 | uint(8) | Inkonoxxut - Bandieri? | Mhux ċar x'jifhem dan il-valur, peress jidher li huwa fundamentalment |
Għall-palettes, għandu jingħad ukoll li għal palettes li jintużaw għall-animazzjonijiet, jistgħu japplikaw dawn ir-regoli:
- Il-kulur l-ewwel huwa DEBBAJIDHOM trasparenti, irrispettivament minn x'inhu l-valur speċifikat.
-
L-entrati tal-palettes 1-24 għandhom jiġu meqjusa bħala kulur tal-plejer fl-palettes 1-8.
Il-post fejn il-kuluri jiġu minn, barra mill-plejer 1, huwa mhux ċar għalija.
In-nassumi li l-kuluri l-oħra huma hardcoded.
Bitmapijiet
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Wisa' Orjentata | Tagħti l-wisa 'ta' l-immaġini tal-pixel f'byte - peress li dawn huma allinjati mal-limiti ta' 4-byte. Hekk inkunu nistgħu naslu malajr għal linja speċifika tal-immaġni. Għaliex dan il-valur jinżamm separat, minkejja li jista' jiġi kkalkolat, mhuwiex ċar. |
0x0004 | uint(32) | Offset | Indika l-offset tal-ewwel linja fil-bitmap |
0x0008 | uint(32) | Għoli | Toqgħod il-livell tal-immaġni fi pixel |
0x000c | uint(32) | Wisa' | Toqgħod il-wisa' tal-immaġni fil-pikseli |
0x0010 | uint(16) | Tip | Indika l-iskop tal-immaġini. Hawn jidher li hija bitmask:
|
0x0012 | uint(16) | Palette | Definita liema paletta għandha tintuża mill-fajl PRT |
Din l-istruttura tad-dejta tal-fajl PRT tiddeskrivi kif huma mibnija l-bitmaps użati għal sprites. dawn il-bitmaps jservu bħala komponent wieħed, li bosta minnhom jinkorporaw f'frame animazzjoni ta' sprite.
Ir-realtà tad-data tal-immaġni tinsab fil
op2_art.BMP fil-katalgu tal-logħba.
Għaliex din il-fajl bitmap għandha header RIFF bitmap (li hu kważi korrett), huwa mhux ċar. Probabbilment Outpost 2 juża API tas-sistema biex jimporta l-grafika,
billi dan l-header jiġi adottat temporanjament u l-kampijiet varjanti jiġu sovrapposti.
Id-dejta tal-pixels tinsab fil-fajl BMP fil posizzjoni Offset + l-offset uint32, li tista' ssib fil-fajl BMP fil-indirizz 0x000A (RIFF bitmap data offset), biex trobb l-arranġament ta' pixels minn fuq xellug għal taħt lemin.
Grafika monochrome 1bpp jistgħu jiġu mfassla b'mod li, l-kulur 0 huwa trasparenti kompletament, filwaqt li l-kulur 1 huwa iswed/grigju semi-trasparenti, peress li l-grafika monochrome spiss tintuża għall-shadow tal-vetturi u bini fl-animazzjonijiet.
Għalhekk, wieħed jista' jikkombina ħafna grafika.
Animazzjonijiet
Issa wasalna għall-ogħla klassi tal-disċiplini fil-formati tad-data ta' Outpost 2:
Animazzjonijiet.
L-listi tal-animazzjonijiet jibdew bi header globali, li l-prinċipali tiegħu huwa l-verifika tad-data. Wara dan, issegwi l-edefinizzjonijiet tal-animazzjonijiet konkreti, li jinqasmu fi 3 livelli:
-
Animazzjoni
Animazzjoni hi l-ogħla istanza; timmira animazzjoni ta' unità, bini, jew 'animazzjoni ta' partikula' (xita ta' kometi, temp, esplużjoni) f'sitwazzjoni partikolari. -
Frame
Frame huwa immaġini waħda fi ħdan animazzjoni. Animazzjoni tista' tinkludi frame wieħed jew aktar. -
Subframe
Subframe huwa l-informazzjoni dwar li bitmap partikolari għandha tiġi maħduma f'pożizzjoni partikolari ta' frame taħt ċerti kriterji. Frame jista' jinkludi subframes wieħed jew aktar.
Wara dan, issegwu direttament l-edefinizzjonijiet tal-animazzjonijiet individwali.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Numru ta' animazzjonijiet | Kemm hemm rekord ta' animazzjonijiet disponibbli |
0x0004 | uint(32) | Numru ta' Frames | Kemm hemm frames totali li għandhom ikunu preżenti |
0x0008 | uint(32) | Numru ta' Subframes | Kemm subframes għandhom ikunu preżenti totalment |
0x000c | uint(32) | Numru ta' entries opzjonali | Kemm hemm "entries opzjonali". |
Animazzjoni
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(32) | Mhux magħruf 1 | Informazzjoni mhux magħrufa |
0x0004 | uint(32) | Bounding Box: Xellug | Indika l-bidu tax-xellug (f'Pixel) tal Bounding Box. |
0x0008 | uint(32) | Bounding Box: Fuq | Indika l-bidu ta' fuq (f'Pixel) tal Bounding Box. |
0x000c | uint(32) | Bounding Box: Wisa | Tagħti l-wisa' (f'pixeli) tal Bounding Box. |
0x0010 | uint(32) | Bounding Box: Għoli | Tipprovdi l-għoli (fil-pikseli) tal Bounding Box. |
0x0014 | uint(32) | Offset: X | Indika l-punt ċentrali orizzontali tal-animazzjoni |
0x0018 | uint(32) | Offset: Y | Toffri l-punt vertikali tal-animazzjoni |
0x001c | uint(32) | Inkonoxxut 2 | Informazzjoni Mhux Magħrufa |
0x0020 | uint(32) | Numru ta' Frames | Indika kemm hemm animazzjonijiet fi ħdan din l-animazzjoni |
0x0024 | uint(32) | Numru ta' Windows | Indika kemm il-bibien għandhom jintużaw meta tkun qed tiġbed |
Id-dati tat-taħt l-ogħla livell, tal-animazzjoni, huma prinċipalment dati ta' amministrazzjoni - Boundingbox tfisser il-koordinati tal-marka madwar il-vettura/bini, meta tkun magħżula u tiġi ukoll indikat liema żona għandha tkun klikkjabbli.
L-offset jiddetermina prinċipalment il-"punt null"; il-punt li għandu jiġi aġġustat jew subtratt li jikkorrispondi għall-koordinati interni tal-logħba. Tista' wkoll tgħid b'mod matematikali: l-offset hawnhekk jirreferi għall koordinati ta' oriġini.
Fil-windows, bħal ma għamiltu bl-offset, għandna għal kull window 4 uint(32)-valuri, li jindikaw żona li tiġi kkunsidrata bħala użabbli għal subframes individwali. Barra mill-windows, jekk huwa skont il-Bitmap prevista, ma jistax jiġi maħdum.
Fram
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(8) | Numru ta' subframe u toggle għal Opcjonali 1, 2 | Dan il-valur fih:
|
0x0001 | uint(8) | Unbekannt 1 u Toggle għal Optional 3, 4 | Dan il-valur fih:
|
0x0002 | uint(8) | Opcjonali 1 | Inkonxenti |
0x0003 | uint(8) | Opcjonali 2 | Inkonxenti |
0x0004 | uint(8) | Optional 3 | Inkonxenti |
0x0005 | uint(8) | Opcjonali 4 | Inkonxenti |
Subframe
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | karattri | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Offset | Tip ta' Data | Isem | Spjegazzjoni |
---|---|---|---|
0x0000 | uint(16) | Bitmap-ID | Indika liema Bitmap għandha tintuża għal dan is-sottaram |
0x0002 | uint(8) | Mhux magħruf 1 | Mhux magħruf - madankollu nistqarr li ninsab ċert li dan għandu x'jaqsam ma' prioretà ta' render (Z-Layer). |
0x0003 | uint(8) | Subframe-ID | Indika f'liema subframe qegħdin |
0x0004 | sint(16) | Offset - Orizzontali | Indika fejn ġewwa l-Frame għandha tiġi poġġuta s-Subframe, jew b'kemm pixxelli għandha tiġi mħarrġa l-Bitmap orizzontalment. |
0x0006 | sint(16) | Offset - Vertikali | Indika fejn ġewwa l-frame għandha tiġi mqiegħda s-subframe, jew b’kemm pixeles għandha tkun imċaħħda vertikalment il-bitmap |
B'dan nistgħu issa nikkombinaw frames individwali, kif ukoll animazzjonijiet kompluti, hawnhekk nibdlu b'mod eżemplari fuq animazzjoni aktar kumplessa, l-animazzjoni bl-indice 500, imdawra
Animazzjoni 500
Animazzjoni 500 turi kif vettura Plymouth, imħallsa b'ħażna normali, tiġi f'pożizzjoni. Dan huwa wieħed mill-ftit animazzjonijiet li jużaw il-funzjonalità ta' windowing.
U hekk jista' jsir il-qsim sħiħ tal-animazzjoni.
Ħaġa waħda, madankollu, hemm problema ma' l-għatu ta' fuq, għax hawnhekk il-bit korrispondenti fil-formazzjoni tal-grafika ma ġiex issettjat.
Hawn huma ftit iktar sprites, animati b'mod sabiħ, mill-logħba:
Interface tal-Utent
Iż-żewġ interface tal-utent tal-logħba issa jonqos, li għandu dehra ta' metall brush.
Iżda wkoll hawnhekk huwa evidenti li Dynamix ma kellhomx bżonn jinventaw ir-rota mill-ġdid; hawn mhux biss qed jintużaw sempliċement l-APIs User32 u GDI32 offruti minn Windows - speċifikament qed jintuża wkoll il-ġestjoni tar-riżorsi ta' User32.
Dawn jistgħu jiġu estratti b'mod eżempju permezz ta' programmi bħal Resource Hacker żviluppat minn Angus Johnson bħala Freeware, jew - jekk wieħed jinduna li qed juża Linux / Mac OS u jixtieq jevita l-użu ta' Wine - bil-għajnuna tal-wrestool li jinsab fi icoutils.
Isem tal-Fajl | Kontenut |
---|---|
Outpost2.exe | Għandha biss l-ikona tal-logħba, li turi l-istazzjon spazjali quddiem New Terra |
op2shres.dll | Għandha minbarra l-grafika għall-kontrolli bħall-fruntieri, buttuni, radio-buttons u checkbox, wkoll sfond għall-dialogi, stampi akkumpanjattivi għall-istorja tal-missjonijiet u l-grafika tal-isfond tal-menu prinċipali |
out2res.dll | Għandha d-dekorazzjoni tal-finestra tal-logħba, ikoni għal metall normali u speċjali, l-iskrin tal-għażla, grafika għall-dialogi kif ukoll aktar grafika għall-cursor, minbarra dawk animati fil-folder tal-logħba |