Cruthan Fhiosrachadh Outpost 2 · bei.pm
Tha na cruthan faidhle air an duilleag seo stèidhichte air anailis theicnigeach air maoin inntleachdail bho Dynamix, Inc. agus Sierra Entertainment.
Tha an maoin inntleachdail a-nis mar phàirt de Activision Publishing, Inc. / Activision Blizzard, Inc. agus tha i an-dràsta fo shealbh Microsoft Corp..
Chaidh na fiosrachadh a chruinneachadh tro Reverse Engineering agus anailis dàta airson adhbharan a’ choimeas agus eadar-obrachadh le dàta eachdraidheil.
Cha deach cleachdadh a dhèanamh de shpeictrean maoin no dìomhair sam bith.
Tha an geama ri fhaighinn an-dràsta airson ceannach mar luchdachadh sìos air gog.com.
Tha an sreath artaigil seo a’ clàradh mo thuigse mu na foirm dachaigh ann an "Outpost 2: Divided Destiny", a chaidh a leigeil ma sgaoil le Sierra ann an 1997 agus a chaidh a thogail le Dynamix.
Thug mi aire do dh'analas air na dàta den chluiche eadar 1 an t-Samhain 2015 agus 14 an t-Samhain 2015, a' toirt seachad mo chuid rannsachaidh.
Às deidh na h-uimhir a fhuair mi, tha e coltach gu bheil Dynamix - mar a tha mòran chompanaidhean malairteach - air cuid de na foirmichean dàta a chruthachadh, chan ann a-mhàin airson Outpost 2, ach cuideachd air an cleachdadh ann an leasachadh eile mar eisimpleir ann an sreath Mechwarrior (air a bhith air atharrachadh).
A bharrachd air sin, faodar cuideachd a ràdh gu bheil cumhachd na h-innleachdas a tha ann am foirmichean dàta gu bhith gu math cuingealaichte agus gu bheil e tric air a thogail air bun-bheachdan a tha ann mu thràth bho fhòraman àbhaisteach mar JFIF agus RIFF.
Tha fiosrachadh eile airson eadar-theangachadh nan clàran agus foirmichean dàta ri fhaighinn fo Dè tha ann?.
Tha na dàta a tha air an toirt seachad an seo gu h-iomlan mar Little Endian.
Aig an deireadh, faodaidh mi a ràdh gu bheil an inneal ath-thogail air a bhith gu math inntinneach, eadhon ged nach eil e coileanta.
Gu dearbh, tha mi a' moladh cuideachd gun cluich thu fhèin an cluiche, leis gu bheil e a' tabhann meacanaig chluich inntinneach.
Ro-ràdh
Tha na cruthan dàta a thathar a' cleachdadh ann an Outpost 2 coltach ri JFIF / PNG - tha na blocaichean dàta fa leth an-còmhnaidh le cinn-uidhe 8 byte. Mar sin, tha mi a' cumail às do bhith a' sgrìobhadh a h-uile cinn-uidhe aig na freagairtean freagairteach agus dìreach a' clàradh na h-eadar-dhealachaidhean.
Tha an cruth an-còmhnaidh mar a leanas; tha na dàta feumail fhèin ann an sin air an cur a-steach:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | char | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Bytean Draoidheil | Tha an fhiosrachadh gu h-àrd a' toirt seachad mion-fhiosrachadh mu na tha ri fhaicinn anns a' bhloc dàta a tha romhainn. Luachan aithnichte:
|
0x0004 | uint(24) | Fad an bloca | Tha an fhiosrachadh ann mu dheidhinn cho mòr (ann an Bytean) 's a tha an bloca dàta a leanas. Tha na h-àrd-dhàta fìor a' ciallachadh - chan eil na 8 Byte àrd-dhàta anns an àireamh seo. |
0x0007 | uint(8) | Brataichean? | Chan eil fhios dè cho cudromach 's a tha an bloc seo. San t-sreath tha an luach seo gu tric 0x80, ann an faidhlichean eile tha e gu tric 0x00. Tha seo a' moladh gu bheil e na shuidheachadh bratach. |
Tomhaichean
Tha na Volumes mar dhàta-container airson a' gheama, coltach ri cruth-archive mar eisimpleir Tarball. Aig a' phunt as lugha ann an Outpost 2, tha an cruth a' gabhail a-steach faidhlichean - chan eil e a' gabhail a-steach pasgain. 'S e coltas gu bheil e comasach na pasgain sin a chur air dòigh tro na h-ainmean faidhle freagairteach.
Tha Volume a' gabhail a-steach a' cheannard Volume agus grunn bhlocan Volume, a tha freagairteach do na faidhlichean sònraichte.
'Bha "Volumes" na faidhlichean le crìoch 'vol'
anns a' phasgan gheama.
Adr | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Bitàichean Draoidheil | |
0x0004 | uint(24) | Fad a' bhloc | |
0x0007 | uint(8) | Brataichean |
Ceann-latha a' mhodh
Adr | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Bitàichean Draoidheil | |
0x0004 | uint(24) | Fad a' bhloc | |
0x0007 | uint(8) | Brataichean |
Tha am Pàipear Volume a' toirt seachad nach eil duilleagan fiosrachadh sam bith.
Tha e a' frithealadh mar choimeas.
Mar a' chiad dhàta anns a' Phàipear Volume, bu chòir na sreathan Volume a bhith ann; bidh fiosrachadh mu dheidhinn an Volume a' tighinn às deidh sin.
Strìon Tùs
Adr | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Bitàichean Draoidheil | |
0x0004 | uint(24) | Fad a' bhloc | |
0x0007 | uint(8) | Brataichean |
Adr | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Bitàichean Draoidheil | |
0x0004 | uint(24) | Fad a' bhloc | |
0x0007 | uint(8) | Brataichean | |
0x0008 | uint(32) | Fhad an luchd-puist | Seallaidh e dè an àireamh de bhitean a tha fìor-ùs aig na dàta a leanas. Tha na dàta a tha air fhàgail ann an liosta na h-ìomhaighean coltach ris a bhith mar sgudail. Ann an faidhlichean le ceann-latha nas fhaide air adhart, tha na 'dàta a tha air fhàgail' 0x00, a dh’ fhaodadh a bhith a’ nochdadh eas-bhuannachdan le innealan fàs rè leasachaidh na geama, a’ ciallachadh gu bheil e coltach gu robh neach-leasachaidh a’ dèiligeadh ris an tobar gu ceart ro dheireadh, oir chan eil buaidh aig a’ ghrèin air an geama ma tha na dàta air an tobar no nach eil. |
0x000c | uint(8)[] | Liosta Ainm-Fhiosrachadh | Tha seo na liosta de dh'ainmean-fhàil 0-byte-terminichte, a tha - as lugha anns an stuth dàta a tha rim faighinn - a' freagair ri caractaran ASCII a-mhàin. Chan eil feum air an dàta seo a sgrìobadh nas mionaidiche nuair a tha sinn a' parseadh na dàta, oir tha na h-inneach-tionnsgain den ainmean-fhàil air an toirt a-steach gu dìreach anns na freagairtean tomhas. |
Tha na Slatan-tomhais Volume nan ainm-fhògar a tha ann an liosta de fhìor ainmichean faidhle a tha anns an t-seilbh.
Fiosrachadh mu Thomhas
Adr | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Bitàichean Draoidheil | |
0x0004 | uint(24) | Fad a' bhloc | |
0x0007 | uint(8) | Brataichean |
Tha na h-innealan fiosrachadh mu dheidhinn na h-eagran a’ toirt a-steach fiosrachadh nas mionaidiche mu na faidhlichean. Tha seo na sheòrsa de dh’inntrigidh chlàr FAT (FAT = Clàr Freagairtean Fhaidhle).
Tha àireamh na faidhlichean a’ tighinn bho mheud a’ bhoc a’ roinn le fad na h-inntrigidh chlàraidh - 14 byte.
Tha structar gach inntrigidh chlàraidh a’ coimhead mar seo:
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | char | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Àireamh freagairtean faidhle | Tha e a' comharrachadh an àite (!) taobh a-staigh an liosta ainm-fhògradh (sruthan tomhais) far a bheil ainm a' faidhle a' freagairt. Tha seo a' freagairt ri toiseach a' bhloc fiosrachaidh. |
0x0004 | uint(32) | Offset faidhle | Tha e ag innse dè an àite a tha am faidhle a' freagairt ann an iomall an fhàilidhean iomlan. |
0x0008 | uint(32) | Meud faidhle | Seallaidh e dè cho mòr 'sa tha an faidhle ann am bytean. |
0x000c | uint(16) | Brataichean? | Tha e coltach gu bheil fiosrachadh a bharrachd mu chòdachadh faidhle ann.
|
Bloc Volume
Adr | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Bitàichean Draoidheil | |
0x0004 | uint(24) | Fad a' bhloc | |
0x0007 | uint(8) | Brataichean |
Tha bloc voluma na chontair a tha a' cumail faidhlichean. Tha e a' toirt a-steach a' mheud faidhle a-rithist - airson cruth a' bhloc - ann an dòigh ro-lùbte, agus às deidh sin tha na dàta cleachdaidh a' tighinn dìreach às deidh sin.
Bileagan
Adr | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Bitean Magadha | |
0x0004 | uint(24) | Fad a' bhloc. | |
0x0007 | uint(8) | Brataichean |
Tha na Tiles na fhòirneart sònraichte airson Outpost-2,
format grafaige Bitmap. Tha iad a’ leudachadh thairis air 13
Tilesets, ris an canar “wells” (well0000.bmp
gu well0012.bmp
), a tha a-staigh
maps.vol
.
Tha na Tilesets / Wells a’ toirt a-steach na leanas:
Àireamh-fhìrinn | Susbaint |
---|---|
well0000.bmp | Grafaig gorm 32x32px - freagairtean math airson deuchainn a dhèanamh ma thèid am freagairtean ìomhaigh agad a chleachdadh |
well0001.bmp | Tha e a' toirt a-steach creag shoilleir, slighean beanntan air creag shoilleir agus àireamh mhòr de sheòrsaichean de phuingean buaidh ann an creag shoilleir |
well0002.bmp | Tha 'Doodads' creag shoilleir ann - freagairtean a ghabhas cur air creag shoilleir airson sgaoileadh (no mar structar, leithid ballaichean), a' gabhail a-steach feur |
well0003.bmp | Tha structar crusta ann air creag shoilleir |
well0004.bmp | Tha e a' toirt a-steach creag dhorcha, slighean beanntan air creag dhorcha agus àireamh mhòr de sheòrsaichean de phuingean buaidh ann an creag dhorcha |
well0005.bmp | Tha 'Doodads' creag dhorcha ann - freagairtean a ghabhas cur air creag dhorcha airson sgaoileadh (no mar structar, leithid ballaichean) |
well0006.bmp | Tha structar crusta ann air creag dhorcha, agus cuideachd atharrachaidhean eadar creag shoilleir agus creag dhorcha |
well0007.bmp | Tha lava ann, a' toirt a-steach 4-5 freagairtean animation |
well0008.bmp | Tha gainmheach ann agus àireamh mhòr de sheòrsaichean de phuingean buaidh ann an gainmheach |
well0009.bmp | Tha 'Doodads' gainmheach ann - freagairtean a ghabhas cur air gainmheach airson sgaoileadh (no mar structar, leithid ballaichean) |
well0010.bmp | Tha 48 atharrachaidhean de gainmheach gu creag shoilleir agus creag dhorcha ann |
well0011.bmp | Tha a' chàrn an polar air a' mhapa, le creag dhorcha mar bhunait |
well0012.bmp | Tha a' chàrn an polar air a' mhapa, le creag shoilleir mar bhunait |
Is eòlach gu bheil e freagairteach airson cur an gnìomh ceart, nach cuir na Tileannan an roimhe seo gus am bi iad air am cacheadh, leis gu bheil feum air an dàta airson an t-sreath latha/oidhche a phròiseasadh - agus bheireadh sin mòran mòran dàta.
Tha na Tileannan nan grafaigean 8bpp le palas indexte le fuasglaidhean de 32x32 piogsail, a tha air an cur ri chèile. Ach ann an seata Tile a chaidh a chruthachadh mar sin, faodaidh barrachd gu mòr a bhith ann.
Tha am prìomh-thuairisgeul a’ toirt a-steach 2 earrannan: head
agus data
.
Ceann na h-uisge
Adr | 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 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Bitean Magadha | |
0x0004 | uint(24) | Fad a' bhloc. | |
0x0007 | uint(8) | Brataichean | |
0x0008 | uint(32) | Versan / Bratach? | Fàilte, dh'fhaodadh seo a bhith na chomharra air dreach an fhòrmata faidhle; ann an na faidhlichean uile a tha agam, bha an luach |
0x000c | uint(32) | Leud (Fhad an t-sràid) | Innsear mar choitcheann a tha leud na faidhle ìomhaigh (ann an pixelan). Airson a h-uile Wells ann an Outpost 2, feumaidh an luach |
0x0010 | uint(32) | Àirde (Fhuasgladh dìreach) | Seallaidh e ciamar a tha àirde na faidhle dhealbh (ann am pixels). Airson a h-uile Wells ann an Outpost 2, bu chòir don luach |
0x0014 | uint(32) | Doimhneachd dath? | Chan eil fiosrachadh aig an luach seo. Leis gu bheil an luach |
0x0018 | uint(32) | Doimhneachd dath 2? | Tha brìgh an luach seo gun fhios. Is dòcha gur e 'domhan'-dath domhainn a th' ann. |
Às dèidh na freagairtean sin, thèid faileas pàilleat ann an cruth RIFF àbhaisteach a thoirt seachad. Gheibhear an sònrachadh mionaideach - leis gu bheil na pailtean a' nochdadh ann an àiteachan eile - fon Pailtean.
Dàta na Freagairtean
Adr | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Bitean Magadha | |
0x0004 | uint(24) | Fad a' bhloc. | |
0x0007 | uint(8) | Brataichean |
Mu dheireadh thall, tha na freagairtean pixeldhàta a' tighinn ann an sreath, bho shìos gu h-àrd gu clì gu deas.
Tha luachan an dàta anns na grafaigean a tha mar as trice ann an cruth 8bpp-Bitmaps freagairteach don innleachd a tha anns a' phalait dath.
Tha an einnsean geama a’ clàradh na h-àrdachaidhean *gabh mo chreideas* nuair a thèid iarraidh.
Cleachdadh seo, am measg rudan eile, mar thoradh air an t-sreath latha agus oidhche, a tha 32 freagairtean de na h-àrdachaidhean fa leth. Tha coltas gu bheil 'beagan' air a thogail bhon luach soilleireachd. Cha robh luachan mionaideach air an stèidheachadh fhathast, tha mi ag obair air an stèidh chruinne.
v *= (daylight / 48) + 0.25;
a rèir an dàta HSV de na pixilean, far a bheil daylight na luach eadar 0-31 agus tha v na luach eadar 0-1. A bharrachd air sin, bu chòir a bhith faiceallach gu bheil ann an cleachdadh na mapa, tha 16 h-àrdachaidhean air an taobh clì agus deas (a bhios a’ frithealadh air spèis dhearbhte airson a’ chlò-bhualadh de aonadan) ann.
A bharrachd air an sin, tha coltas gu bheil an t-sreath latha agus oidhche a’ freagairt air a’ mhapa aig gach geama-cykl.
Mar sin, tha an t-sreath latha agus oidhche leasaichte a’ coimhead mar a leanas:
PRT
Adr | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Bailtean Magic | |
0x0004 | uint(24) | Fad na palet. | Thoir, an àite an cruth bloigh àbhaisteach, an àireamh de phalatan a lorgar anns an fhaidhle seo - chan e an fhada de'n bhloigh ann am bytean. |
0x0007 | uint(8) | Bratachagan | Faodar, mar a tha e àbhaisteach, brataichean. Chan eil mi eòlach air brataichean sam bith; leis gu bheil a h-uile luach a tha aithnichte dhomh freagairtean |
Chan eil fhios agam dè tha PRT
gu sònraichte a’ ciallachadh; dh’fhaodadh e a bhith mar eisimpleir 'Table Palette agus Resource' - oir is e seo am faidhle - a lorgar mar op2_art.prt anns a’ maps.vol - a tha na sheòrsa, no dh’fhaodadh seo a bhith a’ tuairisgeul gu math air an fhiontar.
Tha an faidhle seo a’ toirt a-steach liosta de phalettes, clàr mu na bitmaps uile a thathar a’ cleachdadh, na h-ainmean-gnìomh agus sreath de dh’fhaighinn neo-aithnichte. Bidh e a’ leantainn an cruth container roimhe gu h-ionnann, oir chan eil na clàran uile a’ leantainn an scheama seo.
Tha an roinn CPAL
(a’ comharrachadh coltas airson 'Container Palette') a’ toirt a-steach na dachaigh palette a-mhàin, le bhith ag innse dè na 1052 Byte 8-bit palettes a th’ ann.
Chan eil an sealladh 1052 Byte seo mar shònrachadh dligheach, leis gu bheil an cruth palette ag iarraidh meudan palette eadar-dhealaichte. Tha e dìreach freagairteach do na dàta ris a bheil Outpost 2 air a lìbhrigeadh.
Às deidh na liostaichean palette, tha an liosta de na bitmaps a’ tighinn gu dìreach agus gun cheann-latha ro-làimh; tha na liostaichean gnìomh cuideachd a’ tighinn dìreach às deidh sin.
Tha gach fear air a thòiseachadh le uint(32) (no a-rithist uint24+uint8 flags?) a tha a’ toirt a-steach an àireamh de chlàran.
Pailtean
Adr | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Bytes Magic | |
0x0004 | uint(24) | Fad na palainne | Thoir, an àite an cruth bloic àbhaisteach, an àireamh de phaleti a th' ann an seo faidhle - cha not an fhaid a tha san bloc ann an bytean. |
0x0007 | uint(8) | Brataichean | Seadh, coltach ris a' ghnàth, brataichean. Chan eil fhios agam air brataichean sam bith; leis gu bheil na luachan a tha fhios agam uile a' freagairt ri |
Tha na fiosrachadh mu phalainnean gu math furasta a leughadh.
Tha iad air an dhèanamh suas de cheann agus earrann dàta.
Ceann Palatain
Adr | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Bytes Magic | |
0x0004 | uint(24) | Fad na palainne | Thoir, an àite an cruth bloic àbhaisteach, an àireamh de phaleti a th' ann an seo faidhle - cha not an fhaid a tha san bloc ann an bytean. |
0x0007 | uint(8) | Brataichean | Seadh, coltach ris a' ghnàth, brataichean. Chan eil fhios agam air brataichean sam bith; leis gu bheil na luachan a tha fhios agam uile a' freagairt ri |
0x0008 | uint(32) | Versan de phalletean? | Tha e coltach gu bheil e a' mìneachadh dè an versan de dh'fhoirmtean palatan a tha a' leantainn na palatan. Tha a h-uile palatan Outpost2 a' nochdadh gu bheil versan |
Fiosrachadh air Pailtean
Adr | 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 | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Bytes Magic | |
0x0004 | uint(24) | Fhad an blocaidh | |
0x0007 | uint(8) | Brataichean |
Tha an roinn dàta a' gabhail a-steach na h-inntrigeadh pallet fa leth. Tha an àireamh de na h-inntrigeadh pallet a' tighinn bho fhada a' bhocsa / 4.
Tha na h-inntrigeadh fa leth a' faighinn an structar sìmplidh seo;
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | char | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | 04 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(8) | Comhphàirt dearg | Tha e a' toirt seachad an caogad dearg den dath |
0x0001 | uint(8) | Comh-phàirt ghlas | Tha e a' toirt comas do phàirt uaine na dath a chomharrachadh |
0x0002 | uint(8) | Gné gorm | Tha e a' nochdadh an guth gorm den dath |
0x0003 | uint(8) | Gun fhios - Bratach? | Tha e do-chreidsinneach dè tha an luach seo a’ ciallachadh, oir tha e coltach gu bheil e bunasach |
Mu na palet, tha e furasta a ràdh, gu bheil na riaghailtean a leanas a’ freagairt air na palet a tha air an cleachdadh airson animation:
- Tha a’ chiad dhath ALBAIDHEAGH, ge bith dè an luach a tha air a thoirt seachad an sin.
-
Tha na h-inntrighean palet 1-24 a’ freagairt ri dath an t-se player 1-8.
Cha bhith mi soilleir mu far a bheil na dathannan a’ tighinn bho na cluicheadairean eile, ach tha mi a’ freagairt gu bheil na dathannan eile air an cruthachadh gu cruaidh.
Bith-mapaichean
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | char | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Leud Còmhnard | Tha e a' toirt seachad leud na loidhnichean dàta pixele ann an Byte - leis gu bheil iad freagairteach do chrìochan 4-Byte. Mar sin, tha e furasta a bhith comasach air loidhne shònraichte de dhealbhaidhean a thaghadh. Carson a tha an luach seo air a stòradh gu h-eachdraidheach, ged a dh’fhaodadh e a bhith air a thomhas, tha e mì-thuigsinn. |
0x0004 | uint(32) | Fàilligeadh | Tha e a' comharrachadh an àite àireamh a' chiad loidhne anns a' bhit-mapa |
0x0008 | uint(32) | Àrdachd | Thoir a-steach àirde a' bhìdeil ann am pixelan |
0x000c | uint(32) | Leud | Thoir seachad leud na h-ìomhaigh ann an pixel |
0x0010 | uint(16) | Seòrsa | Thoir cunntas air seòrsa na h-àrd-chruth. Tha e coltach gu bheil e na bitmasg:
|
0x0012 | uint(16) | Palette | Déanaibh cinnteach dè an palette a bu chòir a chleachdadh bhon faidhle PRT |
Tha structar dàta na faidhle PRT a’ mìneachadh mar a tha na bitmaps a thathar a’ cleachdadh airson na sprites air an togail. Tha na bitmaps sin mar phàirt aon, às an tig mòran còmhla gu freagairtean animachaidh de sprite.
Tha na dàta ìomhaigh sònraichte a’ fhalach anns a’
op2_art.BMP anns an eòlas-cluiche.
Carson a tha an faidhle bitmap seo a’ freagairt ri ceann-tòiseachaidh RIFF bitmap (a tha gu h-ìosal ceart), tha e duilich a thuigsinn. Is dòcha gu bheil Outpost 2 a’ cleachdadh APIan siostam gus na grafaigean a luchdadh, le bhith a’ gabhail a-steach an ceann-tòiseachaidh seo gu h-ùineach agus a’ toirt a-steach na raointean freagairteach a tha ag atharrachadh.
Tha na dàta piogsail ri fhaighinn sa BMP aig an àite Offset + an uint32-Offset, a th’ ann an BMP aig seòladh 0x000A (dàta RIFF-Bitmap offset), agus tha e a’ freagairt ris an t-sreath a tha air a shònrachadh bhon àirde gu h-àrd gu deas gu h-ìosal.
Tha grafaigean monochrome 1bpp air an tarraing mar as urrainn, gur e dath 0 a tha freagairteach gu làn sholas, agus dath 1 a tha na dhath dubh/grey leth-thrèigidh, leis gu bheil na grafaigean monochrome a’ cleachdadh gu h-àbhaisteach airson duilleagan freagairteach do chàraichean agus togalaichean anns na freagairtean.
Gus seo a dhèanamh, faodaidh tu mòran grafaigean a chur còmhla mu thràth.
Freagairtean
A-nis tha sinn a' tighinn gu clas rìoghail nan disciplínn a-staigh foirmtean dàta Outpost 2:
Na h-animachdan.
Thèid liostaichean nan animachdan a thòiseachadh le ceann-uidhe cruinne, a tha gu h-ìoranta airson dearbhadh dàta. Às dèidh sin, thig na mìneachaidhean animachdan sònraichte, a tha air an roinn ann an 3 ìrean:
-
Animation
Is e animachadh an ìre as àirde; tha e a' riochdachadh animachd aonad, togalaich no 'animachd phàirteach' (duilgheadas comataidh, aimsir, patadh) ann an suidheachadh sònraichte. -
Frame
Is e frame aon dhealbh a-staigh animachd. Faodaidh animachd aon no barrachd freumhan a bhith ann. -
Subframe
Is e subframe an fhiosrachadh mu dheidhinn gu bheil bitmap sònraichte air a tharraing gu àite sònraichte freumh. Faodaidh freumh aon no barrachd subfreumhan a bhith ann.
Às dèidh sin, thig na mìneachaidhean animachdan fa leth.
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | char | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Àireamh nan freagairtean | Fiosrachadh mu dheidhinn dè an àireamh de shuaicheantasan animation a tha ann |
0x0004 | uint(32) | Àireamh freagairtean | Cia mheud freumh a bu chòir a bhith ann gu h-iomlan |
0x0008 | uint(32) | Àireamh subframes | Ciamar a bu chòir gum bi àireamh iomlan de subframes ann |
0x000c | uint(32) | Àireamh nan roghainnean roghnaichte | Àireamh de "thachartasan roghnaichte" a tha ann. |
Freagairtean
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | char | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0010 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
0x0020 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(32) | Ainmichte 1 | Fiosrachadh neo-eòlaichte |
0x0004 | uint(32) | Bocsa Frèam: Ceanglaichean | Tha e a' comharrachadh toiseach na Bounding Box (ann am piogsain) air an taobh chlì. |
0x0008 | uint(32) | Caibideil: Àrd | Thoir cunntas air an toiseach àrd (ann am piogsan) den Bounding Box. |
0x000c | uint(32) | Bann Gèar: Leud | Tha e a’ toirt seachad leud (ann am picteil) na Bounding Box. |
0x0010 | uint(32) | Bho chùl a' bhogsa: Àrdachd | Tha e a’ sealltainn àirde (ann an Pixel) na Bounding Box. |
0x0014 | uint(32) | Offset: X | Seallaidh e meadhan chorr an fheachdachaidh |
0x0018 | uint(32) | Offset: Y | Tha e a' cur an cèill mheadhan na h-èiginn sa chionn. |
0x001c | uint(32) | Neo-ainmichte 2 | Fiosrachadh neo-eòlach |
0x0020 | uint(32) | Àireamh freagairtean | Freagair ciamar a tha uimhir de frèamannan gnìomhachaidh anns an animation seo |
0x0024 | uint(32) | Àireamh Windows | Innse dha, dè na h-uinneagan a bu chòir a bhith air an cleachdadh nuair a tha thu a' peantadh |
Tha dàta na h-àrd-sheallaidh, an t-animachadh, mar sin na dàta rianachd eadar-nàiseanta - tha Boundingbox a' comharrachadh na co-òrdanachdan na comharra timcheall air an vehicle/toiseach, nuair a thèid a thaghadh agus tha e cuideachd a' sealltainn dè na raointean a bu chòir a bhith freagairteach.
Tha an Offset a' comharrachadh gu h-àraidh an "àrdachadh"; an pùnt a tha ri cur ris no a thogail air co-òrdanachdan na geama. Faodar a ràdh cuideachd ann an dòigh matamataigeach: tha an Offset a' comharrachadh an tùs co-òrdanachdan an seo.
Tha na Windows, mar an Offset, a' gabhail a-steach 4 uint(32)-luach gach Window, a tha a' comharrachadh raon a tha freagairteach airson subframes fa leth. A-muigh às na Windows, ma tha sin freagairteach airson an Bitmap, chan fhaodar a bhith a' peantadh.
Frèam
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | char | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(8) | Àireamh subframe agus Toggle airson Roghainn 1, 2 | Tha an luach seo a' toirt a-steach:
|
0x0001 | uint(8) | Neon 1 agus Togail airson Roghail 3, 4 | Tha an luach seo a' toirt a-steach:
|
0x0002 | uint(8) | Roghainn 1 | Neo-eòlach |
0x0003 | uint(8) | Roghainneil 2 | Neo-eòlach |
0x0004 | uint(8) | Roghainn 3 | Neo-eòlach |
0x0005 | uint(8) | Roghainn 4 | Neo-eòlach |
Fo-frame
Adr | x0 | x1 | x2 | x3 | x4 | x5 | x6 | x7 | x8 | x9 | xA | xB | xC | xD | xE | xF | char | |||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
0x0000 | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | -- | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . | . |
Rudachadh | Seòrsa Dàta | Ainm | Mìneachadh |
---|---|---|---|
0x0000 | uint(16) | Bitmap-ID | Seallaidh e dè an bitmap a dh’fhaodas a bhith air a chleachdadh airson an subframe seo |
0x0002 | uint(8) | Ainmichte 1 | Tha e neo-eòlaichte - ach tha mi a' freagairt gu làidir gu bheil e mu dheidhinn prìomhachd render (Z-Layer). |
0x0003 | uint(8) | Subframe-Id | Seallaidh e càite a bheil sinn anns an subframe |
0x0004 | sint(16) | Offset - Ceàrnagach | Seallaidh e far a bheil an subframe freagairte ann an frame, no dè cho fada 's a bu chòir an bitmap a ghluasad gu h-horizontach ann an puingean. |
0x0006 | sint(16) | Offset - Crochadh dìreach | Innsaich far a bheil an subframe ri chur a-steach taobh a-staigh an freagairte, no cia mheud piogsan a dh'fheumas an bitmap a ghluasad gu vertical. |
Mar sin, faodaidh sinn a-nis freagairtean fa leth, a thig còmhla le gèamannan slàn, a chuir ri chèile, agus seo mar eisimpleir air gèamann nas toinnte, an gèam le an t-innleachd 500, air a thaisbeanadh.
Freagairt 500
Tha an Animation 500 a' sealltainn mar a thèid càr-giùlain Plymouth, a tha freagairte gu àbhaisteach, a chur às. 'S e seo aon de na beagan animations a tha a' cleachdadh an gnìomh Windowing.
Agus mar sin, faodar an animation gu lèir a chur còmhla.
Gu mì-fhortanach, tha duilgheadas ann fhathast le an uinneag càradh, oir chan eil an bit freagairteach suidhichte ann an
an fiosrachadh seòrsa gràfhig.
Seo beagan eile, air a' chluich, a tha air an dealbhachadh gu brèagha:
Freagairtean Cleachdaiche
A-nis tha an eadar-aghaidh cleachdaiche den gheama air fhàgail, a tha air a chumail ann an stoidhle meatailt brushed.
Ach tha e soilleir cuideachd gu bheil Dynamix nach robh feum aige an roth a dhèanamh a-rithist; chan eil e dìreach a' cleachdadh na h-API User32 agus GDI32 a thèid seachad le Windows - gu h-àraidh, tha e cuideachd a' cleachdadh riaghladh ghoireasan User32.
Faodar sin a thoirt a-mach, mar eisimpleir, tro phrògraman mar an Resource Hacker a chaidh a thoirt a-mach le Angus Johnson mar Freeware, no - ma tha feum air Wine fo Linux / Mac OS - le cuideachadh bhon wrestool a tha a-staigh icoutils.
Àireamh-fhòma | Susbaint |
---|---|
Outpost2.exe | Thèid a’ chruinneachadh a dhèanamh air an ìomhaigh de na geamannan, a thèid a thaisbeanadh air an ionad-fànais New Terra |
op2shres.dll | Tha e a’ toirt a-steach grafaigean airson nithean smachd leithid crìochan, putanan, putanan-ràdh agus bogsaichean-seice, a bharrachd air cùl-fhiosrachadh còmhraidh, ìomhaighean a tha freagairteach do na teacsaichean sgeulachd, agus grafaigean cùl-fhiosrachadh don mhion-nì a-mhàin |
out2res.dll | Tha e a’ toirt a-steach sgeadachadh na h-uinneig ann an geama, ìomhaighean airson meatailtean àbhaisteach agus sònraichte, an sgrìn luchdachadh, grafaigean airson còmhraidhean, a bharrachd air barrachd grafaigean cursair, a bharrachd air na grafaigean beòthail anns a’ bhun-tomhais geama |