## PPJoyDLL virtual joystick

PPJoyDLL is a container application to load other DLLs that provide joystick data. This data is then fed to Windows as joystick input via the PPJoy Virtual Joystick interface. Below is a screenshot of PPJoyDLL:

### Selecting a Virtual Joystick

The drop-down list next to Joystick device selects the virtual joystick to use. The list contains all possible virtual joystick names; it does not detect which virtual joysticks are actually configured in PPJoy. You need to configure at least one virtual joystick in PPJoy. (See Adding a new joystick or gamepad.)

The text to the right of the drop-down list displays the status of the selected virtual joystick.

### DLL name

The name of the loaded DLL is shown greyed-out; the status of the DLL is shown to the right of the DLL name. When you select a new DLL type the existing DLL (if any) is unloaded and the DLL name will be blank.

Click on Load .DLL to load a new .DLL file.

### Selecting a DLL type

The second drop-down list, DLL type determines which functions in the loaded DLL file to call to obtain joystick data. Currently the following DLL types are supported:

- SmartPropo winmm.dll for .DLL for SmartPropo input DLLs written for FMS by Tsutomu SEKI. You can find these DLLs on his download page at http://www.sekiriki.jp/smartpropo/downloads.html.

  These DLLs export the same basic joystick functions as winmm.dll shipped with Windows. You can use any DLL in their place that exports the functions called `joyGetPosEx()` and `joyGetDevCapsA()` and behaves like the corresponding Windows API functions.

- Callback DLL interface is a new interface that indicates to PPJoyDLL when there is new joystick data. It also supports more axes and buttons (up to 8 axes and 16 buttons) than the SmartPropo winmm.dll interface.

  The following .DLLs can be found in the PPJoy installation directory (Normally `C:\Program Files\Parallel Port Joystick`):

  - Futaba_PCM.dll: For Futaba radios using PCM encoding.
  - Futaba_PPM.dll: For Futaba radios using PPM encoding.
  - JR_PCM.dll: For Jr radios using PCM encoding.
  - JR_PPM.dll: For Jr radios using PPM encoding.

  These .DLLs are based on the SmartPropo source by Tsutomu SEKI and works in the same way as the original SmartPropo DLLs. You can get the modified source here .

### Update frequency

The Update interval value determines how many microseconds (1/1000000s) PPJoyDLL will wait between joystick updates. This field is enabled for .DLL that has no way to indicate new data to PPJoyDLL. In these cases PPJoyDLL must poll the .DLL for new data. Setting this value too low will cause performance issues. Setting it too high my cause sluggish joystick movements. The default value of 25ms should be fine...

Click on Set to active any changes you make to the update interval. The application will automatically change values less than 5ms back to 5ms.

If this field is disabled it means the currently selected .DLL type indicates to PPJoy when there is new data. Polling is not needed in this case.

### Loading and saving the configuration

PPJoyDLL allows you to load and save the configuration to .INI files. You can also load an .ini file on startup by specifying it on the command-line when starting PPJoyDLL. For example `PPJoyDLL.exe C:\Config\PPJoyDLL.ini` will automatically attempt to load C:\Config\PPJoyDLL.ini on startup. If the config file is in the current directory you need to add ".\" in front of it. For example `PPJoyDLL.ini` becomes `.\PPJoyDLL.ini`.

### Additional notes

- Each instance of PPJoyDLL feeds data for a single virtual joystick. You can run multiple copies of PPJoyDLL if you need to use more than joystick device.
- The PPJoyDLL application must be running while you use the virtual (DLL-based) joystick. You can however minimise it to the taskbar.