The NEW Build Your Own Arcade Controls
Software Support => GroovyMAME => Topic started by: chrisvg on December 08, 2015, 07:31:09 am
-
Long time lurker, first time poster!
I've been using GroovyMAME and CRT_Emudriver for the last 6 months and absolutely love it! Thanks for the great work by Calamity and other contributors!
Recently, I've been playing around with the Attract Mode frontend and have found a bit of a problem when using GroovyMAME, in particular when it is configured to use d3d9ex.
When I exit a game in GroovyMAME, the Attract Mode window doesn't receive focus. This only seems to occur when using d3d9ex, I have tested other video options like d3d and ddraw and have not had any trouble.
I have also tried setting up a separate hotkey in Attract Mode to force quit GroovyMAME which does resolve the issue, but I'd rather not do that and instead let GroovyMAME exit gracefully on it's own accord.
I have tested this on multiple machines (one is running Windows 7 and hooked up to my cab with CRT_Emudriver, the other is a regular desktop running Windows 10 and hooked up to an LCD monitor with GSYNC). Should be pretty easy for others to reproduce the problem I think.
@Cools, if you're out there, I know you're a big fan of Attract Mode and GroovyMAME - have you come across this problem?
It's no big trouble, just thought I'd point it out and see if others have experienced this. In the meantime I'll go back to using d3d on my desktop machine and ddraw on my cab machine :)
-
I hadn't, so I plugged a keyboard in to check I was using d3d9ex and it happened immediately.
This machine normally runs off a PS3 USB joystick. The stick works perfectly at all times. The keyboard is lost every time I quit MAME.
I've not tried messing with the video switch at all.
-
I noticed this when testing, but didn't really think it would cause any problems. I'll try to find out what's happening.
Edit:
The issue appears to be related to D3D9Ex device reset.
This quick hack can be applied until it can be resolved cleanly.
(Line ~1114 src/osd/modules/render/drawd3d.cpp)
// free the device itself
if (m_device != NULL)
{
- (*d3dintf->device.reset)(d3dintf, m_device, &m_presentation);
+ if (!d3dintf->d3d9ex_available)
+ (*d3dintf->device.reset)(d3dintf, m_device, &m_presentation);
(*d3dintf->device.release)(m_device);
m_device = NULL;
}
-
Thanks for the replies guys, glad to hear I'm not going crazy!
I just compiled a new build with the quick hack from intealls, and it works perfect now :)
Thanks again for the quick response and easy fix.
-
Cool to see such a quick fix. I am not familiar with the benefits of using an alternate d3d9ex vs the default. Mind a short explanation?
-
Calamity explained it here: http://forum.arcadecontrols.com/index.php/topic,135823.0.html (http://forum.arcadecontrols.com/index.php/topic,135823.0.html)
-
Not sure what I'm missing here, but compiling with this edited string keeps failing.
Compiling 3rdparty/zlib/crc32.c...
../../../../../src/osd/modules/render/drawd3d.cpp: In member function 'void d3d::renderer::device_delete()':
../../../../../src/osd/modules/render/drawd3d.cpp:1128:39: error: qualified-id in declaration before '(' token
void renderer::device_delete_resources()
^
../../../../../src/osd/modules/render/drawd3d.cpp:3001:1: error: expected '}' at end of input
}
^
../../../../../src/osd/modules/render/drawd3d.cpp: At global scope:
../../../../../src/osd/modules/render/drawd3d.cpp:3001:1: error: expected '}' at end of input
Compiling 3rdparty/zlib/deflate.c...
make[2]: *** [../../../../mingw-gcc/obj/x64/Release/osd_windows/src/osd/modules/render/drawd3d.o] Error 1
make[1]: *** [osd_windows] Error 2
make[1]: *** Waiting for unfinished jobs....
What am I missing here?
-
Hmm, the patch still works for me (and is still needed in 0.169 for returning focus after quitting GM when using d3d9ex).
I apologize in advance for possibly stating the obvious, but you know that the code block that Intealls originally posted here is a "diff" right? If you're applying this manually by copying and pasting, you need to remove the "+" symbols at the start of the lines you're inserting.
I've attached a .diff file that you can apply after you have applied the main groovymame 0.169 patch. The forums don't like the .diff extension, so I've renamed it .txt. You can rename it back to .diff after you've downloaded the file.
You can use the following command line:
patch -p0 -E --binary <fix_d3d9ex.diff
I hope this helps!
-
Was doing it manually, and properly. Didn't like it.
Patched. Works fine now.
Now just need to find a way to tweak the Killer Instinct driver so it doesn't load the CHD so quickly. Affects proper boot emulation.
Thanks!
-
Calamity added a similar fix in the official patch (0.169 final), so manual patching is not needed anymore.
-
Hmm, the patch still works for me (and is still needed in 0.169 for returning focus after quitting GM when using d3d9ex).
I apologize in advance for possibly stating the obvious, but you know that the code block that Intealls originally posted here is a "diff" right? If you're applying this manually by copying and pasting, you need to remove the "+" symbols at the start of the lines you're inserting.
I've attached a .diff file that you can apply after you have applied the main groovymame 0.169 patch. The forums don't like the .diff extension, so I've renamed it .txt. You can rename it back to .diff after you've downloaded the file.
You can use the following command line:
patch -p0 -E --binary <fix_d3d9ex.diff
Excuse me. Can I use that diff in windows XP?
Thank you!
I hope this helps!
-
D3D9ex only works on Vista and up.
-
Thank you very much for your answer, Calamity!!
I asked this because I have the same problem but yesterday night I saw in my mame.ini file that I am using d3d.