Sega Mega Drive (Genesis) [RetroPie series]
Here are my Sega Mega Drive specific notes of my RetroPie system. Mega Drive (Genesis at the US) emulator runs on RetroArch, so you may want to check out common RetroArch stuff I posted separately.
- RetroPie Megadrive wiki
- lr-picodrive
- TODO: Update/enable lr-genesis-plus-gx
Games
I do not recommend downloading old software or other assets using these links.
- Game manuals
- RetroPie
- I prefer European releases (and be happy with a US release, if European not available or was not ever released here)
- Extract .zip → .md to
~/RetroPie/roms/megadrive/
Controllers
UPDATE: I’m now connecting genuine Mega Drive controllers to Pi via Bliss-Box 4-Play and updated this section with the new configuration.
Using Sega Mega Drive controller via Bliss-Box 4-Play
The configuration at /opt/retropie/configs/megadrive/retroarch.cfg
:
# Settings made here will only override settings in the global retroarch.cfg
# if placed above the #include line
input_remapping_directory = "/opt/retropie/configs/megadrive/"
input_joypad_driver = "linuxraw"
input_player1_joypad_index = 0
input_player2_joypad_index = 1
# Player 1: Mega Drive Controller on Bliss-Box 4-Play port 1
input_player1_y_btn = 1 # A
input_player1_b_btn = 2 # B
input_player1_a_btn = 10 # C
input_player1_l_btn = 3 # X
input_player1_x_btn = 4 # Y
input_player1_r_btn = 9 # Z
input_player1_start_btn = 6 # Start
input_player1_select_btn = 5 # Mode
input_player1_up_axis = -1 # D-Pad up
input_player1_down_axis = +1 # D-Pad down
input_player1_left_axis = -0 # D-Pad left
input_player1_right_axis = +0 # D-Pad right
# Player 2: Mega Drive Controller on Bliss-Box 4-Play port 2
input_player2_y_btn = 1 # A
input_player2_b_btn = 2 # B
input_player2_a_btn = 10 # C
input_player2_l_btn = 3 # X
input_player2_x_btn = 4 # Y
input_player2_r_btn = 9 # Z
input_player2_start_btn = 6 # Start
input_player2_select_btn = 5 # Mode
input_player2_up_axis = -1 # D-Pad up
input_player2_down_axis = +1 # D-Pad down
input_player2_left_axis = -0 # D-Pad left
input_player2_right_axis = +0 # D-Pad right
# Hot keys etc.
input_enable_hotkey_btn = 5
input_exit_emulator_btn = 6
#include "/opt/retropie/configs/all/retroarch.cfg"
For games supporting 6-buttons (e.g. Mortal Kombat) I add a game-specific configuration. The configuration e.g. at /home/pi/RetroPie/roms/megadrive/Mortal Kombat 2.md.cfg
:
input_libretro_device_p1 = "513" # Will be recognized as 6-button Mega Drive pad
input_libretro_device_p2 = "513"
For games supporting 4 players (e.g. NHL ‘94) I use PlayStation controllers for players 3 and 4 and a game-specific configuration is again needed. The configuration e.g. at /home/pi/RetroPie/roms/megadrive/NHL '94.md.cfg
:
# NOTE! This config seems not to work yet correctly
input_player3_joypad_index = 2
input_player4_joypad_index = 3
input_libretro_device_p2 = "1025" # This SHOULD make it 'EA 4 way play',
# but causes "direction up stuck"
# Player 3: SNES Controller on Bliss-Box 4-Play port 3
input_player3_a_btn = 4
input_player3_b_btn = 2
input_player3_x_btn = 3
input_player3_y_btn = 1
input_player3_l_btn = 7
input_player3_r_btn = 8
input_player3_select_btn = 5
input_player3_start_btn = 6
input_player3_up_axis = -1
input_player3_down_axis = +1
input_player3_left_axis = -0
input_player3_right_axis = +0
# Player 4: SNES Controller on Bliss-Box 4-Play port 4
input_player4_a_btn = 4
input_player4_b_btn = 2
input_player4_x_btn = 3
input_player4_y_btn = 1
input_player4_l_btn = 7
input_player4_r_btn = 8
input_player4_select_btn = 5
input_player4_start_btn = 6
input_player4_up_axis = -1
input_player4_down_axis = +1
input_player4_left_axis = -0
input_player4_right_axis = +0
Using Mega Drive controllers via Retro-Bit adapter
I have the pair of 6-button Megadrive controllers connected to Pi.
For games supporting more than two simultaneous players, Playstation 3 controllers could be used as controller 3 and 4 (unfortunately four controllers support does not yet work in my system).
PS3 | Mega Drive |
---|---|
The support for six button controller needs some work:
- Hints from Libretro PicoDrive guide
- Testing e.g. with
jstest /dev/input/js0
sudo nano /opt/retropie/configs/all/retroarch-core-options.cfg
picodrive_input1 = “6 button pad” # from “3 button pad” picodrive_input2 = “6 button pad”
- Test with 6-button game, such as Mortal Combat II
- NOTE! You need to choose 6-button mode from game config
- Mortal Combat II moves list
Support for four controllers does not yet work for me. It should be possible, though.
- Ideas:
- Might require lr-genesis-plus-gx as an emulator, and possible RetroPie 3.X so that input_libretro_device_p2 can be enabled per game
- Test with game supporting four controllers, such as NHL 94
# In theory this should support 4 controllers, but does not currently
# work (might require lr-genesis-plus-gx) and might confuse "normal" games.
#
input_libretro_device_p2 = "1025" # Support 4 controllers...
The configuration at `/opt/retropie/configs/megadrive/retroarch.cfg`:
input_player1_joypad_index = 1 # RetroBitGenesisUSB-controller 1
input_player2_joypad_index = 1 # RetroBitGenesisUSB-controller 2
input_player3_joypad_index = 2 # PS3-controller 1
input_player4_joypad_index = 3 # PS3-controller 2
#
# RetroBitGenesisUSB
# ==================
#
# Joypad 1
# --------
#
# X = 3 Y = 4 Z = 5
# A = 0 B = 1 C = 2
#
# START = 6
# MODE = 7
#
#
# U = -1
# L = -0 R = +0
# D = +1
#
#
# Joypad 2
# --------
#
# X = 11 Y = 12 Z = 13
# A = 8 B = 9 C = 10
#
# START = 14
# MODE = 15
#
#
# U = -3
# L = -2 R = +2
# D = +3
#
# Player 1: RetroBitGenesisUSB-controller 1
input_player1_y_btn = 0 # A
input_player1_b_btn = 1 # B
input_player1_a_btn = 2 # C
input_player1_l_btn = 3 # X
input_player1_x_btn = 4 # Y
input_player1_r_btn = 5 # Z
input_player1_start_btn = 6
input_player1_select_btn = 7 # MODE
input_player1_left_axis = -0
input_player1_right_axis = +0
input_player1_up_axis = -1
input_player1_down_axis = +1
# Player 2: RetroBitGenesisUSB-controller 2
input_player2_y_btn = 8 # A
input_player2_b_btn = 9 # B
input_player2_a_btn = 10 # C
input_player2_l_btn = 11 # X
input_player2_x_btn = 12 # Y
input_player2_r_btn = 13 # Z
input_player2_start_btn = 14
input_player2_select_btn = 15 # MODE
input_player2_left_axis = -2
input_player2_right_axis = +2
input_player2_up_axis = -3
input_player2_down_axis = +3
# Player 3: PS3-controller 1
input_player3_y_btn = 15 # A
input_player3_b_btn = 14 # B
input_player3_a_btn = 13 # C
input_player3_l_btn = 10 # X
input_player3_x_btn = 1 # Y
input_player3_r_btn = 11 # Z
input_player3_start_btn = 3
input_player3_select_btn = 0 # MODE
input_player3_up_btn = 4
input_player3_down_btn = 6
input_player3_left_btn = 7
input_player3_right_btn = 5
# Player 4: PS3-controller 2
input_player4_y_btn = 15 # A
input_player4_b_btn = 14 # B
input_player4_a_btn = 13 # C
input_player4_l_btn = 10 # X
input_player4_x_btn = 1 # Y
input_player4_r_btn = 11 # Z
input_player4_start_btn = 3
input_player4_select_btn = 0 # MODE
input_player4_up_btn = 4
input_player4_down_btn = 6
input_player4_left_btn = 7
input_player4_right_btn = 5
# Hotkeys
#
#input_enable_hotkey_btn = 7
#input_exit_emulator_btn = 6
#input_save_state_btn = 5