- View New Content
-
Getting Started
-
Tutorials
Tutorial Categories
Tutorials Main Page Installation and Setup Downloadable TutorialsROM Adjustments
Number of Balls Adjustments Volume Adjustments
-
Visual Pinball Tables
VP 8 Desktop Tables
All VPM Recreations VP Recreations VP/VPM MODs VP Originals ROMsVP 9 Desktop Tables
All VPM Recreations VP Recreations VP/VPM MODs VP Originals ROMsVP9 Cabinet Tables
All Full Screen Cabinet Full Screen B2S Cabinet Spanned Cabinet Tables Media Packs ROMsVPX Tables
All VPinMAME Recreations VPX- - /VPinMAME - MOD Tables VPX Recreations VPX Originals Media Packs ROMs VR
-
Frontend Media & Backglass
Media Packs
Complete Media Packs Wheel Logos VideosBackglasses
dB2S Animated Backglasses UVP Animated Backglasses Topper Images
- Future Pinball Tables
-
Design Resources
Main Resources
Table Templates Playfield Images Image Library Sound Library Key CodesVP Guides
VP8 Guide - English VP8 Guide - Deutsch VP9 Guide - English VP9.1.x Guide - English VP Object Guide VPM DocumentationFuture Pinball Resources
Playfield Images 3D Model LibraryFuture Pinball Guides
FP Script Guide Big Draco Script Guide FP Table Design Guide FP DMD Guide
- Other Features
- Bug Tracker
- Image Gallery
- Blogs
- More
SyncLevel
Started By
David_OSU
, Apr 10 2009 10:02 PM
13 replies to this topic
#1
Posted 10 April 2009 - 10:02 PM
I've been trying to find some documentation on the VPM Synclevel setting. The only help I've found is the following, from the release notes for the 1.21 release of VPM:
Version 1.21 (March 31, 2003)
-------------------------------------
The most prominent feature this time should be Tom's "SyncLevel",
which is a most delicate and interesting way of synchronizing two separate
Windows applications from one thread only!
In other words: Visual PinMAME decides how fast any other application
running in the same graphical environment will update its view...
need I say more?
- Added "SyncLevel" feature:
'Controller.Games(Controller.GameName).Settings.Value("synclevel")'
This will help to keep the Emulation in sync with any other thread
running at the same time (like your favorite Pinball simulation software)
This should boost game performance even on lower-end PCs...
OK, so what do you set it to? Is it 0 or 1, or a number? I've seen a lot of table scripts set this to 60. Is this supposed to be the refresh rate of your monitor? Tables set to 60 seem to stutter on my computer, but when I change it to 75 (the refresh rate of my monitor), it seems to run smoother.
Is there any documentation for the SyncLevel setting?
Version 1.21 (March 31, 2003)
-------------------------------------
The most prominent feature this time should be Tom's "SyncLevel",
which is a most delicate and interesting way of synchronizing two separate
Windows applications from one thread only!
In other words: Visual PinMAME decides how fast any other application
running in the same graphical environment will update its view...
need I say more?
- Added "SyncLevel" feature:
'Controller.Games(Controller.GameName).Settings.Value("synclevel")'
This will help to keep the Emulation in sync with any other thread
running at the same time (like your favorite Pinball simulation software)
This should boost game performance even on lower-end PCs...
OK, so what do you set it to? Is it 0 or 1, or a number? I've seen a lot of table scripts set this to 60. Is this supposed to be the refresh rate of your monitor? Tables set to 60 seem to stutter on my computer, but when I change it to 75 (the refresh rate of my monitor), it seems to run smoother.
Is there any documentation for the SyncLevel setting?
#3
Posted 11 April 2009 - 03:43 PM
SyncLevel 0 disables the feature which allows you to use VP's internal YieldTime script command. If SyncLevel is set to a value other than 0, YieldTime is ignored if it is present, and SyncLevel would be the number of timeslices per second VPM is given control of your CPU. A value of 60 would be 60 times/second. If your pc is already 2-3Ghz, yieldtime and/or SyncLevel won't be very noticeable.
Build a fire, vipers love the heat.
#4
Posted 11 April 2009 - 04:09 PM
QUOTE (destruk @ Apr 11 2009, 09:43 AM) <{POST_SNAPBACK}>
SyncLevel 0 disables the feature which allows you to use VP's internal YieldTime script command. If SyncLevel is set to a value other than 0, YieldTime is ignored if it is present, and SyncLevel would be the number of timeslices per second VPM is given control of your CPU. A value of 60 would be 60 times/second. If your pc is already 2-3Ghz, yieldtime and/or SyncLevel won't be very noticeable.
I'm a bit confused... So , how does this relate to the monitor's refresh rate? (for the average player that doesn't understand the Yieldtime function)
Are my statements above correct? If not, I'll change or delete it.
Is there any one most efficient default setting?
#5
Posted 12 April 2009 - 04:02 PM
QUOTE (Steely @ Apr 11 2009, 10:09 AM) <{POST_SNAPBACK}>
I'm a bit confused...
So , how does this relate to the monitor's refresh rate? (for the average player that doesn't understand the Yieldtime function)
Are my statements above correct? If not, I'll change or delete it.
Is there any one most efficient default setting?
So , how does this relate to the monitor's refresh rate? (for the average player that doesn't understand the Yieldtime function)
Are my statements above correct? If not, I'll change or delete it.
Is there any one most efficient default setting?
SyncLevel doesn't have anything to do with your monitor's refresh rate. You are aiming for a full 60/60 fps for pinmame to match the real machines. You can see the fps rate by clicking the VPM display window and press F11. If your pc is >2Ghz in speed, you won't see much of any noticeable improvement from SyncLevel, and YieldTime will most likely make games run worse on your system. There is no magical setting that works for all machines, which is why you can set it to any number from 0 (Off) to 120 and it can be specified on a romset by romset basis, or you can run the setup program and set the default for any new game you play. YieldTime works a bit differently and you should only need 0, 1, or 2 for YieldTime if you're choosing to use that. They are mutually exclusive of each other.
Build a fire, vipers love the heat.
#6
Posted 12 April 2009 - 06:43 PM
On my fast desktop-machine (iC2d 6850 + Nvidia 8800 gtx) i use 0.
On my not as fast laptop (HP Pavilion 2,0 Mhz with Ati 34xx graphics) i use 3 or 4 with disabled ball shadows,
otherwise the keyboard input and the sound is lagging.
Tables with a more top down view dont need so much power as eg Jpsalas Flintstones,
cause as bigger the balls appear in the view as more power your pc needs.
(you can try it with F11)
On my not as fast laptop (HP Pavilion 2,0 Mhz with Ati 34xx graphics) i use 3 or 4 with disabled ball shadows,
otherwise the keyboard input and the sound is lagging.
Tables with a more top down view dont need so much power as eg Jpsalas Flintstones,
cause as bigger the balls appear in the view as more power your pc needs.
(you can try it with F11)
Edited by Hansaplast, 12 April 2009 - 06:49 PM.
#7
Posted 13 April 2009 - 10:45 PM
QUOTE (destruk @ Apr 12 2009, 12:02 PM) <{POST_SNAPBACK}>
SyncLevel doesn't have anything to do with your monitor's refresh rate. You are aiming for a full 60/60 fps for pinmame to match the real machines. ...
There is no magical setting that works for all machines, which is why you can set it to any number from 0 (Off) to 120 and it can be specified on a romset by romset basis, or you can run the setup program and set the default for any new game you play.
There is no magical setting that works for all machines, which is why you can set it to any number from 0 (Off) to 120 and it can be specified on a romset by romset basis, or you can run the setup program and set the default for any new game you play.
That's weird, because a lot of tables will stutter (especially the ROM sounds) when I have SyncLevel = 60, but will play fine when I have SyncLevel =75 (my monitor refresh rate). Setting SyncLevel = 0 works on some tables, but most will work OK with SyncLevel = 75 (on my machine).
However, for very timing sensitive games, like Monopoly Redemption (not a pinball machine), I have to set SyncLevel = 75 for the video to synchronize to the input. With SyncLevel = 0 or SyncLevel = 60, it is way out of phase (up to 180° for the rotating flashing lights) with the video. I discovered this problem when I first tried Monopoly Redemption, which is VERY timing sensitive (the whole game is timing). But on another machine (a laptop), Monopoly works best with SyncLevel = 60, and this machine uses a 60 Hz refresh rate. That's why I assumed a good setting for SyncLevel was your refresh rate.
If SyncLevel has nothing to do with refresh rate, then what do you think is going on here? Are all pinball machine processors designed to refresh the game state & display at 60 Hz? I'm still confused.
#8
Posted 13 April 2009 - 11:00 PM
QUOTE (David_OSU @ Apr 13 2009, 04:45 PM) <{POST_SNAPBACK}>
That's weird, because a lot of tables will stutter (especially the ROM sounds) when I have SyncLevel = 60, but will play fine when I have SyncLevel =75 (my monitor refresh rate). Setting SyncLevel = 0 works on some tables, but most will work OK with SyncLevel = 75 (on my machine).
However, for very timing sensitive games, like Monopoly Redemption (not a pinball machine), I have to set SyncLevel = 75 for the video to synchronize to the input. With SyncLevel = 0 or SyncLevel = 60, it is way out of phase (up to 180° for the rotating flashing lights) with the video. I discovered this problem when I first tried Monopoly Redemption, which is VERY timing sensitive (the whole game is timing). But on another machine (a laptop), Monopoly works best with SyncLevel = 60, and this machine uses a 60 Hz refresh rate. That's why I assumed a good setting for SyncLevel was your refresh rate.
If SyncLevel has nothing to do with refresh rate, then what do you think is going on here? Are all pinball machine processors designed to refresh the game state & display at 60 Hz? I'm still confused.
However, for very timing sensitive games, like Monopoly Redemption (not a pinball machine), I have to set SyncLevel = 75 for the video to synchronize to the input. With SyncLevel = 0 or SyncLevel = 60, it is way out of phase (up to 180° for the rotating flashing lights) with the video. I discovered this problem when I first tried Monopoly Redemption, which is VERY timing sensitive (the whole game is timing). But on another machine (a laptop), Monopoly works best with SyncLevel = 60, and this machine uses a 60 Hz refresh rate. That's why I assumed a good setting for SyncLevel was your refresh rate.
If SyncLevel has nothing to do with refresh rate, then what do you think is going on here? Are all pinball machine processors designed to refresh the game state & display at 60 Hz? I'm still confused.
Your results will vary. The only romsets I'd consider changing synclevel for are the later Stern games with emulated sound. Everything else I run here has synclevel at 0 and thread priority at normal and yieldtime turned off too and they run just fine for me. For VPM, if you press F11 on the vpm display window, all screen updates are at 60hz, and the playfield lamps for all vpm emulated romsets are updated 60 times/second too. Most likely it stutters on some settings for you because it's trying to crunch more updates into a 60hz cycle period, so try using multiples of 60. This will generate an even number of updates - ie 2 cycles of vpm for 1 cycle of VP, 3 cycles of vpm for 1 cycle of VP, etc etc. It sounds like your pc needs some upgrades if you can't run monopoly redemption at 60fps in sync.
Build a fire, vipers love the heat.
#9
Posted 13 April 2009 - 11:34 PM
QUOTE (destruk @ Apr 13 2009, 07:00 PM) <{POST_SNAPBACK}>
Everything else I run here has synclevel at 0 and thread priority at normal and yieldtime turned off too and they run just fine for me.
Thanks for the info, Destruk! I think I used to have synclevel set to zero by default -- I'll try going back to that and see if Monopoly is in sync or not. How do you turn off yieldtime?
QUOTE (destruk @ Apr 13 2009, 07:00 PM) <{POST_SNAPBACK}>
It sounds like your pc needs some upgrades if you can't run monopoly redemption at 60fps in sync.
Yeah, my machine is getting old. It has a 1.5 GHz Athlon and a Radeon 9700 (AGP). But its still running Windows 98SE, so it feels quite zippy compared to my dual core laptop (T7400 @ 2.16 GHz) running XP. Seems like XP wants about 10x more hardware resources (CPU/memory) to do the same thing in the same amount of time as good old Windows 98 (which isn't really an OS, just a GUI running on DOS).
#10
Posted 13 April 2009 - 11:38 PM
Open the script editor for the table, search for the keyword "YieldTime" - if it's there, you can comment out the line or delete it. For your system you probably need it. If synclevel is anything other than 0, then the yieldtime commands are ignored if present.
Build a fire, vipers love the heat.
#11
Posted 13 April 2009 - 11:43 PM
QUOTE (destruk @ Apr 13 2009, 07:38 PM) <{POST_SNAPBACK}>
Open the script editor for the table, search for the keyword "YieldTime" - if it's there, you can comment out the line or delete it. For your system you probably need it. If synclevel is anything other than 0, then the yieldtime commands are ignored if present.
Destruk, this is starting to make sense now. Is there a recommended strategy implied here?
Such as, try synclevel = 0 first. If you have problems, then look for Yieldtime in the script. If its not present, then try synclevel = 60. What next, try synclevel = 30 or 120?
Just looking for a good general strategy.
#13
Posted 14 April 2009 - 12:12 PM
QUOTE (destruk @ Apr 13 2009, 10:59 PM) <{POST_SNAPBACK}>
I think Pinball Ken, Ripleyyy, or Phoenixx would have cornered the market on helpful posts on how to get vpm to run better.
They may have, in the old VPForums.com site. There was so much good tech info buried in those forums, too bad it has all been lost.
As it is, I'm trying to come back up to speed on VP after years of being away, so I'm coming at it from the perspective of a new user. As such, I thought I could pull together the missing tech info that a new user might need (a sort of beginners FAQ), but I don't have the old VPForums.com posts to lean on. So I need the help of the experts on this site.
Thanks for all the info.
#14
Posted 19 April 2009 - 01:28 AM
UPDATE:
I tried setting SyncLevel back to zero, and most of the games run fine with that, including Monopoly Redemption. Setting SyncLevel to 60 seems to cause problems on my system.
This all started after I downloaded one of Scapino's tables (Xenon, I think) that was setting SyncLevel=60 in the script. It ran like crap like that, so I thought I tried zero, and then 75. Maybe I never had it running right at zero. Since then, I've commented out the SyncLevel script line so I can change it using F1 in VPM.
I don't think I need YieldTime either, because VPM seems to be running plenty fast. However, a few of the newer tables are struggling on my system (like Scapino's Cirqus Voltaire, or Apollo 13 with 13 balls), but it seems to be a problem with VP not running fast enough. I guess the only fix for that is more GHz, because VP8 doesn't take full advantage of GPU acceleration (and VP9 doesn't work right with my ATI card).
I tried setting SyncLevel back to zero, and most of the games run fine with that, including Monopoly Redemption. Setting SyncLevel to 60 seems to cause problems on my system.
This all started after I downloaded one of Scapino's tables (Xenon, I think) that was setting SyncLevel=60 in the script. It ran like crap like that, so I thought I tried zero, and then 75. Maybe I never had it running right at zero. Since then, I've commented out the SyncLevel script line so I can change it using F1 in VPM.
I don't think I need YieldTime either, because VPM seems to be running plenty fast. However, a few of the newer tables are struggling on my system (like Scapino's Cirqus Voltaire, or Apollo 13 with 13 balls), but it seems to be a problem with VP not running fast enough. I guess the only fix for that is more GHz, because VP8 doesn't take full advantage of GPU acceleration (and VP9 doesn't work right with my ATI card).