mirror of
https://github.com/aaru-dps/010templates.git
synced 2025-12-16 19:24:28 +00:00
Add BlindWrite 5 template and document why cannot make this format writable.
This commit is contained in:
152
BlindWrite5.bt
Normal file
152
BlindWrite5.bt
Normal file
@@ -0,0 +1,152 @@
|
||||
//------------------------------------------------
|
||||
//--- 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;
|
||||
Reference in New Issue
Block a user