It seems that you're using an outdated browser. Some things may not work as they should (or don't work at all).
We suggest you upgrade newer and better browser like: Chrome, Firefox, Internet Explorer or Opera

×
The issue is that the game internally only has room for 16 screen resolutions. If the system reports more resolutions than that, it starts overwriting other data resulting in the crash.

You can fix the game by patching the WinKernelPort framework as follows:
1) Start the game at least once after downloading and copying it. This ensures the code signatures have been verified, and won't cause issues because in the next step we'll modify that game code
2) Right-click the "King's Bounty - The Legend" app (or similar) and choose "Show Package Contents"
3) Navigate to Contents -> Resources -> game
4) Right-click on the "King's Bounty - The Legend" app (or similar) you can find there and choose "Show Package Contents" again
5) Navigate to Contents -> Frameworks -> WinKernelPort.framework -> Versions -> A
6) In the WinKernelPort file you can find there, change the 13 bytes at offset 40082 from
c9 c3 66 0f 1f 44 00 00 0f 1f 80 00 00
into
83 f8 11 ba 10 00 00 00 0f 4d c2 c9 c3

This limits the return value of the function that reports the number screen resolutions to a maximum of 16, thereby preventing the buffer overflow.

To apply the patch, you can use a tool like Hex Fiend:
1) make a copy of the file, so you can easily restore it if you make a mistake
2) open the file by dragging it onto Hex Field
3) press cmd-shift-O (letter o, not number 0) to switch from insert to overwrite mode
4) press cmd-L, paste the offset (40082) and press return
5) copy/paste the byte sequence above (the cursor will be at the correct location)
6) save the changes

Now you should be able to launch the game normally.

NOTE: since it's a 32 bit game, it obviously still won't run on anything newer than macOS 10.14.6/Mojave.
Post edited June 04, 2023 by jmaebe