Ahoy everybody! I've found a way to prevent crashing at the start of a New Game on computers that have onboard intel graphics. This doesn't disable the whole sea layer, or require full software rendering. It merely prevents some sea effects from being used. It also improves performance slightly. The drawback is the the sea looks worse (kinda checkerboard/oil slick), all else appears unaffected.
Just one game file needs to be modified with a hex editor.
In /MODULES/Sea.dll at file offset 0x1110
change 81 EC E0 01 00 00 53
to 90 90 90 90 90 90 C3
After doing this, on my Windows 7 MSI Wind U135DX netbook (Intel GMA3150) the game even runs well at 1280x960 32bit with an external monitor. After playing the game for half an hour, I decided I should post this on the forums. I haven't tested it with any mods yet, just vanilla PotC.
What happened is the game crashes at Sea.dll offset 0x1704 when it tries to read a null pointer from eax. I determined it's supposed to be a pointer to a d3d8.dll routine (thanks to SwiftShader making a handy debugging comparison). I worked backwards from 0x1704 and found 0x1110 was the routine's starting point in Sea.dll. The above patch just makes the routine return immediately. When I first tried this, I expected the game to just crash elsewhere or fail to create the sea layer, and I was very surprised when it worked so well.
I'm not sure, but there's a possibility PotC could crash if enhanced graphics mods are used. I'll be able to test that myself by next weekend.
Just one game file needs to be modified with a hex editor.
In /MODULES/Sea.dll at file offset 0x1110
change 81 EC E0 01 00 00 53
to 90 90 90 90 90 90 C3
After doing this, on my Windows 7 MSI Wind U135DX netbook (Intel GMA3150) the game even runs well at 1280x960 32bit with an external monitor. After playing the game for half an hour, I decided I should post this on the forums. I haven't tested it with any mods yet, just vanilla PotC.
What happened is the game crashes at Sea.dll offset 0x1704 when it tries to read a null pointer from eax. I determined it's supposed to be a pointer to a d3d8.dll routine (thanks to SwiftShader making a handy debugging comparison). I worked backwards from 0x1704 and found 0x1110 was the routine's starting point in Sea.dll. The above patch just makes the routine return immediately. When I first tried this, I expected the game to just crash elsewhere or fail to create the sea layer, and I was very surprised when it worked so well.
I'm not sure, but there's a possibility PotC could crash if enhanced graphics mods are used. I'll be able to test that myself by next weekend.