diff --git a/DiscImageChef.DiscImages/BlindWrite4.cs b/DiscImageChef.DiscImages/BlindWrite4.cs
index a6271f1a..783acf9a 100644
--- a/DiscImageChef.DiscImages/BlindWrite4.cs
+++ b/DiscImageChef.DiscImages/BlindWrite4.cs
@@ -44,6 +44,7 @@ using DiscImageChef.Filters;
namespace DiscImageChef.DiscImages
{
+ // TODO: Too many unknowns, plus a completely unknown footer, to make this writable
public class BlindWrite4 : IMediaImage
{
/// "BLINDWRITE TOC FILE"
diff --git a/templates/Alcohol.bt b/templates/Alcohol.bt
index 48d78049..31478111 100644
--- a/templates/Alcohol.bt
+++ b/templates/Alcohol.bt
@@ -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 AlcoholMediumType
diff --git a/templates/BlindWrite4.bt b/templates/BlindWrite4.bt
new file mode 100644
index 00000000..87d2b25b
--- /dev/null
+++ b/templates/BlindWrite4.bt
@@ -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 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 ;
+
+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 ;
+
+LittleEndian();
+BW4Header header;
\ No newline at end of file