Portfolio

Alistair's Magic Box - Windows version

Download latest build (0.17)

A Mega Drive emulator that switches to a different Sonic game every time you collect a ring. Built by editing the open-source emulator GenesisPlusGX. My source code is available on GitHub.

New feature: Network & Twitch play

Network play is supported from version 0.13 upwards. Twitch Chat interactions are supported from version 0.15 upwards. You will need to download the Magic Box VS Communicator to make this work.

Network/Twitch Play Setup Instructions

Supported games

Currently detects rings being collected in the following games:
Sonic the Hedgehog (GEN, MS, GG)
Sonic the Hedgehog 2 (GEN, MS, GG)
Sonic the Hedgehog 3 (GEN)
Sonic & Knuckles (GEN)
Sonic 3 & Knuckles (GEN)
Sonic 3D Blast (GEN)
Sonic Spinball (GEN)
Sonic Chaos (MS, GG)
Sonic Triple Trouble (GG)
Sonic Blast (MS, GG)

It also detects specific actions in the following games as if they were rings:
Dr Robotnik's Mean Bean Machine, Puyo Puyo and Puyo Puyo Tsu (GEN)
Streets of Rage 1, 2 and 3 (GEN)
Shadow Dancer, Revenge of Shinobi and Shinobi III (GEN)
Micro Machines 1, 2 and 96 (GEN)
Gunstar Heroes (GEN)
The Lucky Dime Caper (MS)
Mickey Mouse: Castle of Illusion (MS)
Wonder Boy III: The Dragon's Trap (MS)

Setup Instructions

Step 1: Install RetroArch

Download RetroArch for Windows (32-bit version).

Please ensure you are running the 32-bit version of RetroArch, as the emulator will not run with the 64-bit version. I hope to fix this soon.

Run the installer for RetroArch.

Step 2: Install the custom version of the emulator

Download Alistair's Magic Box for Windows (v0.17)

If you have problems with this version please try version 0.16

Unzip the downloaded ZIP file

Copy the file genesis_plus_gx_libretro.dll into the RetroArch downloads folder.

To find the location of this folder, open RetroArch and go to Load Core > Install or Restore a Core. The location of the folder will be at the top of the window.

Open RetroArch and go to Load Core > Install or Restore a Core.

Navigate to your downloads folder and select genesis_plus_gx_libretro.dll.

Step 3: Add your games

Navigate to your RetroArch folder. It should be one level up from the downloads folder.

Add a new folder called _magicbox

Copy and paste your Sonic game ROMs into this folder.

Works with all Genesis/Mega Drive games, but things to do with collecting rings only work in the following games:
Sonic the Hedgehog
Sonic the Hedgehog 2
Sonic the Hedgehog 3
Sonic & Knuckles
Sonic 3 & Knuckles

Other games can be swapped on a timer: e.g. every 5 seconds or every 30 seconds.

Step 4: Play a game!

Open RetroArch and select Load Content. Load any ROM.

If installation has worked you should see a list of the ROMs in your _magicbox folder on the left-hand side of the screen.

If it has detected any ROMs in your _magicbox folder it will run the first one in the list, regardless of which ROM you selected.

Using save states

Because this emulator juggles mutliple save states for different games, I've implemented functionality for save states beyond what's built into RetroArch by default

Enabling save states on start up

To begin all your games from their last saved state, switch BEGIN WITH SAVED STATE to ON

To choose how frequently all your save states are stored, use the AUTO-SAVE STATE menu item.

Using save states mid-game

Hold down UP + START + B to access the in-game menu

Press UP or DOWN to choose an item. Press START to make it happen

Version history

v0.17 (Download)

Death counter viewable in UI
Added Lucky Dime Caper (SMS) and Castle of Illusion (SMS)
Colour remove effect no longer affects swap count overlay
Players can hold values in memory using the Twitch interface

v0.16 (Download)

Allow Twitch users to type "random" as a number
Allow Twitch users to give single-digit values and 3-digit or 5-digit RAM locations
Add a rewind symbol when rewinding
Switching off "remove colours" in Twitch app resets the screen to normal
Master System can accept RAM values above 0x2000 sent by Twitch users
Fix but where Twitch users send 00 and it gets read as 01

v0.15 (Download)

Added rewind feature (hold START + B + LEFT)
Added support for Twitch integration in the VS Communicator
VS Communicator can now write to specific areas in RAM

v0.14 (Download)

Added functionality to delete colours when you get a ring

v0.13 (Download)

Improved support for Magic Box Communicator (network play, still in beta)
UI now shows if hacks in a category are activated

v0.12 (Download)

Added support for Gunstar Heroes
Now reads messages delivered by Magic Box Communicator (network play, still in beta)

v0.11 (Download)

Implemented infinite lives in Shinobi III, Shadow Dancer and Streets of Rage trilogy
Added support for Micro Machines 1, 2 and 96
Game switching in Streets of Rage 2 and 3 happens the instant you defeat an enemy

v0.10 (Download)

Bugfix: get ring to speed up works in Sonic 2, 3 and Knuckles
Added DOWN + B + START as insta-kill shortcut.

v0.09 (Download)

New hack: getting a ring writes data into the level (Sonic 1, 2, 3 and Knuckles)
Rearrange hack-select menu to have sub-menus
Can make game-swap happen in alphabetical order of the ROM file names
File names are shortened instead of going off the screen in menu

v0.08 (Download)

Adds support for Game Gear Sonic games
Infinite lives and time work in Game Gear and Master System games
Detects an empty _magicbox folder and gives you a warning
Detects .zip files and gives you a warning (as it cannot read them)
Searches for games in sub-folders of _magicbox
Added support for Puyo, Shinobi and Streets of Rage games

v0.07 (Download)

Detects rings in Sonic 3D Blast special stages
Detects Master System games with .sms or .bin file extension
Detects rings in Sonic 1, 2 and Chaos for Master System
Sonic Spinball lives counter is now only updated periodically (so it doesn't freeze on ending screen)
START + UP + B menu no longer renders as totally black (used to happen in Sonic Spinball ending screen)

v0.06 (Download)

Detects rings in Sonic Spinball and Sonic 3D Blast
Added a debug menu for finding useful RAM values

v0.05 (Download)

Can remove games from random selection in the UP + START + B menu
Can maintain Sonic's lives/rings/time/score/momentum/top-speed across games
Can activate/deactivate effects from the UP + START + B menu
New graphics-related hacks that work for all games:
Do not draw sprites
Do not draw backgrounds
Sort pixels by colour
Re-map colour palettes

v0.04 (Download)

Access the in-game menu by holding UP + START + B
Save save states from the in-game menu
Save save states to disk at user-defined intervals
Load save states from start-up or during games

v0.03 (Download)

Added ability to toggle special options on and off:
When games should switch
Video RAM can be carried over during a game switch
Infinite lives/time
Sonic speeds up on collect ring

v0.02 (Download)

Allow player to choose the starting game from an in-game menu

v0.01 (Download)

First release