示例#1
0
        public static int MAMEtoNDD(string set_convpath, string set_o)
        {
            FileStream file_conv = new FileStream(set_convpath, FileMode.Open);

            byte[] sys_data = Util.GetSystemData(file_conv);
            if (sys_data == null)
            {
                Console.WriteLine("ERROR: COULD NOT FIND A VALID SYSTEM DATA BLOCK");
                file_conv.Close();
                return(-1);
            }

            byte[] output_ndd = new byte[0x3DEC800];
            byte   disk_type  = (byte)(sys_data[5] & 0x0F);

            int[] table = Leo.GenLBAToPhysTable(sys_data);

            for (int i = 0; i < Leo.LBA_COUNT; i++)
            {
                int blocksizemame = 0;
                int mameoffset    = Util.GetMAMEBlockInfo(i, table, disk_type, out blocksizemame);

                int blocksizendd = 0;
                int nddoffset    = Util.GetNDDBlockInfo(i, disk_type, out blocksizendd);

                if (blocksizemame != blocksizendd)
                {
                    Console.WriteLine("ERROR: BLOCK SIZE COULD NOT BE CALCULATED CORRECTLY");
                    file_conv.Close();
                    return(-1);
                }

                file_conv.Seek(mameoffset, SeekOrigin.Begin);
                file_conv.Read(output_ndd, nddoffset, blocksizendd);
            }
            file_conv.Close();

            //Write D64 File
            FileStream file_out = new FileStream(set_o, FileMode.Create);

            file_out.Write(output_ndd, 0, output_ndd.Length);

            file_out.Close();

            return(0);
        }