Pseudo Saturn Kai lite firmware fixes and improvements

Written by cafealpha no comments
One month from last update, but not significant updates
The reason is that children fought with nearly all typical winter diseases during the last three weeks : mumps, influenza (x2), gastro enteritis, and finally otitis ... x2 too

data/images/20160314_gg_winter.tb.jpg
Internet husband ...
I hesitated to put other pictures like "x2 combo !"
and "body temperature over 40 ? High score !"

Children were relatively safe from winter diseases until last month, but last spurt until summer was relatively heavy for them


So, no significant updates, but various minor updates :]

Among theses updates, main menu display has been improved when lite version of the firmware is used :
 - "Extra" features moved to main menu
 - System status now displays Saturn related informations (BIOS version and PAL/NTSC frequency information) rather than nothing when USB and SD card aren't detected.
Theses changes concerns USB dev cart and Action Relay users, hence the majority of Pseudo Saturn Kai future users, so theses changes couldn't be avoided before initial release

Here are pictures taken before and after the changes.
Many thanks to Zone66x for testing and taking theses pictures

data/images/20160303_pskai_5820.tb.jpg
Pseudo Saturn Kai v5.820 : status display was a little "empty"
And USB port was incorrectly detected when running from Action Replay ...



data/images/20160310_pskai_5875.tb.png
Pseudo Saturn Kai v5.875 : some saturn informations are now displayed.
There's no simple way to detect if cartridge is Action Replay or not,
so generic "Boot Cart" string is displayed when cartridge type is unknown.

And main menu is a little simpler :
no longer need to go to sub menu in order to access extra features.


Also, Zone66x verified that Action Replay communication port (parallel-like port) was usable with Pseudo Saturn Kai. Thank you for testing



Another new feature I'm proud enough to introduce it on my blog is the soft reset "à la carte"
Soft reset is used in Pseudo Saturn Kai when loading game from CD-ROM, and also when executing program received from USB port.
Basically, it wipes all memory, and puts VDPs memory and registers in initial state, which is good when loading game from CD-ROM, but causes problem when Saturn developer wants to do something else than "just" executing program on main RAM.
The "à la carte" advantage comes here : it is possible to select which module to soft-reset, and which one to let as-is before executing program.

Here is an example :

data/images/20160318_pskai_main_screen.tb.jpg
Pseudo Saturn Kai (lite version installed on USB dev cart) main screen.
Test program will be executed from this screen.

Let's try to let VDP registers and VDP1 RAM as-is when uploading test program :
data/images/20160318_test1_satlink.tb.jpg data/images/20160318_test1_result.tb.jpg
Soft reset "à la carte" settings and execution result :
Starfield (VDP1) remains in memory and is displayed on test program.


One more try, but with VDP1 RAM clear before execution :

data/images/20160318_test2_satlink.tb.jpg data/images/20160318_test2_result.tb.jpg
Soft reset "à la carte" settings and execution result :
As VDP1 RAM is cleared, starfield is no longer displayed.

Possibilities for this features are relatively wide : it's for example possible to upload graphics on VRAM, then level data on sub RAM, then execute test program on RAM.
I hope this will help to improve Saturn homebrew development scene :)

Read more Pseudo Saturn Kai lite firmware fixes and improvements

Pseudo Saturn Kai : still WIP ...

Written by cafealpha no comments
Still WIP, and last week was a busy one !

First, I fixed USB dev cart legacy firmware-like screen that wasn't working at all. Well that's a developer-oriented feature that I seldom use, but that needs to be fixed anyway
The fact I seldom use this feature was the starting point of the problem : modifying a module apparently not related with that feature caused major bug ... software development in a nutshell
Thank you Shazz for beta testing my firmware There are still other bugs remaining, and I plan to fix theses soon

And, (what's more important), game loader was sometimes loading game, sometimes not. Loading game backups is Pseudo Saturn Kai main feature, so I really don't want it to fail
Origin of this bug was unclear, but I fixed/improved many things at once, and game loaded every time after that, so let's hope I won't have to face with it in the future

One additional "bug" was game loader being kicked to multiplayer screen, and it was caused by ... game corrupted dump
First half of the game IP header was filled with zeros, so Saturn couldn't even recognize it as a Saturn game ...
I "fixed" what I could on firmware side by displaying something like "bad game dump/burn ?" message before kicking to multiplayer screen.
Let's hope it will reduce the amount of "can't load xyz game ! Hurry up to fix your bloody firmware !!" kind messages after release


And of course, there were many, many minor fixes, for example :
 - Added scrolling help messages under menus
 - Credits screen ... stub (names missing), and only in Save Data Manager for the moment
 - Added alternate menu exit keys : it is now possible to do something like "A/C:select, X:delete, Y:info, Z:whatever" in a single menu. This is preliminary work for Action Replay codes addition


So firmware development is continuing ! Everything is in good way :
data/images/20160225_please_disperse.jpg
Pseudo Saturn Kai development is going well. Please disperse.
(Screenshot from The Naked Gun)

data/images/20160225_nothing_to_see_here.jpg
Nothing to see here 
(Mr Nielsen, you're missing us )


On a positive note, I tested Bubble Bobble (listed as incompatible in Pseudo Saturn compatibility list), and it worked fine
I absolutely don't know why it works fine. I suppose that registers cleanup and running RAM cleanup code from ROM just before loading game helped a bit ... well at least it works



Completely unrelated note : I uploaded 10+ years old videos of me playing Tetris Attack puzzle mode ! You can enjoy the videos in my Tetris Attack page , or directly in the appropriate youtube playlist for theses videos.

data/images/20050105_ta_puzzle_ending.jpg
Tetris Attack puzzle mode ending screen

Read more Pseudo Saturn Kai : still WIP ...

The quick lazy brown dog jumps over the foxes ?

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 !

data/images/20150704_save_delete_menu.png
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 :

data/images/20160203_chars_katakana_raw.png
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 :
data/images/20160203_chars_francais_raw.png
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)
data/images/20160203_font_katakana.png data/images/20160203_font_francais.png
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)
data/images/20160203_font_test3_katakana_text_and_menu.png
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.
data/images/20160203_save_default_comment.png
セガサターン,シロ !


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 :
data/images/20160211_pskai_main_menu.png
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"

Read more The quick lazy brown dog jumps over the foxes ?

WIP : Saturn Save Data Manager, Pseudo Saturn Kai & USB dev cart, etc

Written by cafealpha 6 comments
Pseudo Saturn Kai  firmware development is currently paused in order to focus development into Save Data Manager application

Saturn Save Data Manager is an application in order to manage (copy, delete, etc) save data on your Saturn.
Basically, it is similar to the save data manager provided by Saturn BIOS, but also offers extra things, such as multiple selection of items to copy/delete, GPL license, and also save data import from various formats.

data/images/20160125_bupmngr_main_screen.tb.png
Saturn Save Data Manager main screen running on emulator.
It also works on real hardware, but I was too lazy
 to take a picture of my TV screen


At first, this Save Data Manager was made only in order to test Virtual Memory Cart behavior, so maybe user interface looks a little cheap, but I plan to improve this in the future according to first users eventual feedback


I really want to thank two people whose work helped to make this application :
 - Rockin-B : for his good old SaveGameManager application (yes, I copied the name of the application).
 - hitomi2500 : for his ss-save-parser application that really helped to understand Saturn Save Data structure. Also, I merged its Save Import related sources to my project, so that copying save data from dump file is possible directly on Saturn too


And, there's one screen that I need to show from ss-save-parser application : the "extract options screen". This is image is worth a thousand words when trying to explain how save data is arranged in Saturn backup RAM

data/images/20160125_save_data_structure.png
THE screen everyone need to see before
hacking Saturn saves data
Save data is arranged as header
(containing save name, comment, etc),
then blocks allocation table,
then data itself, with header data at
the beginning of each blocks.




Extra #1 : last month, I took a video of USB dev cart in action !
Nothing really spectacular however, but please watch it if you want to see what developing application with USB dev cart looks like
data/images/20151217_usb_dev_cart_demo.jpg
My dev laptop, a plain, not modded Saturn and USB dev cart,
ready for testing Saturn application on real hardware


Summary of the video (more details available in youtube page of the video) :
 - USB dev cart firmware update
 - CD-ROM unlock by using Pseudo Saturn hack
 - Upload and execution of program from PC to Saturn via USB, allowing testing of application performing CD-ROM access.


Extra #2 : with this USB dev cart, I could dump Shining Force Scenario 1 saves from Gosub .
You can find theses saves here.
data/images/20160112_gosub_sf3sc1_t.jpg
Backup cartridge with gosub's saves on it.
Thanks to Darius for providing me the cartridge

Gosub pushed each Shining Force character to their maximum competence on real hardware without using any cheat.
Really impressing work oO


Extra #3 : last month, my car reached its life achievement : 777777 kilometers :]
data/images/20160120_lucky_seven.tb.jpg
Wow. Many lucky seven. So beauty
Next challenge : 777 777 kilometers !


Read more WIP : Saturn Save Data Manager, Pseudo Saturn Kai & USB dev cart, etc

USB dev cart & SD card interface on a single cartridge

Written by cafealpha 1 comment
Classified in : Saturn, Programming, Mylife Tags : usb dev cart, kai, WIP
Last week, I populated the second "USB & SD card" dev cart ever

data/images/20160112_usb_sdcart.tb.jpg
USB & SD dev cart Rev 3.2

Why "second" ? Because the first "USB & SD card" dev cart I made is the one I'm currently using for dev :
data/images/20150716_memcart_rev2f.tb.jpg
USB & SD dev cart Rev 2f

PCB revision is different ... can you spot the differences ?

It can't be seen on the picture, but Rev 2f have a 128KB SRAM chip soldered on its rear side.
I actually don't use it, this is just a remain of the times I though extra RAM was required in order to get "SD Memory Cart" features to work.
After many tests, I could verify that it was not needed : SH-2 code for "SD Memory Cart" feature runs directly from Flash ROM, and 16KB+8KB of work RAM provided by games for Backup library is enough for my needs.
So I removed the routing for this SRAM chip on Rev 3.2 PCB

Another story, but about Rev 3.2 cartridge pictured in this article : I was about to trash it because I couldn't flash its CPLD firmware, and hence thought it was broken.
I first though that CPLD itself was broken (this may rarely happen when overheating it during soldering), so I removed it and soldered another CPLD, and ... same behavior
CPLD itself is detected by Quartus, but flash always fails at 98% of the flashing process. I (finally ) start to think it may be a power supply related problem, and ... bingo : CPLD wasn't 3.3V as expected.
In fact, this board features two 5V -> 3.3V power converter units (on PCB rear side, can't be seen on the picture above), a "spare" one not connected anywhere (just here in case of), and the "real" one, and I populated the "spare" one
In order to fix this, I didn't populated the "real" one, but instead connected the spare one to SD card and CPLD power supply line, and that's why there is a grey wire nearly USB connector



Final note : as I consider USB port for debug only, I don't plan to improve the architecture and routing of such "USB & SD dev cart", so I suppose its design will remain "messy and fat" for a while ...
But in the hypothetical case many talented developers will suddenly arrive in Saturn Homebrew scene and will want to develop games using both CD ROM for music and SD card for huge game data (yeah, I really want a Saturn game with gameplay/level/whatever data so large that it can't fit a CD-ROM !), I will re-design it in order everything fit in a standard cartridge shell

Read more USB dev cart & SD card interface on a single cartridge

Rss feed of the category