Bringing old arcade machines back to life is part repair, part detective work. My latest project: a Star Trek: Voyager arcade cabinet that refused to boot because of a failed security device—the Dallas DS1991 iButton. With its internal battery long dead and no manufacturer support, the game only showed a bright red “Not Authorized” screen.

Following the Trail
The first clue was right in the binary: the “Not Authorized” string. Cross-referencing it in IDA Pro led me to the code path that displayed the failure message.
I noticed the message was triggered when a DWORD variable, ibok, was set to zero. Tracing it further, I saw that ibok was set by the return value of a function named verify_ib—the routine in charge of checking the iButton.
A Simple Fix
Instead of trying to emulate or repair the dead iButton, I decided to patch the function directly. The logic was straightforward:
- If
verify_ibreturned 0 → fail, show red screen. - If
verify_ibreturned 1 → success, boot the game.
So I replaced the body of verify_ib with just two instructions:
mov eax, 1
ret
This forces the function to always succeed, no iButton required.
Back on the Bridge
With the patch applied, the game now boots cleanly and plays perfectly.
Sometimes arcade preservation isn’t about fixing hardware—it’s about understanding the software well enough to get it running again. In this case, a little reverse-engineering brought Voyager back online, ready to defend the Delta Quadrant once more.