Beispiel #1
0
        public void ReadHeader()
        {
            MemoryTool.memcpy(nesm, 0x00, dataArray, 0x00, sizeof(Byte) * 5);

            version          = GetByte(0x05);
            musicNum         = GetByte(0x06);
            startMusicNumber = GetByte(0x07);
            loadAddress      = GetWord(0x08);
            initAddress      = GetWord(0x0A);
            startAddress     = GetWord(0x0C);
            MemoryTool.memcpy(title, 0x00, dataArray, 0x0E, sizeof(Byte) * 32);
            MemoryTool.memcpy(artist, 0x00, dataArray, 0x2E, sizeof(Byte) * 32);
            MemoryTool.memcpy(maker, 0x00, dataArray, 0x4E, sizeof(Byte) * 32);
            frequency    = GetWord(0x6E);
            bank0        = GetByte(0x70);
            bank1        = GetByte(0x71);
            bank2        = GetByte(0x72);
            bank3        = GetByte(0x73);
            bank4        = GetByte(0x74);
            bank5        = GetByte(0x75);
            bank6        = GetByte(0x76);
            bank7        = GetByte(0x77);
            frequencyPal = GetWord(0x78);
            mode         = GetByte(0x7A);
            expectFlag   = GetByte(0x7B);

            if (nesm[0] != 'N' || nesm[1] != 'E' || nesm[2] != 'S' || nesm[3] != 'M')
            {
                // To Be Fixed.
                //MessageBox( NULL, TEXT( "?T?|?[?g???????????t?@?C???????B" ), TEXT( "?G???[" ), MB_OK );

                //exit( 1 );
            }
        }
Beispiel #2
0
        public MusicNsf(Stream aStream)
        {
            Byte[] lDataArray = new Byte[aStream.Length];

            aStream.Read(lDataArray, 0, lDataArray.Length);

            dataSize = lDataArray.Length - 0x80;

            if (dataSize >= 0x8000)
            {
                Logger.LogError("?T?|?[?g???????????t?@?C???????B");
                // To Be Fixed.
                //MessageBox( NULL, TEXT( "?T?|?[?g???????????t?@?C???????B" ), TEXT( "?G???[" ), MB_OK );

                //exit( 1 );
            }

            header = new CNsfHeader(lDataArray);

            dataArray = new Byte[0x10000];
            MemoryTool.memcpy(dataArray, 0x00, lDataArray, 0x80, dataSize);

            musicNumber = ( char )(header.GetStartMusicNumber() - 1);

            Logger.LogNormal("%d????????\n" + ( int )(musicNumber + 1));
        }
Beispiel #3
0
        private void morphBox_OnValueChanged(object sender, EventArgs e)
        {
            IntPtr zero    = IntPtr.Zero;
            IntPtr address = (IntPtr)(BitConverter.ToInt32(
                                          MemoryTool.ReadAddress(
                                              InformationCollecter.Instance.ProcessHandle,
                                              (IntPtr)BasePointer.CharacterBase,
                                              4), 0) + (int)Offset.Morph);

            if (InformationCollecter.Instance.Threads.ContainsKey("Morph"))
            {
                InformationCollecter.Instance.Threads["Morph"].Abort();
            }
            InformationCollecter.Instance.Threads.Remove("Morph");
            InformationCollecter.Instance.Threads.Add("Morph",
                                                      new Thread(new ThreadStart(
                                                                     () =>
            {
                while (true)
                {
                    WriteMemory((int)address, BitConverter.GetBytes((int)numericUpDown1.Value));
                    Thread.Sleep(100);
                }
            })));
            InformationCollecter.Instance.Threads["Morph"].Start();
        }
Beispiel #4
0
        public void ReadHeader()
        {
            nes = new Byte[4];
            MemoryTool.memcpy(nes, 0x00, dataArray, 0x00, sizeof(Byte) * 4);

            prgBanks  = GetByte(0x04);                  // PRG-ROM?y?[?W??
            chrBanks  = GetByte(0x05);                  // CHR0ROM?y?[?W??
            controll1 = GetByte(0x06);                  // ?R???g???[???o?C?g1
            controll2 = GetByte(0x07);                  // ?R???g???[???o?C?g2
            zero1     = GetByte(0x08);                  // 00
            zero2     = GetByte(0x09);                  // 00
            mode      = GetByte(0x0A);                  // NTCS/PAL
            zero4     = GetByte(0x0B);                  // 00
            zero5     = GetByte(0x0C);                  // 00
            zero6     = GetByte(0x0D);                  // 00
            zero7     = GetByte(0x0E);                  // 00
            zero8     = GetByte(0x0F);                  // 00

            if (nes[0] != 'N' || nes[1] != 'E' || nes[2] != 'S')
            {
                // To Be Fixed.
                //MessageBox( NULL, TEXT( "?T?|?[?g???????????t?@?C???????B" ), TEXT( "?G???[" ), MB_OK );

                //exit( 1 );
            }
        }
Beispiel #5
0
        public void Init()
        {
            MemoryTool.memset(data, 0x00, 0x00, sizeof(Byte) * 0x8000);
            MemoryTool.memset(flag, 0x00, 0x00, sizeof(Byte) * 0x10000);

            data[0x4010] = 0x10;
            data[0x4015] = 0x0F;
        }
Beispiel #6
0
        private Byte expectFlag;                        // ?g???t???O					0x7B

        public CNsfHeader(Byte[] aDataArray)
        {
            dataArray = new Byte[0x80];
            MemoryTool.memcpy(dataArray, 0x00, aDataArray, 0x00, 0x80);

            // nsf?w?b?_??????????
            ReadHeader();

            // nsf?w?b?_???\??
            PrintHeader();
        }
Beispiel #7
0
        public InprocDebugger(Host host)
        {
            this.Host      = host;
            this.DebugHost = host.Debugger;
            this.Window    = new DebuggerWindow(this);
            this.Tools     = new List <DebuggerTool>();

            this.State       = DebuggerState.Idle;
            this.Breakpoints = new BreakpointManager(this);
            this.CodeCache   = new CodeCache(this);
            this.UserData    = new UserDataStore();

            this.SetupNavigation();

            // Initialize tools...
            // ...
            this.CallstackTool = new CallstackTool(this);
            this.Tools.Add(this.CallstackTool);
            this.CodeTool = new CodeTool(this);
            this.Tools.Add(this.CodeTool);
            this.LogTool = new LogTool(this);
            this.Tools.Add(this.LogTool);
            this.MemoryTool = new MemoryTool(this);
            this.Tools.Add(this.MemoryTool);
            this.StatisticsTool = new StatisticsTool(this);
            this.Tools.Add(this.StatisticsTool);
            this.ThreadsTool = new ThreadsTool(this);
            this.Tools.Add(this.ThreadsTool);
            // ...

            this.Window.Show();

            this.CodeTool.Show(this.Window.DockPanel);
            this.LogTool.Show(this.Window.DockPanel);
            this.ThreadsTool.Show(this.Window.DockPanel);

            WeifenLuo.WinFormsUI.Docking.DockPane dp;
            dp = this.Window.DockPanel.DockPaneFactory.CreateDockPane(this.CodeTool, WeifenLuo.WinFormsUI.Docking.DockState.Document, true);
            this.StatisticsTool.Show(dp, WeifenLuo.WinFormsUI.Docking.DockAlignment.Right, 0.45);
            dp = this.Window.DockPanel.DockPaneFactory.CreateDockPane(this.LogTool, WeifenLuo.WinFormsUI.Docking.DockState.DockBottom, true);
            this.CallstackTool.Show(dp, WeifenLuo.WinFormsUI.Docking.DockAlignment.Right, 0.24);

            this.MemoryTool.Show(this.StatisticsTool.DockHandler.Pane, this.StatisticsTool);

            this.Host.Debugger.Activate(this, Environment.MachineName, Environment.UserName, "InprocDebugger 1.0");

            foreach (DebuggerTool tool in this.Tools)
            {
                tool.OnAttached();
            }
        }
Beispiel #8
0
        public void Teleport(int x, int y)
        {
            int CharacterBase = BitConverter.ToInt32(
                MemoryTool.ReadAddress(
                    InformationCollecter.Instance.ProcessHandle,
                    (IntPtr)BasePointer.CharacterBase,
                    4), 0);
            int teleport  = CharacterBase + (int)Offset.Teleport;
            int teleportX = CharacterBase + (int)Offset.TeleportX;
            int teleportY = CharacterBase + (int)Offset.TeleportY;

            WriteMemory(teleportX, BitConverter.GetBytes(x));
            WriteMemory(teleportY, BitConverter.GetBytes(y));
            WriteMemory(teleport, BitConverter.GetBytes(true));
        }
        public void UpdateGeneralInformation()
        {
            int ServerBase = (int)BasePointer.ServerBase;

            while (true)
            {
                GeneralInfo.DamageCap = BitConverter.ToDouble(
                    MemoryTool.ReadAddress(ProcessHandle,
                                           (IntPtr)Address.DamageCap,
                                           8), 0);
                GeneralInfo.WorldID = ReadInt32Pointer(ServerBase, (int)Offset.WorldID);
                GeneralInfo.Channel = ReadInt32Pointer(ServerBase, (int)Offset.ChannelID);
                UpdateInformation();
                Thread.Sleep(2000);
            }
        }
Beispiel #10
0
        public NesRom(Byte[] aDataArray)
        {
            dataSize = aDataArray.Length - 0x10;

            if (dataSize >= 0x10000)
            {
                // To Be Fixed.
                //MessageBox( NULL, TEXT( "?T?|?[?g???????????t?@?C???????B" ), TEXT( "?G???[" ), MB_OK );

                //exit( 1 );
            }

            header = new CNesHeader(aDataArray);

            dataArray = new Byte[0x10000];
            MemoryTool.memcpy(dataArray, 0x00, aDataArray, 0x10, dataSize);
        }
Beispiel #11
0
 public CVram(NesRom rom)
 {
     MemoryTool.memcpy(data, 0x00, rom.GetDataArray(), 0x8000, sizeof(Byte) * 0x2000);
 }
Beispiel #12
0
 public void Init()
 {
     MemoryTool.memset(data, 0x00, 0x00, sizeof(Byte) * 0x10000);
 }
 public double ReadDoublePointer(int address, int offset)
 {
     return(BitConverter.ToDouble(
                MemoryTool.ReadPointer(ProcessHandle, (IntPtr)address, offset, 8),
                0));
 }
 public byte ReadBytePointer(int address, int offset)
 {
     return(MemoryTool.ReadPointer(ProcessHandle, (IntPtr)address, offset, 1)[0]);
 }
 public int ReadInt32MultiPointer(int address, int[] offset)
 {
     return(BitConverter.ToInt32(
                MemoryTool.ReadMultiPointer(ProcessHandle, (IntPtr)address, offset, 4),
                0));
 }
Beispiel #16
0
 public NesMemory(MusicNsf nsf)
 {
     Logger.LogNormal(nsf.GetHeader().GetLoadAddress());
     Logger.LogNormal(nsf.GetDataSize());
     MemoryTool.memcpy(data, nsf.GetHeader().GetLoadAddress(), nsf.GetDataPoint(), 0x00, sizeof(Byte) * ( UInt16 )nsf.GetDataSize());
 }