What's new

hatmoose

Champion
Joined
Mar 25, 2021
Messages
1,104
Reaction score
2,299
Location
New Zealand
The CPS3 CD-ROM drive issue is pretty much a solved problem now with the availability of the awesome UltraSIMMS.

But if you are like me, and just love making cool stuff, then maybe there is still a place for a device that emulates the CPS3 CD-ROM drive.

Lots has been written here
https://www.arcade-projects.com/thr...-scsi-sd-card-adapter.300/page-38#post-350717
and here
https://www.arcade-projects.com/threads/bluescsi-scsi2sd-alternative.18121/

In the past SCSI2SD was the preferred solution, these are quite expensive, keeps adding new features that sometimes break old features (the CPS3 has been feature complete for decades) and is now closed source.
More recently, thanks to the awesome work that @xodaraP has done with the community it looks like BlueSCSI is our hero solution in this space. Works with CPS3, is low cost, is easy to set up, is open source.

So in this thread I shall build and test some BlueSCSI boards for use with my (absurdly huge) CPS3 collection.

The BlueSCSI landing page is here
https://github.com/erichelgeson/BlueSCSI
For our purposes we will be wanting the "1.1-a Desktop" version and following the assembly instructions here
https://github.com/erichelgeson/BlueSCSI/wiki/BlueSCSI-1.1-Desktop-Assembly
 
Soldered the boards up the other day, not 100% happy with them yet, would like to put the indicator LED's on to help with troubleshooting so I'll probably take the headers off and populate the LED and resistor spots before cleaning them in the ultrasonic.

thumbnail_IMG_3111.jpg

The "BluePill" the powers it is an interesting thing. I'm used to the Arduino Nano with an ATMEGA328 on them, compiling code with Arduio IDE, then pushing with an ISR using AVR dude.
Initially I thought I could do the same thing with the BlueSCSI, but the BluePill is totally different STM32 chip, different IDE, and different interface method (STM link).

I've ordered some from here for delivery in Feb 2023 :)
https://www.aliexpress.com/item/1005003880238896.html
 
You can burn the STM32duino as bootloader (using a simple ftdi programmer), so you won't need any other tool, everything will be handled by BLUEPILL USB. For binaries you will use qmk firmware software.
 
the Bluepill devices arrived sooner than expected so I did some research, notes below

Good writeup on what the Bluepill is and how it works here
https://www.electronicshub.org/getting-started-with-stm32f103c8t6-blue-pill/

and lots of discussion on programming here
https://low-level.wiki/diverse/devboards.html

Of course OSX does not use apt-get - it uses brew so
brew install --cask gcc-arm-embedded
brew install stlink
At this point you could ruin something like
St-info —probe
And expect to get a useful result
Then you can use the updater from here
https://github.com/erichelgeson/BlueSCSI-Updater
like this
Git clone
cd BlueSCSI-Updater
./flash-mac.command

From the factory the bluepill has no bootloader. So I used the ST-link device to write the USB bootloader, then I used the USB bootloader to act as a target for the BlueSCSI firmware. Normally this is not really optimal on those little ATmega clones, the bootloader takes space and slows boot up, normally I would just push the code directly - but it was late and I was lazy so I did it the easy way :)

One thing that did catch me out is that the bluepill doesn't seem to respond to USB polling particularly well, several times I thought the update had crashed on the runway, but disconnecting and reconnecting kicked it off successfully. I guess you don't get a lot of error handling logic for $4 :)

IMG_3338.jpegIMG_3340.jpeg

Anyhoo - so the boards are built, the bluepill is programmed - tomorrow I can assemble everything and start testing.

Given the absurd cost of a CPS3 board now (over $US1000?!?!?!) I might try and find a less expensive testbed before I plug it into one of my CPS3 setups...
 
Can you check if it's possible to install the STM32duino and later burn the firmware.bin via QMK?
I still need to find the right parts and SCSI socket!
 
Super useful. While SCSI2SD is great finding the revisions that works FOR WHAT YOU NEED IT FOR is tricky. I had to test 3 diff revs before I found one that would act as a replacement SCSI HDD for Crypt Killer. Slightly frustrating to have to buy 3 and sell 2 and hope to get your cash back
 
Can you check if it's possible to install the STM32duino and later burn the firmware.bin via QMK?
I still need to find the right parts and SCSI socket!
I wasn't familiar with QMK but it looks really interesting, now I might get distracted making keyboards - link for others similarly interested.
https://github.com/qmk/qmk_firmware/blob/master/docs/isp_flashing_guide.md

The bluepill is based on the ST32, but it's not an Arduino, so getting the STM32duino bootloader onto it is a massive pain in the ass.

Far and away the easiest way is using an ST-Link clone and the updater method I used above

But if you don't have an ST-Link and don't want to buy one, you could probably accomplish the same thing with an ISP/AVR programer from inside the Arduino IDE like this

Add the BluePill STM32 boards to the Arduino IDE board manager
https://www.electronicshub.org/gett...rduino_IDE_to_Program_STM32F103C8T6_Blue_Pill
Install the STM32Cube programmer software. This is a massive 150mb binary blob, it is its own IDE for STM devices, but also includes the drivers that you'll need to get the Arduio IDE to talk to the Bluepill.
https://www.electronicshub.org/gett...t6-blue-pill/#Downloading_STM32CubeProgrammer
At that point you should be able to push the bootloader from the Arduino IDE with whatever ISP/AVR you happen to have.
Then once the bootloader is installed it will speak the USB and you could upload the firmware to the BluePill from the Arduino IDE, or QMK, or AVRdude or whatever you like.

The hard part is getting the bootloader on :)

Another alternative to get the bootloader installed if you don't have an ST link OR an ISP/AVR would be to follow this tutorial and repurpose an FTDI device to force that to write the bootloader for you.
https://www.electronicshub.org/how-to-upload-stm32f103c8t6-usb-bootloader/

All of which is a long way of saying that as cool as the BlueSCSI project is, and as technically sweet as the Bluepill is, anything to to with STMicroelectronics software is probably going to be sub-optimal.
 
I've had good luck with the BlueSCSI. I have one in a Mac SE right now.

If you truly need one tested on "not a CPS3" I get it, and can help if you don't have a suitable setup. Or could, if we were on the same continent 😞
 
The bluepill is based on the ST32, but it's not an Arduino, so getting the STM32duino bootloader onto it is a massive pain in the ass.
I find the instalation of STM32duino pretty simple honestly, i'm using this on my new project JAMMA HIMITSU. We are working on a quick tutorial for it.
But if you don't have an ST-Link and don't want to buy one, you could probably accomplish the same thing with an ISP/AVR programer from inside the Arduino IDE like this
You only need a FTDI serial programmer, not the bootloader programmer.
Install the STM32Cube programmer software. This is a massive 150mb binary blob, it is its own IDE for STM devices, but also includes the drivers that you'll need to get the Arduio IDE to talk to the Bluepill.
You will only need the STM32 stuff for the drivers, the rest is done entirely on QMK Tool.
 
My good friend Jimmy bravely (stupidly) offered one of his many old Apple PC's as crash test dummy and nothing blew up - so on with getting this working as a CD drive.

Originally BlueSCSI supported HDD emulation, but as of June last year CD drive emulation has also been supported
https://github.com/erichelgeson/BlueSCSI/discussions/150

CPS3 drive settings from here
https://wiki.arcadeotaku.com/w/CPS3#SCSI_CD-ROM_jumper_configuration

Bluescsi takes a lot of the drive setup data from the filename, so super easy to change, format is as follows, max 32 chars
device Identifier = I want this to be a CD drive so use CD
SCSI ID# = CPS3 wants SCSI ID = 1 so use 1
LUN ID# = I have no idea why this is here, maybe in future if they are going to add RAID support later? CD drives don't do RAID and don't have LUNS so 0 is off use 0
_Sector Size = CDROM sector size standard is 2048 bytes, Capcom (mercifully) did not mess with the sector size standard so use _2048
-descriptor = everything after the hyphen gets ignored, use for description, might be useful to know if its the SH2 standard or SH2 custom dump, for me its custom, and because this is an embedded application if I done write it down I will never remember so use -CPS3SH2CUSTOM
.iso = tells the bluescsi that its a CDROM .iso and not a HDD image so use .iso

Putting it all together the filename could be
CD10_2048-CPS3SH2CUSTOM.iso

then we also need to set SCSI termination to on, this is done in hardware on the blueSCSI board, there are TWO termination jumpers.
One looks like it grounds this line, setting TERM to ON
the other looks like it bridges +5v from pin 26 on the SCSI connector, setting TERMPOWER ON
I'm not brave enough to see what happens if only one or the other is set, so set both = ON

Then we need to set parity = ON (1), this is the SCSI default and as far as I can tell there is no way to turn it off on the blueSCSI, so that's easy.

so TL;DR
Format SD card as FAT or exFAT
download iso from here https://www.arcade-projects.com/threads/cps-iii-bios-and-cd-releases.36/
rename to = CD10_2048-CPS3SH2CUSTOM.iso
Set TERM jumper to ON
Set unlabelled jumper (which is TERMPWR) to ON
Done
 
TERMPWR should be needed to power the device without usb power. It stands for using scsi termination power to power the device which has been pretty normal for low draw emulation devices since the scsi2sd.
 
TERMPWR should be needed to power the device without usb power. It stands for using scsi termination power to power the device which has been pretty normal for low draw emulation devices since the scsi2sd.
It’s weird that they didn’t label it on the silkscreen, and also don’t mention it in the docs. I feel like I need to send some pull requests.
 
It’s weird that they didn’t label it on the silkscreen, and also don’t mention it in the docs. I feel like I need to send some pull requests.
I'm pulling that info from memory, but, I will say pull requests are welcomed by the maintainers.
 
Really interesting thread, I'm keeping an eye on it and really willing to try / support
 
My good friend Jimmy bravely (stupidly) offered one of his many old Apple PC's as crash test dummy and nothing blew up - so on with getting this working as a CD drive.

Originally BlueSCSI supported HDD emulation, but as of June last year CD drive emulation has also been supported
https://github.com/erichelgeson/BlueSCSI/discussions/150

CPS3 drive settings from here
https://wiki.arcadeotaku.com/w/CPS3#SCSI_CD-ROM_jumper_configuration

Bluescsi takes a lot of the drive setup data from the filename, so super easy to change, format is as follows, max 32 chars
device Identifier = I want this to be a CD drive so use CD
SCSI ID# = CPS3 wants SCSI ID = 1 so use 1
LUN ID# = I have no idea why this is here, maybe in future if they are going to add RAID support later? CD drives don't do RAID and don't have LUNS so 0 is off use 0
_Sector Size = CDROM sector size standard is 2048 bytes, Capcom (mercifully) did not mess with the sector size standard so use _2048
-descriptor = everything after the hyphen gets ignored, use for description, might be useful to know if its the SH2 standard or SH2 custom dump, for me its custom, and because this is an embedded application if I done write it down I will never remember so use -CPS3SH2CUSTOM
.iso = tells the bluescsi that its a CDROM .iso and not a HDD image so use .iso

Putting it all together the filename could be
CD10_2048-CPS3SH2CUSTOM.iso

then we also need to set SCSI termination to on, this is done in hardware on the blueSCSI board, there are TWO termination jumpers.
One looks like it grounds this line, setting TERM to ON
the other looks like it bridges +5v from pin 26 on the SCSI connector, setting TERMPOWER ON
I'm not brave enough to see what happens if only one or the other is set, so set both = ON

Then we need to set parity = ON (1), this is the SCSI default and as far as I can tell there is no way to turn it off on the blueSCSI, so that's easy.

so TL;DR
Format SD card as FAT or exFAT
download iso from here https://www.arcade-projects.com/threads/cps-iii-bios-and-cd-releases.36/
rename to = CD10_2048-CPS3SH2CUSTOM.iso
Set TERM jumper to ON
Set unlabelled jumper (which is TERMPWR) to ON
Done
Is this then working? I will do the same I guess
 
My good friend Jimmy bravely (stupidly) offered one of his many old Apple PC's as crash test dummy and nothing blew up - so on with getting this working as a CD drive.

Originally BlueSCSI supported HDD emulation, but as of June last year CD drive emulation has also been supported
https://github.com/erichelgeson/BlueSCSI/discussions/150

CPS3 drive settings from here
https://wiki.arcadeotaku.com/w/CPS3#SCSI_CD-ROM_jumper_configuration

Bluescsi takes a lot of the drive setup data from the filename, so super easy to change, format is as follows, max 32 chars
device Identifier = I want this to be a CD drive so use CD
SCSI ID# = CPS3 wants SCSI ID = 1 so use 1
LUN ID# = I have no idea why this is here, maybe in future if they are going to add RAID support later? CD drives don't do RAID and don't have LUNS so 0 is off use 0
_Sector Size = CDROM sector size standard is 2048 bytes, Capcom (mercifully) did not mess with the sector size standard so use _2048
-descriptor = everything after the hyphen gets ignored, use for description, might be useful to know if its the SH2 standard or SH2 custom dump, for me its custom, and because this is an embedded application if I done write it down I will never remember so use -CPS3SH2CUSTOM
.iso = tells the bluescsi that its a CDROM .iso and not a HDD image so use .iso

Putting it all together the filename could be
CD10_2048-CPS3SH2CUSTOM.iso

then we also need to set SCSI termination to on, this is done in hardware on the blueSCSI board, there are TWO termination jumpers.
One looks like it grounds this line, setting TERM to ON
the other looks like it bridges +5v from pin 26 on the SCSI connector, setting TERMPOWER ON
I'm not brave enough to see what happens if only one or the other is set, so set both = ON

Then we need to set parity = ON (1), this is the SCSI default and as far as I can tell there is no way to turn it off on the blueSCSI, so that's easy.

so TL;DR
Format SD card as FAT or exFAT
download iso from here https://www.arcade-projects.com/threads/cps-iii-bios-and-cd-releases.36/
rename to = CD10_2048-CPS3SH2CUSTOM.iso
Set TERM jumper to ON
Set unlabelled jumper (which is TERMPWR) to ON
Done
Thanks for this concise guide.
 
Back
Top