VOGONS


First post, by ottelo9

User metadata
Rank Newbie
Rank
Newbie
The attachment IMG_9674.jpg is no longer available

Connect your PS1/PS2 controller via a adapter/converter (selfmade or from me) directly to your parallel port and play every game in real MS-DOS (reboot in DOS with Win95/98) on real old hardware.

Background/Project history
I bought an old laptop this year (an IBM ThinkPad 380XD) to relive the feeling from my childhood 😜. Windows 98 SE runs perfectly, but old games such as Orion Burger or other rarities from the ‘Gold Games 2’ collection don’t run on Windows. That means booting the machine into MS-DOS mode. However, this means you don’t have CD-ROM, mouse or USB support. Fortunately, there’s ‘MS-DOS Mode Super Easy’ to provide CD-ROM and mouse support. I then had to look a bit further to get USB support so I could get my Logitech USB dongle mouse working.

So I was able to play through Orion Burger on MS-DOS 😉. Next up, though, was a different adventure game: *Time Gate Knight’s Chase*. It’s controlled via a MIDI controller/joystick or keyboard. But as I wanted to play comfortably with a controller, and my laptop doesn’t have a MIDI port, whilst the USB support doesn’t work with joysticks, I had to come up with a solution. There is a docking station with a MIDI port for my ThinkPad, but nah. Too expensive, hard to find and bulky. Running the MIDI port directly from the motherboard: not interested.

SNESKEY
I’ve found what I was looking for. There’s a programme called SNESKey from 1998. It runs in the background in DOS and virtually routes the buttons on an SNES controller as keyboard keys. With the latest version, it was also possible to connect a PSX controller. The whole thing is connected via the parallel port (LPT). With a few diodes and cables, you can build your own adapter. Long story short… it never worked with my PSX controller. I even modified the SNESkey.exe file (using AI and my own programming knowledge) so that it would run in test mode at all. But it never worked with actual games (more info on my blog).

Nevertheless, I still wanted to use my PS1 controller on my retro laptop. As I’d already fed my AI with the SNESKey, I decided to put it to work on a project of its own. And that’s how PSXKEY came about. The AI tried several times to talk me out of seeing the project through, arguing that it would be much easier just to give up and use the keyboard or simply use a DOS emulator 😉. I stuck to my guns.

Using PSXKEY
And lo and behold, it really does work perfectly. Simply copy PSXKEY.exe to any location and run it (in DOS). The programme will then attempt to load the PSXKEY.ini file containing the key mappings (PSX keyboard). If none exists, one will be created with default values. The tool then runs in the background and when you press a button on the controller, it simulates a keystroke on the keyboard. You can now simply start the game. You can customise the .ini file for each game and copy the .exe and .ini files into the game directory.

PSXKEY LPT-PSX Adapter

The attachment psxkey_3dmodel 1 low.png is no longer available

As not everyone can build their own PSX-LPT adapter, I’ve now designed a PCB and am currently having it manufactured. I already have the components to hand. I’m using a level shifter on the board to convert the 5V from the LPT port to 3.3V for the controller, as the IC in the controller can actually only handle 3.6V. A slightly higher voltage is also possible, but it causes the IC to age more quickly. This means the controller COULD be damaged if a level shifter isn’t used. So far, however, I haven’t come across anyone to whom this has happened, and I’ve already spent around 10 hours gaming with the DIY adapter (without a level shifter). But if I’m going to offer an adapter like this, it has to be professionally made.

Once I’ve got all the parts together, I’ll test the adapter thoroughly. If everything goes well, I’ll probably list it on eBay or in the classifieds. Feel free to contact me via PM if you’re interested or have any questions.

UPDATE:
The adapter is finished and I have tested it thoroughly. I’ve made five of them to start with and am now selling them on eBay.

Links
My german Blog ottelo.jimdofree.com
PSXKEY github Repo

Want to play games on real MS-DOS hardware/PC using a PlayStation controller ️ (via the LPT port)?
=> use my DOS program PSXKEY together with my optional PSXKEY converter

Reply 1 of 12, by L-Link

User metadata
Rank Newbie
Rank
Newbie

Thanks a lot. I was years triying to make a PSX controller work on DOS without success. There is also another parallel port driver for DOS called Console Cable which anounced support for PSX controllers, but just like SNESKey I never was able to make it work with any PSX controller.

Your driver works really well and is fast and lightweight. I tested it with Aces of the Pacific and runs perfect.

However I have found two issues:

- It doesn't work on Project X and Lion King, both of them by East Point Software. I can't remember if SNESKey (using SNES or Genesis pads) have the same problem.

- Is there a way in the INI file to map a button to a numpad key? I tried putting "num5" but it seems that doesn't work. I have a version of Puzzle Bobble which uses that key and can't be changed to another one.

Thanks again for your work.

Reply 2 of 12, by ottelo9

User metadata
Rank Newbie
Rank
Newbie

Thanks for the feedback!

Numpad: The new build supports num0–num9, num., num+, num-, num*, num/ and numenter, so cross = num5 works for Puzzle Bobble.

Project X / Lion King: My guess is that these games take over the timer interrupt completely and don’t pass it on, so PSXKEY never gets a chance to read the pad. I’m thinking about an option that uses the real-time clock interrupt instead. Would you be willing to test a build with that?

https://github.com/ottelo9/psxkey/commits/main/

Want to play games on real MS-DOS hardware/PC using a PlayStation controller ️ (via the LPT port)?
=> use my DOS program PSXKEY together with my optional PSXKEY converter

Reply 3 of 12, by ottelo9

User metadata
Rank Newbie
Rank
Newbie

Update: Project X and Lion King work now. Add timer = rtc to PSXKEY.INI, then PSXKEY reads the pad via the real-time clock instead of the system timer. Tested both on my Toshiba. Project X needs EMS, and EMM386 works fine with PSXKEY.

There are also example INIs for both games in the ini/ folder. F1–F12 and backspace are supported now too.

https://github.com/ottelo9/psxkey

Want to play games on real MS-DOS hardware/PC using a PlayStation controller ️ (via the LPT port)?
=> use my DOS program PSXKEY together with my optional PSXKEY converter

Reply 4 of 12, by MoneySquirrel

User metadata
Rank Newbie
Rank
Newbie

Wow, this is a cool project! Have you tried it with Super Street Fighter II Turbo? I was never able to get my Sidewinder gamepad to work with that game using keyboard emulation.

Reply 6 of 12, by L-Link

User metadata
Rank Newbie
Rank
Newbie

I tested the last release on a Toshiba 320CDS laptop running MS-DOS 6.22 and I have a strange bug, which varies from a slow key response to ramdom freezes with a key holding pressed, even making the game and the gamepad stop working completely. It happened to me both with and without RTC setting enabled.

The new features worked perfectly: numpad keymapping, button presses with RTC are detected on East Point games... but the aforementioned bug is present every time.

When I have the opportunity, I would try to test it on other PC and see if it gives me the same bug.

Reply 7 of 12, by crusher

User metadata
Rank Member
Rank
Member

Wow this is a really interesting project!
Every "new" old hardware/mod is welcome for us retro community.
Keep up the good work 😀

Reply 8 of 12, by ottelo9

User metadata
Rank Newbie
Rank
Newbie

@L-Link
Thanks for testing! I found a bug that matches what you describe: PSXKEY injected keys before the timer interrupt was finished, so the game couldn’t read them in time and a second key could overwrite the first one, which leads to stuck or missed keys. Fixed in the new build on GitHub.

Could you test it again on the 320CDS? If there are still problems, please send me the startup line (port and delay) and the error counter from PSXKEY /T.

https://github.com/ottelo9/psxkey

Want to play games on real MS-DOS hardware/PC using a PlayStation controller ️ (via the LPT port)?
=> use my DOS program PSXKEY together with my optional PSXKEY converter

Reply 9 of 12, by L-Link

User metadata
Rank Newbie
Rank
Newbie

With the latest update all the issues have disappeared and now it's working properly with an official Dual Shock 2 (port autodetected, delay auto set to 0x300) and an official Dual Shock 1 (port not autodetected, delay auto set to 0x300).

Incidentally, I have also tried some third party controllers which I have here, with mixed results. As expected, some work properly (i.e. Interact Dual Impact), others struggel to work and it's required unplug and plug the controller before initializating the game (i.e. Hori Analog Sindou), while others didn't work at all (i.e. Nyko Viper>PSX). I expected some third party controllers having trouble because it's used to happen that with other parallel port drivers for other OSes. I share this only for informational porposes.

Thank you a lot for this project.

Reply 10 of 12, by ottelo9

User metadata
Rank Newbie
Rank
Newbie

Thanks again! I had a look at the Dual Shock 1 detection: the auto-detection polled the pad back to back without any pause, which is too fast for some pads. It now waits about 1 ms between polls and gives the pad a bit more time after power-up. Could you test the new build with the Dual Shock 1, and maybe also with the Hori? It might help there too.

https://github.com/ottelo9/psxkey/releases/tag/2026-11-14

Want to play games on real MS-DOS hardware/PC using a PlayStation controller ️ (via the LPT port)?
=> use my DOS program PSXKEY together with my optional PSXKEY converter

Reply 11 of 12, by Shiftyy

User metadata
Rank Newbie
Rank
Newbie

I would be interested in an adapter that connects a PS1 controller to the midi/gameport rather than LPT.

Reply 12 of 12, by MoneySquirrel

User metadata
Rank Newbie
Rank
Newbie

Do you plan on also making parallel port adapters for snes controllers? I guess psx controllers have more shoulder buttons, but the snes d-pad is so perfect. Did you get a chance to test Super Street Fighter II Turbo? You'll definitely need the official patches too, as sometimes the keyboard inputs don't respond in the original release. It definitely does something different with the keyboard input, maybe it's related to supporting 6 button controllers via the game port?