示例#1
0
        ///////////////////////////////////////////////////////////////////////////////
        // Initialize CAS Headers
        public static CASProgramFileHeaderType CreateProgramFileHeader(ProgramStorage in_storage)
        {
            CASProgramFileHeaderType header = new CASProgramFileHeaderType();

            header.FileType   = in_storage.GetFileTypeByte();
            header.FileLength = in_storage.Length;
            header.Autorun    = (byte)((in_storage.AutoStart) ? 0xff : 0x00);
            header.Version    = 0;

            return(header);
        }
示例#2
0
        ///////////////////////////////////////////////////////////////////////////////
        // Saves CAS file
        public static void CASSave(Stream in_file, ProgramStorage in_storage)
        {
            using (BinaryWriter cas_file = new BinaryWriter(in_file))
            {
                CASUPMHeaderType         upm_header     = CreateUPMHeader(in_storage);
                CASProgramFileHeaderType program_header = CreateProgramFileHeader(in_storage);

                cas_file.Write(upm_header);
                cas_file.Write(program_header);
                cas_file.Write(in_storage.Data, 0, in_storage.Length);
            }
        }
示例#3
0
        ///////////////////////////////////////////////////////////////////////////////
        // Loads CAS file
        public static void CASLoad(Stream in_file, ProgramStorage in_storage)
        {
            CASUPMHeaderType         upm_header     = new CASUPMHeaderType();
            CASProgramFileHeaderType program_header = new CASProgramFileHeaderType();

            // open CAS file
            using (BinaryReader cas_file = new BinaryReader(in_file))
            {
                // load UPM header
                cas_file.Read(upm_header);

                // load program header
                cas_file.Read(program_header);

                // Check validity
                if (!CASCheckHeaderValidity(program_header))
                {
                    throw new FileFormatException("Invalid CAS header");
                }

                if (!CASCheckUPMHeaderValidity(upm_header))
                {
                    throw new FileFormatException("Invalid UPM header");
                }

                cas_file.Read(in_storage.Data, 0, program_header.FileLength);

                in_storage.Length      = program_header.FileLength;
                in_storage.CopyProtect = (upm_header.CopyProtect != 0);
                in_storage.AutoStart   = (program_header.Autorun != 0);
                in_storage.SetFileTypeByte(program_header.FileType);
            }

            // generate TVC filename
            //PCToTVCFilename(g_db_file_name, in_file_name);
        }
示例#4
0
 ///////////////////////////////////////////////////////////////////////////////
 // Cheks CAS header validity
 public static bool CASCheckHeaderValidity(CASProgramFileHeaderType in_header)
 {
     return(in_header.Zero == 0 && (in_header.FileType == 0x00 || in_header.FileType == 0x01));
 }