AQZ Netplay Input Plugin for Nintendo 64 Emulators

1Official website:
2Source code:

  1. Go to Options, Configure Controller Plugin. Select and configure an input plugin. (The netplay plugin relies on a real input plugin to do the actual work of reading input from the keyboard/controller.) Make sure only one controller is “plugged in” for each player that will be playing locally (at the same computer).

  2. Choose a game to play. Send the save file for that game to each player. The save file is located in the “Save” folder in Project64 by default. If each player does not have the exact same save file, the emulation will probably desync.

  3. Open the game. The netplay plugin window will appear. Either join a public server, or have one player host a private server.

    Join a server with the /join <host>[:port][/room] command, where “host” is the address of the server, “port” is the port of the server (which defaults to 6400 if left out), and “room” is arbitrary text used to identify a gaming session. For public servers, choose a unique room ID. If a room ID is not specified, a random room ID will be assigned automatically. For private servers, there is only one room so the room parameter is ignored.

    Host a private server with the /host [port] command, where “port” is the number the server will listen on for connections. If a port is not specified, the default port number of 6400 is used. When a server is hosted for the first time, a message from your firewall may appear. Be sure to click “allow”. Also, if the host is behind a NAT (home router), the port will need to be forwarded with protocol TCP.

    (Note: If anyone is using WiFi (other than spectators), the game may be laggy unless they have a strong signal with low interference. You will probably be much better off if everyone has a wired connection.)

  4. Use the /name <name> command to change your name. The name you choose will be remembered next time you play.

  5. Use the /map <local> <netplay> [<local> <netplay> ...] command to remap your controllers. For example, /map 1 2 2 3 will map your local player 1 controller to player 2, and your local player 2 controller to player 3.

  6. When everyone has joined, use the /start command to start the game.

Client vs Host Input Authority

Client Input Authority (CIA) is when the netplay plugin (i.e. the client) is in charge of its own input data. This allows the client to proceed without having to wait for its own input data to arrive back from the server, resulting in a potential reduction in overall input latency. The disadvantage of CIA mode is a dropped packet causes a lag spike for all players.

Host Input Authority (HIA) is when the netplay server (i.e. the host) is in charge of the client’s input data. This allows the server to proceed without having to wait when a packet carrying input data from the client is dropped or delayed.

Use the /mode command to toggle your connection between client and host input authority.

Recommendation: Players with a stable connection and low ping should use client input authority and players with an unstable connection and/or high ping should use host input authority. Also, spectators should use host input authority regardless of connection quality.

(Note: If any player uses HIA mode, all players must disable the frame rate limit setting in their emulators. The server will provide the frame rate limit. In Project64, click the “System” menu option and then uncheck “Limit FPS.”)

Golf Mode

Golf mode allows games where players take turns (e.g. Mario Golf) to be played with zero lag.

To enable golf mode, use the /golf command.

When golf mode is enabled, inactive players are temporarily placed into host input authority mode to eliminate their impact on lag. To use golf mode, all players must disable the frame rate limit setting in their emulators.