Project

General

Profile

Actions

Emulator Issues #1625

closed

Frame Limit with Directx Plugin

Added by d34tH.tH3.k1D over 14 years ago.

Status:
Duplicate
Priority:
Normal
Assignee:
-
% Done:

0%

Operating system:
N/A
Issue type:
Feature request
Milestone:
Regression:
No
Relates to usability:
No
Relates to performance:
No
Easy:
No
Relates to maintainability:
No
Regression start:
Fixed in:

Description

When using the directx plugin, most of the time games run faster than
expected, and this doesn't happen with opengl (they often run slower than
expected which makes them not playable too). Also setting the Frame Limit
manually won't help at all.
I'm using the latest 64 bits builds on win7 x64, with a C2D , an
ATi HD4870 and 4GB RAM.


Related issues 4 (0 open4 closed)

Is duplicate of Emulator - Emulator Issues #2034: Dual Core causes desync between CPU-GPU (disable dual core, everything is fine)Duplicate

Actions
Has duplicate Emulator - Emulator Issues #1887: DSP throttling does not work in non-AX games since r4724Duplicate

Actions
Has duplicate Emulator - Emulator Issues #1895: Games that use Zelda Ucode doesn't have a Limit FramesDuplicate

Actions
Blocks Emulator - Emulator Issues #2043: Release bug trackerFixednakeee

Actions
Actions #1

Updated by ChaosCode over 14 years ago

  • Status changed from New to Accepted
  • Issue type set to Feature request
Actions #2

Updated by ayuanx over 14 years ago

I happened to have peeked the refresh rate code, it is somehow weird. e.g.

It looks like almost the same code but if you pay attention to that "videoupd".

if (targetfps > 5)
{
	double wait_frametime = (1000.0 / targetfps);

	if (Timer.GetTimeDifference() >= wait_frametime * frames)
		no_framelimit = (u32)Timer.GetTimeDifference();

	while (Timer.GetTimeDifference() < wait_frametime * frames)
	{
		if (no_framelimit == 0)
			Common::SleepCurrentThread(1);
	}
}
else if (targetfps < 5)
{
	double wait_frametime = (1000.0 / VideoInterface::TargetRefreshRate);

	if (Timer.GetTimeDifference() >= wait_frametime * frames)
		no_framelimit = (u32)Timer.GetTimeDifference();

	while (Timer.GetTimeDifference() < wait_frametime * videoupd)
	{
		// TODO : This is wrong, the sleep shouldn't be there but rather in cputhread
		// as it's not based on the fps but on the refresh rate...
		if (no_framelimit == 0)
			Common::SleepCurrentThread(1);
	}
}
Actions #3

Updated by ayuanx over 14 years ago

Issue 1887 has been merged into this issue.

Actions #4

Updated by ayuanx over 14 years ago

Temporary solution: Set Frame Skip to correct value (NTSC: 30/60, PAL: 25/50)
manually for each game.

Actions #5

Updated by d34tH.tH3.k1D over 14 years ago

Yeah, that's what I've been doing for a while now and it works well.

Actions #6

Updated by ayuanx over 14 years ago

Issue 1895 has been merged into this issue.

Actions #7

Updated by darksonic_ds over 14 years ago

In the Issue 1895 : I'm saying that "Enable Other Audio" in DSP config doesn't
work!!I'm not talking about the "Limit Frame Option" that have "Config". The issue
1625 is about "Limit Frame" Option with D3D...but isn't about "Enable Other Audio"
problem!

Actions #8

Updated by ayuanx over 14 years ago

Because you are wrong :)
Audio throttle is always working (at least in lateset rev), which isn't working is
Frame Limit.

Actions #9

Updated by darksonic_ds over 14 years ago

I'm saying that "Audio Throttle" doesn't work with some games that use Zelda Ucode
(example : Zelda Four Sword Adventures, when you select "Audio Throtle" the game
have more fps that the normal, that happen with "Ogl", not only with "D3D". Other
game : Super Mario Galaxy, Zelda Wind Waker, Zelda Tp, Link's Crossbow Training).
Ps : Sorry by my bad english :P

Actions #10

Updated by coisbot over 14 years ago

ayuanx, your r4724 commit broke audio throttling in non-AX games. Confirmed by sl1nk3.s

Actions #11

Updated by darksonic_ds over 14 years ago

Coisbot : That's right, that was what I tried to say :P

Actions #12

Updated by PianoGamer over 14 years ago

Not sure if this should be a new issue, anyway I'm gonna report that frame limiter
(including the throttle by "enable other audio") is terribly flawed. (As of r4812).
When I run NSMBWii in Dx9, i get over 100FPS with no frame limit. But if I set on
frame limit, the game will always run in 5-10 less FPS than what I set it too. So if
I want it to run in 60 FPS, I need to set it to 65 or 70. Same with auto frame skip
or "enable other audio", they make the game run in 45-50 FPS, which is too little.

Actions #13

Updated by ayuanx over 14 years ago

  • Status changed from Accepted to Duplicate
Actions

Also available in: Atom PDF