dirkwhoffmann / virtualc64

VirtualC64 is a cycle-accurate C64 emulator for macOS
https://dirkwhoffmann.github.io/virtualc64
Other
351 stars 33 forks source link

Add drive idle mode for speedup #685

Closed dirkwhoffmann closed 3 years ago

dirkwhoffmann commented 3 years ago

VICE and Denise have the ability to emulate a VC1541 on demand (i.e., emulation pauses when the drive is not needed).

Todo: Add a similar feature to VirtualC64 to speed up emulation.

dirkwhoffmann commented 3 years ago

The next version will offer three specific power-saving settings (in a new "compatibility" panel):

Bildschirmfoto 2021-06-10 um 15 58 32

The first option freezes emulation of the floppy drives if the IEC bus is idle for a while. The second option is similar to what is called "agressive warp mode" in Denise. The third point ensures that no sound samples are generated in warp mode (SID registers are still updated though).

Results are mixed. Compared to the current version (v4.2), the loading time of GianaSisters on my machine is reduced by about 20%. It's not bad, but not overwhelming either.

The gain is more impressive when warp mode is enabled after Giana Sisters has finished loading. In warp mode, v4.2 runs at approx. 10 MHz:

Bildschirmfoto 2021-06-10 um 15 57 03

With all three power-saving options enabled, the new build is more than twice as fast:

Bildschirmfoto 2021-06-10 um 15 55 36