Communication port information

cafe-alpha said:
Thank you for your answer, BrokenLizard !

First, let's talk about my project that requires a communications port connector.

At present time, I am using a freewing + ARP + homemade ARP firmware + homemade PC soft in order to save my old saves states.

It works well, however I got a lot of save states stored in official backup cartridges, which means I can't use my freewing to download them.

Here are some countermeasures for this:

1) Copy each saves from cartridge to Saturn's internal memory, then download each of them with my freewing.

2) Use a transmission device on a port different from ARP's.

As every software programmer should be, I hate repetitive and stupid tasks, so I don't want to use 1). And 2) seems funnier too ^^

First, I though that using Communications Port would be a nice idea, but as I am stucked in making a reliable connector, I had a new idea : why not using the second pad's port ?

It would be cheaper and easier to do so, but I don't know yet if is possible to do, and how fast (how slow ?) the transfer would be.

BTW, I am looking for a broken Saturn pad, so if somebody got one, please let me know !

(I got a bunch of Saturn pads, but I don't want to cannibalize a working one.)

Then, I got a question about your project : why focusing the data transmission only with communications port ??

IMHO, using the ARP's parallel port would be more interesting for your needs.

The image of what I am thinking about would be something looking like an USB Data Link equiped with SD card reader instead of USB port.

Here are some merit of this idea:

+ No need to spend (waste ?) time in building a custom connector.

+ As parallel connector is used to connect with Saturn, connector price would be by far cheaper than using communications port.

+ As most of customers may already own ARP, your device's selling price would be lower than using communications port based solution.

+ Solves the problem of using burnt CDs. (1)

+ If hardware is correctly designed, SD card may be used as a CDROM replacement for homebrew games. (2)

And some demerits:

- Compatibility with Saturn floppy drive is lost, hence cannot be directly used with Panzer Dragoon Azel / Saga and Dezaemon 2.

(1) A way of processing would be something like this:

- On Saturn startup, ARP's firmware is launched.

- By pressing a button on your SD card device, a Saturn executable is executed from SD to Saturn by using comms protocol.

- The Saturn executable allows to manage SD card's contents, Saturn's backup's contents, etc.

(2) In the softwares I made last year for my freewing there are functions that allow to read/write files between Saturn and PC. Hence it would be funny to do the same with your device
smile.gif


Thanks to this, it would allow to run homebrew stuff without worrying about burning/swapping CDs and modchipping Saturn, and without the need of using a PC !

As I told above, last year, I made an ARP custom firmware that enabled to use my buggy freewing device.

Among others, it supports data compression and error recovery during transmission, some Saturn user interface, etc.

So if you are interested in help concerning Saturn software support, please let me know
smile.gif


(you can contact me by mail, or simply by replying to this topic)

Ok ok sounds like a great idea.
smile.gif


But there is a major problem I see with this direction (in regards to the 2nd design),

it's true that a lot of people have ARP4m but not necessarily the one with a built in Comm port. I'm waiting for 2 in the mail and still forgot to check if it have one. >.<

My fault I know but still would go for a separate device that can store my save files than a one that use the same port/ARP one.

What If I want to trade between Saturns ? I would rather that the device using communications port be used for this function than the cart one.

We all know how it's a pain in the neck to readjust the cart everytime you take it off or even nudge it by mistake for whatever reason.
laugh.gif


BUT ! I would encourage the development of both devices.

I believe it's still important to somehow be able to boot a CD image/homebrew from an SD card/Comm port or whatever. Right ?
wink.gif


Sadly no one knows how long our Saturn motor drives will last. IMHO A replacement is in dire need.

Btw Cafe, I can buy you a pad from Ebay and have it shipped to your address or would you rather I paypal you and get the junk pad yourself ?

PM me please.
tongue.gif
 
television2000 said:
I believe it's still important to somehow be able to boot a CD image/homebrew from an SD card/Comm port or whatever. Right ?
wink.gif


Sadly no one knows how long our Saturn motor drives will last. IMHO A replacement is in dire need.

The device I was thinking about is not a replacement for the CD-ROM drive, just something that would allow to run homebrew softs without minding about copy protections !

(It is not designed to run commercial games)

television2000 said:
Btw Cafe, I can buy you a pad from Ebay and have it shipped to your address or would you rather I paypal you and get the junk pad yourself ?

PM me please.
tongue.gif

An acquaintance on another forum wants to give me a damaged pad, so don't mind about it
smile.gif


And paypal+ebay might be overkill in this situation.
 
cafe-alpha said:
The device I was thinking about is not a replacement for the CD-ROM drive, just something that would allow to run homebrew softs without minding about copy protections !

(It is not designed to run commercial games)

Ohh sorry I misunderstood then. Either case it's an excellent idea to be able to use such a device on real hardware. Looking forward to it!

About the pad well that's great news. Please keep us updated on any progress.

Good luck !
smile.gif
 
BrokenLizard said:
I've resumed working on this project. However, I doubt custom connectors will ever be practical.

Good to get news from you :)
What are your plans to continue the project ?


On my side, I could connect SD card to Saturn second pad connector, and it worked enough for my needs, because I could successfully dump my backup cartridges.
 
Currently, I'm hoping to get the design to the point where others can use the project. At the very least, I will release schematics and a hex file. There is a chance I can sell the project in kit form. However, the connector is still a problem that needs to be figured out.

The primary remaining design issues deal with hardware. While my prototype is fully operational, I would prefer to increase the transfer speed. It took a while, but I finally have access to an oscilloscope to perform a few tests. Once the hardware is finalized, I can finish cleaning up the code and adding secondary features, such as support for multiple partitions.
 
BrokenLizard said:
Progress Update:

I just completed a document which describes the protocol used to communicate with the Sega Saturn Floppy Disk Drive. The file can be downloaded from http://www.psfake.com/FLOPPYfake.
Hi.
I got your document at 6 month ago. It is very interesting.

(1)
I try to make Sega Saturn FDD compatible device, based your document.

when starting, Application check if Saturn connect with FDD by partition change command.
My device get "80 11 00 00 00 00 74 3b" from saturn, but put no data.
I don't have FDD, so not know FDD's reply data.

(2)
I disassembled Backup library, and traced it.
I think "partition change command" require 28byte, not 20byte.
1:SS->FDD   command token(4byte + CRC)
2:SS<-FDD   ACK(4byte + CRC)
3:SS<-FDD   parameters(24byte + CRC)
4:SS<-FDD   floppy state(4byte + CRC)

if enable, you show raw data.
thanks.
 
While progress is very slow due to work and family obligations, I'm actually still working on this project. Recently, I gained access to a 3D printer which has renewed my efforts to create a custom connector. The bulk of the reverse engineering and coding has been completed for some time. The remaining items primarily consist of developing a method to connect the device to the Saturn (the connector), move the design from development boards to a custom PCB, and package everything into a nice enclosure. The 3D printer will help with designing the enclosure and keeping costs down. Unfortunately, I was never able to increase the transfer speed without removing some of the safety precautions I added. Luckily, most use cases for this device involve transferring relatively little data, so the transfer speed isn't very important.

Miyasan, I will try to set everything up and double check, but I believe the information in my document is correct. Unfortunately, I can't say how long it will take before I get the time to look into this, however.
 
Miyasan, how did you managed to connect FDD-like device to your Saturn ?
Direct soldering to Saturn motherboard, or do you have a way to get Saturn serial connectors for homebrew use ?

PS : are you located in Japan ?
 
cafe-alpha said:
Miyasan, how did you managed to connect FDD-like device to your Saturn ?
Direct soldering to Saturn motherboard, or do you have a way to get Saturn serial connectors for homebrew use ?

PS : are you located in Japan ?
I use harf-cutted Link-cable.
this cable connected master SPI signals(3 wire) and slave SPI signals(3wire), but disconnect VCC.
I think FDD-like device need VCC to recognize SATURN's power condition. and to avoid SPI noise.

maybe, I saw connector like Link-cable in the electronics parts shop.
Link-cable connector is mass production?

I'm Japanese, so I has poor English. :frown2:
 
miyasan said:
I use harf-cutted Link-cable. this cable connected master SPI signals(3 wire) and slave SPI signals(3wire), but disconnect VCC. I think FDD-like device need VCC to recognize SATURN's power condition. and to avoid SPI noise. maybe, I saw connector like Link-cable in the electronics parts shop. Link-cable connector is mass production? I'm Japanese, so I has poor English. :frown2:

Oh, you cut your link cable ? mottai nai T_T
Please inform us if you can find link cable connector in electronics parts shop. A long ago, I looked for it too, but couldn't find this kind of connector.

(I'm not Japanese, but living in Japan)


>  cafe-alpha have some hidden powers, he can write in japanese Smile

lol, it's not too difficult to read/write in Japanese. The most difficult for me was to understand the meaning of "All your bases are belong to us" :D
 
used SS FDD becomes investment item, too expensive.
I can't buy....

By the way, I got more information about partition change cmd in Backup library.
there is low-level function in Backup lib.

uint32 low-level_func(uint32 *retBuf, uint16 partition_num){
uint8 spiBuf[28];
}

(1) send command token(4byte)
{0x80, 0x11, 0x00, (uint8)partion_num}
(2) get ACK(4byte + CRC 4byte)
{0x20, 0x00, 0x00, 0x00, CRC...}
(3) get device information(24byte + CRC 4byte)
spiBuf[0]-[3]: value is unknown. this 4byte is not used.
spiBuf[4]: value is unknown. device ID.
spiBuf[5]: value is maybe 2. number of partition.
spiBuf[6]: SPI clock.
this value is set in SSR.BRR, directly. this value is 0, SSR.BRR set 0x10;
I think this is 0x05 from broken Lizard's data. and SPI is speed up to 300KHz
spiBuf[7]: unknown
I think this is 0x0c from broken Lizard's data
spiBuf[8]-[11]: total bytes.
value is unknown.but I think 0x000b4000.
2HD fdd capacity are 1474560bytes, so half are 737280bytes = 0x0b4000.
spiBuf[12]-[15]: total blocks.
value is unknown.but I think 0x00002d00.
737280 / 64 = 11520 = 0x2d00
spiBuf[16],[17]: bytes/block
value is maybe 64bytes = 0x0040.
spiBuf[18],[19]: bytes/block #2
value is maybe 0x1000.
SS FDD uses 64blocks once. so 64bytes * 64block = 4096byts = 0x1000
spiBuf[20]-[23]: unknown
spiBuf[24]-[27]: CRC
(4) get Floppy state(4byte + CRC 4byte)
{0x20, 0x00, 0xff, 0x00, CRC...}
}

this function return retBuf[5]. contents that...
retBuf[0] = {
(uint8)spiBuf[4] device ID
(uint8)spiBuf[5] number of partition
(uint8)0x00
(uint8)spiBuf[7] unknown
}
refBuf[1] = spiBuf[8]-[11] total bytes.
refBuf[2] = spiBuf[12]-[15] total blocks.
refBuf[3] = {
(uint16)spiBuf[16],[17]: bytes/block
(uint16)spiBuf[18],[19]: bytes/block #2
}
retBuf[4] = spiBuf[20]-[23]: unknown


this low-level function are called from some major functions.
<1>BUP_Init
this function check presence of SPI device.
if SPI device is presence get 3 information( unit ID, number of partition, bytes/block#2)

<2>BUP_SelPart
this function call low-level function. but not use retBuf[]

<3>BUP_Stat
this function call low-level function.
if SPI device is presence get 3 information( total bytes, total blocks, bytes/block)

I think this information link between broken Lizrard's partition change cmd information and mine.
thanks.
 
sorry, I missed one information.

BUP_Init
this function check presence of SPI device.
if SPI device is presence get 3 information( unit ID, number of partition, bytes/block#2)
if number of partition is larger than 15, Saturn recognize the device is wrong , and ignored it.

thanks.
 
Arrr after reading all this I just took a look at the serial connector on the Saturn and was wondering if there was any other device that used the same connector by chance. A DisplayPort cable looked like the closest thing but it turns out it's bit smaller with double the pins.
 
AFAIK, it's custom. A good rule of thumb with console hardware is that unless it's explicitly designed for interoperability, it's custom. A basic serial connector also wouldn't work with high-bandwidth applications like DisplayPort.

If you want to connect something to the Saturn's serial ports, either add a new port, or use a system link cable. On the Saturn's PCB, next to the serial port connector there's a test point for each pin, which is a convenient place to solder wires to. System link cables are still easy to find, and don't cost that much. You can then either cut it in half or design a PCB that slots into the cable female connector. A couple of caveats:
  • The cables don't carry all wires. A third-party cable I have doesn't carry the MIDI signals, and a first-party cable has neither the MIDI signals nor the slave SCK.
  • Unlike the cable's leaf contacts, PCB's don't flex. The cable's connector would eventually loosen and be unusable for connecting two Saturns. However, dedicating a sacrificial cable for connecting custom hardware isn't that big of a deal.
 
Last edited by a moderator:
I was wondering what the pin numbers were on the communication port on the back of the Saturn. Am I right to assume that the top row from left to right are pins 2-6 and the bottom row are pins 7-12 from left to right?
 
Last edited:
Back
Top