Skip to content

1.0.11 Beta

Latest

Choose a tag to compare

@Darkone83 Darkone83 released this 11 Jul 23:17
4c60fbf

XbDiag 1.0.11 Beta — Changelog

A big thank you to the original Xbox community for the feedback and testing
that helped shape this release. Your reports, suggestions, and real-world
testing on hardware are what drive XbDiag forward — it is appreciated more
than you know.


New Features

SysInfo — EOS Modchip Detection (SysInfo.cpp)

XbDiag now identifies the EOS LPC BIOS-loader modchip (Team Resurgent /
Darkone) as its own chip rather than reporting it as a Xenium.

EOS is a clean-room design that implements the Xenium banking convention on
purpose — its bank register lives at I/O 0x00EF with the same low-nibble
1-10 encoding — so the existing banking probe matches it exactly as it matches
a genuine Xenium. Banking alone cannot tell the two apart. EOS additionally
decodes I/O 0x00EE and returns a fixed 0x55 there (a Darkone signature
byte; unconditional, read-only, no side effects). A real Xenium's 0x00EE is a
two-bit LED/control field that reads 0x00-0x03 and can never return 0x55.

DetectModchip now reads 0x00EE immediately after the 0x00EF banking probe
matches: 0x55 reports EOS, anything else reports Xenium. The check is one
extra read-only port access on the LPC bus the probe already uses, and it is
the only way to distinguish the two — no other signature separates a clean-room
Xenium-banking chip from the original. A genuine Xenium is unaffected and
reports exactly as before.

SmBusScan — EOS Device and Register Map (SmBusScan.cpp)

The SMBus scanner now recognises the EOS modchip at 7-bit address 0x6E
(sw-shifted 0xDC) as a known device instead of an unidentified ACK. The grid
entry reads "EOS — EOS LPC BIOS-loader modchip (Team Resurgent / Darkone)".

A register descriptor table has been added so the [A] register read labels each
EOS register: MAGIC (0xD8 Darkone signature), firmware version major / minor /
patch, live STATUS and ENGINE state, and the two lock-mask bytes. Labels are
taken directly from the EOS firmware register map. The CRC result and
last-command registers are internal to the update flow and are intentionally
omitted from the scan view — they carry no meaning outside an active update, and
the detail panel shows at most eight registers.

Note that STATUS and ENGINE are live: they reflect what EOS is doing at scan
time, so they will read differently depending on whether the chip is idle,
preloading, or mid-update. MAGIC and the version bytes are the only constant
identifiers.

Controller Test — Configurable Drift Warn Gate (ControllerTest.cpp)

The Drift card now supports a user-adjustable warn threshold to eliminate
false positives. The pass/fail threshold was previously a fixed 4% of full
scale; it is now a configurable gate from 0 to 20%.

The intended workflow: hold a known-good controller and capture the gate from
its measured drift, then test a new or suspect controller against the same
number. A pad is only flagged when it genuinely drifts more than the reference.

Controls on the Drift card: DPAD Up / Down nudge the gate by 1% per press; [Y]
captures the gate from the current measured drift (the worse of the two sticks,
plus a small margin, clamped to the 0-20% window); [X] is unchanged and still
resets the samples. The readout shows the active gate value and its source —
captured, manual, or the fixed default. With the gate left at 0 the card
behaves exactly as before, using the standard 4% threshold, so the change is
opt-in.

The Drift card already sampled raw unfiltered stick values with automatic
baseline capture and ADC jitter nulling; the gate builds on that existing
machinery without altering it.


Files Changed

  • SysInfo.cpp
  • SmBusScan.cpp
  • ControllerTest.cpp