From a6818910a685d5ad988e4e5b93cbde1d4a08a129 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Mon, 8 Jan 2018 21:16:22 +0000 Subject: [PATCH] Add BlindWrite 5 template and document why cannot make this format writable. --- BlindWrite5.bt | 152 +++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 152 insertions(+) create mode 100644 BlindWrite5.bt diff --git a/BlindWrite5.bt b/BlindWrite5.bt new file mode 100644 index 0000000..533ceda --- /dev/null +++ b/BlindWrite5.bt @@ -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 ; + +enum BW5TrackType +{ + NotData = 0, + Audio = 1, + Mode1 = 2, + Mode2 = 3, + Mode2F1 = 4, + Mode2F2 = 5, + Dvd = 6 +}; + +enum 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 ; + +typedef struct +{ + ushort sequence; + byte entries; + byte unknown; + int start; + int end; + ushort firstTrack; + ushort lastTrack; + if(entries > 0) + BW5TrackDescriptor tracks[entries]; +} BW5Session ; + +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 ; + +LittleEndian(); +BW5Header header;