Old SS style score queues?

112 views
Skip to first unread message

zacaj

unread,
Dec 16, 2018, 12:10:15 PM12/16/18
to MPF Users
I'm working on a game for LISY1, and on old SS games like that, they add the score one increment at a time, and fire a chime with each score.  Right now if I say "score: 500" in my variable_player, it'll add the 500 all at once.  Is there anything built into MPF to handle stuff like this?  I figure I could change all my score entries to add to some other variable, and then having some constantly running timers to count those down and increment the actual score, but there's some intricacies to that that I'd rather not deal with if there's any built in solution I'm missing...

jabdoa

unread,
Dec 16, 2018, 12:49:57 PM12/16/18
to MPF Users
We got this for score reels. They will also trigger chimes. You can have a look at score_reels and score_reel_groups in the docs.

We do not have this for older machines with just lights. There is a info_lights plugin but afaik it does not know about chimes. We could add that. How should it work exactly?


Jan

zacaj

unread,
Dec 16, 2018, 3:04:20 PM12/16/18
to MPF Users
I saw the score_reels functionality, but I couldn't find any details on how it might work if, say, there was no zero position switch.  I assume that normally the reels automatically reset on game start, is that just skipped if there are no switches configured?  If so, I guess I could use this just to give the chime outputs so that the sounds will be correct, however the scores displayed on the digital displays will still jump up by multiple digits, won't they?  

jabdoa

unread,
Dec 16, 2018, 3:51:35 PM12/16/18
to MPF Users
So you want virtual score reels on your display? You could probably use virtual switches and coils with score reels. Does not really sound right though. Most people just use slides with a big font for virtual score reels.

Is this something you would usually have on SS machines? Can you send a video? How would this work on an SS? It does not have score reels right? Just those alpha numeric displays, right? An those should count up over time instead of instant scoring? I know that only from the bonus in EMs (where we got a mode for that).


Jan

zacaj

unread,
Dec 16, 2018, 4:17:55 PM12/16/18
to MPF Users
I'm just attempting to use the machine's (Genie) original six digit numeric displays.  No modern LCD screens, no MPF-MC even running.  On older SS games, since they still have chimes (or simple tone boards that are analogous to chimes), they still count off scores individually in the same way an EM would.  For instance, scoring 500 points would result in five one-hundred point chimes (or beeps) and the player's score on the numeric display would be incremented by one hundred points five times.

Here's me attempting to demonstrate one handed on my Stern Dracula:  https://drive.google.com/open?id=1pc4YorJJ6ifkjlwDRKD4z6pNAfikhOQY  When I hit the drop target it scores 500 points

Here's a better example on my Count-Down since I had the glass off: https://drive.google.com/open?id=1A3C7MKXUCGL8Ua0KTB8mS35XGCvJYq5N  Off camera I'm hitting down 500 point drop targets.  After I complete the bank of 4, it resets at 5000 per target.

As another detail, on Count-Down, if I hit a 500 point drop target, and then while it's counting off the 5x 100 points I hit a 1000 point rollover, it will continue to score the 5x 100 and then after those are complete score the 1x 1000.  Or if I do a 5000 point target and then a 100 point rollover the same thing happens (there's no priority given to different score values).  There must be some internal queue of sets of points to award that it works through.  

From some rom hacking I've done previously I also observed that on newer SS like Black Knight, instead of a queue of points, they just have one counter for each digit of the score, and it works through those until they're all zero.  Meanwhile there's also an option in their bytecode to 'score immediate' and just add some score directly, bypassing the queues.  

I've been able to come up with something similar to the individual digit queues using a timer:

I keep one player variable for each digit:

player_vars:
thousands:
initial_value: 0
hundreds:
initial_value: 0
tens:
initial_value: 0

then when I want to score I increment those instead of accessing the score directly:
variable_player:
laneA_active{current_player.a==1}:
thousands: 5
laneA_active{current_player.a==0}:
hundreds: 5

I have a timer that is triggered by any increments to the queues (although it's a bit messy trying to only stop it once all the queues reach zero):
timers:
score:
start_value: 1
end_value: 0
direction: down
restart_on_complete: yes
tick_interval: 200ms
control_events:
- action: stop
event: player_thousands{value==0 and current_player.hundreds==0 and current_player.tens==0}
- action: stop
event: player_hundreds{value==0 and current_player.thousands==0 and current_player.tens==0}
- action: stop
event: player_tens{value==0 and current_player.hundreds==0 and current_player.thousands==0}
- action: start
event: player_thousands{change>0 and prev_value==0}
- action: start
event: player_hundreds{change>0 and prev_value==0}
- action: start
event: player_tens{change>0 and prev_value==0}

I then watch the timer to actually do the scoring:
coil_player:
timer_score_tick{current_player.thousands>0}: thousandsChime
timer_score_tick{current_player.thousands==0 and current_player.hundreds>0}: hundredsChime
timer_score_tick{current_player.thousands==0 and current_player.hundreds==0 and current_player.tens>0}: tensChime

variable_player:
timer_score_tick{current_player.thousands>0}:
thousands: -1
score: 1000
timer_score_tick{current_player.hundreds>0}:
hundreds: -1
score: 100
timer_score_tick{current_player.tens>0}:
tens: -1
score: 10

This approximation is fairly serviceable as far as scoring things like 500s goes, but it can't really queue up a sequence like 10, 500, 10, 2000 or something and rattle it back off the way the original game (Genie) that I'm trying to recreate would

zacaj

unread,
Dec 16, 2018, 4:18:42 PM12/16/18
to MPF Users
whoops, just noticed I got those links backwards :(

jabdoa

unread,
Dec 16, 2018, 5:28:54 PM12/16/18
to MPF Users
Ok I see it. This is something which we do not currently support out of the box. It it also tricky to do in config.

I first though we could create a new action in variable_player but that does not feel right. Instead, I guess we need to create a score_queue device and a score_queue_player. Since this is something which SS machines do it makes sense to add it in MPF itself. Imagine something like this:

score_queues:
  score:
    chimes: c_chime_1000, c_chime_100, c_chime_10, None
    delay: 200ms

score_queue_player:
  laneA_active{current_player.a==1}:
    score: 1000

The ScoreQueue device would then process the queue and add a score every 200ms. Would that work?

Jan

zacaj

unread,
Dec 16, 2018, 6:07:28 PM12/16/18
to MPF Users
That seems like a workable approach. Internally it would keep a list of each score given and worth through them one by one, decoding the individual pulse amounts from the scores?

I assume it could also be configured to output an event each time a score is incremented? (before and after maybe) 

The tricky part would probably be things like making sure the score queues are empty before counting down the bonus at end of ball, and things like that.  I'm not too familiar with how the queue events and queue relay work..

Dan - aka BorgDog

unread,
Dec 17, 2018, 9:19:34 AM12/17/18
to MPF Users
following along.  I have a lisy waiting to get to the top of the project list that I will probably start out on either cleopatra or sinbad, but eventually wouldn't mind doing at least the 6 that I own... oh where is the time...

That would be a great addition Jan, not sure of the details of what you are proposing, would we still just do a score: 500 and MPF would take care of the parsing that out into five 100 point add to score and chime hits?

I have a copy of Solar Ride in MPF, by lynnindenver I believe, but probably not current.  Is there any other machines that have been done in MPF with LISY?

zacaj

unread,
Dec 17, 2018, 9:27:20 AM12/17/18
to MPF Users
Is that copy of Solar Ride public?  I'd love to compare.  My WIP Genie code is here: https://github.com/zacaj/genie-mpf 

I haven't gotten the game set up to test it in yet but it all seems to work in the monitor.  It's not quite the original rules either, but may be good for some reference.  

Lynn Crouch

unread,
Dec 17, 2018, 9:44:25 AM12/17/18
to mpf-...@googlegroups.com
People can share Solar Ride around. I haven't actually looked yet, but I think Ralf is including it in LISY's distribution now. It should be more or less current, I haven't had a chance to do more work on it, especially since I've been playing with the Christmas present from my husband.
--
You received this message because you are subscribed to the Google Groups "MPF Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to mpf-users+...@googlegroups.com.
To post to this group, send email to mpf-...@googlegroups.com.
Visit this group at https://groups.google.com/group/mpf-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/mpf-users/58d9fb1a-38d7-4667-a68a-be98ab12525f%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


zacaj

unread,
Dec 17, 2018, 9:51:50 AM12/17/18
to MPF Users
It looks like Charlie's Angels and Solar Ride are on the LISY1 SD image

TheLegoMoviePinball

unread,
Dec 17, 2018, 10:51:48 AM12/17/18
to MPF Users
Just my 2 cents,
got a similar issue for my bally - supersonic conversion,
As a workaround, I just added for now a score of +3000 but a compiled wave sound to mimic 3 x 1000 ! 

Now I'm following your solution feedback ;)



Dan - aka BorgDog

unread,
Dec 17, 2018, 11:06:06 AM12/17/18
to MPF Users
Cool, thanks. I'm going to have to go get that.

zacaj

unread,
Dec 17, 2018, 4:25:16 PM12/17/18
to mpf-...@googlegroups.com
So you're using the original displays but custom sounds?

TheLegoMoviePinball

unread,
Dec 18, 2018, 3:56:30 AM12/18/18
to MPF Users
I'm really at a learning the MPF framework state, then I don't try to struggle too long with each detail when inplementing the Supersonic table.
I don't use any original bally hardware but only playfield mechanics. For score display, I use a LCD with MPF-MC.

You can check code https://github.com/vgrillot/supersonic-machine, I'm moving to MPF V5.

++

jabdoa

unread,
Dec 21, 2018, 3:00:50 PM12/21/18
to MPF Users

jabdoa

unread,
Dec 21, 2018, 5:08:15 PM12/21/18
to MPF Users

Dan - aka BorgDog

unread,
Jul 23, 2021, 1:55:04 AM7/23/21
to MPF Users
Hi @jabdoa - Jan.  dredging this back up again since I am actually implementing it in my current project.  I have the score_queues and score_queue_player implemented and working, and the one thing I've run into is something zacaj mentioned a few posts back and that is making sure the queue is empty before counting end of ball bonus.  I don't see any way to implement that. I thought of trying to use a queue_relay_player but not sure where to put it and don't know if that would work as the bonus count mode also uses the score_queue_player when it counts bonus. 

thoughts/ideas?

On Friday, December 21, 2018 at 2:08:15 PM UTC-8 jabdoa wrote:

jabdoa

unread,
Jul 23, 2021, 11:58:24 AM7/23/21
to MPF Users
Guess we should block ball_ending inside score_queue to implement that by default. Or are there cases where you would not want that?


Jan

Dan - aka BorgDog

unread,
Jul 23, 2021, 12:04:38 PM7/23/21
to MPF Users
that would be great!  thanks.

I can't think of any reason I would need ball_ending to run while score_queue was still working, but if could be easily setup as an option with the default to block someone might find it useful in the future.

jabdoa

unread,
Aug 17, 2021, 8:17:04 AM8/17/21
to MPF Users
I changed ScoreQueue from player_turn_ending to ball_ending in dev.5. Any mode blocking ball_ending with a priority > 0 should run after all the scoring has been completed. Please give that a try.

Jan

Reply all
Reply to author
Forward
0 new messages