PPCenter :: devblog

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

Gamer's Cartridges temporarily not available ! (Edit: now available ♪)

Written by cafealpha 10 comments
Normal sales people make announcements when their things to sale are available ... I personally don't like aggressive advertisement, hence prefer to make announcement when things to sale are not available

So I don't plan to process Gamer's Cartridge for a while ... reason for this is simple : I can't go to post office during winter vacations (and probably won't have time for emails too), so I prefer to temporarily stop selling cartridge rather than asking people for waiting

Sorry, that's the only picture I found for this article
(Grabbed from here )

So I wish you nice winter vacations ! I don't know there, but weather here is cold and windy, hence well suited for playing Saturn

Edit (2017/01/12) : cartridges are back for sale ! More informations on my Saturn cartridges page.
During winter vacations, I found a couple of cartridges with "Rev 3.3 (a)" PCB (one revision before latest revision, only position of LEDs is different) while tidying up my apartment
BTW, happy new year

Read more Gamer's Cartridges temporarily not available ! (Edit: now available ♪)

Recovered from "cold" :)

Written by cafealpha 2 comments
I actually recovered a long time ago, but didn't had enough free time to write a new article until now
So I totally recovered from my pneumonia ... "Klaricid" helped me a lot to get rid about it. Many thanks to the doctors and many other people who helped me in theses hard times
Winter is coming, but I'm ready to face it

On a related note, I had a day trip to hospital last month for my cancer screening, and according to CT scan and blood analysis, everything is OK
"Smartphone game Pokemon GO forbidden in hospital"
From : director of the hospital

Work is keeping me busy recently, and that won't change until summer, but I keep doing Saturn stuff doing my spare time

Read more Recovered from "cold" :)

Catched a "cold" :/

Written by cafealpha 9 comments
Yes, a "cold" : at first I though it was just a cold, but regular medicines from doctor nearby and drugstore didn't cured anything, and it lasted for a around a week ...

Symptoms : 40℃ fever (36.5 usually),
completely dizzy,
cough again and again, etc

So I went to a larger hospital, and blood examination gave a CRP rate of 13 mg/dL ... typical limit for this is 0.30 mg/dL, so I understood that it was more serious than a cold ...
And X-rays examination showed what I was expecting : a pneumonia on left lung

So I can't guarantee I will answer emails this month, but I fought with more severe diseases, so I'll be back for sure

Update (2016/09/26) : Lost a couple of Kgs in the war, but I'm better now ! Medecine really does miracles
My pneumonia was a "walking pneumonia" (wikipedia) , and could be cured with antibiotics, hence without need to stay at hospital.

Update (2016/10/05) : I'm now 95% OK (still some cough, but not a lot). Thanks to seal1 and vbt for their support comments

Read more Catched a "cold" :/

Cartridge labels available !

Written by cafealpha no comments
Finally available :]

Last June, I initially wanted to release Saturn Gamer's Cartridge with custom label, but some unexpected problems regarding label quality (not resistant to water) delayed its release, consequently, Gamer's Cartridges manufactured until now had only shell, but no label.

"Stronger" label retained for use by Gamer's Cartridge is designed for car tuning purpose, so waterproof, and even alcohol proof ! I suppose this will satisfy the requirements of typical Gamer's Cartridge user
(※) Just a (common sense) note : while labels are waterproof, cartridges themselves aren't  So no, you still can't play Saturn while taking a bath

Cartridges with their labels.
Bottom-right one (without LEDs) is USB dev cart.

Custom labels were the last main milestone regarding Gamer's Cartridge design : I won't design custom boxes for my cartridges.
Why ? Because I want Gamer's Cartridge users to ... use their cartridges, not collect (shelf) them

You are Saturn Gamer ? Want to share your Saturn saves with your emulator or friends ? Want to enjoy Dezaemon 2 game but don't want to purchase a modchip + memory cartridge ? Then Saturn Gamer's Cartridge is for you

Special thanks to my friend Darius who selected paper, printed labels sheet, and cut each labels
Darius provided pictures he took when cutting labels, so please enjoy the labels making-of

Label sheet scanned just after print-out.
Red/blue lines are used as help when cutting labels.

Tools used : ruler and cutter.
And also Darius' God Hand and eyes (not pictured)

In order to optimize time , labels are first cut row per row.

After row cutting, labels are cut individually

Read more Cartridge labels available !

Pseudo Saturn Kai no longer working on Action Replay ... and its rebirth !

Written by cafealpha 2 comments
So TehNewParalyzer told me he likes Pseudo Saturn Kai and plans to put many Pseudo Saturn Kai videos on his youtube page.
Very good ! That's great to see people still enjoying using Saturn nowadays

Metal Slug with Action Replay cartridge,
compatible until you press Start button
(Click in order to see youtube video)

At that time, his last video was about Uno DX, and was experiencing issues with it.
That's a bit weird, because this game shouldn't cause compatibility/problems ... maybe a bad burn or bad dump of the game ?

By looking at the problem in details (everything is explained in his videos, which is very convenient  ), I see that CWX loader doesn't works anymore for all his games, even the ones that played well before, but JHL loader still works well.
Very weird : CWX hasn't the best game compatibility, but should work on all known models of Saturns

So I request TehNewParalyzer to give details about this problem :
1. From loader selection menu, press B button, select "Self Test", and select "Test once only".
Please let me know if error message is displayed in "Main prgm" or "Bootstub" lines.
2. Please try CWX loader with an original game, and tell me if it booted or not.
3. If possible, please try with game burned on another CD-R brand and/or burned a different (lower or higher) speed than usually, and tell me if it boots with CWX loader or not.
4. If possible, please try with another Saturn and tell me if you can get games booting.
5. If you have a spare Pseudo Saturn cartridge (Action Replay, or Game Shark, or Memory Cart Plus, or any other clone), please give a try with it and tell me if you can get games booting.

Fortunately, there wasn't need to test after step 1 : self test feature was throwing a CRC error on when checking firmware's main program.
Okay, so it looks like cartridge flash ROM is corrupted, and consequently few areas in main program code can't longer be executed.
Why Action Replay's flash ROM would corrupt ? I don't know exactly, but I suspect :
1. Extra feature in Uno DX, corrupting cartridge's firmware in the case you use too much +4 cards
2. Poor quality of Action Replay flash chips.

Rather than thinking too long about causes, let's take measures in order to fix the problem : re-flashing the cartridge should do the job.
And it did the job : no more CRC error

Correct self-test results after firmware re-flash.
(Click in order to see youtube video)

One of the purposes of Pseudo Saturn Kai's self test feature is to help Action Replay users : by the past, I had few reports from other users having their Action Replay no longer working, so I thought about a feature in order to check the integrity of their flash ROM.
I'm glad this feature was useful to at least one Pseudo Saturn Kai user


For those who want more details about Action Replay flash chips :
First, Action Replay cartridges (and their clones) are using old flash chips no longer produced, which means theses chips are either old, or counterfeit. In both cases that means the quality of this chips is a bit shady.
Moreover, Action Replay original firmware may shorten flash ROM life length, because it writes to flash ROM when cheat codes selection is changed, or when cartridge internal save functionality is used : the more you store save data, or select Action Replay codes, the more likely it is to be damaged.

There are ways to improve this problem : the simplest one is to use SST39SF flash chips (5V logic, still produced ), but that requires changes on Action Replay PCB, and to make several changes Action Replay firmware (because write access to new flash chips is not compatible with old ones).

Changes in PCB is probably not a real problem for Action Replay manufacturers, since Action Replay PCB is shrinking year by year (in order to reduce manufacturing costs) so I suppose that Action Replay manufacturer still have at least one guy capable of designing PCB ...

Changes in Action Replay firmware is probably what's preventing manufacturers from using new flash chips : people who wrote Action Replay original firmware (around 20 years ago !) are probably retired now, and I doubt there are still people fluent with SH2 assembly working in Action Replay manufacturing field

A little unrelated (but I'm too lazy to create an article just for that) : Pseudo Saturn Kai compatibility list is growing little by little
There are currently 259 games available in the compatibility list, so there are high chances to find your favorite game listed in it

Special thanks to people who contributed to this list, especially Thales Peres, who provided test reports for around 150 games !

Read more Pseudo Saturn Kai no longer working on Action Replay ... and its rebirth !

[Dev journal] Pseudo Saturn Kai game loader weird bug, and its bugfix

Written by cafealpha 3 comments
(Note : this bug was fixed something like 3 months ago. Pseudo Saturn Kai I first released last month works well  )

First : of course, old versions of Pseudo Saturn (versions up to 0.832) work
But who knows what may happen when doing software engineering (and any other engineering in fact) : it's very common to break something without directly modifying anything to it !

So it happened : in December 2015, Pseudo Saturn Kai beta tester reported that it wasn't possible to load CD-R game.

What game loader bug looks like.
disc_type=0x0003 means that CD-ROM authentication failed

As usual, I first asked if something was wrong on tester side  "Bad game dump ?", "Bad burn to CD-R ?", "Did you do something else bad ?", etc.
(I know that's a bad habit to suspect beta testers doing something wrong, but it sometimes help in fixing problems)

Beta tester was actually doing his job well, and bug couldn't be reproduced in next beta version, so I though it was caused by outdated intermediate file in build process (this happens, for example when I modify header file only : I'm too lazy to fix makefiles about this ) : cleaning up whole project and rebuilding everything prevents such kind of problem.

But I wasn't satisfied with such "half-baked" bugfix, and actually could hear it saying to me "I'll be back"

And, two months after that time, I receive same bug report from same beta tester ...
Well, at least, I didn't had to re-ask him if he tested correctly or not : it was clear that this was December 2015 bug returning back.

First, let's verify do simple things and try to reproduce the bug here : my "main" dev Saturn is a modchipped one that plays CD-R, even when firmware is reported not working. Trying with a "plain" (unmodded) Saturn actually reproduces the bug : cartridge boots, but definitely doesn't want to play CD-R.
In same conditions, let's try with an old version of the firmware : oh, it can play CD-R

So I could "feel" the bug, and its capricious nature.
"Typical" capricious bug is "uninitialized global variable" one, that reproduces after doing the same action twice, or after going to a given screen, returning back to another screen, and doing a given action.
Saturn has relatively few RAM available, and I don't want to use dynamic memory allocation on such "low specs embedded device", so such "uninitialized global variable" happens from time to time.

But this bug was even more capricious than "uninitialized global variable" one : same action reproduces the bug with a given firmware, but can't reproduce the bug with another firmware

First, since I have no idea about the cause of such bug, I added some debug screen that displays few details (= the return values of each functions called when unlocking the CDROM unit), and also some text-based logs, plus RAM dumps stored SD card : that was one of the reasons why I made SD card-based cartridge for Saturn : it allows to prepare bug report on user side

So I "just" have to wait until bug is reproduced with next versions, and beg for logs/dumps/etc on that time.
Of course, the bug reproduced, and of course ... logs/dumps/etc didn't helped a lot

Game loader failure screen.
Basically, it shows that something is wrong after
calling cd_move_sector_data_cd_auth function.

Fortunately, there are some explanations about Pseudo Saturn CD unlock exploit on assembler forums :
1. Use the Put Sector Data command to put a whole bunch of sectors into the CDB - all with FAD 150, Mode 2 in their headers.
2. Call End Data Transfer to push them into the selector.
3. Call Copy Sector Data, starting a copy of all those fake sectors into the selector that the Authenticate Disc command will be using.
4. Immediately (like 15 microseconds later immediately) call the Authenticate Disc command, specifying the same selector.

"Immediately" : firmware have to be fast on step 4.
And what changes in CD-ROM unlock code from a firmware beta version to another is basically its execution start address.
So I started to think : "maybe CD-ROM unlock code will work better if loaded from a constant address ?" : to do this, I moved all CD-ROM code to a separate stub, loaded from a constant address (0x06004000).

And bug didn't reappeared so far

Okay, this way of fixing things without a proper verification is a bit dirty
But it works, and that's the most important
(I suspect the cause of this bug related to SH2 cache : if SH-2 have to refresh cache during time critical section of CD-ROM exploit, code takes too long to execute, and CD-ROM exploit fails ... it's just a guess, and I realized about it after fixing it.)

Special thanks to Stac, Shazz and A Murder of Crows for beta testing
And special thanks to jhl and CyberWarriorX for detailing Pseudo Saturn's CD-ROM exploit ! This helped a lot in fixing this bug

Read more [Dev journal] Pseudo Saturn Kai game loader weird bug, and its bugfix

RC2 - The good one

Written by cafealpha no comments
Pseudo Saturn Kai Release Candidate 1 : flasher utility wasn't very intuitive to use → fixed.
Release Candidate 2 seems to work fine, so ...

I officially declare Pseudo Saturn Kai version 6.036 as first publicly released version

Want to upgrade your cartridge firmware ?
No problem, firmware installer, source code, and many other things are available from /pskai/#download address

Many thanks to beta testers who could make this project mature enough to be releasable
And of course, many thanks to Pseudo Saturn team too

Note : this doesn't means that Pseudo Saturn Kai is bug-free !
But, I consider that Pseudo Saturn Kai is stable enough to open it to circle wider than beta testers. If you find a bug, please report it in Pseudo Saturn Kai official thread .

On my side, releasing Pseudo Saturn Kai was the occasion to :
 - Release Gamer's Cartridge (page is still not up-to-date, I shall update it soon)
 - Delete beta builds for testers : here is the delete log as a souvenir :
Response:    250 Deleted Planche_20160514.png
Response:    250 Deleted Planche_20160514.pdf
Response:    250 Deleted pskai_20160426_wip.7z
Response:    250 Deleted pskai_20160424_wip.7z
Response:    250 Deleted pskai_20160421_wip_6028.7z
Response:    250 Deleted pskai_20160416_custom_logo.7z
Response:    250 Deleted pskai_20160415_wip.7z
Response:    250 Deleted pskai_20160414_wip_6025.7z
Response:    250 Deleted pskai_20160414_wip_6022.7z
Response:    250 Deleted pskai_20160412_wip_6019.7z
Response:    250 Deleted pskai_20160412_sakura_wars_deza2.7z
Response:    250 Deleted pskai_20160411_sakura_wars.7z
Response:    250 Deleted pskai_20160410_wip.7z
Response:    250 Deleted 20160409_jhl_cd_hack.7z
Response:    250 Deleted pskai_20160408_ubc_test_v2.7z
Response:    250 Deleted pskai_20160408_ubc_test.7z
Response:    250 Deleted pskai_20160408_sdm_flasher.7z
Response:    250 Deleted pskai_20160406_ubc_debug.7z
Response:    250 Deleted pskai_20160404_vmem_test.7z
Response:    250 Deleted pskai_20160403_wip.7z
Response:    250 Deleted pskai_20160402_jhl_cd_hack-v2.7z
Response:    250 Deleted pskai_20160331_jhl_cd_hack.7z
Response:    250 Deleted pskai_20160331_O3.7z
Response:    250 Deleted pskai_20160329_compat_vmem_test.7z
Response:    250 Deleted pskai_20160328_wip.7z
Response:    250 Deleted pskai_20160326_wip_saves.7z
Response:    250 Deleted pskai_20160324_ftx.7z
Response:    250 Deleted pskai_20160324_ftx_flasher.7z
Response:    250 Deleted pskai_20160323_linktest.7z
Response:    250 Deleted pskai_20160320_flasher_ftx.7z
Response:    250 Deleted pskai_20160318_satlink.7z
Response:    250 Deleted pskai_20160311_ftx_sdm.7z
Response:    250 Deleted SMPSCL5_20160311.7z
Response:    250 Deleted flasher_arp_20151005_tp.7z
Response:    250 Deleted 20160308_pskai_wip_flasher.7z
Response:    250 Deleted 20160308_pskai_wip.7z
Response:    250 Deleted 20160306_pskai_savemanager_flasher.7z
Response:    250 Deleted 20160305_FlashSave000.7z
Response:    250 Deleted 20160228_pskai_savemanager_flasher.7z
Response:    250 Deleted 20160226_pskai_flasher.7z
Response:    250 Deleted 20160226_pskai_lowram.7z
Response:    250 Deleted 20160223_pskai_wip.7z
Response:    250 Deleted 20160222_pskai_latest.7z
Response:    250 Deleted 20160222_pskai_5.776.7z
Response:    250 Deleted 20160216_pskai_loader_fix.7z
Response:    250 Deleted 20160216_pskai_test.7z
Response:    250 Deleted 20160215_pskai_wip.7z
Response:    250 Deleted 20160214_pskai_wip_jhl_cd_hack_test.7z
Response:    250 Deleted 20160214_pskai_wip.7z
Response:    250 Deleted 20160210_pskai_wip_saves.7z
Response:    250 Deleted 20151230_pskai_wip_saves.7z
Response:    250 Deleted 20160209_ReyVGM_test2.7z
Response:    250 Deleted 20160209_ReyVGM.7z
Response:    250 Deleted 20160205_ReyVGM.7z
Response:    250 Deleted 20160204_ReyVGM.7z
Response:    250 Deleted 20160203_ReyVGM_test.7z
Response:    250 Deleted 20160202_ReyVGM_test.7z
Response:    250 Deleted 20160129_commslink_saves.7z
Response:    250 Deleted 20160127_pskai_shazz.7z
Response:    250 Deleted 20160129_vfk_test.7z
Response:    250 Deleted 20160126_bkram_planetweb.7z
Response:    250 Deleted 20160125_bkram_test.7z
Response:    250 Deleted 20160124_bkram_test.7z
Response:    250 Deleted 20160112_sonicr_save_test.7z
Response:    250 Deleted 20151230_pskai_hybrid_device.7z
Response:    250 Deleted 20151223_pskai_v2.7z
Response:    250 Deleted 20151223_pskai.7z
Response:    250 Deleted 20151219_pskai_bootstub.7z
Response:    250 Deleted 20151218_flasher_src.7z
Response:    250 Deleted 20151218_pskai_wip.7z
Response:    250 Deleted 20151214_pskai_rmenu_dbg.7z
Response:    250 Deleted 20151110_pskai_spi_fix.7z
Response:    250 Deleted 20151002_pskai_selftest.7z
Response:    250 Deleted 20151031_pskai_scu_test.7z
Response:    250 Deleted 20151030_pskai_sd_card_debug.7z
Response:    250 Deleted 20151028_pskai_fat_io_lib.7z

Completely unrelated : I'm experiencing troubles with my email provider (*1), and consequently plan to change to another one soon.
(*1) : mail provider is sometimes messing up with email titles, such as using neighboring (unrelated) conversation title when sending email ...


If you're waiting for one week or more for a reply from me, please re-contact me
Email timeout value is "one week" : I'm not a machine, so please don't mailbomb me if I can't reply you soon

Read more RC2 - The good one

Wanted : custom cartridge label

Written by cafealpha 4 comments
Good and bad news for people interested in my cartridge .
The good news is that cartridge (Saturn Gamer's cartridge) and its firmware (Pseudo Saturn Kai) are more or less ready for release
After release, project sources (PCB design files, and Pseudo Saturn Kai source code) will be publicly available, and few carts (not a lot) will be available for sale.

The bad news is that there are still few thing I would like to improve before release.

Among theses things I would like to improve, there is a custom label for cartridge case : I'm currently using second hand Action Replay cases for my project, and really don't like Action Replay label.
In fact, I removed theses ugly labels ... it was hard to do (I don't know why they're using glue so strong !), but I really couldn't stand theses out-fashioned labels

Rather than designing label by myself, it's probably better to ask everybody about their favorite design for Gamer's cartridge label !
In fact, as labels will be printed by batch of 12 per page, it's OK to print different labels at once, then, let future user choosing his favorite label when ordering cartridge :)

Rules :
 1. Width : 946 pixels, Height : 592 pixels.
Adding some margin around your label is encouraged.
Of course, larger images are accepted, but please respect image ratio, and please keep in mind that it will be resized to 946x592 when adding text or small details.
 2. Image format supported on my PC : PNG or JPG.
(Please ask if you prefer other format.)
 3. Display following cartridge description text in English :
        Saturn Gamer's cartridge
         ✔ Plays CD-R game backups. (※)
         ✔ Memory Cartridge. (※)
         × Cartridge RAM.
         × Play games from SD card.
        (※) Some games may be incompatible.
 4. Copyrighted images usage forbidden.
 5. Deadline : a couple of weeks (= middle of May 2016).
 6. You allow me to re-use your label in this and future projects.

Tips :
 - If possible, please use plain color (black, white, or anything else) for label outline : as labels will be hand-cutted, I plan to add some margin around label itself, in order to avoid defect due to bad cut. (2017/03/12: my friend Darius does good job regarding label cutting, so the outline is not required )
 - It's OK to add some non-English text, but in this case, you need to display cartridge description text in English, as described in rule 3.
 - (Added 2017/03/12) Please use relatively large font for text on the label so that it can be readable after printing. At 946x592 dimensions, recommended text height is over 25 pixels. This obviously depends on font used, contrast with neighboring background, etc.
 - (Added 2017/03/12) It's OK to remove the "× Cartridge RAM." and "× Play games from SD card." messages if theses doesn't fits in the label.

Reward :
 - Your name in Pseudo Saturn Kai firmware credits

How to submit :
Please submit your label here in the comment of this article, or directly by contacting me.
In both cases, file can't be uploaded, so please provide your label(s) via external host site (imgur, sendspace, or anything else).
You can also submit your label to Pseudo Saturn Kai official thread on segaxtreme forums.

Notes :
 - I may reject dull/offendant/whatever label(s).
 - Cartridge case will be available in both black or white colors, and black will be the most available color.
 - Custom label for USB dev cart is welcome too.

Want to make your own label ? Great :)
And want some stuff to start from ? No problem, you can find some cartridge pictures below :

Cow logo, used in cartridge PCB :
 - vache.gif : initial image from which everything started.
 - vache0.bmp : first version of vache logo (silkscreen only, bottom of the PCB).
 - logo_vache.png : latest version of vache logo (silkscreen, solder mask, top right of the PCB).
 - vache_06_2_2+cornes2_-_finale.png : pixel art image used to make logo_vache.png.

Pictures of cartridge PCBs :
 - 20140314_rev2a_front.jpg : Rev 2a cartridge : Gamer's cartridge ancestor, nothing worked.
 - 20140918_vmem_first_ver_sat.jpg : First time Virtual Memory Cart worked on real hardware : PCB and dev Saturn used at that time.
 - 20140918_vmem_first_ver_tv.jpg : First time Virtual Memory Cart worked on real hardware : debug stuff displayed on sreen.
 - 20150628_rev2f_front.jpg : My Rev 2f cartridge used to debug Pseudo Saturn Kai.
 - 20150718_memcart.png : Rev 3.1 cartridge preview, last step before ordering it to PCB house.
 - 20160119_logo1.jpg : Cow logo, from vache0.bmp.
 - 20160119_logo2.jpg : Cow logo, logo_vache.png (available in Rev 3.3 and Rev 3.3a PCB only).
 - 20160126_rev33_front.jpg : Rev 3.3 PCB, front side.
 - 20160224_rev33_raw.jpg : Rev 3.3 PCB, ICs except SD card socket unsoldered.
 - 20160305_rev33a_front.jpg : Rev 3.3a PCB, front side.
 - 20160315_rev31_back.jpg : Rev 3.1 PCB, rear side.
 - 20160318_pskai_main_screen.jpg : Pseudo Saturn Kai main screen.
 - 20160324_rev32_rear.jpg : Rev 3.2 cartridge rear side.

Images related to USB dev cart :
 - 20120709_usb_dev_cart_logo.jpg : My favorite logo for USB dev cart
 - 20160308_routing_printout.jpg : very old (Rev 1c proto ?) routing printout.

Not interested in designing a cartridge label, but interested in Saturn cartridge ?
No problem, the Saturn Homebrew Cartridges's gallery section is waiting for you

Saturn Homebrew Cartridges gallery
Click on the link if you want to see more

(Added 2017/03/12) : All the images above can be used without restrictions.

: everything is now available here.
Future contributions are always welcome

Re-edit : here is what it looks like after printing :
Gamer's Cartridges with labels
Thanks to jjennings089 for label design and printing

Read more Wanted : custom cartridge label

Pseudo Saturn Kai development : USB dev cart support

Written by cafealpha 7 comments
It's a long time USB dev cart is supported on Pseudo Saturn Kai, but it wasn't tested seriously elsewhere than my development environment.
... Until now

(Well, in fact, it was "until a couple of months ago", because I didn't had time to write this article earlier.)

So, a USB dev cart new user (Shazz) wanted to do some Saturn development : great

USB dev cart demo
USB dev cart demonstration video (youtube).
I used Shazz's USB dev cart to make this video,
in order to be sure it worked well before sending it to him.

His dev PC runs under Linux ... I personally use Windows only, so I can't guarantee USB dev cart + Pseudo Saturn Kai will work correctly.
"Maybe it will run fine with antime's ftx tool".
Of course, it didn't worked

My first suggestion was "please use an old PC with Windows installed lol", but Shazz don't like such half-concession, and really wanted his USB dev cart to work directly on his Linux dev PC.
As an USB dev cart manufacturer, I agree with him.
As a programmer already busy with other projects and real life, I disagree ^^

But, Okay, Shazz is actually a cool and chatty guy, and sharing same mother tongue with me, so I will do it for him

The cause of the problem happening when using Linux + USB dev cart with Pseudo Saturn Kai is actually still unclear.
With original USB dev cart firmware (nicknamed as "blinking screen", or sometimes "epileptic screen"), executing a Saturn program with "ftx" utility works fine.
However, with Pseudo Saturn Kai installed, the same operation didn't worked and Pseudo Saturn Kai main screen was freezing (? or continuing doing menu things ? I already forgot about details about this bug  It's really time to write it on this blog before I forget it completely ...) instead of switching to uploaded program.

I suspected Pseudo Saturn Kai ignoring two successive commands from USB dev cart ("executing" a program is actually sending an "upload" command, then "execute from specified address" command), especially because Pseudo Saturn Kai can't check for USB I/O continuously : it "just" does it once every frame.

Since I really couldn't understand why this could cause that "upload, then execute" problem, I decided to countermeasure it by adding a new "upload and execute" USB dev cart command.
And on the same occasion, I also added the "à la carte" reset flags in this command : "one stone, two birds", as people in Japan would say ... I suppose that other people would rather say "one USB dev cart command to rule them all" :D

One more problem about this "Linux + USB dev cart + Pseudo Saturn Kai" problem was that I couldn't verify if everything is working fine or not.
Shazz was OK to do some beta testing, but he can only upgrade his USB dev cart via USB link, so "breaking" USB transfer would brick his development cartridge.
Around software development, I experienced enough Murphy's law and its corollaries to be sure it won't work on first try :
 - "If it can break, it will break"
 - "The less you test, the more likely it will fail on basic pattern"
 - "The more you test, the more likely it will fail on unexpected pattern"

So I added Pseudo Saturn Kai "demo" version
As its name suggests, it actually doesn't do anything special else than showing menus, but that's enough in order to test communication with PC.
Additionally, I also displayed some debug messages to screen when doing USB related stuff.

Pseudo Saturn Kai demo version
showing USB activity logs on screen
First two lines logs USB dev cart firmware version
verification : even if used with old (not Pseudo Saturn Kai)
version of firmware, transfer utility works

After testing many buggy versions of the firmware, Shazz tried the "20160323_test4" test pattern with his "parallax" test program, and ...

Could upload and execute libyaul example program
from Linux via USB dev cart and Pseudo Saturn Kai !

Thank you Shazz for testing Pseudo Saturn Kai + USB dev cart Linux support !

USB debug port related support is always a hell for me and cartridge users (may not work on a given OS, etc), hence there are no plan to add it in release version of my cartridges.
But even if it requires drivers and custom transfer software on PC side, debug USB connectivity is a must have when developing things on Saturn, so rather than dropping USB debug port, I plan to make a "USB + SD card interface" cartridge for Saturn developers only.
And of course, I still continue to manufacture USB dev cart

Read more Pseudo Saturn Kai development : USB dev cart support

Be No Sqr

Written by cafealpha no comments
Just a quick article about a Sega Master System demo made by a good friend : Be No Sqr

Be No Sqr description page screenshot
Cut in two halves, because ... my laptop screen is wide type
(10 years old laptops had larger and taller screens ... what a pity)

I didn't participated in this project ... in fact, I don't know anything about Z80 assembly, but that's cool to see my own nick listed in the credits page

Be No Sqr is one of the participants of smspower's 2016 coding competition , so don't hesitate to vote for it

Read more Be No Sqr

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

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

Pseudo Saturn Kai v5.820 : status display was a little "empty"
And USB port was incorrectly detected when running from Action Replay ...

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 :

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 :
Pseudo Saturn Kai development is going well. Please disperse.
(Screenshot from The Naked Gun)

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.

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 !

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)
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)
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"

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.

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

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
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.
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 :]
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
Last week, I populated the second "USB & SD card" dev cart ever

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

Happy New Year !

Written by cafealpha no comments
First post in 2016 Happy new year !!!

Last week was "new year's bargain" here in Japan.
So, no, I didn't spent my whole day in choosing clothes
Instead, I went to electronics store, and bough a 128GB SD card for only 5000 Yens (around 40 US dollars)

I use this SD card in order to watch movies on my Pandora during lunch time

Pandora : Youtube, Firefox, Thunderbird, mplayer,
and real keyboard in my pocket

Read more Happy New Year !

Rss feed of the articles