Jump to content
Due to a large amount of spamers, accounts will now have to be approved by the Admins so please be patient. ×

Pinbot Extended - A 2.0 Project

Recommended Posts

For quite awhile now, I've been toying with the idea of doing my own home brew pinball project. The idea first crossed my mind around 4 years ago, but I didn't give it much time. Thoughts about doing it came again and again since that time, each being stronger than the last. But again I had always pushed it off as building a machine from scratch is more work than I was willing to do. It was more work than I could even get my head around. What about extending something that already exists though? Now that was something I could start getting my head around. Enter Bride of Pinbot 2.0. Owning a BoP 2.0 allowed me to see just what was possible with extending an existing game and how it all hooked up hardware wise. I was impressed with what a platform like P-ROC could do and the fact it was all reversible, means the game can be switched back to stock configuration again. I don't have a large collection of machines that I could choose from in order to do this project, but there was one in my line up that stood out the most. Pinbot.




The P-ROC platform is made up several boards and bits of hardware, but for my purposes, I only need one - the P-ROC board itself. This replaces the CPU board and is driven by a computer. The computer can then run a brand new or extended rule set and communicate with the solenoid driver board for the coils. This one is sitting in my BoP 2.0 at the moment. For more photos of the set up in the headbox on my BoP 2.0, check out the restore posts (https://www.aussiearcade.com/showthread.php/91434-Bride-of-Pinbot-(2-0)-Williams-1991-Repair-amp-Service-Log).




I'm sure many (OK, maybe just a select few ;) ) of you reading that I plan to use P-ROC for this project stopped and said "Hold up. You can't do that. P-ROC is for WPC games". You're correct, it is. But thanks to a clever chap nammed Mark Sunnucks, this is possible. Mark has created a Sys11 / Data East interface board that allows the P-ROC board to function in a Williams System 11 or Data East game. Mark played a role in the Dutch Pinball Bride of Pinbot 2.0 project, getting the original Pinbot running as part of the system. He has also done some incredible work with his own 2.0 / extended / second sortie project on a F14 Tomcat (see here for details - https://pinside.com/pinball/forum/topic/f14-tomcat-second-sortie-information-and-on-going-development). Mark and I crossed paths as a result of the restoration I did on my BoP machine and his help and patience in getting me started on this project has been incredible (If you're reading this Snux - Thanks again :) ). It's an extra board needed for the project, but it opens up the options for me to use it in other games if desired too.




There are a number of frameworks you can use to write 2.0 or extended rule sets for a game on the P-ROC platform. The pyprocgame is quite mature now and is running many games out there like TNA and Houdini. It has a steeper learning curve, but you're working at the code level and have far more control over what it possible. The other framework I looked at (and eventually decided on) was MPF - Mission Pinball Framework. This one abstracts you away from the code level and is more about working with configurations to drive the game. The learning curve is a lot lower and it's well supported. The down side is you relinquish some of the control and features that you get with pyprocgame. Given this is my first dive into a project like this, I decided MPF was the way to go. Since MPF continues to be extended, the features I want may well turn up anyway - or I can look at coding them myself (I am a software dev after all). A month or so earlier, I mentioned in passing to @Noob-A-Tron that I was looking in to doing a 2.0 style project. When we caught up recently, he handed me a colour PIN2DMD display for free to use. I was absolutely speechless at his generosity and can't thank him enough! I had planned to use an LCD panel of some kind, but here was a free display to use. Could I use it with MPF though?




The Pin2DMD comes with a driver board on the back already, but how easily could this be used for what I wanted to achieve?




After some chatting with mark about the display, he informed me there was a way I could use it with MPF and in my project. To do it though, I'd need to remove the 2 large boards on the back of the display and replace them with something else. For this, I'd need a Teensy (https://core-electronics.com.au/teensy-3-2.html) and a Smart Matrix Shield (https://core-electronics.com.au/search/?q=smartmatrix). For around $90AU, the boards were delivered. The shield comes as a kit and needs to be soldered together.




Putting the Shield together was a fun little project that took next to no time at all. It runs off 5V, as does the display panel.




Next step was working out how to power the shield and the display. I looked at a few options, but the most suitable method for running it on my desk was an old ATX power supply from a PC. Luckily, work was gearing up to throw out several over them. I grabbed a couple and took them home so they could be live again. These power supplies have multiple 5 and 12V lines I can use to run multiple things at the same time.




The only issue with these power supplies is you need to "jump" 2 wires in order to get them to power on when not attached to a PC motherboard. This is a simple task of joining 2 wires together.




Next I needed to create 2 adapters to properly hook the display and shields up to the power supply with. An old splitter was perfect for the task.




The unused wires were removed so only the 5V and ground wires remained. One was made for the Shield and a second for the display.




Now I could actually get the software loaded on to the Teensy. I had to install the Arduino IDE and Teensy drivers on to my PC. That then allowed my PC to interface with the board and upload a small RGB.DMD program that will drive the display.




I now needed to remove the existing boards from the display. These were set aside safely and can easily be installed back on to the display if need be.




The Teensy + Shield combo was hooked up to the display via a ribbon cable and powered on with the display. Seeing the RGB.DMD splash screen was a sign of success :)




So I now had the display powered and the Teensy driving it. Now to do something a little more interesting and actually get MPF talking to it. The MPF framework comes with a demo game "DemoMan". Which runs a series of splash screens and also acts as a game rule set, so you can start a game and activate switches via the keyboard to see a response. With a few config changes, I had MPF sending the display information shown on the virtual display (computer screen) to the real LED display panel!




The DemoMan sample only runs in monochrome, so I replaced the splash screen with a colour version of the Pinbot logo. I didn't spend long trying to get the image looking great - just a quick google search and resize to 128x32 pixels. It was only to test that colour was indeed being sent from MPF.




I was now keen to get my Pinbot Extended MPF project set up and begin working on replicating the attract mode. The MPF software has a "monitor" tool, which lets you define switches and lamps on a layout of the playfield, so you can test things from the comfort of your PC without having to have any hardware installed in the game. I took a photo of my Pinbot playfield and the defined all the switches, lamps and coils in the game. The square markers are switches and the round markers are lamps.




In the previous image, I have the lower drop target selected, which is detected by the MPF software. Right now it won't do anything, but it's the starting point for my game. This is like taking the glass of your actual machine and activating switches with your finger for testing.




I somehow managed to condense weeks of effort into a series of photos and paragraphs above. No doubt I've skipped over several important insights, information and decisions. There are many ways to go about this. Right now I have a working display and also the starting point for my project. It might not seem like much, but it's taken some work in getting to this point. For now, it's the main things I need in order to actually create a new rule set without hooking anything up to my Pinbot machine. My plan is to recreate the Pinbot ruleset as best I can as a learning experience with the MPF platform. From there, I should have enough knowledge to create the Extended version of Pinbot with DMD animations, new sounds, game modes and so on. I haven't purchased the P-ROC board yet and will either look to source one locally or go to Multimophic direct. There is also an Arduino alternative to the P-ROC and SYS11 board combo that I'm looking in to too (which will be way cheaper). But trying to keep to one thing at a time ;) There's a long journey ahead for this project and many road bumps to hit along the way. I'm not sure how often i'll be posting updates and they may only be small ones when I do. But it's a pretty interesting project I think and I'm excited to finally kick this thing off!

Link to comment
Share on other sites

  • 7 months later...

When I set out on my journey to develop a 2.0 project with PINBOT, I hadn't expected there to be an 8 month gap between my initial post and this one. I found myself busy with many projects last year (in and outside of pinball) which ended up seeing virtually no progress made. I want to send a HUGE thank you to @matthies for his home brew Krakken thread which inspired me over the Xmas break to reset my priorities for 2020 and really get stuck back into my own project and make it happen. Last time I was looking at my project, I had started to recreate the rule set of PINBOT in MPF. But that didn't get much further than setting up some files. I may still do this once the project progresses far enough along as I'd love to set this up like Bride of Pinbot 2.0 from Dutch Pinball and let the player select between old and new rule sets. Two games in one is a big win when you consider how much space our machines take up. At the end of last year I was getting the urge to give this project more attention over the Christmas break and into 2020. In December, work was tossing out a lot of old hardware. I will need a PC to run my game on when hooked up to my Pinbot machine, so a freebie sounded like a good starting point.




It's older hardware and has seen a lot of action at work, but for my purposes (especially during the development stage) it's perfect.






With the PC, I also grabbed a bunch of other spare parts that were being tossed out. I don't expect I'll need the display card or RAM, but figured why not grab them just in case. Windows 7 is now end of life, but I won't have this machine hooked up to the internet for any reason other than to update MPF. When the project progresses far enough along, I plan to switch to a small NUC style PC that will be installed into the headbox like in BoP 2.0. I'll probably upgrade to the latest version of Windows at that point too. For now though, this mini tower will be fine. I had to purchase a cheap SSD drive to install though.




To get the project moving again, my first step was to get this new dev PC up and running. It was coated in dust, so was first off cleaned and the new SSD installed. Windows was then installed and all available updates applied. I then installed the Mission Pinball Framework, along with a series of tools I'll need during development. Some of the main tools (outside of MPF) include:


For code development, I use Sublime Text 2. It has a features and extensions list a mile long and is what I use at work every day.




MPF has a lot of logging that gets output while it's running your game and it's important to be able to follow the log live while the game plays out. I use a tool called baretail which lets me tail the log file to get live updates as new data is written to it. I can also set up highlighting to mark specific lines like errors, warnings or game events (a mode starts / ends, etc). There is an open source variant that works just as well too. But I was already using this so have stuck with it.




For file comparison I use Beyond Compare 4. Again it's a tool I use at work a lot, so I use it for my home projects too.




For console commands I use ConEmu which is a super charged version of the windows command prompt. I mainly switched to it years ago mainly for the transparency features. While MPF is running, you are able to view the current status of switches and game variables, so this gets used a lot during testing.




Having 2 monitors for this is a must as I need to have quite a few windows open at once to interact with the game and seeing MPF respond.




With the dev machine up and running, it was time to actually get some code happening for this project. MPF has an excellent tutorial to follow that gets you running with a basic game and display. I spent time over the next couple of weeks setting up a new project from scratch. It's a bit of a stop / start process as there is a lot of documentation to look through as you go. The tutorial gives you the basics, but only scratches the surface. After the first couple of weeks I had a basic game running that I could simulate on my development PC. This covered the basic flow of pressing a start button, loading a ball into the shooter lane and then simulating switch presses through the skill shot mode, normal game play mode and then end of ball sequence. Repeat this across 3 balls and then it would advance to game over. Not very exciting from a rules perspective - but exciting to see my project running a full game.


In my previous update, I had set up the "monitor" tool with a layout of the PINBOT playfield and all switches and coils defined and placed in position. The squares on the playfield are the switches and circles are the lamps. I can click the switches with my left mouse button to simulate and activate / deactivate sequence (like a ball hitting a target) and I can use the right mouse button to hold the activation which you would see on something like the ball trough or a saucer. The two green squares in the lower right show that I have 2 balls set into the trough by default. I set up a simple attract mode first which runs through a sequence of slides showing the game name, high scores, last game scores, etc. I also have a keyboard mapping set up to simulate switch presses too, but it's so much easier to just use the monitor and click with the mouse.




After you press the start button and pop a ball into the shooter lane (you will spot that only 1 switch in the trough is now lit and the shooter lane switch is now active) the game will start and put you into the skill shot mode. As with the original PINBOT, the skill shot is still the vortex ramp, but with a small difference. The multiplier lamps cycle 2x -> 3x -> 4x -> 5x. When you launch the ball, the multiplier cycle stops and the shot you hit on the vortex ramp is multiplied by the lit multiplier value. Every successful vortex hit from the skill shot will speed the cycle up. I've also added in a secret skill shot and a super secret skill shot that can be achieved too for much larger points.




I have many basic slides added to the game for now when events happen. Like hitting the skill shot for example. You will see the display flash with the award. These are all very simple slides and will be improved upon later once the project develops.




At this point the ball is in play and you can hit switches to add points. Once ready, you can activate the outhole switch to end the ball. This runs through the bonus mode and awards bonuses for features and applies any multiplier you have achieved.




Then it's on to player 2 for their first ball and skill shot. Then repeat until all 3 balls for the players are complete.




Before I went any further, I decided to get the display hooked up and running with my new project. I copied the display set up from the demo program in my last update and powered up the display. Everything went smoothly and I was able to watch the attract mode of my 2.0 project playing out on the PIN2DMD display.




I've been working away in MPF now for the last month and have made some excellent progress on game. Right now you are able to play a 1 to 4 player game with:

- Attract mode

- High scores (GC + 1st to 4th).

- Skill Shot (Multiplier timing with vortex ramp, Secret Skill Shot, Super Secret skill shot)

- General game play scoring for hitting switches

- Bonus Multiplier increase via the green matrix switches (light all 5 to to go 2x, then 3x, etc)

- Upgrade features for multiplier, super pops, super ramps, super switches and mystery award.

- End of ball bonus

- Ball save

- Tilt warnings + penalty.

- High score name entry at the end of a game

- Sound effects on the pop bumper switches


Eventually I will have this running in my actual PINBOT machine. Everything is reversible, so restoring to the original PINBOT will be easy.


I've run into a few issues with MPF not behaving as expected, but there is an active google groups for MPF that the development team are a part of and have had a number of my bug reports either fixed or issues created for them to be addressed in a future update. I'm feeling more comfortable with MPF now though and have noticed progress moving faster as I spend less time wondering if / how something could be done and more time thinking "Well I could achieve it this way, or there is that other feature that I could use to do it too".


I'll look at going in to some details on the modes and feature upgrades in future updates. Right now I'm focusing on fleshing out the rule set I want to create. I'd like to add more animations and sounds to the game, but think I'll hold off on that until the game starts to take shape and ideas become more concrete. Everything right now in terms of display and sound is just placeholder. I plan to have at least 2 different multiball modes that players can work towards that are outside the main modes. Each planet will be a short mode, with the sun being the final wizard mode. The chest matrix will be used to upgrade feature (Bonus multiplier, super pops, ramp, etc). I also need to look in to purchasing a PROC board so I can get all of this running in the actual machine. I might see if I can find one locally first. There's still so much to do, but it's been very motivating seeing the game starting to take shape on screen over the last 4 weeks. It's been so motivating seeing the game come together on screen over the last month and I'm looking forward to making a ton of progress over the coming months :)


  • Like 9
Link to comment
Share on other sites

Stoked to hear my thread inspired you in some way to get back into working on your project.


I know it takes a lot of time to write up long posts like you just did, so thanks for all the details. Especially for going through the different tools you use. You've already given me some ideas on how to improve how I work with MPF.


I can't wait to see your progress.

  • Like 1
Link to comment
Share on other sites

  • 5 months later...

I'm long overdue for an update on my PINBOT 2.0 project. It's been moving slower than I had hoped, but there's no real rush here. Also, for a 2.0 project like this, a lot of time gets spent on code and it's not easy to translate that into interesting posts for people to read. But there are some interesting things to cover which I'll go into here :) Thanks to the super awesome @Cursed (and his Queen for helping with delivery), I've been able to source a P-ROC board on loan which will allow me to move the project from my desktop PC into the physical machine to actually test! This is very exciting to say the least! I'm still on the look out to buy my own though as I'll eventually need one - so if you have a P-ROC board to sell, please contact me! But for now this loan will do nicely.




Once I had the board, I started thinking about what needed to be put in place to get this into my machine. The more I thought about it, I realised there were a number of things I had been putting off that needed to be done before it was possible. The first is the display panel. As mentioned in earlier updates, I'm using a colour PIN2DMD LED display. I had hoped to create a replacement speaker panel with the display attached to it. Sadly though, the display is taller than the speaker panel. This means that along with creating a new panel for the display to attach to, I'll also need to look at doing something different for the translite as the original will no longer fit once the new panel is installed. I don't plan to modify the original translite, so a new one is the only real option here. That's not going to get in the way of development though and I'm happy to put that off for a future time though.




Before I look at mounting the display to anything, I need to get the Teensy PCB attached to the display itself. Up until now, while testing on my desk, the Teensy board has just floated off to the side. This needs to be mounted properly for installation into the cabinet. The PCB is a lot smaller than the original shield that comes with the PIN2DMD display, so it won't install directly to the existing PCB stand offs. To get around this, I grabbed a spare piece of acrylic off the shelf, along with a couple of nylon posts, screws and washers. Holes were marked and drilled onto the acrylic to match the existing PCB stand offs.




The Teensy board was then installed onto the acrylic, which was then installed directly onto the existing stand offs.




I decided to use the updated display panel from BoP 2.0 as a model for sizing on the new panel for my project. The main difference is the width, with PINBOT having a wider headbox. A new panel was measured up and cut to size, along with holes for the speakers and display.




The panel had filler applied to all the small crevices on the surface. Once dried, both sides were sanded. This process was done twice before 2 coats of gloss black paint was applied. I sourced two small speakers out of my spare parts to install. These are actually brand new speakers for a Pinball 2000 machine and only cost around $5. I plan to run with better speakers at a future date, but for now these will do the trick. I also grabbed spacers for the display panel to rest on, along with the screws and washers needed. Two grills were sourced also to install over the large speaker cutouts.




With the speaker panel coming along, I also needed to think about how to attach it to the cabinet. The way in which the original speaker panel is installed is not very helpful. It's a metal bracket on each side that's screwed to the headbox. This makes removing it a pain.




I had originally planned to just run with it for my new display panel, but because the new panel is taller (to fit the LED display), it will block the light panel in the headbox from opening. You have to have the light panel open in order to reach the screws for the speaker panel. This obviously won't work with my new panel. So I decided to have my panel open up using a hinge along the bottom - very similar to what you would find on a Capcom game for example. This was installed, along with a piece of aluminium angle to the base of the display panel.




Although I won't be installing a backglass during testing, I made my own H block for the top of the display panel. I was planning to use the plastic sort you can buy from pinball parts suppliers. But those are designed for WPC games and are not wide enough for these earlier Williams machines. Two pieces of aluminium angle were purchased, cut to size and installed on top of each other.




Finally the speakers were installed, along with the mesh covers and display panel. It was now ready to go into the machine.






Nothing in pinball is ever simple though - especially when creating one :) Due to the height of the new display panel, it won't close properly as the new speakers and display board take up room where the light panel is.




This means I need to create a new light panel too. For now, the existing light panel was removed. Steel wire was installed for the new display panel to support it when opened (like you see on new Stern games), along with metal clips for the pane to lock into when closed. This display panel is only a prototype but has come up much nicer than I expected. The final version will have a printed artwork plexi overlay, but that's something I'll look at in the future and won't hold me up for now. I'll probably do that at the same time as the new translite so the artwork matches.






The original light panel was sized up and a new panel cut that will be installed when the game is running the 2.0 upgrade.




The brackets were removed from the original panel and fitted to the new panel.




The new light panel was then installed into the cabinet to ensure position and size were good.




Lastly a section was cut out at the bottom so the display panel could be closed properly.




Success! The next step will be to paint the panel gloss white. I will eventually drill holes for lights and flashers to be installed, but will leave that until the new translite artwork is sorted out so the correct sections can be lit. I don't plan to use the alpha & numeric displays as part of the 2.0 upgrade, so won't be cutting holes or making room for them on this new panel. It is possible to incorporate them using a piece of hardware from myPinballs that will allow MPF to communicate with them (which would allow me to have both the original displays and DMD display active in game), but at this point it's not in my plans for this project.




Pinbot has a lane change feature, which allows the player to cycle the lit "Extra Ball" inserts above the out lanes and return lanes. Unfortunately, these switches are attached to the EOS switches on the flipper assemblies. This is fine for game play where the flippers are active and will trigger the switches when the player actives the flippers. But what about using these lane change switches outside of the game for things like a service menu or flipping through the attract mode? We don't want the flippers active then. Taking some inspiration from Scott Danesi on Bride of Pinbot 2.0, I'm going create two auxiliary switches that install with the flipper switches on the cabinet and hook up to 2 unused switches in the switch matrix.




Two lane change switches with activating arms were purchased and diodes installed.




The switches will be wired up to the matrix using alligator clips for easy removal. They will also connect via IDC for easy disconnect from the switch matrix if needed.




The switches were installed into the cabinet.




I've also been giving some thought to how the speakers and sub will connect up to the PC. Again drawing inspiration from Bride of Pinbot 2.0, I organised a Lepy 2.1 Amp that will (eventually) install just inside the coin door. This takes audio in from the PC which the speakers and subwoofer connect to. I couldn't get the same model as used in the BoP 2.0 kit, but this one is close. It also has support for a remote and Bluetooth - neither of which I plan to use at this point. I purchased some audio cabling and then set the amp up to my PC and display panel speakers for testing. It worked nicely. I'd like to sort out a better sub to install in the base of the PINBOT cabinet at some point too as part of this project.




With all that, I'm still not quite ready to get the game hooked up into my PINBOT cabinet. The items above tick off the big things that were holding me back, but there are some smaller items to address. I want to get the coil and switch test features of the service menu completed so I can easily test that I have the configs set up properly. These are already under development and hopefully won't take long to complete. I'd also like to get some more audio into the game too. There's also some cabling I need to sort out for the Snux board. I'm not even building a machine from scratch (..yet - that's my next project) but it's amazing how many things pop up that need to be done and slow the whole process down. That's part of the fun I guess :)

  • Like 5
Link to comment
Share on other sites

  • 1 month later...

A new milestone was reached in the project today.


It's been a frustrating few weeks as I've been so close to having the game running on real hardware, only to be stopped (what feels like) every second step to deal with a new issue that presented itself. A few hardware issues came up, but mostly it was software related to drivers, framework and some code configuration. There's a bunch of cables hanging out of the headbox to the PC and secondary power supply - it's part of the development charm I guess :) Eventually though this will all be made a lot smaller and tidier as the project progresses.


Today however, I manged to actually PLAY my game for the first time on real hardware. It's one of those moments where I just stood there and thought how F*&KING COOL this is!


@Cursed Your P-Roc board is working nicely :)


There are a few things I want to improve before showing a game play video, but for now will put up a short video showing the game in attract mode.



There's still much work to be done on the rules side, but with the ability to now actually flip my game I can instantly see how my changes play. I can also see where things that work in the virtual test environment on my PC don't work so well on real hardware and need adjusting.


I'll try and get a longer post up too to cover the progress from my last update to today also. I'm still a long way off the finish line, but was too excited not to share something from today's milestone :)

  • Like 4
Link to comment
Share on other sites


@Cursed Your P-Roc board is working nicely :)


Haha, nice to know it works mate.


Awesome work you are doing and i am hoping maybe one day ill get to pick your brain when the time comes.


Now, anyone have a cheap RCT to sell me? :D


No rush though Andrew. :023:

Link to comment
Share on other sites

  • 2 months later...

Once again I'm well overdue for an update on my PINBOT 2.0 project. Huge steps have been made since my last post in July, so let's get started. With the display panel completed in the last update, it's time to get the boards installed to actually drive this 2.0 project. PINBOT has an MPU board that consists of both a CPU section and driver section for the coils. Before removing anything, all connectors were labelled.




The System 11 MPU board was removed first from the headbox and stored in a safe place.




To use a P-ROC with a System 11 game, you need a second board that is a driver board for the lamps and coils. This was designed to slot into place using the existing mounting holes. The connectors are marked to match that of the System 11 MPU board, which makes hooking it up easy.




I was now ready to mount the P-ROC board into the headbox. The board is already mounted to a frame that's designed to slot right in on a Williams WPC machine as it's essentially a replacement for the existing CPU board. That sadly won't work here on a System 11 machine since the MPU board is both a CPU and driver board in one and the mounting holes don't line up.




Since the P-Roc is on loan, I have no intention of modifying the frame. Instead I put together a new frame that makes use of the mounting holes available so it can line up in the correct position next to the Snux driver board.




With both boards installed, all connectors were hooked up to the boards. The loose connectors at the top of the Snux board are for the old alphanumeric displays, which I won't be using on this project.




One more thing that is needed are adapter cables for the switches. These need to hook up to the P-ROC board. I also created a third adapter for direct switches. These are the switches just inside the coil door for Credit, Advance and Highscore reset. They are not part of the switch matrix and connect to a different header on the P-ROC.




After installing the auxiliary flipper switches in my previous update, I found they just weren't activating reliably when stacked with the existing flipper switch. I decided against stacking the switches and instead placed the auxiliary switch into a different position. This now activates correctly each time the flipper button is pressed.




In my last update, I was in the process of putting together a new light panel for the headbox. I put some feelers out for a set of bracket and latch so I could mount it correctly. I could use the set from the existing PINBOT light panel, but it would be much easier to have a second set that I could permanently attach to the new light panel. A set was tracked down and purchased.




The light panel was painted white, the brackets added and then installed into the headbox. I need to adjust the height of the panel as it's a little too tall and won't open with the display panel up. But this will do for now.




At this point I quadruple checked everything and started my power on. The display came on, but of course it's upside down. I only had a 50% chance of getting it right...




The next step was to get the game running the new code using MPF. This next step took a few days due to several issues. Most things were simple like missing drivers on my PINBOT PC while others were a little more complicated to track down like incorrect config settings in MPF. But eventually, I got there and had the game running in attract mode! It's looking messy with the cables all coming out of the headbox, but that's how things will stay during development.




Here's a short video of the attract mode in action:



From this point, the last few months have been heavily focused on developing the game code. Each week has seen the game grow and grow. I'm planning to start a developer diary series this week to help cover the progress. I'm also wanting to put together some short videos showing the current state of things with the game. I think it will be interesting to look back on and see how various components evolve over the course of the project.





  • Like 5
Link to comment
Share on other sites

A new week is kicking off, which hopefully means lots of exciting changes to come for PINBOT 2.0 over the next seven days. I've decided to start putting together a small "developer diary" of the progress for people to read and follow along with. Sometimes there will be images or videos to share. While at other times it will just be text. I don't have any planned format for what I share - only that it will be broken down into the days of the week, where I document progress for each day. Ideally I'd love to be able to put up a post each week, but there will be periods where little to no work on the project is done. This means some posts may span several weeks - I'll just see how it goes.


Monday 16/11/2020

First thing to look at today was adding flashers to the lamp shows in both the high score and bonus modes. I've opted to go with a simple top to bottom sequence for the high score mode. This repeats every 5 seconds. The bonus mode sequence will work in reverse, with the flashers activating from the bottom of the playfield to the top and sync with the insert light show that plays.


A somewhat boring task today was creating a script that packages together the "pinbot-recoded" folder for deployment to the production machine. Up until now, it's been a manual process of deleting the old folder from a USB stick and copying the required folders across. It would be so much easier to just run a single command line (like "packagepb" for example), which did everything and removed all manual steps. I'm often using either LUA or PHP for my scripting since those are what I'm most familiar with. I decided to go with PHP in this case. The script didn't take long to create and has a reasonable amount of logging and error handling for when things fail. I expect this will evolve as the project goes on.




After catching up with @ztdgz last week and getting some good feedback on the game, I've been toying with the idea of including a "Bride of PINBOT" mode in the game. I'm not sure if this will be one of the planet modes, a stand alone mode or even a secret mode. I like the idea of secret modes and features for players to find. I can't call it a retro mode since BoP came out after PINBOT. It's more like a "Next Gen" mode - but that name doesn't have the same appeal to it. Anyway, I came up with some ideas on how this small mode would play out and made some initial design notes. It will basically include references to BoP with some sounds, music and a goal. I'll look to develop the design notes further over the coming weeks. This also has me interested in adding a small "Jackbot" mode too.


From testing the game today, I managed to put up a score of over 18 million points. My previous best was just over 5 million. A lot of the points came from maxing out my program upgrades. At present there isn't a whole lot else to do in the game (besides skill shot, hurry up modes, super pops, and eject boosters), so it makes sense that I'm focusing on upgrading the programs while playing. Once I add playable planet modes, the focus of play will shift more to those. But I think I'll drop the points awarded for some aspects around program upgrading as it currently feels too high. I've made a note to look at this later in the week. I'm expecting that point balancing is something that will continue on for the entire project.


The final task for today was syncing up the flashing inserts on the chest matrix that represent the upgrade progress on the 5 programs. From the first day the upgrades were added to the game, the 5 active inserts would flash slightly out of sync due to small gaps in milliseconds when each light show was instructed to start. MPF has a "sync_ms" setting as part of the "show_player" that's designed to help sync up different shows within a mode (or even across modes). The value for "sync_ms" should be 1 full iteration of the show. So in this case, the inserts remain lit for 300ms and then off for 100ms - which makes 400ms. This setting was applied to each show across the 5 programs and now the inserts blink together in sync.



Tuesday 17/11/2020

A small task to start today off - adding flashers to the super skill shot success light show. Actually, there are no other lights currently animating as part of a successful skill shot. I'd like to animate the inserts for this and have made a note to add something. Maybe later this week. For now though, the flashers animate top to bottom. PINBOT has several cases where flashers on the playfield are combined with the topper. It also has some cases where 2 flashers on the playfield are linked too. That means I can't just activate one of these flashers - they are all linked to the same coil. This limits the animation you can perform with them sadly. For example, all four flashers marked here will activate when coil 05-C is pulsed. Also, this is the outside worlds first glimpse of a screen from the service menu!




One issue I keep running into with the flashers is they can lock on. This is due to how the System 11 set up works, where many of the flashers are on the same transistor as a coil. For example, the ramp release coil is on the A side, while the lower flashers are on the C side. There's an A/C relay that toggles between the active side, giving preference to the A side where the important coils are. If both attempt to fire at once, this can cause the flashers to remain locked on. I think this is something that could be fixed in the MPF framework, but is currently beyond me to look at. I encountered the issue again today during the bonus mode where the drop target bank reset coil was being triggered at the same time as one of the flashers during the bonus light show. This needed some tweaking to ensure the coil pulses don't overlap.


During the bonus mode, the group of flashers below the large solar insert activate when awarding the solar pops component of the bonus. They were activating 25% faster than other lights, so I've slowed them down to match all other lights during the bonus mode. It's the sort of thing no one would probably notice except for me.


When the ball is released from the single eject (located to the left of the visor), it had a large time out of 10 seconds configured. This value tells MPF to wait for a period of time for the ball to hit a switch (after ejecting) before it considers the eject action a failure and attempts to kick the ball out again. It is possible during play to hit the ball straight back into the saucer with no playfield switches being triggered. It's not common, but it does happen. This results in the game sitting still until the 10 seconds are up and the saucer attempts to eject again. This value needs to be high enough to allow for cases where a player doesn't activate a target switch straight away, but not too long that the player is kept waiting if they hit the ball straight back in. I decided to lower this timeout to 6 seconds and see how it goes. By my calculation, in the worst case scenario, the player should only be left waiting around 3 seconds (instead of 7) if they shoot the ball straight back in.


Something exciting I started today is a new mode which I think will be the first planet mode. It's called virus core and essentially will turn the 5x5 lamp matrix into a space invaders type mode. Where lit inserts will advance towards the player and they have to hit the lit targets to destroy the infections. I'm going to dive into the python level a bit with this mode too, which I think will be a good exercise in learning how to move some of the YAML complexity when creating a mode into simpler python code. I'm expecting this mode will be my primary focus for the next week or so as it evolves.


I finally published the latest blog post for the PINBOT 2.0 project today. It's been sitting half complete for months, so glad to finally get it out there.


An interesting stat from my code repository today shows there have been 35 commits so far for the month of November. This consists of many tweaks, bug fixes, improvements and documentation changes. In October there were 49 commits and September had 25. So it's looking like my activity on the project is building, which is good to see.



Wednesday 18/11/2020

I've been toying with the idea of having a mystery feature in the game for awhile now. Originally I had planned to have it as one of the 5 upgrade programs the player shoots for on the chest matrix. But I felt it was less important than the other upgrades that now reside there. PINBOT has 3 "10 point" switches spread across the playfield which I'm now considering using as a way to activate mystery. There's one at the lower exit of the pop bumpers, another on the left of the single eject shot and the last one is just below the drop targets. These switches don't have any inserts assigned to them, but I'm thinking I could repurpose them for a mystery feature. For example, hit all 3 to enable mystery at the single eject saucer. For now, I've set up a new mode folder and skeleton config in the project which I'll play with when I want a break from other features. The location of the 3 switches are marked here:




I'm thinking about the possibility of using the lift ramp as something of a soft lock at certain points of the game. There is a target right at the back under the ramp which could have multiple uses. It has 2 inserts assigned and is already used to score the solar hurry up jackpot and energy value hurry up jackpot. I'm considering using it to also lock a ball up (by lowering the ramp). This needs some more thought.


I started putting together a list of animation frames for the chest matrix. Some will be used while others will never make it into a light show file. I think it's a good way to record the animation ideas for future reference. The "WELL DONE" frames are currently used on the high score entry mode. They smoothly scroll from left to right (instead of just flashing up each individual frame).




No time spent today on the new virus core mode as I had hoped. Instead I wanted to try and solve an issue in the service menu. For now you can use one of the buttons on the service panel inside the coin door as "enter" or "select" when navigating the service menu. I want have this ability with the credit button on the front of the cabinet. The problem is though MPF will start a new game when the credit button is pressed. I had a few attempts at trying to override this today, even heading down into the python layer but without any success.


An interesting stat for today is the current uncompressed package size for the game is 61MB. Of that, 58.3MB is music and SFX.



Thursday 19/11/2020

Kicking off Thursday with a bang! I finally ordered my own P-ROC board from Multimorphic!! The one I've been using has been on loan from a mate and has really helped me get this project going. I'm happy with the progress I've made and convinced it's something I'll be working on for some time to come. I also view this project as a lead up to making my own game from scratch, which will be built around the P-ROC platform. So ordering one now makes sense. I'm looking forward to receiving it!


Earlier in the week I noted that scoring on the upgrade programs was a little too high, so I've halved the points. You can think of these upgrades as "supers", where they boost the value on other features of the game. They are intended to help the player boost scoring opportunities in different areas of the game and not be a primary point scoring feature themselves.


Back onto that service menu issue from yesterday, with some extra info about how you use the service menu. PINBOT has 3 buttons inside the coin door "Advance", "Manual/Auto" and "Highscore Reset". You can access the service menu in PINBOT 2.0 pressing the "Advance" button. This same button can also be used to select options from within the service menu. The "Highscore reset" button is used to exit out of the current sub menu or exit the service menu if you're at the root level. The "Manual/Auto" button isn't much use to me as it's a state button that's either pressed in or out. You use the flipper buttons to cycle left and right through the service menu options (thanks to the 2 AUX flipper switches I installed into unused switch matrix slots). Now to get that credit button working in the service menu. It feels far more natural to press the credit button to select than have to reach down to the coin door. There is a problem however (isn't there always?). By default, MPF will see the credit button press as a request to start the game. Under the hood, MPF sends out a boolean event "request_to_start_game". Because this is a boolean event, if any event handler listening for this event returns false, the request will be denied. At the YAML configuration level, there's no way to return false for an event. So the solution is to create a small python script for the Service Menu mode that handles this. I can now use the credit button as select while navigating the service menu. It ended up being a simple issue to solve and a nice little intro to working at the python level in MPF.




The time I spent making the packager script on Monday is already paying off. With lots a small tweaks to things over the last few days, it's really simplified the process of getting a new build ready. I'm annoyed I didn't set aside the time to create it weeks ago.



Friday 20/11/2020

A little bit of bug fixing today. I found the service menu change I added yesterday for the credit button wasn't quite right. I was adding an event handler in the mode_init() function when it should have been in the mode_start() function. This lead to a few unintended side effects. Thankfully it was quite straight forward to fix.


Second bug today came from play testing. When you complete an upgrade, you're awarded points (50,000 for levels 2 to 4 and 125,000 for level 5). This value is then multiplied by an upgrade boost which should only reach 4x but was allowed to reach 5x. Another simple fix.


Not much else to report from today other than playing the game.



Saturday 21/11/2020

I set aside time today to improve the out lane ball save feature. In it's current state, you can enable both left and right "extra ball" out lane inserts by collecting the "lite extra ball" award from the single eject saucer. This would then activate a ball save if the player was to drain via either out lane. It was also designed to only be active on the current ball, meaning if you drained via the center, then it would be lost for the next ball. This feature was updated today to only activate 1 of the out lane extra ball inserts. If you collect "lite extra ball" from the single eject a second time, this can stack and you can once again have both extra ball inserts lit. When the player has only 1 insert lit, the sling shots and pop bumpers will toggle which out lane is lit. The player can also toggle the lit insert between the left and right out lanes using the flipper buttons. The ball save now persists between balls too. So I've taken a little bit away from the player by only activating 1 insert at first. But if the player is good enough they can stack two. In return, I've now given the player the ability to persist the feature between balls which makes it more useful. Having the lit insert toggle based on pop bumpers, sling shots and flippers buttons also makes it more exciting to use.





Sunday 22/11/2020

The drop targets currently serve two purposes. The first is to collect the letters of ENERGY to activate the Energy Value Hurry Up mode. To collect a letter, the player simply needs to complete the drop target bank. The second purpose is to activate planet modes. This has a timer however (similar to the original PINBOT), so the player must drop all 3 targets within 14 seconds to open up the next planet mode. The round insert in front of the drop targets will flash during this timer. It will flash slowly for the first 7 seconds and then fast for the final 7 seconds. Today I added new sound effects for both of these timers to help convey the urgency to the player.




During some play testing in the morning, I found a bug with the out lane ball save updates I implemented yesterday. In a certain scenario it was possible to have both out lane saves enable, but one would fail if activated. This turned out to be a simple condition check I had wrong, so was fixed easily.


@ztdgz dropped by for an afternoon catch up and we put quite a few games into PINBOT 2.0. This was his second session on the game and some more excellent feedback was obtained from the session. Some new ideas were discussed, improvement suggestions made and sadly a few bugs to sort out. The perfect lead into a new week!

  • Like 3
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...