What's new

NRage Input Plugin V2.00 BETA (an overhaul)

OP
R

rabiddeity

Plugin Hacker
Alright, I'm posting in secret from a lab computer here at the conference. Hope this works. Posting a special debug version of the plugin. If you're having trouble getting rumble to work, please use this larger debug version (should be almost 500KB unpacked). It will output a file called NRage-Debug.txt to the same directory as your emulator exe file (so make sure you have write access). If your emulator folder already has a file called NRage-Debug0.txt you can delete it; it's a leftover from when they were testing the plugin before Project64 release.

Run the plugin, run a game or two that should have rumble support, close the emulator, and then package up and send the file to me somehow. You'll know it's the right file because the first line will have information about the build date of the plugin. Please do not send me the old NRage-Debug0.txt file.

The debug file will help me figure out why the plugin is failing to rumble. Again, I'm not going to have a fix for you guys until at least Monday when I get back, but it will help me figure out these weird issues in the meantime.

edit: please download the following updated version instead:
http://www.randomwisdom.com/files/NRage_Debug.zip
 
Last edited:

squall_leonhart

The Great Gunblade Wielder
lol i don't even have to save it.

its a small log.

here it is.
Code:
DLL Attach (2.00 Beta-Debugbuild | built on Aug  7 2006 at 21:30:57)
Initiating controllers...
    Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
Didn't get FF device 0
Didn't get FF device 1
Didn't get FF device 2
Didn't get FF device 3
Config interface: Open
GetInputDevice in RumblePakProc: OK
Test Rumble: OK
Test Rumble: OK
Config interface: Closed
Initiating controllers...
    Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
Didn't get FF device 0
Didn't get FF device 1
Didn't get FF device 2
Didn't get FF device 3
RomOpen
RomClosed
Initiating controllers...
    Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
Didn't get FF device 0
Didn't get FF device 1
Didn't get FF device 2
Didn't get FF device 3
DLL Detach
---DEBUG FILE CLOSED---
DLL Attach (2.00 Beta-Debugbuild | built on Aug  7 2006 at 21:30:57)
Initiating controllers...
    Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
Didn't get FF device 0
Didn't get FF device 1
Didn't get FF device 2
Didn't get FF device 3
RomClosed
RomOpen
RomClosed
RomOpen
RomClosed
RomOpen
RomClosed
DLL Detach
---DEBUG FILE CLOSED---
DLL Attach (2.00 Beta-Debugbuild | built on Aug  7 2006 at 21:30:57)
Initiating controllers...
    Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
Didn't get FF device 0
Didn't get FF device 1
Didn't get FF device 2
Didn't get FF device 3
DLL Detach
---DEBUG FILE CLOSED---
Ran Zelda OoT
did the following things
*Got attacked by fire bats*
rolled into wall
spin attack
joystick roll spin attack.
blew self up with bomb.

Ran Zelda MM
did the same as above +
triggered 3rd day guardian event - (the 4 guardians catch the moon, thier steps are supposed to cause earthquakes and the rumblepack to shake)
this did not occur.


from what the log file shows me, the plugin isn't recieving the rumble command from the emulator?
 
Last edited:
OP
R

rabiddeity

Plugin Hacker
Ah hah, the telling sign is "Didn't get FF Device 0". Meaning the DI FF device isn't being initialized. In the source code (which unfortunately isn't completely up to date on the site but you can still take a look) the function "PrepareInputDevices" tries to initialize the FF Devices based on their GUID (an identification number). Previously it did it by enumerating devices and searching by strings, if I remember properly. SO this probably means that either the GUID isn't being stored correctly in the emulator, or the plugin is failing to init properly by GUID. Can't do it here but when I get back I can add more debug output to give me a better look at why it's failing. Or maybe I'll see the problem in the code right off the bat.
 

Legend

New member
I really apperciate you working on this and i'm totally willing to help out, let me know what more I can do. Squall's log pretty much sums it up though. No rumble and I can't switch between mempak and rumble pak properly also.

But I can't wait for you to fix all this, it's been the only pain to N64 emulation(using mempaks and rumble paks in the same game). What is the proper way to do that? Insert mempak and save settings, then start game, let it load save, then switch to rumble, and switch back when it needs to save again? I can never get this to work right.

Also, what's the difference between the 2 rumble types? Just strength.
 

Agozer

16-bit Corpse | Moderator
Yes, that's how it's done on the real N64 since Nintendo didn't really think thing through when they brainstormed the Controller Pak schematics. :/ When you need to save you plug in the Memory Pak. When you play (or rather just before you start the actual game or the game prompts you to switch) you take out the Memory Pak and plug in the Rumble Pak.
 

squall_leonhart

The Great Gunblade Wielder
mate, the packs switch fine, it just doesn't show that its switched to rumble pack. although it has.

btw agozer, Zelda (both games) allows for the rumble pack to be pluged in at any time.
 

Legend

New member
I guess they do sort of. In the "shortcuts" tab there's a toggle for memP>rumbP which I thought you could hit to go between the 2 paks. However, it switches to rumble just fine but to go back to mpk, you have to use another button to unplug the rumble pak THEN hit that toggle key to plugin the mempak again. It's fine I guess, maybe it could be easier though.

Also, I guess you have to have raw data checked to toggle properly, which involves YOU managing the mempaks instead of the emulator which is kindof a pain in the butt.
I still can't figure out why some of my games' mpk's don't have any info (Name, country, blocks) in the content window. The ones that do, I can save and add to another mpk so I can only have like 3 total mpk's for all my games to switch between. Any ideas on that?

Maybe if there was a shortcut to toggle "raw data" you could have rumble AND have the emulator take care of all the mpk's as well. What do ya think?
 
Last edited:

squall_leonhart

The Great Gunblade Wielder
i think the current beta release is the one that has issues with mempak saves.

blast corps would mess up with 4 or more of the same saves on it.

also.
Mempak <> rumblepak works fine here.

btw, rawdata is for when your emulating an n64 controller.

you turn it off when you have an adaptoid to plug a real n64 control in
 

Harlay

New member
Code:
DLL Attach (2.00 Beta-Debugbuild | built on Aug  7 2006 at 21:30:57)
Initiating controllers...
	Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
Didn't get FF device 0
Didn't get FF device 1
Didn't get FF device 2
Didn't get FF device 3
DLL Detach
---DEBUG FILE CLOSED---
DLL Attach (2.00 Beta-Debugbuild | built on Aug  7 2006 at 21:30:57)
Initiating controllers...
	Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
Didn't get FF device 0
Didn't get FF device 1
Didn't get FF device 2
Didn't get FF device 3
RomOpen
RomClosed
DLL Detach
---DEBUG FILE CLOSED---
DLL Attach (2.00 Beta-Debugbuild | built on Aug  7 2006 at 21:30:57)
Initiating controllers...
	Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
Didn't get FF device 0
Didn't get FF device 1
Didn't get FF device 2
Didn't get FF device 3
Config interface: Open
GetInputDevice in RumblePakProc: OK
Config interface: Closed
DLL Attach (2.00 Beta-Debugbuild | built on Aug  7 2006 at 21:30:57)
Initiating controllers...
	Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
Didn't get FF device 0
Didn't get FF device 1
Didn't get FF device 2
Didn't get FF device 3
Config interface: Open
GetInputDevice in RumblePakProc: OK
Test Rumble: DIError: undocumented: 1
Test Rumble: DIError: undocumented: 1
Test Rumble: DIError: undocumented: 1
Test Rumble: DIError: undocumented: 1
Test Rumble: DIError: undocumented: 1
Config interface: Closed
DLL Attach (2.00 Beta-Debugbuild | built on Aug  7 2006 at 21:30:57)
Initiating controllers...
	Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
Didn't get FF device 0
Didn't get FF device 1
Didn't get FF device 2
Didn't get FF device 3
DLL Detach
---DEBUG FILE CLOSED---
DLL Attach (2.00 Beta-Debugbuild | built on Aug  7 2006 at 21:30:57)
Initiating controllers...
	Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
Didn't get FF device 0
Didn't get FF device 1
Didn't get FF device 2
Didn't get FF device 3
RomOpen
RomClosed
DLL Detach
---DEBUG FILE CLOSED---
DLL Attach (2.00 Beta-Debugbuild | built on Aug  7 2006 at 21:30:57)
Initiating controllers...
	Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
Didn't get FF device 0
Didn't get FF device 1
Didn't get FF device 2
Didn't get FF device 3
DLL Detach
---DEBUG FILE CLOSED---
 

Legend

New member
squall_leonhart said:
i think the current beta release is the one that has issues with mempak saves.
For me it's the same with 1.83.


squall_leonhart said:
Mempak <> rumblepak works fine here.

Maybe it's my controller but I have to UNPLUG rumble to plugin Mempak.




squall_leonhart said:
btw, rawdata is for when your emulating an n64 controller.
you turn it off when you have an adaptoid to plug a real n64 control in
I do know that, but call it blasphemy but hate the N64 controller and I use a thrustmaster so I have to have rawdata checked to get rumble. I don't think a rawdata toggle is a terrible idea.
Thanks for the replys.
 

NaSeR

Spanish Member
Hi! I have another one: Mouse movements in "Modifiers" doesn´t save, this happens in "Shortcuts" too.

Yes, I´m a mouse freak =P
 

Poobah

New member
squall_leonhart said:
btw, rawdata is for when your emulating an n64 controller.

you turn it off when you have an adaptoid to plug a real n64 control in
The rawdata option determines whether the emulator or the plug-in handles the "pak". I don't think NRage's plug-in even handles adaptoids, but I may be wrong. (Why not just use the adaptoid plug-in?)
 
Last edited:

squall_leonhart

The Great Gunblade Wielder
hey rabiddeity, maybe you could send me the source code, and let me have a look at it, im not a coder, but it'd be a start :p lol, if i get a chance i could look at the transfer pack implementation and see why pokemon yellow isn't working properly in 1.83 and 2.0 but worked in 1.82a
 
OP
R

rabiddeity

Plugin Hacker
Ack, sorry guys, I don't have internet access at home here and for some reason they closed and locked up my office for the past 3 days.

If you are having problems with RUMBLE, please use this debug build, and send me the log as explained in the above post (I've updated it since a week and a half ago, just to give me more useful debug information, so please use this build): http://www.randomwisdom.com/files/NRage_Debug.zip

Everyone else can use the regular "release" style code listed under the first post. Make sure you have the latest release before posting a bug.

Alright, now to the fixes...

Alright, let's take a look at the past week and a half...

SAVING INDIVIDUAL MEMPAK NOTES TO A64 FILES MAY BE BROKEN. At least, I'm pretty sure it doesn't work right. So if you're having an issue with a mempak, and you imported .a64 files, that's probably it. If you make a copy and delete the notes you tried to add, does it still crash? My guess is no.

Also, does anyone know where the a64 standard came from, and what an a64 file is SUPPOSED to look like? Even 1.83 doesn't write them consistently.

NaSeR, yep, I've got issues with assigning mouse axes/buttons inside the "Modifiers" area. The issue with saving modifiers to files should have been fixed before... I'll look at it again. As for saving shortcuts properly to files, yep, I see that too. I'll have the save bugs fixed within a couple hours. Maybe a bit longer for the assignment bug.

squall: You're saying that Blast Corps save bug is still there? I haven't seen it myself... which version of Blast Corps are you running? Can you give steps to reproduce it, or send me a mempak file that crashes it?

About the rawmode stuff, hmm... okay, let's list these off in order.
-The plugin is designed to work with RawMode on all the time. Is there a reason some of you aren't using RawMode?
-Adaptoids SHOULD work just fine in RawMode. If they don't, that's a bug and I need to fix it. The reason they're handled by this emulator: what if you've got one adaptoid and one ps2 controller and you and your buddy want to play Super Smash Brothers? Adaptoid plugins only handle adaptoids.
-A lot of emulators handle mempaks poorly, if at all. For example, Project64 makes 128kb files for a 32kb mempak, and doesn't handle the volatile areas like it should (each pak has a small area of ram for diagnostic purposes so that the N64 can make sure it can read and write to the pak itself before it starts writing to flash; this memory is only stored as long as the N64 pak is plugged in and the console is powered up). PJ64 makes separate mempak files for each game, which is handy in a way; too bad the plugin doesn't get enough information to do the same thing. NRage in raw mode opens these files up just fine, but it will warn you that the files are oversized. When a64 support is finally fixed, you'll be able to save the individual notes to a64 files and load them into another mempak.

I think that covers most of your questions.....

squall_leonhart said:
hey rabiddeity, maybe you could send me the source code, and let me have a look at it, im not a coder, but it'd be a start :p lol, if i get a chance i could look at the transfer pack implementation and see why pokemon yellow isn't working properly in 1.83 and 2.0 but worked in 1.82a

Take a look at page 1, the link to the source is right there. I'll try to keep the source updated for you, but the portions you're looking at aren't really changing on my end. The code you want is all in GBCart.cpp; I don't think I've changed anything of consequence in there besides unicode modifications. To be honest, I'd start by pulling the source for 1.82a and 1.83 and doing a diff of that file between those two versions.

Alright guys, I switched over the shortcut display so that it shows the window for rumble pak. It's the same behavior as before, but it's more clear which mode it's switched into. Again, if your rumble isn't working, use the debug version so that you get a debug file. Default behavior is for it to always append to the log, so to keep things clean you probably want to delete the log when you update to the latest debug version.

"Release", debug, and source updated.
 
Last edited by a moderator:

squall_leonhart

The Great Gunblade Wielder
yet again, Test rumble works

rumble in Zelda OoT doesn't.

Code:
*** DLL Attach (2.00 Beta-Debugbuild | built on Aug 17 2006 at 09:53:17)
Initiating controllers...
GetInputDevice: gGuid is {6F1D2B60-D5A0-11CF-BFC7-444553540000}
GetInputDevice: gGuid is {6F1D2B61-D5A0-11CF-BFC7-444553540000}
GetInputDevice: gGuid is {60745C20-8156-11DA-8002-444553540000}
    Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
GetInputDevice: gGuid is {60745C20-8156-11DA-8002-444553540000}
GetInputDevice: Device does not appear available
Didn't get FF device 0
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 1
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 2
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 3
Config interface: Open
GetInputDevice: gGuid is {60745C20-8156-11DA-8002-444553540000}
GetInputDevice in RumblePakProc: OK
Test Rumble: OK
Test Rumble: OK
Test Rumble: OK
Config interface: Closed
*** DLL Detach
---DEBUG FILE CLOSED---
*** DLL Attach (2.00 Beta-Debugbuild | built on Aug 17 2006 at 09:53:17)
Initiating controllers...
GetInputDevice: gGuid is {6F1D2B60-D5A0-11CF-BFC7-444553540000}
GetInputDevice: gGuid is {6F1D2B61-D5A0-11CF-BFC7-444553540000}
GetInputDevice: gGuid is {60745C20-8156-11DA-8002-444553540000}
    Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
GetInputDevice: gGuid is {60745C20-8156-11DA-8002-444553540000}
GetInputDevice: Device does not appear available
Didn't get FF device 0
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 1
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 2
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 3
RomOpen
RomClosed
RomOpen
RomClosed
*** DLL Detach
---DEBUG FILE CLOSED---
*** DLL Attach (2.00 Beta-Debugbuild | built on Aug 17 2006 at 09:53:17)
Initiating controllers...
GetInputDevice: gGuid is {6F1D2B60-D5A0-11CF-BFC7-444553540000}
GetInputDevice: gGuid is {6F1D2B61-D5A0-11CF-BFC7-444553540000}
GetInputDevice: gGuid is {60745C20-8156-11DA-8002-444553540000}
    Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
GetInputDevice: gGuid is {60745C20-8156-11DA-8002-444553540000}
GetInputDevice: Device does not appear available
Didn't get FF device 0
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 1
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 2
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 3
*** DLL Detach
---DEBUG FILE CLOSED---
*** DLL Attach (2.00 Beta-Debugbuild | built on Aug 17 2006 at 09:53:17)
Initiating controllers...
GetInputDevice: gGuid is {6F1D2B60-D5A0-11CF-BFC7-444553540000}
GetInputDevice: gGuid is {6F1D2B61-D5A0-11CF-BFC7-444553540000}
GetInputDevice: gGuid is {60745C20-8156-11DA-8002-444553540000}
    Loaded settings from registry
Controller 4: unplugged
Controller 3: unplugged
Controller 2: unplugged
Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
GetInputDevice: gGuid is {60745C20-8156-11DA-8002-444553540000}
GetInputDevice: Device does not appear available
Didn't get FF device 0
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 1
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 2
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 3
RomOpen
Config interface: Open
GetInputDevice: gGuid is {60745C20-8156-11DA-8002-444553540000}
GetInputDevice in RumblePakProc: OK
Config interface: Closed
GetInputDevice: gGuid is {60745C20-8156-11DA-8002-444553540000}
GetInputDevice: Device does not appear available
Didn't get FF device 0
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 1
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 2
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 3
Config interface: Open
GetInputDevice: gGuid is {60745C20-8156-11DA-8002-444553540000}
GetInputDevice in RumblePakProc: OK
Config interface: Closed
GetInputDevice: gGuid is {60745C20-8156-11DA-8002-444553540000}
GetInputDevice: Device does not appear available
Didn't get FF device 0
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 1
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 2
GetInputDevice: gGuid is {00000000-0000-0000-0000-000000000000}
GetInputDevice: Device does not appear available
Didn't get FF device 3
RomClosed
*** DLL Detach
---DEBUG FILE CLOSED---

...i can't seem to find a working download for the 1.82a souce
 
Last edited by a moderator:

Poobah

New member
rabiddeity said:
Is there a reason some of you aren't using RawMode?
I never use the "RawMode" option because I like to have a separate mempak for each game; it's very convenient! Maybe you could convince some of the popular N64 emulator developers such as Zilmar or Rice to see about having more information provided to the plug-ins so that input plug-ins could also have this functionality.
 
OP
R

rabiddeity

Plugin Hacker
Here we go. According to your log...:

Controller 1: rumble device set, plugged in, with paktype 2, RawMode is 1
GetInputDevice: gGuid is {60745C20-8156-11DA-8002-444553540000}
GetInputDevice: Device does not appear available
Didn't get FF device 0

...yet it was enumerated successfully above. There's a piece of code that's supposed to verify that the controller is actually plugged in, but it's obviously not working right. I've adjusted it. Download the latest DEBUG version from my site again, the DLL itself should have a timestamp of Aug 17 2006 around 4:35pm.

If that doesn't work, I'll remove the verification completely, as it's not really that important.
 

Top