Communicate with DB25-free Action Replay ?

cafe-alpha

Established Member
Hello everybody, I have a question about Saturn's Action Replay cartridge modification.

I got an Action Replay without DB25 port on it and I would like to make it communicating with my PC.

There is no need to replicate the "byte exchange protocol" used by action replay's firmware.

Instead, I would prefer to be able to freely access data pins for input and output, then design appropriate PC software for it.

Also, it is OK to modify/butcher my action replay pcb, add ICs, etc, even on fine-pitched soldering parts.

Until now, I made PC / Saturn softwares for use with comms card, freewing, extand and USB Data Link devices, so it shouldn't be a problem to add software support for another communication protocol !

However, as my knowledges in electronics are limited to "how to hold a soldering iron", I would be glad if someone could explain the relation between address in Saturn -> cartrige pins state -> state after going through Action Replay's ICs
smile.gif


What I would like to do :

- Be able to use at least 4 pins as output from cartridge.

- Be able to use between 1 and 4 pins as input to cartridge.

PS: here are some documents I could read so far.

Action Replay's pictures and pinout from Rockin'B site.

Action Replay PCB picture from gameofyou1 (the left-one is the DB25-free type I would like to use).

Charles MacDonald's documents: satar.txt sattech.txt comminfo.txt

Saturn schematics (1)

Saturn schematics (2)
 
Adding I/Os to a cartridge would not be trivial, it'd be a lot easier to just get another cart with the Comm Link port. What is the intended use of the additional pins? If it's fast data transfer, have you considered using the SH2 serial ports? If you need a few GPIO pins, you can use the joypad ports in direct mode.
 
antime said:
Adding I/Os to a cartridge would not be trivial, it'd be a lot easier to just get another cart with the Comm Link port. What is the intended use of the additional pins? If it's fast data transfer, have you considered using the SH2 serial ports? If you need a few GPIO pins, you can use the joypad ports in direct mode.

Thank you for your prompt reply !

The purpose is to connect SD card to Saturn.

I already could access to SD card data by connecting it to 2nd pad connector (see picture here).

Hence, I would like to use 3 output pins + 1 input pin for SD card, and if possible, 1 or 2 output pins for status LEDs.

Please let me know if you have some ideas about this
smile.gif


Using serial connector may be easier than modifying ARP, but connector for this can't be found easily, and it is not possible to boot Saturn from serial port.

Edit:

BTW, what would be simpler to do ?

1. Adding SD card by using Action Replay's comm link port ?

2. Adding SD card to Action Replay without comm link port ?

I prefer 2. because SD card connector + additional ICs would fit in the Action Replay's case, but it may not a problem to use an Action Replay with comm link port if needed.
 
The cleanest solution would probably be to use an external microcontroller connected to the commlink port, like in the USB Data Link. If you insist on using the cart without the port, you have to at least change the address decoding logic to add your memory-mapped logic. In the other cart you already have two memory locations (plus one status bit), which makes for an easier starting point.
 
I'm not sure about this, but IIRC the "status bit" is actually just a dedicated input pin as far as the cartridge knows (with the actual status bit being stored in a flip-flop on the comms card).

edit: I guess what I'm getting at here is this: if you only need one input pin for MISO, it seems like you should only need to add one '373/'573 chip for output if you start with the AR that does have the port.
 
Could be, I haven't looked at the implementation in detail, but the point was that's it's visible in the address space.
 
Yeah, I meant to reinforce that point, not dispute it. I just meant to dispute the "status bit" label because IIRC the cartridge side of it is unburdened by any baked-in dependence on the standard comms protocol and its concept of status/busy/ready/whatever.
 
I traced the pinout of a "SS Golden Finger V2" Action Replay knockoff, which uses a GAL16V8B that is clearly cloned from a "genuine" AR. Two of the GAL output lines are connected to bits 0 and 1 of the data bus, so I assume those are the Commlink status bits.

It's kind of funny how whoever made this clone obviously removed components from an Action Replay until it stopped working, but didn't realize there was a CS0 signal on the cart port and instead kept the GAL which generates the flash OE# signal based on the decoded high address bits. There's also a design error as the two flash chips share the same WE# signal, which explains why only one of the chips could be programmed when I tried uploading a custom firmware image.
 
antime said:
Two of the GAL output lines are connected to bits 0 and 1 of the data bus, so I assume those are the Commlink status bits.
That's odd; I've only ever heard of / seen one status bit visible on the Saturn side, which would be connected to bit 0. I wonder what the other bit is. ISTR that the /ACK signal is combinational and only pulses on a write of the output address, so I don't think it would be that.

antime said:
There's also a design error as the two flash chips share the same WE# signal, which explains why only one of the chips could be programmed when I tried uploading a custom firmware image.
I don't see how sharing /WE explains that at all. It's shared on the AR4M+ (or at least on the one I have) as well.
 
antime said:
Adding I/Os to a cartridge would not be trivial, it'd be a lot easier to just get another cart with the Comm Link port. What is the intended use of the additional pins? If it's fast data transfer, have you considered using the SH2 serial ports? If you need a few GPIO pins, you can use the joypad ports in direct mode.

The SH2 serial is not suitable on the Saturn for high-speed transfer. If you look at the SH2 hardware manual, at high clock rates like the Saturn uses, the serial ports will not operate correctly over 100 kbps in synchronous mode with an internally generated serial clock. While you COULD use that for handling an SD card, the rates would be much lower than accessing it in four bit bus mode. To do higher sync serial rates, you need an external serial clock; then you can go up to 1 mbps... which would still probably be slower than four bit bus mode.

So the best bet for using an SD card with the Saturn is to probably hang it off the controller port and bang on it directly. If the Saturn serial link connector has enough GPIO pins to handle the SD card in four bit bus mode, that would also work better than trying to use the serial port.
 
ExCyber said:
That's odd; I've only ever heard of / seen one status bit visible on the Saturn side, which would be connected to bit 0. I wonder what the other bit is.

I don't know. There's 5 unconnected pins on the GAL, but I don't really have the equipment for trying to reverse-engineer it.

I don't see how sharing /WE explains that at all. It's shared on the AR4M+ (or at least on the one I have) as well.

I had a vague memory of the software trying to write bytes to odd addresses, but looking at the code that's not correct. Maybe there was a software bug or bad flash, I've got two of these carts and I remember them behaving identically.
 
Chilly Willy said:
To do higher sync serial rates, you need an external serial clock; then you can go up to 1 mbps... which would still probably be slower than four bit bus mode.

IME the port works reliably with external clock rates up to 1.2MHz.
 
antime said:
IME the port works reliably with external clock rates up to 1.2MHz.

Yeah, depending on the clock rate. ~1.2 for 28 MHz, and less if you had the Saturn at 26 MHz. 1.2 Mbps is still slower than you could do by banging on a GPIO connected card directly. We get over 140 KBps on the SD on the MD with the Myth. If you really want a FAST SD interface on the Saturn, you'll need to make a cart and have a high-speed SD interface on it.
 
Thanks to Antime's USB dev cart schematics, I could make a draft version of schematics for Saturn SD card connector.

http://ppcenter.free.fr/files/usbcart.svg

Does it has any chance to work ?

On software side, I plan to bitbang the following pins as follows :

Code:
SD card -> Saturn

 MISO : 0x22200001, bit0

Saturn -> SD card 

 MOSI : 0x22100001, bit0

 CLK  : 0x22100001, bit1

 CS   : 0x22100001, bit2

 LED1 : 0x22100001, bit3

Also, as you can see in the schematics, SD card power input is not connected.

-> Is it safe to use 5V from cartridge connector and 4.7K/10K resistors-based voltage divider for SD card power input ?

I don't know if Saturn cartridge connector can deliver 100-200mA required by SD card, so that I left power input unconnected and ask this question in segaxtreme forums.

Note: This is the first time I use KiCAD, and I am a complete beginner in electronic circuit designing.

So please don't expect this draft version to work and don't hesitate to share comments/help/whatever
smile.gif
 
Back
Top