Upozornění: jedná se zatím jen o nástřel postřehů a možností, příspěvek proto budu postupně doplňovat!1. O co jde?Po spuštění Might and Magic VI následuje 1,5-2,5 minuty dlouhá prodleva, než se hra skutečně spustí. Poté hra běží bez problémů. Chyba se projevuje bez ohledu na verzi hry a režim kompatibility s předchozími verzemi Windows ničemu nepomůže, popř. se objeví chybová hláška související s knihovnou MSS32.DLL.
Knihovna MSS32.DLL reprezentuje Miles Sound System a do Windows se může dostat hned několika cestami (ovladače, instalace Visual C++ Runtime, hry apod.). Might and Magic VI využívá knihovnu MSS32.DLL umístěnou v kořenovém adresáři hry, která souvisí s
RAD Game Tools. Jedná se pravděpodobně o upravenou verzi knihovny, takže její prostá náhrada za jiné verze knihovny vede k různým chybám. Prodleva ve spuštění hry je zřejmě způsobena pomalou interpretací (načtením) knihovny ve VC++ Runtime, kde se to možná mezi sebou chvilku hádá.
Původně jsem problém připisoval grafickému subsystému, ale hrátky s DirectX a různými kartami problém nevyřešily.
GOG verze hry vychází z Mok's patche pro Might and Magic VI, kdy jsou knihovna MSS32.DLL a spouštěcí soubor hry nahrazeny upravenými verzemi. Tento postup je samozřejmě použitelný i pro CD verze hry, nicméně není nutný. Důležité je, aby byly knihovna a spouštěcí soubor správně spárovány. GOG k tomu využívá ještě jeden mezikrok, kdy kombinuje knihovnu MSS32.DLL s knihovnou MSS32A.DLL. Knihovna MSS32A.DLL představuje originál upravené knihovny a knihovna MSS32.DLL pak redefinuje některé rutiny této knihovny (ve zbytku rutin se odkazuje zpět na knihovnu MSS32A.DLL). Tím se zřejmě řeší rozšíření možností nastavení hry skrze config MM6.INI.
Existuje samozřejmě další upravená verze knihovny, která je např. součástí modifikací série Might and Magic a Heroes of Might and Magic III (pracují s ní např. GrayFace patche). I tak je ale nutné nastavit spouštěcímu souboru MM6.EXE kompatibilitu na Windows 98/ME (tedy tak je to alespoň u mě). Mým cílem je ovšem zprovoznit originál instalačky a instalačky s aplikovaným Mok's patchem.
2. Kombinace knihovenNa netu jsem našel celou plejádu verzí knihovny MSS32.DLL, ale ani jedna nefunguje v kombinaci s originálním spouštěcím souborem nebo úpravou tohoto souboru z Mok's patche. Knihovna obvykle hlásí jednu ze dvou možných chyb (dle použité verze). Zřejmě proto hra využívá vlastní modifikaci, kde jsou volané rutiny již odstraněny. Zajímavé je, že nastavení kompatibility spouštěcího souboru na Windows 98/ME vede v takovém případě k tzv. shrinku (objeví se prázdný soubor SHRINKER.ERR).
3. Dekomprese knihovnySamo o sobě to nic neznamená, ale poskytlo mi to vodítko k hledání dalších indicií, respektive mi to pomohlo pospojovat si několik věcí dohromady. Už v roce 2004 se na TELP objevilo pár témat k problémům knihovny MSS32.DLL (viz třeba
M&M6 - an mss32.dll problem), ve kterých se zmiňuje postup tzv. deshrinku. Knihovna MSS32.DLL je totiž z úsporných důvodů komprimována a někdy se stane, že jí systém nedokáže rozbalit a načíst. U mě načíst jde, ale jak jsem psal na počátku příspěvku, trvá to velmi dlouho. Pomoci by měla proto její dekomprese s pomocí programu DeShrink.
Tenhle postup se pak objevuje ještě v několika pozdějších tématech napříč různými diskusními fóry (např. Compatible Support Forums -
Might and Magic won't play! HELP ME PLEASE! nebo VOGON -
Might and Magic running on winxp/win7 and maybe newer). Zpětně jsem se dostal až na
Andyho příspěvek na Celestial Heavens, který si z minulosti dobře pamatuju. Řešila se v něm kompatibilita M&M her obecně - tohle celé pak zdárně vyřešily a zjednodušily Mok's patche (jsou zmíněné v diskusi pod příspěvkem).
Zajímavé je, že podobný problém mělo ve své době i WINE -
[Bug 2608] Might and Magic VI wont run until "DeShrinker" program is run on mss32.dll, takže to není zas tak neobvyklá věc, jak by se zprvu mohlo zdát. Já měl asi opravdu kliku v tom, že jsem měl před reinstallem Windows 7 nainstalováno takových věcí, že jsem zřejmě nechtěně dospěl do stavu, kdy mi to fungovalo bez problémů. Po reinstallu je to ovšem jinak
DeShrink je možné stáhnout z webu
SAC.
4. Další postupy?Samozřejmě se nabízí otázka, zda-li to jde vyřešit i nějak globálně? Možná ano, možná ne
Osobně se kloním spíše k tomu ano. Problém je totiž někde na straně Visual C++ Runtime a Windows 7, kdy oba louskají ten kód příliš dlouho. Navíc si vybavuji, že jsem šestku na Windows 7 už kdysi spouštěl a nebyl s tím problém. I když to je dost ošemetné, protože se mi mohlo povést nějak prolinkovat GF verzi MSS32.DLL. Samotného problému jsem si všiml až při testech čistých CD instalaček po reinstallu Windows 7.
Každopádně tohle je část, kterou budu teprve testovat. V první řadě potřebuju otestovat dekompresi a krom toho se podívat na registry, protože i v nich může být zakopaný pes.
nezpracované odkazy ...
https://community.pcgamingwiki.com/files/file/514-miles-sound-system-mss-v60m/The Miles Sound System ...
https://web.archive.org/web/20041015000000*/http://www.radgametools.com/mssdown.htmhttps://web.archive.org/web/20040805224024/http://www.radgametools.com/mssdown.htm