VOGONS


First post, by Linoleum

User metadata
Rank Member
Rank
Member

I am trying to run Monkey Island 2 Enhanced on PC that has a Midi device on port 300 (and can't/won't change it). They away the game selects the port is by selecting one of the 4 Roland drivers, each one set for a specific port: 330, 332, 334 and 336.

All these have are the exact same with the exception of 4 digits:
330: 7D 3A
332: 77 2C
334: 71 1E
336: 6B 10

Any ideas of what would be the hex code for address 300?

P3 866, V3, SB Audigy 2
P2 300, TNT, V2, Audigy 2 ZS
P233 MMX, Mystique 220, V1, AWE64
P100, S3 Virge GX, AWE64, WavetablePi & PicoGus
Prolinea 4/50, ET4000, SB 16, WavetablePi
486DX2 66, CL-GD5424, SB 32, SC55
SC386SX 25, TVGA8900, Audician32+

Reply 1 of 2, by kmeaw

User metadata
Rank Member
Rank
Member

You would need to update multiple locations because the driver has port accesses scattered across the file - for port 330 it would be numbers both 330 and 331.
The "7D 3A" value you are observing is just the checksum in the MZ header.
Guessing by the values you are probably looking at the patched version by TheRisingSun.
If it is, the values you need to change can be found at the following locations: replace 0x30 with 0x00 at 0x46E5, 0x4703, 0x4724, 0x477C and replace 0x31 with 0x01 at 0x46D6, 0x4715, 0x472D, 0x473E, 0x4753, 0x4767.
If it isn't, you can get the bytes you need to patch using a disassembler: run "ndisasm -b 16 ROLAND.IMS | grep 'mov dx,0x3' | sort -k4" on a GNU/Linux machine with ndisasm installed or use HIEW 6.11 under DOS - search for "BA ?? 03" in the disassembler mode (press alt-shift-? to type ?? in the search (F7) dialog).

Reply 2 of 2, by Linoleum

User metadata
Rank Member
Rank
Member
kmeaw wrote on 2024-11-14, 02:35:
You would need to update multiple locations because the driver has port accesses scattered across the file - for port 330 it wou […]
Show full quote

You would need to update multiple locations because the driver has port accesses scattered across the file - for port 330 it would be numbers both 330 and 331.
The "7D 3A" value you are observing is just the checksum in the MZ header.
Guessing by the values you are probably looking at the patched version by TheRisingSun.
If it is, the values you need to change can be found at the following locations: replace 0x30 with 0x00 at 0x46E5, 0x4703, 0x4724, 0x477C and replace 0x31 with 0x01 at 0x46D6, 0x4715, 0x472D, 0x473E, 0x4753, 0x4767.
If it isn't, you can get the bytes you need to patch using a disassembler: run "ndisasm -b 16 ROLAND.IMS | grep 'mov dx,0x3' | sort -k4" on a GNU/Linux machine with ndisasm installed or use HIEW 6.11 under DOS - search for "BA ?? 03" in the disassembler mode (press alt-shift-? to type ?? in the search (F7) dialog).

The checksum uh... That's embarrassing! Thanks for pointing me in the right direction! That makes more sense!

P3 866, V3, SB Audigy 2
P2 300, TNT, V2, Audigy 2 ZS
P233 MMX, Mystique 220, V1, AWE64
P100, S3 Virge GX, AWE64, WavetablePi & PicoGus
Prolinea 4/50, ET4000, SB 16, WavetablePi
486DX2 66, CL-GD5424, SB 32, SC55
SC386SX 25, TVGA8900, Audician32+