Currently there is only black screen when emulating this title in HLE.
I reversed the xbe and figured out the controller related codes.
it's possible to add support for the specific Steel Batallion Controller.
tech. info of the controller can reference http://xboxdevwiki.net/Xbox_Input_Devices
my experiment result shows that the input state starting from the offset 2 can be fed to the pState of XInputGetstate directly from the _XINPUT_GAMEPAD starting address, right after the dwPacketNumber.
the xbe open the input device with s specific DeviceType, I call it XDEVICE_TYPE_SBCONTROLLER, which is different from XDEVICE_TYPE_GAMEPAD.
Deriving XDEVICE_TYPE_GAMEPAD from DeviceTable (via GetTypeInformation)
DeviceTableStart: 0x00255D04
DeviceTableEnd: 0x00255D14
DeviceTable Entires: 4
----------------------------------------
DeviceTable[0]->ucType = 128
DeviceTable[0]->XppType = 0x00255EE4 (Unknown) // this is for SteelBatallion Controller.
----------------------------------------
DeviceTable[1]->ucType = 1
DeviceTable[1]->XppType = 0x00255DB4 (XDEVICE_TYPE_GAMEPAD)
----------------------------------------
DeviceTable[2]->ucType = 3
DeviceTable[2]->XppType = 0x00255E4C (Unknown)
----------------------------------------
DeviceTable[3]->ucType = 2
DeviceTable[3]->XppType = 0x00255E08 (Unknown)
XAPI: XDEVICE_TYPE_GAMEPAD Found at 0x00255DB4
the deviceTable[0] ucType=128 is dedicated for SteelBatallion controller.
the XDEVICE_TYPE_SBCONTROLLER is at 0x00255EE4, which could be derived using current logic for deriving the XDEVICE_TYPE_GAMEPAD address.
so to response to any XInput API related to this DeviceType will enable us to emulate the input.
I tried to trigger the "iginition" and "start" and the title does response to my input signal. so this could work.
Here are options we could pick up:
1.We could add support for original controller set via the specific windows driver here:
https://github.com/jcoutch/steel-battalion-net
the emulated virtual controller can either be integrated in Cxbx-R or an independent virtual controller with an specific interface.
any further comment regarding to this idea?
I have the original controller set, brand new, still in the box. for me, to support original controller would be the quickest and easiest way. but I would still like to develop a virtual controller for it.
How does MAME support non-standard controllers? Isn't it by means of an XML button layout? That gets drawn with whatever artwork to show a clickable interface. Furthermore, each button can be mapped to whatever input means available on host.
That's a bit too much for us I guess, but the general idea could be mimicked.
Look at the configuration GUI in Dxbx for example
See http://imag.malavida.com/mvimgbig/download-fs/dxbx-7091-1.jpg
I just noticed the wiki doesn't list the USB dance mat the Xbox had for DDR or SM
In my honest opinion, this type of work should wait until LLE OCHI is support.
I'm sure HLE for XAPI will be drop permanently in favor to use LLE OCHI directly to support all type of controllers.
LLE OCHI shall enable the support with original xbox controllers, but that's for original xbox hardware.
We'll need HLE XInput API for users using controllers other than original xbox controller.
for example, a 360 controller shall not be accepted with the LLE OCHI, am I correct?
and for the sake of the controller's life time (for example, the SteelBatalion's controller set which should possibly go to the end in next few years.), an HLE with possible virtual controller emulation shall still be needed.
LLE OCHI can provide support for virtual controller. Possibility a lot better than XAPI can do.
See the doc here, it state it is possible to have 360 gamepad support with XQEMU. Plus keyboard mapped to fake xbox controller's input.
UPDATE: Also look at JayFoxRox's pull request for 360 controller support (currently experimental at the moment)
ok, I know what you mean.
so the LLE will include a virtual USB device, and extend it to a virtual controller, not simply bridge the USB protocol.
in that case, virtual controllers still need to be implemented, and extend to non-standard game pad. only difference will be whether the interface to the emulator is LLE or HLE.
Correct, you might will have to re-do your HLE's virtual controller in order to support LLE. Hopefully, not too much work requirement.
Personally, I think it's best to have it integrate for best speed-wise while in LLE state plus it is part of xbox hardware.
yeah, but I stands for the favor of HLE personally. especially with the existing XInput API emulation code base which is matured enough. I would really leave the LLE OCHI to the original hardware only.
Steel Battalion controller support has been implemented in https://github.com/Cxbx-Reloaded/Cxbx-Reloaded/pull/1196, so closing this.
Nope, #1196 only add virtual Steel Battalion controller support, not the real controller.
I did have another PR which supports real Steel Battalion controller but I closed that PR because we're expecting your USB pass through approach. Unfortunately your USB pass through approach PR is not merged yet. so there is no support for the Steel Battalion controller in current cxbx-r, and this issue should be kept open.
I agree with the closure: This issue was specifically about implementing emulation of the steel battalion controller, not pass-through, or full lle.
pass-through is a totally unrelated issue, and needs no special behavior for steel Battalion : If we did implement full usb pass-through, it would automatically work for ALL Xbox peripherals and there would be no need for any device specific work, so as far as we are concerned, this is finished.