Bypassing the Dallas DS1991 Key on a Star Trek Voyager Arcade

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_ib returned 0 → fail, show red screen.
  • If verify_ib returned 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.

Leave a Reply

Your email address will not be published. Required fields are marked *