2 Questions about Saturn CD functions

GO TO ADMIN PANEL > ADD-ONS AND INSTALL VERTIFORO SIDEBAR TO SEE FORUMS AND SIDEBAR

legion stride

New Member
Joined
Jan 26, 2002
Messages
6
Points
1
Website
Visit site
Hi there,

I was just wondering if there was anyone who could help me better understand the saturn's SGL CD functions. Everything else I've tried from the manuals works great (well...once you fix the typo's anyway...:)). But when I tried the CD reading sample program...the compiler said it was okay, however when I loaded it (using SSFEXE through a PAR+), it just hangs at the line:

slCdLoadFile(cdhn, buf);

I changed the filename to load a file on the CD, but no dice. So if anyone could help me on this, it would be great.

Okay, wow, you're still reading huh? Heh, thanks! Now my second question is...once you've made a working '.BIN' file; How do you burn it to a CD so that it starts up like a regular saturn game?

I burned the Phoenix Saturn Emulator ISO to CD and it was awesome how it started on its own. So I was just wondering which tools I would use. Cause I've got a few demos that I just want to try burning. But this question isn't quite as important as the first one.

Hey, thanks just for hanging with me this long. Any help is appreciated. Okay, See ya'!!
 

ExCyber

Staff member
Joined
Aug 8, 2001
Messages
4,014
Points
36
Age
37
To get a booting disc, the primary thing you need is a valid bootstrap. This is the first 16 sectors (32768 bytes) of an ISO 9660 / ECMA 168 filesystem. You should be able to just rip the first 32,768 of a good Saturn ISO and insert it into your ISO. How to do this depends on what mastering progam you're using. The standard Saturn boot code just loads the first binary on the disc to 06004000, so all you need to do for putting the files on the disc is to make sure your binary is the first file on the disc; usually naming it something like "00BOOT.BIN" (IIRC the Phoenix emulator uses "0SL.BIN") will do the trick.

As for SGL, I think I'll defer to Takashi and Denis...
 

Artemio Urbina

New Member
Joined
Apr 16, 2001
Messages
237
Points
16
Website
junkerhq.net
As for the bootstrap, I *think* that in the tutorial it is specified. Ifd it isn't, check the shooting example, it has the ip.bin file and all.

About the CD functions, you need to boot from CD to use them if I remember right, Will not work from the AR as far as I remember (don't take me too seriously since I haven't coded for almost a year for the sat)
 

CyberWarriorX

New Member
Joined
May 27, 2001
Messages
390
Points
18
Website
www.cyberwarriorx.com
According to the psy-q devkit docs, you need to authenticate the CD first before you use it. Normally if you boot from the cd, this happens automatically. But if you upload a program using an ar+commlink, you'll need to use the following code before doing anything cd-related(stolen from sn systems' code, sorry):

#define SYS_CDINIT1(i)

((**(void(**)(int))0x60002dc)(i))

#define SYS_CDINIT2()

((**(void(**)(void))0x600029c)())

int CdUnlock (void)

{

Sint32 ret;

CdcStat stat;

volatile int delay;

SYS_CDINIT1(3);

SYS_CDINIT2();

do

{

for(delay = 100000; delay; delay--);



ret = CDC_GetCurStat(&stat);

} while ((ret != 0) || (CDC_STAT_STATUS(&stat) == 0xff));

return (int) CDC_STAT_STATUS(&stat);

}

I've been meaning to release a couple of programs of mine using cd-reading, just haven't got around to it.

Cyber Warrior X

(Edited by CyberWarriorX at 1:38 am on Jan. 27, 2002)
 

ExCyber

Staff member
Joined
Aug 8, 2001
Messages
4,014
Points
36
Age
37
Would someone be kind enough to explain what that code actually does? I'm not exactly a newcomer to C, but I'm not a compiler :).
 

CyberWarriorX

New Member
Joined
May 27, 2001
Messages
390
Points
18
Website
www.cyberwarriorx.com
Available in general, no. But if you have the right connections, they can be acquired. ^^

I actually found the code while looking through their extension library code.

According to the comment at the begining of the source:

"This function initialises the Saturn CD block causing it to read the Sega Security area. If you have a Psy-Q interface in the Saturn cart port then you must execute this function before you can use CDROM functions.

25-May-95delay necessary in do loop else CDblock stalls."

I hope this also answers your question too, Ex.

Cyber Warrior X
 

TakaIsSilly

New Member
Joined
Aug 1, 2001
Messages
364
Points
16
Website
www.emuhq.com
Hnn, that delay loop also explains one of my questions, the fact that I need to do slSynch() every CD sector read.

Also, doesn't "Sega Security area" means that it wil try and read the protection? If the person wants to load a file from a cd, that's no good, unless the system is chipped or he is forced to make a swap trick.
 

legion stride

New Member
Joined
Jan 26, 2002
Messages
6
Points
1
Website
Visit site
Thanks everyone!! It works great! :) Heh, and thanks for also explaining why it works. The data from the CD loaded fine...now I've just gotta step back and think about what I'm going to do with it, but at least when I do, I can finally make something larger than a few megs.

Once again, thanks everyone for the awesome help!!
 

ExCyber

Staff member
Joined
Aug 8, 2001
Messages
4,014
Points
36
Age
37
Nah, I wanted to know what the code actually means, primarily the couple of lines that look more like brainfuck than C :).
 

CyberWarriorX

New Member
Joined
May 27, 2001
Messages
390
Points
18
Website
www.cyberwarriorx.com
Taka: Yeah. From what I can understand, the drive is always locked until that area is read. Not really much you can do about that.

Considering that a person has to go through the same thing if he burns a cd, I can't see how it's much of a loss.

The really useful part of this code is that now people only have to burn 1 cd in order to test homebrewn cd-based programs. If they have any problems the first time around, all they have to do is upload the updated program(with the unlocking code included) to the appropriate memory address, and it should work.

Ex: Other then what I cut and pasted, I have no idea. There might be something else in the docs, i'd have to take a look.
 

legion stride

New Member
Joined
Jan 26, 2002
Messages
6
Points
1
Website
Visit site
I was just wondering...is there ever a better time to use 'CDBUF_FUNC' instead of 'CDBUF_COPY' when setting the parameters for 'slCdLoadFile'?
 

CyberWarriorX

New Member
Joined
May 27, 2001
Messages
390
Points
18
Website
www.cyberwarriorx.com
Yes. When the file you're loading is larger the amount of free work ram. I would imagine it's best for streaming audio, etc. I never did get around to fittling around with it though.

Cyber Warrior X
 
Top