@@ -181,6 +181,32 @@ void EventHandler()
181181
182182
183183
184+
185+
186+ void EventCutsceneStart ()
187+ {
188+ LogFunction ();
189+
190+ Actor::EventCutsceneStart ();
191+ }
192+
193+ void EventCutsceneEnd ()
194+ {
195+ LogFunction ();
196+
197+ Actor::EventCutsceneEnd ();
198+ }
199+
200+
201+
202+
203+
204+
205+
206+
207+
208+
209+
184210namespaceStart (Event);
185211
186212export void Toggle (bool enable)
@@ -374,6 +400,92 @@ export void Toggle(bool enable)
374400 }
375401 }
376402
403+ // EventCutsceneStart
404+ {
405+ auto addr = (appBaseAddr + 0x4C828B );
406+ auto jumpAddr = (appBaseAddr + 0x4C8292 );
407+ constexpr size_t size = 7 ;
408+ /*
409+ dmc4.exe+4C828B - 66 89 9E 1D1A0000 - mov [esi+00001A1D],bx
410+ dmc4.exe+4C8292 - 8B C6 - mov eax,esi
411+ */
412+
413+ static Function func = {};
414+
415+ if (!run)
416+ {
417+ backupHelper.Save (addr, size);
418+ func = CreateFunction (EventCutsceneStart, jumpAddr, (FunctionFlags_SaveRegisters | FunctionFlags_NoResult), size);
419+ CopyMemory (func.sect0 , addr, size, MemoryFlags_VirtualProtectSource);
420+ }
421+
422+ if (enable)
423+ {
424+ WriteJump (addr, func.addr , (size - 5 ));
425+ }
426+ else
427+ {
428+ backupHelper.Restore (addr);
429+ }
430+ }
431+
432+ {
433+ auto addr = (appBaseAddr + 0x153A6A );
434+ auto jumpAddr = (appBaseAddr + 0x153A73 );
435+ constexpr size_t size = 9 ;
436+ /*
437+ dmc4.exe+153A6A - 66 C7 80 1D1A0000 0000 - mov word ptr [eax+00001A1D],0000
438+ dmc4.exe+153A73 - 83 43 04 02 - add dword ptr [ebx+04],02
439+ */
440+
441+ static Function func = {};
442+
443+ if (!run)
444+ {
445+ backupHelper.Save (addr, size);
446+ func = CreateFunction (EventCutsceneStart, jumpAddr, (FunctionFlags_SaveRegisters | FunctionFlags_NoResult), size);
447+ CopyMemory (func.sect0 , addr, size, MemoryFlags_VirtualProtectSource);
448+ }
449+
450+ if (enable)
451+ {
452+ WriteJump (addr, func.addr , (size - 5 ));
453+ }
454+ else
455+ {
456+ backupHelper.Restore (addr);
457+ }
458+ }
459+
460+ // EventCutsceneEnd
461+ {
462+ auto addr = (appBaseAddr + 0x153A98 );
463+ auto jumpAddr = (appBaseAddr + 0x153A9F );
464+ constexpr size_t size = 7 ;
465+ /*
466+ dmc4.exe+153A98 - C6 80 1D1A0000 01 - mov byte ptr [eax+00001A1D],01
467+ dmc4.exe+153A9F - 83 43 04 02 - add dword ptr [ebx+04],02
468+ */
469+
470+ static Function func = {};
471+
472+ if (!run)
473+ {
474+ backupHelper.Save (addr, size);
475+ func = CreateFunction (EventCutsceneEnd, jumpAddr, (FunctionFlags_SaveRegisters | FunctionFlags_NoResult), size);
476+ CopyMemory (func.sect0 , addr, size, MemoryFlags_VirtualProtectSource);
477+ }
478+
479+ if (enable)
480+ {
481+ WriteJump (addr, func.addr , (size - 5 ));
482+ }
483+ else
484+ {
485+ backupHelper.Restore (addr);
486+ }
487+ }
488+
377489
378490
379491 run = true ;
0 commit comments