Outpost 2 Formati tal-Fajls · bei.pm

Dan it-test ġie tradott awtomatikament minn OpenAI GPT-4o Mini.

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.

Artiġett tal-logħba

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:

  • 0x204C4F56 ('VOL '):
    Volum
  • 0x686C6F76 ('VOLH'):
    Intestazzjoni tal-Volum
  • 0x736C6F76 ('VOLS'):
    Strins tal-Volum
  • 0x696C6F76 ('VOLI'):
    Informazzjoni dwar il-Volum
  • 0x4B4C4256 ('BLCK'):
    Blokk tal-Volum
  • 0x504D4250 ('PBMP'):
    Data grafika
  • 0x4C415050 ('PPAL'):
    Palette tal-Kuluri
  • 0x4C415043 ('CPAL'):
    Kontenitur tal-Palettes tal-Kuluri
  • 0x64616568 ('head'):
    Intestazzjoni
  • 0x61746164 ('data'):
    Id-data użata
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.

  • 0x03 huwa ssettjat meta l-fajl ikun ikkumpress. Hawn jidher li qed jintuża siġra Huffmann.
  • 0x80 jidher li huwa dejjem ssettjat.

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 0x02

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 0x20 jew 32 għandu jkun mistenni.

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 0x20 jew 32.

0x0014 uint(32) Profondità tal-kuluri?

Il-valur ta' dan huwa mhux magħruf.

Peress li fih fil-fajls kollha eżaminati l-valur 8, jista' jkun li jitkellem dwar id-dipth tal-kulur.

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.

Il-pixeldati jibdew minn fuq xellug u jispiċċaw f'ħoġor xellug.

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:

Visualizzazzjoni tal-ciklu ta' jum u lejl

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 0x00, jista' wkoll ikun potenzjalment li n-numru tal-palettes huwa sempliċement uint(32).

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 0x00, jista' wkoll ikun potenzjalment li n-numru tal-palettes huwa sempliċement uint(32).

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 0x00, jista' wkoll ikun potenzjalment li n-numru tal-palettes huwa sempliċement uint(32).

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 0x01.

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 0x04.

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.

Riferiment għall-palettes

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.
Probabbilment huwa ottimizzazzjoni għall-kodiċi tar-rendering.

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:

  • 0x04 huwa stabbilit jekk tkun grafika ta' 1bpp.
  • 0x40 huwa stabbilit jekk tkun grafika li trid timplimenta windowing.
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.

Modulu ta' residenza protetta (Plymouth)

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:

  1. 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.
  2. Frame
    Frame huwa immaġini waħda fi ħdan animazzjoni. Animazzjoni tista' tinkludi frame wieħed jew aktar.
  3. 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:

  • 0x7F (Bitmaski): In-numru ta' subframes li qed jintużaw f'dan il-frame
  • 0x80: L-informazzjoni dwar jekk Optional 1 u 2 hux preżenti
0x0001 uint(8) Unbekannt 1 u Toggle għal Optional 3, 4

Dan il-valur fih:

  • 0x7F (Bitmaskra): Mhux magħruf - Ninsab konvinċut li dan huwa l-għadd ta' Gameticks li jgħaddu sa ma juri l-qafas li jmiss
  • 0x80: L-informazzjoni dwar jekk Optional 3 u 4 humiex preżenti
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:

Rendiment tal-animazzjoni 500 illustrat

Animazzjoni 500 magħquda b'mod sħiħ

Plymouth Fabrika tal-Bini

Eden Port ta' Spazju

Eden ċentru Mediku

SCAT

Plymouth Port ta' Spazju

Easteregg:
Santa Klaus

Easteregg:
Dans Dog

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