MathewWi / nulldc

Automatically exported from code.google.com/p/nulldc
0 stars 1 forks source link

Rumble causes crashes now (regression from r127) #350

Open GoogleCodeExporter opened 9 years ago

GoogleCodeExporter commented 9 years ago
I get crashing (no output in the console window unfortunately) during an rumble 
event, in any game when using:

SDL.dll
PuruPuru_Win32.dll

from build 130. If I simply swap those with the files from build 126, 
everything is perfect. 

What version of the product are you using? What build? What plugins?
Build 130,Purupuru and the xinput rumble pak

On what kind of system?
Win 7

My system specifications are as follows:

Operating System: Win7
CPU: e8400
Video Card: Nvidia gtx460
Sound Card: SB extreme
Additional related hardware and/or software: X360 wired controller w/ XBCD 
directinput drivers and the X360ce (xinput emu). This controller setup works 
perfect on tens of pc games and all 13 of my emulators, including this one up 
to build 127 (when it broke).

Original issue reported on code.google.com by wespipe...@gmail.com on 29 Dec 2010 at 5:51

GoogleCodeExporter commented 9 years ago
That's with or without "real frequency" also. 

Anyone else experiencing this?

Original comment by wespipe...@gmail.com on 29 Dec 2010 at 5:58

GoogleCodeExporter commented 9 years ago
Xmaple was reverted on r129.

Original comment by KrossX3 on 29 Dec 2010 at 7:34

GoogleCodeExporter commented 9 years ago
Wait, sorry I misread it.

Xmaple was completely reverted on r129 as previously mentioned. It's probably a 
conflict from that XBCD/X360ce combination and SDL Haptic (rumble).

Just to be sure, if you use Xmaple for controller and rumblepack does it crash 
too?

Original comment by KrossX3 on 29 Dec 2010 at 7:37

GoogleCodeExporter commented 9 years ago
>>>wespipes69,

You should never use XBCD drivers for the X360Controller. For this "mix" the 
bugs is a normal thing, you know! Cuz XBCD  drivers for Dinput gamepads only, 
not for Xinput! 

XBOX360Controller (Xinput interface) never need those drivers. Please, remember 
that.  

Original comment by N2008eo...@rambler.ru on 29 Dec 2010 at 8:55

GoogleCodeExporter commented 9 years ago
XBCD drivers give proper DirectInput support for X360 controllers too, albeit 
losing proper XInput. X360ce then warps XInput to DInput for XBCD's drivers to 
work with it.

Original comment by KrossX3 on 29 Dec 2010 at 9:25

GoogleCodeExporter commented 9 years ago
@N2008:
The bugs are not a normal thing at all. I've used these drivers for years and 
you obviously do not have that much experience/knowledge about them. They are, 
in a lot of ways, much better than the M$ ones, which actually never get 
updated. 

XBCD gives you the ability to use DirectInput AND XInput (x360ce) and does it 
very, very well, along with providing an interface that allows you to assign 
buttons as you wish (XBCD utility), customize every single thing you could 
possibly want to (x360ce) and even setup up different profiles for different 
games. The drivers are solid and the x360Controler Emu is updated constantly - 
they even have their own google code page. 

I have no issues with anything else except just recent builds with nullDC. Yes, 
the system probably sounds a little screwy and probably has some flaws, but the 
immense benefits are tremendous (for a gamer that plays more than just modern 
day shooters).

 You continue enjoying your drivers with no flexibility and I'll enjoy mine. K? :)

Original comment by wespipe...@gmail.com on 29 Dec 2010 at 10:33

GoogleCodeExporter commented 9 years ago
With that combo, you get proper DInput but have no proper XInput. It would be 
like this:

DInput => XBCD => Controller.
XInput => X360ce => DInput => XBCD => Controller.

Personally I prefer to use normal drivers and a ForceFeedback driver for 
DInput. I ain't able to use the triggers independently on DInput titles, but I 
don't mind.

Please, test removing all PuruPuru devices and use Xmaple for both input and 
rumble. Then, please try using PuruPuru for input and rumble but using the SDL 
backend.

Original comment by KrossX3 on 29 Dec 2010 at 10:57

GoogleCodeExporter commented 9 years ago
Will do! It'll be about 5 hours for results (at work). Thanks for investigating 
this Kross!

Original comment by wespipe...@gmail.com on 29 Dec 2010 at 11:05

GoogleCodeExporter commented 9 years ago
wespipes69,

I think maybe you should to create issue for developers of XBCD too? 
Maybe they know how it can be fixed for all applications (for PC games and 
emulators and something else) ? 

I mean hot "mix" XDCD + XBOX360Controller...

Original comment by N2008eo...@rambler.ru on 29 Dec 2010 at 11:16

GoogleCodeExporter commented 9 years ago
There's no "mix", since X360 controllers (wired at least) are supported on XBCD.

Original comment by KrossX3 on 29 Dec 2010 at 11:22

GoogleCodeExporter commented 9 years ago
Input: Purupuru
Rumble Pak: Purupuru
Backend: SDL (with or without X360ce present)
Result: Nothing

Input: Purupuru
Rumble Pak: Purupuru
Backend: Xinput
Result: Crashes

Input: Purupuru
Rumble Pak: Xmaple (real frequency or not)
Backend: SDL (what I have been using all along just fine)
Result: Crashes

Input: Purupuru
Rumble Pak: Xmaple 
Backend: Xinput 
Result: Crashes

-----------------

Input: Xmaple
Rumble Pak: XMaple
Backend: n/a
Result: Crash

Input: Xmaple
Rumble Pak: Purupuru
Backend: n/a
Result: WORKS!!!!!

-----------------

So if I switch everything basically it works! BUT, I'm sacrificing the 
interface with Purupuru input and real frequency with Xmaple rumble. :( 

Hope you can fix with new found info here!!

Original comment by wespipe...@gmail.com on 30 Dec 2010 at 7:27

GoogleCodeExporter commented 9 years ago
Wait never mind one of those. Corrected version:

Input: Xmaple
Rumble Pak: XMaple
Backend: n/a
Result: Works!!!

So it's just the Purupuru input plugin that's broken (at least for me). 

Original comment by wespipe...@gmail.com on 30 Dec 2010 at 8:10

GoogleCodeExporter commented 9 years ago
Does the console show that SDL detects the rumble device?

Original comment by KrossX3 on 30 Dec 2010 at 10:05

GoogleCodeExporter commented 9 years ago
Well, I'm not sure what you're asking exactly. But when loading the emu, the 
window shows all the plugins were found and loaded and it does say in rumble 
devices detected in all instances. I don't see anything really in the console 
window during the actual rumble events. So I hope that answers your question.

BUT i found another interesting problem here. If I set Purupuru plugin to SDL, 
THEN I can use the Xmaple plugin with any rumble pack and it works fine! But if 
I set Purupuru backend to Xinput, then using Xmaple plugin with the SDL rumble 
pack causes no rumble or crash. And using the Xmaple plugin with the Xinput 
rumble pack causes a crash.

So settings in the Purupuru input plugin are affecting Xmaple and causing 
issues. That doesn't sound good. :)

Original comment by wespipe...@gmail.com on 30 Dec 2010 at 5:29

GoogleCodeExporter commented 9 years ago
I meant when starting the emulator, the enumeration of all SDL joysticks will 
show up with their rumble support status. Anyhow, since I'm getting a bit 
confused with your reports so let's try to clarify it. Xmaple uses XInput, so 
the Xmaple/Xmaple combination would have XInput as backend instead of n/a. So, 
it would all be like this?

PuruPuru (SDL)    + Pakku (SDL)         = Nothing. <= This is important.
PuruPuru (Xinput) + Pakku(XInput)   = Crash. // Note: Puru and Pakku always use 
the same backend.
PuruPuru (SDL)    + Xmaple (XInput) = Crash.
PuruPuru (XInput) + Xmaple (XInput) = Crash.

Xmaple (XInput) + Xmaple (XInput)   = Works. // Works means there's rumble right?
Xmaple (XInput) + Pakku (XInput)    = Works.
Xmaple (XInput) + Pakku (SDL)       = Works.

Problem is, I can actually use both XInput and SDL rumble on the same device. 
As I mentioned, I played Ikaruga getting rumble from both players to the same 
controller. One using the Puru+Pakku (XInput) combination and the other using 
Puru+Pakku (SDL) combination. In my case is like this:

XInput => Controller.
SDL => DInput => Controller.

I guess there's problem with SDL and 360ce in your setup competing for DInput 
and ForceFeedback. I'll make some test applications for you to try so I can see 
all the information SDL can see from your mix.

Original comment by KrossX3 on 30 Dec 2010 at 7:52

GoogleCodeExporter commented 9 years ago
Got it! That all sounds great! Thanks again for contining the investigation!

But I don't think you got my last point. Here it is in your format:

Purupuru (set to SDL): USING Xmaple (XInput) + Xmaple (XInput) = Rumble
Purupuru (set to SDL): USING Xmaple (XInput) + Pakku (SDL) = Rumble
Purupuru (set to Xinput): USING Xmaple (XInput) + Xmaple (XInput) = Crash
Purupuru (set to XInput): USING Xmaple (XInput) + Pakku (XInput)  = No rumble 
or crash

The Purupuru is affecting the rumble even when it's not being used.Hopefully 
that behavior makes some sense to you, i.e. a clue to the problem? It looks 
like it only an issue when everything is using Xinput. Could that be?

Original comment by wespipe...@gmail.com on 30 Dec 2010 at 8:27

GoogleCodeExporter commented 9 years ago
That last sentance above should be striken from the record as this is still 
true:

PuruPuru (SDL)    + Pakku (SDL)         = Nothing. <= This is important.
PuruPuru (Xinput) + Pakku(XInput)   = Crash. // Note: Puru and Pakku always use 
the same backend.
PuruPuru (SDL)    + Xmaple (XInput) = Crash.
PuruPuru (XInput) + Xmaple (XInput) = Crash.

Original comment by wespipe...@gmail.com on 30 Dec 2010 at 8:30

GoogleCodeExporter commented 9 years ago
Nothing = no rumble/no crash.

Original comment by wespipe...@gmail.com on 30 Dec 2010 at 8:31

GoogleCodeExporter commented 9 years ago
Test this one without X360ce:

Purupuru (set to Xinput): USING Xmaple (XInput) + Xmaple (XInput) = Crash

Original comment by KrossX3 on 31 Dec 2010 at 12:17

GoogleCodeExporter commented 9 years ago
Well, I tried it but I can't control anything since, without the emu present, I 
can't do anything with Xinput - can't navigate into the game. The crash only 
occurs when I trigger a rumble event. 

But with the emu, it'll crash.

Original comment by wespipe...@gmail.com on 31 Dec 2010 at 5:27

GoogleCodeExporter commented 9 years ago
*sighs* Without X360ce you wouldn't have XInput, since you're using XBCD. 

Here, tests for XInput and SDL.
http://www.mediafire.com/?z8hs0vjl1sqze2k

Copy/paste the information from the first page of _SDL. Try the rumble with 
XInput, then the many effects of SDL. Then, try them both at the same time.

Original comment by KrossX3 on 31 Dec 2010 at 6:17

GoogleCodeExporter commented 9 years ago
Ok, can't copy info out of your windows. So here's a pic:
http://img529.imageshack.us/i/96165847.jpg/

The rumble works well with the next app. on both motors (using x360ce of 
course). 

I don't know what you mean by the rest there...
"then the many effects of SDL. Then, try them both at the same time."

Original comment by wespipe...@gmail.com on 31 Dec 2010 at 7:07

GoogleCodeExporter commented 9 years ago
On console windows, you can right click the title => Edit => Select All => 
Press Enter to copy to clipboard.

On the SDL one, you press Button 0 to play the rumble effect. Buttons 2,3 to 
select the type and button 4 to change the direction. (the info is right there)

Try all the effects and directions. Then, open both testers and play effects 
with both at the same time. (use a trigger and press button 0) I works here 
without any problem.

Original comment by KrossX3 on 31 Dec 2010 at 8:39

GoogleCodeExporter commented 9 years ago
Alright, gotcha. Sorry, I went to "edit" but "copy" was greyed out - I didn't 
see "select all" there. And when I saw "Press space to continue", I thought 
that meant to close it - that's sorta what I'm used to there - so I had been 
[x] out of the window without pressing space. 

ANYWAY, results:
SDL app (with or without x360ce): Constant, triangle, square worked fine in all 
directions. BUT, nothing from the 2 sawtooths or sine, in any direction.

Then when I opened the Xinput app (only with x360ce available - otherwise 
nothing), I could use the triggers for rumble but pressing button 0 did 
nothing. If I then closed the Xinput app, I still had no rumble with the SDL 
app. I had to close and reopen that one to get rumble back.

Original comment by wespipe...@gmail.com on 31 Dec 2010 at 9:36

GoogleCodeExporter commented 9 years ago
Looks like a driver/mix conflict indeed. No wonder you had no rumble with 
SDL/SDL since I'm using SINE for Pakku. Worst thing, is that XBCD claims to 
support it.

Then, it seems X360ce took control of the DInput device so SDL lost it. 
Attempting to reopen it might be what causes the crashes on PuruPuru. Hmm... 
what to do...

I guess the only way to find some progress on this will be to use the 
XBCD/X360ce combination myself. I so dislike that though... >_<

*Not needed*
Only if you're in the mood for it, uninstall XBCD/X360ce and revert to 
Microsoft's drivers. Then install the following ForceFeedback driver and try 
the testing programs again. http://www.katch.ne.jp/~morii/driver/xi/index.html

Original comment by KrossX3 on 31 Dec 2010 at 10:00

GoogleCodeExporter commented 9 years ago
If I had another computer I would, but I really don't want to mess with my only 
computer for this, especially since I can just continue to use those 2 files 
from build 126 just fine. 

So as suspected, sounds like there's some issue with this driver/emu config, 
but can't we just go back to how things worked before the crashing started? Is 
there any tests there I can run to help?  Something you did made the system 
more fickle. 

Or can you maybe add one of the other working rumble types or do some kind of 
if/def so people with my setup use Constant or something?

Well, if you want to try XBCD sometime, here's a link of everything you'll need 
to get up and running with that stuff (latest driver, instructions, misc 
files). But go to the x360ce google page for the latest version of that 
(http://code.google.com/p/x360ce/updates/list )

http://www.megaupload.com/?d=R55KSVDE 

Original comment by wespipe...@gmail.com on 31 Dec 2010 at 7:13

GoogleCodeExporter commented 9 years ago
Yah, I know about XBCD. I helped a bit in getting the ForceFeedback driver work 
on Vista x64 back then. And funnily enough, I cannot get rumble working now. 
The rumble driver ain't registering, and forcing it doesn't work either. 
Everything else works well though, even the motor tests on the XBCD panel.

Anyhow, I won't be able to test it myself. But I'll see if I can come up with 
something. Now to get some punch and pie... happy new year!

Original comment by KrossX3 on 1 Jan 2011 at 12:39

GoogleCodeExporter commented 9 years ago
Well, I just found something (not sure if it makes a difference at all) but I 
was doing the 2 apps running test and discovered that whatever app i start 2nd 
is the one the takes over and only rumbles - whether that's xinput or sdl. It 
doesn't matter. And if I launch both at the exact same time, SDL wins. 

Just wanted to make sure you have all the pieces of the puzzle. :)

Original comment by wespipe...@gmail.com on 1 Jan 2011 at 6:44

GoogleCodeExporter commented 9 years ago
Yup. That's what I had thought since it appears both are competing to get a 
hold of the DInput device. And when you execute both at the same time, SDL 
takes longer to load so it ends up being the last to load... and so it wins.

I'll make some mixed tester for you to try. =P

Original comment by KrossX3 on 2 Jan 2011 at 12:36

GoogleCodeExporter commented 9 years ago
Alright, first Mixed one: http://www.mediafire.com/?h0262xdtt06bloy

It has no rumble, just Inits SDL's Joy and Haptic. It's a test to see if in 
no-rumble mode, SDL 1.3 + Haptic can cooperate with XInput in your setup.

Remember to enlarge the console window if there's too many joysticks connected. 
Otherwise it will look weird.

Original comment by KrossX3 on 2 Jan 2011 at 6:30

GoogleCodeExporter commented 9 years ago
Ok, looks like it worked fine!

KrossX's JoyMunch for XInput and SDL (press ESC to exit)
==================================================================
SDL Joystick Init Successful. SDL Haptic Init Successful.

XInput [0]: Connected.

        Btns: [000] Hat: [0]
        Sticks: [+02D4|+00B6|+0000|+0000] Triggers: [00|00]

XInput [1]: Connected.

        Btns: [000] Hat: [0]
        Sticks: [+0000|+0000|+0000|+0000] Triggers: [00|00]

XInput [2]: Disconnected.
XInput [3]: Disconnected.

SDL [0]: XBOX 360 For Windows (Controller)

        Axes [+0000|+0000|+0000|+0000|+0000|-00B5|+02D4]
        Buttons [ | | | | | | | | | | | | | | | | | | | | | | | ] Hats [0]

SDL [1]: XBOX 360 For Windows (Controller)

        Axes [+0000|+0000|+0000|+0000|+0000|+0000|+0000]
        Buttons [ | | | | | | | | | | | | | | | | | | | |

Original comment by wespipe...@gmail.com on 2 Jan 2011 at 7:14

GoogleCodeExporter commented 9 years ago
No need to paste this time. Just the answer would've been enough. =P

Ok, so that works perfectly fine. Then the problem is the exclusivity of the 
rumble driver... that's something at least.

Original comment by KrossX3 on 2 Jan 2011 at 7:31