Outpost 2 Stummoù Kinnig · bei.pm

Ar tekst-mañ zo bet kempennet gant OpenAI GPT-4o Mini.

Ar formatioù dastum skrid a zo en ur sell teknikel ouzh ar yezh dreist-holl eus Dynamix, Inc. ha Sierra Entertainment.
Ar yezh dreist-holl a zo hiziv en ur c'horf Activision Publishing, Inc.- / Activision Blizzard, Inc. ha hiziv e vez en Besitz gant Microsoft Corp..

An titouroù a zo bet aozet dre Reverse Engineering ha Datenanalyse evit ar soñj da archive ha da zerc'hel gant titouroù istorel.
N'eo ket bet implijet spekulioù privat pe kelenner.

Ar c'hoari a c'haller prenañ hiziv e gog.com evel ur download.

Ar artwork eus ar jeu

Ar reolennenn d'ober an danvez-mañ a ziskouez ma c'hloazenn war ar formaoù donedigez e-barzh ar jeu stratezh e-leizh "Outpost 2: Divided Destiny", a zo bet publiket e 1997 gant Sierra ha krouet gant Dynamix.

Me a zo bet o labourat evit an arsel da c'houde d'ar 01 a viz Du 2015 betek ar 14 a viz Du 2015, o labourat dreist-holl war an danvez eus ar jeu - ha penaos e vez implijet.

Evel ma'z eus bet ar c'houlennoù a c'houlenner, a zo bet kavet gant Dynamix - evel ma'z eo an darn vrasañ eus ar c'henstrolloù komerciel - n'eo ket bet krouet ar formaoù donedigez evit Outpost 2 hepken, met ivez implijet e broioù all evel ar rummad Mechwarrior (d'ober c'hoazh).
An eil, e c'heller lavarout ivez ez eo krouet an avañtur a zo e formaoù donedigez en ur c'houzañv an arouezioù peogwir e vez implijet ar reolenn a greiz an amzer a zo e gredenn JFIF ha RIFF.

Evitañ ar pennadoù ha ar formaoù donedigez, ez eus titourioù all da gaout war Petra eo petra?.
An danvez a zo lañset da vezañ anavezet evel Little Endian.

Da fin, e c'heller lavarout ez eo bet plijus bras an Reverse Engineering, e pegen e ne c'hall ket bezañ termaet.
Of course, e c'hello din ivez kelaouiñ da c'houzout e rankit mont da c'hoari ar jeu e-unan, abaoe e ro plijadurioù interesus.

Enskrivadur

Ar formadoù data a vez implijet gant Outpost 2 a zo un dazont a JFIF / PNG - an data bloaz a zo tost d'an 8 Byte Header. Setu e vank din da dokumentiñ an headeroù spesifik en o lec'h, ha ne dokumentin nemet an divergentioù.

Ar format a zo da gaout da c'hortoz ; an data gwirion a zo ennañ:

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Krouidigez Koadennoù

Ennañ an информацию diwar-benn petra a c'hortoz er blok data követant.

Gwirionnoù known:

  • 0x204C4F56 ('VOL '):
    Volum
  • 0x686C6F76 ('VOLH'):
    Gwennel volum
  • 0x736C6F76 ('VOLS'):
    Strioù volum
  • 0x696C6F76 ('VOLI'):
    Informadoù diwar-benn ar volum
  • 0x4B4C4256 ('BLCK'):
    Blok volum
  • 0x504D4250 ('PBMP'):
    Donnelezhioù grafik
  • 0x4C415050 ('PPAL'):
    Palet kolor
  • 0x4C415043 ('CPAL'):
    Container palet kolor
  • 0x64616568 ('head'):
    Gwennel
  • 0x61746164 ('data'):
    Donnelezhioù implij
0x0004 uint(24) Kargadur-bloc

Aotrenner an ar goulennoù diwar-benn pe ouzhpenn (e Byte) eo an dachenn don-mañ.

Setu, ar data gwirion a zo komprenet - n'eo ket ennañ an 8 byte a zo e-header.

0x0007 uint(8) Bannielioù?

N'eo ket anavezet petra eo an dorn-mañ e gwirionez.

En ar volumioù, an niver-mañ a vez dieub 0x80, e raktres all a vez dieub 0x00. Talvoudekaet ez eus e c'hallfe bezañ un dorn a flagoù.

Kozhioù

Ar volummen a zo ur c'hontener data evit ar c'hoari, e gwirionez evel ur furm arkhiv, evel ar Tarball da skouer. En Outpost 2, ar furm a zo ken ar c'hwezhioù peurliesañ - n’eo ket ur c’hast. Ne glever ket, met gallout a ra an holl re-se bezañ simulet dre an anvioù file a ziskouez.

Ur volum a zo enni ar head volum hag ur bern blokioù volum, a zo anvet d'an fichioù resis.

"Volummen" eo ar fichioù gant ar fin 'vol' er c'heflusker c'hoari.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 56 4f 4c 20 -- -- -- -- -- -- -- -- -- -- -- -- V O L . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Fichioù Hud
0x0004 uint(24) Kresk an blok
0x0007 uint(8) Bannielioù

Pennad Volum

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 76 6f 6c 68 -- -- -- -- -- -- -- -- -- -- -- -- v o l h . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Fichioù Hud
0x0004 uint(24) Kresk an blok
0x0007 uint(8) Bannielioù

An Trezel Volume ne ra ket an draoù implij.
E servij da vezañ ur c'hlok.

Er gentañ data e-barzh an Trezel Volume e c'hall bezañ an Trezel Volume; goude-se e c'hall bezañ an titouroù diwar-benn an Trezel.

Mennoù Volom

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Fichioù Hud
0x0004 uint(24) Kresk an blok
0x0007 uint(8) Bannielioù
Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 76 6f 6c 73 -- -- -- -- -- -- -- -- -- -- -- -- v o l s . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Fichioù Hud
0x0004 uint(24) Kresk an blok
0x0007 uint(8) Bannielioù
0x0008 uint(32) Kantad an payload

Indiquez penaos many bytes a zo a-dreuz ar data-mañ a zo gwir da vezañ data implijet.

Ar re all, ar re a chom er listenn volumañ, a zo a-wezhioù da vezañ klevet evel garbage.

Er fileoù a zo en un amzer diwezhañ, an 'data a chom' a zo 0x00, a c'hall bezañ un doare da c'houlenn a zo gant an droidigezhioù a-bouez en amzer a zo bet boulc'het ar c'hoari, da lâret eo, ne c'hell ket bezañ a ra an implij a zo graet evit ar bufferioù, abalamour ne c'hall ket bezañ a dra pe a dra, ma 'z eo ar data a zo bet implijet pe n'eo ket.

0x000c uint(8)[] Lizenn an anvioù furmadoù

Setu un listenn 0-Byte-terminet eus anvioù file, a zev an ASCII-berzhioù nemetken - e-lec'h ma vez ar stumm data-mañ.

N'eus ket ezhomm da welet re ziouer ar blok data-se pa vez parseet, abalamour ma vez an offests eus an anvioù file graet diouzh ar goulennoù voluma.

Evit ar Volume Strings ez eus ur Lusenn eus an anvioù file, a zo e-barzh ar volume -se.

Informations diwar ar volom

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 76 6f 6c 69 -- -- -- -- -- -- -- -- -- -- -- -- v o l i . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Fichioù Hud
0x0004 uint(24) Kresk an blok
0x0007 uint(8) Bannielioù

Ar c'halonennioù voluma a gemer titouroù diorren eus ar c'hentañ. Setu, ez eus ouzhpenn ur seurt evezhiadenn FAT (FAT = File Allocation Table).

Ar niver a c'hastadoù a c'hwitet a zo divizet gant ment ar blocioù a ro ur c'hlok evit an orinenn - 14 Byte.

Ar c'hastadoù an orinenn a zo gant an doare da-heul :

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Anv ar ficherioù-Offset

Ro anavez pe e peleh 'offset' (!) e barzh al listenn an anvioù (Volume-Strings) e vez kavet an anv ar bajenn.

Hag e vez liammet ouzh penn ar bloc dataoù.

0x0004 uint(32) Ofis ar restr

Diskouez a ra peseurt offset a zo e-barzh ar volumed-file a-bezh ma'z eo ar file.

0x0008 uint(32) Brasserezh ar fayl

Indik ar mod, penaos eo bras ar furm en byteoù.

0x000c uint(16) Bannieloù?

Diskouez a ra diskulioù ouzhpenn diwar-benn kodenn ar ficher.

  • 0x03 a zo setu, pa vez ar ficher compresset. Amañ e vez implijet ur gêr Huffmann.
  • 0x80 a zo a-wezhioù setu.

Blok Volum

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 56 42 4c 48 -- -- -- -- -- -- -- -- -- -- -- -- V B L H . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Fichioù Hud
0x0004 uint(24) Kresk an blok
0x0007 uint(8) Bannielioù

En un blok volume ez eus ur c'hontener, ma vez ezhomm an amzerioù. Eñ a zo ennañ un nebeud - abalamour d'ar format blok - an tu d'ober ouzhpenn ha goude-se e vez kaset an dataoù implijet.

Tileoù

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 50 42 4d 50 -- -- -- -- -- -- -- -- -- -- -- -- P B M P . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Bytes Magic
0x0004 uint(24) Kresk-vezh
0x0007 uint(8) Mammennioù

Ar Tiles a zo ur format grafik Bitmap spesifik da Outpost-2. Emañ int o taol e 13 Tilesets, "e;wells"e; anvet (well0000.bmp betek well0012.bmp), kaer e-barzh ar volum maps.vol.

E-touez an Tilesets / Wells ez eus ar pezh-mañ :

Anv Ensavad
well0000.bmp Ur grafik vras 32x32px, glas - mat evit teskañ ma'z eus ar loader-ruz e-barzh
well0001.bmp Ur grafik gant roc'h sklaer, menezioù war roc'h sklaer hag un niver a varioù eus kraterioù en roc'h sklaer
well0002.bmp Ur grafik gant 'Doodads' roc'h sklaer - se an elfenn, a c'haller lakaat evit digreskiñ (pe da zistreiñ, evel miriadoù) war roc'h sklaer, goude-se ur vegetation
well0003.bmp Ur grafik gant ur struktiur krustenel war roc'h sklaer
well0004.bmp Ur grafik gant roc'h du, menezioù war roc'h du hag un niver a varioù eus kraterioù en roc'h du
well0005.bmp Ur grafik gant 'Doodads' roc'h du - se an elfenn, a c'haller lakaat evit digreskiñ (pe da zistreiñ, evel miriadoù) war roc'h du
well0006.bmp Ur grafik gant ur struktiur krustenel war roc'h du, ha troioù etre roc'h sklaer ha du
well0007.bmp Ur grafik gant lava, gant 4-5 framioù anim da gentañ
well0008.bmp Ur grafik gant melen ha un niver a varioù eus kraterioù en melen
well0009.bmp Ur grafik gant 'Doodads' melen - se an elfenn, a c'haller lakaat evit digreskiñ (pe da zistreiñ, evel miriadoù) war melen
well0010.bmp Ur grafik gant 48 tro evit melen da roc'h sklaer ha du
well0011.bmp Ur grafik gant kaperioù polar ar map, gant roc'h du evel douar
well0012.bmp Ur grafik gant kaperioù polar ar map, gant roc'h sklaer evel douar

Ez eo ar c'hinnig da vont war-raok evit un implij mat, na raet ket an tiles en un doare a-raok evit en em c'hast, abalamour ma 'z eo ret labourat ouzh an donnadoù evit ar c'hloz/hañv - ha kalz kalz a donnadoù a c'hallfe bezañ.

Ar tiles a zo grafik 8bpp gant ur palette indexet en 32x32 pixel, a zo kejet a-berzh. E kement tileset a c'hall bezañ muioc'h.

Ar prantad pennañ a zo kempennet e 2 rumm: head ha data.

Teuliad Arzhur

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Bytes Magic
0x0004 uint(24) Kresk-vezh
0x0007 uint(8) Mammennioù
0x0008 uint(32) Version / Gloioù?

Gwelet a reer e c'hall bezañ un teulioù diwar an doare format; er holl oberennoù a zo ennon, e oa ar value 0x02 amañ.

0x000c uint(32) Ledan (Awenadur horizontal)

Diskouez a ra penaos eo bras an dachenn skeudenn (er pixel).

Er pobloù a-bouez e Outpost 2 e vefe da gortoz an niver 0x20 pe 32 amañ.

0x0010 uint(32) Uzh (Uzh an vertikal)

Diskouez a ra penaos uhelañ eo ar file skeudenn (e pixel).

En holl wells eus Outpost 2, ez eo da gortoz ar value 0x20 pe 32.

0x0014 uint(32) Pezhioù liv?

Ar frouezh-mañ n'eo ket anavezet.

Ma'z eus en holl fichierioù dizoloet an danvez 8, gallout a ra bezañ ur gwirioù liammet ouzh an diep dorn.

0x0018 uint(32) Dibab liv 2?

An n'ezhomm ket gouzout petra a dalv an dra-se.

Gallout a rae bezañ ul 'ziel'-lennad-kolor.

Ar wech-mañ e vo un file palez en format RIFF d'an doare standard. An droidigezh resis a weler - evel ma aparez an paletoù el lec'hioù all - en Paletoù.

Donnees Tiles

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Bytes Magic
0x0004 uint(24) Kresk-vezh
0x0007 uint(8) Mammennioù

Enfin, e teulet ar data pixel, eus an tu glaz-ugent, liammet e linenn da dreuz d'ar re diavaez.
Ar gwerz data e-barzh ar grafikoù a vez 8bpp-Bitmaps, a c'hortoz ar renk e palet renk.

Ar data pixel a zeu o mirdi eus an tu glaz-ugent ha a seblant da vezañ e diavaez.

Ar c'henstroll gêm a c'hlod ar tiles *nebeud* en demand.
Se a ra da c'hortoz a-ratozh an deiz ha noz, gant 32 rannañ tiles disheñvel. E giz-se, e c'haller goulenn 'un tamm' diwar ar gwerzh-digoriñ. N'int ket bet gouest da glask ar gwerzhoù sur, klask a ran war ar rummad kinnig

v *= (daylight / 48) + 0.25;

gant ar data HSV eus an pixel, ma 'z e daylight ur gwerz a 0-31 ha v ur gwerz etre 0-1. Hag ivez, e ranker sellet ouzh an aod, ma'z eus ur moud 16 tiles d'ober dindan da zevezh ha d'ar reter (a servij da spawne an unednoù a zo en disheñvel).

Agrenn ouzhpenn, e c'haller sellet ouzh an deiz ha noz, a oar dre ar c'henstroll gêm, da lavarout e c'haller hepken un archer a map da zevel.
Ur c'henstroll deiz ha noz gellout da vezañ evel-se :

Visualisation an deiz ha noz

PRT

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 43 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- C P A L . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Magic Bytes
0x0004 uint(24) Kamm-dreuzh paletenn

Roet, e-lec'h ar stumm blok urzh, an niver a paletenn a c'hall bezañ kavet er file-mañ - nann an hirder ar blok e byte.

0x0007 uint(8) Bannielioù

Mar a zo da c'houzout, Flagioù.

N'eus ket a Flagioù a zo gouestlet din ; abalamour ma n'eus nemet ar c'hontroloù a zo 0x00, e c'hellfe bezañ ivez e c'halvfe an niver a paletoù bezañ just un uint(32).

Penaos e c'haller deskiñ petra eo ar PRT a zo, n'am eus ket soñj; gallout a ra bezañ 'Palette ha Ressource Table' - abalamour ma'z eo ar fichiers-mañ - kavet evel op2_art.prt e maps.vol - ur pezh a zo, pe evit aozañ e c'hallfe se zo ur sklaerenn gwelloc'h.

Ar ficher-mañ a zo ur roll paletten, ur tabel diwar-benn an bitmap all a zo implijet, an holl enskrivadurioù animatiñ, ha setu ivez un niver a donderioù anvet. Emañ o vevañ e-barzh ar format kontener diazezet, abalamour n'eus ket an holl resisadurioù a vev e se sistem.

Ar strollad CPAL (a c'hall bezañ e vret 'paletten-kontener') a zo unan a gaver nemet paletten, o kinnig penaos 'zo 1052 byte-bras 8-bit paletten' a zo amzer.

Ar c'hontrol 1052 byte n'eo ket ur c'hontrol da zerc'hat, abalamour ma c'hall ar format paletten bezañ disheñvel. Eo anveet mat evit ar stumm data, ma vez roet Outpost 2.

Glaz ouzh ar roll paletten, e-lec'h ma c'haller deskiñ ur pennad kinnig, kavet e teu da vevañ d'ar roll bitmap; ar roll animatiñ a zeu ivez a-raok.
An daou a vez digoret gant un uint(32) (pe c'hoazh uint24+uint8 flagoù?) o kinnig an niver a resisadurioù.

Paletoù

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 50 50 41 4c -- -- -- -- -- -- -- -- -- -- -- -- P P A L . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Kadorioù Mistiche
0x0004 uint(24) Pellenn paletenn

Ro an niver a paleted er file-mañ - nann an hirder bloc'h en byte - en ur glask ouzh ar format brokus.

0x0007 uint(8) Stellennadoù

Mar plij, evel just, Flagoù.

Me n'out ket o klask Flagoù; rak an holl vautoù am eus soñjet a zo 0x00, e c'hallfe bezañ ivez e c'hallfe an niver paleted bezañ just ur uint(32).

Ar gounidoù palet a zo sklaer da c'houlenn.
Eo eul liamm etre ur pennad hag ur segmant data.

Heder Paletten

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 68 65 61 64 -- -- -- -- -- -- -- -- -- -- -- -- h e a d . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Kadorioù Mistiche
0x0004 uint(24) Pellenn paletenn

Ro an niver a paleted er file-mañ - nann an hirder bloc'h en byte - en ur glask ouzh ar format brokus.

0x0007 uint(8) Stellennadoù

Mar plij, evel just, Flagoù.

Me n'out ket o klask Flagoù; rak an holl vautoù am eus soñjet a zo 0x00, e c'hallfe bezañ ivez e c'hallfe an niver paleted bezañ just ur uint(32).

0x0008 uint(32) Pajenn format palet?

A vije desket pe seurt verzion paletenn a ra an palet.

Seul paletenn Outpost2 a zo da gentañ gant verzion 0x01.

Donnezen Paletten

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 64 61 74 61 -- -- -- -- -- -- -- -- -- -- -- -- d a t a . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Kadorioù Mistiche
0x0004 uint(24) Kresk-liennoù
0x0007 uint(8) Stellennadoù

Ar section data a gemer al lec'hioù pallet disheñvel. Ar niver a lec'hioù pallet a zeu eus an hirder block / 4.

Ar c'hwi a lec'hioù a zo gant an tiod kinniget-mañ ;

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 -- -- -- 04 -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(8) Ruz-komponent

Roet a ra an delennoù ruz eus ar couleur

0x0001 uint(8) Kembrez-berzh

Roet an divod gwen an liñsan

0x0002 uint(8) Komponent bleu

Ro an delennoù glas eus ar renk

0x0003 uint(8) Dianav - Lakaoued?

Ne c'houzañv ket petra a dalv ar vale-mañ, abalamour ma'z eo d'an doare 0x04 en ur mod pouezus.

War an ar paletenn, ne ve ebet da lavar, ez eo an arouezioù da c'houzout evit paletenn an animadoù :

  • Ar renk kentañ zo DIBAB transparant, pegen ma 'z eus ur value ebarzh.
  • Ar paletenn-kas 1-24 a vez desket evel liv ar c'hleñved en ar paletenn 1-8.
    Pehini a zo ar livioù a zo dirak c'hleñved 1, ne 'z eus ket aoun din.
    Me a gred ez eo an livioù re rest hardcoded.

Paletenn-Referans

Bitmapoù

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Largenn kempredet

Roet eo an ledander ar rigoù data pixel e bita - abalamour ma'z int iziliñ d'ar reolen 4 bita.

Hag eo aes da ziskouez ur rigoù disheñvel.

Perak e vez stummet ar vau-mañ en ur mod disheñvel, pa c'hallfe bezañ kempennet, ne vank ket a dug.
Hag e c'hall bezañ ur gwellaat evit ar c'hod render.

0x0004 uint(32) Offset

Rag aozañ an offset ar rumm kentañ er bitmap

0x0008 uint(32) Uhelder

Roet an uhelder azhioù an ulioù en pixel

0x000c uint(32) Larged

Roaz an ledander ar skeudenn en pixelioù

0x0010 uint(16) Typ

Diskouez a ra an doare eus ar skeudenn. Amañ e kavan an dudi a c'hall bezañ ur bitmask:

  • 0x04 a zo setu, ma'z eo ur grafik 1bpp.
  • 0x40 a zo setu, ma'z eo ur grafik a rank bezañ gimpleg.
0x0012 uint(16) Palette

Diskrivit, peseurt palet a zo da implijout eus ar PRT-file

An d'data-struktur PRT-file-mañ a ziskouez penaos eo bet sevel ar bitmaps a vez implijet evit ar sprites. Ar bitmaps-mañ a servent andid as ur ranndi, diwar bennañ e c'hall bezañ meur a re a ziskouez ur framm animatour evit ur sprite.

Ar data skeud a zo ennañ e op2_art.BMP en doa ar c'hargad.
Penaos e c'hall ar BMP-mañ bezañ ganti un (furchal a-us) RIFF-Bitmap-header, n'eo ket sklaer. Posubl e c'hall outpost 2 implij ar system-APIs evit kargañ ar skeudennoù, evel ma vez ouzhpennet ar header-se diouzh an amzer hag ar c'hardadoù a c'hell bezañ adstummat.

Ar data pixel a zo en BMP-file a zo er plac'h Offset + ar uint32-Offset, a c'haller kavout en BMP-file en adres 0x000A (RIFF-Bitmap-data-offset), ha d'ober ur roll a zeus e kêr a zo a-benn ar c'houlz a-drugarezh a-hed a-hend-all.

Grafikoù monochrom 1bpp a c'hall bezañ skignet evel ma vez ar liv 0 ur transparence holl, hag ar liv 1 ur c'hwezh transparant du/gwenn, abalamour ma vez implijet ar grafikoù monochrom da gentañ evit ar shadows karr hag ar savadurioù en animatiñ.

Dre-se e c'haller krouiñ meur a skeudenn.

Modul kêr protected (Plymouth)

Animadegoù

Bremañ e teuomp da rumm ar c'hentañ ezhomm en divizionoù e-barzh formatoù donedigezh Outpost 2:
Ar c'hinnig.

Ar rolloù kinnig a zeu gant ul pennad global, a zo arveret evit gwirioù an data, a gendalc'h. Goude-se e teu ar c'hinnig konkrid, a zo un doare da treiñ e 3 ranniñ:

  1. Kinnig
    Ur c'hinnig a zo ar rummad uhelañ; e kinnig c'hinnig ur unité, un ti pe ur 'kinnig partikel' (dilud, amzer, explozion) e un doare resis.
  2. Frame
    Ur frame a zo un d'image unvan e-barzh ur c'hinnig. Ur c'hinnig a c'hall bezan ul frame pe meur a frame.
  3. Subframe
    Ur subframe a zo an titouroù diwar-benn penaos e rank un bitmap resis bezañ skignet e un doare resis e un doare gentañ ur frame. Ur frame a c'hall bezan ul subframe pe meur a subframe.

Goude-se e teu an diforc'hioù kinnig klasket.

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) Niver an emgefrezhioù

Pegeit a zo d'ober gant ar c'henwerzhioù animasion

0x0004 uint(32) Niver ar c'hadennadoù

Pe hoeveel a rae bezañ a-bezh

0x0008 uint(32) Niver ar subframes

Pegeit subframes a zo da vezañ e total

0x000c uint(32) Niver an dorioù dibar

Pe combien a zo "dizoloioù dibar" e-barzh.

Animadur

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0010 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
0x0020 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(32) An dorn 1

Inforzhioù an nann-anv

0x0004 uint(32) Kuzhadoù Danvez: Liennoù

Kas ar c'hentañ kleiz (e piksel) eus ar Bounding Box.

0x0008 uint(32) Kalon Pemp: Uhel

Roñ ouzh ar penn kentañ uhelañ (e piksel) eus ar Bounding Box.

0x000c uint(32) Kuzh-vurzh: Leston

Roaz an lartadoù (e piksel) an Bounding Box.

0x0010 uint(32) Teuliad: Uhelder

Roer ar uhelder (en Pixel) eus ar Bounding Box.

0x0014 uint(32) Aotret: X

Ro d'an dañv kentañ horizontal eus an animadur

0x0018 uint(32) Offset: Y

Diskouez ar c'hreiz vev a-benn an animadur

0x001c uint(32) Anar 2

Infos an n'eus ket bet klevet

0x0020 uint(32) Niver ar c'hadennadoù

Roet e vez, petra o devez ar framoù animadur er animadur-mañ

0x0024 uint(32) Niver Windows

Diskouez perzhioù an niver a venestr a vo implijet pa vez stummet

Ar data eus ar c'hentañ rumm, ar c'hendiviz, a zo alies data administrativ - Ar Boundingbox a zav da c'hwiadenn ar c'hordenn autour an dachenn/kevrenn, pa vez an dachenn-se dibabet ha kinnig a ra ivez petra a c'hall bezañ kliked.

Ar Offset a ziskouez alies an "poull gentañ"; ar poull a c'hall bezañ adkavet evel-just pe adkaozet war ar c'hordennioù er jeu. Gallout a ra bezañ lavaret mathematically : ar Offset a zav da c'hwiadenn ar kordennenn.

Evit ar Windows, e vez ivez, evel ar Offset, 4 uint(32)-vleadoù evit pep Window, a ziskouez un dachenn a c'hall bezañ implijet evit subframes disheñvel. E-keit ma ne vez ket ur c'hardad kinniget evit ar Bitmap, ne c'hall ket sevel e-barzh ar Windows.

Fraj

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(8) Niver an subframe ha Toggle evit Diblant 1, 2

Ar c'hant-mañ a zo:

  • 0x7F (Maska bit): Niver ar subframes a vez implijet er fram-mañ
  • 0x80: An titouroù diwar-benn ma 'z eus Optional 1 ha 2
0x0001 uint(8) Anav 1 ha Toggle evit Optional 3, 4

Arc'hant-mañ a zo:

  • 0x7F (Maska bit): Anavezet - Me a soñj kalz e c'hall bezañ an niver a gameticks a rank arver bezañ, a-raok ma vo diskouezet ar framm da-heul
  • 0x80: An titouroù diwar-benn ma 'z eus Optional 3 ha 4
0x0002 uint(8) Dibabit 1

Anav

0x0003 uint(8) Dibabit 2

Anav

0x0004 uint(8) Opsioun 3

Anav

0x0005 uint(8) Dibabit 4

Anav

Subframe

Adr x0 x1 x2 x3 x4 x5 x6 x7 x8 x9 xA xB xC xD xE xF karakter
0x0000 -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- . . . . . . . . . . . . . . . .
Dibab Tipez data Anv Evezhiadenn
0x0000 uint(16) Id Bitmap

Rannit petra bitmap a vo implijet evit ar subframe-mañ

0x0002 uint(8) An dorn 1

Ne ouzer ket - met me a c'houlenn kalz, ez eus a blijadur da skrivañ diwar-benn ur priotizadur render (Z-Layer) a zo amañ.

0x0003 uint(8) Subframe-Id

Roet a ra ez eus e pelec'h e vezomp er subframe

0x0004 sint(16) Offset - Horzhevel

Diskouezit e lec'h ma vo lezet an subframe e-barzh an frame, pe penaos e vefe kaset ar bitmap da greun e-kerzh ar pixelioù

0x0006 sint(16) Offset - Vertikal

Diskouezit e-lec'h ma 'z eus pal an subframe er fram, pe penaos e vez karget an bitmap er c'hwezh dre vras.

Ma c'hallomp bremañ sevel frammoù disheñvel, ha ivez animioù komplekse, da skouer da ur animadur tomm, an animadur gant an Index 500, diskouezet.

Animasion 500

Animation 500 a montret penaos e vez degaset un Plymouth-Transporter, leun a-berzh a draoù biasa, ha kaset e-barzh. Setu un doare eus ar few animadoù a implij an aozadur Windowing.

Ha setu penaos e c'haller krouiñ an animation a-bezh.
Helañ, ez eus c'hwezhioù gant ar c'harnioù uhelañ, abalamour ma n'eo ket bet setu ar bit a-bouez er gouelenn grafik.

Setu c'hwezh a-wech all, animadoù splann a zo er c'hrog:

Rendering eus Animation 500 a zo ilistriet

Animation 500 a zo bet krouet a-bezh

Fabriek Kêl Plymouth

PORT Kêl Eden

MEDISIN Kêl Eden

SCAT

PORT Kêl Plymouth

Easteregg:
An Nedeleg

Easteregg:
Dans Dog

Kaozeadenn Implijout

Bremañ e vez ezhomm ar c'hontrol-implij eus ar c'hoari, hag a zo en un metal furmet-displeg.

Penaos, ivez e vez diskouezet n'eo ket ret d'ar Dynamix en em c'hrouiñ ar c'halz; n'eo ket sioul an tu d'ober gant ar c'hontrolioù User32 ha GDI32 a ro Windows - brasañ a-wezhioù e vez implijet an doujañs war ar jodioù eus User32.

Adalek an dra-se, e c'haller da skouer, dre ober gant ar programm Resource Hacker a zo bet krouet gant Angus Johnson evel ur Freeware, pe - ma 'z oc'h o klask implij ar Wine e Linux / Mac OS - dre ar wrestool a zo en icoutils.

Anv ar file Konteniñ
Outpost2.exe En deus nemet ar icon eus ar c'hoari, a ziskouez ar stummoù o c'hortoz New Terra
op2shres.dll En deus, du-hont, ar grafikoù evit ar c'hontroled, evel ar frammioù, ar boutonioù, ar radio-boutonioù hag ar checkboxioù, ivez ar c'houskioù diabarzh, ar skeudennoù a lakar en istor-mission ha ar grafikoù diabarzh evit ar menu-bras
out2res.dll En deus ar dekor ar fenestr a-hed ar c'hoari, ar iconioù evit metal biasañ ha spesial, ar skeudenn kargañ, ar grafikoù evit ar c'houlzioù, ha furcher grafikoù cursor all, ouzhpenn ar re animet e-barzh ar roll c'hoari