A programmer friend was over last night and checked out the MB. He was quite impressed with what I was able to accomplish (he knows my poor programming skills), and I asked him some pointed questions about a few lingering bugs with my implementation.
In particular, we focused on a bug that prevents my 'full screen' display from actually, you know, displaying full screen! This has been bugging me forever, but the odds on the 70s six card are actually displayed underneath the backglass image, and you can't see them unless it is full screen.
I've searched and searched through my code to try to figure out why it wasn't launching in full screen mode... and I have never been able to figure out why... until earlier today. I started thinking about the modifications I made to the underlying library to prevent/replace DMD support... and yes, I hard-coded a resolution in that library which is incorrect. (oops!)
Good news, I should be able to change that resolution, recompile the library/reinstall, then all should be well!
Other bugs - my menu doesn't quite quit gracefully in some circumstances, and will also start the wrong game in certain circumstances.
Lastly, my search algorithm's race condition. My friend pointed out (correctly) that I have a separate loop for pygame running (otherwise, how could graphics function?)... and that this will interfere with the switch handling/processing logic... (geez, rookie mistakes).
Anyway, in order to fix the menu stuff, I likely have to examine how I am exiting each game. This will also prevent certain bugs (like winning credits on a game and coming back to the same number of credits displayed), and various other (rare) crashes and so forth.
The search algorithm is much tougher. I think I'll have to re-architect the display code entirely to fix it, and as he pointed out, I'll still not be able to completely avoid this particular issue... that may wait until I have everything else complete - I think I might be able to wrap the standard display() method in such a way that it can execute async from the rest of the code... but I'm not raring to fix this bug.
Basically, the game can 'forget' how many replays it needs to add if you don't wait for it to finish registering before shooting and pocketing a fifth/sixth/etc. ball. Normally what this means is that you get the odd single extra replay. Occasionally, on the earlier games, your search can be ill-timed in such a way that it misses the hit. This is an issue because you as a player cannot control how the search happens - it just 'does'. I'll figure out something, like, for example, modifying the ball lift code to auto-search if you press the override button after 4th ball has been shot.
This weekend, I have some power supplies coming that will hopefully stop my randomly rebooting score and instruction screens, then next week I have yet another playfield coming!
I am working on another game, but it is much later and MUCH tougher (with regard to portioning) than the games I have recently implemented. I'm looking forward to playing it, though! Once I solve the portioning for this game, I will be able to implement another three that are drawn (schematic) in the same style.
One is a surprise, and unlikely one that you might expect.
I also have another several lined up with completed artwork. If I get overwhelmed with the portioning on this one, I'll move on to one of the other, simpler, games.
And I also have the artwork 1/2 done for the next game chronologically... lots of stuff to do! And then there's the game I left off after finishing the artwork... in the middle of portioning.
The list is down to 114 that are not complete and functioning.
Gotta stop jumping around so much! But I'm having lots of fun, and that's one of the important things, isn't it?