Jump to content



Photo
- - - - -

Possible solution to for games that lock up on start


  • Please log in to reply
11 replies to this topic

#1 mitchelwb

mitchelwb

    Enthusiast

  • Members
  • PipPipPip
  • 88 posts

  • Flag: United States of America

  • Favorite Pinball: Sing Along

Posted 23 June 2013 - 11:11 PM

**Note: this is actually a follow up to one of my earlier posts, but I thought it deserved it's own subject line. To see the earlier post, find it here: http://www.vpforums....?showtopic=8021

 

I am on XP with a GTX 650 powering the playfield and backglass.  I have a third monitor powering the score display.  I was finding that some games would consistently lock up on me every time I started them.  It didn't matter if I started them from VP or from HyperPin.  In all cases, hitting F3 would restart the game and it would come back, but it would often take a long time for the F3 to register.  I tried to downgrade my video card driver way back to an older known working version, but was unable to get it to install.  Left with little options, I started poking around.  I think I found a solution.  So far it's working great for me, and I've implemented it on several tables.  Fish Tales, Elvis, LOTR, Jurassic Park, Bally Strikes and Spares... all of these were notorious for hanging EVERY time I started them.  Jurassic Park was the absolute worst. It was faster to reboot than to wait for JP to recognize the F3.  

 

Up until now, the only solution I'd found to make them boot normal again was to delete the nvram file.  But that just isn't feasible from Hyperpin, nor is it really a desirable thing to have to do EVERY time I want to play a table.

 

The issue I found is with the PinMame score display.  If I went in to the code and hid it, then the tables would boot every time, no questions.  Even Jurassic Park.  I tried it at least 20 times.  What I found is that every game has a section at the very top of the _init that uses a 'with Controller' statement.  Sometimes, there was a .hidden value set, and sometimes it's left to the default.  To solve my problem, I set the .hidden value to 1 to hide the display while the game is initializing.  And then at the very end of the _init sub, I added it back in like this:

 

Sub table_init
.
.
  with Controller
    .
    .hidden = 1
  end with
  .
  .
  'Unhide display'
  Controller.hidden = 0 
End Sub

 

 

So far, this has worked on every table that has given me problems.  It's a simple change to make, and you don't even realize that the score display is missing.

 

I know this has been an issue for others with very little in the way of solid solutions other than pointing to video drivers.  In my case, the issue with the score display wasn't even on one of the monitors running off the card I was trying to rollback the drivers on!

 

This is also a simple enough solution, that it would be very easy for those out there building the tables could implement.  Just hide the display when the Controller is started, and then go back and unhide it before finishing the table_init.  

 

I really hope this helps others, because it really made my day!


Edited by mitchelwb, 23 June 2013 - 11:12 PM.

WIP Cabinet build: Intel i3-3225 | 4Gb 1600 DDR3 | 64Gb SSD | Gigabyte GTX 650 2Gb video | Modified Slugfest cabinet


#2 gamefixer

gamefixer

    Pinball Fan

  • Silver Supporter
  • 575 posts
  • Location:Prosper, Texas

  • Flag: United States of America

  • Favorite Pinball: BK2K

  • PS3 Gamer Tag: gamefixer
  • 360 Gamer Tag: gamefixer

Posted 23 June 2013 - 11:59 PM

interesting. This would be hiding the display that would show up on your LCD and not a real DMD right?



#3 mitchelwb

mitchelwb

    Enthusiast

  • Members
  • PipPipPip
  • 88 posts

  • Flag: United States of America

  • Favorite Pinball: Sing Along

Posted 24 June 2013 - 12:35 AM

yes, I'm running a three monitor setup with the display/dmd monitor connected to my onboard video because even though the GTX 650 is capable of 4 simultaneous monitors, it only allows 2 in XP.  

 

I'm not powering a real DMD because honestly, I just don't need to.  my cabinet is a repurposed Slugfest and is a little unique. It has a spot that's perfect for an LCD.  From what I've seen (which isn't exactly a lot TBH), people using a real DMD don't seem to have this problem as much.


WIP Cabinet build: Intel i3-3225 | 4Gb 1600 DDR3 | 64Gb SSD | Gigabyte GTX 650 2Gb video | Modified Slugfest cabinet


#4 Aaron James

Aaron James

    <<< Grand Champion >>>

  • VIP
  • 1,408 posts
  • Location:Shelby Township, Michigan

  • Flag: United States of America

  • Favorite Pinball: Docking Complete...Negative...You Must Redock...Redock Now!



Posted 27 June 2013 - 01:49 AM

I don't understand EXACTLY where / how you implement this into the script. I'm very intrigued by it. Can you help me?


vpsig.jpg


#5 mitchelwb

mitchelwb

    Enthusiast

  • Members
  • PipPipPip
  • 88 posts

  • Flag: United States of America

  • Favorite Pinball: Sing Along

Posted 27 June 2013 - 04:41 AM

I don't understand EXACTLY where / how you implement this into the script. I'm very intrigued by it. Can you help me?

 

Take a look in the script.  If you're used to changing the Controller to B2S.Server, then it should be shortly below that.  You'll see there is a sub called something like table_init.  It may not be called "table_init" but may have the name of the table instead of just "table".  So it could be "myTable_init" or "youTable_init" or "MedMad_init" or something like that.  

 

Inside that subroutine, you'll typically see a block of code that starts with the words "With Controller" and inside that block of code you'll see a bunch of lines that start with a period.  The With block is just a shorthand way of not having to type the word Controller over and over.  So the code:

 

 

With Controller
  .hidden = 1
end with

 

 

accomplishes the same thing as: 

 

 

Controller.hidden=1

 

 

It makes more sense if you have many properties you want to set at once.

 

What I'm doing is in that with block, where all the properties of the controller are being set, I'm setting the hidden property to 1 (means true) to hide the score display while the rest of the init sub is running.  Then, at the end of the init sub, I go back and add in:

 

 

Controller.hidden = 0

I'm not terribly sure how to make this clearer... if this is still confusing, let me know what table you're trying to do it to and I'll see if I can give a more specific example.


WIP Cabinet build: Intel i3-3225 | 4Gb 1600 DDR3 | 64Gb SSD | Gigabyte GTX 650 2Gb video | Modified Slugfest cabinet


#6 Aaron James

Aaron James

    <<< Grand Champion >>>

  • VIP
  • 1,408 posts
  • Location:Shelby Township, Michigan

  • Flag: United States of America

  • Favorite Pinball: Docking Complete...Negative...You Must Redock...Redock Now!



Posted 27 June 2013 - 04:56 AM

Awesome thanks for the very clear explanation.
I'm going to try this right now. Thanks so much. Appreciate the answer.

vpsig.jpg


#7 naboodiver

naboodiver

    Enthusiast

  • Platinum Supporter
  • 400 posts
  • Location:East Tennessee and former Hoosier

  • Flag: United States of America

  • Favorite Pinball: Scared Stiff, Attack from Mars, Indiana Jones, Addams Family

Posted 27 June 2013 - 12:47 PM

Interesting... I had this same problems with certain tables(some different tables but same graphic card)hanging or repeating sound bites and slow loads when I ran VP under XP. That is one of the reasons I made the transition to Windows 7 from XP. The table load issues completely went away with windows 7. This helps to zero in that it is a graphics card and processing issue with the DMD initialization. I figured that is where it was getting hung up but did not think of trying what you did. I just figure XP did not play well (compatibility) with the newer graphics card. It will be interesting to hear if this works for others.

#8 mitchelwb

mitchelwb

    Enthusiast

  • Members
  • PipPipPip
  • 88 posts

  • Flag: United States of America

  • Favorite Pinball: Sing Along

Posted 27 June 2013 - 02:20 PM

What's odd to me is that all the suggestions I got were to use a particular driver for the GTX650... but if the display is the issue, that's not even on the GTX650!

 

Elvis did stutter for me yesterday.  I'm not sure why.  I double checked, and I'd already made the code change.  So there may still be more to it.  But so far, it's the only one that's still stuttered.  I may spend a little time looking at what else about the controller I can delay.

 

I have also considered upgrading from XP to W7.  I don't really have any issue with W7, but I assume, the best way to do it would be to backup my tables, then wipe my hdd and do a clean W7 install.  Then reinstall all the drivers and pin software, then add my tables back in.  I wouldn't want to go back and have to reinstall all my tables manually again.  


WIP Cabinet build: Intel i3-3225 | 4Gb 1600 DDR3 | 64Gb SSD | Gigabyte GTX 650 2Gb video | Modified Slugfest cabinet


#9 naboodiver

naboodiver

    Enthusiast

  • Platinum Supporter
  • 400 posts
  • Location:East Tennessee and former Hoosier

  • Flag: United States of America

  • Favorite Pinball: Scared Stiff, Attack from Mars, Indiana Jones, Addams Family

Posted 27 June 2013 - 10:55 PM

What's odd to me is that all the suggestions I got were to use a particular driver for the GTX650... but if the display is the issue, that's not even on the GTX650!

 

Elvis did stutter for me yesterday.  I'm not sure why.  I double checked, and I'd already made the code change.  So there may still be more to it.  But so far, it's the only one that's still stuttered.  I may spend a little time looking at what else about the controller I can delay.

 

I have also considered upgrading from XP to W7.  I don't really have any issue with W7, but I assume, the best way to do it would be to backup my tables, then wipe my hdd and do a clean W7 install.  Then reinstall all the drivers and pin software, then add my tables back in.  I wouldn't want to go back and have to reinstall all my tables manually again.  

That is what I did exactly.    Actually pretty painless for the most part.   If I remember correctly, I still had to accept the licensing pop up on the tables again.



#10 koadic

koadic

    Pinball Fan

  • VIP
  • 1,363 posts
  • Location:Omaha, NE, USA

  • Flag: United States of America

  • Favorite Pinball: Addams Family/Fish Tales/Medieval Madness



Contributor

Posted 27 June 2013 - 11:01 PM

There have been previous issues with the dmd where it would work fine if it was placed on the playfield monitor, and cause problems if it was moved to a different monitor. One way to get by this was to make sure the dmd and playfield monitors are on the same video card. So, if you are having issues and the dmd monitor is on a different video card than the playfield monitor, then it might be a related issue and mitchelwb's method seems to be a way to bypass it. Another thing to try is putting the dmd monitor on the same video card as the playfield monitor.

#11 DrEvil

DrEvil

    Enthusiast

  • Platinum Supporter
  • 109 posts

  • Flag: United States of America

  • Favorite Pinball: Indiana Jones

Posted 04 July 2013 - 03:04 PM

What is the file name and location of the script you are editing for this fix?


Home Arcave featuring the Virtuapin:

www.youtube.com/watch?v=Flp1qIFfeAU


#12 DrEvil

DrEvil

    Enthusiast

  • Platinum Supporter
  • 109 posts

  • Flag: United States of America

  • Favorite Pinball: Indiana Jones

Posted 04 July 2013 - 03:17 PM

Never mind - I figured out where to get to the script: right there on the VP menu panel (I am a newbie and this is the first time I have opened a VisualPin script).  I performed the edits and this has fixed my problem so far for Circus Volt and TOM.

 

OP - you are awesome.  Thanks


Edited by DrEvil, 04 July 2013 - 03:17 PM.

Home Arcave featuring the Virtuapin:

www.youtube.com/watch?v=Flp1qIFfeAU