Using PS1/PC Densha de Go! controller SLPH-00051/TCPP-20001/DGOC-44U on PS4/Switch Densha de Go!!
Items needed
A Densha de Go! controller (PS1 original version SLPH-00051, the one-handle version TCPP-20001, or the USB PC version DGOC-44U)
A Titan Two
A few micro USB cables
A PlayStation 4 with controller/A Nintendo Switch with a USB controller
A PlayStation 4/Nintendo Switch Densha de GO!! game
[Required for SLPH-00051 and TCPP-20001 only]:
Either
- Arduino Leonardo (or equivalent). Note that it has to have at least one 3.3V power output
- 6 male-to-female jumper cables
or
- a Mayflash SS/N64/PS2 Controller Adapter for PC USB (which has issue setting P0 and P4 correctly if the player switches between these two states quickly)
Adding a USB interface for the PS1 Densha de Go! controller
Arduino approach
Cabling
Using the jumper cable, connect the Densha de Go! controller with the Arduino Leonardo.
PlayStation 1 controller pin numbers
---------------------
\ 1 2 3 4 5 6 7 8 9 /
-------------------
Connection to Arduino Leonardo
* PlayStation 1 controller pin 1 (DATA) --> Arduino Leonardo digital port 12
* PlayStation 1 controller pin 2 (CMD) --> Arduino Leonardo digital port 11
* PlayStation 1 controller pin 4 (GND) --> Arduino Leonardo port GND
* PlayStation 1 controller pin 5 (VCC) --> Arduino Leonardo port 3.3V
* PlayStation 1 controller pin 6 (ATT) --> Arduino Leonardo digital port 5
* PlayStation 1 controller pin 7 (CLK) --> Arduino Leonardo digital port 4
Set up Arduino IDE
Install the IDE is available at https://www.arduino.cc/en/Main/Software.
Note that you may need to fix the avrdude install in the Arduino IDE. To do this, download its latest version at its official site https://www.nongnu.org/avrdude/. Replace arduino-1.8.6\hardware\tools\avr\bin\avrdude.exe and arduino-1.8.6\hardware\tools\avr\etc\avrdude.conf with the ones that you find in the download.
Download and install the following Arduino libraries. They are in the form of zip files.
- PsxLibrary: https://playground.arduino.cc/Main/PSXLibrary/
- Arduino Joystick Library: https://github.com/MHeironimus/ArduinoJoystickLibrary
Program the Arduino Leonardo
Mayflash approach
Set up Titan Two to convert the signals of the Densha de Go! controller to the ones that the game expects
Create two gpc files
- If using Arduino
- https://github.com/tylau0/DenGo/blob/main/DenshaDeGoPS1ViaArduinoTypical.gpc
- https://github.com/tylau0/DenGo/blob/main/DenshaDeGoPS1ViaArduino103.gpc
- If using Mayflash
- https://github.com/tylau0/DenGo/blob/main/DenshaDeGoPS1ViaMayflashTypical.gpc
- https://github.com/tylau0/DenGo/blob/main/DenshaDeGoPS1ViaMayflash103.gpc
- If using DGOC-44U
Install Gtuner IV available at https://www.consoletuner.com/downloads/
Start Gtuner IV.
Connect the Arduino Leonardo to Titan Two USB port Input A via a micro-USB cable.
Use a micro-USB cable to connect the Titan Two PROG port to a USB port of your computer.
From the main menu, select View. Make sure "Device Monitor", "Device memory slots" and "Device Configuration" are checked.
At bottom right, select the "Device Configuration" tab. Under "Device Options", check "Disable memory slot selection using the controller". Then select the "Device Memory Slots" tab. Drag the gpc script file you create at the beginning of this section to a memory slot. Right click on the loaded memory slot and select "Load memory slot".
Configure the game to use the controller
In the game options, make sure you configure the game to do standard levels (not simplified levels) for the accelerator and brake, and require the player to hold his analogue stick push to persist the acceleration and brake.
Use procedure
Start the game without connecting the Titan Two.
When you are in the game, first connect the Arduino Leonardo to Titan Two USB port Input A via a micro-USB cable. Then use another micro-USB cable to connect a PS4 controller to Titan Two Input B port. Finally use a micro-USB cable to connect Titan Two OUTPUT port to a USB port of your PS4 console.
Use the UP and DOWN button of Titan Two to select the gpc script that we just upload. Use the *Typical.gpc version typically, except when you are driving the 103 series with which you should choose the *103.gpc one.
Control mapping
Accelerator and brake - trivial
SELECT -> Triangle
A -> Square
B -> Cross
C -> Circle
Extra
You could add a foot pedal to horn and an ultrasound sensor for detecting finger pointing confirmation.
- Set up a foot pedal on-off circuit which outputs 5V to pin 6 when the pedal is NOT pressed, and 0V when the pedal is pressed.
- Connect the trigger pin of an Arduino ultrasound sensor to pin 2 of the Arduino, and the echo pin to pin 3. Connect the 5V and GND pins of the sensor appropriately as well.
Circuit diagram for the pedal connection |
- #define ultrasoundTriggerPin A2
- #define ultrasoundEchoPin A3
- #define dataPin 12
- #define cmndPin 11
- #define attPin 10
- #define clockPin 13
- #define pedalPin SCL
Hi, I'm the author of PsxNewLib. I'm curious to know why you took an example from my library and adapted it to PS2X instead of using my library as a whole. I guess that's because it doesn't work, but then I'd be happy to collaborate in order to get this controller fully supported in PsxNewLib out of the box. If you are interested, please open an issue on the GitHub page detailing what needs to be changed.
ReplyDeleteHi SukkoPera, thanks for writing to me. At the beginning I used your PsxNewLib and example and it did work with PS1 train controller original version SLPH-00051. Some time later I tried the same code the one-handle version TCPP-20001 but the code didn't work in this case. That was why I switched my code to use the PSXLib which worked on both controller. I didn't look into the root cause at that time. When I have time, I could revisit the issue and let you know my finding.
DeleteHi there, I saw your video over youtube and I was wondering if the cronusmax will work on there too or just the titan two? I would like to try that but I am yet to buy a USB converter. Also, is building an adapter (with arduino) better than buying one instead? thank you.
ReplyDeleteI haven't tried cronus zen but it seems to be very similar to Titan Two in terms of functionality. You may wish to try it out, but be prepared to modify the gpc script to fit your cronusmax. Personally I would suggest building the adapter with Arduino as I have yet found any commercial adapter that maps each throttle level to a unique key combination. With some two throttle levels mapped to the same key combination, you wouldn't be able to differentiate between these two throttle levels if you move from the same previous throttle level.
DeleteHi, thanks for your work! Do you have an idea if the Densha de Go! Controller Type 2 for the PS2 (TCPP-20009) is working with one of the scripts? This one has a USB port and is easy to connect to the Titan 2. Thank you!
ReplyDeleteI don't have that controller so can't try it out on my side. You may need to work out your own Titan 2 script. To start with, connect your Densha de Go! controller Type 2 through the Titan 2 to a PC, and then open the Gtuner software. See if each brake/acceleration setting maps to a unique output. If so, you may try to modify the if conditions in https://github.com/tylau0/DenGo/blob/main/DenshaDeGoDGOC44UTypical.gpc and https://github.com/tylau0/DenGo/blob/main/DenshaDeGoDGOC44U103.gpc accordingly to get the script to work.
DeleteThis comment has been removed by the author.
ReplyDelete