In-Game Reset mod with region switching feature (language and 50/60 Hz framerate) for SEGA Megadrive/Genesis. Based on Arduino compatible boards. Arduino Pro Mini (ATmega328 or ATmega168) is recommended.
- In-game reset using player one controller:
- START + A + B + C - Soft Reset
- START + A + B + C + DOWN - Hard Reset (if enabled, read below)
- Region switching using player one controller:
- START + B + LEFT - Switch to North American region (Blue)
- START + B + RIGHT - Switch to European region (Red)
- START + B + UP - Switch to Japanese region (Purple)
- START + B + DOWN - Switch to Asian region (Green)
- Only language switching mode (if configured, read below):
- START + B + LEFT - Switch to English (Red)
- START + B + RIGHT - Switch to Japanese (Green)
- Only framerate switching mode (if configured, read below):
- START + B + UP - Switch to 60 Hz (Red)
- START + B + DOWN - Switch to 50 Hz (Green)
- Region switching by keep pushed RESET button to cycle through regions/modes.
- Last used mode is saving and reused on next power on.
- Supported only RGB led.
- Configurable mode switching - only language switching or only 50/60 Hz framerate switching (read below).
Source code can be used by Arduino IDE or can be compiled using avr-toolchain.
Program behavior can be configured by defines that can be found in main.c
file:
ONLY_LANGUAGE_SWITCH
- Use only language switchingONLY_FREQUENCY_SWITCH
- Use only framerate switchingHARD_RESET_ENABLED
- Enable Hard Reset on separate pin on Arduino boardRGB_LED_ENABLED
- Using RGB LEDRGB_LED_ANODE
- Using RGB LED with common ANODE, else with common CATHODEPOLL_BY_MCU_ENABLED
- If no pad polling by Megadrive, MCU will poll pad itself (useful if console is halted)ATMEGA_CLONE_USED
- Using cloned ATmega MCU (eg LGT328P), it's adding few NOP's to add some delay before reading buttons state in interrupt handler
Note: It's possible need to add few NOP's manually for MCU you using.
Here is a simplest connection pinout Arduino board to Megadrive board (without illustration):
Arduino | Megadrive board | |
---|---|---|
5V | <- | Pad Port Pin 5 or another +5V source point (VCC) |
GND | <- | GND |
(PD2) D2 | <- | Pad Port Pin 7 (TH, SEL) |
(PD3) D3 | <- | Reset Button Pin/Leg (Reset Input) |
(PD4) D4 | <- | Pad Port Pin 6 (TL, DAT4) |
(PD5) D5 | <- | Pad Port Pin 9 (TR, DAT5) |
(PD6) D6 | -> | Reset Button Point on Board (Soft Reset Output) |
(PD7) D7 | -> | Cart Slot Pin B2 (#MRES, Hard Reset) optional |
(PB0) D8 | <- | Pad Port Pin 1 (DAT0) |
(PB1) D9 | <- | Pad Port Pin 2 (DAT1) |
(PB2) D10 | <- | Pad Port Pin 3 (DAT2) |
(PB3) D11 | <- | Pad Port Pin 4 (DAT3) |
(PB4) D12 | -- | X |
(PC0) A0 | -> | LED Blue optional |
(PC1) A1 | -> | LED Green optional |
(PC2) A2 | -> | LED Red optional |
(PC3) A3 | -> | JP1/2 (Language) and to MultiBIOS Pin 39 |
(PC4) A4 | -> | JP3/4 (Video Mode) and to MultiBIOS Pin 38 |
(PC5) A5 | -- | X |
Pictures will be added soon.