Friday, May 1, 2015

Heroes of Might and Magic II

The latest Humble Bundle comes with HOMM2 Gold in the pay-what-you-want group. While it's for Windows only, the installer works in Wine flawlessly.
When it's started I noticed the game actually runs in DosBox, which sounds somewhat silly - to run a game inside a DOS emulator which runs in a Windows emulator :-)
The natural instinct lead me to try to remove the unnecessary levels.
I used lnk-parser to find out what the HOMM2 Desktop link was actually doing:
$ lnk-parse-1.0/lnk-parse-1.0.pl  /home/hajma/.wine/dosdevices/c\:/users/Public/Desktop/Heroes\ of\ Might\ and\ Magic\ 2\ Gold.lnk 

Link File:  /home/hajma/.wine/dosdevices/c:/users/Public/Desktop/Heroes of Might and Magic 2 Gold.lnk
Link Flags:  HAS SHELLIDLIST | POINTS TO FILE/DIR | NO DESCRIPTION | NO RELATIVE PATH STRING | HAS WORKING DIRECTORY | HAS CMD LINE ARGS | HAS CUSTOM ICON |
File Attributes: 
Create Time: Mon Jan 01 1601 00:57:44
Last Accessed time: Mon Jan 01 1601 00:57:44
Last Modified Time: Mon Jan 01 1601 00:57:44
Target Length: 0
Icon Index: 0
ShowWnd: 1 SW_NORMAL
HotKey: 0
Target is on local volume
Volume Type: Fixed (Hard Disk)
Volume Serial: 00000000
Vol Label: 
Base Path: C:\Program Files\Ubisoft\Heroes of Might and Magic 2 Gold\dosbox.exe
(App Path:) Remaining Path: 
Working Dir: C:\Program Files\Ubisoft\Heroes of Might and Magic 2 Gold\
Command Line: -conf dosboxhomm2.conf -noconsole
Icon filename: C:\Program Files\Ubisoft\Heroes of Might and Magic 2 Gold\Icon.ico

but when I run
dosbox -conf ./dosboxhomm2.conf -noconsole
the game doe not run in full version, complaining about missing CD in the drive.
Here's the necessary change to the config file:

$ diff -u dosboxhomm2.conf.orig dosboxhomm2.conf
--- dosboxhomm2.conf.orig 2015-05-01 00:38:24.937021111 +0200
+++ dosboxhomm2.conf 2015-05-01 01:05:30.530285702 +0200
@@ -193,8 +193,8 @@
 
 @ECHO OFF
 mount C "."
-imgmount d ".\homm2.inst" -t iso -fs iso
 c:
+imgmount d "./homm2.inst" -t iso -fs iso
 cls
 heroes2.exe
-exit
\ No newline at end of file
+exit