Welcome in PPCenter !

SatCom

SatCom

Saturn Link Utilities, by cafe-alpha. http://ppcenter.free.fr/

What is SatCom ?

SatCom is a bunch of libraries and developpment/debugging tools for Saturn. It has been made in order to make progress in the development of ietx2, a Saturn application I started 3 years ago.

It features:

- ietx2 application (see below).
- Saturn <-> PC data transfer & debugger tool.
-- (Note: PC software has been tested under windows98 and windowsXP only).
-- Supported Hardware : freewing, commscard (not tested), USB Data Link.
- Saturn <-> PC debugger library.
- Saturn CD-ROM library, based on CyberWarrior X's CDC library and SBL's GFS library.
- Saturn backup library (wrapper to SBL functions).
- Saturn binary -> ARP firmware conversion tool.
- Data compression library (for use on Saturn/PC), based on LibLZF.
- Others ? (maybe forgotten some #zzz#)

Download2011-04-26, 19:42 (Japan)

SatCom binary files and source code are available in a single 7zip archive.

SatCom_release_20110426.7z#new# latest sources and binaries
ietx2_demo1.avi#new# ietx2 demo video #1
ietx2_demo2.avi#new# ietx2 demo video #2

Note: since I only recommend to use the latest version of SatCom, previous versions are not available for download.

Changelog:

- 2011/04/26: Added support for USB Data Link devices with red or green LED (still in beta phase however). Added a toolbar that allows basic operations (connect, send, receive, etc) in a similar way as the USB Data Link original soft does. Added a compile_howto.txt file.
- 2011/01/24: Made SatLink working under windows 98, improved logging system, added VDP1 view, palette view. Added SCVBTtest appli for VDP2 testings. Some bugfixes.
- 2010/12/01: First public release, mostly for testing use.

What is ietx2 ?

ietx2 is a port of the Yeti 3D engine for the Sega Saturn.
Rather than a "stupid port" that would only be a recompiled version of the engine without any modification, I am proud to say that it uses Saturn hardware in order to speed up the drawing process !

I started the development of ietx2 around 4 years ago (I wanted to participate in C4 2007 contest with it ...), however, as I was stucked in debugging the application and needed to burn CD-ROM each time I wanted to test it on real hardware, I gave up the developpement on Summer 2007.
At the beginning of January 2010, I re-discovered the application's sources on my dev hard disk, so that I wanted to test it real hardware ... and it was the re-beginning of the ietx2 development adventure #smile#

As development would require a lot of tests (if possible, on real hardware), I first wanted to easily upload code to my Saturn, by using a simple command-line based upload tool, or so.
Hence, I tried the soft that came with my USB Data Link ... no really user-friendly for repetitive use ... no source code, but ... Oh ! protocol is detailled ! Let's write a transfer soft for it #smile# After several tests, I realize that the my USB Data Link device itself seems not to work correctly ...

Hmmm, let's start from zero and build a freewing communication device ! Hardware cost me $15 and around 10 days of free time during lunch time at work in order to build it.
Available software for Freewing was a 10 years old .exe file without source, so let's re-write it #smile#
3 monthes later, thanks to slnk application, freewing can be used to download/upload data from/to Saturn, featuring some extra features, especially error-recovery and stream compression (typical transfer speed is 15~20 KB/s with compression enabled #cool#).
Great I don't need to burn CD-ROM for testing anymore !! #hehe#

What should I do now ? As I was fed up to read debug message directly from Saturn's TV screen, lets make a debugger !! 2 monthes later, SatLink application was born. Thanks to it, I could easily see Saturn's memory contents, read/write files through my freewing, and send debug messages from Saturn to PC.

So, ietx2 developpement itself can restart ! I finally could fix the problem that made me gave up 3 years before (vertex projection function needed to be modified in the case the coordinates were negative), add some speedup stuff, add double buffering stuff in order to remove some glitches, load map data from CD, etc, etc.
At present time, ietx2 is only a technical demo, but I am thinking about adding some replay value to it (As I don't like FPS, it would be something different), but before this, I plan to improve the drawing engine itself, especially adding Shading by using Saturn's Gouraud Shading or so.

Note: At present time, levels and textures included in ietx2 are existing stuff grabbed from the internet.
As I plan to make several changes in the yeti ROM data in the future, it is not time to make new stuff now, so that I am using theses maps for testing.
Also, as yeti ROM data would change in the future, yeti level editor software isn't provided now.

Here are some snapshots:
ietx2 snapshot 1 ietx2 snapshot 2

What is SatCom

At the very begining of everything (December 2009), as I found the protocol specifications for my USB DataLink, I wanted to build a simple command line program in order to easily download/upload data from/to my Saturn.

However, I discovered that my DataLink didn't worked correctly. So, as a countermeasure, I build a freewing communication device, and at the same time, I build a communication tool for it. Then I progressivly added some features to it according to the following facts:

- Saturn communication softwares are closed-source, and/or old.
- Saturn communication softwares work only with a specific communication device.
- Legacy commslink protocol transmission error checking algorithm is crappy, and lacks from error recovery.
- Legacy commslink protocol lacks from stream compression when sending/receiving data.
- When a transmission error happens, Action Replay original firmware freezes your Saturn.
- When debugging a program on Saturn, burning a CD-R is needed every time.
- There is no tool that allows to send debug message from Saturn to PC. Instead, displaying debug messages directly on Saturn is needed.

As a result, SatCom is a set of the following components :

- SatCom Library, which allow communication with PC, debugging from PC, and some other basic things, such as data compression, etc.
- SCFirmWare, that is an Action Replay firmware replacement (however, only PC<->SAT transmission is supported, cheat codes are not supported).
- SatLink, that allow to send/receive data, receive messages from debugger, and some other useful (?) features.
- Some development tools, such a bin to C convertor, data compressor, etc.
- Saturn applications that use SatCom Library, such as ietx2.

Why using SatCom ?

- You want to speed up your freewing communication device.
- You are fed up burning CD-R / CD-RW in order to debug the Satun application you are making.
- You want to send debug messages from your Saturn application to your PC.
- Other ?

A. SatCom Library

SatCom library includes various tools, such as data compression, PC<->Saturn data I/O and debugging stuff for Saturn.

About XComms :

There are 2 communication protocols supported by SatCom : legacy comms, for compatibility with ARP's original communication softwares, and XComms (eXtended Comms), which is a custom protocol specially made for my FreeWing device.
What is XComms ? It is a protocol to communicate with Saturn by using parallel port-based devices, such as Comms Link, or FreeWing. XComms is an attempt to replace the crappy comms protocol by adding some fancy features such as data recovery, compression, etc. If you own a parallel port-based communication device like freewing, feel free to use it instead of the legacy comms protocol.

Note: in the case you are using a USB DataLink device, you can't use XComms. The reason for this is that DataLink's hardware exchanges data with Saturn by using legacy comms protocol, then send USB data packet to PC. Hence, you would need to re-design DataLink's hardware/firmware in order to make DataLink supporting XComms.

XComms Advantages :

- 16bits CRC, instead of 'simple' 8bits checksum in original Comms protocol.
- All the commands need to be validated by checksum, so that there is few risk that a command may be misinterpreted because of a bad transmission.
- Data compression support, so that you can receive turn your crappy freewing device into a very fast downloading device #hehe#

About data compression :

LibLZF has been wrapped into SatCom library in order to perform data (de)compression. Data (de)compression can be used under PC (see tools\comp folder) as well as Saturn (see satcom_lib\saturn\sc_saturn.c source code). Feel free to use it in your Saturn application.

About Saturn debugger :

See SatLink stuff somewhere below.

How to use SatCom library :

- Add sc_common.h/c and sc_saturn.h/c to your Saturn project.
- Read sc_common.h and sc_saturn.h for informations about available functions and how to use them in your programs.

B. SCFirmWare

SCFirmWare is an Action Replay firmware replacement that uses SatCom library. It has been made thanks to VDP1 example from Charles MacDonald and arflash from ExCyber. Also, I order to remember which protocol you are using, I used the backup memory related code from Rockin'-B's save game manager.

Keys :

- Arrows: select transmission protocol. It is automatically saved in your Saturn's backup memory.
- X: flash to your ARP.
- Start: exit to Saturn's multiplayer.

How to use ?
First, burn SCFirmWare.iso to a CD-R, and run it in your Saturn by using the swap trick, or a modchip.
This is a "live-cd" that allows you to test the application before flashing your ARP.
If you could succeed into enabling transmission through "SCFirmWare live-cd" you can flash your ARP with SCFirmWare itself. For this, just press 'X' key and follow the indications on the screen. (Don't power off or reset your Saturn while flashing your ARP !!!).
After flashing your ARP, please press start in order to go to the multiplayer screen, remove the CD-R, press reset, and enjoy your new ARP firmware !

Help ! My ARP don't boot anymore !
Flashing your ARP is at your own risk, however here are some notes in order to ressurect your ARP (I didn't tested almost anything, but it should work).
At very first, you shouldn't insert or remove your ARP while your Saturn is running ! I may damage your Saturn itself.
First, Saturn's external cartridge connectors are quite poor, so you should investigate in this way before trying more.
If the problem it seems to be due to a corrupted firmware (for example, the result of resetting your Saturn while flashing your ARP), you should consider into reflashing your ARP with "SCFirmWare live-cd", or arflash.
So, the main step is to access Saturn's multiplayer screen while ARP in inserted into your Saturn. In order to do this, just disconnect your pads from Saturn, then turn power on.
Could you access multiplayer screen ? Congratulations ! You can now run a CD in order to reflash your ARP.
(the main reason it may work is that ARP firmware's first bytes contain a bootloader code which go to multiplayer screen in the case no pad is connected)

C. SatLink

slnk and SatLink are programs that use communication DLLs in order to send/receive data, and some other things.

Following features are supported:

- File upload/download/reception from/to any address in your Saturn.
- Command line support (for a list of available command, just start SatLink.exe).
- Saturn debugger.
- Memory viewer / VDP1 framebuffer viewer and some other extra features.

How to use transfer device ?

SatLink command-line first parameter is an ini file, which is a text file containing commands for initializing link device.

I created some ini files for the devices I used so far (like freewing.ini, or usbdl.ini), so that you may only need to tune few settings (typically, port number where your device is plugged in) in order to use your device.

Note about ini file format: one parameter = one non-blank line, and you can comment a line by writing a `#' character at the begining of it. (similar way to use as satdebug.ini with SATDIS.EXE)

How to use SatLink

Please follow the indications displayed on the screen. (yeah, fed up to write manuals that nobody read)

[Send/Receive screen]
[Debugger screen]
[Memory Viewer screen]

License

All the programs are released under the GNU GPL.

See the LICENSE file in this folder for more details.

Special thanks

- Saturn USB Data Link author, because as USB Data Link software source code isn't provided, it obliged me to design something even better than USB Data Link software ! (I think that if USB Data Link software would have been open source, SatCom, ietx2 and so wouldn't have existed)
- Yabause authors, because its debugger is very helpful when you are stucked somewhere in your Saturn program.
- Yabause authors. Definitely the best Saturn emulator !
- Rockin'B for his help. (Especially, Saturn game tutorial helped me a lot when I started Saturn programing !)
- segaxtreme Saturn dev board members for their kind help.
- antime for his help on segaxtreme forums.
- cyberwarriorX for his CDC replacement library.
- libyaul author. I don't directly use libyaul, but its source code helped me a lot !
- Marc Alexander Lehmann, the author of LibLZF compression library used in SatCom.
- Henry Minsky, author of RS code library used in SatCom.
- cyb70289, author of pmdll.dll/phymem.sys (parallel port access library for windows XP), used in SatCom.
- Charles MacDonald, author of Saturn PAR utility (satutil), whose sources were used as a base for SatLink.
- Charles MacDonald, author of Saturn VDP1 example (vdp1ex), whose sources were used as a base for SCFirmWare.
- Bart Trzynadlowski, whose programming ressources helped me a lot when using comms link under Saturn.
- ExCyber for his Saturn Action Replay flashing tool (arflash) .
- James Forshaw (TyRaNiD), for his Saturn debugger stuff.
- aze, for his wonderful icons set !
- darius, who provided me my first modchipped Saturn.
- Mr Satoru, who provided me my second modchipped Saturn.
- Alpha tester: vbt, who tested and debugged support for USB DataLink !
- Jean-Yves and Didier who left us so early..
- My wife and my sons.
- And Sega, of course.