PPCenter :: devblog

PPcenter. Arts and craft for my Sega Saturn. Since 1847 :D

Pseudo Saturn Kai 6.074 released !

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 !!!

Read more Pseudo Saturn Kai 6.074 released !

Similar looking kanji definitions file update

Written by cafealpha no comments
It's been a while I didn't received an email not related to Saturn from my homepage, so I was quite happy when siikamiika asked me if he could safely license similar kanjis definition file in MIT licence in his similar-kanji project


What is "similar kanjis definition file" ? It is a text file used in "My JWPce" which defines ... kanjis looking similar
The original idea about this is not from me : I initially found this feature in kanji.free.fr (Japanese → Omelette du fromage online kanji dictionary), and thought it would be cool if this feature could be available directly from my favorite Japanese electronic dictionary.
So I build this "similar kanjis definition file", and added support for it in "My JWPce".

data/images/20170220_jpwce_similar_kanjis.tb.png
Example of in JWPce's kanji information
dialog : "似" looks like "以",
"代" and "伐"

If you're Japanese, or were learning Chinese characters from elementary school, this definition file is probably a complete nonsense for you, since you know how to enter the correct kanji from keyboard on first try.
But that's not the same done for foreigners who started to learn Japanese in their twenties, so that this feature helped me a lot when learning new kanjis :
 1. In JWPce, enter a kanji similar the new one you can't read
 2. Search for that new kanji in similar kanjis list
 3. ????
 4. Profit !

So of course, MIT licensing of this file is OK, and I was also glad to overwrite my old definition file with siikamiika's version, so that I could enjoy all new entries added in this version
Open source is love, open source is life, thank you siikamiika

Read more Similar looking kanji definitions file update

Blog's CMS updated ...

Written by cafealpha no comments
Updated ... for around two hours, then reverted to previous version
Making a backup of whole devblog directory before trying version update was useful this time

Details about why I reverted to previous version : I first wanted to try latest version in order to see if image upload is better than current one (sluggish HTTP POST upload ).
So I download Pluxml latest version, and verify differences with current one installed in this blog (there are some modifications for captcha and extra smileys), merged everything, uploaded and ... article editor plugin (pxleditor) displays corrupted text when trying to modify an article

It's not that I can't do anything without article editor plugin, but ... I don't want to write articles in raw HTML (), and trying other editor plugin was only an half-success, because I prefer pxleditor simple interface (the simpler the better ).

Well, I don't give up, but that's enough web-related things for today this week this month ().
I don't know if I hate html/php, or if html/php hate me, or both, but what's sure is that I prefer Saturn programming

Next time I will try to update my blog, I will first try with xampp on my dev laptop ^^


Edit (2015/11/12) : at least I made one change to my blog : I added this smiley :
This is the image from where I made the cow (not hippopotamus) logo that I put on all my personal projects
I found it in "pre 2007" archive folder in my laptop. Fortunately this old file wasn't lost

Edit (2015/11/16) : re-install from scratch, and local setting & testing with xampp did the job. However, "send email to cafe-alpha when comment is posted" feature seems to be broken, but I will investigate about this later

Edit (2015/11/18) : email send feature is fixed, everything is working correctly, and blog's CMS is updated to its latest version

Edit (2016/01/14) : fixed article formatter in order to display images in a separate browser tab.

Read more Blog's CMS updated ...

Rss feed of the tag