Outpost 2 ꦢꦺꦠꦶꦭꦩꦠꦺ · bei.pm
Format file sing diterangake ing kaca iki adhedhasar analisis teknis babagan hak kekayaan intelektual saka Dynamix, Inc. lan Sierra Entertainment.
Hak kekayaan intelektual saiki dadi bagian saka Activision Publishing, Inc.- / Activision Blizzard, Inc.-massa lan saiki diduweni dening Microsoft Corp..
Informasi iki dikumpulake liwat Reverse Engineering lan Datenanalyse kanggo tujuan arsip lan interoperabilitas kanthi data sejarah.
Ora ana spesifikasi sing duwe hak utawa rahasia sing digunakake.
Gim iki saiki bisa dituku minangka unduhan ing gog.com.
Rentetan artikel ing ngisor iki nyathet panemuku marang format data ing game strategi wektu nyata "Outpost 2: Divided Destiny", sing dirilis dening Sierra ing taun 1997 lan dikembangake dening Dynamix.
Aku wis fokus nganalisa data saka game iki - lan apa sing bisa ditindakake - kira-kira saka 01 November 2015 nganti 14 November 2015.
Miturut informasi sing bisa dakperoleh nganti saiki, Dynamix - kaya akeh perusahaan komersial liyane - ora ngembangake sawetara format data khusus kanggo Outpost 2, nanging uga digunakake ing pangembangan liyane kaya seri Mechwarrior (sing wis dimodifikasi).
Sanadyan mangkono, bisa dicathet manawa kekuatan inovasi format data iki sejatine winates lan asring adhedhasar konsep-konsep lawas saka format umum kaya JFIF lan RIFF.
kanggo interpretasi tabel lan format data, informasi liyane bisa ditemokake ing ꦱꦶꦠꦶꦤ꧀ ꦱꦶꦠꦶ? .
Data sing kasebut ing kene umume bisa dimangerteni minangka Little Endian.
Pungkasan, bisa dibilang yen reverse engineering iku banget nyenengake, sanajan ora lengkap.
Sajrone iku, aku uga nyaranake kanggo main game iki dhewe, amarga nawakake mekanika game sing menarik.
ꦲꦶꦏꦸꦁꦗꦺꦴ
Data format sing digunakake dening Outpost 2 nduweni struktur sing ngelingake marang JFIF / PNG - blok data sing saben-saben mesthi nduweni header 8 byte. Amarga iku, aku ora bakal nyatet header siji-siji ing panggonan sing cocog lan mung nyatet penyimpangan ing kono.
Format kasebut mesthi kaya ing ngisor iki; data sing bener-bener dienggo banjur dilebokake ing jerone:
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦩꦶꦗꦶꦏ꧀ ꦧꦺꦴꦠꦺꦴꦱ | Nggawa informasi babagan apa sing diarepake ing blok data sabanjure. Nilai-nilai sing dikenal:
|
0x0004 | uint(24) | ꦧꦭꦺꦴꦏ-ꦭꦺꦁꦏꦺ | Nduweni informasi babagan sepira gedhene (ing Byte) blok data ing ngisor iki. Ing kene ateges data sing bener - 8 Header-Byte ora kalebu ing kono. |
0x0007 | uint(8) | ꦗꦶꦏꦠ꧀? | Ora jelas, kanggo apa blok iki digunakake. Ing Volume, nilai iki asring 0x80, ing file liyane asring 0x00. Iki nuduhake yen iki minangka set bendera. |
ꦮꦺꦴꦭꦸꦤ꧀
Volume iku minangka wadah data kanggo game, padha karo format arsip kaya Tarball. Ing Outpost 2, format iki mung ngerti file - ora ana folder. Mungkin iki bisa disimulasikake liwat jeneng file sing cocog.
Sebuah Volume dumadi saka header Volume lan sawetara blok Volume, sing cocog karo file konkret.
"Volumes" iku file kanthi akhiran 'vol'
ing direktori game.
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 4f | 4c | 20 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | O | L | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦩꦗꦶꦏ ꦧꦶꦠꦺꦱ | |
0x0004 | uint(24) | ꦧꦺꦴꦏ꧀-ꦭꦺꦴꦁ | |
0x0007 | uint(8) | ꦥꦼꦭꦁ |
Judhul Volume
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 68 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | h | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦩꦗꦶꦏ ꦧꦶꦠꦺꦱ | |
0x0004 | uint(24) | ꦧꦺꦴꦏ꧀-ꦭꦺꦴꦁ | |
0x0007 | uint(8) | ꦥꦼꦭꦁ |
Header Volume ora ngemot data pangguna apa-apa.
Iku mung minangka wadah.
Dina pisanan ing Header Volume kudu ana Volume Strings; sawise iku banjur bakal ana informasi Volume.
Volume Strings
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦩꦗꦶꦏ ꦧꦶꦠꦺꦱ | |
0x0004 | uint(24) | ꦧꦺꦴꦏ꧀-ꦭꦺꦴꦁ | |
0x0007 | uint(8) | ꦥꦼꦭꦁ |
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 73 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | s | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦩꦗꦶꦏ ꦧꦶꦠꦺꦱ | |
0x0004 | uint(24) | ꦧꦺꦴꦏ꧀-ꦭꦺꦴꦁ | |
0x0007 | uint(8) | ꦥꦼꦭꦁ | |
0x0008 | uint(32) | ꦥꦺꦴꦭꦺꦴꦑ-ꦭꦺꦁꦒꦺ | Nyebutake pira byte saka data ing ngisor iki sing sejatine minangka data sing migunani. Data liyane sing isih ana ing daftar volume-string katon dadi garbage. Ing berkas-berkas sing duwe tanggal luwih anyar, 'data sing isih ana' iku 0x00, sing bisa nuduhake kekurangan ing toolchain nalika pangembangan game, yaiku, yen pangembang anyar ngurus inisialisasi buffer kanthi bener ing pungkasan, amarga ora ana pengaruh marang game apa data wis diinisialisasi utawa ora. |
0x000c | uint(8)[] | ꦢꦺꦠꦶꦤꦩꦼꦤ-ꦭꦶꦱꦺ | Iki minangka dhaptar jeneng file sing dipungkasi 0-byte, sing - paling ora ing komponen data iki - mung ngarepake karakter ASCII. Ora perlu, nalika ngurai data, kanggo ngetokake blok data iki luwih rinci, amarga ing informasi volume wis langsung dirujuk offset jeneng file. |
VOLUME STRINGS iku sawijining dhaftar jeneng file sing kalebu ing sajroning volume kang ana.
Informasi Volume
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 76 | 6f | 6c | 69 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | v | o | l | i | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦩꦗꦶꦏ ꦧꦶꦠꦺꦱ | |
0x0004 | uint(24) | ꦧꦺꦴꦏ꧀-ꦭꦺꦴꦁ | |
0x0007 | uint(8) | ꦥꦼꦭꦁ |
Informasi volume nyakup informasi luwih rinci kanggo file-file. Iki minangka sawijining jinis entri direktori FAT (FAT = File Allocation Table)
Jumlah file ditentokake saka ukuran blok dibagi dhuwure entri direktori - 14 Byte.
Entri direktori siji-sijine duwe susunan kaya ing ngisor iki:
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦢꦺꦠꦶꦤꦩꦼꦤ-ꦲꦺꦴꦤꦠ | Nyatakake ing ngendi offset (!) ing dhuwur dhaptar jeneng file (Volume-Strings) jeneng file saka file kasebut ditemokake. Iki ngacu marang wiwitan blok data sing digunakake. |
0x0004 | uint(32) | ꦢꦺꦠꦶꦱꦶ-ꦲꦺꦴꦥꦼꦠ | Nyatakake, ing endi offset ing sajroning file volume sing kabeh ana, file iki dumunung. |
0x0008 | uint(32) | ꦢꦺꦠꦶ ꦏꦼꦏꦺ | Nyatakaké pira gedhene berkas ing Byte. |
0x000c | uint(16) | 🏳️🌈? | Katone ana informasi tambahan babagan pengkodean file.
|
Blok Volume
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 56 | 42 | 4c | 48 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | V | B | L | H | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦩꦗꦶꦏ ꦧꦶꦠꦺꦱ | |
0x0004 | uint(24) | ꦧꦺꦴꦏ꧀-ꦭꦺꦴꦁ | |
0x0007 | uint(8) | ꦥꦼꦭꦁ |
Sak sawijining Volume-Block iku sawijining wadah, ing ngendi file-file disimpen. Iku mung ngemot - amarga format block - ukuran file sing redundant lan saiki langsung dilanjutake dening data sing digunakake.
ꦠꦶꦭꦼꦱ
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 42 | 4d | 50 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | B | M | P | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦩꦶꦗꦶꦏ ꦧꦶꦠꦺꦱ | |
0x0004 | uint(24) | ꦧꦫꦗꦶꦱꦺꦴ ꦭꦼꦔꦺ | |
0x0007 | uint(8) | ꦗꦗꦤꦶꦗꦶ |
Tiles punika minangka format grafik Bitmap sing khusus kanggo Outpost-2.
Padha nyebar ing 13 Tilesets, sing diarani "wells" (well0000.bmp
nganti well0012.bmp
),
ingkang ana ing jero volume maps.vol.
Sajrone Tilesets / Wells ngemot ing ngendi:
Asma File | Isi |
---|---|
well0000.bmp | Grafik warna biru ukuran 32x32px - cocog kanggo nguji apa pemuat gambar sampeyan bisa digunakake |
well0001.bmp | Ngandung watu cerah, pegunungan ing watu cerah lan macem-macem variasi kawah tabrakan ing watu cerah |
well0002.bmp | Ngandung 'Doodads' watu cerah - yaiku unsur sing bisa dipasang kanggo ngurangi kekakuan (utawa kanthi sengaja minangka struktur, kaya tembok) ing watu cerah, kalebu vegetasi |
well0003.bmp | Ngandung struktur kaya kerak ing watu cerah |
well0004.bmp | Ngandung watu peteng, pegunungan ing watu peteng lan macem-macem variasi kawah tabrakan ing watu peteng |
well0005.bmp | Ngandung 'Doodads' watu peteng - yaiku unsur sing bisa dipasang kanggo ngurangi kekakuan (utawa kanthi sengaja minangka struktur, kaya tembok) ing watu peteng |
well0006.bmp | Ngandung struktur kaya kerak ing watu peteng, uga transisi antara watu cerah lan peteng |
well0007.bmp | Ngandung lava kalebu 4-5 bingkai animasi saka lava kasebut |
well0008.bmp | Ngandung pasir lan macem-macem variasi kawah tabrakan ing pasir |
well0009.bmp | Ngandung 'Doodads' pasir - yaiku unsur sing bisa dipasang kanggo ngurangi kekakuan (utawa kanthi sengaja minangka struktur, kaya tembok) ing pasir |
well0010.bmp | Ngandung 48 transisi saka pasir menyang watu cerah lan peteng |
well0011.bmp | Ngandung kutub peta, kanthi watu peteng minangka dasar |
well0012.bmp | Ngandung kutub peta, kanthi watu cerah minangka dasar |
Iki dadi becik kanggo pelaksanaan sing akurat, ora ngasilake Tiles ing ngarep kanggo nyimpen, amarga data kanggo siklus dina/malam isih kudu diproses - lan bakal ana akeh banget data sing muncul.
Tiles yaiku grafik 8bpp karo palet terindeks kanthi resolusi 32x32 piksel, sing diatur siji sama liyane. Ing set Tiles sing wis digawe, bisa luwih akeh
Kontainer utama dumadi saka 2 bagian: head
lan data
.
Judhul Uga
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦩꦶꦗꦶꦏ ꦧꦶꦠꦺꦱ | |
0x0004 | uint(24) | ꦧꦫꦗꦶꦱꦺꦴ ꦭꦼꦔꦺ | |
0x0007 | uint(8) | ꦗꦗꦤꦶꦗꦶ | |
0x0008 | uint(32) | Versi / Bendera? | Ing kene bisa dadi minangka indikasi versi saka format file; ing kabeh file sing ana ing tanganku, ana nilai |
0x000c | uint(32) | ꦧꦼꦠꦼ (ꦲꦺꦴꦗꦺꦴꦭꦶꦤ꧀ ꦲꦺꦴꦤꦸꦠ꧀) | Nyatakaké pira amba file gambar (ing piksel). Kanggo kabeh Wells saka Outpost 2, ing kene bakal ana nilai |
0x0010 | uint(32) | ꦲꦺꦴꦶꦪꦺ (ꦮꦺꦫꦠꦶꦭꦺ ꦲꦺꦴꦗꦶꦭꦺ) | Nuduhake pinten dhuwuré file gambar (ing pixel). Ing kabeh Wells saka Outpost 2, nilai |
0x0014 | uint(32) | ꦥꦶꦭꦸꦁꦠꦺꦧꦶ? | Arti saka nilai iki ora dikenal. Amarga ana ing kabeh berkas sing dites ngemot nilai |
0x0018 | uint(32) | ꦥꦶꦠꦼꦏꦺ 2? | Makna saka nilai iki ora dingerteni. Mbok menawa iki minangka 'tujuan'-kandhane warna. |
Sawise informasi iki, bakal ana berkas palet sing ana ing format RIFF standar. Spesifikasi sing tepat bisa ditemokake - amarga palet iki uga muncul ing panggonan liya - ing ꦥꦭꦼꦠꦼꦤ꧀.
Data Ubin
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦩꦶꦗꦶꦏ ꦧꦶꦠꦺꦱ | |
0x0004 | uint(24) | ꦧꦫꦗꦶꦱꦺꦴ ꦭꦼꦔꦺ | |
0x0007 | uint(8) | ꦗꦗꦤꦶꦗꦶ |
Akhire, data piksel sing wis kosong iki muncul, saka kiwa-ndhuwur baris demi baris menyang kiwa-ngisor.
Nilai data ing gambar sing umume ana ing format 8bpp-Bitmap iki cocog karo indeks warna ing palet warna.
Engine game nyathet Tiles kanthi *mungkin* on-demand.
Iki katon amarga siklus wengi-dinane, sing duwe 32 tingkat kanggo saben Tile. Ing kene, katon yen nilai padhang dijupuk 'sawetara' saka nilai kasebut. Nilai sing tepat durung bisa ditemtokake, aku kerja ing dasar perhitungan
v *= (daylight / 48) + 0.25;
kanthi data HSV saka piksel, ing ngendi daylight minangka nilai saka 0-31 lan v minangka nilai antarane 0-1. Saliyane, kudu digatekake manawa ing peta ana pinggir 16 Tiles ing kiwa lan tengen (iki kanggo spawning unit sing ora katon).
Saliyane, siklus wengi-dinane katon nganyari mung siji kolom peta saben siklus game.
Siklus wengi-dinane sing dipercepat katon kaya ing ngisor iki:
ꦥꦫꦶꦠ꧀
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 43 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | C | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦩꦺꦗꦶꦏ꧀ ꦧꦺꦪꦺꦴꦱ | |
0x0004 | uint(24) | ꦥꦭꦼꦠꦼꦤ꧀-ꦭꦼꦔꦺ | Ngandhut, mbalik marang format blok normal, jumlah palet sing bisa ditemokake ing file iki - ora dawa blok ing byte. |
0x0007 | uint(8) | ꦥꦼꦩꦤ꧀ | Kamungkinan, kaya biasane, Bendera. Aku ora ngerti Bendera; amarga kabeh nilai sing dak ngerti cocog karo |
Apa sing diwakili dening PRT
sejatine aku ora ngerti; nanging bisa wae contone 'Palette and Ressource Table' - amarga file iki - sing ditemokake minangka op2_art.prt ing maps.vol - nyatane minangka file kaya ngono, utawa iki bisa nerangake fungsi kasebut kanthi apik.
File iki ngemot dhaptar palet, tabel kabeh bitmap sing digunakake, kabeh definisi animasi, lan sawetara data sing durung dingerteni. File iki miturut format kontainer sing wis ana, nanging ora kabeh cathetan cocog karo skema iki.
Seksi CPAL
(kamungkinan kanggo Paletten-Container) mung ngemot data palet, kanthi nyatakake pira saka palet ukuran 8-bit sing biasane 1052 byte sing ana.
Pernyataan 1052-byte iki ora dianggep wajib, amarga format palet bisa uga duwe ukuran palet sing beda-beda. Iki mung kanggo data sing dikirimake karo Outpost 2.
Sawise dhaptar palet, langsung lan tanpa header pambuka, wis ana dhaptar bitmap; lan langsung sawise iku ana dhaptar animasi.
Kedua dhaptar kasebut diwiwiti kanthi uint(32) (utawa maneh uint24+uint8 flag?) sing ngemot jumlah cathetan.
ꦥꦭꦼꦠꦼꦤ꧀
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 50 | 50 | 41 | 4c | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | P | P | A | L | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦩꦼꦗꦶꦏ꧀ ꦧꦺꦠꦺꦱ | |
0x0004 | uint(24) | ꦥꦭꦺꦠꦺꦤ-ꦭꦺꦁꦒꦺ | Nggih, sabaliké format blok normal, nyatakaké jumlah palet ing berkas iki - dudu dawa blok ing byte. |
0x0007 | uint(8) | ꦗꦶꦏꦗꦶ | Kamungkinan, kaya biasane, Flags. Aku ora ngerti Flags; amarga kabeh nilai sing aku ngerti cocog karo |
Informasi palet gampang banget kanggo diwaca.
Iki dumadi saka header lan segmen data.
Judhul Palet
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 68 | 65 | 61 | 64 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | h | e | a | d | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦩꦼꦗꦶꦏ꧀ ꦧꦺꦠꦺꦱ | |
0x0004 | uint(24) | ꦥꦭꦺꦠꦺꦤ-ꦭꦺꦁꦒꦺ | Nggih, sabaliké format blok normal, nyatakaké jumlah palet ing berkas iki - dudu dawa blok ing byte. |
0x0007 | uint(8) | ꦗꦶꦏꦗꦶ | Kamungkinan, kaya biasane, Flags. Aku ora ngerti Flags; amarga kabeh nilai sing aku ngerti cocog karo |
0x0008 | uint(32) | ꦥꦭꦼꦠꦼꦤ꧀ꦥꦺꦴꦫꦺꦴꦤ꧀? | Mbokmenawa nemtokake, versi format palet endi sing dituturi dening palet. Kabeh palet Outpost2 katon duwe versi |
Data Palet
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | 64 | 61 | 74 | 61 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | d | a | t | a | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦩꦼꦗꦶꦏ꧀ ꦧꦺꦠꦺꦱ | |
0x0004 | uint(24) | ꦧꦭꦗꦼꦭꦺꦴꦁ | |
0x0007 | uint(8) | ꦗꦶꦏꦗꦶ |
Seksi data nampa entri palet siji-siji. Jumlah entri palet iku asale saka dawa blok / 4.
Entri siji-siji nduweni susunan sing prasaja kaya ing ngisor iki;
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | 04 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(8) | ꦫꦺꦴꦠ꧀-ꦏꦺꦴꦩ꧀ꦠꦺꦤ꧀ | Nunjukaké pérangan Abang saka warna |
0x0001 | uint(8) | ꦒꦿꦸꦤ꧀-ꦏꦼꦩ꧀ꦠꦸꦤꦺ | Nandhakake proporsi ijo saka warna |
0x0002 | uint(8) | ꦧꦭꦸꦁ-ꦏꦺꦴꦩꦼꦤꦶ | Nuduhaké pérangan abang biru saka warna |
0x0003 | uint(8) | ꦲꦸꦤ꧀ꦧꦼꦏꦤ - ꦥ꦳ꦺꦴꦏ꧀? | Ora cetha apa tegese nilai iki, amarga katon dhasar |
Kanggo palet, mung ana sing kudu diucapake, yen kanggo palet sing digunakake kanggo animasi kahanan ing ngisor iki berlaku:
- Warna pisanan iku SALALAH transparan, ora preduli apa nilai sing kasebut ing kono.
-
Entri palet 1-24 dianggep minangka warna pemain ing palet 1-8.
Ngendi warna-warna iki asalé saka pemain 1, aku ora ngerti.
Aku ngira, warna-warna liyane iku wis hardcoded
ꦧꦶꦠꦩꦧꦱ
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦗꦺꦴꦧꦠꦶꦤ꧀ ꦏꦼꦠꦶꦱꦶ | Ngetokake lebar baris data piksel ing byte - amarga iki disusun miturut wates 4-byte. Saiki gampang kanggo ngakses baris gambar tartamtu. Kenapa nilai iki disimpen kanthi kapisah, sanajan bisa dihitung, durung cetha. |
0x0004 | uint(32) | ꦗꦶꦩꦶꦱꦶꦝꦶꦩꦸꦁ | Nunjukaké offset saka baris pisan ing bitmap |
0x0008 | uint(32) | ꦲꦺꦴꦮꦺ | Ngandharake dhuwur gambar ing piksel |
0x000c | uint(32) | ꦧꦿꦺꦴꦠꦺ | Ngetokake ambane gambar ing piksel |
0x0010 | uint(16) | ꦠꦶꦥ꧀ | Nyatakaké jinis gambar. Ing kéné katon manawa iki minangka bitmask:
|
0x0012 | uint(16) | ꦥꦭꦺꦠꦺ | Netepake, palet endi saka berkas PRT sing kudu digunakake |
Struktur data saka file PRT iki nuduhake carane bitmap sing digunakake kanggo sprite disusun. Bitmap iki dadi siji komponen, sing sawetara digabungake dadi frame animasi saka sprite.
Data gambar sing konkret disimpen ing
op2_art.BMP ing direktori game.
Kenapa file bitmap iki nduwe header RIFF-Bitmap (sing umume bener) ora cetha. Mungkin Outpost 2 nggunakake API sistem kanggo ngundhuh grafis, kanthi cara ngatur header iki sementara lan ngoverwrite bidang sing cocog lan bervariasi.
Data piksel ana ing file BMP ing Posisi Offset + uint32-Offset, ing file BMP bisa ditemokake ing alamat 0x000A (offset data RIFF-Bitmap), lan padha maneh karo susunan baris saka kiwa ndhuwur menyang tengen ngisor.
Grafis monochrome 1bpp bisa digambar kanthi cara kaya warna 0 dadi transparansi lengkap, lan warna 1 dadi setengah transparan ireng/abu-abu, amarga grafis monochrome umume digunakake kanggo bayangan kendaraan lan bangunan ing animasi.
Kanthi iki, sampeyan bisa nggabungake akeh grafis.
ꦄꦤꦶꦩꦸꦤꦶꦱꦺꦴ
Nalika iki kita bakal mlebu ing kelas raja saka disiplin ing sajrone format data Outpost 2:
Animasi.
Daftar animasi diwiwiti karo header global, sing utamane kanggo verifikasi data. Sawise iku, ana definisi animasi sing konkret, sing dipérang dadi 3 tingkat:
-
Animasi
Animasi iku instansi paling dhuwur; iku nglambangake animasi saka sawijining unit, bangunan utawa 'animasi partikel' (tabrakan komet, cuaca, ledakan) ing sawijining kondisi tartamtu. -
Frame
Saben frame iku gambaran siji ing sajrone animasi. Siji animasi bisa ngemot siji utawa luwih frame. -
Subframe
Saben subframe iku informasi babagan yen bitmap tartamtu kudu digambarake ing posisi tartamtu saka siji frame miturut kriteria tartamtu. Siji frame bisa ngemot siji utawa luwih subframe.
Sawise iku, langsung ana definisi-definisi animasi sing siji-siji.
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦏꦸꦭꦶꦁ ꦲꦶꦁꦏꦸꦭꦶꦤꦺꦴꦤꦺꦴ | Pira data animasi sing ana |
0x0004 | uint(32) | ꦲꦤ꧀ꦗꦶꦱꦸꦤ꧀ ꦟꦼꦩꦺꦤꦶ | Pira jumlah frame sing kudu ana kabeh |
0x0008 | uint(32) | ꦲꦤ꧀ꦗꦸꦁ ꦱꦸꦧꦫꦺꦴꦺꦤ꧀ | Pira subframe sing sakabehe kudu ana |
0x000c | uint(32) | ꦲꦤ꧀ꦗꦸꦁ ꦎꦲꦤꦸꦁ ꦲꦶꦪꦤ꧀ | Pira "entri opsional" sing ana. |
Animasi
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(32) | ꦲꦸꦤꦼꦏꦸꦤ 1 | Informasi sing ora dikenal |
0x0004 | uint(32) | 𑑅𑑉𑑑𑑉𑑖𑑉𑑑𑑊: 𑑑𑑞𑑊𑑙𑑒𑑚𑑑𑑊 | Marangke awalan kiwa (ing piksel) saka Bounding Box. |
0x0008 | uint(32) | ꦧꦸꦤ꧀ꦠꦶꦁ ꦧꦺꦴꦁ: ꦲꦶꦁꦒꦼꦤ | Nandhani wiwitan ndhuwur (ing piksel) saka Bounding Box. |
0x000c | uint(32) | ꦧꦸꦤꦺꦴꦠꦶꦁ ꦧꦺꦨꦸꦠ: ꦧꦿꦶꦠꦺ | Nampilake ambane (ing Pixel) saka Bounding Box. |
0x0010 | uint(32) | ꦧꦸꦤ꧀ꦝꦶꦁ ꦧꦺꦴꦁ: ꦲꦺꦴꦭꦺ | Nunjukaké dhuwur (ing Piksel) saka Bounding Box. |
0x0014 | uint(32) | Offset: X | Nunjukaké tengah horisontal saka animasi |
0x0018 | uint(32) | Offset: Y | Nunjukaké tengah vertikal animasi |
0x001c | uint(32) | ꦈꦤ꧀ꦧꦼꦏ꧀ꦤꦢꦶ 2 | Informasi sing ora dikenal |
0x0020 | uint(32) | ꦲꦤ꧀ꦗꦶꦱꦸꦤ꧀ ꦟꦼꦩꦺꦤꦶ | Nyatakaké pira jumlah bingkai animasi ing animasi iki |
0x0024 | uint(32) | ꦲꦤ꧀ꦗꦺꦴꦤ꧀ Windows | Nunjukaké pira jendhela sing kudu digunakaké nalika nggambar |
Data lapisan ndhuwur, animasi, utamane yaiku data administrasi - Boundingbox nuduhake koordhinat tandha ing sekitar kendaraan/gedhong, nalika dipilih lan uga nuduhake wilayah sing bisa diklik.
Offset utamane nemtokake "titik nol"; titik sing kudu dijumlahake utawa dikurangi menyang koordinat ing game. Ing istilah matematika, offset iki nuduhake asal koordhinat.
Ing Windows, kaya dene offset, ana (saben Windows) 4 nilai uint(32), ngendi iki nuduhake wilayah sing dianggep bisa digunakake kanggo subframe tunggal. Ing njaba Windows, yen wis disiapake kanggo bitmap, ora kena digambar.
Rangka
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(8) | ꦱꦸꦧꦻꦭꦶꦗꦼꦁ-ꦲꦤ꧀ꦗꦱꦶꦭꦤꦶꦏ꧀ lan ꦠꦺꦴꦏꦼꦭ ꦏꦺꦴꦤꦶꦭ 1, 2 | Nilai iki ngemot:
|
0x0001 | uint(8) | ꦲꦸꦤꦸꦁꦏꦶꦱꦺꦴ 1 lan Toggle kanggo Optional 3, 4 | Nilai iki ngemot:
|
0x0002 | uint(8) | Pilihan 1 | Ora dikenal |
0x0003 | uint(8) | Pilihan 2 | Ora dikenal |
0x0004 | uint(8) | ଓପସନାଲ 3 | Ora dikenal |
0x0005 | uint(8) | Optional 4 | Ora dikenal |
Subframe
ꦄꦢꦿ | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | ꦕꦗꦶ | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
ᮧᮞ᮪ᮕᮧᮒ | ꦢꦠꦺꦤ꧀ꦠꦾꦺꦴ | ꦧꦼꦱꦶꦗꦤ꧀ | ꦲꦺꦴꦏꦼꦠꦶꦁ |
---|---|---|---|
0x0000 | uint(16) | ꦧꦶꦠꦩꦥ-ꦆꦶ | Nyatakan bitmap endi sing bakal digunakake kanggo subframe iki |
0x0002 | uint(8) | ꦲꦸꦤꦼꦏꦸꦤ 1 | Ora dikenal - nanging aku curiga banget, yen iki gegandhengan karo prioritas render (Z-Layer). |
0x0003 | uint(8) | 𑀲𑀪𑀭𑀺𑀕𑀺-𑀅𑀢 | Nunjukaké ing subframe endi kita saiki |
0x0004 | sint(16) | ꦗꦸꦏꦼ - ꦲꦺꦴꦤꦶꦱꦶꦏꦼ | Nyatakaké ing endi ing jero Frame subframe kudu dipasang, utawa pira piksel bitmap kudu digeser sacara horisontal |
0x0006 | sint(16) | ꦎꦺꦴꦧꦠ - ꦮꦼꦫꦶꦏꦭ | Nyatakna ngendi ing jero Frame subframe kudu dipasang, utawa pira pixel bitmap kudu dipindhah sacara vertikal |
Mula kita saiki bisa nggabungake frame siji-siji, uga animasi lengkap, kaya ing ngendi dituduhake kanthi conto ing animasi sing luwih kompleks, animasi kanthi indeks 500.
Animasi 500
Animasi 500 nunjukaké, carané sawijining Plymouth-Transporter, sing kebak ore biasa, dipunsingkiraké. Iki minangka salah siji saka sawetara animasi, sing nggunakake fungsionalitas Windowing.
Lan mangkono, animasi lengkap bisa digabungaké.
Sayangé, isih ana masalah karo jendela muatan ndhuwur, amarga bit sing cocog ing informasi jinis grafik durung disetel.
Kene ana sawetara sprite liyane, sing kaendahané dianimasi saka game:
ꦱꦶꦗꦶꦪꦺꦴ ꦮꦶꦠꦶ
Saiki isih kurang antarmuka pangguna saka game kasebut, sing digawé kanthi gaya logam dipoles.
Nanging ing kene uga cetha, manawa Dynamix ora kudu nemokake roda maneh; ing kene ora mung nggunakake API User32 lan GDI32 sing disedhiyakake dening Windows - utamane uga nggunakake manajemen sumber daya saka User32.
Iki bisa diekstrak kanthi program kaya Angus Johnson sing dikembangaké minangka Freeware Resource Hacker, utawa - yen sampeyan isin nggunakake Wine ing Linux / Mac OS - nganggo wrestool sing kalebu ing icoutils.
Asma Berkas | Isi |
---|---|
Outpost2.exe | Nggawa mung ikon saka dolanan, sing nuduhake stasiun angkasa ing New Terra |
op2shres.dll | Nggawa sapanunggalane grafis kanggo unsur kendhali kaya wates, tombol, tombol radio, lan kothak centang uga latar dialog, gambar pendukung kanggo teks misi crita lan grafis latar menu utama |
out2res.dll | Nggawa dekorasi jendela inggame, ikon kanggo logam biasa lan khusus, layar muat, grafis kanggo dialog uga grafis kursor liyane, tambahan kanggo animasi ing direktori dolanan |