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.