PPCenter :: devblog

PPcenter. Arts and craft for my Sega Saturn. Since 1847 !

Gamer's Cartridge out of stock :]

Written by cafealpha 5 comments
Out of stock ":]". I'm glad to have finished this batch
I don't plan to sell Gamer's Cartridge for a while, because stock of parts to build theses cartridges (electronics components, PCBs, labels, etc) is currently very low here. I'm even lacking of bubble paper used when shipping cartridges

So, what's next ? Of course, Saturn stuff  I plan to use this "break" in cartridges manufacturing and sales in order to continue Pseudo Saturn Kai development.
Main feature to add is cheat codes, which is a bit "heavy" one to implement, because processing in order to make cheat codes working isn't documented in details.
But that will be done ! Also, there are some side quests here and there regarding Pseudo Saturn Kai features. I plan to implement as far I can, so it will be limited only by my free time, my motivation, and flash ROM remaining on cartridge

data/images/20170215_sgc_v33b_gerber_preview.tb.png
Gerber preview before ordering PCB on
Seeed Studio, very classy and realistic

Edit (2017/05/11) : finally back in stock
I catched the occasion to make some minor improvements to my homepage, such as adding anchor link to some sections, adding some directions for Japanese users, etc ... and I'm already full up with writing HTML

Edit (2017/05/12) : half of the stock already reserved oO
data/images/20170512_escalated_quickly.jpg
Cartridges are assembled by hand, hence stock is small, but I'm impressed anyway

Read more Gamer's Cartridge out of stock :]

Pseudo Saturn Kai lite firmware fixes and improvements

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

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

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


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

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

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

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



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

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


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



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

Here is an example :

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

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


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

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

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

Read more Pseudo Saturn Kai lite firmware fixes and improvements

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

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 cart - currently debugging

Written by cafealpha 4 comments
Few weeks ago, I had some free time (only one day however) to populate new USB dev carts
data/images/20140829_usb_dev_cart.tb.jpg
USB dev carts during different populating states
"This isn't even my final form"

I could populate 3 boards ... third one is not on the picture, while a couple of capacitors is missing on second one, but this is a matter of 5 minutes to solder.
After that, time was missing, and what's more problematic, ICs were missing too >_<

I soldered my last flash chips (on the right side of the cart), as well as my last USB chips and connectors (top left side of the cart) ... and my last 100nF decoupling capacitor (everywhere near all ICs) too ... it's a shame about the capacitors because they cost absolutely nothing and they are required everywhere in the cart.

So what's the plan from now ? I'm currently improving USB dev cart firmware, and plan to sell the completed cartridge on the bottom right corner of the picture when firmware will be ready for release.
From that money, I will buy a new stock of ICs to populate other PCBs
Why not buying ICs now ? Simply because I don't have enough budget for that, and also because buying ICs in few quantities is too much expensive : IC price decrease with quantity, and shipping fees are free when more than of USD100 of ICs are purchased.


So let's come the interesting part : firmware, which means software !
Last month I had enough about PCB design with Kicad, so that was good to get back with my Saturn and USB connect it to my laptop

data/images/20140829_dev_env.tb.jpg
My Saturn development environment : no expensive vintage development kit,
only a modchipped Saturn, USB dev cart and 7 years old laptop are enough.

So of course I lost a lot of time with stupid software troubles.
Here is a list of the troubles. I hope that writing them here will prevent me from repeating the same mistakes in the future.

 1) Data alignment problem : one structure is 1 byte packed, and some long word was put a non 4 multiple offset in this structure. It is usually easy to spot, but ...
 - It doesn't cause problem under yabause (? not verified, please tell me if I'm wrong), so this problem was unnoticed until I test it under real hardware.
 - It happened during program initialization, before USB transfer would allow me to easily find why my Saturn freezes.
 - I was sleepy at this time

 2) Adding byte size to unsigned long* pointer ... it resulted in pointer set 4 times farther than expected ... really stupid bug
Oh, and in the same fashion, a similar bug in Action Replay flasher utility prevented from writing more than half of flash memory size ... it's good that I could fix this bug before anybody notice it

 3) Saturn freezes when reading flash vendor/device IDs.
As usual, when Saturn freezes, it is during program startup, when USB can't be used for debug ^^;
This problem was the most interesting one : some parts of the firmware runs directly from Flash ROM, and it seems that reading flash vendor/device IDs makes whole flash returning theses IDs, resulting in invalid instruction from CPU ... this is just a guess, correct me if I'm wrong.
This problem was corrected in a very Q&D way : return 0xBFBF/0xB7B7 in FlashGetVendorID/FlashGetDeviceID functions
I have a better idea to fix this, but it requires to modify cartridge flasher utility ... I made enough flasher utility stuff recently (I'm enough in fixing compatibility issues with Action Replay old flash chips !), so I will fix this later.

Read more New USB dev cart - currently debugging

Rss feed of the tag