Files
010templates/BlindWrite5.bt

153 lines
2.8 KiB
Plaintext
Raw Normal View History

//------------------------------------------------
//--- 010 Editor v8.0.1 Binary Template
//
// File: BlindWrite5.bt
// Authors: Natalia Portillo
// Version: 0.1
// Purpose: BlindWrite 5 media descriptor.
// Category: Misc
// File Mask: *.b5t
// ID Bytes: 42 57 54 35 20 53 54 52 45 41 4D 20 53 49 47 4E //BWT5 STREAM SIGN
// History:
// 0.1 2018-01-08 Natalia Portillo: Initial release
//------------------------------------------------
typedef struct
{
uint type;
uint length;
uint unknown1[4];
uint offset;
uint unknown2[3];
int startLba;
int sectors;
uint filenameLen;
if(filenameLen > 0)
wchar_t filename[filenameLen/2];
uint unknown3;
} BW5DataFile <optimize=false>;
enum <byte> BW5TrackType
{
NotData = 0,
Audio = 1,
Mode1 = 2,
Mode2 = 3,
Mode2F1 = 4,
Mode2F2 = 5,
Dvd = 6
};
enum <byte> BW5SubchannelType
{
None = 0,
Q16 = 2,
Linear = 4
};
typedef struct
{
BW5TrackType type;
uchar unknown1[3];
uint unknown2;
BW5SubchannelType subchannel;
byte unknown3;
byte CONTROL;
byte ADR;
byte POINT;
byte TNO;
byte AMIN;
byte ASEC;
byte AFRAME;
byte PHOUR : 4;
byte AHOUR : 4;
byte PMIN;
byte PSEC;
byte PFRAME;
byte unknown5;
uint pregap;
uint unknown6[4];
int startLba;
int sectors;
uint unknown7[2];
uint session;
ushort unknown8;
if(type != Dvd && type != NotData)
uint unknown9[2];
} BW5TrackDescriptor <optimize=false>;
typedef struct
{
ushort sequence;
byte entries;
byte unknown;
int start;
int end;
ushort firstTrack;
ushort lastTrack;
if(entries > 0)
BW5TrackDescriptor tracks[entries];
} BW5Session <optimize=false>;
typedef struct
{
char magic[16];
uint unknown1[8];
ushort profile;
ushort sessions;
uint unknown2[3];
byte validMcn;
char mcn[13];
ushort unknown3;
uint unknown4[4];
ushort pmaLen;
ushort atipLen;
ushort cdtextLen;
ushort cdinfoLen;
uint bcaLen;
uint unknown5[3];
uint dvdstructuresLen;
uint dvdinfoLen;
char unknown6[32];
char manufacturer[8];
char product[16];
char revision[4];
char vendor[20];
char volumeId[32];
uint mode2ALen;
uint unknownBlockLen;
uint dataLen;
uint sessionsLen;
uint dpmLen;
if(mode2ALen > 0)
uchar mode2A[mode2ALen];
if(unknownBlockLen > 0)
uchar unknownBlock[unknownBlockLen];
if(pmaLen > 0)
uchar pma[pmaLen];
if(atipLen > 0)
uchar atip[atipLen];
if(cdtextLen > 0)
uchar cdtext[cdtextLen];
if(bcaLen > 0)
uchar bca[bcaLen];
if(dvdstructuresLen > 0)
uchar dvdstructures[dvdstructuresLen];
if(dvdinfoLen > 0)
uchar dvdinformation[dvdinfoLen];
else if(cdinfoLen > 0)
uchar cdinformation[dvdinfoLen];
uint dataBlockCount;
uint dataPathLen;
wchar_t dataPath[dataPathLen/2];
BW5DataFile dataBlocks[dataBlockCount];
BW5Session session[sessions];
if(dpmLen > 0)
uchar dpm[dpmLen];
uint unknown7;
char footer[16];
} BW5Header <optimize=false>;
LittleEndian();
BW5Header header;