Skip to content

MightyMiggy: Bluepad32 for Amiga/CD32

What is MightyMiggy

MightyMiggy is version of Bluepad32 aimed at the Commodore Amiga line of computers.

MightyMiggy originated as a port of SukkoPera's OpenPSX2AmigaPadAdapter firmware, so it has all of its features and even more:

  • Controls a joystick and a mouse with a single controller
  • Controls two joysticks with two controllers
  • Supports 2 buttons in joystick mode and 7 buttons in CD32 mode
  • Has 4 different built-in button mappings and 4 more which can be customized at will
  • Has 2 different button layouts in CD32 mode

While it can run on an unmodified Unijoysticle2 board (Rev F), to take advantage of all its features you will need an alternative version of the board, which plugs directly in an Amiga 500 or 1200. On the 600 you will have to use extension cables. Other models have not been tested yet.

The board and firmware retain backwards compatibility and should work wherever an Atari-style joystick is supported, including the Commodore VIC-20, Commodore 16 (through an adapter), Commodore 64, etc. Probably the board will not plug directly in these computers, but extension cables will always do the trick. Note that on some platforms you might have to provide external power through the USB connector on your ESP32. On Amigas this should not be necessary, but in doubt do it, it won't hurt.

DO NOT USE on MSX computers, these have a different electrical interface, even though it appears similar.

Operating Modes

MightyMiggy should support all the controllers supported by the standard Bluepad32, which have the following general layout:

virtual_gamepad

  • 1: D-Pad (including )
  • 2: Left Analog, Button Thumb Left
  • 3: Right Analog, Button Thumb Right
  • 4: Button X
  • 5: Button A
  • 6: Button Y
  • 7: Button B
  • 8: Button Shoulder Right
  • 9: Accelerator, Trigger Button Right
  • 10: Brake, Trigger Button Left
  • 11: Button Shoulder Left
  • M1: Button System
  • M2: Button Home
  • M3: Button Back

MightyMiggy supports up to two controllers at the same time. The first controller connecting will control the joystick in Port 2 (the port controlling Player 1 on all Amiga games) and the mouse in Port 1. When a second controller connects, it will control the joystick in Port 1. The first controller can regain control of the mouse by moving the Right Analog stick. The second controller can then regain control of the second joystick by pressing a button on the D-Pad.

The exact function of each button depends on the operating mode.

Two-Button Joystick Mode

When the adapter is powered on, it defaults to Atari-style Two-Button Mode. While in this mode, the adapter supports different button mappings, which have been carefully designed and tailored to different game genres. The mappings can be switched by pressing Back in combination with other buttons. The player LED will blink quickly a few times to indicate what mapping has been activated.

Standard Mapping: Back + X

Standard Mapping is the simplest mapping possible: both the D-Pad and Left Analog work as direction buttons. X is Button 1 and A is Button 2. This is the default mapping as it should be usable just about in every game out there. It might not be the most natural these days, but it's the way the game was meant to be played by the developers, thus it should never fail you.

Note that very few games were originally made to take advantage of two buttons, as even fewer controllers had that many (!) those days. Here is a list of Amiga games that somehow support two buttons, if it can be any useful.

The player LED will blink once when this mapping is activated.

Racing Mapping 1: Back + Y

Racing Mapping 1 is useful for all those racing games that use to accelerate and to brake. These have been mapped to X and A respectively, which should make them much more natural to play. When accelerating and braking at the same time, braking wins. Left Analog can be used to steer but its vertical axis is ignored, in order to avoid accidental accelerating/braking. The D-Pad is fully functional and is handy when moving through menus. Button 1 can be found on Right Shoulder, Right Trigger or Y, while Button 2 is on Left Shoulder, Left Trigger or B.

This mode is probably best suited to games that do not involve shifting gears, as downshifting is usually performed through + Button 1 which is pretty cumbersome to achieve (Y + A).

The player LED will blink twice when this mapping is activated.

Racing Mapping 2: Back + B

Racing Mapping 2 is an alternative mapping for racing games that was inspired by GTA V. It lets you use Trigger Right (or Shoulder Right) to accelerate and Trigger Left (or Shoulder Left) to brake (which means they map to and , respectively). Button 1 is mapped to its natural X position. Steering and the D-Pad work as in Racing Mode 1.

Accidentally, this control scheme was found out to be very comfortable with games that use Button 1 to accelerate and and to shift gears. Since is probably used for braking as well, it has also been mapped to A, while Button 2 has been moved to Y.

The player LED will blink three times when this mapping is activated.

Platform Mapping: Back + A

Platform Mapping is very similar to Standard Mapping, it just makes jumping way easier on a joypad and more natural to all the Mario players out there, by replicating on A. Consequently, Button 2 has been moved to Y.

The player LED will blink four times when this mapping is activated.

Custom Mappings: Back + Shoulder Right/Trigger Right/Shoulder Left/Trigger Left

What if the built-in mappings are not enough? MightyMiggy allows you to make your own! You can have up to four different ones, which are stored internally so that they can be recalled at any time. By default they behave similarly to the Standard Mapping, but they can be customized so that any button produces either the press of a single button or even of a button combo!

The programming procedure is as follows:

  1. Press and hold Back, then press and hold one of Shoulder Right/Trigger Right/ Shoulder Left/Trigger Left until the player LED starts blinking, finally release both buttons. You are now in Programming Mode.
  2. Press the button you want to configure. The player LED will flash quickly a few times.
  3. Press and hold the single button or button combo you want to be assigned to the button you pressed before. At this stage the D-Pad directions have their obvious meaning, while X represents Button 1 and A represents Button 2. The player LED will again flash quickly a few times.
  4. Release the button or combo you were holding.
  5. Repeat steps 2-4 for every button you want to customize.
  6. When you are done, press Back to store the mapping and leave Programming Mode. The player LED will stop blinking and you will be back to Two-Button Joystick Mode.

Note that a mapping you have just programmed is not activated automatically, so you will have to press Back and one of Shoulder Right/Trigger Right/Shoulder Left/Trigger Left (and release them quickly) to switch to it.

The Custom Mappings cannot be configured so that overrides or so that the vertical axis of Left Analog is ignored, still they might be useful here and there. For instance, having Button 1 + on A and Button 1 + on Y makes the Amiga version of Golden Axe much more playable.

Commodore 64 Mode

Button 2 on Commodore 64 usually behaves in the opposite way at the electrical level, with respect to the other buttons. So a tweak can be enabled to invert the behavior of the button, use it if you find that your game of choice always sees it pressed or if it triggers on release rather than on press.

Just hold Back and press Home briefly. The player LED will flash once when this tweak is enabled and twice when it is disabled.

Mouse Mode

In all operating modes, Right Analog on the first connected controller emulates the movements of a mouse. Movement speed is somewhat proportional to how far the stick is moved.

The left and right mouse buttons are mapped to Left Thumb and Right Thumb respectively.

CD32 Controller Mode

When a game supports CD32 joypads, MightyMiggy will automatically switch into this mode, which supports all the 7 buttons of the original CD32 controller.

By default, buttons are mapped as follows:

  • X: Red
  • A: Blue
  • B: Yellow
  • Y: Green
  • Shoulder Left/Trigger Left: L
  • Shoulder Right/Trigger Right: R
  • Home: Home/Pause

If you press Back, the 4 main buttons get "rotated":

  • A: Red
  • B: Blue
  • Y: Yellow
  • X: Green

Both the D-Pad and Left Analog always work as direction buttons.

Getting MightyMiggy firmware

1. Get a pre-compiled firmware

You can grab a precompiled firmware from here (choose latest version):

  • https://github.com/ricardoquesada/bluepad32/releases

And download the bluepad32-mightymiggy.zip. It includes a README with instructions.

2. Or compile it yourself

Read README.md for the ESP-IDF requirements. And choose mightymiggy as the target platform:

# Select MightyMiggy platform:
# Components config -> Bluepad32 -> Target Platform -> MightyMiggy
idf.py menuconfig

# Compile it
idf.py build

Please refer to the general instructions for more information on compiling and flashing.