コード例 #1
0
ファイル: SoundEditor.cs プロジェクト: xbox3601112/J-Runner
        private int GetID()
        {
            UsbSetupPacket packet     = new UsbSetupPacket();
            UsbSetupPacket packetread = new UsbSetupPacket();

            byte[] readBuffer = new byte[8];
            byte   buf        = 0x48;
            int    transfer   = 0x08;

            packet.Value       = 0x00;
            packet.Index       = 0x00;
            packet.Length      = 0x8;
            packet.Request     = 0x30;
            packet.RequestType = (byte)UsbRequestType.TypeVendor;

            packetread.Value       = 0x00;
            packetread.Index       = 0x00;
            packetread.Length      = 0x8;
            packetread.Request     = 0x31;
            packetread.RequestType = 0xC0;

            byte[] ID = { 0x03, 0xEF, 0x20, 0x01 };

            Console.WriteLine("Sending Flash ID...");
            MyUsbDevice.ControlTransfer(ref packet, buf, 5, out transfer);
            if (MainForm.debugme)
            {
                Console.WriteLine("Length Transferred: {0}", transfer);
            }

            MyUsbDevice.ControlTransfer(ref packetread, readBuffer, 8, out transfer);
            if (MainForm.debugme)
            {
                Console.WriteLine("Length Transferred: {0}", transfer);
            }
            if (NandX.ByteArrayCompare(ID, Oper.returnportion(readBuffer, 1, 4)))
            {
                Console.WriteLine("ISD-2100 detected");
                return(1);
            }
            else
            {
                Console.WriteLine("no ISD-2100 detected");
                Console.WriteLine("In {0}", Oper.ByteArrayToString(readBuffer));
                return(0);
            }
        }
コード例 #2
0
ファイル: SoundEditor.cs プロジェクト: xbox3601112/J-Runner
        private void ISD_Write_Flash()
        {
            long     filesize;
            FileInfo fl = new FileInfo(txtFile.Text);

            filesize = fl.Length;
            if (!File.Exists(txtFile.Text))
            {
                Console.WriteLine("Image file not found");
                return;
            }
            if (filesize != 0xB000)
            {
                Console.WriteLine("Image file must be 44Kb");
                return;
            }
            BinaryReader rw = new BinaryReader(File.Open(txtFile.Text, FileMode.Open, FileAccess.Read));

            Console.WriteLine("Writing to Flash..");

            UsbSetupPacket packet     = new UsbSetupPacket();
            UsbSetupPacket packetread = new UsbSetupPacket();

            //ErrorCode ec = ErrorCode.None;

            byte[] readBuffer = new byte[8];
            //Thread.Sleep(variables.delay);
            packet.Value       = 0x00;
            packet.Index       = 0x00;
            packet.Length      = 0x8;
            packet.Request     = 0x30;
            packet.RequestType = (byte)UsbRequestType.TypeVendor;

            packetread.Value       = 0x00;
            packetread.Index       = 0x00;
            packetread.Length      = 0x8;
            packetread.Request     = 0x31;
            packetread.RequestType = 0xC0;
            int transfer = 0x08;

            byte[] RES = { 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60 };
            byte[] CMD = new byte[8];
            CMD[0] = 0xA0;

            for (int i = 0; i < 0xB000; i += 4)
            {
                if (variables.escapeloop)
                {
                    break;
                }
                progressBar1.Value = (i * progressBar1.Maximum) / 0xB000;

                byte[] buffer = rw.ReadBytes(0x4);
                Buffer.BlockCopy(buffer, 0, CMD, 4, 4);

                CMD[3] = (byte)(i & 0x00ff);
                CMD[2] = (byte)((i & 0xff00) >> 8);

                MyUsbDevice.ControlTransfer(ref packet, CMD, 8, out transfer);
                Thread.Sleep(variables.delay);
                MyUsbDevice.ControlTransfer(ref packetread, readBuffer, 8, out transfer);
                if (NandX.ByteArrayCompare(readBuffer, RES, 5))
                {
                }
                else
                {
                    i -= 4;
                    Console.Write(":");
                }
            }
            progressBar1.Value = progressBar1.Maximum;
            rw.Close();
        }
コード例 #3
0
ファイル: SoundEditor.cs プロジェクト: xbox3601112/J-Runner
        private void ISD_Verify_Flash()
        {
            long     filesize;
            FileInfo fl = new FileInfo(txtFile.Text);

            filesize = fl.Length;
            if (!File.Exists(txtFile.Text))
            {
                Console.WriteLine("Image file not found");
                return;
            }
            if (filesize != 0xB000)
            {
                Console.WriteLine("Image file must be 44Kb");
                return;
            }
            BinaryReader rw = new BinaryReader(File.Open(txtFile.Text, FileMode.Open, FileAccess.Read));

            byte[] file = rw.ReadBytes(0xB000);
            rw.Close();
            Console.WriteLine("Verifing with Flash..");

            UsbSetupPacket packet     = new UsbSetupPacket();
            UsbSetupPacket packetread = new UsbSetupPacket();

            //ErrorCode ec = ErrorCode.None;

            byte[] readBuffer = new byte[8];
            byte[] data       = new byte[0xB000];
            //Thread.Sleep(variables.delay);
            packet.Value       = 0x00;
            packet.Index       = 0x00;
            packet.Length      = 0x8;
            packet.Request     = 0x30;
            packet.RequestType = (byte)UsbRequestType.TypeVendor;

            packetread.Value       = 0x00;
            packetread.Index       = 0x00;
            packetread.Length      = 0x8;
            packetread.Request     = 0x31;
            packetread.RequestType = 0xC0;
            int transfer = 0x08;

            byte[] RES = { 0x60, 0x60, 0x60, 0x60 };
            byte[] CMD = new byte[8];

            int fails = 0;

            CMD[0] = 0xA2;
            for (int i = 0; i < 0xB000; i += 4)
            {
                if (variables.escapeloop)
                {
                    break;
                }
                progressBar1.Value = ((i) * progressBar1.Maximum) / 0xB000;

                CMD[3] = (byte)(i & 0x00ff);
                CMD[2] = (byte)((i & 0xff00) >> 8);

                MyUsbDevice.ControlTransfer(ref packet, CMD, 8, out transfer);
                Thread.Sleep(variables.delay);
                MyUsbDevice.ControlTransfer(ref packetread, readBuffer, 8, out transfer);
                if (NandX.ByteArrayCompare(readBuffer, RES, 4))
                {
                    Buffer.BlockCopy(readBuffer, 4, data, i, 4);
                    fails = 0;
                }
                else
                {
                    if (fails == 6)
                    {
                        Console.WriteLine("\nRead Failed..\n");
                        break;
                    }
                    i -= 4;
                    Console.Write(":");
                    fails++;
                }
            }
            progressBar1.Value = progressBar1.Maximum;
            if (NandX.ByteArrayCompare(file, data))
            {
                Console.WriteLine("VERIFIED! Flash matches File..");
            }
            else
            {
                Console.WriteLine("Verify Failed !!..");
            }
        }
コード例 #4
0
ファイル: SoundEditor.cs プロジェクト: xbox3601112/J-Runner
        private void ISD_Read_Flash()
        {
            UsbSetupPacket packet     = new UsbSetupPacket();
            UsbSetupPacket packetread = new UsbSetupPacket();

            //ErrorCode ec = ErrorCode.None;

            byte[] readBuffer = new byte[8];
            //Thread.Sleep(variables.delay);
            packet.Value       = 0x00;
            packet.Index       = 0x00;
            packet.Length      = 0x8;
            packet.Request     = 0x30;
            packet.RequestType = (byte)UsbRequestType.TypeVendor;

            packetread.Value       = 0x00;
            packetread.Index       = 0x00;
            packetread.Length      = 0x8;
            packetread.Request     = 0x31;
            packetread.RequestType = 0xC0;
            int transfer = 0x08;

            try
            {
                File.Delete(txtFile.Text);
            }
            catch (Exception ex) { if (MainForm.debugme)
                                   {
                                       Console.WriteLine(ex.ToString());
                                   }
            };

            BinaryWriter sw = new BinaryWriter(File.Open(txtFile.Text, FileMode.Append, FileAccess.Write));

            Console.WriteLine("Reading from Flash..");

            byte[] RES = { 0x60, 0x60, 0x60, 0x60 };
            byte[] CMD = new byte[8];

            int fails = 0;

            CMD[0] = 0xA2;
            for (int i = 0; i < 0xB000; i += 4)
            {
                if (variables.escapeloop)
                {
                    break;
                }
                progressBar1.Value = (i * progressBar1.Maximum) / 0xB000;

                if ((i % 0x400 == 0))
                {
                    Thread.Sleep(20);
                }

                CMD[3] = (byte)(i & 0x00ff);
                CMD[2] = (byte)((i & 0xff00) >> 8);

                MyUsbDevice.ControlTransfer(ref packet, CMD, 8, out transfer);
                Thread.Sleep(variables.delay);

                MyUsbDevice.ControlTransfer(ref packetread, readBuffer, 8, out transfer);
                if (NandX.ByteArrayCompare(readBuffer, RES, 4))
                {
                    sw.Write(Oper.returnportion(readBuffer, 4, 4));
                    fails = 0;
                }
                else
                {
                    if (fails == 6)
                    {
                        Console.WriteLine("\nRead Failed..\n");
                        break;
                    }
                    i -= 4;
                    Console.Write(":");
                    fails++;
                }
            }
            progressBar1.Value = progressBar1.Maximum;
            sw.Close();
            return;
        }