"""Manual acceptance smoke tests for the Win32 debug agent. NOT a pytest file -- these launch the real HAVOC_NOCD.EXE under the debugger and need a live Windows session. Run from the repo root: python -m tools.havoc_debug_agent_smoke_test """ from tools.havoc_debug_agent import DebugAgent GAME = r"Z:\Development\devl\Havoc\HAVOC_NOCD.EXE" CWD = r"Z:\Development\devl\Havoc" def task2_breakpoint_smoke() -> None: """Task 2: breakpoint at busywait_frame_limiter_60hz (0x40C8E0) should trip during the boot palette-fade / state transition and report eip == 0x40C8E0.""" agent = DebugAgent() agent.launch(GAME, CWD) agent.set_breakpoint(0x40C8E0) result = agent.continue_execution(timeout=30) print("continue_execution ->", result) if result["status"] == "stopped": regs = agent.get_registers() print("registers ->", {r: hex(v) for r, v in regs.items()}) assert regs["eip"] == 0x40C8E0, f"expected eip 0x40C8E0, got {regs['eip']:#x}" print("TASK 2 SMOKE: PASS") else: print(f"TASK 2 SMOKE: did not stop at breakpoint (status={result['status']})") if __name__ == "__main__": task2_breakpoint_smoke()