Various emulator hacks and scripts designed for playing unusual challenge runs, making video art and exploring game corruption.
A modified version of the GenesisPlusGX emulator for playing Sega Mega Drive, Master System and Game Gear Games.
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.
Some of the weird and wonderful things created with these emulators
Latest addition to the Mega Drive emulator I'm hacking around with. Every time Sonic collects a ring it switches to a different Sonic game. pic.twitter.com/IRjuCxwEU1
— Alistair Aitcheson (@agAitcheson) September 24, 2020
Adding a new feature to the Magic Box. Play against an opponent over the internet. Every time Sonic collects a ring it switches THEIR game. pic.twitter.com/RudtkRMcpq
— Alistair Aitcheson (@agAitcheson) January 31, 2021
I've added support for Mean Mean Machine, Puyo Puyo and Puyo Puyo Tsu to the emulator - every time you group 4 or more beans it switches game :) pic.twitter.com/uZhzhaM5yp
— Alistair Aitcheson (@agAitcheson) December 13, 2020
New feature in the Magic Box. Every time Sonic gets a ring it removes a colour from the universe :) pic.twitter.com/cJvG6uyGAj
— Alistair Aitcheson (@agAitcheson) March 18, 2021
Flashing images in this one, but really quite beautiful! Each ring collected writes 8 random numbers into 8 random RAM locations. I decided to see how this would play out in a Special Stage.
— Alistair Aitcheson (@agAitcheson) May 11, 2021
Special Stages are fun 😁 pic.twitter.com/OLNj2abnKF
My fork of the BizHawk shuffler now swaps game whenever Sonic getting a ring in the Sega CD, 32X, Saturn and GBA games - systems I'd not been able to support with the Magic Box :)https://t.co/SlqhCj2n6r pic.twitter.com/cTKQ9nUc3c
— Alistair Aitcheson (@agAitcheson) May 1, 2021
I've been playing around with @Brossentia's BizHawk Shuffler. I've made a fork that swaps Mario into a different Mario game every time he gets a coin or stomps an enemy :)https://t.co/SlqhCj2n6r pic.twitter.com/C6xjlGgFTR
— Alistair Aitcheson (@agAitcheson) April 25, 2021
I've added some more games into my branch of the BizHawk shuffler. Every time Mario, Sonic or Link defeat an enemy, kill a virus, get a coin, grab a rupee, jump a barrel or grab a ring, the games will swap :)https://t.co/SlqhCj2n6r pic.twitter.com/x3g2JPYhKU
— Alistair Aitcheson (@agAitcheson) April 27, 2021
I had a go at controlling Pokémon using Tetris and it was a lot of fun. I'd love to see a race of this, something like "who can get furthest in 1 hour?"https://t.co/bPixb4h3oE
— Alistair Aitcheson (@agAitcheson) May 9, 2021
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.
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.
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 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.
You can set up the Network application to modify
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.