Alistair's Magic Box

Various emulator hacks and scripts designed for playing unusual challenge runs, making video art and exploring game corruption.

For Genesis-based Console Emulation

A modified version of the GenesisPlusGX emulator for playing Sega Mega Drive, Master System and Game Gear Games.

Select the version for your operating system

Effects include:

Super-fast swapping beteen games whenever Sonic gets a ring
Super-fast swapping beteen games on a timer
Colours get removed from the game whenever Sonic gets a ring
Sorting screen pixels by colour
Swap an opponent's game or corrupt their level through online play
Connect to Twitch and let your audience break your game
Support for a selection of classic games so that in-game actions are interpreted like getting rings

BizHawk Ring Shuffler

A version of the BizHawk emulator which swaps the player between games based on pre-programmed events. For example, when Mario grabs a coin in Super Mario World, a line is cleared in Tetris, or Sonic gets a ring in Sonic R

Use this for game-switching across multiple platforms, including Sega Saturn, Super Nintendo, Neo Geo Pocket Color and many more!

An earlier version has slower switching but also has additional features such as using rings collected in one game instance to provide joypad inputs in a second. It can be downloaded from the link below.

Tech Stack

GenesisPlus C

The Magic Box is a modified version of the open source GenesisPlus emulator. The original emulator is written in C, so my additions are also written in C.

Unity C#

The Network handler is built in Unity. This allows it to use Serial input from an Arduino, online multiplayer messaging with the Photon API, and process Twitch Chat messages using the Twitch API.

The Network application writes files to the file system which are interpreted by the emulator during operation.

Arduino C

The Magic Box control unit uses inputs from a modified Genesis console. The inputs are read by an Arduino hidden in the console's chassis, and sent back to the Network handler over Serial input. This is used in exhibitions to allow players to change the rules, reset the level, restart a game, pick a new challenge, and write glitches into the game.

Photon API

Photon is a cloud service for multiplayer games. I use this to allow players to join lobbies together and send each other actions. For example, if I collect a ring, it will send a message to your game to tell it to write data into your level. This is implemented in the Network application.

Twitch API

You can set up the Network application to modify

BizHawkC# Visual C#

To allow the game-switching to be played across multiple console emulators, I modified the open source BizHawk multi-system emulator, which is written in C#. This allowed me to optimise for speed, by caching emulator instances in memory when they are not being used, allowing super-fast switching between games.

Visual C# was used to make the menus that players use to set up their runs.