FINALLY! A fix has been found by a gentleman by the BrainOfSweden; taken from Steam forums.
Works for ALL DirectDraw games it affects (including Majesty Gold HD, AGS Games, Neighbours from Hell etc.).
Seems like this is a specific Nvidia Optimus Bug.
Direct quote from said forum:
"Found a working fix
First of all, I want to thank everyone that gave me ideas, this is kind of a mashup of all fixes I've found that only worked partly. Unfortunately I don't remember where I read everything, so, thanks to everyone who tried to get the game running.
Second, this fix requires no extra screens or cables.
I cant guarantee it will work on every laptop, but if you have an Nvidia Optimus card, try it. Here's how to (users with external monitors, read the last section too):
Begin with opening Nvidia control panel. In the "Manage 3D settings" tab, go to program settings and click add.
Navigate to your Steam installation path, and go to \steamapps\common\Sonic Generations\ and choose the sonicgenerations.exe file. Force it to use your Nvidia card. I don't know if it's necessary, but I also did this with the config exe.
After you have applied the settings, go to your desktop.
Right click and select screen resolution. In this window you should click detect. If you can see two displays that are grayed out and named after your video cards, you're probably good to go.
Choose your Nvidia card and select "Attempt to connect anyway on (VGA in my case)". Don't remember which drop down menu it is, just fool around a little. When you found it, click apply.
Then, choose extended desktop and apply again. This will force-activate your discrete GPU.
Now the fun starts.
The guide is edited from here
Open the Sonic Config tool and check if your Nvidia card is present. But instead, choose your Intel card and whatever other settings you want.
Now start Sonic, and it will propably work.
What's technically happening is that Sonic starts on the integrated GPU, But since the Nvidia card is active through the fake monitor, it will force itself to render Sonic thanks to the changes in the Nvidia control panel.
Users with Optimus and external monitors, read this:
Thanks to cazaroonie for this solution
Quote:
Originally Posted by cazaroonie
I have a M11x R2 as well. I use an external monitor almost always and run that through the HDMI (never ever used the displayport...). I don't extend the screen between the two, though.
Following all of the steps the OP provided I ended up with three cards showing up in the config. Two intel (#0 & #1) and the nvidia card (#2). When telling it to run #2 it wouldn't work. Cue much frustration.
Random adage... I always have two monitors showing up in the screen resolution settings (one running, one grayed) and when I completed the steps I had three, all running. Even the imaginary one.
What I ended up doing is running it on #0 which is apparently what was running the external monitor? You need to make sure the screen is extended across all "three" monitors. Make sure the nvidia settings are set to run both the sonic generations exe and the config exe using the nvidia card.
I really hopes this works for you, but leave a message if it doesn't, and I'll try to help you."