USB dev cart project

cafe-alpha

Established Member
Q5. Is there an updated firmware than inside in Antime ISO?
A5. Alternate firmware is Pseudo Saturn Kai, and as it allows to boot from CD-R it's convenient to test the application in "release mode".
Example of usage is for example to use USB transfer to debug/improve/polish/etc a given feature, and after it works as expected, to build whole application, burn it on CD-R, and test in it's entirety.

There is a limitation regarding Pseudo Saturn Kai : from latest (v6.408) release, only full version of the firmware supports USB dev cart transfer anytime the firmware is running = for example when a menu is displayed. In lite version, transfer is only available after entering "USB DMA Transfer" option from main menu.
Verifying if the USB dev cart is compatible with full version of the firmware can be done by checking flash ROM chips on left side of the cartridge PCB : if both chips are SST39SF040 then full version can be installed. (IIRC, the PCB files available on antime's homepage don't accept SST39SF040 because upper address pins are not connected)


Q6. So, when you say a debug support, Do you talking about the cart be a type of Serial COM port?
A6. Features useful for debug depends from a developer to another. For example :
1. Execute standalone program on Saturn
2. Show Saturn memory contents when game or homebrew application is running
3. Show log messages from Saturn executable on PC screen, aka "remote printf"
4. Allow to read file on PC from Saturn
5. Add breakpoints, modify registers, execute step by step etc
6. (Insert any other feature you like here)

(1) can be done with antime's firmware or Pseudo Saturn Kai.
(2), (3), (4) require Pseudo Saturn Kai (or any alternate firmware if someone wants to develop one) but require update on PC software side (SatLink) that I was fed up to publicly release.
(5) and above are not available in both antime's firmware and Pseudo Saturn Kai.

IMHO, (1) itself is enough to develop a simple application. By the past, I did testing on real hardware by burning a CD-RW each time. So don't think that it's impossible to develop something because XYZ debug feature is not available : rather than "feature war", it's more a matter of motivation and stubbornness :)
And, usage of emulator is recommended for testing "simple" parts of the project, because it's way faster to run an emulator than executing on real hardware.


Q7. What should be necessary to add breakpoints support?
A7. On Saturn side, a modification of cartridge firmware (antime's firmware or Pseudo Saturn Kai) to enable UBC before booting a game.
And on PC side, to develop an application to handle developer input when UBC is triggered.

Here are reference source code :
- tyranid/saturndebug (very old project, back from Action Replay and DOS era)
- ijacquez/libyaul (modern library, featuring USB dev cart stub for gdb)
 

antime

Extra Hard Mid Boss
You can link a debug stub into any program, you don't need any special firmware support. Having it in ROM makes it more resilient against memory corruption bugs, but it's not a requirement. The processors used in the Saturn are too old to have anything like the JTAG/SDW/BDM/whatever debug interfaces found in modern devices. For that you need the emulator pods that replace the whole CPU.
 

cafe-alpha

Established Member
Oops, I forgot to mention about embedding directly into user program. That's the concept of libyaul's gdb stub and IMHO a smart solution for the ones in need of a full-featured debugger.
 
Top