# O2EM-NG

## Philips Videopac G7000 / Magnavox Odyssey² Emulator

O2EM-NG is a modern SDL3-based continuation of the original O2EM emulator.

The goal of the project is to preserve the original O2EM emulation core while modernizing the platform around it with SDL3 video, audio, input, controller support, an integrated frontend, and a simpler living-room experience.

O2EM-NG is currently available as a public Beta for Windows x64.

Current version:

**v0.22.1-beta**

## Current Features

- SDL3 video, audio, and event system
- Integrated ROM browser and launcher
- Integrated Settings screen
- Persistent configuration through `o2em-ng.cfg`
- Fullscreen or windowed startup
- Region selection: Auto, PAL, and NTSC
- Original O2EM CRC-based compatibility behavior preserved in Auto mode
- PAL 50 FPS and NTSC 60 FPS video modes
- Keyboard support
- Xbox-compatible controller support
- Two simultaneous physical controllers
- Controller navigation in the ROM browser and Settings screen
- In-game controller shortcuts
- In-game controller port switching
- Brief on-screen controller routing notifications
- JPG and PNG box art support
- Original O2EM CPU and VDC emulation core
- Working SDL3 game audio
- Playable commercial Videopac / Odyssey² games
- Two-player gameplay with physical controllers
- Windows x64 Release build

## Current Status

O2EM-NG has reached its first public Beta stage.

The emulator is playable and has been tested with a growing collection of Philips Videopac G7000 and Magnavox Odyssey² games.

Confirmed playable games include:

- Gunfighter
- Atlantis
- Bowling-Basketball
- Munchkin
- Pickaxe Pete
- Skiing
- Spacemonster
- Speedway + Spin-out + Crypto-logic
- Cosmic Conflict
- Stone Sling
- Air-Sea War & Battle
- Electronic Billiards
- Frogger
- Golf

Additional titles have also been tested successfully.

Two-player gameplay has been successfully tested using two physical controllers simultaneously.

Gunfighter multiplayer has been confirmed working with video, sound, and controller input.

Bowling-Basketball has been tested successfully with the new controller port switching feature using a single physical controller.

The main known compatibility issue is currently Four in 1 Row, which remains under investigation.

Development is now focused on community testing, compatibility improvements, controller usability, NTSC-region feedback, and careful expansion of the emulator without breaking the current working game base.

## Settings

The Settings screen is available directly from the ROM browser.

Current settings include:

- Startup display mode: Fullscreen / Windowed
- Region mode: Auto / PAL / NTSC
- Scanlines setting stored in configuration for future renderer integration

Settings are saved in:

`o2em-ng.cfg`

### Region Modes

**Auto** preserves the original O2EM CRC-based compatibility behavior and is the recommended default for Beta testing.

**PAL** explicitly selects the PAL 50 FPS video mode.

**NTSC** explicitly selects the NTSC 60 FPS video mode.

External feedback from testers familiar with real Odyssey² NTSC behavior is especially welcome.

## Controls

### ROM Browser and Settings

Keyboard:

- Up / Down: Move selection
- Enter: Select or launch
- Esc: Return from Settings or exit the frontend

Controller:

- D-pad Up / Down: Move selection
- Left stick Up / Down: Move selection
- A: Select or launch
- B: Return from Settings or exit the frontend

### In Game

Keyboard:

- Esc: Return to ROM browser
- F5: Reset the emulated machine

Controller:

- D-pad / left stick: Joystick movement
- A: Fire
- Xbox B: Reset the emulated machine
- Xbox Back/View: Return to ROM browser
- Xbox Y: Switch controller ports

## Controller Port Switching

The original Philips Videopac G7000 / Magnavox Odyssey² hardware does not use one universal joystick port for every single-player game.

Depending on the game, the active player may use joystick port 1 or joystick port 2.

O2EM-NG preserves this original behavior.

Starting with v0.22.1-beta, users can press:

**Xbox Y**

during gameplay to switch physical controller routing between the two emulated joystick ports.

The emulator briefly displays:

`CONTROLLER PORTS SWAPPED`

or:

`CONTROLLER PORTS NORMAL`

This means a user with one physical controller can play single-player games regardless of which original joystick port the game expects.

For multiplayer games, two physical controllers remain fully supported.

The feature has been tested successfully with:

- Bowling-Basketball in single-player mode
- Gunfighter in two-player multiplayer mode

## Required Files

O2EM-NG does not include BIOS files, commercial game ROMs, copyrighted box artwork, or commercial game manuals.

Users must provide compatible files themselves.

Local content folders:

```text
BIOS/
ROMS/
BOXART/
MANUALS/
DOCS/