15 Commits

Author SHA1 Message Date
Mihai Parparita
f65f9b9845 Add a deterministic execution mode
Adds support for a --deterministic command-line option that makes
repeated runs the same:
- Keyboard and mouse input is ignored
- The sound server does a periodic pull from the DMA channel (so that
  it gets drained), but only does so via a periodic timer (instead of
  being driven by a cubeb callback, which could arrive at different
  times)
- Disk image writes are disabled (reads of a modified area still
  work via an in-memory copy)
- NVRAM writes are disabled
- The current time that ViaCuda initializes the guest OS is always the
  same.

This makes execution exactly the same each time, which should
make debugging of more subtle issues easier.

To validate that the deterministic mode is working, I've added a
periodic log of the current "time" (measured in cycle count), PC
and opcode. When comparing two runs with --log-no-uptime, the generated
log files are identical.
2024-11-09 22:48:06 -08:00
joevt
c6060ad812 timermanager: Use decimal ints, not floats or hex. 2024-08-31 18:09:15 -07:00
dingusdev
284f58dec4 Continued build fixing 2024-03-16 19:24:40 -07:00
joevt
703662cb5b timermanager: Add some thread safety. 2024-03-16 11:46:30 -07:00
joevt
833f74dce6 timemanager: Remove unnecessary parameter. 2024-03-16 11:36:41 -07:00
joevt
014aa90462 timemanager: Remove timer minimum timeout. 2024-03-16 11:36:25 -07:00
Maxim Poliakovski
f814822ca3 timermanager: support for timers that expire immediately. 2023-11-15 19:01:54 +01:00
Maxim Poliakovski
ddf139a659 Extend TimerManager API a bit. 2023-08-01 17:36:29 +02:00
Maxim Poliakovski
f1c898b17e Initial host event manager. 2023-04-02 03:01:13 +02:00
Maxim Poliakovski
98ccef732f TimerManager: more microseconds related constants. 2022-11-17 18:03:18 +01:00
Maxim Poliakovski
b47de8b042 Implement MPC601 style RTC. 2022-05-21 14:51:27 +02:00
Maxim Poliakovski
8f528184b8 Fix compilation with gcc, part 1. 2022-02-16 23:52:43 +01:00
Maxim Poliakovski
0d3fd01fef Improve emulation of the VIA timers. 2022-02-13 03:02:17 +01:00
Maxim Poliakovski
25a4fd1107 Allow adding timers from timer callbacks. 2022-02-05 17:10:57 +01:00
Maxim Poliakovski
339db4a078 Add timers management. 2022-01-10 17:56:24 +01:00