Wheel of Fortune Gets Infinite Puzzles on NES

Wheel of Fortune is a television game show, born in the distant year of 1975. Like many popular television properties of the era, it spawned a series of videogames on various platforms. Like many a hacker, [Chris] had been loading up the retro NES title on his Raspberry Pi when he realized that, due to the limitations of the cartridge format, he was playing the same puzzles over and over again. There was nothing for it, but to load a hex editor and get to work.

[Chris’s] initial investigation involved loading up the ROM in a hex editor and simply searching for ASCII strings of common puzzles in the game. Initial results were positive, turning up several scraps of plaintext. Eventually, it became apparent that the puzzles were stored in ASCII, but with certain most-significant-bits changed in order to mark the line breaks and ends of puzzles. [Chris] termed the format wheelscii, and developed an encoder that could turn new puzzles into the same format.

After some preliminary experimentation involving corrupting the puzzles and testing various edge cases, [Chris] decided to implement a complete fix. Puzzles were sourced from the Wheel of Fortune Puzzle Compendium, which should have plenty of fresh content for all but the most addicted viewers. A script was then created that would stuff 1000 fresh puzzles into the ROM at load time to minimize the chances of seeing duplicate puzzles.

ROM hacks are always fun, and this is a particularly good example of how simple tools can be used to make entertaining modifications to 30-year-old software. For another take, check out this hack that lets the Mario Bros. play together.

20 thoughts on “Wheel of Fortune Gets Infinite Puzzles on NES

  1. Yes, Wheel launched in 1975. 43 years ago. But on the current show they claim only 36 years. That’s the syndicated version, which started in 1982~83 with Vanna and Pat.

    For some reason NBC erased or destroyed nearly all tapes of the episodes with Chuck Woolery. Quite odd to do so when nearly all shows by TV networks in the USA and other countries were being kept by the second half of the 1970’s.

    1. Just a guess, but I imagine the decision not to keep the Wheel of Fortune library had to do with the expense of storing the tape or film for a show that aired five times a week, and which was unlikely to be rerun out of season. The tapes and storage were probably reused for other programs.

        1. A lot of them. There’s a website (http://www.restoration-team.co.uk/) that details some of the trials and tribulations involved in getting some of them onto DVD and Blu-Ray. (Okay – there’s only one of them that went out as Blu-Ray – Spearhead from Space – and that was because a strike meant they had to use film rather than tape)

          Some episodes (Claws of Axos, Inferno) were part black and white film and part dodgy VCR recording. (The black and white film used for the luma information and the colour information from the video tape was reshaped to fit the screen)

          Later on, they figured out that the process of making black and white films from colour episodes left some of the colour information behind and they could use that to recolour it.

        2. Yes, HaD an article mentioning that ~year ago.
          Some old BBC video tapes had been found at a Nigerian TV station, (AIUI, owned by deposed, deceased prince)
          that were gummed up, and someone was painstakingly recovering them, but at the time, IIRC, the existence of any missing Dr. Who episodes in that stash was not known.

  2. I noticed the same thing with the DOS WoF years ago with at least the title screen. I ended up asking a different way, but one of my first plans for asking my wife to marry me years ago was to change the intro with the question.

    1. Chris refers to “https://gist.github.com/ChrisBeaumont/2653846258f64d6910d2” in the rededit discussion – does this work for anyone? i get:

      Traceback (most recent call last):
      File “.\wheel.py”, line 286, in
      new_rom(ROM, ‘random.nes’, resample_random)
      File “.\wheel.py”, line 280, in new_rom
      data[CLUE_START:CLUE_STOP] = list(resampler())
      File “.\wheel.py”, line 233, in resample_random
      clueset = build_clueset()
      File “.\wheel.py”, line 181, in build_clueset
      clues = list(parse_clues(ROM[CLUE_START:CLUE_STOP]))
      File “.\wheel.py”, line 97, in parse_clues
      elif not data[pos + 1] & 0x80: # newline
      IndexError: index out of range

      I’m not real up on python to know what to do next

      1. Had the same problem. Gotta make sure you use the same rom that he did. I did some guessing and figured out it’s probably the PRG 0 version of Wheel of Fortune. Search for “Wheel of Fortune (U) (PRG0) [!]” and then after that you may need to “pip install html5” to get past a further error. Good luck! It spits out all his test files but wheel2.nes is what you want.

  3. Good it’s in ASCII. The Odyssey2 / Philips G7000 version of Hangman uses 6 bits per letter at three different offsets inside the ROM. And was in desperate need of a different set of words (some of them make it look like the programmer took a look at his computer keyboard and just entered the words on the special keys). Also the limit of letters per word is unknown, but the game can handle 13 or 14 just fine.

  4. If one looks in the ROM, there’s clearly an array of pointers right before the text—start looking at .nes offset 0x101FA. There’s clearly some other pointers before these that point to starts of phrases, I’m not certain what they’re for.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.