But wait, there's more ! As the weird title of this article suggests, this release is a bit special because it was made directly from previous release (v6.408) of Pseudo Saturn Kai and this is why both release numbers are quite close : there are other changes pending but not available in v6.411a and instead available in a "parallel future".
So you may ask why everything new is not available in v6.411a, and the answer is simple : all pending changes together don't work ! Additionally to small changes and improvements, this was an attempt to get write access working on Fenrir SD card, but as the previous times it didn't worked and in fact was terrible enough to break other base features such as SD card refresh
So rather than trying to fix everything in the same time, I simply focused on what's most important : fixing compatibility with Fenrir firmware 20210207, and the strategy paid because if I continued in trying to fix everything together, Pseudo Saturn Kai would certainly be still stuck at the same "nothing works" dead spot !
The plans for near future is to return back to main codebase indicated as "v6.419" in the picture above, merge back the fixes around firmware 20210207 from v6.411a and then terminate the remaining pending changes ! Now that base features are finally working correctly I hope that the remaining won't take a lot of time until being ready to release.
After finishing base and extra features, I shall finally be ready to attack the "Fenrir save data export & import" final boss. In order to (finally) go on next development goal, I really would like to terminate that this time, so please wish me good luck
Last but not least, I would like to express warm thanks to privateye, who helped a lot in the preparations of this release !!!
TL/DR: a new version of Pseudo Saturn Kai is available, but as it only contains tweaks to work with Fenrir, please wait for next release in the case you're not using this ODE
Written by cafealpha 10 comments
As usual I'm not very on time for sending my best wishes but I hope that everyone spent a nice Christmas and are appreciating winter vacations To add even more fun to theses vacations, I'm happy to announce that latest flavor of Pseudo Saturn Kai is -finally- publicly available !
To be frank, there are no new major feature for Pseudo Saturn Kai in this release : the most important news is not hidden in Pseudo Saturn Kai itself, but in Save Data Manager, with a new edition of Dezaemon 2 Save Game Manager, featuring 11 new opus !
Regarding this new edition of Dezaemon 2 Save Game Manager, I really want to thank each respective contributor for their passionate work in shmup creation : - mk2, designer of DAIOH Huricane Special - WANG, designer of Houkou Tiger
Also featuring screenshots gallery of DAIOH Hurricane
I also would like to give a special thanks to Dezaemon DB (wiki) for all his support around floppy disk emulation in Gamer's Cartridge and motivating me in developing a new blend of Save Game Manager for Dezaemon 2, which then turned into Save Game Manager 3 (released on last Winter) and Save Game Manager 4, freshly releasing right now. Unfortunately I didn't received any news from Dezaemon DB for more than two years, but I continue to believe he will be back in action in Dezaemon community someday.
Regarding Pseudo Saturn Kai itself, majority of changes in this release concern fixes in automatic game loader and cheat codes list. So if previous version of Pseudo Saturn Kai installed on your cartridge are working fine with your favorite games library, then ... theses games will continue to play fine with latest version.
All theses improvements were directed by privateye, who really deserve warm thanks for this huge work !!
It's a big task to get a project working more or less correctly as it was in previous releases of Pseudo Saturn Kai. But it's an even bigger task when trying to fix all the little details around that project Without privateye, Pseudo Saturn Kai certainly wouldn't had its edges polished so well
And, Gamer's Cartridge users may appreciate that a problem sometimes happening when retrieving Saturn date and time has been fixed in this release.
This bug was introduced in previous (6.314) version because I didn't checked enough side effects of modification done at that time to add support for wireless pads.
Concretely speaking, this fixes the file time stamp of save data files as well as folder naming (which is based on Saturn date) when dumping save(s) to SD card.
Except that, Gamer's Cartridge support is equivalent to previous version, so if you don't want to brick your Gamer's Cartridge (risk is super low, but I can't assert it to be zero), then continuing using previous version may be a wise choice. After all, rather than upgrading to latest firmware, the most important is to play your favorite games
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".
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.
It's not like being under a quota of articles to write every months would stop the financing of my Saturn projects and in fact, as described on my "donate" page or this blog article, I don't have any interest in crowdfunding, or some kind of third party financing : if I'm not in the mood, or don't have enough free time to update this blog, then I don't update it
But well, moreover not being paid for not writing blog articles, as I actually have to pay to keep this blog alive (web page hosting is cheap but not free, but at least it's my own homepage ), I like to feed this blog from time to time even when being busy with real life things
So don't worry, I didn't stopped this blog : currently, I have one ongoing article that is waiting for its last paragraph and proofreading etc, but as I started more than two weeks ago (yes, that's my usual pace when preparing blog articles), please be patient until I finish it
I do have some ideas for future articles too, but theses are just ideas currently recorded as single lines in my TODO list, so I don't know when I actually start writing them
Regarding Pseudo Saturn Kai project, I ... didn't had a lot of free time to continue it recently In fact, I think I just turned on my Saturn once last month just to test if -as requested by someone by email- DoDonPachi worked with Pseudo Saturn Kai or not. The game worked fine here, so I turned off my dev Saturn an put it back in my closet for better times when I will be more available
BTW, I'm currently experiencing an unexpected burst of things to do at work, so it may take a while until things return back to normal But as I can't live without doing my Saturn projects, I promise that things will return back to normal as soon as possible
... Well, the contents in this article are a bit poor, so let's fill remaining space with random facts about my life recently The "okra" plant I wrote about in a previous blog article is still going well and I continue to water it regularly.
Okra in all its glory, 2018/10/18
Since summer is now finished, I no longer have to water it everyday, so that I now just do this regularly enough to prevent it from finishing yellow and burned And yes, the kid who took back that from school completely forgot about its existence
I'm not keen on gardening (as suggested on the picture above, I don't even own a garden), but have a couple of pictures of other green things in reserve ... and I keep theses to fill future small posts
Written by cafealpha 4 comments
"Overlap check" ... yeah, I know that I'm always terrible when finding a name for a new feature or a new project
So, as its name may suggest, this feature check for cheat codes that would not work correctly together, and automatically unselect some cheat(s) in order to get things working as expected. One illustration would be level select cheat code : some games may have a list of cheats like "play level 2", "play level 3", "play level 4", and so on. (no, there is usually no cheat code to play level 1 )
Example with Sonic 3D blast cheat codes : it's no longer possible to simultaneously enable several "Play xyz level" codes thanks to this overlap check feature
When trying cheat codes for the first time, the reflex would be "enable them all !", and in that case this would lead to undefined behavior. In typical case, game just work fine and since cheat codes are executed in the order from their list, the last overlapping cheat takes priority.
But, some games are quite picky regarding execution time, so the faster cheat codes handler is executed, the better. In other words, the less codes enabled, the more chances game have to work correctly. Here is one example in video with NiGHTs into dreams : first half of the video shows cheat codes causing graphic glitches, and second half show updated Pseudo Saturn Kai version fixing theses glitches :
NiGHTs into dreams : graphic glitches caused by cheat codes slow handler. Video available on youtube.
Left : slow cheat codes handler, causing missing quads on screen Right : game as well as unlimited time cheat code working fine
Hrm, that's around half a year ago, and I'm still fixing things for the same main feature Well, that's how software development works : fixing bugs, adding new bugs, and returning back to step zero. Maybe smart people can develop things faster, but ... I'm not smart, so the best solution is to continue the endless development iterations until getting something OK for release
So well, let's go back to original topic, and let's add that I also felt bad each time I was enabling two incompatible codes. "Play level 2" : enable, "Play level 3" : enable, start game ... what will it do ? Maybe a thermonuclear meltdown because of some divide by zero error ?! Well, it actually plays level 3, but that's unpleasant anyway. I implemented cheat codes features from (basically) scratch first for fun (yes, I like 6+ months span software development projects ! ), but also for the freedom of making what I want. Especially, making cheat codes as user-friendly as possible ! So that this "overlap check" feature was added
Here is another example with cheat codes for Virtua Fighter Kids : this is an interesting example because some cheat codes for this game are using "enable code" (starting with `D') : this kind of code is sometimes used to prevent from executing other codes, typically when game module to cheat is not yet loaded, and that writing something to its location would make the game not working correctly. As a consequence, "enable code" have a global effect on all enabled cheats, hence multiple "enable code" can't be enabled simultaneously.
Virtua Fighter kids uses "enable code" for a slightly different purpose : setting player health to a given value (50% of maximum, one HP, etc) only when it is set to maximum, ie on fight start time. By using this trick, game can then decrease health value, allowing to set some handicap to a given player. This behavior is completely different in comparison to "unlimited health" cheat that always forces health value to maximum
Virtua Fighter Kids cheat codes list : "50% healt" and "1-Hit Death" codes are the ones using enable codes
And, Virtua Fighter Kids is a good example, because it uses "enable code" at two different locations : at player 1 health value (06045974) and player 2 health value (06046A74). As only one "enable code" can be used, it's for example not possible to enable "1-hit death" code for both players.
Left : 1-Hit Death code enabled for P1 Right : P1 1-Hit Death code automatically disabled after 1-Hit Death code for P2 is enabled
Additionally, unlimited health for P2 is also automatically disabled, which is normal because it is in contradiction with 1-hit death code for it. From cheat code point of view, theses two codes write to same address, which doesn't makes sense.
"Hey, but I like "One Punch Man" series, and really want to enable theses two 1-hit death codes when playing Virtua Fighter Kids !" would you say ? Well, that's not possible as-is, but adding a new cheat code setting both players health to 1 when health of any player is set to max value should do the job ♪ I didn't verified this code for real (in fact, I thought about it when writing this article), but it should be OK : "trust me, I'm an engineer"
1-Hit Death code for both P1 and P2 This could also be named "Two gentlemen duel"
I would like to finish this article with the introduction of a bug I fixed recently : I usually don't spend time in speaking about bugs I fix, because this would take too much time But the behavior of this one is very unexpected :
Text display is suddenly uncentered !? Never though though such goofy bug would be possible
So, this bug is triggered when selecting item in menu with scrolling text, and when text starts to scroll. The two features in relation with this bug (text centering and scrolling) are apparently unrelated, but the menu module used by Pseudo Saturn Kai is so spaghetti-ish that theses two features can collide into a bug
I'm honestly proud of this menu module It was initially designed for simple menu without even vertical scrolling, but evolved little by little in order to support each new features added to Pseudo Saturn Kai. It's a complete spaghetti monster, but it works ! Yes, it works : trust me, I'm an engineer !