Jump to content



Photo

SyncLevel


  • Please log in to reply
13 replies to this topic

#1 David_OSU

David_OSU

    Hobbyist

  • Members
  • PipPip
  • 25 posts
  • Location:Columbus, Ohio

  • Flag: United States of America

  • Favorite Pinball: South Park

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) wink.gif
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?


#2 Steely

Steely

    Enthusiast

  • Members
  • PipPipPip
  • 121 posts
  • Favorite Pinball: one that works

Posted 11 April 2009 - 02:03 AM

Edited out false information...

Thank you Destruk for the explanation. - see below -

Edited by Steely, 12 April 2009 - 04:13 PM.


#3 destruk

destruk

    VPF Veteran

  • VPF Staff
  • 6,307 posts
  • Location:Colorado Springs, CO

  • Flag: United States of America

  • Favorite Pinball: Ultrapin!



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 Steely

Steely

    Enthusiast

  • Members
  • PipPipPip
  • 121 posts
  • Favorite Pinball: one that works

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 destruk

destruk

    VPF Veteran

  • VPF Staff
  • 6,307 posts
  • Location:Colorado Springs, CO

  • Flag: United States of America

  • Favorite Pinball: Ultrapin!



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?


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 Hansaplast

Hansaplast

    Enthusiast

  • Members
  • PipPipPip
  • 93 posts
  • Location:Germany
  • Favorite Pinball: Monster Bash

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)

Edited by Hansaplast, 12 April 2009 - 06:49 PM.


#7 David_OSU

David_OSU

    Hobbyist

  • Members
  • PipPip
  • 25 posts
  • Location:Columbus, Ohio

  • Flag: United States of America

  • Favorite Pinball: South Park

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.

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 destruk

destruk

    VPF Veteran

  • VPF Staff
  • 6,307 posts
  • Location:Colorado Springs, CO

  • Flag: United States of America

  • Favorite Pinball: Ultrapin!



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.


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 David_OSU

David_OSU

    Hobbyist

  • Members
  • PipPip
  • 25 posts
  • Location:Columbus, Ohio

  • Flag: United States of America

  • Favorite Pinball: South Park

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 destruk

destruk

    VPF Veteran

  • VPF Staff
  • 6,307 posts
  • Location:Colorado Springs, CO

  • Flag: United States of America

  • Favorite Pinball: Ultrapin!



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 David_OSU

David_OSU

    Hobbyist

  • Members
  • PipPip
  • 25 posts
  • Location:Columbus, Ohio

  • Flag: United States of America

  • Favorite Pinball: South Park

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.

#12 destruk

destruk

    VPF Veteran

  • VPF Staff
  • 6,307 posts
  • Location:Colorado Springs, CO

  • Flag: United States of America

  • Favorite Pinball: Ultrapin!



Posted 14 April 2009 - 02:59 AM

I think Pinball Ken, Ripleyyy, or Phoenixx would have cornered the market on helpful posts on how to get vpm to run better.

Build a fire, vipers love the heat.


#13 David_OSU

David_OSU

    Hobbyist

  • Members
  • PipPip
  • 25 posts
  • Location:Columbus, Ohio

  • Flag: United States of America

  • Favorite Pinball: South Park

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 David_OSU

David_OSU

    Hobbyist

  • Members
  • PipPip
  • 25 posts
  • Location:Columbus, Ohio

  • Flag: United States of America

  • Favorite Pinball: South Park

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).