EMSpy Program



This program can read controller data from an input display device (or my adapter), and show the controller information on the screen (see below).


This is an alternative to NintendoSpy, and can be used with the same skins. It currently supports NES, SNES, N64 and GameCube controllers.



EMSpy in use with N64 controller

(Skin is Tron skin by Aliensqueakytoy)


EMSpy Program

> Download EMSpy V1.6.1 - Windows <

> Download EMSpy V1.6.1 - Linux <

How to use

EMSpy is a standalone executable. To use EMSpy, simply extract the EMSpy program into the same directory as the "skins" directory, and run the program. (The same as you would with NintendoSpy)


EMSpy should theoretically work with any skins and input display hardware that NintendoSpy works with.

Purpose

EMSpy was designed as an alternative to NintendoSpy, to alleviate known "flickering" / "blinking" issues.


This flickering issue can come from 2 places:

  1. Software issue: The hardware sends the correct data, but the software "corrupts" the received data
  2. Hardware issue: The hardware sends the wrong data to the software


EMSpy was written from the ground-up, so any bugs present in NintendoSpy / RetroSpy will not be present in EMSpy (1). Note, it won't fix any problems caused by hardware issues (2).

Features

In addition to fixing these issues above, there are some other features of EMSpy:

  • Fast 60Hz maximum refresh rate (will be less for games where the controller is polled less frequently)
  • Automatic reconnect is attempted if device gets disconnected
  • Your settings are automatically saved, and loaded next time you start the program
  • There is a version compiled for Linux
  • If using a V2 adapter, you can also view and navigate the menu
  • Includes a button counter feature (see below for details)

Button Counter

You can add button counters to any skin XML, using the <counter> element. For example:



Counter Attributes:

  • name : Button name, e.g. "a", "b", "start", etc [1]
  • threshold : Threshold for analog inputs [2]
  • x : X-position of the counter
  • y : Y-position of the counter
  • prefix : Text before the counter value [3]
  • suffix : Text after the counter value [3]
  • font : Font face to use
  • size : Font size to use
  • color : Text color, accepts multiple formats, e.g. "red", "#FF0000"
  • antialias : Makes the text appear smoother (either on or off)


[1] The button name is required. It will map the counter to a controller input. For the GameCube C-stick, you can use "cstick_x+", "cstick_x-", "cstick_y+", "cstick_y-", in conjunction with the "threshold" attribute.


[2] The threshold must be specified for the GC C-stick, and is optional for the GC L+R triggers. This can be:

  • Percentage of the maximum, E.g 50%
  • Fraction of the maximum, e.g. 0.5
  • Exact Integer Value (out of 255 for triggers, and 127 for C-stick direction) E.g 64


[3] The prefix and suffix are optional. Alternatively, you can use the <detail> element to add fixed images.


Unticking the "Show counters" box in EMSpy will stop all counters from a skin from being shown.


To reset all counters back to 0, you can right-click, and choose "Reset button counters".