Genesis 2 / Megadrive 2 with integrated HDMI and Wifi

Ever wanted your beloved console to have native HDMI output? Here’s how.

I recently discovered an awesome mod for the GBS-8200 upscaler boards. Gbscontrol is an alternative firmware for Tvia Trueview5725 based upscalers / video converter boards.

Github page: https://github.com/ramapcsx2/gbs-control
GBS-C wiki: https://github.com/ramapcsx2/gbs-control/wiki/Build-the-Hardware

It basically uses ESP8266 microcontroller to command the Trueview5725 upscaler chip much better than the original firmware. Given the ESP has also Wi-Fi capabilities it allows the firmware to have native Web GUI from which you control every setting of the upscaler. (Web GUI)

I had a look at some online lag-test videos and it’s just amazing. Only 1 frame of lag is virtually nothing for me.

OSSC comparison:

So I decided to take it one step further, add HDMI and integrate it into my original Megadrive 2 console. In this tutorial I will explain how I did this. I will not go into the deepest details, but it’s expected that you have above average soldering skills, electronics knowledge and modding skills. Warning – I’m not responsible for any damage you might do to your console performing this mod. Please take this information as is and be careful.

Main parts you need:

  • MINI VGA2HDMI convertor (4$ – Aliexpress) (just have in mind that there’s different revisions of the board inside and you might receive one with different board. It’s just a matter of luck I’m afraid… Mine had a black USB power cable inside.)

  • ESP-12E (ESP8266) microcontroller (2$ – Aliexpress)

  • USB to TTL interface – to be able to program the barebone ESP8266 (1$ – Aliexpress)

  • XL4005 Step-Down DC-DC convertor (1$ – Aliexpress)

  • Soldering iron and a lot of patience!

So let’s begin. First thing to do is mod the GBS-8200 with the new GBS-C firmware using the ESP8266 and test it with our console just to verify it’s working fine.

Wire the ESP-12 to the USB to TTL interface using this schematic:

Wired this way the ESP-12E will be in programming mode and you will be able to upload the Arduino sketch.

  1. Setup Arduino IDE found at https://www.arduino.cc/en/Main/Software
  2. In the Arduino IDE open the preferences dialog and enter the following URL as “Additional Boards Manger URL: http://arduino.esp8266.com/stable/package_esp8266com_index.json Preferences
  3.  Go to “Tools” > “Board:” > “Boards Manager …”, search for “esp8266” and install “esp8266 by ESP8266 Community”, version 2.6.3 (or newer):Preferences
  4. Now go to “Tools” > “Board:” and choose “NodeMCU 1.0 (ESP-12E Module)” board.
    Set CPU frequency to 160 MHz and Flash size to “4MB (FS:1MB OTA:~1019KB)”.
    (Don’t skip this step, or you won’t be able to save custom configurations later.)
    Set the “IwIP Variant” to “v2 Lower Memory”. Make sure the settings are as below:
  5. Plug your board into a free USB port on your PC and select the detected COM port in the Arduino IDE.
  6. Download these 2 libraries from Github (green “Clone or download” button) and extract to Arduino libraries folder.
    (On Windows: “Documents\Arduino\libraries” or full path: “C:\Users\XXX\Documents\Arduino\libraries”)
    https://github.com/me-no-dev/ESPAsyncTCP
    https://github.com/me-no-dev/ESPAsyncWebServer
    Libraries
  7. Go to “Sketch” > “Include Library” > “Manage Libraries …” and install the following libraries by searching for them and installing:
    ESP8266-ping by @bluemurder (used to debug WiFi connection issues, have the ESP8266 ping your router)
    https://github.com/bluemurder/ESP8266-ping
  8. Download the current master.zip for GBS-Control (https://github.com/ramapcsx2/gbs-control/archive/master.zip)
  9. Extract the zip archive and rename the folder to “gbs-control” (removing “-master”). Start the Arduino IDE by opening gbs-control.ino
  10. You should be able to build the software by choosing “Sketch” > “Verify / Compile” (or clicking the tick mark in the tool bar). With the ESP8266 board connected to your computer, and the correct COM port selected, you can now upload the software. Do this via “Sketch” > “Upload” (hit “Ctrl + U” or by clicking the right arrow in the tool bar). (This could take a while for the first compilation.)
  11. After successful sketch upload you should remove all wires and bridges soldered to the ESP-12E. Solder 10kohm resistor across CHIP_EN pin and VCC. Solder only GND and VCC wires so you can power it on. Connect only GND and VCC wires to the USB to TTL interface (WARNING – use the 3.3V VCC on the USB interface!). SCL, SDA and MISO will be connected later.
  12. Plug the USB back to a computer port or power supply. The ESP led should power on.
  13. Gbscontrol offers several options, all via an interactive web page that is served from the ESP8266 via WiFi.
    Here is how you access this control panel in the default AP (Access Point) mode:

    The control panel should load.

    • Click on the System tab and then on “Connect to WiFi Network”
    • Enter your home network SSID (you can scan for it) + password
    • Click “Connect”
    • The ESP8266 restarts and will be reachable via:

    Note: The ESP8266 remembers this network, so it will always try to connect to this network first. If it can’t connect, it will revert to AP mode.

  14. Web GUI looks like this (https://github.com/ramapcsx2/gbs-control/wiki/Web-GUI)
  15. If all is good and you see the Web GUI we can proceed with connecting the ESP to the GBS-8200 board. If you can’t ping the ESP or you can’t open the Web GUI you should not proceed!  Go back and fix it. Try re-uploading the sketch again if necessary.
  16. Disconnect the USB from the port.
  17. Important! Remove the 3 pots on the GBS board and jumper as described here: https://github.com/ramapcsx2/gbs-control/wiki/RGB-Potentiometers
  18. Remove C11 on the GBS board and replace with 22uF (6.3V to 16V) electrolytic cap. This will improve picture quality and lower the noise. (https://github.com/ramapcsx2/gbs-control/wiki/GBS-8200-Variants
  19. Wire the ESP to the GBS-8200 as shown below. Don’t forget to close the jumper! Referenced from here: https://github.com/ramapcsx2/gbs-control/wiki/Build-the-Hardware
  20. Solder 100 ohm resistor across sync and ground for RGBs input on the GBS-8200. (left white connector next to the VGA input).
  21. Take the SCART cable for the Genesis 2 and connect R, G, B, C-Sync and GND from the SCART side (after the 220uF caps, pins 7,11,15,20 and any GND pin) to the GBS-8200 RGB connector. Use this schematic for a cable if you don’t have one:
  22. Connect 5-12V (2A) DC power supply to the GBS-8200 board. Next connect a VGA monitor to the output if the GBS board. Conect the USB to TTL interface to a port to power the ESP with 3.3V.
  23. You should now be able to see the console video on the monitor. Go to the GBS-C web GUI and select the 1920×1080 profile. You can play with the settings to adjust the perfect picture.
  24. If you’re happy you can now test the VGA2HDMI convertor. Connect the VGA output from the GBS board to the VGA input on the convertor. Power the box using the “mini USB” to USB cable (connect it to USB port or power supply). Connect the HDMI to a TV or a monitor. You should be able to see the same resolution video as via VGA. Screen position might be slightly off, but you can adjust again via the GBS-C Web GUI and save it as separate preset.
  25. I’m modding a PAL console so I use 1080p 50Hz. Here’s my settings on the GBS-C (you can list them in System -> List Options):/preset_pal.1 1989
    /preset_pal.2 1992
    /preset_pal.3 1992
    /preset_pal.4 1992
    /preferencesv2.txt 18
    preset preference = 2
    frame time lock = 1
    preset slot = 4
    frame lock method = 0
    auto gain = 0
    scanlines = 0
    component output = 0
    deinterlacer mode = 1
    line filter = 0
    peaking = 1
    preferScalingRgbhv = 1
    6-tap = 1
    pal force60 = 0
    matched = 1
    step response = 1

Once you’re done with testing and you’re really sure you have everything ready you can proceed with hard-modding the console.

  1. General schematic of the solution. We will wire everything as shown below. It will be referenced many times further. I want to start with it so you know what you’re up to.
  2. First disassemble the VGA2HDMI box and desolder the components squared in red (mini USB, VGA and audio connectors) You will end up with a clear board without anything sticking up. The result should be as below:
  3. Desolder the crystal oscillator (pointed with purple arrow) and solder it on the bottom side of the board:
  4. Cut a bit of the HDMI pcb on the top left side as below. Otherwise it can’t fit in place. Place the board on the bottom back of the Genesis 2 box as shown below and mark around the HDMI connector for cutting:
  5. Drill two holes with 4.5mm drill bit just in the center of the HDMI markings and file it further until you have perfect placement. Be very patient and careful, there’s no going back if you screw this up:

    I had to cut square in the plastic on the bottom below the HDMI hole because the original case is rounded there. If you don’t do this the board can’t lay flat and will cause force on the HDMI connector.
    Once you’re done you should have perfectly leveled pcb on the inside and HDMI connector should be tight fit on the back.
  6. Cut a square on the Genesis main board where the HDMI connector is:
  7. Solder wires to the HDMI board as shown below. Secure with hot silicone.
  8. Cut the bottom metal plate of the genesis as in the picture below. Place the 3D printed mount on place and put the HDMI board on top. It should go in tight. Route the wires as shown and stick some capton tape on top so it’s insulated from the Genesis main board:
  9. Now we have to solder the needed wires to/from the Genesis 2 main board bottom (back video connector). Solder the 5V, GND, R, L and GND coming from the HDMI board. Solder additional long wires for the R, G, B, C-Sync and GND coming from the Genesis 2 main board. Secure the wires with hot silicone. Use the general schematic for reference.
  10. We are done with the bottom half. The Genesis 2 main board should be able to sit easily on top of the HDMI board without any force. If there’s any force pushing it up take a look again at the wiring and silicone, something might be too high and pushing. Be careful not to squish any wires.
  11. Now we have to prepare the GBS-board for placement. Since it’s too thick we need to desolder some parts (VGA connectors, pots, buttons, componend RCA connector)(squared in red).
    – Desoldering is the best option, but if you can’t do it you can try with low profile cutters, just be careful not to damage any traces.
  12. Next we need to cut some holes in order to be able to push the RESET button on the console. Be careful not to cut any of the traces on the bottom. Board should look like this:
    Note: Ignore the sync stripper LM1881 on the GBS right side of the picture. I removed it at the end of this mod because it was causing some distortions.
  13. Now stick some capton tape on the bottom like this to insulate it:
  14. Next place the GBS board on top of the Genesis 2 main board, make some room by bending the caps on the main board lower. Should look like this at the end:
  15. Place the top plastic cover of the Genesis 2 to ensure it can fit without a problem. If not – clear more room or move the GBS board.
  16. Once ready secure it with hot silicone on these spots:

    Test again the top plastic Genesis 2 cover.
  17. Route the video wires coming from the back video connector on the left side. Run them via ferrite bead such as this one. If you don’t have one you can cut a VGA cable and strip the two ferrite beads from it.

    This is important in order to clear any high frequency noise in video. Run the wires like this and solder them to the GBS board following the general schematic. Don’t forget to wire the R, G and B via 75 ohm resistors and 220uF caps. 100 ohm resistor between GND and C-Sync should also be in place!
  18. Next solder the wires from the VGA output on the GBS board going to the VGA2HDMI board. Again, run them via ferrite bead if available. Route them as shown. Follow the general schematic.
  19. Now we need to prepare the power supply for the ESP8266. Since it needs 3.3V DC we will use a step-down DC-DC convertor (XL4005). Insulate the bottom with capton tape:
  20. Glue it with hot silicone on the left side of the Genesis 2 as shown:
  21. Now solder the input VCC and GND to the 9V on the Genesis 2 main board. We will use the + on the shown capacitor and any GND point on the mainboard. Don’t solder the output GND and VCC on the XL4005 board yet!

  22. Plug the Genesis 2 and power it on. Measure the input voltage on the XL4005, should be anything around 9V DC. Now measure the output voltage and adjust the pot so you get down to 3.3V DC:
  23. Once ready power off the console and unplug it. Solder some long wires to the output VCC and GND on the XL4005 board. Those will go to the ESP8266 later.
  24. Solder second set of VCC and GND wires to the input VCC and GND of the XL4005 where we have 9V DC. Route them to the input connector on the GBS board and solder them according the general schematic. Run them over a ferrite bead if available.
  25. Next glue the ESP8266 with hot silicone on the place shown below. Solder all wires according to the general schematic. Solder the VCC and GND coming from the output of the XL4005. (3.3V DC)
  26. Everything should look like this at the end:
  27. Now is the time of truth. Plug the console power and HDMI cables. Power it on and if everything is fine you should be able to see the same video you tested before you started to mod the console. If it’s ok – Congratulations! If not – go back and verify every step. If there’s no video solder bare VGA cable to the VGA output of the GBS board and plug to VGA monitor etc.
  28. Now that everything is fine we can do one last thing: solder the power LED to the top case. We don’t want to lose that functionality, right? Cut the white plastic as shown below. Hot-glue a LED with a color of choise and solder long wires via 220 ohm resistor. If you’re down to this point you should know how to wire a led.
  29. Solder the wires to +5V and GND on the main board shown below:
  30. Put some more hot sillicone around the HDMI connector to secure it better while you still haven’t closed the console.
  31. Now close the top cover and test the console again. If everything is fine you can assemble it back. End result:

Congratulations! You’ve gone through all and now you have fully functional console with HDMI and Wi-Fi capabilities. The beauty is that you can still use the regular video cable for composite or RGB SCART connections, even in parallel with the HDMI.

One more thing. Troubleshooting this thing is not easy, but not impossible. At some point I was about to abandon the project as it was a nightmare to continue (video noise, power problems etc.). This guide is the result of all troubleshooting I did. I hope you enjoyed it.

I would like to thank the author of GBS-Control Robert Neumann (aka ramapcsx2) and all contributors (dooklink, mybook4, Ian Stedman and others) for the awesome work!

I also want to thank mmmonkey.co.uk for the awesome retro-modding guides where I referenced some info.