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 with the Retro Board, doesn't support the select button natively, but does support select via button combination (START + P3)
      2. SNES mode: Works on Mc Cthulhu only, 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: Works on Mc Cthulhu only. Has no bugs to speak of but only works on the MC Cthulhu, not the Retro Board or PS360+. This may change in the future.
      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. Done!
      • 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.
      plus ça change,
      plus c'est la même chose,
      The more that things change,
      The more they stay the same.- RUSH- Circumstances

      The post was edited 3 times, 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.
      plus ça change,
      plus c'est la même chose,
      The more that things change,
      The more they stay the same.- RUSH- Circumstances

      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.
      plus ça change,
      plus c'est la même chose,
      The more that things change,
      The more they stay the same.- RUSH- Circumstances
    • The word is in from testers, and I have now confirmed it myself. Brook Retro Boards and PS360+ boards DO NOT LIKE my Playstation or SNES code. They must use a much more strict interpretation of the controller protocols than the MC Cthulhu. I am working on the issue, but at this point I haven't made any real headway. On the bright side my Saturn code works beautifully with the Retro Board so I went ahead and updated it with all of the safety improvements and extra features that I had already added to the PS1 code.

      Changes in the Saturn code:

      1. All output pins are configured as open drain for safety.
      2. Switchable buttonmaps for Six Button and Neo-Geo have been added.
      3. Select/Coin can now be pressed via button combination (START + P3)
      4. The code is much better organized and well documented now.


      To switch between Six button mode and Neo-Geo mode you must press the corresponding button combination.

      Six Button mode = START + K1
      Neo-Geo mode = START + K2

      Six Button mode is the default starting configuration. Buttonmaps can be switched on the fly.

      The Github link in the first post has been updated with the latest Saturn code.
      plus ça change,
      plus c'est la même chose,
      The more that things change,
      The more they stay the same.- RUSH- Circumstances

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

    • Damn I would have tested had I found out earlier. My stick is running a dual UFB and Retro Board setup. I also have a DB15 port on it (running wires from the UFB's terminal post to a DB15 breakout) but I have it wired up for Neo Geo use. I'm just about to move so my supergun and arcade gear is in storage now. Once I know my head from ass in Japan I'll probably order a supergun from @RGB : )
      Images
      • IMG_7193.jpg

        80.13 kB, 640×480, viewed 8 times
      • IMG_7194.JPG

        69.32 kB, 480×640, viewed 9 times
      • IMG_7195.JPG

        82.88 kB, 640×480, viewed 13 times
      • IMG_7196.jpg

        130.58 kB, 640×480, viewed 14 times