RJ45 to DB15 Controller Converter for MC Cthulhu/PS360+/Brook Retro Board. VOLUNTEERS NEEDED!!

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • RJ45 to DB15 Controller Converter for MC Cthulhu/PS360+/Brook Retro Board. VOLUNTEERS NEEDED!!

      RJ45 to DB15 Controller Converter for MC Cthulhu/PS360+/Brook Retro Board


      Hello, I wanted to post this project here since it seem right up this forum's alley.

      I have been working on a cable for connecting my MC Cthulhu equipped arcade sticks to my DB15 equipped arcade setup. My original thought was to put together a Sega Saturn controller converter, since that can be built using discrete logic and doesn't require any programming, and then connect it to my MC Cthulhu with a Saturn to RJ45 cable. What I didn't like about this method was that it required 7 ICs to demultiplex 2 controllers, which is kind of ridiculous. Also Saturn controller ports of decent quality are not in production so even though the discrete method works, it still pretty much sucks.



      Recently I returned to this project with some fresh ideas. I switched from discrete logic to an ATMEGA328p and wrote up some Sega Saturn Demultiplexer code for it. This worked great and was much more reasonable to build, but I still didn't have a good source for Saturn controller ports. A couple of days ago I decided to nix the controller port all together and just wire an RJ45 cable directly to my adapter PCB. Since I wasn't using Saturn ports anymore I decided to switch to a different controller protocol that makes use of the select button so I could use the coin pin on the DB15 connector. I wrote code for the SNES protocol, but ran into some bugs that I still haven't sorted out. I also wrote code for the Playstation controller protocol using an existing arduino library that works beautifully. I think that is the protocol I'm going to stick with for the RJ45 adapter.

      Here is the prototype PCB, It's small enough to fit inside of the DB15 backshell for a very clean look.



      I have a newer PCB, which incorporates the additional wiring that you see on my prototype, that I have posted on OSHPark




      Currently I have 3 different flavors of firmware you can run on the board.
      1. Sega Saturn mode: Works great, but can't make use of the Select button so you have to use the tact switch on the adapter PCB to add coins.
      2. SNES mode: Works, but has a bug where if L,R,X and A are simultaneously pressed all outputs are pressed. I have no clue why this happens. I hope to figure it out, but for now the bug persists.
      3. Playstation mode: Currently this is the best firmware. I haven't found any bugs, the select button is wired as Coin on the DB15 connector, and input lag is less than 1 frame compared to a directly wired switch.
      Pinout Info:
      • The DB15 end of this board follows the same pinout as Undamned uses for the USB to DB15 adapter.
      • The cable end has each pad labelled following the MC Cthulhu naming convention. The pad layout on the board also matches the Sega Saturn connector layout since that's what the board was originally designed for.


      Future plans.
      • I'd like to add switchable button maps for NEO-GEO or normal 6 button operation. Preferably these would be toggled by holding certain button combinations.
      • A more ambitious feature I'd like to add is fully customizable on the fly button remapping, but that is probably going to take some time to figure out.
      I have tested this with the MC Cthulhu and got great results, however I don't have a Brook Retro board or a PS360+, If you have one of these boards and would like to volunteer to do some testing, PM me and we can see about sending a prototype your way.

      Well, that's my project so far, thanks for reading, any feedback would be appreciated.

      The post was edited 1 time, last by Arthrimus ().

    • Seems like a neat idea with the RJ45. I also don't like the Saturn ports found in the aftermarket Saturn extension cables, they don't provide enough support and grip. My only (small) criticism is about your code - it will be safer to configure the outputs as open drain. Another good practice in AVR programming is setting the output ports pins all at once if possible - in case of these adapters it is possible.

      To give you the idea (I used parts of your PSX code):

      C Source Code

      1. ouput = 0;
      2. if (data & psxDown)
      3. ouput |= 1;
      4. if (data & psxLeft)
      5. ouput |= 2;
      6. if (data & psxRight)
      7. ouput |= 4;
      8. DDRA = output;

      The post was edited 1 time, last by RGB ().

    • Thanks for the advice. I will look into this and try to figure out how to make this work in my code. I'm not very experienced with programming AVRs so I was sure that my code was pretty inefficient.

      On a separate note, I have already managed to implement the alternate NEO-GEO button map in the current PSX code on my github. You can switch between modes by pressing Start + Select + X simultaneously. When it's in NEO-GEO mode it remaps K1 as P1, P1 as P2, P2 as P3 and P3 as K1 which should make more sense for playing four button NEO-GEO games on a six button stick.

      The post was edited 1 time, last by Arthrimus ().

    • RGB wrote:

      Seems like a neat idea with the RJ45. I also don't like the Saturn ports found in the aftermarket Saturn extension cables, they don't provide enough support and grip. My only (small) criticism is about your code - it will be safer to configure the outputs as open drain. Another good practice in AVR programming is setting the output ports pins all at once if possible - in case of these adapters it is possible.

      To give you the idea (I used parts of your PSX code)
      Sorry to bump this thread, but I have done a major rewrite of the PSX to DB15 code which now implements the improvements suggested by RGB. It works great and should also be safer to use this way. I learned a lot about AVR programming from this also so I am grateful to RGB for setting me on the right path.

      With that said I am still looking for volunteers that would like to test one of these devices with their own setup. I need people who have either a PS360+ or Brook Retro board in their arcade stick who can test one of these adapters on their supergun or NEO-GEO hardware. If you qualify and are interested please let me know.