ProjectsSoftware / Odyssemu

Odyssemu is a Magnavox Odyssey emulator.

The only other Odyssey emulator around is ODYEMU for MS-DOS. It's hardly accurate but does have all the moving parts.

The worst possible emulation looks like this:

  • sdl_rect spot1, spot2, ball
  • spot1.x = x; spot1.y = y; flip();

The next best thing we can do is "read" the event state once, right before drawing the frame, and emulate using floating-point values each subcomponent of the device. That would allow true emulation of the card jumpers by following the real signal path.

For the highest accuracy simulation of this device, user input must directly futz with the internals as the screen is being drawn - requiring a real scanline ("racing the beam") simulation, which is slightly impractical given that video cards want everybody to draw to a framebuffer. This would allow us to do artifacts like "jello / rolling shutter" etc. or what happens when you change the horiz / verti position of objects mid-frame.

Other nice to have features would be overlays - JPG or (better) SVG, plus custom screen-2 items like dice, money, chips, etc. And an AI player, perhaps driven by embedded Lua, and the game cards could be simulated via Lua as well so that Ralph Baer's prototype "active cards" can be done as well.

So in the interest of setting up an Odyssemu roadmap, here are to-dos.

  • Get the "worst possible emulation" working with the objects needed
  • Collect high quality scans of overlays and other game pieces.
  • Setup some config stuff
  • Release initial version
  • Begin work on stage 2 prototype (or go straight to stage 3)
  • Further refine the UI
  • Setup AI players, attempt to homebrew something as proof-of-concept.