Pseudo Saturn Kai official thread

How does the idea of a USB to Sega Saturn Controller adapter as in being able to connect a USB Sega Saturn gamepad to the Sega Saturn.
Just something cool to think about

Apart the problem of Saturn connector not being a standard part, that's shouldn't seems a difficult project. I personally want to focus development on cartridges and suitable firmware for them, so it's not at the top of my priorities however :)
 
HI Cafe Alpha,

I have a "Ultimate Game Memory Card", which is a third party Saturn memory card, AKA Saturn Region Convertor card. It looks as this:
120px-Saturn_Ultimate_Game_Memory_Card_Top.jpg


I tried to flash it with PS Kai latest version 20170423, tried with both the pskai_alternate_flasher.iso and
pskai_sdm_flasher.iso.
I got always a "Erase verification failure" error, as below image. Any hints to resolve it?
IMG_20180523_095318.jpg


BTW, as failed to flash it, I had to purchase a AR card and flashed the AR card successfully.
 
I noticed in the readme.txt, there is a success report for a card with same "vendor id/device id".
- nastyvandal : 5345/4741 SST29EE010 counterfeit ? (Flasher v3.746)

In Flasher v3.746, I think there is no Erase Verification Test code (from the change history). Should I try with this old version?
 
HI Cafe Alpha,

I have a "Ultimate Game Memory Card", which is a third party Saturn memory card, AKA Saturn Region Convertor card. It looks as this:

I tried to flash it with PS Kai latest version 20170423, tried with both the pskai_alternate_flasher.iso and
pskai_sdm_flasher.iso.
I got always a "Erase verification failure" error, as below image. Any hints to resolve it?
View attachment 4593

BTW, as failed to flash it, I had to purchase a AR card and flashed the AR card successfully.

I didn't know about this cartridge, thank you for the report !
Not all cartridges are compatible with Pseudo Saturn Kai : some carts use read only ROM, and consequently can't be flashed.
Some other carts may also use UV-EPROM, which is out of the scope of Pseudo Saturn Kai flasher utility too. It requires ultra-violet lamp to be erased, so it's simpler and cheaper to buy another cartridge than trying to flash this kind of ROM.


Your picture of flasher utility shows that ROM wasn't modified : ROM header indicates 19940807 time stamp, which is not a time stamp used by Pseudo Saturn Kai (I didn't started Saturn homebrew projects that early :D), but most likely to be the initial ROM contents intact.

If possible, can you take a picture of cartridge's PCB both front and rear side ? This would give more concrete information of which kind of flash ROM chip is used on this cartridge.


And, does this cartridge boots directly to multiplayer even if game is inserted in CD lid ? Because I suppose this is similar to "Memory Cartridge Plus", and consequently would be interested in getting your cartridge's ROM dumped if it wasn't done before. Save Data Manager & Flasher CD-ROM have a feature to give more details about cartridge ROM header, so can please use it to get more information ?
1. Use pskai_sdm_flasher.iso and use your favorite swap trick/modchip/ODE/etc method to boot it with cartridge inserted
2. From Save Data Manager main menu, push R shoulder button
3. Select "Cartridge ROM Hexview"
4. Take a picture of the screen, and post it here
5. Press R shoulder button twice in order to show ROM contents from offset 0x02000060
(ROM description message is stored from address 0x02000060)
6. Take a picture of the screen, and post it here
The steps above are optional, in order to verify if this ROM needs to preserved or not, so I won't anger if you skip them :)


I noticed in the readme.txt, there is a success report for a card with same "vendor id/device id".
- nastyvandal : 5345/4741 SST29EE010 counterfeit ? (Flasher v3.746)

In Flasher v3.746, I think there is no Erase Verification Test code (from the change history). Should I try with this old version?

Short answer : no, you will very probably waste a CD-R with old version of flasher.
Flash ROM access didn't changed between old and latest flasher utilities, and the erase verification is performed after writing to flash ROM. So old version of flasher with just display some kind of "write ended" message, even if actually not or incorrectly written.


Detailed answer about why flashing cartridges with 5345/4741 IDs may work :
5345/4741 are the hex values for SEGA, as read from cartridge ROM's first bytes. Theses are the values read when vendor/device IDs acquisition sequence didn't had effect, or when write access to ROM is not available. In first case, it is possible to flash the cartridge (see details below), and in the latter case, it's not possible.

Some Action Replay flash ROMs don't provide valid vendor/device IDs, but can be written with the "SST29EE" way of accessing to flash ROM. This is possible because Action Replay requires write access to flash ROM for working (cheat codes and memory cartridge feature require it), but firmware supports only this "SST29EE" kind of flash ROM.
(Extending support to other flash ROM types would require some changes on Action Replay firmware itself, and I suppose that the lack of such know-how on Action Replay manufacturer side made them sticking to theses obsolete flash ROMs for decades)
So when flash ROM IDs are incorrectly detected, flasher utility just displays a warning message, and then writes with this "SST29EE" Action Replay-ish access.
 
Last edited:
Thanks for the detailed response.

Here are some information of the cartridge. It works as a "Magic Card v2", Swap Enable + Region Convertor. Please refer to this page: https://www.segaretro.org/Magic_Card_V2

Steps to play backup CDR with it: (Cartridge inserted in Slot)
1, Put original CD in CD lid
2, Boot into multiplyer GUI. The CD stops and it prompts to change game cd
3, Swap the backup CDR in and press "start" button in game pad. Game starts.


I took pictures per suggestion as below: (click to enlarge)
PCB:
PCB_Front.jpg
PCB_Back.jpg
HEX Information:
hex_00.jpg
hex_60.jpg
 
Last edited:
Seems strange, there are all "20"s in the address range of offset 0x02000060.

I took more pictures as below:

offset 0x02000030
hex_30.jpg
offset 0x02000090 (all 20, not uploaded.)
offset 0x020000c0
hex_c0.jpg
offset 0x020000f0
hex_f0.jpg
 
Those are real old-school EPROMs. You need an UV lamp to erase the memory contents before they can be reprogrammed.
 
Thank you very much for the pictures ! The grey color used to display ROM characters is terrible, sorry. Next version will display in same white color as used for HEX codes. And, the fact that no characters is displayed with "20" HEX value is normal, because this is the ASCII code for blank character. Usually, some description of the ROM is indicated in this header, but in the case of Magic Card V2, this is blank.

So, I verified the HEX dumps, and I do confirm you are the lucky owner of a Magic Card V2 :) AFAIK, this is quite rare, so please keep it preciously.
I suppose that the top connector was used to connect some kind of "sold separately" (C) save memory unit.
Additionally, this cartridge doesn't features expansion RAM : the two chips at the right side of the PCB are for ROM, and the two other ones are glue logic between Saturn and ROM and backup memory slot.


As antime mentioned, theses flash ROM chips require UV lamp to be erased, hence not supported by Pseudo Saturn Kai flasher utility.
(This kind of ROM can be easily identified with the small "window" at the top side of the chip : this is where UV light needs to be applied in order to erase the ROM contents)

Important : as mentioned by Kuta, this window is usually covered with opaque tape, or anything similar in order to prevent sunlight to alter the ROM contents. Exposition to direct sunlight may erase or alter ROM contents, so please put back the PCB in its shell to preserve integrity of the firmware.
(I already PM'd you about that yesterday, but I prefer to repeat for any other curious user owning similar kind of cartridge)
 
Random question.

To stay compatible with antime's original program, would it be possible to allow Kai to jump back using:

Code:
void __noreturn
usb_cartridge_return(void)
{
        ((void (*)(void))0x0203F800)();

        while (true) {
        }
}

Or is there a reliable way to ensure that this function works with Kai and antime's?
 
That's software, hence technically possible, but is that useful ? Personally, I embed USB transfer code and copy/exec stub (for use in the case new program to execute overlaps current one) directly into my Saturn projects, so that it's a long time I didn't used this ROM code, and consequently dropped it in Pseudo Saturn Kai.
Additionally, you're one of the few last dudes still making useful things with USB dev cart, so if you just want this feature back for backward compatibility but actually don't need it, then there's probably no real interest to add this back.

Or is there a reliable way to ensure that this function works with Kai and antime's?

Antime already answered this question : there's no reliable way to do that.

BTW, is keeping this 0x0203F800 address is super mandatory, or can it be moved to a more convenient address ? That's in order to reduce unused ROM areas in Pseudo Saturn Kai ROM.
And, do you just want this ROM call to show the good old USB dev cart blinking screen ?


Extra details :
- In latest (WIP) version, 0x0203F800 is somewhere around Pseudo Saturn exploit code and end of cheat codes handler and codes list : in order to keep compatibility with Action Replay carts, ROM map near 256KB offset is a bit messy ...
- Original ROM by antime doesn't features this ROM call. So strictly speaking, current version of Pseudo Saturn Kai is USB dev cart original ROM compatible :D
 
(Bump)
I just added back the USB dev cart blinking screen from 0x0203F440 address. It will be available on next release of Pseudo Saturn Kai.

Additionally, an header is available from address 0x0203F400, which includes :
- 2 magic numbers, for simple verification of ROM code availability
- A constant string, for safe verification of ROM code availability
- Length and CRC of the ROM code, for paranoid verification
Header structure definition and everything else will be available in Pseudo Saturn Kai sources.

This took 2KB of cartridge ROM, initially reserved for cheat codes, so I hope this will be useful to make some cool and open source applications for Saturn.
(It's summer hot here, so maybe not the good moment to believe in Santa Claus ...)
 
Thanks for the informative reply.

I took some time to think about what you've wrote. You made a lot of good points. I'll go ahead and remove this from Yaul, as it's better to just soft reboot the system via SMPC or jumping to 0x20000240.
 
OK, but this will remain as-is (with USB dev cart blinking screen available from outside) because I'm too lazy to revert things back :)

Apart having to wait for animation logo, a SMPC reset is definitely the best solution : it works for 99% of cartridges (I keep the remaining 1% for cartridges that would do weird things with /RESET line), and put back Saturn in a stable state too.
 
Got it.

Do you mean that weird state where the system doesn't actually reset? Or you mean that problem where the Saturn won't turn back on?
 
No, I was just speaking about cartridges not (re)initializing their ROMs after a pulse on /RESET line. That basically doesn't concerns any existing cartridge :)
 
Okay, I have a pretty standard question, but I didn't know where to ask it besides here.

So, I was using a cartridge with Pseudo Saturn on it, and it was working normal for a day. I came home the next day, turned my Saturn, and it got stuck on the SEGA License screen. Does anybody have a solution?
 
Okay, I have a pretty standard question, but I didn't know where to ask it besides here.

So, I was using a cartridge with Pseudo Saturn on it, and it was working normal for a day. I came home the next day, turned my Saturn, and it got stuck on the SEGA License screen. Does anybody have a solution?

I would bet for a weak connection between Pseudo Saturn cartridge and your Saturn : after turning off the Saturn, please re-insert the cartridge, and ... pray it boots correctly after that :) If this doesn't works, slightly lifting the cartridge after re-inserting it may help a little.
 
Back
Top