private void InitializeDivaMemory() { // FREE PLAY // MemoryManipulator.WriteByte(0x14066E878, 1); // skip DHCP timer if (MemoryManipulator.ReadInt32(NETWORK_COUNTER_CHECK_ADDRESS) == 1) { MemoryManipulator.WriteInt32(NETWORK_COUNTER_CHECK_ADDRESS, 2); } foreach (var emulator in emulatorComponents) { emulator.InitializeDivaMemory(); } // sys_timer { const int SYS_TIMER_TIME = 39 * SYS_TIMER_TIME_FACTOR; MemoryManipulator.WriteInt32(GetSysTimerTimeAddress(), SYS_TIMER_TIME); // 0x00000001405C5143: mov qword ptr [rsi+0B38h], 3600 MemoryManipulator.WriteInt32(0x1405C514AL, SYS_TIMER_TIME); // 0x00000001405BDFBF: dec dword ptr [rbx+0B38h] MemoryManipulator.Write(0x1405BDFBFL, Assembly.GetNopInstructions(6)); // 0x00000001405C517A: mov [rsi+0B38h], ecx MemoryManipulator.Write(0x1405C517AL, Assembly.GetNopInstructions(6)); } }
public InputEmulator() { MemoryManipulator = new MemoryManipulator(); MemoryManipulator.TryAttachToProcess("diva"); emulatorComponents = new IEmulatorComponent[] { JVSEmulator = new JvsEmulator(MemoryManipulator, KeyConfig), new CoinEmulator(MemoryManipulator, KeyConfig), new FastLoader(MemoryManipulator, KeyConfig), new PlayerDataManager(MemoryManipulator, PlayerConfig), new PvModuleManager(MemoryManipulator, KeyConfig), new TouchSliderEmulator(MemoryManipulator, KeyConfig), new TouchPanelEmulator(MemoryManipulator, KeyConfig), }; CameraController = new CameraController(MemoryManipulator, KeyConfig); InitializeDivaMemory(); string title = "process not found"; if (MemoryManipulator.AttachedProcess != null) { title = $"{MemoryManipulator.AttachedProcess.ProcessName} - {MemoryManipulator.AttachedProcess.Id}"; } else { appendExit = true; } Console.Title = $"DIVA Input Emulator: {title}"; Console.CursorVisible = false; }
public void LoopUpdateEmulateInput() { CheckProcessActiveStopwatch.Start(); while (!appendExit) { UpdateEmulatorInputTick(IsDivaActive); if (CheckProcessActiveStopwatch.Elapsed >= ProcessActiveCheckInterval) { IsDivaActive = MemoryManipulator.IsAttachedProcessActive(); CheckProcessActiveStopwatch.Restart(); } Thread.Sleep(InputUpdateInterval); } }
private void InitializeDivaMemory() { foreach (var emulator in emulatorComponents) { emulator.InitializeDivaMemory(); } // sys_timer { // 0x0000000140411F0F: mov qword ptr [r12+8C8h], 3600 MemoryManipulator.WriteInt32(0x140411F17L, 39 * 60); // 0x000000014040BEAF: dec dword ptr [rbx+8C8h] MemoryManipulator.Write(0x14040BEAFL, Assembly.GetNopInstructions(6)); // 0x0000000140407976: mov [rcx+8C8h], eax MemoryManipulator.Write(0x140407976L, Assembly.GetNopInstructions(6)); } }