PPCenter :: devblog

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

Merry New Year !

Written by cafealpha 6 comments
I sometimes check this blog in order to verify if there are some interesting news, without success, and then I realized that I am the only author of this blog (), hence though I should write something here in order not to deceive my countless fans.

So, sorry for the lack of news recently, I was busy with Saturn things, but also in deciphering Christmas presents lists ... and now busy in tidying up lego blocks and trashing used wrapping paper

I hope you're spending nice Christmas vacations ! I'm a little late for wishing you a merry Christmas ( ), and a little early to wish you an Happy New Year ( ), hence the broken title


So what's new with my Saturn projects ? In fact, nothing worth writing an article, but here is a short (and probably incomplete) list anyway :

 1. SD Memory Cart : when overwriting save on Saturn side, keep the old save file on SD card (but remove it from saves list, of course).
Basically, it automatically keeps old saves somewhere on SD card, so that it is possible to revert to a previous state. I hope Saturn RPG fans will like

 2. USB dev cart mode : when USB cable is detected, allow to unlock CD-ROM and then prompt for data upload.
This feature allows to makes tests on Saturn main program using data from CD-ROM without the need of installing a modchip, and without the need of burning a CD-R on each program changes
Special thanks to Shazz for reminding me to add such a feature, antime for wiring FTDI's PWREN signal to Saturn (it was unused for 3 years, but it was useful in order to detect USB connection, and hence hiding USB dev mode for normal users not using USB), and of course CyberWarriorX and jhl for Pseudo Saturn

 3. PCB changes : basically removing few debug "in case of" stuff, and also moving SD card socket in order to fit better with cartridge shell.
It is still WIP, but plan to send the updated gerber to the PCB house on next month.

 4. Few changes to the sources of yabause I'm using for testing my projects.
Especially, I added position save/restore and keyboard shortcut to each debug dialogs ... long time I wanted to do this

 5. In Backup Data Manager, some additions to "Import" feature : backup data dump file read and parse was done a while (4-5 months ?) ago, I just added something to select where (Internal Memory or Cartridge or Floppy) to save selected saves, and plan to port save data extract algorithm next month or so
Thanks to hitomi2500's ss-save-parser project, such "Import" feature is easy to integrate in my Backup Data Manager project


Last but not least, I also want to thank Stac user on Assembler forums
He's doing good job in beta testing, and thanks to his reactivity and good communication, project is progressing faster than I was expecting.
Beta testing is far from being a funny job, especially with me as main programmer (), and when testing requires to play games (this requires time, and bugs on my Saturn project may lead to loose of progress in game), so once more, thank you 

Read more Merry New Year !

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

Firmware development - will it work somewhere else than in my dev Saturn ?

Written by cafealpha 6 comments
I'm still developing the firmware for my custom cartridge, and it worked enough so that I could take a video of it running on real hardware


data/images/20151028_pskai_sdcard_test.jpg
Click on the image in order to see its youtube video.
You can also click here in order to download .avi file.


Video may be blurry, so here are some additional pictures :
data/images/20151029_testcart_usb.tb.jpg
USB & SD card cartridge.
This is the cartridge I mainly use for testing on real hardware
(USB port is used for debug purposes)


data/images/20151029_testcart_beta.tb.jpg
SD card cartridge for Saturn.
This is the version I plan to release in the case development continues well


data/images/20151029_flatcube_from_sd_card.tb.jpg
Flatcube demo loaded and executed from SD card.
This picture is here in order to put a link to the homepage of flatcube demo author


And last but not least, many thanks to beta testers for their cooperation and patience

data/images/20151028_pskai_bt2_saturn.tb.jpg
Beta cartridge loaded on modded Japanese Saturn.
Thanks to
MeteK for beta testing and taking this picture
Last week, MeteK reported that basic SD card access worked on his Saturn

data/images/20151028_pskai_bt1_screen.tb.jpg
Pseudo Saturn Kai System Information screen.
Thanks to Alexandre Souza from www.tabalabs.com.br
for beta testing and taking this picture 

data/images/20151112_tabajaralabs_noshell.tb.jpg - data/images/20151112_tabajaralabs_shell.tb.jpg
Additional pictures from Alexandre : cartridge without, then with shell.
Alexandre is currently trying to 3D print cartridge shells. Please do your best


I still can't getting things working on Alexandre side : SD card doesn't respond to SPI requests from Saturn via my cartridge ... I suppose this is due to a bad hardware design on cartridge side, but I still need to investigate about this ...

Edit (2015/11/11) : it is fixed and verified here
Fortunately, it was not an hardware error, but a firmware (SH-2 side) error.
About details : I access SD card by using SPI protocol, and the reason some cards couldn't be initialized was due to the fact that commands were incorrectly received by SD card.
Sending a dummy synchronization byte before sending command to SD card fixed the problem.
data/images/20151111_sdtest_satlink.tb.png
Log taken from my dev Saturn : first half is SD card initialization sequence,
and second half is data blocks reading.

data/images/20151111_sdtest_yabause_log.tb.png
It works under custom build of yabause too
Thanks to this, most of the tests could be done on PC,
which saved a lot of development time.
Thank you yabause team



After doing some testings on my side, I could verify that :
 - SD card access works fine on all the 6 Saturns I own
 - Some SD card can't be accessed via my cartridge, while the others work fine. (← fixed)

data/images/20151102_test_saturns.tb.jpg
Saturns used for testing.
The one on the top of the picture is my good old dev unit

data/images/20151102_test_sd_ng.tb.jpg
SD card that aren't recognized by my cartridge.
Edit (2015/11/11) : I fixed firmware and 32GB micro SD card above was recognized
(I didn't tested with the other SD cards, but I suppose it is now OK too.)

data/images/20151102_test_sd_ok.tb.jpg
SD cards that were correctly recognized by my cartridge.



To conclude this article, I have to say than this project doesn't make exception to Muphy's Law :
Anything that can go wrong will go wrong

Beginning of year (2015) : Virtual Memory Cart related debug. After verifying that it has the chance to work, I temporary stop its development, mostly because I was bored to continue development of this feature ^^;
Until this summer : a lot of struggle with Pseudo Saturn 0.831/0.832/flasher/etc related things.
September : SD card library related troubles. Try to get a solution by using -and trying to fix- thinfat32 library. Using fat_io_lib was a better choice, thank you hitomi2500 for your advice about this library
October ~ Now : Troubles with SD card on Alexandre side ... will work if another SD card is used (currently waiting for test results) ?

Anything that can go wrong will go wrong
But at least, beta cartridge half works, so I can safely continue its development


I plan to release the first batch of cartridges with SD card included, so that there won't be incompatibility issues on user side.
As my project is a low cost one, and also because it won't load commercial games, I plan to sell the cartridges with low cost (8GB or maybe 16GB) SD cards.
Edit (2015/11/11) : SD card compatibility is likely to be fixed, and as far as possible I don't want to do SD card stock management/etc, I will probably release cartridges only.
There still no release date to announce, because some fixes/features addition/testing/etc is remaining, and also because I mostly do this for fun

Read more Firmware development - will it work somewhere else than in my dev Saturn ?

End of chemo :]

Written by cafealpha 4 comments
Good news : this month, I took my last chemo pills

data/images/20151021_ts-1_last.tb.jpg
Last chemo pills (white & orange capsules),
and medicine in order to cover chemo side effects.
Yes, I took a picture of my last chemo pills in order to celebrate this event



And even better news, the physician in charge of me told me that it should be OK not to continue chemo treatment
data/images/20151030_pet_ct_report.tb.jpg
PET/CT results.
Basically, it says "both PET and CT didn't shown anything weird".
I'm so glad of theses results that I hesitate to frame this test report ^^

Of course, it doesn't means my cancer is completely cured - 5 years without cancer relapse are needed to say everything is OK -, but at least last month's PET/CT scan didn't shown anything, so this is comforting for the next few months ...


Here is a "one page" timeline of the treatment of my cancer (= stage 4 tongue cancer).
April 2014 :
Small mouth ulcer + pain in left ear : consult Otolaryngologist doctor.
On first consultation, I get medical prescription of mouthwash liquid.
No improvement after 2~3 weeks of treatment, so I return to Otolaryngologist doctor, and I was told that I should get "a test of my cells" (doctor didn't wanted to say "biopsy" keyword ...), so I receive a "letter of introduction " to a bigger hospital.
May 2014 (first half) :
Biopsy, one week after, I was told "you got cancer".
I ask the stage : "maybe second stage or so". I ask a "letter of introduction " to a even bigger hospital.
May 2014 (second half) :
First consultation to the "even bigger hospital" + PET, CT, etc tests. Cancer stage was diagnosed to 4a.
One week after first consultation, I am hospitalized during 10 days in order to receive intravenous chemo (5FU + Nedaplatin).
June 2014 :
Commute to hospital (twice a week) in order to follow up chemo side effects.
July~August 2014 :
Hospitalization for surgery (tongue resection, neck lymph node dissection, tongue reconstruction).
Around 9 hours for surgery, 7 weeks for hospitalization, it was really hell ...
October 2014 :
Start of oral chemo (TS-1).
Blood test every 3 weeks.
If everything is fine (= blood test don't show bad results), I take this chemo for a year.
Winter 2014~2015 :
PET scan show abscess in chin ... one week after PET results, it was visually visible.
Tried A LOT of antibiotics, none worked, so the physician who operated my tongue and neck manually removed meat around the abscess ... as a result, there is a small cavity on my chin, but at least abscess is cured
2015 (first half) :
Blood test every 6 weeks, plus CT scan every 3 months.
Basically, everything is fine
(I just skipped 2 weeks of TS-1, because of chemo side effect)
End of September 2015 :
Annual PET scan. Was nervous about results, but everything was fine
It's safe to stop TS-1, and next blood test is scheduled 3 months later.
It was a long time I go out from hospital without medical prescription sheet ^^;
October 2015 :
I take some few TS-1 capsules I skipped during 2015 first half.
Don't tell this to my doctor Normally I must trash chemo drug I couldn't take during prescription period, but it's really a waste IMHO.

Read more End of chemo :]

libfat : maybe you need to loose some weight :D

Written by cafealpha 3 comments
So as you may know, I'm (still) developing the hardware/firmware/everything else for my SD card-based Saturn Cartridge.

One the main module for the firmware of this cartridge is File System access library.

As you may know, there are many File System existing in real worls : FAT, NTFS, exFat, ReiserFs, etc.
And in my project, I choose to use FAT32 in order to access files and directories.
Why FAT32 ? Just because it offers the best rate of advantages vs disadvantages in my project scope.
Advantages :
 - Available everywhere, from Windows 98 to every Linux distribution.
 - Detailed (?) specs available on MS website, lots of free source code available elsewhere.
 - Little resource requirement (at least 1~2KB of work RAM, and few tenths of program memory for code).
Disadvantages :
 - A little hard to understand why internal data structure is so messy ... more understandable after reading FAT16 specs.
 - Complex Long FileName support, and patented by MS too.
 - Write performances may be poor under certain conditions. Example : fragmented file system + large partition size.
 - Free source code available everywhere is sometimes buggy / bloated.

At the very beginning of the project (nearly 4 years ago !), I choose DharmaniTech FAT32 library , and it was easy to use, so that I could read files without many problems on software development side.
But it only supports <512 bytes file write, and a lot of advanced features weren't available, so I then switched to thinfat32 library .
Thinfat32 library was a pain to adapt to Saturn, and some advanced features weren't available, or didn't worked, so I rapidly switched to libfat .

Libfat is great, works without any major trouble, and even supports FAT16
So I kept libfat as FAT32 library for around 3 years.
But one problem of libfat is ... its weight (<- yeah, I wanted to put this pun somewhere ).
 - Sector caching is cool, but library doesn't work without it, so we need at least 8KB of work RAM for it.
 - Source code is very complete, but also very complex, so unless you aren't a talented developer, so can't customize it easily ... and unfortunately I'm not a talented developer
 - Library supports nearly everything for file/directory manipulation, so size after compilation is a little big (around 50KB IIRC).

You may ask : "why complaining about few KBs of RAM ? Saturn got plenty of RAM to use !"
Well, yes and no. My project (on game game backup from/to SD card) of resources :
 - Work RAM : 24KB ... not contiguous : 16KB+8KB
 - Program memory : work RAM, or cartridge ROM (1MB). I choose to run program directly from ROM.

And, in a (maybe) future hardware project, I may need to port FAT32 library to microcontroller, so few resources will be mandatory.

So last month, I dropped libfat, and started to look for a simpler & better FAT32 library.
When selecting a starting point for development, my choice pointed to thinfat32, not because it was perfect, but because I had some experience with it in the past, so that I know where I should start to fix things

First, I dropped some features I don't need :
 - Long FileName when writing files : LFN can be read, but only 8.3 files can be written ... it's enough for my needs
 - Long path : changed maximum size for file path from MAX_PATH (260 bytes) to 96 bytes ... it's enough for me, and saves some RAM.
 - Only one file open at once : it saves some RAM.
 - Other ? (don't remember)

Then started to fix/debug/etc the library :
 - Big/low endian support ... Saturn and PC endianness is different
 - Directory creation fix.
 - File creation in non-root directory fix.
 - Added test bench under windows ... there was one stub in original sources, but with very limited test range ...
 - Better log support.
 - FS info support.
 - FAT16 support ... not working yet (), but at least it works better than in original sources
 - File append fix ... original sources support file append ... only in the case source file is multiple of 512 bytes ... this bug took me many time to spot
 - Clock support when setting file timestamp ... original sources supported only fixed (dummy) timestamp.
 - File listing within a directory.
 - Source code cleanup.
 - MANY fixes.

Complaints about thinfat32 library may look severe, but I really thanks its author to publicly release it !
Thanks to him, I know have something that fits my needs, and have a deeper knowledge regarding FAT32 structure

Last but not least, here are some screenshots :
data/images/20151021_thinfat_testprog.tb.png
Test program contents :
In this screenshot, I first create one directory,
then write 3 files inside it.


data/images/20151021_thinfat_testbench.tb.png
Test program execution - just in order to show
a command line screenshot on my blog

data/images/20151021_thinfat_testresults.tb.png
Result in (virtual) test drive :
one directory and 3 files are created !

This is just the beginning of the development : I still need to test under Saturn emulator (yabause ), then on real hardware (Saturn + custom cartridge ).

Read more libfat : maybe you need to loose some weight :D

Shining Force 3 works !

Written by cafealpha 6 comments
Additional testing of my test cartridge showed that Shining Force scenario 3 was "working" well when using memory expander hack

By "working", I mean that game was working fine (no freeze, black screen whatever) while looking for save data on SD card.
I didn't verified if save data was consistent or not, this can be verified and eventually fixed later

data/images/20150915_sforce39.tb.png
Game is looking for SFORCE39 save data ?!

Logs show that game is looking for SFORCE31 save data, which is normal, but after that it is looking for SFORCE39 save data ?!?
I suppose this is some debug stuff that was left as-is, or maybe something for game beta testers ? Please let me know if you have more informations about this


It "works", but there's still a lot of code to write/cleanup/etc before release !
At first, I should add some "log to SD card" feature, this may be useful when we will enter beta testing stage

BTW, I'm looking for a name for my "SD card-based memory cart for Saturn" project.
The only requirement is that the name needs to be easy to remember. Suggestions are welcome


Edit (2016/02/12) : nearly 5 months after, everything works more or less so that I took a couple of videos of Pseudo Saturn Kai in action
data/images/20160212_xzibit_video.jpg
Video in video ?

More next week month

Edit (2016/03/16) : took longer than expected to add subtitles to the videos, but everything is finally ready. Thank you for your patience

data/images/20160316_shining_force_3_sd_memcart.jpg
Shining Force 3 Scenario 1 SD Memory Cart test
Game is accessing save data from cartridge's SD card. It works



data/images/20160316_shining_force_3_sd_memcart_makingof.jpg
Shining Force 3 Scenario 1 SD Memory Cart test (Making Of)
Same as above, with also log messages display on my dev laptop

Read more Shining Force 3 works !

Scritch, scritch ...

Written by cafealpha 3 comments
Today was a coding-free recreation day
Instead of coding, I used my brand new rasp (file) on a Saturn memory cartridge shell :
data/images/20150909_memcart_shell.tb.jpg
SD card on Memory Cartridge ?

Yeah, I know, it's "homemade"

Request : I only have a limited stock of cartridge shell, so is there somebody with a 3D printer/whatever ready to produce shells ? If you have the skillz, hardware, time and motivation to produce Saturn cartridge shells, please contact me via my homepage's contact form .
I can offer one cartridge (without shell) if you fulfill my needs

Edit : I forgot to put a picture of the cartridge itself :
data/images/20150909_family_portrait.tb.jpg
Cartridges Rev 3.1, Rev 2f, Rev 1b

Read more Scritch, scritch ...

Yeah !!! It work ! (when it doesn't bug)

Written by cafealpha no comments
This afternoon was a very intense debugging session
Nah, I joke, I just played Sonic R and Virtua Fighter Kids with my debug cartridge plugged on my Saturn

data/images/20150908_memcart_vfkids.png.tb.jpg
I unlocked Sarah's movie

Unfortunately, I lost against Dural during last (bonus) stage, but at least I was stronger than Saturn BIOS Backup Library

data/images/20150908_memcart_dbg.tb.png
Debug session using my good old SatLink tool.
Virtua Fighter Kids save file is read from/saved to SD card.
And as a bonus, backup related functions send debug messages
 to my dev laptop while the game is running

There's still a lot to do before getting something good, but today's debug session showed that current hardware (cartridge's PCB, CPLD firmware) and software (SH2 firmware) are working (more or less) fine

Read more Yeah !!! It work ! (when it doesn't bug)

Tired ...

Written by cafealpha 4 comments
I just spent the whole week not (or few) sleeping during night, then sleeping because of fatigue during day
I don't know the reason of this, but I suspect bad weather (I rained nearly all week here), and also children sleeping in "kawa no ji" style.

What is "kawa no ji" style ? This is a Japanese expression used to speak about children sleeping in the same room/bed as parent's.
While it's not very common in Western countries, I'm personally OK about this, but it would be great if children wouldn't move so much while sleeping !
Example : you fall asleep with son#1 on your right side, and you wake up during night with son#1 near your foot, and son#2 pushing on your back

Another reason may also be chemo I'm currently taking : among the side effects, fatigue or feeling heavy is mentioned.

I'm currently taking "TS-1" chemo drug, which is administered orally as any other "normal" capsule drug. One of the difference with regular drug is that effects (and so side effects) are a little stronger than drugs everybody take when they get a cold
data/images/20141009_nks1.tb.jpg data/images/20141009_nks1_pack.tb.jpg data/images/20141110_ts1.tb.jpg
TS-1 and NKS-1 (TS-1 generic) capsules

Until now, I experienced the following side effects :
 - Diarrhea
 - Nose bleeding
 - Mouth ulcer
 - Fatigue
Fortunately, side effects are relatively mild, and also I experienced them one per one

Let's hope this week's fatigue state is temporary If it is due to chemo side effect, then I'm OK with this, because I consider it is part of the price to pay in order to get rid of my cancer

Read more Tired ...

Vacations :)

Written by cafealpha 2 comments
This week I went to the beach
data/images/20150731_priority_peter.tb.jpg
Me at the beach, but I use a TI-89, not a TI83+

I live in Japan near to the sea, but occasions to have fun in salted water is limited, because of the presence of medusa from middle of August, so I should enjoy beach now ^^

Because of surgery and chemos (lost 15 Kg in 6 monthes !), one hour is the maximum before feeling dizzy, but going to the sea is fun anyway

Read more Vacations :)

Could finally write a file to my SD card :]

Written by cafealpha 3 comments
I could finally write a file to my SD card ... from my Saturn
Well, I just tested by dumping my Saturn's BIOS, and didn't tried further, because I don't want to find and fix other bugs today

data/images/20150716_bios_dump_ok.tb.png
Top : my Saturn BIOS, dumped from my Freewing device 5 years ago
Bottom : BIOS file in my SD card dumped today
Hex Editor says that both files are identical

This fixes a nearly 3 years old bug
At that time, I connected a SD card to my second pad port on my Saturn and could read files successfully. However, file write sometimes failed ... I thought about many possible causes of failures (not enough 3.3V power supply ? Bad luck ? etc etc), but it was a software bug : writing sectors to SD card actually takes longer than reading sectors, and I didn't waited enough for my SD card to finish write.
Changing poll timeout count from 500 clocks to 50000 clocks seems to fix the problem. (Q&D fix, but if it works fine, I won't change it )

So now, as SD card read/write access works on both yabause and real hardware, it is time to to use it in order to develop new features for my Saturn

data/images/20150716_memcart_rev2f.tb.jpg
My SD card cartridge for Saturn (Q&D prototype revision )

Edit : wow, current cartridge firmware build ID (incremented on each make/build) is 4200

Read more Could finally write a file to my SD card :]

Dragon Ball Kai - The war with Majin Buu is over

Written by cafealpha no comments
So 3 weeks ago, Buu was defeated by Goku, and last week Goku and Uub left Budokai in order to start training ...

Dragon Ball Kai is finally over ... I especially appreciate during Buu's death when it is said something like "he disappeared, and didn't left any cell behind", because I felt my cancer was completely cured (until the last malignant cell) at that time

Dragon Ball Super will start from this Sunday ! Toriyama-sensei, please bring us new adventures and dreams !!!

BTW, I saw Dragon Ball Battle of Gods on DVD, and it was cool
My comments :
 - I felt that Toriyama was behind this, because it was about eating foods from the beginning to the end
 - Not born yet Pan is already considered as a Sayajin ... it is strange that it didn't led to debate about pro/con abortion in Europe/USA


Last (technical) comment : I prepared an HDD in order to record Dragon Ball Super on it, and discovered that it isn't possible to copy recorded videos from one HDD to another ?!?
So, NO thanks to :
 - Sharp, for making such ugly user interface ... you didn't thought it would be cool to allow multiple selection when deleting recorded movies ?
 - Sony, and other companies from "Entertainment Industry", for restricting copy on recorded media from TV.

Ah, everything was simpler during video cassette tape era ...

Read more Dragon Ball Kai - The war with Majin Buu is over

Some fun with yabause on my laptop

Written by cafealpha 2 comments
Today, I made fixes to :
 - yabause (debug version for personal use), because UBC doesn't works well on it.
 - SatLink, because mkdir function returns -1 when folder already exist
 - PseudoSaturn, various features additions, fixes, as usual
 - BackupManager, in order to display some debug informations.
 - Vmem module, various fixes, especially one that took me a couple of hours to understand

data/images/20150630_bug_fix.gif
Me when debugging my Saturn projects
(Video grabbed from 9gag.com)


But at least, virtual memory cart is ready for debugging now
data/images/20150630_vmem_test.tb.png
Debug session with yabause and SatLink
NiGHTs Xmas header data (bottom of screenshot) was copied
from internal memory to laptop HDD


So, everything don't work right now, but UBC related things and log message output are nearly OK, so that debugging this vmem project will be (maybe ?) comfortable from now :]

... I'm tired No more debugging for today ^^

Read more Some fun with yabause on my laptop

Iso/Cue "loader" works on real hardware :]

Written by cafealpha no comments
(For more informations, you can also read this old article.)

I finally had time to use my Saturn, and I could verify that iso/cue "loader" works on real hardware !
Of course it works well when reading from RomFs, and it works also well when reading file from SD card

data/images/20150626_iso_loader.tb.jpg
My test environment ... sorry for the mess
(Micro SD card is located on top-left of the cartridge)

I lost some time to understand why data transfer from SD card was slower than expected, but finally understand why : some debug/whatever delay routine was called when accessing cartridge registers ...
Just putting some #if 0 around this delay code solved the "problem" ^^;

Read more Iso/Cue "loader" works on real hardware :]

Old project release : JWPds

Written by cafealpha no comments
Last day, I was digging in my HDD, and found an unreleased project !

Project name was JWPds, and about Japanese words/kanjis translation tool running on Nintendo DS.
data/images/20150609_jwpds_radic.tb.jpg
Looking for the meaning of 絵 kanji on my DS :
bottom screen allows kanji input and
kanji meaning is displayed on top screen.


data/images/20150610_jpwce_radic.tb.png
Looking for the meaning of 絵 kanji on my PC with JWPce.
(JWPce is not my project, it is just for comparison with JWPds)

Project is unfinished, because developing things on DS took more time than expected, and also because I learned enough Japanese, hence didn't needed to develop/use this application any more

Stable binaries and latest (not stable) sources are available, so please have fun with them

For more informations, download links, screenshots, etc, please have a look in the project page .

If you have any message, etc to send to me, don't hesitate to post a comment to this article

PS for DS fans lost here, and wanting leave a comment : comments require a Turing test asking for my favorite game console, and it's not DS
Please have a look in my blog in order to solve this test (If you are an human, it won't be difficult ).

PPS to Saturn fans here : don't worry, I don't plan to shift to DS homebrew development !
The console I like to debug on is and will always be Saturn

Read more Old project release : JWPds

Toying with my good old Nintendo DS lite ...

Written by cafealpha 4 comments
From yesterday, I suddenly wanted to turn my DS into a MP3 player, so that I can listen my favorite music while I drive my car
Of course, there are other options in order to listen music in my car :
 - GPS navigation unit can read MP3 from SD card, but don't support SDHC ... and my wife (sharing the same GPS unit) doesn't like my music
 - My android smartphone can read mp3 but ... I don't like android, and the more I put mp3 in my phone, the longer it takes to boot ...
 - My gp2x wiz can read mp3, but takes a while to boot, and the ergonomics of its music player is not so good.

So I want to purchase a DsTwo cartridge for my DS, but it's out of stock everywhere. Is there somebody ready to sell his DsTwo cartridge to me ?
In advance, thank you

And no, I don't want other cheap cartridge, because I like the way to put a CPU into a DS cartridge, and publicly provide SDK in order to use it

Read more Toying with my good old Nintendo DS lite ...

Iso/Cue "loader" works :)

Written by cafealpha no comments
So I am making an enhanced version of Pseudo Saturn firmware.
And, as an extra feature of this firmware, I added an iso/cue "loader".
data/images/20150603_dr.evil.laser2.tb.jpg

Why the quotes around "loader" ? Because it doesn't emulates CD-block
So, it only loads few homebrew games, but it's enough for me, and I don't want to waste more time on adding CD block software emulator while better solutions (rhea, jhl's "mpeg" cart, etc) already exist.

As an other bonus, I also added RomFs support to my Saturn library
It is like romdiskfs that is widely used on linux, DS homebrew, etc, but it allows file compression, some other features, and ... is probably buggy because I coded it from scratch

(*) Virtual file system is not really new on Saturn homebrew scene, because Piratero already implemented one in libyaul a while ago


data/images/20150603_romfs_filelist.png
RomFs root folder contents. I will load sl_elf.iso file in the next paragraph.

So here is a capture of yabause running sl_elf.iso, after decompressing it from virtual file system stored in Flash memory.
sl_elf.iso is "satdemo" made by CharlesDoty, grabbed from SaturnOrbit's examples (Thank you Rockin'B for making SaturnOrbit ! After 10 years, it still have it installed on my laptop's hard disk ).

data/images/20150603_isocueloader.png
yabause running Saturn demo from iso file, near SatLink software I use in order to debug my Saturn programs.

Very big thanks to the yabause team ! I grabbed the iso/cue loading routines from yabause sources, and it was very easy to port them

Edit : I removed unused code (CD Block emulation routines, etc) from iso loader module, and .o size dropped from 74KB to 18KB oO

Edit (2015/06/26) : I tested this code on real hardware, and it works too ! Please see this article for more details.

Read more Iso/Cue "loader" works :)

New USB dev carts for sale !

Written by cafealpha 6 comments
Last week, I soldered new USB dev carts, so please let me know if you want to purchase one

What's new with theses carts ?
I use new PCB (Rev 2e) and flash chips that allow to store firmware larger that Action Replay firmware :
 - Action Replay Flash ROM : 256KB
 - USB dev cart Flash ROM : 512KB
It will be useful when making custom firmware for this cartridge

And, I'm now familiar with using flux when soldering ! Before, I was soldering small pitched parts (typically, the FTDI USB chip) with stain in excess, then using solder wick. This gave good results, but I wasn't satisfied with the visual aspect nearby soldering points :

data/images/20150518_no_flux.tb.jpg
Before : only stain & solder wick used to solder FTDI chip

data/images/20150518_flux.tb.jpg
After : flux used to solder FTDI chip


And, there are now "ROM cartridge" available for sale !
This is just an "USB-less USB dev cart", but it allows to run Pseudo Saturn firmware, and also future revisions of the firmware with ROM size larger than 256KB available on Action Replay carts. And of course, it is a little cheaper than USB dev cart

data/images/20150518_romcart.tb.jpg
ROM cartridge ... well, this is just USB dev cart without USB modules, so nothing really new ^^;
This cartridge is interesting in the case you want an USB dev cart for dev things, and another cart for gaming purpose.

Read more New USB dev carts for sale !

Coconut oil ... "please ask your doctor before eating"

Written by cafealpha no comments
In a random shop, I found a bin filled with coconut oil.
data/images/20150503_coconut_oil.tb.jpg

Why do I post this picture on my blog ? Because of the funny/wtf warning message on it :
"To people under disease treatment : please ask your doctor before using this product"

Wow, maybe it's like I should ask my doctor when choosing what to eat ? oO

Note if you don't know : oil that is solid at ambient temperature is filled with trans fat, and good for trash, or preparing Mc Donald's burger, but it's the same anyway
And, it's not even it's written "Organic" in big letters on a product's label that it guarantees this product will be healthy !

Read more Coconut oil ... "please ask your doctor before eating"

No more spam ? "I'll be back" edition

Written by cafealpha 5 comments
Second (and I hope last) part of this article ...

Last week, I spend half a day in getting rid of spam messages via my homepage contact form.
And, it seems to work well

So today, I spent another half a day in getting rid of spam messages via this blog's comments
So I removed bullshit advertisement messages scattered on my blogs comments, and tried captcha plugin for PluXml (= my blog's CMS).
And unfortunately, image based captcha plugin doesn't seem to work well, because it blocks ALL comments ... very efficient spam filter
So I added a simple additional test when posting comments. Hope you will solve it ... or not in the case you are a robot

Extra : I spend the other half a day in testing Saturn cartridge with custom USB dev cart connected to my laptop and Open Logic Sniffer and JTAG (ByteBlaster on my desktop's Parallel Port, because I don't have enough budget to buy a USB Blaster ^^; ) around my Saturn
Here is a snapshot of signals when it finally worked :
data/images/20150417_sniffer.png

Can you guess what it is about ?

Read more No more spam ? "I'll be back" edition

Nostalgia time : ietx2 old (buggy) beta iso for download

Written by cafealpha no comments
After making some cleanup in my development folders, I found an old archive file
It is dated 2007 June 20, and contains a very early version of ietx2, which is an adaptation of yeti3D engine to Saturn.
At that time, I was using a PentiumIV processor and 80GB IDE hard disk in order to run sh-elf-gcc provided by SaturnOrbit ... very nostalgic times ... but I definitely prefer nowadays for Saturn development

Iso file can be found >>> here <<<.
(No, there are no sources available, because I didn't kept archives of sources at that time.)

Please don't waste a CD-R for this. You can try on yabause, or just look at screenshot and say "hey, very ugly stuff" however.

data/images/20150410_ieti01.png
ietx2 beta screenshot : not enough time to draw last quads in VDP1 list, hence the garbage on foreground.

data/images/20150410_ieti02.png
ietx2 beta screenshot : example of incorrect rendering when quads coordinates exceed 16 bits range.

Present version

You can find current version (ietx2) and sources of my Yeti3D adaptation here (dated 2011 April 19).
Also, there are videos of ietx2 available below. Click on the links to display them on youtube.
data/images/20150410_ietx2_01.png


Future (?) version

I'm still maintaining sources of ietx2.
I renamed project name to ietx3 (yeah, I'm not very original when choosing project names ), and now use a lite version of Yeti3D PRO engine ... "lite" means original, minus a lot of features, in order to keep a decent frame rate, and fitting to Saturn resources.
You can find some videos (binaries are not released, sorry) on my youtube channel :

Read more Nostalgia time : ietx2 old (buggy) beta iso for download

No more spam messages via my contact form ?

Written by cafealpha no comments
From last week, I'm receiving many spam messages via my contact form .
I have other things to do than reading and deleting this bullshit, so I added two confirmation fields in the contact form :
 - Email address confirmation.
 - Turing test, not very difficult to solve, but let's see how smart nowadays AIs are

I didn't added captcha, because :
 - It's a waste of time
 - Personally, I sometimes can't solve them
 - It relies on external site and/or waste resources on homepage server side, and I don't like this.

So, dear spambots, I don't thank you for wasting my time in reading your so important messages, and spending half a day in adding security in my mail form. Hope this is the last time I waste my time for you

Read more No more spam messages via my contact form ?

Saturn cartridge firmware flasher utility : major (final ?) update

Written by cafealpha 6 comments
I made many fixes to my flasher utility. (Old article available here , even older article available here)

Changelog :
  - Tested on around 30 Action Replay cartridges. It was working fine for all known flash chips.
  - Ask for confirmation before returning to multiplayer screen.
  - Return back to initial screen in the case user don't want to go to multiplayer screen.
  - Retrieve and display chips IDs when firmware selection menu is displaying.
  - Fixed erase/flash operations for AT29C010 flash chips.
  - Minor fix about text display.
  - Fix for BFBF/1010 flash chips.
  - In the case Action Replay flash chips is supected, display disclaimer
    before flashing as a typical Action Replay flash device (SST29EE).
  - Refresh vendor/device IDs display during error/disclaimer message display
    in the case flash is not recognized.
  - Major changes in menu related routines.
  - Added key auto repeat feature : holding Up/Down button should scroll automatically now.
  - Added erase verification test.
  - If erase/write verification test failed, display informations about failure.
  - Use FRT-based delay during flash write/erase.
  - Changed highlight color in menus.
  - Change color of vendor/device strings according to chips flashability.
     - Hopeless   : red
     - Maybe OK   : yellow
     - Recognized : green

In short, it now has nearly the same compatibility as legacy arflash/Atlas utility, while being SGL-free (it doesn't uses Sega libraries), compatible with newer flash chips, embedding several firmwares in a same executable file, etc, etc.

In the case this flasher is not compatible with your Action Replay (it may happen, I don't decide about future revisions of Action Replay cartridges), please let me know in this article's comments or by email .
However, please note that I don't plan to add new features to this utility. New features were added during beta testing phase, and I really thanks beta testers for this.

Some screenshots from beta testers :
data/images/20150115_gameofyou_bfbf_1212.tb.jpg
BFBF/1212 flash chip, now recognized as SST/Greenliant type.
Picture provided by gameofyou1.


data/images/20150304_tabajaralabs_0101_2020.jpg
0101/2020 flash chips : everything is working fine, as in the previous version of the flasher utility.
Picture provided by TabajaraLabs.



data/images/20150305_amoc_53bf_4707.tb.jpg

data/images/20150305_amoc_53bf_4707_cart.tb.jpg
Weird 53BF/4707 flash chips : one chip is recognized as typical BF/07 (SST), while the other doesn't returns its vendor/device IDs.
As you can see on PCB picture, flash chips on right side are different, so that they return different vendor/device IDs.
Pictures provided by A Murder Of Crows.



data/images/20150316_sonic_dcer_1f1f_d5d5_fail.tb.jpg

data/images/20150316_sonic_dcer_1f1f_d5d5_ok.tb.jpg

data/images/20150316_sonic_dcer_1f1f_d5d5_cart.tb.jpg
1F1F/D5D5 flash chips : pictures before and after I fix the Flasher utility.
It (finally) works on latest version
Pictures provided by Sonic Dreamcaster.


data/images/20150315_zorlon_bfbf_1010.tb.jpg

data/images/20150317_saturnar_bfbf_1010_cart.tb.jpg

data/images/20150315_zorlon_bfbf_1010.tb.jpg
BFBF/1010 flash chips : according to datasheet, theses flash chips have twice more memory than usual chips (total 256KB -> 512KB).
However, a look at cartridge PCB between C6 capacitor and bottom-right flash chip shows that most significant address bit is grounded, so only 256KB can be addressed from Saturn ... what a pity
Pictures provided by SaturnAR and Zorlon.


You can download Flasher utility and its source code here : flasher_arp_20150326.7zhttp://ppcenter.webou.net/pskai/
Disclaimer #1 : You will loose your cartridge backup data after flashing it.
Disclaimer #2 : I'm not responsible in the case I brick your cartridge and/or damage your Saturn.

Note : I didn't made PseudoSaturn firmware. All thanks about PseudoSaturn firmware must go to CyberwarriorX.

Read more Saturn cartridge firmware flasher utility : major (final ?) update

Long time without using my TI89

Written by cafealpha no comments
Today was a nostalgia day : I uploaded program to my good old TI-89 via "$4 parallel link cable" I made around 15 years ago, when I was high school student

data/images/20150317_ti89_parallel_link.tb.jpg
My TI-89 and its "$4 parallel cable", still working

First, I wanted to use my 7 years old desktop PC with parallel printer port available ... but it stopped to work after 2 minutes of usage. However heavy washing of CPU fan (yeah, "washing" : I put it in the water, then used my hair dryer to dry it) solved this
I then tried to install TILP program, but I was lost in installing GTK (), and link related DLLs ... a real nightmare, and it didn't worked too ... (Sorry Lionel and other TILP authors ! Your soft is great, but its installer is a real piece of crap)

So I tried even older W32Tran8x, a program made under Win9x era.
Except DlPortIo that needed to be updated to work under Windows7, everything worked fine !!!
data/images/20150306_w32tran.png
W32Tran8x, with its good old nearly wintage Win3.x-like file browser
The simpler the better 
I will try to keep this way of thinking when creating Saturn programs or cartridges

Edit : I successfully installed GTC, an oncalc C compiler. Thank you Pollux (GTC author) for your great work 
It's funny to program on a machine where sizeof(int) equals 2.

Read more Long time without using my TI89

USB dev cart for sale soon

Written by cafealpha no comments
I'm about to gather parts in order to make new USB dev cart !
I hope to have some free time at the end of the month to assemble few ones, so please let me know in the comments or by email if you want to preorder one unit

Only very few SST39SF040 flash chips were available for sale from IC supplier, so I bought SST39SF020 instead. On Saturn side, this change makes flash memory dropping from 1MB to 512KB, but USB dev cart itself uses only few tens of KB to work, so everything is fine

First, I will assemble my personal USB dev cart, because I sold it few months ago ... I can't wait to finally be able to debug software on my Saturn

Edit (2015/03/10) : My personal cartridge (until I sell it ) is ready and tested !
data/images/20150310_rev1b.tb.jpg
The PCB is a old version, hence some ICs are unused and unsoldered. Latest PCB version has a cleaner design
Two more cartridges are waiting for flashing and testing before selling. I plan to do this on next week.

Read more USB dev cart for sale soon

Backup Manager - Early Version #1

Written by cafealpha 8 comments
So I'm currently making a Saturn Backup Data Manager utility.
What's this ? It is a remake of "Memory Manager" utility present in Saturn BIOS.
data/images/20150204_backup_manager_sega1.png
Sega Memory Manager utility : main screen

It already exists, and can be used from BIOS, so why making such an utility ?
I have some reasons that pushed me making this, and one of theses is that Memory Manager user interface is very cheap, especially, it doesn't allows to select multiple backup data and copy/delete them. (Dear Sega, why didn't you developed this feature ??)
Also, there are some new features I would like to add, such as hex-edit of memory data ... I have very few time to play now (real life, children, cancer, etc), so 999 lives in Backup data is a must-have feature

This utility is currently WIP, so no download link is available right now, but it is WIP enough to publish screens on my blog
So here is what it looks like now :
data/images/20150204_backup_manager1.png
Backup Data Manager Main Screen

Don't trust the development progress only by looking at the main menu : everything behind is far for being finished
But at least, menu library itself is more or less completed, and I'm very glad about this point.

Here is a comparison of data selection screens :
data/images/20150204_backup_manager_sega2.png
Data Selection (Sega)
data/images/20150204_backup_manager3.png
Data Selection (this utility)

Yeah, I know that Japanese text is not displaying properly ... this will be fixed, but the priority for this is low, so please be patient.
And what is the green text display on Backup Data Manager screen ? This is multiple items selection

As a bonus, here are screens of Backup Manager running on real hardware.
Pictures were taken last September, when I still had a modchipped Saturn ready for use ... after that I was busy with medical stuff, and moving to a new apartment, so my Saturn I used for testing is currently hidden in a cardboard ...
data/images/20150204_backupmngr_hwtest1.tb.jpg
Early version of Backup Manager, picture was taken 4 months ago.
Can you spot the differences with current version ? ^^


data/images/20150204_backupmngr_hwtest2.tb.jpg
SatLink running on my 8 years old laptop, connected to my Saturn via USB dev cart.
This development environment is by faaar more convenient than $500+ vintage
development hardware/carts/whatever floating on ebay ♪



Among the things I would like to add before a release, there is the Saturn FDD support ... but I don't own Saturn FDD unit, and the cheapest unit I could find on auction sites costs 10'000 Yens, and the seller doesn't guarantee that it still works ...
I won't pay 10K Yens for a vintage objet I will only use once a year (and I fear my wife would trash it if she founds it ), so if somebody is ready to give some time for beta testing with Saturn Floppy Disk Drive, please let me know in the comments

Read more Backup Manager - Early Version #1

Rss feed of the articles