Written by cafealpha no comments
Synthesis ... this is the kind of blog article posted at the end of December in normal blogs, but since this is not a normal blog, and that I can't respect any schedule for it, let's prepare this article at the beginning of January
Last year started well with an order of Gamer's Cartridge from IGK, who is administrator of Dezaemon DB homepage. More than administrating Dezaemon DB, he is also a dezaemoner who (among other titles) developed Biometal Nemesis, which deserves its youtube link in this blog :)
Biometal Nemesis - Click above if you like shmups
I really like the style of this Dezaemon game ! Thank you very much IGK for creating such gem
Thanks to IGK, it was possible to finish support of Saturn Floppy Disk Drive on Save Data Manager : initialization of this device is slightly different than with internal backup memory and backup memory cartridge, and consequently was causing troubles on various configurations such as no backup memory cartridge inserted, but floppy disk connected, etc. Fixing all possible patterns wouldn't had been possible without kind help and beta testing from IGK. Thank you
Save Data Manager (version around 2017/01/30)
Configuration when this screen was taken was no "backup memory cartridge inserted, and floppy disk connected", which was causing troubles because among other things, unavailable device in the middle of devices table wasn't supported.
Additionally, this was the occasion to add virtual floppy disk support on Gamer's Cartridge, making Saturn considering a floppy disk drive is available, even if not physically connected. Main purpose of this feature is to add 5 more save and load slots in Dezaemon 2, which, in addition of the 5 slots on backup memory cartridge, makes possible to manage up to 10 saves into a Dezaemon 2 session directly from a single SD card I don't remember exactly what was the trigger which started the addition of this feature, but I think that a suggestion from IGK like "it would be cool if floppy disk would be supported by Gamer's Cartridge too" and me "Ah yeah, that's a nice idea ... how many save slots do you want ?"
After that, IGK continued to surprise me by asking his friend beebaraka to draw a Dezaemon 2 themed label for Gamer's Cartridge ... As a result, I received images for two labels, which I personally consider as the masterpieces among Gamer's Cartridge label collection My preference goes to the white-themed label, but I suppose it's just a matter of personal taste.
Dezaemon 2 themed Gamer's Cartridges
Like shooting games ? Like DIY ? Theses cartridges are designed for you
In parallel of theses Dezaemon 2 adventures, generous contributors helped in dumping firmware of some exotic Saturn cartridges, and were successfully added to Pseudo Saturn Kai Save Data Manager. Most relevant dumps were for X-Terminator cartridge, and Urawaza Dataro cartridge : first one is a cartridge with extended support for cheat codes, especially with extra controller allowing in-game search of cheat codes. Later one provides special save data for several (around 34 IIRC) Japanese games. Special thanks to Madrom for providing dump of this cartridge !
All the points below contributed to prepare the "20170423" release of Pseudo Saturn Kai. Warm thanks to all contributors who could make it possible !
Second half of the year mostly concerned cheat codes addition to Pseudo Saturn Kai. It started in June (or May ... I don't remember correctly) from a Gamer's Cartridge user asking when cheat codes will be available in Pseudo Saturn Kai ... this reminded me I still had to finish that until next release
First working version of cheat codes
hander, with USB transfer support
It's not visible on this picture, but many polygons weren't
drawn because of performance issues.
Unlimited time cheat code working : it took me around
one month to fix missing polygons, because of unoptimized
implementation of cheat codes handler), but I did it
Cheat codes kept me busy for six solid months, basically in understanding to manage cheat codes in a similar way as is it done on Action Replay firmware, optimizing critical code, importing codes list, finishing cheat codes related interface, testing several games, etc. That's honestly a hard work, but this was also an occasion to add in-game USB transfer via USB dev cart. Thanks to this, the basis in order to fix or improve cheat codes is ready Proper PC software for cheat codes detection is still missing, but hopefully this will be done someday.
Akumajo Dracula-X illustration with Maria's inifinite jump cheat code.
This game was a nasty one regarding cheat code support, with very
tight CPU and RAM left for cheat codes handler. This was an occasion
to develop many cheat codes debug features
Summer was also the occasion for me to officially end manufacturing and support of USB dev cart : after 5 years involved in this adventure, I considered it was enough, because : 1. USB dev cart interests basically nobody 2. In the rare cases USB dev cart interests somebody, it is usually used for closed-source projects (But there are notable exceptions where USB dev cart contributed to Saturn open source projects. Big thanks to theses concerned peoples for making Saturn homebrew scene brighter )
I'm hesitating about the timing for next Pseudo Saturn Kai release : should I take some extra months in order to get proper cheat codes support for most popular games ? Or should I release it under few weeks with minimal cheat codes support (around an handful of games are currently tested and working), and hope to receive some feedback from users, so that I will eventually know which games need their cheat codes to be fixed ?
That's a very difficult choice : cheat codes is a niche feature (as everything else regarding Saturn !), so I shouldn't hope a lot of feedback. On the other hand, adding a cheat codes edition screen, and allowing cheat codes input on user side is (IMHO) a mistake too : maybe a motivated user would fix and/or add codes for some games, but rarely theses codes will be publicly available for everybody else, and in the other cases, user will simply consider Pseudo Saturn Kai cheat codes as a broken feature. Let's see ... I honestly don't have any precise idea when next release should be done. Any suggestion regarding this is welcome in the comments
Generally speaking, I'm tired about Pseudo Saturn Kai maintenance : I started it around two years ago (yes, largely over than nine thousands hours !!!), edit: that was around three years ago (I though we were at the beginning of year 2017 ), am finally seeing the end of my TODO list to realize that ... majority of users shifted to hardware ODE, or simply left the scene without any last final word ...
Well, whatever it may be, I continue development of Pseudo Saturn Kai because I went too far to stop so near of the end (that's quite a pragmatic argument, sorry), but also (and that's the most important), because that's a nice hobby, which is important in order to keep a balance between private and work
Also, my first steps in Pseudo Saturn Kai maintenance were made during my hospitalization for cancer, and keeping such hobby during theses hard times was worth gold. I don't know (and don't want to know) how things would had turned without my Saturn hobbies.
BTW, things concerning my health are getting well : I'm still undergoing periodical screening, which all were OK last year Last year was the celebration of 3 years all right after surgery, which is not bad for a cancer with 50-60% 5 years survival rate
Pokemon Go still not allowed in hospital. Fortunately, usage Saturn dev laptop isn't forbidden
To finish this article on a rant note (sorry if you went here for some final positive note ), I would like to say "thank you for nothing" to Rhea/Phoebe development team rmenu author. (← updated on 2018/06/20)
Why ? Reason is that I would like to add a rmenu equivalent to Pseudo Saturn Kai, but don't have any technical information to implement it, and it's not like I didn't asked about theses informations, but simply didn't received any relevant reply from concerned developer(s).
For a semi-commercial product, I can understand to keep schematics, source codes and other development resources private. But I don't request disclosure of theses resources, and just want some minimal information for interoperability, which isn't publicly available, and that's a pity.
Why is that a pity ? Because some cheat codes will certainly not work by having rmenu running between Pseudo Saturn Kai and Saturn game. I know there's the solution to use rmenu's full boot, which does a system reset of nearly everything (except Rhea/Phoebe, obviously) after selecting a game, so that cheat codes can be enabled after that ... but I really don't know anybody motivated to do this messy setup : everybody is using the rmenu's quick boot solution, right ?
Pseudo Saturn Kai's rmenu, dated 20151214. Latest version have some major improvements, such as scrolling title of select game, etc Because of lack of Rhea/Phoebe API, this feature is disabled.
I'm personally (and honestly) not concerned about this problem : my modded Saturn + USB dev cart are enough for my development needs, and I don't want to pay for a device costing an arm and a leg (plus a kidney when buying from ebay ...) and then having to do the reverse-engineering job for it after that ! So unless I got external help, clean support for Rhea/Phoebe will be done ... without me
From what I could found from static analysis of rmenu itself, version is checked by seeking to the last available data sector of the CD track, and game is selected by seeking to sectors just before that last available one.
After that's it's difficult to guess what data should be expected from Rhea/Phoebe without testing on real hardware. And reverse-engineering is usually a sluggish and hard work (I estimate the remaining as around a two weeks course ... and hope this to be a pessimistic estimation), and really would like to spend this time to other projects funnier.
2018/06/20 update : there will be proper support of Rhea/Phoebe image selection in Pseudo Saturn Kai, and consequently an user-friendly way of enabling cheat codes when using theses ODE
Very big thanks to Deunan Knute for the great job, providing the technical informations and everything else
And also I would like to thank privateye for contacting Deunan, his patience and great help in beta testing
Written by cafealpha 2 comments
Pseudo Saturn Kai 6.074 released ... more than three months ago Sorry for the late news, but that's still some quite acceptable delay in comparison to frequency I post articles in this blog
The release was initially announced on SegaXtreme forums, because it is my favorite forums for Saturn things (more than 11 years I registered to it ! Big thanks to the forum moderation/maintenance/support team for their steady good work ). Also the news was announced on SegaXtreme first ... because writing an article there takes less time than writing an article on my blog So since I'm a lazy person, let's slightly arrange this article from what I wrote on SegaXtreme forums !
What's new in this version ? Well, there's basically, not a lot of major features (sorry !), but fix of a critical bug affecting Gamer's Cartridge, and addition of some "minor, but that I wanted to add someday" features.
Features for Gamer's Cartridge users
Indirect Dump : Dump cartridge (boot cartridge, or official memory cartridge, or any other cartridge) by compressing its contents to internal backup memory, and then extracting it to SD card when Gamer's Cartridge is inserted. Because of small size of internal backup memory, it may be required to repeat the "insert memory cartridge → Indirect Dump → Turn off Saturn → Insert Gamer's Cartridge → Indirect Dump → Turn off Saturn" cycle several times, but at the end cartridge is dumped Requires some motivation and free time on user side (It took me 45 minutes in order to dump my good old very first official memory cartridge), but this way of dumping doesn't requires to unsolder cartridge memory chips, which is the most important for me ! Note : if you are the lucky owner of Saturn FDD, then floppy disc is used instead of internal backup memory, and consequently dump is significantly faster and simpler.
Left : Screen display after compressing dump data to internal backup memory Right : Screen display after writing dump data from internal backup memory to SD card Theses pictures were taken on Indirect Dump's first successful test
One extra application of this feature was to dump ROMs from legacy cartridges such as X-Terminator, Satellite, ST Key and "8MEG memory cartridge". Curious people wanting to test theses cartridges theses ROMs can found them available for flashing (at your own risks) in Pseudo Saturn Kai Save Data Manager. Special thanks to A Murder Of Crows, AtariBorn and SaturnGuru who dumped their cartridges ... and reported many bugs from early versions of Indirect Dump feature
Indirect Dump development : the cut scenes Left : dump data corruption (see below for details) Right : Dump file CRC check error. Fortunately, only dump computation routine was buggy, and dump feature itself was working
Save Data corruption bugfix : This corruption problem concerns saves on Saturn internal memory, with save data size making save sector allocation table finishing exactly at the end of a sector. Very few games are concerned, and the only example I could find so far is Albert Odyssey.
I found this problem when testing Indirect Dump : data compressed then written to internal save memory wasn't then correctly read and decompressed to SD card. I initially thought this problem to be caused by Indirect Dump itself, because at the time I had this problem, I just finished to mess with data alignment error when preparing indirect dump's compressed data, so thought that this was the next bug to fix regarding Indirect Dump Quick investigation showed that contents of read data wasn't as expected, with a small portion of data being same as data at unrelated offset ... so maybe a problem when compressing and adding header etc to Indirect Dump save data ? It took me then a around one hour of testing and code review until I was sure that culprit was actually not Indirect Dump itself, because re-read of save data didn't matched with written save data ! Then, testing Indirect Dump with same input data and virtual memory cartridge disabled worked as expected, which 99% confirmed that problem was located on virtual memory cartridge side !
So yes, "virtual memory cartridge" actually manages save data handling for all backup devices (internal save memory, memory cartridge, and even Saturn FDD too) : this is possible because Gamer's Cartridge hooks Saturn backup library at relatively high software level. In comparison with 1:1 hardware emulation of save memory cartridge, this has the advantage of being free of capacity limitation inherent to memory cartridge's chips, and also allows to store save data individually on SD card (two files per save, vs big file containing all saves for 1:1 cartridge emulation). On the other side, all the save data handling software has to be re-written, so care has to be taken when re-implementing it
So, this is quite an uncomfortable bug I have to face : save data are corrupted when being written to internal save memory, and Gamer's Cartridge was released around 6 months before, with consequently cartridges potentially corrupting save data in the wild. Fortunately, while being hard to find, the bug wasn't hard to fix Basically, this was a timing error when updating current save data block ID, as described below :
Internal Save Data corruption related source code Left : before fix Right : after fix
Since I really didn't want to fix half of the bug (and having to fix the remaining half on other release), next step is to add a test bench tool for internal save data memory access ! "Test bench" is a program that automatically tests a lot of patterns for a given function or module. Ideally, all major modules should have their test bench, but in the real world, making test bench programs takes time, so programs are usually manually tested with 2 or 3 patterns, and then developer prays for all other patterns being bug-free ... And to tell you the truth, this test bench was the largest one I wrote so far It's not impossible a bug to be still hidden in an untested pattern, but anyway I'm quite confident about the reliability of internal save data support now
Here is how test bench screen looks like on my dev environment :
SatLink and Yabause couple showing test bench screen. SatLink and Yabause : my best friends when testing Saturn programs
Screen copy above was taken after fixing internal save data support, and I forgot to take a similar screen copy when bug wasn't yet fixed ... latest Save Data Manager CDROM's + Gamer's Cartridge with firmwave 6.037 should display error in test bench screen, so it would be funny to try it ... maybe someday BTW, Test Bench is still available in Save Data Manager CD-ROM (it took me a bit of time to add test bench screen, so didn't wanted to remove it after fixing internal save data corruption bug !), but this test bench screen requires a trick in order to be accessed : did you found it ?
That's all about internal save data corruption : I fixed it, and checked a lot of patterns about internal save data access, so similar problem shouldn't happen in the future ! Additionally, I didn't received any feedback from users about this bug, so let's hope it didn't corrupted game saves elsewhere than on my dev laptop
Autodump : Automatically dump saves from internal backup memory to SD card, so that they can be restored in the case they are lost because of depleted CR2032 battery, or save data manipulation error, etc. With this feature, you won't have to say anymore "I lost all my saves because of that $%QTY@!#% CR2032 battery" Since this feature uses SD card, it is available on Gamer's Cartridge only. And no, I won't write save data into Action Replay's cartridge flash ROM : flash ROM chips are not designed in order to be written frequently, hence using flash ROM as read/write storage area may prematurely brick your Action Replay cartridge. If you're not convinced about flash ROM limited write cycles, I can make some "cartridge self destruction" feature that would continuously write and erase random data to flash ROM, but don't claim that your cartridge no longer boots after that
An alternate solution in order to keep internal save data change the chip holding internal save memory to a FRAM one that doesn't requires battery to retain saves data, as detailed in db-electronics.ca. (there are maybe other alternate solutions, so please let me know in the comments if I missed one)
The advantage of this FRAM mod is that saves are not lost when CR2032 battery is depleted. There are however several disadvantages : - This is an hardware mod, which requires to remove a chip, then solder another one, hence quite difficult to do. - CR2032 battery is still required in order to keep clock and language informations.
For being the developer of Pseudo Saturn Kai and Gamer's Cartridge, my opinion is a bit biased, but autodump is a better solution, because autodump is not an invasive mod (plug cartridge vs change chip on Saturn motherboard), and the FRAM solution doesn't allows to dump save data to modern media device. Anyway, I don't force you to like my projects, so if you don't like autodump, then don't use it
Virtual Floppy Disk Drive. Simulate Saturn Floppy Disc Drive (FDD) behavior, with save data stored on SD card. This feature Worked fine with Dezaemon 2, which can now handle 10 saves at once (5 saves from cartridge, and 5 other saves on FDD ), but I didn't tested for other games using FDD, so any feedback is welcome. This is a feature available on Gamer's Cartridge only too. Thanks to this feature, floppy disk access is available without having to plug any floppy disk drive to Saturn
Features for Action Replay and Gamer's Cartridge users
Proper support of FDD in Save Data Manager : Save Data Manager now supports both two partitions of Saturn floppy discs for all common operations such as copy, move, delete, import, dump, etc. Special thanks to Dezaemon DB for big assistance in beta testing
Backup devices informations from Save Data Manager : First device is internal backup memory : the easiest to handle Second device is backup memory cartridge, unconnected (zero partitions detected) in this picture Third device is FDD : two partitions, wrong unit ID returned, and always set at third position in devices information array, even when cartridge is not available. Basically, FDD is a real trouble-maker when trying to handle backup devices
Save Data Manager development cut scenes : trying to format FDD (format for both two partitions is displayed in a single picture) Don't worry about the horrible display of error messages : it's (finally) improved in version 6.074
Soft Reset Patch : Change the "A+B+C+Start key combo" soft reset from "exit to multiplayer screen" to system reset. This idea is not from me, but from neuroacid (rmenu developer).
More saves to import from Save Data Manager. The most noticeable addition is saves from Urawaza Dataro cartridge, containing quality saves for Japanese games. Special thanks to Madroms for dumping the cartridge, and providing me its dump file
Other : Fixed many bugs, and added other bugs ... the usual routine
(Not a software feature, but) future users of Gamer's Cartridge may appreciate the couple of new labels, designed by beebaraka-sensei (twitter) for artwork itself and Dezaemon DB (twitter) for the final editing of the labels. Many thanks to them for the very good work !
Dezaemon-themed labels ... could you find out the odd label ?
The design on theses labels is themed on Dezaemon 2, and as you can see, the Dezaemon character on the game cover grew in the right way I personally do appreciate the white themed one
Before being asked "where are the cheat codes ?", please let me reply :) Cheat codes support is still under development. Menu in order to select game and its cheat codes is 90% done, but the bit of code in order to apply codes is still TBD. I didn't touched this feature for around half a year mostly because of lack of free time, motivation, and being busy in developing other features. I plan to finish this for "next-next release" however. Update three months after writing the explanation above : cheat codes on Pseudo Saturn Kai are working on few games !! There are many things remaining until reaching an "OK to release" state, but at least the cheat codes core feature seems to work, which is quite a relief for me :)
By the way, there's a trick cheat codes selection menu in Pseudo Saturn Kai 6.074 : did you found it ? It won't do anything else than showing games list and cheats for each games, so it's not worth spending more than 10 minutes in looking for the appropriates key(s) combo and timing however.
Yes, this release have (at least) two Easter eggs available Coincidence with release timing during Easter period ? I think not
Apart from cheat codes, there are many other things scheduled for future releases : I initially planned to release everything at once, but had to make this intermediary release in order to fix the save data corruption bug on Gamer's Cartridge, so stay tuned
PS : Special thanks to Stac for beta testing All the features above wouldn't exist without his help !!!
Written by cafealpha 8 comments
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
Written by cafealpha 5 comments
Out of stock ":]". I'm glad to have finished this batch I don't plan to sell Gamer's Cartridge for a while, because stock of parts to build theses cartridges (electronics components, PCBs, labels, etc) is currently very low here. I'm even lacking of bubble paper used when shipping cartridges
So, what's next ? Of course, Saturn stuff I plan to use this "break" in cartridges manufacturing and sales in order to continue Pseudo Saturn Kai development. Main feature to add is cheat codes, which is a bit "heavy" one to implement, because processing in order to make cheat codes working isn't documented in details. But that will be done ! Also, there are some side quests here and there regarding Pseudo Saturn Kai features. I plan to implement as far I can, so it will be limited only by my free time, my motivation, and flash ROM remaining on cartridge
Gerber preview before ordering PCB on Seeed Studio, very classy and realistic
Edit (2017/05/11) : finally back in stock I catched the occasion to make some minor improvements to my homepage, such as adding anchor link to some sections, adding some directions for Japanese users, etc ... and I'm already full up with writing HTML
Edit (2017/05/12) : half of the stock already reserved oO
Cartridges are assembled by hand, hence stock is small, but I'm impressed anyway
Written by cafealpha no comments
The quick lazy brown dog jumps over the foxes ? The brown fox quick lazy jump jumps over the ? The ... well, I forgot what it was, but just to say that I spent a some time in messing with fonts in my Save Data Manager application In fact, it would be more accurate to speak about code pages (*), because I finally added support for Japanese text display :]
(*) For those who forgot what code pages was : Once upon a time, before Unicode unified every characters, (and also made strlen function not working correctly on UTF-8 text), there was a custom for all countries in the developed world to define up to 128 extra characters that would be used in second half of ASCII character table. Of course, Japan wanted to do the same, so it added poor looking "1 byte kana" characters on this extra 128 character page, and also added the remaining characters (including kanjis) after that, which gave birth to Shift-JIS encoding.
Since Saturn was developed, during this prehistoric "codepage" era, it is normal to find can find some code page remnants in Saturn software
One of these "code page remnants" is the comment string stored in each Saturn saves : didn't you noticed that sometimes BIOS displays Japanese characters in its save management screen ?
So, Save Data Manager must display Japanese characters instead of garbage characters when showing comment in save data selection menu !
What save comment looked like before adding Japanese characters display ... (It's a 6 months old screenshot)
How to do this ? First, I need to verify that BIOS was defining characters according to Shift-JIS charset, and the best way to do this was to modify some save states and see what BIOS is displaying on screen.
And if possible, displaying as much as possible characters at once would improve the job's efficiency, so I choose to modify Keio Flying Squadron saves since they take only 32 bytes each.
So here comes the reason I choose a such weird title for this article : I wanted to display all font characters at once on screen In the facts, I didn't used such a complex "lazy brown dog jump blah blah blah" sentence. I just displayed all the character in ascending order, and here is what it looked like in BIOS screen :
Repeat after me : －ｱｲｳｴｵｶｷｸｹｺｻｼｽｾｿ...
Looks good That's definitely 1 byte kana characters in typical order.
Saturn BIOS also has ability to display European (accented) character, and switching from a codepage to another is just the matter of changing a byte per save data, so let's try and see what it looks likes :
Same text as above, I just changed the language value
Oh, it looks like the good old ISO 8859-1 (latin1) charset
The picture above was displayed by setting French (my native language) language code in save, and setting to another language code (I tried with Spanish) gave unsurprisingly the same results.
So in the Saturn world, one byte equals one character, and there are two codepages to handle in order to display save comment string. I first feared I had to deal with multi-byte characters (that is a real pain to handle when coding software), but that's not the case, and in fact it's relatively easy to do.
(2 hours later)
Katakana and European fonts
Hmm, theses characters are looking cute :) It's seems that it is time to feed my image conversion tool ^^
(5 minutes later) Okay, latin.bin and katakana.bin files are ready, I should add some codepage stuff in my text display code now !
(1 hour later)
Finally some exotic language displayed ! I lost 30 minutes in wondering why application wasn't initially showing Japanese characters ... and it appears that I was "cleaning up" the comment string by replacing exotic character into space character "It wasn't a bug, it was a feature " It made sense when Japanese character wasn't displayed correctly, but it was time to remove this string cleanup code.
Job complete ? Well, there are still some details to fix, and this is what take the most of time when developing software, but at least the boring part of the job is done :]
As a reward for me, I can now set save comment to a cool one when importing save data and that comment isn't defined. I initially used a dummy "ImportData" string, but the holy "ｾｶﾞｻﾀｰﾝ,ｼﾛ" string defined in hitomi2500's ss-save-parser project is definitely better.
Last but not least : finishing this main quest opens doors to firmware translation side quest ! Well, Japanese translation would be ugly, because kanji characters are not available (just old-looking katakana characters : this article title would look like ｻﾞﾚｰｼﾞﾌｫｯｸｽｼﾞｬﾝﾌﾟｵｰﾊﾞｰｻﾞﾌﾞﾗｳﾝﾄﾞｯｸﾞ on firmware :D), and on software side, handling multi byte characters is a real mess, so I don't want to do make a Japanese version of Pseudo Saturn Kai and Save Game Manager.
However, translation for European languages is now technically possible Well, "possible" doesn't means I will do this right now This is a low priority job, so I will do it when I will have enough time and motivation for it.
BTW, in order to test if exotic character display was OK on Pseudo Saturn, I tried to print "beta" glyph (defined in European codepage) on the title bar :
Pseudo Saturn Kai main menu
Without any surprises (text display routines are common between Pseudo Saturn Kai and Save Data Manager), it works ! I can finally indicate that this is a beta version ^^
Edit : oops, the feature to inform me when a comment is posted seems (once again) not to work, and consequently I didn't noticed new comments :/
Here are the comments I replied so far. Since I'm late, they deserve to be re-posted here :
I am really happy to hear that you don't have cancer anymore!! Congratulations! I wish you a really long and happy life! :) Anon
@Anon : It doesn't guarantee I'm cancer free ! CT scans indicate that there is no evidence of cancer relapse, but CT scan has limits (it doesn't shows millimeter-order tumors), so I continue regular cancer screening and taking care in everyday life
Hey @Spawn, could you upload those Saturn saves you have on your PC? I have been looking for an archive of Saturn game saves for months now and I haven't found any. Maybe with the save states I have, and your saves I can upload them somewhere and start an archive? I'll give you credit for it of course. ReyVGM
@ReyVGM : Thank you for sharing your saves on segaxtreme ! They will be available for everybody on Save Data Manager, so that it will be easy to import on Saturn or emulator.
best wishes for 2016 !!! vbt
@vbt : Thank you ! Best wishes for 2016 too !!! Well, we are already in February, sorry ^^;
It's great to see your active development, cause my saturn projects are almost in hibernation today (i'm a bit in a time trouble). And i'm glad my code is of some use. Good luck! hitomi2500
@hitomi2500 : Hehe, I got some free time until end of March ... I don't know what it will be after that, but what's sure is that I will continue to have fun with my Saturn Please keep continuing the good work too :]
stunned and confused
last night I went on a sega saturn nostalgia trip.
I had to catch up with 8+ years @ segaxtreme. I found antime's usbcart, hitomi2500's fork, hitomi2500's new "wasca" and your stuff here.
sounds great ... I need to dig up my saturn and finally start something. I have a usb-cart from 2006 from pinchy (he seems inactive since 2007). seal1
@seal1 : Hey, I remember seeing your nick in segaxtreme thread about yano/Freewing transfer device (I built a Freewing device at that time). It was a long time before I made my first USB dev cart ... nostalgia. Many members forgot about Saturn and left segaxtreme, but luckily vbt and antime are still active. You're always welcome on segaxtreme, even if it just to say "hi"