Next Generation Emulation banner

MegaPad Plugin !!!

139K views 227 replies 67 participants last post by  Luigi__  
#1 · (Edited)
Open the champagne !!! :D

I've here a new pad plugin I wrote. It's MegaPad and it uses DirectInput. (the older versions use SDL)
This plugin offers, as LilyPad, a complete pad support and many possibilities, but is much simpler than LilyPad.

THE OLD VERSIONS (1.3.3 and older) AREN'T SUPPORTED ANYMORE !!!

Launch PCSX2, open the plugin config dialog, and select MegaPad in the two Pad plugin lists. Click Configure under one of these lists, to open the GUI. Because you need to configure MegaPad. Here is the description of the GUI:

- Pad 1 / Pad 2 tabs: allow to select which pad you want to configure.
- Enable pad: uncheck it to disable the pad. It'll behave like the corresponding slot is empty. (Currently unsupported)
- Enable force feedback (DualShock II): by unchecking it, you make the corresponding pad behave like a PSX DualShock pad (without force feedback). (Currently unsupported)
- Logging: for debugging purposes only. The plugin writes all the events to a file.

The 25 buttons in the frame labeled "Buttons" are for button mapping. Basically, you click one of these buttons, then:
- if you want to bind it to a key, you press that key
- if you want to bind it to a joystick button, you press that button
- if you want to bind it to a joystick POV, you press that POV in the desired direction
- if you want to bind it to a joystick axis, you move that axis in the desired direction (when doing so, the axis behaves like a pressure-sensitive button, to simulate the pressure stuff)

The stuff in the frames labeled "Force feedback - Big/Small motor" isn't supported yet.



Version 2.0.0 beta
- Complete rewrite
- SDL dropped; this version uses DirectInput instead
- too much things to tell here...


FAQ

- I've downloaded version 1.x.x and it doesn't work/crashes/whatever
THE LATEST VERSION IS 2.0.0 BETA
THE OLDER VERSIONS ARE NOT SUPPORTED ANYMORE
BECAUSE THEY ARE CRAP

Did I say it loud enough?

- I've downloaded version 2.x.x and it doesn't work/crashes/whatever
If it crashes, tell me.
If it doesn't recognize your joystick at all, try another joystick...
If it recognizes your joystick but you can't use it ingame, try another pad plugin.

- Where can I get a version for Linux?
Nowhere. I don't know if there will ever be one.


The version 2.0.0 beta is, as you already know, a beta. If you experience any problems using it, feel free to report them in this thread!
But beta doesn't mean crashy or dangerous! Don't be afraid! It won't blow your computer!

You can download the plugin in the attachments.
 
#6 ·
A new plugin cool. :D

Unfortunately it's not showing up in the config for me and in console it seems to complain something about line 126 in the MegaPad dll file. It's probably me missing some dll file.
 
#9 · (Edited)
rpgwizard : put sdl.dll in the pcsx2 root folder. if it does not work put it in the "plugins" folder.
Lol yea sorry was tired and only had the sdl.dll file in plugins folder but putting it in the root pcsx2 folder new problems arise. Now it opens a similiar config window as SSSPSX pad has, far from what it looks like in the screenshots above when selecting megapad. lol

When I choose configure it shows up a small window with title "PadwinKeyb Msg" and only says "-1 buttons" and this simplified SSSPSX pad plugin gui shows up as in screenshot below. :???:
 
#12 · (Edited)
hard core rikki : I put the good dll in the first post.

I remember why I provided a wrong dll :
I took the dll which was in the release folder, but I configured visual studio to build the dll directly in the plugins folder of pcsx2 a long time ago, so the dll in this folder was an old dll.

I forgot to tell you
the first time you launch the gui, you must select the axis sensitivity (blank because the ini file does not exist yet), click ok, close the plugin selection window and then re-launch the gui.
I will work to solve this in the next version. I want to wait having at least 3-4 bugs in my bug report. I won't release a new version each time somebody tell me there is a bug, because Megapad is relatively young and could have many bugs I haven't noticed.
 
#13 ·
A new plugin cool. :D

Unfortunately it's not showing up in the config for me and in console it seems to complain something about line 126 in the MegaPad dll file. It's probably me missing some dll file.
yeh anybody who gets this, its not line 126, its actually error 126 which means "missing DLL link file" aka, youve put SDL.dll a place it cant find it ;p

if you wanna be doubly sure, stick it in your windows\system32 directory.
 
#14 · (Edited)
Version 1.1.0

Here is a new version of megapad with 2 little fixes :
version 1.1.0
The 2 problems were on the first launch of the plugin.
-Axis sensitivity list was blank, now it is set on the default value "normal".
-On the first launch config was not saved, now it is, you don't need anymore to re-launch the gui to get config saved. If you are interested by technical details, see bugreport.txt in the zip.

For visibility reasons I put the attachment in the first post.
 
#16 · (Edited)
Yes, I have myself a Logitech Cordless Rumblepad 2.
My plugin supports up to 5 gamepads and, for each gamepad, all its buttons, 4 of its povs and all of its axes.
This plugin supports mouse, keyboard and 5 gamepads !!!

ps : my plugin does not support vibration yet, but the sdl does not support vibration yet too...
When it will support vibration, I will try to implement it in my plugin.

This plugin is here to make some rivalry to ssspsxpad. As I said in the first post, this plugin offers, as ssspsxpad, a complete pad support, except it has more options.
As with ssspsxpad, you can :
-use gamepads.
-bind axes to buttons (i've implemented a feature : if you do this, this axis will be considered as a pressure-sensitive button, the axis value will be the pressure).
-bind buttons to buttons.
-bind axes to axes.
-bind keys to buttons.
Now i've implemented some features :
-As said upper, the feature of axes and pressure-sensitive buttons.
-Mouse support (based on the GS window, works better than padwinkeyb mouse support, but could not work very well, it's experimental and it was quite hard to implement), ssspsxpad does not allow you to map another thing than axes to axes, so if you want to use the analogs with ssspsxpad you must have a gamepad, with padwinkeyb you can only use joystick buttons. With my plugin press any key while mapping an axis and the mouse will be bound to the selected axis.
-Some options:
-Axis sensitivity for the joystick axes.
-Logging (for debugging purposes)
-Always show cursor, so you can see the cursor with ZeroGS.
-Low-visibility cross cursor, so you don't have to see the arrow cursor.
 
#17 ·
Found a problem, it's only allowing 1 direction key at the moment to be pressed so you can't get those smooth movements which is crucial for enjoyable gaming. So you cannot first press down and then press down and right after and then release down button to move in right direction for example. With this plugin it won't work.

Also I noticed switching save states would switch it 2 steps when both pad1 and pad2 are selected as megapad, an option to "disable pad2" within the plugin would be good.
 
#18 · (Edited)
Okay, if you really want to bind directional keys or numpad to analogs, i will implement it in the next version.

If you want to disable pad 2 in megapad, simply select another plugin for pad 2.
I think it will be implemented in the next version too.

ps : your "problem" is not a problem : there are 2 direction per axis :
X : horizontal
Y : vertical
You can bind them to the Mouse or to a joystick axis.
 
#19 · (Edited)
ps : your "problem" is not a problem : there are 2 direction per axis :
X : horizontal
Y : vertical
You can bind them to the Mouse or to a joystick axis.
Yeah I knew you would reply with that lol. But I'm a keyboard user and for us it's a problem. :) But I thought at least D-pad movement would have to behave in that way as even the ps2 controller on a real ps2 controller would be able to do that what I specified as a problem.

But it's up to you of course how "univeral" you want to make this plugin, there are already TwinPad and Lilypad which are excellent for us keyboard users. Lilypad also has pad/joystick support if I'm not mistaken but TwinPad is purely made only for keyboard users. So of course you can choose this plugin to be targeted for pad users, it's just matter of which aproach you decide to go and how much time you want to spend onto it.
 
#21 ·
I actually prefer keyboard as I'm a keyboard freak and I'm better with playing with a keyboard these days than using pads even. :evil: Also I think using keyboard is a part of emulation, using real pads only makes it look more like the real thing. :D
 
#26 ·
Not much is coming of the "Linux Input Plugin" thread, so I guess I'll try a direct request. Like a few other people here, I'd really really love a Linux version of this plugin. I agree that playing with a keyboard is masochism, but what's worse is that it's entirely impossible on Linux with games that require analog control--No plugins yet exist for Linux that support gamepads or any sort of analog control. This is the one thing keeping me from being able to play Monster Hunter perfectly on PCSX2.

I'm asking you because it seems that MegaPad would be the easiest input plugin to port--it uses SDL at its core, right? That's what handles the joypads directly? I don't know too terribly much about this, but couldn't you still just rely on SDL to do the heavy lifting for the gamepad? There's a Linux version of SDL, so.. wouldn't the rest of the code for the Linux version as opposed to the Windows version of the plugin be pretty much the same? If it's really this simple (not that I'd know one way or the other without researching this more), you'd make many people extremely happy by making this happen! I know you haven't used Linux, but if it's required, I'm sure there are a few people here who would be ready and able to answer your questions and do the testing for it. I realize I may just be spewing nonsense, but I'd love to see such an easy fix to this issue. Whether you look into this or not, thanks for your time!