Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Accurate loading times for Wii games #1739

Merged
merged 3 commits into from Jan 2, 2015

Conversation

4 participants
@JosJuice
Copy link
Contributor

commented Dec 20, 2014

This is a continuation of PR 1634. WII_IPC_HLE_Device_DI now uses all the timing accuracy improvements that DVDInterface has gotten throughout this year. Also, the fast disc speed option now works for Wii games. The second and third commits might cause problems in games that rely on specific IPC timings, so testing is needed.

JosJuice added some commits Dec 20, 2014

WII_IPC_HLE: Fix timing weirdness
The reply delay of a command shouldn't be ignored just because the
previous command isn't done yet. DI is way too fast without this change.

@JosJuice JosJuice force-pushed the JosJuice:wii-di-timing branch from 73e9d91 to 34a37cc Dec 20, 2014

// Ensure replies happen in order
const s64 ticks_until_last_reply = last_reply_time - CoreTiming::GetTicks();
if (ticks_until_last_reply > 0)
result.reply_delay_ticks += ticks_until_last_reply;

This comment has been minimized.

Copy link
@magumagu

magumagu Dec 20, 2014

Contributor

Is "+=" right here, as opposed to std::max? I actually don't know the answer here.

This comment has been minimized.

Copy link
@JosJuice

JosJuice Dec 21, 2014

Author Contributor

I'm not really sure either. The original code gave me the feeling that IOS doesn't start executing a command until the previous one is done. If that's the case, += seems to be the right thing to do. If that's not the case, why are we trying to make replies happen in order anyway? It seems unlikely that IOS would execute multiple commands at once and then add arbitrary delays just to get output in a specific order...

bool send_reply;
u64 reply_delay_ticks;
};

This comment has been minimized.

Copy link
@magumagu

magumagu Dec 20, 2014

Contributor

This is much better; thanks.

@JosJuice

This comment has been minimized.

Copy link
Contributor Author

commented Dec 21, 2014

SSBB (arbitrarily picked game) confirmed working by me and NSMBWii (mentioned in the removed old comments) confirmed working by JMC. The DKCR problems mentioned in the old comments are probably caused by the old AX HLE. Are there any games that are known to have problems with DI timing, other than the ones mentioned in the comments? If not, I don't think there are many specific games we can test.

@magumagu

This comment has been minimized.

Copy link
Contributor

commented Dec 21, 2014

Someone should double-check that this doesn't cause any regressions with four Wiimotes connected... other than that, I don't have any suggestions for testing.

@JosJuice

This comment has been minimized.

Copy link
Contributor Author

commented Dec 21, 2014

Do they have to be real Wiimotes, or are emulated ones fine?

@magumagu

This comment has been minimized.

Copy link
Contributor

commented Dec 21, 2014

Preferably at least one real Wiimote.

@JMC47

This comment has been minimized.

Copy link
Contributor

commented Dec 21, 2014

Used 3 real wiimotes via DolphinBar and one emulated wiimote to attempt to play through stage 1-1 of NSMBWii. I failed, but the PR didn't have any ill-effects that I could tell.

skidau added a commit that referenced this pull request Jan 2, 2015

Merge pull request #1739 from JosJuice/wii-di-timing
Accurate loading times for Wii games

@skidau skidau merged commit 598dc03 into dolphin-emu:master Jan 2, 2015

10 checks passed

default Very basic checks passed, handed off to Buildbot.
Details
lint Build succeeded on the Buildbot.
Details
pr-android Build succeeded on the Buildbot.
Details
pr-deb-dbg-x64 Build succeeded on the Buildbot.
Details
pr-deb-x64 Build succeeded on the Buildbot.
Details
pr-osx-x64 Build succeeded on the Buildbot.
Details
pr-ubu-nogui-x64 Build succeeded on the Buildbot.
Details
pr-ubu-x64 Build succeeded on the Buildbot.
Details
pr-win-dbg-x64 Build succeeded on the Buildbot.
Details
pr-win-x64 Build succeeded on the Buildbot.
Details

@JosJuice JosJuice deleted the JosJuice:wii-di-timing branch Jan 3, 2015

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.