USB Downloading Device for Sega Saturn

That's great news :D


But:

Code:
 What?                      UP/DOWN     V1.04          V1.06 (191+lzo)

-------------------------------------------------------------

 bios                             DOWN       92.0s           61.0s


When I download the bios with the isa card, it took less than 5-8 s, same for any 512k of data I dl. So USB datalink is slower than isa commlink card ? Or I didn't understand something ? And if I am right, why is USB slower ? Problem with software (early dev, but with great promise ;)), hardware, protocol used,... ?
 
Yes, the USB DataLink is slower than the original Commslink Card (ISA). One reason is that actually, an RS232-protocoll is used that doesn't exploit the whole USB bandwith. Another reason is that the whole transfer is cut into small pieces of 128 or 192 bytes and thus a lot of overhead is caused by handshaking and wait cycles.

The actualy speedup is already very significantly. Possibly, the above two points offer som more speedup potential.
 
Thanks RockinB for the explanation ;)

I didn't test the USB device yet but I hope it will be as fast as the ISA commlink card (one month ago, I transfered 222 * 512kb of data from the Saturn to the PC, so it would have taken a LOT of time ;) )
 
Thanks Kent, your USB DataLink is the most valuable accessory for us homebrew devvers.

In order to use compressed transfer, a replacement action replay firmware needs to be uploaded to the Saturn. Only once at startup. I need to add a button to the pc software, such that the upload can be done very easily.

This firmware is currently 6kb large, it also supports a "return to original firmware" command. I could add functionality that it programs the PAR with itself, when requested. Then an upload wouldn't be needed anymore.

I experienced a problem with original Datel PAR carts. It seems the Saturn-firmware can't access it's Comm-functionality. It works on EMS 4in1 carts perfectly. The USB DataLink also works perfectly with these Datel PAR carts, too.

Is there a difference between Datel PAR and EMS 4in1 carts, as far as the Comms port is regarded?
 
RockinB said:
Is there a difference between Datel PAR and EMS 4in1 carts, as far as the Comms port is regarded?
Yes. They're mapped to different address ranges. If someone can link or post Datel's flashsat.bin (which I don't have handy right now), it should be pretty easy to figure out where the port addresses are mapped.
 
Not directly. IIRC you have to write a small program that asks the CD block to transfer the MPEG BIOS to main memory and then write it out to the Commlink. I think CyberWarriorX dumped the one image that's floating around, you could always ask if he still has the tools he used.
 
ExCyber said:
Yes. They're mapped to different address ranges. If someone can link or post Datel's flashsat.bin (which I don't have handy right now), it should be pretty easy to figure out where the port addresses are mapped.

Okay, I've found 3 different flashsat.bin files on my HDD (see attachement), I hope the right one is included. It would help me much if you could figure out the adresses that are different compared to the EMS 4in1. This weekend, I would like to make my firmware compatible for both.

Can I find out which card is plugged in by other means than reading the firmware content stored on the EPROM there? The arflash tool determines the chip version somehow.. Thanks for any help.
 

Attachments

  • FLASHSAT.zip
    3.2 KB · Views: 129
Okay, I think I got it.


(The registers will actually respond to a range of addresses, but these are the "official" locations; i.e. what the Datel/EMS code use)


Comms status flag (read-only)

===

Datel: 0x22500001

EMS: 0x22100001


Comms byte read (read-only)

===

Datel: 0x22600001

EMS: 0x22180001


Comms byte write (write-only)

===

Datel: 0x22400001

EMS: 0x22080001


RockinB said:
Can I find out which card is plugged in by other means than reading the firmware content stored on the EPROM there? The arflash tool determines the chip version somehow.
The flash ID has some kind of correlation to cart type (Datel usually uses SST chips, EMS usually uses Atmel chips; I have no idea about other vendors such as Xinga), but I don't think it's a guarantee.
 
Thanks a lot ExCyber. These new addresses work with my Datel cart.

I added vendorid-based auto-detection to the firmware, now the same firmware works for both of my cartridges, EMS and Datel. However, I figured that the Datel cart got vendorid=0x5345 (What vendor is that from?) and my EMS cart got chips of vendorid 0xBFBF.

I'm not sure if that method will reliably work for all carts. Is there another option of detecting the cartridge type (or more precisely, the comms registers used) at runtime, even if a different firmware is flashed onto the cart? Maybe the size of the flash?
 
RockinB said:
I added vendorid-based auto-detection to the firmware, now the same firmware works for both of my cartridges, EMS and Datel. However, I figured that the Datel cart got vendorid=0x5345 (What vendor is that from?) and my EMS cart got chips of vendorid 0xBFBF.
The vendor ID is only actually one byte; you get two bytes because it's reading from two chips in parallel. Generally, both bytes should be the same. 0xBF is actually SST's vendor ID. 0x5345 is ASCII "SE", which almost certainly means that the chips on that cart aren't entering ID mode (or are exiting it prematurely) and you're just getting the first two bytes of the header ("SEGA SEGASATURN" etc.).


RockinB said:
I'm not sure if that method will reliably work for all carts. Is there another option of detecting the cartridge type (or more precisely, the comms registers used) at runtime, even if a different firmware is flashed onto the cart? Maybe the size of the flash?
I can't think of a way to do it without a host connected. Flash sizes can be (and generally are, to my knowledge) the same on various carts. I think the only way to set the comms status flag is for the strobe line to be asserted by the host, and there's no way to write to the comms output "register" and read it back (because there is no actual data register in the cart; writing to that address actually writes to a register on the comms card / adapter). There's a "cartridge ID" register, but if it returns anything it'll be the ID for a RAM expansion cart, not something unique to any particular vendor or cart configuration.


edit: I'm not 100% sure, but it looks like the status flag might actually be zero by default, which should make it distinguishable from unmapped memory (i.e. the status address would return 0xFE rather than 0xFF). However, if this is true, a probe for it would fail if there was actually a byte waiting (although in that case you should be able to see the byte being sent on the read register). Also, it may just be reading the pin directly, in which case it would most likely just return 0xFF.
 
I played with my usb datalink this weekend. I had the old green light version. I think one great feature that can be added to the next update of the pc software is to be able to dump every part of the saturn memory, not only the bios. Something like the AR action.exe program where you can choose the start and length of the memory you want to dump.

Also, what could be the cost for upgrading the green light version to the red light version ?
 
The feature to dump selectable memory areas is a good idea. I'll try to work that into the next PC release, when I get time.

I will do the update (green to red) for free, as long as shipping is paid (both ways). I have also made note of this on my webpage (in the software page).
 
Great, let inform us when you will make the update. For me, it is the most awaiting feature ;)

For the upgrade, do you have an idea for the shipping cost from you to me in France (for the return) ?
 
According to usps.com:

Priority Mail® International Small Flat-Rate Box*

Maximum Value for Contents: $400.00

USPS-supplied Priority Mail Small Flat-Rate Box 5 3/8" x 8 1/2" X 1 3/4". Maximum weight 4 pounds.

Post Office Price: $12.95
 
^Yeah that sounds about right. There may also be a cheaper option of using standard airmail, which will probably take longer.

If you could throw in an extra buck or two, for the fee paypal will charge me, that would be great, too :)
 
Madroms said:
I think one great feature that can be added to the next update of the pc software is to be able to dump every part of the saturn memory, not only the bios.

I have made this update to the software, and it is now available on my website
smile.gif
 
Hello everybody,

I am experiencing troubles in using my DataLink.

Here is the description of how this problem happens :

1. Turn off the Sega Saturn

2. Insert the PAR into the Saturn (nothing is connected to the PAR's DB25 connector)

3. Plug the DataLink to the PAR (USB cable is not connected to the PC)

4. Connect the DataLink USB cable to the PC

* DataLink red LED lights.

5. Turn on the Saturn an wait the PAR main menu to be displayed

* At this time, I can scroll up and down the "start game", "select cheats", "memory manager", "credits" in the PAR's main menu.

6. Start the DataLink software.

7. Click on Transfer Data -> Receive GameSave -> Begin Data Retrieval.

8. After ~5 seconds, the following error message is displayed :

Communication Timeout !

Verify That All Cables Are Connected and Power Is On.

* At this time, PAR's main menu items cannot be scrolled, and the DataLink LED is on.

The problem happens every time I try to use my DataLink.

My DataLink's has the latest hardware with a red LED (it has been updated 2 weeks before !), and I am using the v1.10 DataLink software.

I had the same problem with the following hardware :

Saturns : white models (japanese), grey model (japanese).

Action Replay plus, GameShark.

2 PCs (both working with windows XP)

Has somebody encountered such a problem yet ?

Thanks in advance
smile.gif
 
Back
Top