What is the test app? The one in the GCPad Settings? That is hardcoded to magnitude = 10000 and isn't configurable.
Are you wanting a DirectInput Force Feedback test app?
I'm not sure where you are seeing the 0 to 500 as that should not be in Dolphin nor any GameCube games. Are you sure that is not coming from your driver?
The magnitude is output. What I mean by polarity is that the magnitude is a signed 16bit integer. DirectInput FF uses a range from -10000 to 10000, where -10000 is a strong movement to the left and 10000 is a strong movement to the right.
(01-01-2013, 10:05 AM)ulao Wrote: [ -> ]my guess is that the SDK calls for two values to make it easy for you. ->magnitude( int ) and -> polarity( bool or int ) but really puts that together for me in one int 0 to 2000 in hex. Where 0 == -1000 and 2000 == 1000 in hex.
Yes, this sounds right.
(01-01-2013, 10:05 AM)ulao Wrote: [ -> ]So maybe all that I need is for the output bar to work properly. At least it does not seem to be sending what it shows(0 to 500)...
Yeh, not sure where the 0 to 500 comes from.
go to dolphin GCpad and click motor constant force. then you will see a 0 to 500 for each type. If you could just get the right on screen value for what is being sent it will serious help me.
That is hardcoded to magnitude = 10000 and isn't configurable." -- ah, crap. Something about that slider changes the value coming to me. So its not sending a hard coded value to me?
So this also is a bit confusing. You says the force feedback takes a 16 bit int, but in the logs its only an 8?
45:26:474 Src\HW\SI_DeviceGCController.cpp:265 E[SI]: unknown direct command (0x300697) the 30 means talk to the wheel
45:26:618 Src\HW\SI_DeviceGCController.cpp:265 E[SI]: unknown direct command (0x30067b) the 06 means to start a force, 04 to stop
45:26:636 Src\HW\SI_DeviceGCController.cpp:265 E[SI]: unknown direct command (0x300669) the last byte is the amount.
45:26:650 Src\HW\SI_DeviceGCController.cpp:265 E[SI]: unknown direct command (0x300656) So how to you get more then 256?
45:26:699 Src\HW\SI_DeviceGCController.cpp:265 E[SI]: unknown direct command (0x300659)
45:26:717 Src\HW\SI_DeviceGCController.cpp:265 E[SI]: unknown direct command (0x30067b)
45:26:731 Src\HW\SI_DeviceGCController.cpp:265 E[SI]: unknown direct command (0x300480)
I meant it's a 16 bit signed int on the DirectInput side. It is a 8bit signed on the GC side. The emulator converts the 8bit from the GC side to DirectInputs 16bit.
8 bit : 0x0F = 00001000
16 bit : 0x0f = 00000000 00001000
I kind of a silly conversion because the 16 first bit will away be 00000000 then .
But anyways... So yes that does work with Fedit the DX tool. I can move the slider left all the way and the wheel jerks in that direction hard. Likewise for the Right side. Now in the game I still get the jerk in the beginning so I know the FFB is working. Also the test app works. Now that I added the magnitude the game does not force at all. So there is something about the way dolphin sets the effect that does not work where fedit does work. Wild guess here but maybe the little/big endians are reversed?
I'll find out more when I get my usb sniffer working again.
Well now that you made the pedals work I can not accelerate LOL. Looks like I can set A gas B break to make it work but the steering wheel set to left right is now broken also?
No my problem is not the assignments its the force amount. Looks like the game is not using enough force to make it work. I'll figure that out more later.
True about the pedals. Maybe try mapping your A button to the accelerator in the GCPad settings within Dolphin?
I am sending the maximum force that DirectInput allows in the Dolphin code.
Keep us updated with how you go.
To fix the steering, maybe try resetting all of the controls back to defaults and reconfiguring the wheel again.
Just noticed that I had accidentally left in a debug statement which might be helpful for you. In the Dolphin logs, turn on the "Common" log category. The log will now show the "strength" value (0 - 255) in the log that the game sends.