- --
Viewing Issue Advanced Details
[ Jump to Notes ]
ID | Category [?] | Severity [?] | Reproducibility | Date Submitted | Last Update |
---|---|---|---|---|---|
07275 | Core | Minor | Always | Apr 4, 2019, 20:11 | Apr 20, 2019, 13:49 |
Tester | Keade | View Status | Public | Platform | MAME (Official Binary) |
Assigned To | hap | Resolution | Fixed | OS | Windows 10 (64-bit) |
Status [?] | Resolved | Driver | |||
Version | 0.208 | Fixed in Version | 0.209 | Build | 64-bit |
Fixed in Git Commit | Github Pull Request # | ||||
Summary | 07275: Weird pacing issue on Windows | ||||
Description | Strange pacing issue, the games do not run at 100% always, but the speed fluctuates (+/- 3 or 4%). | ||||
Steps To Reproduce |
- download fresh 0.208 binaries (32-bit or 64-bit, I have tested both) from MAMEdev - start any game - check the speed (watch out for small hiccups onscreen, or press F11, as that's easier to check). Any driver will do. I noticed it first on Pong (due to the ball scrolling) and verified it on Last Blade 2 (using background scrolling). This does not seem to be driver dependent at all. Not dependent on video (d3d, gdi etc.) either. I tried compiling my own binaries (for tag mame0208) on Debian and could not reproduce the issue there. This behavior is specific to the 0.208 binaries (on Windows, as far as I can tell), it does not happen with 0.207 binaries. |
||||
Additional Information | Reported on #mame and got told by Tafoid he could reproduce the issue (thanks for the help !), which incited me to report it officially. | ||||
Github Commit | |||||
Flags | |||||
Regression Version | 0.208 | ||||
Affected Sets / Systems | |||||
Attached Files
|
|||||
Relationships
There are no relationship linked to this issue. |
Notes
6
No.16287
Tafoid Administrator
Apr 4, 2019, 20:22
edited on: Apr 4, 2019, 20:25 |
Updated as a CORE issue. My research seemed to indicate that this is a toolchain caused issue. 0.208 brought about both changes to 32-bit and 64-bit toolchains for building official binaries. (7.4.0 and 8.3.0, respectively). 0.208 release binaries from MAMEDEV.org show which jump +/- 3-4% very frequently (testing lastbld2, watching speed% toggling F11 whereas a 0.208 32-bit created with a 5.3.0 toolchain made by Robbbert/Wizz (made for XP folks), located here: https://messui.1emulation.com/mamexp208.7z , does not show the extreme wavering of speed% in my testing. |
---|---|
No.16289
hap Developer
Apr 4, 2019, 22:24
|
It's caused by osd_sleep from emu/video.cpp(aka the "sleep" setting in mame.ini). I did some quick testing and notice that it sometimes oversleeps by more than 10ms. I assume this is Windows-specific, plus whatever compiler update that broke std::this_thread::sleep_for. |
No.16290
hap Developer
Apr 5, 2019, 19:01
|
Simply using Sleep (in osd/osdcore.cpp) improves it a lot. Like this: void osd_sleep(osd_ticks_t duration) { #ifdef WIN32 // sleep_for appears to oversleep a lot on Windows Sleep(duration / (osd_ticks_per_second() / 1000)); #else std::this_thread::sleep_for(std::chrono::high_resolution_clock::duration(duration)); #endif } |
No.16340
Robbbert Senior Tester
Apr 19, 2019, 10:01
|
Submitted hap's solution for final testing. |
No.16341
StHiryu Tester
Apr 19, 2019, 16:37
|
This issue is only when sleep is set to on? |
No.16342
Tafoid Administrator
Apr 19, 2019, 19:29
|
It is on by default on Windows as least - AFAIK it was only reported with -sleep, -nosleep doesn't exhibit the same huge 3-4% swings in speed. |