Add BlindWrite 4 template and document why cannot make this format writable.

This commit is contained in:
2018-01-08 20:37:27 +00:00
parent d7a0e82935
commit 554cf8a166
2 changed files with 128 additions and 1 deletions

View File

@@ -9,7 +9,7 @@
// File Mask: *.mds
// ID Bytes: 4D 45 44 49 41 20 44 45 53 43 52 49 50 54 4F 52 // MEDIA DESCRIPTOR
// History:
// 0.1 2018-01-08 Vasyl Tsvirkunov: Initial release
// 0.1 2018-01-08 Natalia Portillo: Initial release
//------------------------------------------------
enum <unsigned short> AlcoholMediumType

127
BlindWrite4.bt Normal file
View File

@@ -0,0 +1,127 @@
//------------------------------------------------
//--- 010 Editor v8.0.1 Binary Template
//
// File: BlindWrite4.bt
// Authors: Natalia Portillo
// Version: 0.1
// Purpose: BlindWrite 4 media descriptor.
// Category: Misc
// File Mask: *.bwt
// ID Bytes: 42 4C 49 4E 44 57 52 49 54 45 20 54 4F 43 20 46 49 4C 45 //BLINDWRITE TOC FILE
// History:
// 0.1 2018-01-08 Natalia Portillo: Initial release
//------------------------------------------------
enum <byte> Bw4TrackType
{
Audio = 0,
Mode1 = 1,
Mode2 = 2
};
typedef struct
{
uint filenameLen;
if(filenameLen > 0)
char filename[filenameLen];
uint offset;
ubyte subchannel;
byte unknown1[3];
uint unknown2;
byte unknown3;
byte session;
byte unknown4;
byte CONTROL : 4;
byte ADR : 4;
byte unknown5;
Bw4TrackType trackMode;
byte unknown6;
byte point;
uint unknown7;
uint unknown8;
uint unknown9;
uint unknwon10;
ushort unknown11;
int lastSector;
byte unknown12;
int pregap;
int startSector;
uint unknown13[2];
uint titleLen;
if(titleLen > 0)
char title[titleLen];
uint performerLen;
if(performerLen > 0)
char performer[performerLen];
uint unkString1Len;
if(unkString1Len > 0)
char unkString1[unkString1Len];
uint unkString2Len;
if(unkString2Len > 0)
char unkString2[unkString2Len];
uint unkString3Len;
if(unkString3Len > 0)
char unkString3[unkString3Len];
uint unkString4Len;
if(unkString4Len > 0)
char unkString4[unkString4Len];
uint discIdLen;
if(discIdLen > 0)
char discId[discIdLen];
uint unkString5Len;
if(unkString5Len > 0)
char unkString5[unkString5Len];
uint unkString6Len;
if(unkString6Len > 0)
char unkString6[unkString6Len];
uint unkString7Len;
if(unkString7Len > 0)
char unkString7[unkString7Len];
uint unkString8Len;
if(unkString8Len > 0)
char unkString8[unkString8Len];
uint unkString9Len;
if(unkString9Len > 0)
char unkString9[unkString9Len];
uint unkString10Len;
if(unkString10Len > 0)
char unkString10[unkString10Len];
uint unkString11Len;
if(unkString11Len > 0)
char unkString11[unkString11Len];
uint isrcLen;
if(isrcLen > 0)
char isrc[isrcLen];
} BW4TrackDescriptor <optimize=false>;
typedef struct
{
char magic[19];
uint unknown1;
uint64 timestamp;
uint volumeIdLen;
if(volumeIdLen > 0)
char volumeId[volumeIdLen];
uint systemIdLen;
if(systemIdLen > 0)
char systemId[systemIdLen];
uint commentsLen;
if(commentsLen > 0)
char comments[commentsLen];
uint trackDescriptors;
uint datafileLen;
if(datafileLen > 0)
char datafile[datafileLen];
uint subchannelfileLen;
if(subchannelfileLen > 0)
char subchannelFile[subchannelfileLen];
uint unknown2;
ubyte unknown3Len;
if(unknown3Len > 0)
char unknown3[unknown3Len];
if(trackDescriptors > 0)
BW4TrackDescriptor tracks[trackDescriptors];
} BW4Header <optimize=false>;
LittleEndian();
BW4Header header;