[Scummvm-devel] Support of Mac BS 1

Thierry Crozat thierry.crozat at ntlworld.com
Wed Sep 27 00:27:58 CEST 2006


Hi all,
I have an old version of the mac Broken Sword 1 CDs and I have been  
thinking of implementing the support for this game for quite some  
time now. I recently borrowed (for a couple of months only) the PC  
version from a friend and I now have both the PC and the mac versions  
of the game. Therefore I am planning to work on this in the coming  
weeks.

I remember that somebody mentioned on your forum some time ago that  
the difference between the PC clu and the mac CLm files might only be  
a different byte order. After looking at the engine, I also guess  
that the swordres.rif file contains a description of the cluster  
files and is used to read them.

After a look at the files, it appears that most of the mac and PC  
cluster files have the same size and are very similar. For example  
the paris1.clu and paris1.CLm are identical for the first kbytes and  
then there is one 16 bits and two 32 bits words that have a different  
byte ordering. There are a lot more byte swapped words later in the  
file. I guess this file begins with a lot of 1 byte words, and the  
CLm file is just a big endian version of the clu file. So this should  
not be too difficult to support. After all, when using ScummVM on a  
big endian computer, the current engine already does the byte swap.

In the mac version, the speech files have the clu extension and not  
the CLm one. They are not identical to the one of the PC version  
(different sizes) but are very similar and seems to have the same  
byte order. I tried to use the mac speech.clu files with the PC  
version of the game and it works fine in ScummVM (at least the  
beginning of the game works fine).

The swordres.rif also have different sizes and seem to have the same  
byte ordering. The first 4 bytes of the mac file, when read as a  
little endian unsigned int, gives the number of cluster files, which  
seems right. However the following bytes differs from the PC file  
(not just byte ordering, the bytes are different). The mac and the PC  
swordres.rif do not have the same size.

Some of the other files also have a different size in the mac and the  
PC version but are very similar (general.cl[um], scripts.cl[um]  
text.cl[um]).

Is there several version of the game on PC witch could explain these  
differences ? In which case it should not really matters as I guess  
it will be reflected in the swordres.rif file.

Also both the PC and the mac versions that I have are french versions  
(voices and subtitles are in french), but the text.cl[um] files  
contains the text in english (and some other data with a different  
byte ordering). Does anybody know where the french subtitles are (the  
one that I see when I play the game) ? This is probably not very  
important. I am just curious.

More generally, does anybody have more information on the format of  
the swordres.rif and the cluster files ?
I had a look at the ResMan class and it does not seem to be too  
difficult. But some information, documentation, or advice might help me.

Any other comments that might help me ?

One more remark: the mac music files are in AIFF format (and not  
WAV). This is not supported by the engine and I do not plan to work  
on this support. I don't know if it would be difficult and if  
somebody else wants to work on that. We still have the possibility to  
re-encode the files in mp3 or ogg anyway.

And two more questions to finish:
do you know if anybody else has been working on supporting the mac  
version of BS1 ?
do you know if there is been any interest in this support from  
users ? I did not see anybody requesting in on the forums. If I am  
the only one interested in playing BS1 with the mac version of the  
game, I might take some time to implement it (this will probably be  
done before christmas anyway as I told my friend I will give him back  
his CDs before the end of the year).

Thanks for your help.

Thierry




More information about the Scummvm-devel mailing list