Right now, as I see it, there is two levels of "emulation speed" supported by 1964:
- N64 speed: This mean that the emulator try to regulate its speed to run at 100% of the speed of a real N64. If the PC is fast enough, the FPS is "stable" at about 50 or 60 fps.
- PC speed: This mean that the emulator doesn't regulate at all the speed and let the emulator run as fast as the PC can support.
What would be nice to be able to modify the emulator to run at a variable percentage of a real N64 (i.e. 50%, 60%, ..., 200%). By exemple, playing SM64 at a "stable" 150% speed might be fun, even if the sound might be screwed a little bit at that speed (instead of an unstable 400% like my PC speed give me right now
).
From what I understand, this is more or less what is done to regulate the speed of the emulator:
for each frame:
A) timestampBeforeFrame = QueryPerformanceCounter();
B) Run emulator until it get a VI interrupt;
C) wantedFps = vips_speed_limits[...]; // Ex. 50.0fps
D) nbMillisecondsBetweenFrame = 1000 / wantedFps; // Ex. 1000 / 50 = 20ms
E) Wait until (PC clock >= timestampBeforeFrame + nbMillisecondsBetweenFrame)
Only the step D) would need to be modified to something like this:
D) nbMillisecondsBetweenFrame = 1000 / (wantedFps * percentageWanted); // Ex. 1000 / (50 * 150%) = 13,33ms
I don't think it would be too hard to do, the time to create the user interface (menu, dialog box, shortcut +/- 10%) for the feature would probably take most of the time.
Anyway, that not an essential feature but, if you got time to implement this, it could be fun ...
Warcon
- N64 speed: This mean that the emulator try to regulate its speed to run at 100% of the speed of a real N64. If the PC is fast enough, the FPS is "stable" at about 50 or 60 fps.
- PC speed: This mean that the emulator doesn't regulate at all the speed and let the emulator run as fast as the PC can support.
What would be nice to be able to modify the emulator to run at a variable percentage of a real N64 (i.e. 50%, 60%, ..., 200%). By exemple, playing SM64 at a "stable" 150% speed might be fun, even if the sound might be screwed a little bit at that speed (instead of an unstable 400% like my PC speed give me right now
From what I understand, this is more or less what is done to regulate the speed of the emulator:
for each frame:
A) timestampBeforeFrame = QueryPerformanceCounter();
B) Run emulator until it get a VI interrupt;
C) wantedFps = vips_speed_limits[...]; // Ex. 50.0fps
D) nbMillisecondsBetweenFrame = 1000 / wantedFps; // Ex. 1000 / 50 = 20ms
E) Wait until (PC clock >= timestampBeforeFrame + nbMillisecondsBetweenFrame)
Only the step D) would need to be modified to something like this:
D) nbMillisecondsBetweenFrame = 1000 / (wantedFps * percentageWanted); // Ex. 1000 / (50 * 150%) = 13,33ms
I don't think it would be too hard to do, the time to create the user interface (menu, dialog box, shortcut +/- 10%) for the feature would probably take most of the time.
Anyway, that not an essential feature but, if you got time to implement this, it could be fun ...
Warcon