NGPC link-cable physical capture procedure¶
This procedure is designed to resolve the remaining UART, CTS/RTS, connector, and simultaneous-start arbitration questions using two NGPC/NGPC Color units and two copies of Samurai Shodown 2.
The passive hardware requirements for a non-destructive inline breakout are
specified in ngpc-link-interposer-spec.md.
Safety boundary¶
Do not drive any connector pin. Do not assume an online pin-number diagram is oriented correctly. Initially use only continuity mode, a high-impedance voltmeter, and high-impedance logic-analyzer inputs whose absolute maximum rating exceeds every measured voltage.
With both consoles powered off and batteries removed:
- Photograph both connector orientations and assign temporary pin labels from
left to right as viewed in each photograph (
A1...An,B1...Bn). - Measure cable continuity between every A/B pin pair and the shield.
- Record resistance, not just a yes/no beep. A crossed null-modem cable should reveal crossed signal pairs while ground/shield should remain straight.
- Verify that no signal pin is shorted to another signal or to ground.
Never use continuity or resistance mode on a powered console.
Passive measurements¶
Power one console without connecting the other. Measure every port contact relative to the established ground contact:
| Temporary pin | Power off continuity | Idle volts | Link-menu volts | Candidate |
|---|---|---|---|---|
| GND / TXD / RXD / RTS / CTS / shield |
Repeat with the other console and then with the passive cable attached. Pins that remain near zero are ground candidates; stable high outputs may be TXD or RTS; floating/intermediate pins may be inputs. These are hypotheses until a transition capture confirms direction.
Analyzer setup¶
- Attach analyzer ground only to the confirmed console/cable ground.
- Observe; never configure analyzer channels as outputs.
- Capture every non-ground cable conductor on both sides if the breakout permits.
- Use at least 2 MHz sample rate; 5–10 MHz is preferable. The predicted UART bit period at 19200 bit/s is 52.083 microseconds, so 2 MHz gives roughly 104 samples per bit.
- Capture raw digital samples before enabling a protocol decoder.
- For a first decoding attempt use asynchronous UART, 19200 bit/s, 8 data bits, no parity, one stop bit, idle high, LSB first.
- Also retain RTS and CTS edges. A byte-only export cannot resolve arbitration.
Controlled experiments¶
Use freshly powered consoles and the same menu actions for every run. Name raw captures and normalized exports with the experiment ID.
| ID | Procedure | Question answered |
|---|---|---|
| E01 | Power both consoles, remain outside link menu | true idle levels and unsolicited traffic |
| E02 | Enter link mode on A only for 10 seconds | FC retry interval; RTS/CTS behavior without peer |
| E03 | Keep A searching, then enter link mode on B | deterministic requester/responder election |
| E04 | Reverse E03 (B first, then A) | whether first entrant always becomes player 1 |
| E05 | Enter link mode on both as simultaneously as practical | collision/arbitration and symmetric FC behavior |
| E06 | Complete setup, then hold/release each control separately on P1 and P2 | F8 direction, bit mapping, sampling cadence |
| E07 | Complete setup and leave all controls idle for 30 seconds | keepalive/control cadence and phase traffic |
| E08 | Unplug cable during handshake | handshake timeout and terminal bytes |
| E09 | Unplug during active play, then reconnect without reboot | F8 reset, standalone FE, recovery policy |
| E10 | Abort link mode normally from each endpoint where possible | deliberate shutdown sequence versus fault path |
Expected identifying signatures include:
FC 01 00 30 identity request
FD 01 00 30 identity response
F0..F7 [count payload] normal transport
F9 payload completion acknowledgment
F8 00 <P2 input> player-2 offer
F8 <P1> <P2> combined input reply
F8 FE FE reset/error propagation
FE final termination
Required metadata¶
For every experiment record:
- console model, region, board revision if known, and which physical unit is A;
- battery voltage before the run;
- cartridge labels and ROM SHA-256 where independently dumped;
- cable identity and continuity matrix;
- analyzer model, input threshold, sample rate, and channel-to-pin mapping;
- exact power-on and menu-action timestamps;
- whether each console displayed player 1/player 2 or another role indication;
- raw capture filename and exported UART CSV filename.
Normalized byte export¶
Convert decoded bytes to the workspace format:
Then run:
Do not discard framing, parity, or overrun errors from the analyzer export. Keep a separate error log with timestamp and direction; those errors may expose CTS timing or an incorrect UART assumption.