Playboy CAM 2: Difference between revisions

From XentaxWiki
Jump to navigation Jump to search
(Added known file types)
imported>Ikskoks
 
(64 intermediate revisions by 4 users not shown)
Line 1: Line 1:
== CAM (VERSION 2) ==  
== CAM (VERSION 2) ==  
 
* ''' Game ''':    [[Playboy: The Mansion]] <br>
* ''' Format Type ''':    Archive <br>  
* ''' Format Type ''':    Archive <br>  
* ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Little Endian <br>  
* ''' [http://en.wikipedia.org/wiki/Endianness Endian Order] ''': Little Endian <br>  
Line 6: Line 6:


=== Format Specifications ===  
=== Format Specifications ===  
 
<b>Note that the files on PC, XBox and PS2 are not the same... We should probably divide this spec based on platform. </b> The following is valid for PS2.<br>
<tt>
==== File header. Common to all .cam files ====
<br>
<tt><b>
<h3>File header. Common to all .cam files</h3>
char {8}&nbsp;&nbsp;&nbsp;&nbsp; - Header {{Green|(CYLBPC}} + {{Green|0x20 0x20)}} <br>  
char {8}&nbsp;&nbsp;&nbsp;&nbsp; - Header <font color="purple">(CYLBPC )</font> <br>  
uint16 {2}&nbsp;&nbsp; - Cam File Type  <br>  
uint16 {2}&nbsp;&nbsp; - Cam File Type  <br>  
uint16 {2}&nbsp;&nbsp; - Version  <br>  
uint16 {2}&nbsp;&nbsp; - Version  <br>  
uint32 {4}&nbsp;&nbsp; - Number Of Segment Types <br>  
uint32 {4}&nbsp;&nbsp; - Number Of Segment Types <br>  
uint32 {4}&nbsp;&nbsp; - length of the data segment type description area <br>
<br>  
<br>  
<p><font color="blue" >Known file types:</font><br>
<p>{{Blue|Known file types:}}<br>
<li>1&nbsp;&nbsp;animsndd.cam, pregame[ ,f,g,i,s,u].cam, textdat[a,f,g,i,p,s,u].cam files</li>
* 1&nbsp;&nbsp;animsndd.cam, pregame[ ,f,g,i,s,u].cam, textdat[a,f,g,i,p,s,u].cam files
<li>2&nbsp;&nbsp;everything not listed in other types</li>
* 2&nbsp;&nbsp;everything not listed in other types
<li>3&nbsp;&nbsp;soundesc.cam</li></p>
* 3&nbsp;&nbsp;soundesc.cam</p></b></tt>
<br>
 
<h4>File Type 1 Format</h4>
==== File Type 1 Format ====
Currently unfinished<br>
Currently unfinished
<h4>File Type 2 Format</h4>
 
==== File Type 2 Format ====
Currently unfinished<br>
Currently unfinished<br>
<font color="blue"> ''' // for each type ''' </font> <br>  
<tt><b>
: uint32 {4}&nbsp;&nbsp; - Segment Type Extension/Description <br>
{{Blue| // for each type}}<br>  
: uint32 {4}&nbsp;&nbsp; - Offset to the directory for this file type <br>
: uint32 {4}&nbsp;&nbsp; - Segment Type ID
: uint32 {4}&nbsp;&nbsp; - Byte number of the segment descriptor record
<br>
<br>
<font color="blue"> ''' // for each type ''' </font> <br>  
{{Blue| // segement descriptor record, one for each segment type '''}}<br>  
: uint32 {4}&nbsp;&nbsp; - Number Of Files <br>
: uint32 {4}&nbsp;&nbsp; - Number of records
: uint32 {4}&nbsp;&nbsp; - null <br>
: uint32 {4}&nbsp;&nbsp; - unknown (0x0000)
<br>
<br>
: <font color="blue"> ''' // for each file of this type ''' </font> <br>
: {{Blue| // data records descriptors for each segment}}
:: uint32 {4}&nbsp;&nbsp; - <font color="red"> '' Filename? File ID? '' </font> <br>
:: uint32 {4}&nbsp;&nbsp; - data record name, ie. p012, p013, p014 etc.
:: uint32 {4}&nbsp;&nbsp; - File Offset <br>
:: uint32 {4}&nbsp;&nbsp; - Byte number of the start of data
:: uint32 {4}&nbsp;&nbsp; - File Size <br>
:: uint32 {4}&nbsp;&nbsp; - data length
:: uint32 {4}&nbsp;&nbsp; - Filename Length <br>
:: uint32 {4}&nbsp;&nbsp; - Length of record name (follows in name array)
<br>
<br>
: <font color="blue"> ''' // for each file of this type ''' </font> <br>
: {{Blue| // array of record names}}
:: char {X}&nbsp;&nbsp;&nbsp;&nbsp; - Filename <br>
<br>
<br>
byte {0-2047}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - null Padding to a multiple of 2048 bytes <br>
An array of names, each name corresponding to a record in the order given above follows here...
:: uint8 {same as number of records} (note some lengths can be 0)
<br>
<br>
<font color="blue"> ''' // for each file ''' </font> <br>  
{{Blue| // buffer, filled with 0x00}}<br>
: byte {X}&nbsp;&nbsp;&nbsp;&nbsp; - File Data <br>
A buffer filled with nulls follows. The next data is that pointed to by the 'Byte number of the start of data' above. The format of this data will depend upon the record type.</b></tt>
: byte {0-2047}&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; - null Padding to a multiple of 2048 bytes <br>
 
==== File Type 3 Format ====
Currently unfinished


<h4>File Type 3 Format</h4>
==== PICTURE DATA ====
Currently unfinished<br>
'PICT' segment type
</tt>
: uint32 {4}&nbsp;&nbsp; - Picture type ID (possibly 0x0001 TGA, 0x0008 bitmap with 256 colors mapped)<br><br>


=== MultiEx BMS ===  
=== MultiEx BMS ===
Not written yet.


Not written yet<br><br>
<br>
=== Supported Programs ===  
=== Supported Programs ===  


* [[Game Extractor|Game Extractor]]<br><br>
* [[Game Extractor|Game Extractor]]
 
=== Related formats ===
* [[Playboy CAM 1]]
* [[Playboy_PICT_1]]
* [[Playboy_PICT_8]]
* [[Deadlock]]
 
 
 
[[Category:Complete Complete|Playboy CAM 1]]
[[Category:Platform PC|Playboy CAM 1]]
[[Category:CE None|Playboy CAM 1]]
[[Category:Format_Archive | Type: Archive]]
[[Category:Extension_cam | Extension: cam]]
[[Category:BMS_None | BMS: None]]
[[Category:File Format]]

Latest revision as of 23:30, 14 November 2020

CAM (VERSION 2)


Format Specifications

Note that the files on PC, XBox and PS2 are not the same... We should probably divide this spec based on platform. The following is valid for PS2.

File header. Common to all .cam files

char {8}     - Header (CYLBPC + 0x20 0x20)
uint16 {2}   - Cam File Type
uint16 {2}   - Version
uint32 {4}   - Number Of Segment Types
uint32 {4}   - length of the data segment type description area

Known file types:

  • 1  animsndd.cam, pregame[ ,f,g,i,s,u].cam, textdat[a,f,g,i,p,s,u].cam files
  • 2  everything not listed in other types
  • 3  soundesc.cam

File Type 1 Format

Currently unfinished

File Type 2 Format

Currently unfinished
// for each type

uint32 {4}   - Segment Type ID
uint32 {4}   - Byte number of the segment descriptor record


// segement descriptor record, one for each segment type

uint32 {4}   - Number of records
uint32 {4}   - unknown (0x0000)


// data records descriptors for each segment
uint32 {4}   - data record name, ie. p012, p013, p014 etc.
uint32 {4}   - Byte number of the start of data
uint32 {4}   - data length
uint32 {4}   - Length of record name (follows in name array)


// array of record names


An array of names, each name corresponding to a record in the order given above follows here...

uint8 {same as number of records} (note some lengths can be 0)


// buffer, filled with 0x00
A buffer filled with nulls follows. The next data is that pointed to by the 'Byte number of the start of data' above. The format of this data will depend upon the record type.

File Type 3 Format

Currently unfinished

PICTURE DATA

'PICT' segment type

uint32 {4}   - Picture type ID (possibly 0x0001 TGA, 0x0008 bitmap with 256 colors mapped)

MultiEx BMS

Not written yet.

Supported Programs

Related formats