mirror of https://github.com/bsnes-emu/bsnes.git
Update to bsnes v041r07? release.
New WIP. Rewrote a large portion of the RawInput driver, cleaning it up substantially. Each API is now its own separate class, and pInputRaw (the ruby private implementation class) pulls data from each separate driver. For keyboards, I've added the fixes for print screen and pause/num_lock. For joypads, I added XInput controller detection through RawInput's RIDI_DEVICENAME, instead of that crazy ass COM + wbem shit from MSDN. I also added a proper XInput driver, so now the left and right axes can be mapped independently, and you can use both at the same time. All in all, quite expensive and a lot of work, but it's the little bits of polish that really make an application shine. Do note that MinGW still doesn't ship with libxinput.a -- it's only been out for four years now, after all. You'll need to take XInput.lib from the DX9 SDK x86\lib folder, copy it to MinGW\lib, and rename it to libxinput.a. I'm surprised that works, but it does. I tried to use LoadLibrary("xinput1_3.dll") + GetProcAddress("XInputGetState"), but the app kept crashing in bsnes when optimizations were enabled. gdb showed it to crash in msvcrt!memcpy() from inside dinput8.dll. No idea what the hell was going on there. Non-XInput controllers will fall back on using DirectInput, of course. Fixed the joypad indexing, so multiple joypads should work again. Got the window centering hopefully right on WinXP so that windows opening for the first time won't 'flicker' anymore. Added the mklib(gdi32) entry, so you can compile with -mconsole again. Re-did the mouse capture stuff. 'Assign Mouse Button' + 'Assign Mouse Axis' are now buttons instead of menu buttons. For button assignment, you are given a window with a large disabled button named '(capture box)'. The instructions say to put whatever mouse you want over this button and click the mouse button that you want to assign. It'll assign upon release. Right now, assignment won't work for 1-2 seconds to prevent instant assignment when you click. I'll make a button mask in the future to avoid that delay. Also, it only verifies you clicked a mouse button while the capture window was active. I'll need to look into Qt's methods for mapping cursor clicks to control regions onscreen. Good news is it's now much easier to assign extended buttons like up+down ... you don't have to know what button #s they are anymore. For axis assignment, mapping based on mouse motion is too dangerous. So you get a window with two buttons: 'X-axis' and 'Y-axis'. I can add Z-axis if anyone wants (for the scroll wheel), but it seems kind of useless. The instructions say to click the axis button you want, with the mouse you want the axis assigned to. Now I know the instructions will probably just confuse people with only one mouse (~99% of users), so if everyone really thinks it'd be better to leave multi-mouse users in the dark about how the capture system works, I can take out the verbose notes. Hoping your controller will work now, FitzRoy. Otherwise I have no idea what's wrong. Be sure you manually set the driver to RawInput, too. Will most likely require a config file with "version = 42", otherwise reset to defaults, for the next release. [No archive available]
This commit is contained in:
parent
9de4b1dea2
commit
1e133eeb5e