Skip to content

Commit 5aa7d11

Browse files
committed
docs: usb2neogeo, move profile diagrams under each section
add missing info about input latency scale images
1 parent 3644448 commit 5aa7d11

3 files changed

Lines changed: 31 additions & 10 deletions

File tree

docs/apps/usb2neogeo.md

Lines changed: 31 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,8 @@ Standard arcade mapping for 1L6B in 1L8B fightsticks:
5656
| D-Pad | D-Pad |
5757
| Left Stick | D-Pad |
5858

59+
![Default Profile](../images/usb2neogeo_default.svg)
60+
5961
### Type A Profile
6062

6163
1L6B aligned to right side of 1L8B fightsticks:
@@ -71,6 +73,8 @@ Standard arcade mapping for 1L6B in 1L8B fightsticks:
7173
| L2 (LT/ZL) | B6 / K3 |
7274
| R2 (RT/ZR) | B5 / K2 / Select |
7375

76+
![Type A](../images/usb2neogeo_typea.svg)
77+
7478
### Type B Profile
7579

7680
Neo Geo MVS 1L4B layout:
@@ -86,6 +90,8 @@ Neo Geo MVS 1L4B layout:
8690
| L2 (LT/ZL) | (disabled) |
8791
| R2 (RT/ZR) | B6 / K3 |
8892

93+
![Type B](../images/usb2neogeo_typeb.svg)
94+
8995
### Type C Profile
9096

9197
Neo Geo MVS Big Red layout:
@@ -101,6 +107,8 @@ Neo Geo MVS Big Red layout:
101107
| L2 (LT/ZL) | (disabled) |
102108
| R2 (RT/ZR) | B6 / K3 |
103109

110+
![Type C](../images/usb2neogeo_typec.svg)
111+
104112
### Type D Profile
105113

106114
Neo Geo MVS U4 layout:
@@ -116,6 +124,8 @@ Neo Geo MVS U4 layout:
116124
| L2 (LT/ZL) | (disabled) |
117125
| R2 (RT/ZR) | (disabled) |
118126

127+
![Type D](../images/usb2neogeo_typed.svg)
128+
119129
### Pad A Profile
120130

121131
AES pad, classic diamond (A/B/C/D on face buttons):
@@ -131,6 +141,8 @@ AES pad, classic diamond (A/B/C/D on face buttons):
131141
| L2 (LT/ZL) | (disabled) |
132142
| R2 (RT/ZR) | (disabled) |
133143

144+
![Pad A](../images/usb2neogeo_pada.svg)
145+
134146
### Pad B Profile
135147

136148
AES pad, KOF/fighting style:
@@ -146,6 +158,8 @@ AES pad, KOF/fighting style:
146158
| L2 (LT/ZL) | (disabled) |
147159
| R2 (RT/ZR) | (disabled) |
148160

161+
![Pad B](../images/usb2neogeo_padb.svg)
162+
149163
## Runtime Button Mapping
150164

151165
In addition to the 7 compiled profiles above, buttons can be remapped on fly. The runtime mapping overlays the active profile and persists until cleared.
@@ -214,16 +228,6 @@ Auto fire overlays the current button mapping without erasing it.
214228

215229
From idle: hold **SELECT** for **2 seconds**, then press **START**. The runtime mapping is erased and the active profile resumes (LED flashes twice).
216230

217-
### Profile Diagrams
218-
219-
![Default Profile](../images/usb2neogeo_default.svg)
220-
![Type A](../images/usb2neogeo_typea.svg)
221-
![Type B](../images/usb2neogeo_typeb.svg)
222-
![Type C](../images/usb2neogeo_typec.svg)
223-
![Type D](../images/usb2neogeo_typed.svg)
224-
![Pad A](../images/usb2neogeo_pada.svg)
225-
![Pad B](../images/usb2neogeo_padb.svg)
226-
227231
## Supported Boards
228232

229233
| Board | Build Command |
@@ -275,8 +279,25 @@ This implementation uses open-drain logic to prevent voltage collisions between
275279

276280
### Latency Testing
277281

282+
Input latency is tested using the [MiSTer FPGA Input Latency](https://github.com/misteraddons/inputlatency) methodology, but adapted for usb2neogeo use. While the original methodology measures input lag from USB gamepads on a MiSTer FPGA, this setup replaces the MiSTer with the adapter itself.
283+
284+
The process uses an Arduino script that triggers an input on the gamepad via PIN 5. In the original MiSTer setup, the core catches the input and sends a response back to the Arduino via the User Port to PIN 2, triggering an interrupt to calculate the elapsed time.
285+
286+
With this usb2neogeo, the MiSTer is not required. The adapter receives the USB gamepad inputs and routes them directly to the NEOGEO port. This output is then used as the interrupt signal for the Arduino to measure the precise delay between the physical button "press" and the adapter's output.
287+
278288
![Latency Test Setup](../images/usb2neogeo_latency_diagram.png)
279289

290+
291+
### Test Results
292+
*Note: Outliers filtered using 0.02 lower and 0.995 upper quantiles to ensure statistical accuracy.*
293+
294+
| Setup (Input > Output) | Min (ms) | Avg (ms) | Max (ms) | Std Dev |
295+
| :--- | :---: | :---: | :---: | :---: |
296+
| **GP2040 (PS3)** > joypad-usb2neogeo | 0.24 | 0.74 | 1.25 | 0.28 |
297+
| **GP2040 (PS4)** > joypad-usb2neogeo | 0.24 | 0.73 | 1.26 | 0.28 |
298+
| **GP2040 (SW)** > joypad-usb2neogeo | 0.18 | 0.67 | 1.18 | 0.28 |
299+
| **GP2040 (360)** > joypad-usb2neogeo | 0.18 | 0.67 | 1.19 | 0.28 |
300+
280301
## Troubleshooting
281302

282303
**Controller not detected:**
-4.37 KB
Loading
-149 KB
Loading

0 commit comments

Comments
 (0)