Outpost 2 Mallattoo Faayilaa · bei.pm

Barruun kun si'achi OpenAI GPT-4o Mini'n akkaataa ofii isaatiin hiikame.

Formatota faayilii irratti ibsame kun, qorannaa tekinikaatiin kan hundaa'e gurguddaa Dynamix, Inc. fi Sierra Entertainment irratti hundaa'e.
Qabeenyi yaadaa har'a Activision Publishing, Inc. / Activision Blizzard, Inc. keessatti argama fi amma Microsoft Corp. tiin qabamee jira.

Informationni kun Reverse Engineering fi Datenanalyse fayyadamuudhaan, kuusaa fi waliigaltee seenaa waliin taasisuuf qophaa’e.
Specifikeshinota eenyummaa ykn dhoksaa hin fayyadaman.

Game'n amma gog.com irraa buufachuuf gurgurtaa irratti argamuu danda’a.

Artistiin ciyaaraa

Qabiyyeen armaan gadii odeeffannoo qubee ta'aan gosa dataa irratti kan xiyyeeffatu, "Outpost 2: Divided Destiny" jedhamuuf, 1997 Sierra dhaan maxxanfamee fi Dynamix dhaan hojjetame irratti.

Kiisaa 01 Caamsaa 2015 hanga 14 Caamsaa 2015tti odeeffannoo dataa game kanaa fi akkamitti itti fayyadamuu danda'an irratti xiyyeeffannaa kenname.

Odeeffannoo ammaa argachuun kootti, Dynamix - akka dhaabbilee kaan hedduu - gosa dataa muraasa "Outpost 2" qofaaf hin qophaa'in, garuu hojiilee biroo akka Mechwarrior keessatti (ni jijjiirama) fayyadamuun himama.
Haa ta’u malee, guddina gosa dataa irratti haala addaa ta'een xiqqoo mul'ata, akkasumas gosa formaata duraan jiru kan akka JFIF fi RIFF irraa qindaa'uu irratti hundaa'a.

Qabiyyee fi gosa dataa hubachuuf odeeffannoo dabalataa armaan gadii irratti argachuu dandeessu Maaltu maaltu?.
Odeeffannoo as irratti kenname kan Little Endian akka hubatamuuf.

Xumura irratti, injifannoo marsaa deebi'uu (Reverse Engineering) baay'ee gammachiisaa ture, yommuu guutummaatti hin ta’in.
Haa ta'u malee, game kana ofumaan taphachuun akkasumas raawwatamuu akka dandeessu nan gorsa, sababni isaas taphni kun mala taphannaa garii qaba.

Seensa

Daatota Outpost 2'n fayyadaman akka JFIF / PNG tiin kan yaadatamu ijaarsa qaba - boloogota daataa tokko tokkoon isaanii yeroo hunda 8 Byte header qaba. Dhaabbatni kanaaf, header tokko tokkoon iddoowwan sirrii irratti barreessuu keessaa fagaadhe, bakka sanatti garuu gargarummaa qofa barreessa.

Formaati yeroo hunda kan armaan gadii; daataa dhugaa ittiin fayyadamu sunis achi keessatti kuufameera:

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Baatota Ajaayinaa

Oduu kan agarsiisu maaliif data block itti aanutti eeggamuu qabu.

Gatii beekamoo:

  • 0x204C4F56 ('VOL '):
    Gatii
  • 0x686C6F76 ('VOLH'):
    Gatii-Dhaabbata
  • 0x736C6F76 ('VOLS'):
    Gatii-Qabiyyee
  • 0x696C6F76 ('VOLI'):
    Oduu-Gatii
  • 0x4B4C4256 ('BLCK'):
    Gatii-Block
  • 0x504D4250 ('PBMP'):
    Oduu-Graafikaa
  • 0x4C415050 ('PPAL'):
    Paletii-Color
  • 0x4C415043 ('CPAL'):
    Container-Paletii-Color
  • 0x64616568 ('head'):
    Dhaabbata
  • 0x61746164 ('data'):
    Oduu-Maamila
0x0004 uint(24) Bakka-Dheerina

Oduu odeeffannoo kan ibsu, akkamitti (Baay'ee) bittaa odeeffannoo armaan gadii bal'inaan ta'ee jira.

Kunis odeeffannoo hojii qofa ka'aa - byte 8 kan header ta'an keessatti hin jiru.

0x0007 uint(8) Bara?

Waan kanaan dura bu'uurri isaa maal akka ta'e hin beekamu.

Gara voluumii keessatti, gatii kun yeroo baay'ee 0x80 dha, faayiloota biroo keessatti immoo yeroo baay'ee 0x00 dha. Kunis akka agarsiisutti, kun flag-set ta'uu mala.

Kutaalee

Volumiiwwan kunniin saanduqa odeeffannoo ta'ee taphichaaf kan oolu, akkasumas faayilaalee akka tarball fakkaatan. Yeroo tokko tokko Outpost 2 keessatti foormaatin kun faayilaalee qofa beekama - folderootas hin beekne. Waliigalatti, faayiloota sirrii maqaa faayilaaleen simaluun danda'ama.

Volume tokko header volume irraa fi blockota volume hedduu irraa kan ijaarame, kanneen faayilaalee dhugaa ta'an.

"Volumes" faayilaalee xumurawwan 'vol' qabaniidha kan taphichatti argaman.

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Maqaa Majiikii
0x0004 uint(24) Bakka-Dheerinaa
0x0007 uint(8) Bandeeraa

Gulaala Guddinaa

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Maqaa Majiikii
0x0004 uint(24) Bakka-Dheerinaa
0x0007 uint(8) Bandeeraa

Haala Qindaa'aa Volume keessatti odeeffannoo fayyadamu hin qabu.
Isaan kun qofa iddoo kuusaa dha.

Odeeffannoo jalqabaa Volume keessatti Strings Volume argamuu qabu; itti aansee odeeffannoo Volume ni dhufaa.

Qindaa'ina Guddinaa

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Maqaa Majiikii
0x0004 uint(24) Bakka-Dheerinaa
0x0007 uint(8) Bandeeraa
Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Maqaa Majiikii
0x0004 uint(24) Bakka-Dheerinaa
0x0007 uint(8) Bandeeraa
0x0008 uint(32) Fayidaa Dheeraa

Maaliin ibsaa, akkamitti bayyaan %s fayyadamtoota odeeffannoo armaan gadii hagam ta'uu isaa.

Odeeffannoon hafaa, bakka galmee string-Volume keessatti argamu, akka garbage ilaalamuun mul'ata.

Faayiloota yeroo booda ta'anii 'odeeffannoo hafaa' 0x00 ta'uu, kun immoo rakkoo toolchain keessaatti mul'achuun mul'ata, kanas, kan agarsiisu, hojjattoonni sirna buufata qunnamtii sirrii irratti yeroo dheeraaf akka yaadaan hin hojjetne, sababiin isaas, odeeffannoon buufatame sirriitti hojjechuu isaati kan hin barbaachifne, gameen itti hin dhiyaatu, odeeffannoon buufatame yookin hin buufatamne.

0x000c uint(8)[] Galmee Maqaa Faayiloota

Kun lakkofsa maqaa faayiloota 0-Byte-tiin xumureedha, kan - akkasumas kutaa odeeffannoo armaan dura - mallattoo ASCII qofaan eegama.

Yoo odeeffannoo kana hiikuuf yaaluu ta'e, odeeffannoo gosa kana bal'inaan hubachuun barbaachisaa miti, sababiin isaas odeeffannoo voluumiin faayiloota maqaa isaanii qindaa'uu ni mul'ata.

Volume Strings jechuun tarree maqaa faayiloota keessatti argamaniidha.

Oduu Walitti Fufiinsa

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Maqaa Majiikii
0x0004 uint(24) Bakka-Dheerinaa
0x0007 uint(8) Bandeeraa

Informationoonni voluumiin odeeffannoo bal'aa fayiloota irratti qabu. Kuni garaagarummaa akkuma FAT galmee galmeewwan (FAT = File Allocation Table) itti fufee jira.

Baay'ina fayiloota isa argamuun, bloqqii gatii guutuu hirmaachuudhaan galmeewwan dheerina - 14 Byte.

Galmee galmeewwan tokko tokkoon akkana haan haala qabu:

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Maqaa Faayilii-Offset

Jalqaba maqaaf tokkoffaa (Volume-Strings) keessatti faayilii maqaaf iddoo (Offset !) itti argamu agarsiisa.

Kun immoo bita qabeentaa fayyadamaa irratti xiyyeeffata.

0x0004 uint(32) Faayilii-Offestii

Yoo ta'e, bakka offset kamii keessatti faayilni voluumiin guutuu argamu ibsa.

0x0008 uint(32) Gatii Faayilii

Fakkii faayilii baay'ee akkamitti guddaa ta'ee ibsa.

0x000c uint(16) Bakkawwan?

Osoo mul'ataa, odeeffannoo dabalataa kan fayyadamuu irratti ibsa kenna.

  • 0x03 yoo faayilichii xiqqaa'e, kan dirqamni. Asitti, akka fakkeenyaatti, Mukaa Huffmann fayyadamaa jira.
  • 0x80 dhugumatti yeroo hunda dirqamni.

Walakkaa Qabeentaa

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Maqaa Majiikii
0x0004 uint(24) Bakka-Dheerinaa
0x0007 uint(8) Bandeeraa

Volume-Block jechuun kontaayina tokkoo dha, kan faayiloota qabatu. Kun faayiloota gatii isaanii - akka foormaatin block-tti - yeroo lamaa of keessatti qabata akkasumas itti aansuun odeeffannoo fayyadamtootaa ni dhufa.

Tilaawwan

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 50 42 4d 50 -- -- -- -- -- -- -- -- -- -- -- -- P B M P . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Maqaa Jaalalaa
0x0004 uint(24) Dheerina-Blooqii
0x0007 uint(8) Baraaroota

Taayilaaleen kun faayidaa Outpost-2'tti kan dhiyoo ta'eedha, hin caccabsine "well" jedhuun kan waamamu (well0000.bmp hanga well0012.bmp), kana keessaa maps.vol jiru.

Taayilaaleen/Wells kan armaan gadii qabu:

Maqaa Faayila Wanti Keessaa
well0000.bmp Giraafikii 32x32px gurguddaa, diimaa - qajeelcha ta'uu isaa mirkaneessuuf
well0001.bmp Dhagaa ifaa, daandii daandii dhagaa ifaa irratti fi bifa jijjiirama hedduu qabdu kan dhagaa ifaa irratti mul'atu
well0002.bmp Dhagaa ifaa irratti qindaa'oo 'Doodads' - kunis wantoota dhagaa ifaa irratti bifa jijjiiramaa (yookiin qindaa'aa, fakkeenyaaf, teessoo) ta'aniidha, kanneen keessaa biqiltuu dabalata
well0003.bmp Dhagaa ifaa irratti ijaarsa lafee kan qabu
well0004.bmp Dhagaa dimaa, daandii daandii dhagaa dimmaa irratti fi bifa jijjiirama hedduu qabdu kan dhagaa dimmaa irratti mul'atu
well0005.bmp Dhagaa dimmaa irratti qindaa'oo 'Doodads' - kunis wantoota dhagaa dimmaa irratti bifa jijjiiramaa (yookiin qindaa'aa, fakkeenyaaf, teessoo) ta'aniidha
well0006.bmp Dhagaa dimmaa irratti ijaarsa lafee kan qabu, akkasumas geengoo giddugala dhagaa ifaa fi dimmaa gidduutti
well0007.bmp Laava of keessaa qabdu, fakkeenyaaf 4-5 frames hojiiwwan isaatu jira
well0008.bmp Qamadi fi bifa jijjiirama hedduu qabdu kan dhagaa keessatti mul'atu
well0009.bmp Qamadi irratti qindaa'oo 'Doodads' - kunis wantoota dhagaa qamadi irratti bifa jijjiiramaa (yookiin qindaa'aa, fakkeenyaaf, teessoo) ta'aniidha
well0010.bmp Dhagaa qamadi irraa gara dhagaa ifaa fi dimmaa geengoo 48 qabdu
well0011.bmp Qarqara Polaarkaa map kana irratti, dhagaa dimmaa gubbaa
well0012.bmp Qarqara Polaarkaa map kana irratti, dhagaa ifaa gubbaa

Mirga baay’ee barbaachisaa ta'uu isaa, Tiles dursee hin agarsiifneefuu kan cacha'uu danda'u, sababiin isaas data guyyaa/haaraa gahuuf akka hojjetamuu qabu - akkasumas data baay'ee waliin dhufuu danda'a.

Tileen 8bpp-giraafikota paletii indexeedha, 32x32 pixel saffisaan walitti fufanii jiru. Tileset kana keessatti garuu baay'inaan

Kaontiinaa ijoo keessatti kutaa 2 qaba: head fi data.

Gadaa Qubee

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Maqaa Jaalalaa
0x0004 uint(24) Dheerina-Blooqii
0x0007 uint(8) Baraaroota
0x0008 uint(32) Bara / Falaasama?

Kun gosa versionii faayilii agarsiisuu danda'a; faayiloota hunda ani qabuu keessatti, gatii 0x02 jedhu ture.

0x000c uint(32) Bal'ina (Fayyadama Horiizontaal)

Bal'ina suuraa faayilii agarsiisa (piksiliin).

Wells hundaa Outpost 2 keessatti, gatii 0x20 yookaan 32 akka eegamu ni jira.

0x0010 uint(32) Ulfa (Dhiibbaa Giddugaleessaa)

Akkaataa suuraa ol ka'aa (pixeleen).

Wells hundaa Outpost 2 keessatti, gatii 0x20 ykn 32 irratti eegamuu qaba.

0x0014 uint(32) Halluu dachaasaa?

Maanguddoon qabeenya kanaa hin beekamu.

Sababni isaas faayiloota hundumaa kan qoraman keessaa qabeenyi 8 argamu, kanuma irrattillee faayidaa halluu ibsuuf ta'uu danda'a.

0x0018 uint(32) Faayila midhaan 2?

Maaliin gatii kun hin beekamu.

Yoo ta'e, kun 'kaayyoo' - booree dhedheeraa ta'uu mala.

Odeeffannoo kana booda, faayilii paaletaa kan RIFF sadarkaa tokkotti dhiyaate ni jira. Qajeelfamni sirrii - sababiin isaas paaletoonni bakka biroo mul'atan - Paaleetota jalatti argama.

Daataa Tayiilaa

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Maqaa Jaalalaa
0x0004 uint(24) Dheerina-Blooqii
0x0007 uint(8) Baraaroota

Xumura irratti, odeeffannoon pixeliin ifaa dhufaa jira, bita-gubbaa gara mirga-jalaa tarreeffamanii.
Qu'annoon odeeffannoo gosa suuraalee 8bpp-Bitmaps jedhamee beekaman keessatti, bakka halluu paletii keessatti argamu.

Odeeffannoon pixeliin bita gubbaa irraa jalqabamaa fi mirga jalaatti xumurama.

Engine'n tapha'n tiles'n *dhiheessaa* yeroo barbaachisaa irratti mul'ata.
Kunis, ganna fi winter gidduutti gahuudhaan, 32 gosa tiles adda addaa irratti kan hundaa'eedha. Itti fufinsaa ifa'a jechuu 'xiqqoo' irraa hir'ifama. Gatii sirrii ta'an hanga ammaa hin argamne, ani immoo bu'aa qabeessa irratti hojjedha

v *= (daylight / 48) + 0.25;

HVV data'n pixel'ota waliin, daylight'n gatii 0-31 qaba, v'n immoo gatii 0-1 gidduu qaba. Amma, map'n bakka 16 tiles waliin mirga fi bitaa (kun unit'ota mul'achuu dhoksaaf oola) qabaachuu isaa hubachuun barbaachisaa dha.

Akkasumas, ganna fi winter gidduutti cycle'n game cycle tokko tokko map'n karaa tokko qofa haala haaromsuu mul'ata.
Cycle'n ganna fi winter saffisaan akkana fakkaata:

Visualization'n ganna fi winter gidduutti

PRT

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 43 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- C P A L . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Magiik Baayitii
0x0004 uint(24) Dheerina Paalettii

Gara caasaa walakkaa duraanii, lakkoofsa paletoota faayilii kana keessa argaman ibsa - dheerina blookii baay'ee miti.

0x0007 uint(8) Bandeeraa

Yeroo baay'ee, akkasuma, faallaa.

An garuu faallaa beekuu hin dandeenye; sababiin isaas gatiiwwan ani beekuu 0x00 wajjin wal-simsiisu, lakkoofsi paalettichaa sirrii ta'ee kan ta'u uint(32) ta'uu mala.

Maaliif PRT akka dhugaa ta'ee hinbeekamu; fakkeenyaaf 'Palette and Ressource Table' ta'uu danda'a - sababni isaas faayiliin kun - akka op2_art.prt jedhamutti argamu - faayila akkasii dha, yookiin hojii isaa gaariidha jechuun ni danda'ama.

Faayiliin kun tarree paletootaa, teessuma bitmap hunda fayyadamaniin, hiika animeshinii fi odeeffannoo hinbeekamne hedduu of keessaa qaba. Kunis format kanneen duraanii kan bakka bu'aan sirrii hin taaneen hordofaa jira, sababiin isaas galmeewwan hundi sirna kana hin hordofne.

Seekshinii CPAL (paletootaa kanneen qabatanii dha) odeeffannoo paletootaa qofa of keessaa qaba, akkamitti paletoota 8-Bit kanneen 1052 Byte guddatanii akka jiran ibsa.

Beeksisni 1052-Byte kun dirqama ta'uu hin qabu, sababiin isaas format paletootaa garaagaraa ta'uu danda'a. Kunis odeeffannoo Outpost 2 waliin kennamuuf qofa ta'a.

Tarree paletootaa booda, tarree bitmap ni dhufa; akkasuma tarree animeshinii ni dhufa.
Kanumaan walqabatee, lamaan isaanii uint(32) (yookiin uint24+uint8 mallattoolee?) jalqabaa, kan lakkoofsa galmeewwan of keessaa qaba.

Paaleetota

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 50 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- P P A L . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Magaala Biyyaa
0x0004 uint(24) Dheerina Palaateen

Fakkeenya, haala caasaa idileetti, lakkoofsa paletii faayilii kana keessatti argaman agarsiisa - dheerina blokii baay'ee osoo hin taane.

0x0007 uint(8) Bakkawwan

Waanuma fakkaatu, akka aadaa, alaa.

Garuu alaa hin beeku; sababiin isaas gatiiwwan naaf beekaman hundi 0x00 waliin wal-qabatu, kanaafuu lakkoofsi paletii sirriitti uint(32) ta'uu danda'a.

Maaltota paletii akka salphatti dubbifamuu danda'u.
Isaan hundi kaffaltii fi kutaa data irraa ijaaraman.

Gulaala Paletii

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Magaala Biyyaa
0x0004 uint(24) Dheerina Palaateen

Fakkeenya, haala caasaa idileetti, lakkoofsa paletii faayilii kana keessatti argaman agarsiisa - dheerina blokii baay'ee osoo hin taane.

0x0007 uint(8) Bakkawwan

Waanuma fakkaatu, akka aadaa, alaa.

Garuu alaa hin beeku; sababiin isaas gatiiwwan naaf beekaman hundi 0x00 waliin wal-qabatu, kanaafuu lakkoofsi paletii sirriitti uint(32) ta'uu danda'a.

0x0008 uint(32) Palettenformat-fooyya'iinsa?

Waa'ee gosa paletii kamiyyuu paletii sun hordofaa jiru ni ibsa.

Paletoonni Outpost2 hundi gabaasa 0x01 qabaachu isaanii mul'isa.

Data Paletaa

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Magaala Biyyaa
0x0004 uint(24) Dheerina Blookii
0x0007 uint(8) Bakkawwan

Seektara dataa keessaa galmee paletii tokkoon tokkoon ni qabata. Lakkoofsi galmee paletii qulqullina kutaalee / 4 irraa ka'aa.

Galmeewwan tokkoon tokkoon isaanii akkana, sirna salphaa qabu;

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- 04 -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(8) Koompoona diimaa

Faayidaa diimaa halluutiin ibsa

0x0001 uint(8) Garaara Madaa

Faayidaa midhaan green kan naqa irratti agarsiisa

0x0002 uint(8) Bulaa-Kompoontii

Furdina balaa halluu agarsiisa

0x0003 uint(8) Haqa hin beekamne - Falaasama?

Wanti kun maaliif akka ta'e ifa hin taane, sababiin isaas 0x04 akka ta'e mul'ata.

Paletootaa irratti, paletootni animation itti fayyadamuuf heera armaan gadii ni hojjatu:

  • Colour jalqabaa YEROO MARAA ifa dha, akkaataa gatii kamiyyuu keessatti kaa’ameen.
  • Paletootni 1-24 paletootni 1-8 keessatti colori taphataa akka ilaalamu.
    Coloroonni taphataa 1n alatti eessaa akka dhufan naaf hin ifa.
    Coloroonni hafan hardcoded ta'uu yaada qaba.

Paletoota Dubbisaa

Bitoomaa

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Biqiltuu qajeelfama

Bal'ina sarara daataa pikselii baay'ee kan ibsu - sababiinsaa 4-Byte daangaa irratti qindaa'uu dha.

Akka kanaan, sarara suuraa tokko saffisaan argachuu ni danda'ama.

Sababni gatii kun addaan kuusamuun isaa, yommuu inni herregamuu danda'u, ifa hin taane.
Yoo ta'e, kun koodii render irratti fooyya'aa ta'uu mala.

0x0004 uint(32) Karaa ofsetii

Oofsetii xayyaaraa jalqabaa bitmap keessatti ibsa

0x0008 uint(32) Jijjiirama

Suuraa irratti dheerina pikselii agarsiisa

0x000c uint(32) Bal'ina

Suuraa bal'ina isaa pixeliin ibsa

0x0010 uint(16) Typ

Faayidaa suuraa ibsa. Kunis bitmask ta'uu danda'a:

  • 0x04 yoo ta'e, suuraa 1bpp ta'uu isaa agarsiisa.
  • 0x40 yoo ta'e, suuraa windowing raawwachuu qabdu agarsiisa.
0x0012 uint(16) Paalletii

Gulaala, paletii PRT-faayilii keessaa kan fayyadamuu qabu murteessu

Bu data sirna PRT-faayilii akkamitti bitmaps kan sirna anaati spritesf keessatti itti fayyadaman agarsiisa. Bitmaps kana idhatti walitti qindaa'uun kanneen hedduu gara frame animashinii sprite bu'uura godhachuuf.

Deetaa suuraa mirkaneeffamaa op2_art.BMP yeroo ta'u, dirree taphichaa keessa argama.
Maaliif faayilii bitmap kun RIFF-bitmap header sirna (hedduu sirrii) qabu, himaa miti. Gariin ni yaada Outpost 2 System-API tajaajilaa graafikoota fe'achuuf, header kun yeroo heeruma keessa fudhatama argachuuf fi qaree isaaniif akkasumas haala xinxala godhuuf.

Deetaa pixel BMP-faayilii keessa irra deebi'ee, Offset + uint32-offset, kan BMP-faayilii irratti iddoo 0x000A irratti argamu (RIFF-bitmap-data offset), argamuu - akkaataa marsaa fuula gaditti irra deebi'ee.

Graafikoota monochrome 1bpp akkana fakkaatuun akkamitti kan qaban, lafa 0 guutuu transparency fi lafa 1 halkaana transparent gurraacha/keelaa ta'uu, sababa graafikoota monochrome baay'ee fayyadamaa ijaarsa fi hanga gubbaa gubbaa dhangala'uu animashinoota keessatti.

Kanaaf, graafikoota hedduu walitti qindaa'uu ni dandeessa.

Modulii mana eeggannoo (Plymouth)

Guddina fi sirna agarsiiftuu

Amma gara kutaa olaanaa tiikniikota Outpost 2 faayiloota dataa keessatti dhufu:
Animashiinoota.

Teessoon animashiinoota mata duree waliigalaa, kan mirkaneessuu dataaaf oolu, waliin jalqabama. Ergasi, hiika animashiinoota kanneen gara sadarkaa sadiitti qoodamu.

  1. Animashiin
    Animashiin sadarkaa ol’aanaa dha; kuni animashiin uumamaa, ijaarsa yookiin 'animashiin paartikilii' (kaammii, haala qilleensaa, qarqara) keessaatti haala tokko keessatti agarsiisa.
  2. Frame
    Frame tokko suuraa tokkoo animashiin keessa jiru. Animashiin frame tokko yookiin hedduu qabaachuu danda'a.
  3. Subframe
    Subframe jechuun odeeffannoo agarsiisa, bitmap tokko haala addaa jalatti frame tokko keessatti bakka addaa irratti tarreeffamuu qaba. Frame tokko subframe tokko yookiin hedduu qabaachuu danda'a.

Ergasi, hiika animashiinoota adda addaa ni dhufa.

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Baay'ina Animaashinoota

Animashiniiwwan qabatanii jiru meeqa

0x0004 uint(32) Lakkoofsa Framee

Framoonni hedduu akkamitti qabamuu qabu?

0x0008 uint(32) Lakkoofsa Subframes

Subframes hedduu maaliif jiraachuu qabu

0x000c uint(32) Baay'ina galmee filatamaa

Mee "galmeewwan filatamaa" meeqa jiru.

Hir'ina

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0020 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(32) Beekamaa 1

Odeeffannoo hin beekamne

0x0004 uint(32) Bokkaan Daangaa: Kibbaan

Gara bitaatti jalqaba (pixeliin) Bounding Box agarsiisa.

0x0008 uint(32) Bokkaan Itti Fufee: Ol

Ulaagaalee ol’aanaa (piiksil) Bounding Box ibsa.

0x000c uint(32) Baayyina Kaawunsaa: Bal'ina

Bal'ina (pixeliin) Bounding Box ibsa.

0x0010 uint(32) Bokku Aanaa: Ol'aantummaa

Olka'aa (pixeleen) Bounding Box ibsa.

0x0014 uint(32) Offset: X

Walqunnaa giddugaleessaa saxaxa kanaa ibsa

0x0018 uint(32) Y'n fageenya.

Jechoota gidduu mirgaa fi bitaa kutaalee animashinii agarsiisa

0x001c uint(32) Beekamaa 2

Odeeffannoo hin beekamne

0x0020 uint(32) Lakkoofsa Framee

Waa'ee baay'inaa tarreewwan animashinii kana keessatti argaman ibsa

0x0024 uint(32) Lakkofsa Windows

Mul'ata, akkamitti dirreewwan draw'uu irratti fayyadamuu akka qabdan ibsa

Daataan bakka ol'aanaa, kan hojiirra ooluu, gatiiwwan bulchiinsaa - Boundingbox gatiiwwan bakka bu'aa gaariin geejjiba/konkolataa, yeroo sanatti filatameera, akkasumas bakka kamtu tuqamuun malu ibsa.

Offset'n "bakka jalqabaa" murteessa; bakka gatiiwwan taphni keessa jiru irratti hiriira ykn baasiin murta'aa dha. Akka herregaa jedhamee, offset'n asitti bakka gatiiwwan jalqabaa ibsa.

Windows'n, offset'n akkasuma, gatiiwwan 4 uint(32) ta'an irratti hundaaye, kanaaf bakka tokkoo kan subframes tokkoon tokkoon tajaajiluuf kan gargaare ibsa. Windows'n alatti, bitmap'n yaada akkasumas qindaa'uu baannaan, hin tuqamu.

Furama

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(8) Lakkoofsa subframe fi toggle dhaabbataa 1, 2

Gatii kun kan of keessaa qabu:

  • 0x7F (Bitmaskii): Lakkoofsa Subframe tokkoo fi lamaa kanneen faayidaa keessa jiran
  • 0x80: Odeeffannoo Optional 1 fi 2 jiruufi hin jiru irratti
0x0001 uint(8) Beekamuu 1 fi Toggle filannoo 3, 4f.

Qabeenya kun hammate:

  • 0x7F (Bitmaske): Beekamtii - An ani akka malee yaada qaba, kun lakkoofsa gameticks kan darban, hanga faayilii itti aanuu mul'atuuf ga'u dha
  • 0x80: Odeeffannoo Optional 3 fi 4 jiruuf
0x0002 uint(8) Filannoo 1

Beekkamtii hin qaban

0x0003 uint(8) Filannoo 2

Beekkamtii hin qaban

0x0004 uint(8) Filannoo 3

Beekkamtii hin qaban

0x0005 uint(8) Filannoo 4

Beekkamtii hin qaban

Subframe

Akkatti x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF char
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Fageenya Gosa Odeeffannoo Maqaa Ibsa
0x0000 uint(16) Bitmap-Id

Bitmap kamshaa kanaaf fayyadamuun beeksisa

0x0002 uint(8) Beekamaa 1

Beekkamuu miti - garuu ani akkaan shakkadha, kunis rakkoo hanga tokko (Z-Layer) ta'uu mala.

0x0003 uint(8) Subframe-Id

Gara subframe kamiitti argamnu ibsa

0x0004 sint(16) Dhaabbata - Horiizontaalii

Iddoo frame keessa subframe eessa itti fe'amu akka ta'e ibsa, akkasumas bitmap harkisuu pixel hedduu akkamiin akka ta'e ibsa.

0x0006 sint(16) Offset - Dhidha

Iddoo kamii keessatti faayila xiqqaa (Subframe) kuusamuun qabdu, yookiin akkamitti pixel yeroo dheeraaf (vertically) suuraa (Bitmap) olka'uu qabdu ibsa.

Amma as irratti, footoo tokko tokkoo fi animeshinoota guutuu walitti qabuu dandeenya, kunis animeshinoota ulfaataa tokko keessatti, indeksii 500 qabuun agarsiifameera.

Hojii Ijaarsa 500

Animation 500 agarsiisa akkamitti Plymouth-Transporter, kan balaqqee qabeenya caasaa waliin guutame, baafamuu danda'u. Kunis animashinoota muraasa keessaa isa tokko, kan hojii Windowing fayyadamuu danda'u.

Akkasumas animashinoota guutuu walitti fiduuf ni danda'ama.
Haa ta'u malee, rakkoo tokko mul'ata ol'aanaa lafa baafamaa irratti jiru, sababni isaas bitii dhimmoota suuraa keessatti bakka bu'aa hin qabne.

Asitti, suuraalee biroo, kanneen bareedaa fi animashinoota gaariidha, gameen keessaa argamu:

Rendering animashinoota 500 agarsiisu

Animashinoota 500 xumurame

Fabriikaa Plymouth

Eden Dachee Guddinaa

Eden Waajjira Fayyaa

SCAT

Eden Dachee Plymouth

Easteregg:
Muka Gura

Easteregg:
Dans Dog

Garaagarummaa Fayyadamaa

Nun User-Interface taphni, kan meetaala buruusaa-kootiin qophaa'e, ni hafu.

Haa ta'u malee, as keessatti Dynamix raadiyoof haaraa hin uume; as keessatti User32 fi GDI32-APIs kan Windows irraa kennaman qofa otoo hin taane - akkasumas qajeelfama bittaa User32 irraa fayyadamuu.

Kana jechuun, fakkeenyaaf, sagantaa Angus Johnson irraa free-ware ta'een qophaa'ee Resource Hacker fayyadamuun, yookiin - yommuu Linux / Mac OS keessatti Wine fayyadamuu hin barbaadne - icoutils keessatti argamu wrestool fayyadamuun baasu dandeessu.

Maqaa Faayila Qabeenya
Outpost2.exe Faayilli kun maqaa taphaati, kan agarsiisu suuraa iddoo buufata hawaa New Terra irratti
op2shres.dll Faayilli kun suuraalee meeshaalee akka daandii, buttoota, radio-button fi checkbox dabalatee, bakka-dubbii fi suuraa walfakkaataa qabeenya gochaan, akkasumas suuraa bakka-dubbii menu guddaa of keessaa qaba
out2res.dll Faayilli kun dekoreeshinii foon tapha keessaa, suuraa metala caasaa fi addaa, suuraa fe'umsaa, suuraalee dubbii fi kanneen biroo suuraa baay'ee qabeenya, akkasumas suuraa yeroo tapha keessatti argamu dabalata