I was recently asked about the instructions to compile Pseudo Saturn Kai from sources archive provided with Pseudo Saturn Kai binaries, so let's write a short blog article to make things clear to everyone.
The simple answer is : Pseudo Saturn Kai can't be compiled with theses sources.
End of simple answer. Those who want more details can refer to the few lines below.
Technically, some sources files are missing from source archive, preventing someone from opening sources archive, making some few changes, and installing it on a cartridge.
Why ? For the simple reason nobody won't help me if ...
Some dude takes sources, change logo and credits page and then release this as "Pseudo Saturn Kai Gold Edition made by some dude".
Some dude adds a major new feature to Pseudo Saturn Kai, and start doing business by making this firmware (and the cartridges compatible with it) available for paying. This dude will eventually forget to release any source, but who care about that except me and few other nerds ...
Maybe I would be told this I'm overthinking, but case 1 and 2 above already exist. Theses are detailed in another blog entry, and deserve a look if your time allows it.
Concretely speaking, there is one model using Pseudo Saturn sources (whose sources are fully available, and with build instructions too), hacked to don't show any startup menu (why not would you say, it's more convenient for the consumer), and consequently not showing any credits nor any mention it was made from Pseudo Saturn ... why not would you say, but that's a massive NO for me, and the Pseudo Saturn team will certainly not appreciate that too.
Some other projects are using fancy case and label instead of Action Replay ones (I'm OK with that, especially because Action Replay design guidelines are completely outdated), but don't mention anything about Pseudo Saturn Kai on their covers and labels until booting the cartridge and discovering ... a vanilla version of Pseudo Saturn Kai without any mention of the fancy product name advertised on the cartridge box and label I'm sorry for the consumers who were expecting firmware design to be unified with cartridge box and label : this wasn't done because some few files are missing in Pseudo Saturn Kai sources !
This case of "some people are making money from rebranded homebrew projects" is also detailed on Segaxtreme forums, which deserves a look if your time allows it.
The thread there is not by me, nor about Pseudo Saturn Kai, so I hope how real the fact is that there are people making money from other people's hard work ... that's maybe normal in any work place (), but that's a dick move in such a small Saturn homebrew community.
To sum up the bulky paragraph above, the way of sharing Pseudo Saturn Kai source code is not how it works in free software world.
In an ideal world, everybody share source code, and everybody other make contributions, and the project is getting brighter by brighter. So if the story stops here, I'm the bad one, but in real world, people deface the credits page, rebrand the projects under fancy names and start making cash and show business from projects they didn't contributed on ... Maybe it's selfish from me, but I don't want that and consequently removed few files from Pseudo Saturn Kai source code.
And if I may add an additional paragraph about Pseudo Saturn Kai, I would like to say it is quite open in the magic world of application to play games on Saturn real hardware : modchips are completely closed-sources, ODE too. In Pseudo Saturn Kai, the sources of the exploit to play CD-Rs, as well as the ones to redirect memory devices to SD card are available. The source code of the implementation of cheat codes engine is available too. I coded it from scratch because sources of Action Replay firmware are not open source ...
To add a bit of melodramatic taste to this blog article, I would like to say I spent the last four years developing Pseudo Saturn Kai.
I didn't asked for any payment about it. The next day after I received a $5 donation for it, I changed my donation page from "send money here if you want" to "send me kind message or a comment on my blog".
I didn't begged for any kind of crowdfunding too, and just wanted to continue the project where CyberWarriorX left it.
While four years seems a long period for just two or three features, you probably may want to look at Pseudo Saturn Kai credits page, and all the people who contributed to it. Theses two or three feature are not the kind of thing someone develop, test, re-test, fix, and keep testing more and more during a weekend. From my own experience, normal people don't continue development so far and just give up development after a couple of weeks. And, I won't appreciate this credits page to be defaced. Not for my nick to be removed (I'm listed there only one time), but for the respect to all the contributors being lost.
And while I developed custom cartridge using Pseudo Saturn Kai, I kept support for Action Replay cartridge and their clones. That may sound obvious, but technically speaking it isn't, mostly because Action Replay have limited ROM size. At some point of Pseudo Saturn Kai development, I hesitated to put cheat codes feature in a ROM portion larger than current one, but unavailable from Action Replay cartridges. This would had made more cheat codes available, but the feature itself usable on Gamer's Cartridge only. I choose to keep a reasonable size for cheat codes list, so that it would be available for everyone on Action Replay cartridges
Words count for this initially expected "short" article is about to reach four digits soon (it's 827 words now), and as I doubt a lot of people will read it entirely, it's probably time to conclude :
No full sources for Pseudo Saturn Kai
If you want to make you own Saturn cartridge firmware, then feel free to use Pseudo Saturn sources as a starting point.
Feel free to technically refer to Pseudo Saturn Kai source code, and to merge whatever you find interesting there to your project.
Still begging for Pseudo Saturn Kai full source code ? No problem, I shall make it available to everyone ... if there's not a physical disaster on my dev laptop or its SSD in the meanwhile.
At that time, this will definitely be the end of Pseudo Saturn Kai development. For you, and for me too.
This article is not about my own development experience, but from my friend XRider. Thanks a lot to him for the good work and the permission to share his pictures
First, what is a X-Terminator cartridge ? It is a Saturn flash cartridge which provides the following features : - 1MB expansion RAM - Backup memory - Ability to play import games - Cheat codes - Ability to search cheat codes by using standalone "X-Assist" unit
X-Terminator cartridge and X-Assist Image taken from SegaRetro
X-Assist is particularly convenient because unlike Action Replay cartridges, it doesn't requires connection to a PC : it is true that connection to a PC provides more features (such as memory access, program upload, etc), but as "connection to PC" basically means "software support will be dropped someday", a standalone unit is a real treasure For example, do you remember that Action Replay cartridges initially had DB25 connector ? This was for connecting the cartridge to PC via the -sold separately- Comms Link board, whose used now obsolete ISA port, and consequently not supported on nowadays PCs and/or OS. There are some alternate solutions for connecting Action Replay to PC, whose major one is USB Data Link, but unfortunately it doesn't provides any software support for advanced features such as cheat codes search and testing. So if you want to search cheat codes for your favorite game, X-Terminator is a good choice ! ... Okay, the user interface is in Japanese, but that's just a detail : after 200 or 300 hours learning about it, it shouldn't cause any problems
On the other hands, the major limitations are probably the lack of 4MB expansion RAM support, and using flash ROM for storing backup save data (which on the long term may brick the cartridge), but for a cartridge developed more than 20 years ago, theses limitations are quite honorable
So, once upon a time, XRider found a X-Terminator cartridge. It was a cheap auction, but on the other hand the cartridge didn't boot anymore, and the X-Assist unit wasn't included
Normal people would add this cartridge to their collection or put it on display as a decorating vintage objet Other people with engineering and electronics education background would put it on their "to repair someday" cardboard, and don't touch it for the next 20 years because they are busy with other projects or work, or real life, or all of theses at once
But XRider is none of them. XRider owns soldering tools. And knows how to use them. And really wants to fix this marvelous cartridge
So, let's try to fix the cartridge ! The first step would be to start with the most common problem, which is broken flash ROM. In my opinion, this is the most difficult step, because it requires to desolder two chips for a total of 64 pins ! I personally can't do this because of lack of appropriate tools, so the alternate desoldering way I would had used would be to ... use a nipper and cut each pins
Fortunately, XRider likes work well done, so theses chips were removed in a clean way
X-Terminator cartridge, with flash ROM chips removed. Additionally, all capacitors are removed too : that's the occasion or never to replace them
Next step is a bit optional, and is about to dump removed flash ROM chips with flash ROM dumper device. This is the best way to verify if failure is due to corrupted flash ROM chips, and if still in working condition, this at least would be an occasion to dump the cartridge's firmware
Flash ROM chip on dumper device.
Dump is full of 0xFF bytes ... unless a miracle happens, theses flash ROM chips are no longer functioning But, this comforts us regarding initial supposition of broken flash ROM chips causing cartridge not booting
Just in case of, let's verify PCB traces around flash ROM chips while theses are removed : this takes only 5 minutes to check, and it would be frustrating to find that cartridge was not working because of broken trace after soldering new flash ROM chips
PCB traces : just requires a light source strong enough to be seen
What to do next ? Maybe use PLCC sockets so that future replacement of flash ROM chips would be easier ! That's a couple of weeks to wait for the postman, but worth the wait
PCB with PLCC32 sockets soldered
And then, simply replace the flash ROM chips
Next generation is here !
PCB with new flash ROM chips. Additionally, new capacitors are populated
One last step remaining ! Flash ROM is mounted, but ROM itself needs to be set up with X-Terminator firmware. The simplest way to do this is to use Pseudo Saturn Kai flasher utility : it obviously allows to install Pseudo Saturn Kai, but also several other legacy firmwares in the case someone would want to revert to initial firmware after trying Pseudo Saturn Kai.
Just select the ROM version you want to install, and follow on-screen instructions
Flashing in progress ! Will it work after that ?!
Yeehaw !!! It boot fine, mission done Let's try with Metal Slug ... Metal Slug works too ! So it seems there's no need to replace RAM chips
Everything finished ? No, there is a side quest remaining Among the couple of X-Terminator cartridges XRider owns, one X-Assist (pad and LCD unit used to search cheat codes) is missing. One X-Assist available ? And another one missing ? No problem : let's reverse engineer the first one and DIY the second one
The X-Assist features two PCBs : one for connection interfacing and pad, and another one for LCD, as pictured below.
X-Assist pad/interfacing board X-Assist LCD board
The LCD board is incredibly complex, but since it was manufactured as a whole and can still be purchased on auctions or second-hand market nowadays, there's no real interest to build it from scratch ! And I personally wouldn't try : that seems too much complex
So remaining is pad and interfacing board : fortunately it uses standard components and not any Gate Array Logic-ish components that would need to be reverse-engineered too. Simply speaking, it's like assembling LEGOs Multi-meter, a LCD board, electronic breadboard, a bunch of wires, few electronic components ... is there something missing ? Yes ! A LOT of motivation !!
X-Assist DIY prototype, in all its glory
It's so beautiful it deserves another picture !
Let's try for real ! Of course, after verifying any eventual short-circuit with a multi-meter No short-circuit ? It's then ready for the "first-lighting ceremony" (火入れ式), as it is nicknamed in my neighboring ... I don't know if that's a common expression in Japan or anywhere else, but I like its naming anyway
No sparks ? No smoke ? That looks good
At first glance, that seems working ! Let's try cheat codes search feature in order to be 100% sure ...
Search unit not found ?!
Arg, it was too early to sing victory X-Assist seems not being correctly detected by X-Terminator cartridge ... Since text could be sent to the LCD, let's assume nearly everything is working correctly, and that a small detail is causing this trouble ... after some head-scratching, XRider found what's wrong : a Zener diode that initially looked useless was used to return some ACK to X-Terminator cartridge when looking for its connection !
The X-Assist screen after adding the Zener diode : code search memory could be captured !
65535 candidate codes ?! I'm not sure if correct cheat code could be found this time, but at least the DIY X-Assist unit works correctly now
Additional informations are available in French on Darius forums :
Here is a small FAQ about Pseudo Saturn, so that it may help people experiencing troubles when installing or using Pseudo Saturn, and also ... reduce the number of inquiries in my mailbox
Pseudo Saturn 0.832 "Booting CD ... Error 1" message when trying to load a game.
The "Booting CD ... Error 1" message. Special Thanks to C.L. for reporting the problem and sending the picture
This problem happens with Pseudo Saturn 0.832, both "no logo" initial build and final release with classy logo.
It concerns : - A specific hardware revision of Saturn : Japanese grey model 1 (95% sure), with power supply connector screwed to Saturn top case (not so sure). - Any game or application on burned on CD-R
So if you have Pseudo Saturn 0.832 and the "wrong" (incompatible) hardware revision of Saturn, it's not possible to play any CD-R copy of your games, and consequently can't upgrade your cartridge to other version of Pseudo Saturn, since it requires to boot a CD-R
Annoying isn't it ? The countermeasure is to either : 1. Install latest Pseudo Saturn Kai on your Saturn cartridge 2. Use another Saturn, compatible with Pseudo Saturn 0.832 : - Model 2 Saturns are 99% safe : I didn't received any "Boot Error 1" report with model 2 Saturn. - Please try on another model 1 Saturn only if you were lucky that day, else please be sure that this other Saturn won't be compatible too
Owning a spare and compatible Saturn -or being friend with somebody owning one- is the best solution, since it allows to both upgrade to Pseudo Saturn Kai, and to play games compatible with "JHL (PS 0.832)" game loader.
Owning only 0.832 incompatible Saturn(s) will bring you to "install Pseudo Saturn Kai on a bare Saturn" step, so basically requires to open your Saturn, watch swap trick tutorials on youtube, fail several times in trying that ('%)=(&$ swap trick, finally success in installing Pseudo Saturn Kai , look for one missing screw in order to put back Saturn top cover, re-open the Saturn in order to remove the tape on CD-ROM lid open switch, and finally put back the Saturn in its original condition
Long install steps ? Yes, but at the end the problem will be fixed (if not, please contact me) However, there's a limitation when using Pseudo Saturn Kai on model 1 incompatible Saturns : the few games not compatible with Pseudo Saturn 0.831 won't be playable Incompatible games are the ones marked as requiring Pseudo Saturn patcher utility, in Pseudo Saturn Kai compatibility list. Notable examples are Panzer Dragoon Saga, Batman Forever and Alien Trilogy.
You sold a kidney in order to buy original discs of Panzer Dragoon Saga, and really want to play their CD-R copies on your model 1 Japanese Saturn so that original discs won't be damaged ?
Except selling the remaining kidney in order to buy a Rhea/Phoebe (), the only solution is to wait until a new version of Pseudo Saturn Kai is released, and hope I find a fix to this problem. While waiting for new version of Pseudo Saturn Kai, how about trying games that Pseudo Saturn Kai can play with its good old "CWX (PS 0.831)" game loader ? I would for example recommend NiGHTS into dreams, Shining Force 3 series, and also Virtua Fighter Kids
"Firmware file read error !" message when trying to install Pseudo Saturn Kai
"Firmware file read error !" message (hard to read, sorry). Grabbed from reddit, special thanks to yoqu for reporting the problem
First, I fixed error text display in Pseudo Saturn Kai's latest release
(v6.074) : it is now displayed with white background color. Readability
varies from a TV monitor to another, so please contact me if that's
still not readable on your TV
This problem is generally caused by incorrect timing when performing swap trick, which makes Saturn booting Save Data Manager and Flasher utility from CD-R, but not being able to read files from CD-R after that. Another causes may be Saturn's laser incorrect calibration, or affinity problem between Saturn CD block and CD-R brand, or burn settings.
The countermeasure is simple : please use Pseudo Saturn Kai alternate flasher utility, located in Pseudo Saturn Kai latest archive → pskai_alternate_flasher.iso. This requires another CD-R, but this will work And, burning Pseudo Saturn Kai Save Data Manager and Flasher utility (pskai_sdm_flasher.iso) wasn't a waste, since it will boot correctly after flashing your cartridge to Pseudo Saturn Kai. Save Data Manager contains many save data to import to your Saturn, so you probably want to use them in order to start playing your favorite game elsewhere than level 1
So, what's the magic behind Pseudo Saturn Kai alternate flasher utility ? nothing really special in fact : both flasher executable and Pseudo Saturn Kai firmware data are packed in a single Saturn executable file. So as firmware data is loaded just after performing swap trick, file read error won't happen
Definitely not a smart way to counter a problem, but it works, which is the most important
This "alternate" flasher utility was developed before Pseudo Saturn Kai, and used in Pseudo Saturn 0.83x flasher utilities. I then developed an "all in one" Save Data Manager & Flasher utility on a single CD-ROM which allows to flash cartridge, manage save data, etc.
I though this would make the "alternate" initial flasher utility obsolete, so that it was dropped in Pseudo Saturn Kai 6.036 and 6.037 releases ... unfortunately I was reported about that "Firmware file read error !" problem after that So as a countermeasure, I restored this utility from Pseudo Saturn 6.074. Sorry for the troubles caused
Additionally, some more informations about this problem are displayed in current (W.I.P.) Pseudo Saturn Kai version.
Updated error message in flasher utility.
Pseudo Saturn Kai development continues ! Stay tuned
What's new with theses carts ? I use new PCB (Rev 2e) and flash chips that allow to store firmware larger that Action Replay firmware : - Action Replay Flash ROM : 256KB - USB dev cart Flash ROM : 512KB It will be useful when making custom firmware for this cartridge
And, I'm now familiar with using flux when soldering ! Before, I was soldering small pitched parts (typically, the FTDI USB chip) with stain in excess, then using solder wick. This gave good results, but I wasn't satisfied with the visual aspect nearby soldering points :
Before : only stain & solder wick used to solder FTDI chip
After : flux used to solder FTDI chip
And, there are now "ROM cartridge" available for sale ! This is just an "USB-less USB dev cart", but it allows to run Pseudo Saturn firmware, and also future revisions of the firmware with ROM size larger than 256KB available on Action Replay carts. And of course, it is a little cheaper than USB dev cart
ROM cartridge ... well, this is just USB dev cart without USB modules, so nothing really new ^^;
This cartridge is interesting in the case you want an USB dev cart for dev things, and another cart for gaming purpose.
Nothing really special today. This morning, the roommate in front of me (separated by 2 curtains) left hospital, so I am now the patient with the longest stay in this room. Previous roommate always spoke to himself while sleeping, so it's great that he finally left hospital
Among the two roommates remaining with me in this hospital room, - first one snores loudly ... - second one likes to play with room's air conditioner settings ... I don't know why he set temperature room to 28℃ .... maybe a game with me, I don't know. Anyway, I plan to restore temperature to 26℃ as soon he changes it ... I have no choice, because his favorite temperature feels like hell to me. And if he really continues to bother me, I will pour extra strong bond on air conditioner remote controller buttons
Doctor now use small syringe to pour sterilized solution in my mouth's scar in order to clean it, which is a sign that everything is going well for it Also, according to the doctor, there's no longer need to clean this scar twice a day : once a day is now enough, which is another good sign about this scar :] I hope this scar will close properly this week. After that, I finally will be able to start eating rehabilitation !!
On Saturn dev side (at first, this blog was intended to be a Saturn dev related blog !), I had fun with interrupt C and code executing on ROM ... except constant ones (of course), no global variable is allowed for ROM code ! Ouch. Still not compiling, less than half of the project is coded, nothing tested, so I will continue tomorrow