NRage Input Plugin is, in my opinion, the most customizable and full-featured N64 input plugin out there. However, that same flexibility also means that it's a bit confusing to set up. I hope this guide helps answer some of the questions people have about how to configure and customize the plugin. If you have any problems setting it up, or if any questions you have aren't answered by this guide, please drop in at the NRage thread in the emutalk.net forums and ask.
First, make sure you've downloaded the latest version. Right now, the link to the newest version is in a stickied thread on the EmuTalk bulletin board, here:
Extract the NRage_DInput8_V2_2.00.dll file into the plugins folder for your emulator. If you're using Project 64, like I am, it will be something like "C:\Program Files\Project64\plugins\" and should already have a lot of dll files in it already.
Finally, if you have an NRage language pack (something like NRage-Language-1031.dll), unpack that file into the same folder as your emulator. If you place it in the plugins folder, it will not work.
Now open up your emulator and select the plugin (for Project64 1.6, that's under Options, Settings).
A lot has changed since 1.83, most of it under the hood. Unfortunately, you'll have to set up everything from scratch; old controller config files and shortcuts won't work. I hope the many bugfixes and extra features in this version make up for it. But even if they don't, this version plays nicely alongside 1.83 or earlier, and your old settings will still be there if you switch back.
Open up the configuration box, preferably before you run any games. (Again, in Project64 it's under Options, Configure Controller Plugin). You should see something like this:
It may look like the inside of a fighter jet, but most people only need to change a few things. Let's go down the list and I'll explain what everything does.
Most important are the three buttons at the bottom marked "Save", "Use", and "Cancel". Save stores all the settings you've marked and closes the window, kinda like "OK". Cancel discards the changes you've made. Use is a bit odd; you can only use it when the emulator is running, and it lets you temporarily try out some settings without saving them permanently. The catch is that the changes are lost if you close the ROM, reset, or if the emulator loads a save state. So if you click Use to try some settings and you want to keep them, make sure you open the configuration screen up again and Save the changes.
Next to those is a drop-down list at the bottom where you can select your language, if you've installed a language pack. Just pick the language from the list, click Save, and then open up the configuration screen again. The language won't change until you save and open up the configuration screen, but you don't have to restart the emulator.
You'll notice in the above example that we've got Controller 1 selected, and that the Controls tab is selected. Each Controller tab has a few buttons and doodads to play with.
Plugged means whether the emulator sees the controller as plugged in or not. If this is unchecked, the N64 emulator will not see any data or button inputs. Each controller tab has one; generally, if you're using that controller for input, you want to check this box. By default, Controller 1 is "plugged" and all others are "unplugged".
Clear Controller lets you clear out all the controls, modifiers, and other settings that may have gotten set. It will "unbind" all keys and buttons, and is useful if you want to start your button assignments from scratch.
Default Config restores all the default button assignments as shown above. It also resets controller pak assignments, modifiers, and all the sliders to defaults. It won't erase any mempak games or anything, but it's helpful if you just want a reasonable set of default keys.
Save Profile stores a controller configuration to a file. If you want to switch back and forth between a keyboard/mouse and gamepad configurations, you can save them to files and load them back later. Or, if you want to save a configuration and use it on a friend's computer, you can use this. This does not save your shortcuts, but it saves all controller specific information, including ranges, force-feedback settings, controller pak settings, and modifiers.
Load Profile loads a controller configuration (.cpf) file. Unfortunately, it won't load controller profiles from 1.83 or earlier. Also a bit of warning: if you had assigned controls to a gamepad or other device and try to load a file without that device plugged in, the buttons will not be bound properly. So make sure you leave your gamepads plugged in when you click Load Profile.
Finally, we have the tabs labelled "Controls", "Devices", "Modifiers", and "Controller Pak". Here's a look in detail at each one.
To assign something to a button or to the analog stick, click on the name of the N64 button or direction. For example, if you want to reassign the Start button, click "Start". Then before the countdown expires, press the input you want to assign it to. If it's a key on your keyboard or a mouse button or a gamepad button, press it. You can also assign things like mouse movement (X and Y directions) and gamepad directions. If you want to unbind the button, press the ESC key on your keyboard while the countdown is going. Obviously this means you can't assign the ESC key to anything.
Rapid Fire controls, well, rapid fire. The slider controls how fast the buttons turn on and off. As for the checkbox... well, it turns on rapid fire for ALL buttons on the N64. To be honest, I don't know why it's there, but someone must have wanted it there.
Under Analog Stick you may notice the Range slider. On a real N64, each axis theoretically goes from -32768 to 32767 with 0 being the middle. However, the physical stick when pushed all the way to the right or left doesn't go that far, and most games are programmed with the assumption that about 20000 or so indicates the stick being pushed all the way. Generally, you should leave this as it is. But, for example, if Mario isn't running when you push the stick all the way, you should increase this. If he runs when you push the stick just a little bit and you want to increase the usable range of your joystick, you can lower it.
Real N64 Range also emulates a quirk of the physical N64 controller. The range of motion of a real N64 stick falls within a circle, because of how the controller is designed. However, Windows calibrates joysticks to within a square. Most people want to leave this on.
Finally, you'll see Config 1 and Config 2 bubbles. For the analog stick (and only the analog stick) you can set two different controls and switch between them with modifiers. We'll discuss how this can be useful later on in the Modifiers section. If you're not using modifiers, just make sure it's set to Config 1.
This tab lets you set some device-specific settings. You can leave it alone, or you can tweak things. Here's what each slider and button does.
Mouse Sensitivity X and Y adjust how sensitive the mouse is in each direction. People who want a small movement of the mouse to translate to a large movement on screen should move these sliders to the right. People who want a less twitchy mouse should move them to the left.
The bubbles for Deadpan, Buffered, and Absolute take a bit of explanation. Each changes how the mouse inputs are translated to joystick inputs.
Deadpan: the joystick is set off-center as long as the mouse is in motion. As soon as you stop moving the mouse, the joystick immediately centers itself.
Buffered: similar to deadpan, except that large mouse movements are "distributed" over several frames. It works quite well for first-person shooters, but tends to feel more "drifty" than a native PC game. This is the default.
Absolute: an imaginary "center point" is chosen. Moving the mouse away from this point holds the joystick in that direction. If you're moving an onscreen cursor (like the aiming mode of Goldeneye) you want to use this mode.
Keyboard Absolute X and Y are a different way of handling N64 analog stick inputs. Normally, the joystick is held in a direction as long as you press the keyboard key. Using Absolute Keyboard settings, the keys will control the absolute position of the joystick. This means if you hold the "right" key for a while, the virtual N64 joystick moves to the right. When you let go, it stays there. To move it back to the center, you have to press and hold the "left" key for a short time (but if you hold it too long, the joystick will be pressed left).
Finally, Gamepad Deadzone controls how far you can move a gamepad control before it registers as having moved. If you're using a high quality gamepad, you can theoretically move this to 0%. If your character is having spasms without you touching the controller, set this higher. Setting it too high sacrifices fine grain control, making it harder to sneak around in games that require you to press the joystick just a little bit.
This tab can be a bit confusing, but allows you to do very powerful things once you figure it out.
At first, everything will be grayed out except New Modifier and Delete Modifier. Let's start by playing around a bit.
New Modifier creates a modifier, obviously. So let's try that. Click it once.
Now select the modifier you've just created. The right half labelled "Adjust Modifier" should activate to let you know you've selected a modifier. It should look like this:
Okay, we've got a modifier, but it's not assigned to any key and it doesn't do anything. Let's take a look at what we can change.
First off, there's the "Assign Mod" button. This lets us bind a key to the modifier. It works exactly like binding a button in the Controls tab.
Then there's Mod Type, which is now set to "None". This lets you select different types of modifiers; we'll get into this shortly.
To the right of that is a checkbox marked "Toggle". If this is unchecked, the modifier will only activate as long as the button is held down. If it is checked, one press of the button will activate it and the next will deactivate it.
Below that is the Apply Changes button. If you change anything in the Adjust Modifier panel, you must click Apply Changes for the changes to take effect. Before selecting another modifier, or selecting another tab, or clicking Save, make sure that you've applied the changes! When you apply changes, the list of modifiers will update to let you know that the changes took effect.
Reset will revert all changes to the modifier since you've pressed the Apply Changes button. It has the same effect as deselecting the modifier from the list and selecting it again.
Here are the types of Modifiers and what they do:
Movement: lets you set a multiplier for analog stick movements, or invert axes
Macro: lets you press multiple N64 buttons and/or axes with one input, and also lets you create rapid-fire buttons
Configuration: lets you change N64 analog stick configurations. You can switch between Config 1 and Config 2 (from the Controls tab). The "Switch ?-Mode" under "Mouse" switches between Buffered and Absolute mouse modes (under Devices), and the "Switch ?-Mode" under "Keyboard" toggles Absolute Keyboard modes.
Let's try something. Select the new modifier that we created before. Assign the modifier to the "Shift" key, set the mod type to Configuration, and toggle the "Switch X-mode" and "Switch Y-mode" buttons. Now hit Apply Changes. If you've done it right, the modifier in the list should change to match, and it should look like this:
What we've done is created a modifier that when held down will change the mouse mode from Buffered to Absolute, and when released will change it back. I use this modifier (along with the R-trigger assigned to the same Shift key) in Perfect Dark, so that when I hold down the "aim" key I can use the mouse to target a point on the screen. It makes sniping a breeze.
Modifiers let you do things like bind a keyboard key AND a gamepad button to the same N64 button (bind one in Controls and create a Macro Modifier for the other). There are no limits on how many modifiers you can have bound to a single key or button, but you are limited to a maximum of 255 modifiers total per controller. There are a lot of things you can do with modifiers, and I'll leave it up to you to experiment!
One of the coolest features on the original N64 was the addition of modules that plugged into a port on the bottom of each controller. NRage DirectInput natively supports Memory Paks, the Rumble Pak, and the Transfer Pak; it also should support any pak through a real N64 controller hooked up to your computer through an Adaptoid. You can select the type of controller pak you want the emulator to see as plugged in to your controller.
There is one setting common to all controller paks, and that is the "RawMode" checkbox. If this is checked, it means that the NRage plugin will handle all controller pak data. If it is not checked, it means that your N64 emulator is responsible for handling all controller pak data. Most people will want to leave this checked. It is also probably a very bad idea to toggle this while a game is running, so if you do want to change it, use a save state, stop emulation, and then change it.
If RawMode is unchecked, you won't be able to set anything here besides the pak type. If it's checked, you'll see some options for the pak type you've selected (if you've selected one).
None means that no pak will be plugged in. The N64 will see that there is no peripheral connected to the controller.
Mem Pak lets you choose a memory pak directory, choose a mempak (by clicking on it in the list), create new mempaks in the selected directory, and delete mempaks. If you select a mempak in the box on the left, the box on the right will show what savegames are present on that pak, as well as how many blocks each one uses (out of a maximum 123 blocks) and the region of the game that saved it. In the example above, I've selected a mempak with Japanese savegames; as you can see, the names still show up properly. Format MemPak will completely erase the mempak, so be careful. The other three buttons allow you to export and import "notes" in a64 format, and also delete them. A "note" is like a game save file on a mempak; each mempak can have at most 16 notes. Be aware that a few games have certain expectations about their savegames being stored in a certain order or in a set. Messing around with individual notes shouldn't cause problems in most cases, but has the potential to crash games and at worst delete your savegames; to be safe, make a backup of your mempak file before you try to modify it.
Rumble Pak lets you set options for force feedback, if you have a device that supports it. The drop-down list will show any detected force feedback devices compatible with DirectInput. As you can see from the picture, if you haven't selected a compatible device then only Visual Rumble can be toggled. After selecting a device, the relevant options will become available. Constant Force uses one fixed value for the rumble strength, while Ramp Force starts with a fixed value and quickly drops off. Constant Force is closer to the original N64 controller, but some people like the feel of Ramp Force better. Direct Rumble will only be enabled if you have an Adaptoid plugged in, and sends rumble commands directly to the Adaptoid driver; if you're using a real N64 controller, you should use this or set the pak type to Adaptoid. The Visual Rumble tickbox flashes the LEDs on your keyboard if possible when a rumble command is sent by the N64. Rumble Strength sets the relative strength of the controller rumble, and Test Rumble tries to send a rumble command to make sure your controller is set up properly. DirectInput force feedback can be a bit quirky, so if you have trouble please see the separate troubleshooting section.
Transfer Pak lets you choose Gameboy files for transfer pak emulation. The transfer pak is used to allow you to load character data or enable special features in certain N64 games. Select matching ROM (Gameboy cart) and RAM (savedata) files. For some games, like Perfect Dark, you only need the ROM, but for games that read character data you will need both, because the N64 game reads from the ROM header to figure out what game pak you have plugged in. You will need to use a separate Gameboy emulator to play the Gameboy games (and they should create the RAM files when they first run.) Transfer pak emulation works quite well, but as with memory pak files you should always keep backups, just in case.
Adaptoid Pak will only appear if you have an Adaptoid plugged in when the configuration screen is opened. It lets you use your real N64 controller with real native paks. Why wouldn't you just use the Adaptoid plugin built into your emulator? Well, because with NRage you can use an Adaptoid on controller 1, a PC gamepad on controller 2, and a keyboard and mouse on controller 3.
To the right of the four controller tabs is a tab labelled "Shortcuts". Shortcuts are generic buttons you can use for changing pak types on the fly, and for "locking" the mouse. The former are pretty self-explanatory; they change the paktype to the indicated type. For the buttons that "switch" between mempak and another type of pak, pressing the button while a mempak is plugged in will switch to that other pak; if any other pak is plugged in, the key will switch to the mempak. Mouse locking is set whenever any control is assigned to the mouse; it ensures that when you're clicking madly in windowed mode you won't inadvertently click on any menus. However, to turn it off to select from the menus in your emulator you'll need to use it, defaulted to the TAB key. Finally, there's a tickbox labelled "Show messages". If it is on, a message box will overlay on top of the emulator window when a shortcut is used. It can cause graphical anomalies and crashes with some graphics plugins, so if this happens turn it off.
You can also save and load your shortcuts to files, as well as restore their defaults, just like controller configurations.
Q: I opened up the configuration panel and some of the buttons I had assigned to my controller are listed as "Unassigned." Help!
A: This will happen if the controller or gamepad in question isn't plugged in when you open the configuration screen. In this case, the plugin can't bind the keys properly (because your controller isn't plugged in), so it just leaves them unbound. However, it's usually not a big problem; just click Cancel, plug in your controller, and restart the emulator. If you click Save, this "Unassigned" status will become permanent. In that case, you'll have to rebind the controls.
Q: I can't get modifiers to "stick".
A: Before you click Save or change tabs or create a new modifier, you MUST click the button marked "Apply Changes". Otherwise, your changes will be lost.
Q: Every time I change my settings in the configuration panel, the settings stay for awhile and then get reset when I change ROMs/restore a save state. What's wrong?
A: Click "Save" instead of "Use".
Q: In Pokemon Stadium games, I can't run games in the "Gameboy Tower".
A: This is mostly a limitation of current emulators. In the original games, the "Tower" let you play certain Gameboy carts emulated on the N64. Since an emulator within an emulator just compounds problems, you should use a separate Gameboy emulator to run your games instead. It would not be wise to run the N64 emulator and your Gameboy emulator at the same time, as if they both decide to write to RAM at the same time, your data could become corrupted.
Q: When are you going to add Voice Pak support?
A: When are you going to send me a Voice Pak and an Adaptoid to play around with? In all seriousness, since only one game ever supported this accessory ("Hey You Pikachu!") it is unlikely that I'll ever get around to adding support for it. Also, since the device is rather rare, the detection code for the pak hasn't even been written. But if you have a Voice Pak and an Adaptoid, it should work. In fact, if you have this setup, please post on the emutalk.net thread, and maybe I can get started on it. You know, for posterity's sake.
Q: How can I make a language pack?
A: If you're a native speaker of a language other than English, and your language pack hasn't already been created, download the "NRage Language SDK" from this address:
Follow the instructions in the included text file, and post the finished product back to the emutalk.net thread. I'll make sure all the dialog boxes fit nicely and then update the front page post with your submission. Don't forget to include a nickname or some way to give you credit!
Q: My device doesn't show up in the list.
A1: If you're using an X360 or other "XInput" controller, you need to download and configure the XBCD drivers. These provide DirectInput force feedback support as well as a slew of tweak options. http://xbcd360guide.50webs.com/download.html
A2: First make sure you've plugged in the device before running your emulator. This updates the list of devices. Also, this list only shows DirectInput devices that support force feedback; you do not need to select a device here to assign buttons.
A3: Have you assigned your device to another controller already? You can only assign rumble devices to one N64 controller, even if the other device's controller pak is set to "None". Check the Rumble Pak device in the other 3 controller tabs.
Q: I can select my device, but Test Rumble doesn't work.
A: First, make sure you have the newest drivers for your controller; check the website of your controller's manufacturer. Also, some controllers have a switch or button that turns force feedback on and off (my Logitech gamepad is one of them), so you should check for that. As a last resort, try restarting the emulator and running the game anyway, and see if it works. For some reason, some controllers don't rumble in the config panel but rumble just fine in the game.
Q: Test rumble works OK, but rumble in the game doesn't work.
A: Try the following: