So my name is Dick Dick Hamill and I'm presenting today with John Turner. He's going to come in at the end and talk about what's coming up. So as a little intro to this project, I had a comment yesterday on one of my YouTube videos and the comment was like, outrageous man and I'm like you know that really feels good you know you see outrageous man on your comments. Unfortunately, by the time I went to YouTube, the comment had been deleted or edited. So the real, let me switch it up. So the real reaction was, outrageous man, that's a piece of art. How dare you? So it is a piece of art. These machines are pieces of art. That one happened to be Galaxy. And Galaxy is a great machine. And And I enjoy playing it as it was. But what I discovered a couple years ago was I could put this board on it, and I'm not changing any of the original boards in the machine. I'm just plugging this into J5 on your MPU. And by plugging this into J5, I can have an Arduino take over your MPU and then put new rules on the machine. You flip a switch, you're still playing Galaxy as it was in, what was it, 1979? Something like that. So, here's a comment from... Of course, the next thing I did was upvote the comment because that's my only response to that kind of comment, upvote. Here's a response from a user on Reddit called Rack. First pin I ever programmed, which is a surprise to me. It was tough shoehorning, big rule set. Cool to see it updated. So that's as close as I got to, like, you know, an actual comment from somebody back in the day. It turned out to be Robert Quinn, who was, it was his first machine at Stern. So let's talk a little bit about architecture. So as I mentioned, you just plug this into your MPU, and it's going to take over for your machine. So the RPU board, this is what I call it. Oh, by the way, you may have seen years ago when I first did, we were calling it BSOS, which was the Bally-Sern Operating System. The reason I switched to RPU was mostly because it just expanded. So the newer boards, you can either plug into J5 on an old Ballystern board, or if you've got a Williams or an Atari machine, anything with a 6800 processor, you pop out your 6800 processor, put the board in there, and then you can control a Williams machine the same way. I did the libraries so that if you're programming, your library is going to work across any machine. you don't have to relearn the architecture just to do different machines so these boards use no original code there's nothing in here that's stealing anything from let's not get into IP but there's nothing in here that has any IP back to the original machines this is all new so I created a library from scratch based on using oscilloscopes on the MPU figure out the timing of the solenoid something John was just mentioning a minute ago where you have the flyback I learned at the time that you have to turn off your solenoids for Bally-Sterns right when the zero crossing. So I replicated all that stuff in the Arduino using some of the same theories that Bally published in the Theory of Pinball document that they did when they came out with the original solid-state machines. But all new, all new implementation. And as I mentioned, you flip a switch, or in the latest boards, you can just hold the credit reset button when you boot. So on this board, this is a REV3. It's the smallest board, you know, in terms of, like, footprint that's supported by everything right now. But it doesn't do credit button reset. So you have to put a physical switch on this one if you want to switch between old code and new code. But the latest machines, once you implement them, you can just, it's configurable. But you can power it up to new code, hold the credit reset power button while you boot to get to original code. So however you want to configure it, it's going to boot either way. And then that gets you all new scoring systems, whatever scheme you want to put in there. You can do modes. You can do whatever the machine supports plus whatever you can think of. So one of the things I put into the early OS was, you know, you could do dim levels on your lamps just by turning them on and off, you know, pulse width modulating them on the interrupt. And that doesn't work great with LEDs, so some people don't implement it that way, but basically you can imagine that this is like a brand new brain for your machine, so anything you can think of, you can put in there. So here's a picture of, this is maybe the second one I did of the original prototype. This was using an Arduino Nano. This one plugged into J5 of Stars, was the first machine I did. So when I first came out with it, you could only boot to the Arduino, But then quickly with advice from some people on Pinside, Zach and Scott and Quench and all the names that you've seen, everybody kind of dove in and helped me figure out how to make it so that you could dual boot, which is, to me, that's the big difference between this one and other pinball modding projects. So the technology already existed to do like an Arduino controller for your pinball machines, Or you could do a Leasy controller, which was, you know, some of the Leasy controllers use a really interesting, you know, FPGA method of, like, rewriting these machines or emulating the original machines. And that's great. But that's a board swap. So that's like take out your MPU or, in some cases, take out your MPU and your solenoid driver, put in brand new boards. and it's, to me, I wanted a solution that was a little less intrusive because, you know, I keep machines for years, but I do not keep machines forever. And some owners may not want, you know, a machine that's all, that I've changed over to do my stuff. With this board, you pop it out, it's back to the original. Although it's gone a little bit farther with some of my machines that we'll talk about in a second. So here's the, this is what I've been using lately. I call it the Rev-102, And the reason I call it the Rev, I went to three digits, was because this one's a CPU socket as opposed to the original, which was just plug into the diagnostic port. So you can see that this has got a 6800 right on it because I popped this one out of lightning maybe to take this photo. So basically you pop the original CPU out of your machine. you plug it into this board and this board is like a little parasite sitting on your MPU on the back of that board you see it has like a regular 40 pin connector so that just plugs into your CPU slot of your MPU and then it just takes over from there now in addition lately some of the guys a whole crew of people has kind of joined me in developing stuff for this which is awesome and John's going to tell you about Wi-Fi later and displays later. So now we've got the ports capable for doing Wi-Fi and displays right on this board. So you can do some diagnostics. You can do various things with the new technology. So we wanted to make it expandable so we could reach out to other things. And then the one thing I put in almost all machines now, sound is so important, is I've been putting these little wave trigger boards, and that's a little board you can get off of, well, you can get it on Amazon. You can get it in a number of places. They're about $50, $60. It's kind of pricey compared to the rest of the project, believe it or not. But those will do all your digital sounds. It's that little red board in the picture. So you plug in your speakers to that. You have to add speakers. And then you get background music. You get call-outs. You get sound effects. You get anything else you want to add to the machine. So for some of the machines, like Williams especially, if you're talking like a Stellar Wars, which is one of the Williams machines I did, And boy, the sounds on Stellar Wars or Gorgar are just so distinctive and so nice that I like to do both ways. I like to have background music and then have the sounds on top of it. Sounds great. This gives you the opportunity to do that, but it's costly compared to the rest of the project. So here's the MPUs I support right now, plus a couple others. So you get the Bally's, the 1735, the Sterns, MPU 100, 200. Imagine all the machines that are – there's a lot of machines. Alltech handles right off the bat. Alltech works great. Weebly, you have to use the CPU plug-in because Andy does some interesting stuff with his addressing, so it doesn't work on J5, but you can use the Rev-102 for that. And then all the Williams, there was a bug in my System 4 code that I got cleared up a couple days ago. So Williams is cool, 4 through 11C. So that gets you a lot of really interesting titles in there. Although, once you get into the 11s, you know, those are pretty good code-wise anyway. I don't know how much new code you need on top of that. So here's a 35. And then there's your J5 port, the diagnostics port on top. Stern used that for audio plug-ins, but Bally never used it. I guess they had a diagnostics device. I've never seen one. That was how I originally got into this. I was like, I had a board I couldn't fix. and, well, I mean, I could fix it, but I just didn't want to do it the hard way. I wanted to try to do it the easy way. So I plugged an Arduino into that J5 port and I thought, well, I'll just interrogate it and see what lines are doing what and maybe I can figure out what's wrong with this board. And I did. But as I was doing it, I was like, well, if I can interrogate the board, I can just take over the board because you can just hold the chip, the original CPU and say, halt, and then go off and do your own stuff. And it works great. So there's still a lot of areas there that could be exploited that I just kind of, once I got into developing new code, I kind of stepped aside from. In particular, like, one of the things that always goes wrong with those 35 boards is if you've got the scan B sockets, there's going to be shorts between your address lines or your data lines. So, you know, you're just going to replace, like, those sockets there. It's shameful that I even have a picture of those sockets because those are awful sockets. But with the plugging into the diagnostics ports, you could raise an address line or flash an address line and then monitor the other address lines and see if you have a short because the Arduino has decent voltage sensing on the other ports. I haven't written that software yet, but it's right there. So I put a diagnostic hook into the code. You can have a diagnostics mode if somebody wants to go out and exploit the libraries I've already got or write your own libraries. That's an area where it could be really helpful in the future. Now, I don't know how many people are super invested in restoring old boards. Maybe some people in this room, but aside from us, a lot of people are just going to throw an Altec or a Weebly in there and just call it done. Personally, I like to put the old boards in there because I work with a partnership, and if we don't have to spend money on an Altec, we're just going to not spend money on an Altec. So anyway, that's an area that I would like to see improved. if you the other option is that's the u9 of that board that's the purple circle around that you can just plug in a rev 102 so that'll work for any board it doesn't require j5 on there so that's a little bit more you know whatever generic so here's this board rev3 plugged into that diagnostics board and it's a little hard to see in this picture but i mirror the port pins off there. So if you do have a Stern game like Trident is one that I have that has an SB100 sound card that plugs into the J5, you can just plug that into my board. My board just sits in the middle and negotiates between the two. So your old sound card will still work, old code or new code. Here's a Rev-102 plugged into the CPU socket. And again, the benefit I like of the Rev-4 and the REB 102 is that you can do credit button, it's like magic, you know, you can play the game in two different ways, you know, just by holding down the credit reset button, it's cool Here an Altec plugged into J5 Again Altec works either way J5 or CPU socket And then the Weebly is only going to Oh there a Williams Weebly only works with CPU socket. So here's a quick demonstration. In case you haven't seen STARS, this is just a short video to show you the capabilities of the system. Oh, and I don't know if I have audio turned up. Apologies, I need to... I think I need to just transfer audio over to the Cam Link 4K, I imagine. Let's see if that works. I've got audio coming, hopefully. We got stars for our guys. But hitting that amber again. If you're below level three, we'll award you the next level. stars. Imagine digital sounds going on right now. So you can see that I'm flashing lights, which stars didn't do. I'm doing hurry ups on like inlanes, which stars didn't do. I've got a flashing light on the right drop target bank because I've got those targets in order. If I complete them in order, I get an extra bonus. And I did multiple levels of stars. So stars start out unlit, then they'll go dim once you get them to level one, and then full strength and then flashing, I think, for level 3 on this version. So it's just, it makes Stars into a different experience. Still a great game, still play it the old way, but you get digital sound and whatever. For the next one, I do actually have to figure out how to get audio onto here. Oh, you don't have audio in the room? No, we don't know. We don't know how it's going to start. Okay, well, let's come back to the videos then. All right, so I'll keep going for now and remind me to come back to that. Okay, so with my Trident, once I did all that stuff, you know, to reprogram it. By the way, Trident, I'm sure many of you have played it. It is, to me, it's like Starz and even better. It's got, you know, your two spinners and it's got your drop targets, but your drop targets are individually controllable, which is awesome. It's got those memory drops that Stern came up with. And it's got a saucer, and a saucer is a great way to start a mode, if you will. So what I did is I divided the play field into three portions. I said, here's your drop targets, here's your spinners, and here's your stand-ups. The spinners, you qualify your mode by alternating the spinners twice. So you've got to do left, right, left, right. Drop targets, you have to clear a couple times to get up to clear the sharpshooter. And the stand-ups, you have to light them all at once. Once you do that, it qualifies your modes, and then you use the saucer to start a mode. And you can stack. So if I qualify my spinners, qualify my drop targets, then I hit the saucer to start both of those modes at the same time. After I did that, I was like, well, you know what would make it even cooler is if each of those modes was like an add-a-ball. So multiball, single-ball play until you get into the mode, then two balls in your, for each, you know, an extra ball for each mode you go into. So I put in a four-ball trough. I got it from Pinball Life. I put all the switches on the original matrix. I created a little opto board so I could hook my ball trough switches into my matrix as well. And then I added an auto-plunger. To me, auto-plunge obviously is key when you're doing multiball because that keeps the flow of the play going. the way I added all those things, with Trident, I was able to just use the existing slots that were already there. It already had a bunch of switch matrix holes that were just unused, and it had a continuous solenoid line that was unused that I could hook up to the auto plunger. So when I hook up the solenoid for my new trough, and I hooked all this stuff up, I did it exactly the way the original code did it. So you can still play my Trident with the original code, It still works exactly the same way it did. But flip the switch, go into my new thing, and you get multiball Trident on the same platform. We should have talked about audio. I'm sorry. Yeah. Yeah, that just happened. Yeah. Yeah. So I've got... Do you have a video clip you can send me real quick? Sure. Absolutely. Where am I sending it to? Yeah, I'll just read my email address. Oh, no, no. I've got an SD card. So this has got the presentation in three formats. Hopefully one of them will get you there. So here's my Trident play field. And this is a mod that... I'm not showing this because I think a lot of people would follow down this path, but it shows you what can be done. And if you're careful about it, this mod is going to give you new capabilities on the same machine that you had but it still allows you to play as you could before. So I'll come back to that. I've got some pictures of that I can show you, but I can come back to. So the other expansion that we've got on the RPU board, this is for Rev4 and up, is we've got three hardware serial ports exposed. So if you have other peripherals that you want to hook into a serial port, there's three different ones. We use one of those for the wave trigger. So if you're going to use digital sounds using a wave trigger board, one of those serial ports is going to be used for that. We use a second serial port for Wi-Fi. Third serial port is wide open for whatever peripherals you want to do. People have talked about doing a topper that's serial controlled, or there's a person who has an apron display on their Meteor that just cycles through showing the new rules as the person's playing. The apron display is not currently controlled by the code, but it could be. The other port that we've got on there is called I2C, and that's a bus. So you can put as many I2C devices on there as you want, giving you endless capabilities there. And John's going to tell you more about the Wi-Fi port later. So to get this board, if you are the type of person who wants to DIY, build your own, whatever, you can basically do this for about $25. So what $25 is, is a printed circuit board. If you do these in bulk or any kind of quantity, or you can kind of get with somebody who's doing these in bulk or any kind of quantity, these are less than a buck apiece. And this is just a printed circuit board from a company called JLCPCB. All the schematics and the Gerber files, which Gerber files you need to manufacture circuit boards, are on my website, which is called pinballrefresh.com. No punctuation there. So if you build from nothing, you know, just with soldering iron and wires, which I've done several times, I don't recommend it. Super cheap. The biggest expense is going to be an Arduino, which is $16. bucks. Then if you want to talk about putting on digital sounds, then you're talking about a $60 wave trigger and a SD card for that for, I don't know, 10 bucks. The whole thing together, less than a hundred bucks, throw some speakers on there, which, you know, you can get cheap speakers off of Amazon. You can get a sound bar from Walmart. You can get speakers at Goodwill or sometimes a great deal. So you can do this project very cheaply if you want to. the other options are buy a kit so since I started this project I've tried to make it very clear from the beginning that I was not in a business here I was not trying to create a business out of this what I was doing was trying to use my machines in an interesting way and share that with the world so if anybody else wanted to use the machines too and people started jumping on very soon after that people started saying where can I buy this I don't want to be in the business of building my own stuff I just want to plug it in. That's not my thing. I've been out of manufacturing for 30 years now, and I don't intend to get back into manufacturing. It was not my favorite. But a couple other people did. So on Pinside, there's a couple of stores, one run by a guy named Roy G. Bev, and another run by a person named Troxel, Troxel Repair. And what they do is they produce kits or they produce fully plug-and-play things, and those will generally cost between $100 and $250 depending on what options you get. So it's still not incredibly expensive. Okay, so if we're going back to video, we are on... Yeah, seven. Let's go to seven. So here's a demonstration of my multiball trident. it doesn't look like that so Troxel Repair and ROYGBEV are ways that you can just if you just want to buy it and you don't want to be in the business of trying to create your own then you can look those up this is an add-on to your machine so it's not going to be if you buy from somebody else it's not going to be significantly cheaper than replacing a board but you don't have to replace a board and that has its own value in some ways so I'm going to pause there for a second while we figure out the oh we yeah let's try it alright with that target and the saucer not that bad alright so I've got two modes qualified There's my third qualified. If I get in the saucer now, I will start those three modes all at the same time. Woo, I got a mega tech. That's all three modes at the same time. So there's your auto plunger and your four ball multiball. Lots of points. Lots of points. I need to make sure I've got a sharp shooter here. That's a hard one to get. And it might be counterintuitive to think that, you know, a flat play field machine that you've always played a single ball would work as a multiball machine. It really does. You'd have to play it in person to maybe buy into that, but I encourage you to if you want because I think it's a great way to play that. Can we return to this laptop? Nope, okay. Let's just keep going to slide eight then. So I've got cues in it. Can I hit space bar? Okay. All right, so here's my Trident mods real quick. I've already talked about them, but you see the ball trough on the bottom? That's from Pinball Life. That was a pretty easy install. I just had to rotate the flipper out of the way. It's got another kit from Pinball Life, again, for the, what do you call that? Yeah, there's the auto plunger, and then there's the, they make a kit that does the top stuff as well, on top of the play field. So my rules when I extend a machine is I like to just slip stuff in, as I mentioned. I like it to be all in the same, you know, system that it was before so that you can still run it the old way So here the build your own notes is that it the stuff I running now is running on an Arduino Mega Pro If you want if you crazy or retired like I said Can I hit a button? Okay, it's coming. Animations. So here's my Rev 100 prototype. That took a while. It works, but don't do it. It's bad. If you order your own PCBs, then it's super easy to just populate them. It's a short list of components. That's all, and you can find it on Pinball Refresh. We are making a wiki at Pinball Index. Again, no punctuation. One of the guys set up a wiki so we can list out all the parts, and that has parts lists that are clickable that you can go and get all your parts. This is a Rev 102 board. I did all my components for isolating the CPU on this one as surface mount, so I could just have that populated overseas. I didn't have to do all the hand placement of the through-hole parts. There's a through-hole version as well. If you prefer that, I know a lot of people do. I just like ordering it and getting it, so all my resistors and surface mount parts are already on there. If you want to buy a kit, search for ROYGBEV or Troxel Repair. I don't think Troxel has the Rev 102 yet, but here's ROYGBEV's 102 kit. It comes with all this stuff, and I think this is 150, 180, I don't remember. It's, you know, it's reasonable. It's a couple hundred bucks. And I've heard that ROYGBEV really supports this stuff well, and he gives you all the parts he things that you need to like, you know, really mount it and get it in there right. So that's nice. I do less of that. So here's this, here's the kit. You can find it on Pinside. I think I skipped something, but whatever. So here's a set of speakers that I got off of Amazon the other day. They're only 33 bucks, not a tremendous amount of bass, but not terrible for 33 bucks. So what I do is I mount the subwoofer in the cabinet and then I'll throw the speakers on top. Sometimes behind the back glass if the back glass is not too thick, but you'll lose a lot of trouble that way. Here's the REV3 board. I still support this in the code because some people prefer the fact that it is so small and so easy to build. You can build one of these in an hour just soldering the components. It just uses part of the Arduino, which is why it doesn't have support for some of the advanced features, and it doesn't have all the ports blown out like the other boards. So if you want to do a whole lot of mods, I don't recommend the Rev3. But if you're just going against an existing code base or you're just trying to get your feet wet in this system, you can do the Rev3 for pretty cheap, and a couple people sell kits on that. So here, this is a Gorgar machine that I just installed on the other day. So this is a standard System 6. you pop out the CPU that was already in there. That's the, in the System 6, that's the 6808. This board here is not the one that I've been talking about. This is the Rev 101. The reason why I switched from 101 to 102 is 101, you had to do a physical jumper to tell if it was a 6800 or a 6802. And then I got a little bit smarter and I said, well, I can make that automatic. So there's no jumper on the 102. to, it just detects the CPU and operates it with it. Fine. So you just plug that in, turn it on, and it's ready to go. I've got a machine called Example Machine up there that will build for Williams, Bally, Stern, Atari. And Example Machine knows how to do all the, you know, the standard ball handling stuff. You know, start a new ball, see that the ball's in the trough, start again, that kind of stuff. Fortunately with these companies, they had standardized, you know, switches and stuff like that for most of these machines. So you can get away with having, you know, kind of a standardized system. This is a, I don't know, Meteor maybe with an Altec with an old Rev2 board plugged in. But you see that the stern cables plug right into that board. And then with a board, if you want a physical switch to switch between code bases, there's often a grate where you can just mount a physical It was hard to see that switch there, but... Where are we on time? We've been back and forth on this, so... Oh, okay. So I just want to go over quickly. If you wanted to create your own code, it's not as daunting as it might seem because there's already a framework and a library of calls available that I've developed over the past few years. Arduino basically has a setup function and a loop function. Super easy to use. Setup, you're just going to do all of your, you know, stuff where it initializes the MPU. That's one call. And then the loop function is where you're going to do all your game logic. And then there's an interrupt service routine that I wrote that does all the hardware stuff. So everything dealing with the lamps, the solenoids, the switches, all that stuff, the sounds, is already all done. And that lives in an ISR. And that ISR works as I use the oscilloscope on the original boards. I made my interrupt service routine work exactly the way theirs did. in terms of the timing of signals and stuff like that. So it has... Any pinball machine has the ability to catch fire. Let's just be honest about that. But my machines, machines running my code have no more or less ability to catch fire than any other pinball machine. Yeah, I mean, you know. So if you want to be super careful as you're developing your code, pull the play field fuse. You know, just don't be crazy. But there haven't been that many whatevers. You know, whatever. Incidents are always going to happen. So that ISR is going to do all that talk for you. On Williams machines, you know, I think Williams machines get a lot of guff for that big 40-pin connector that was terrible. But, man, they had the blanking signal, and the blanking signal saved a lot of people's solenoid signals. So all you need to mess with when you're developing a machine is that center part. That's the loop. That's the game loop. That's where you're doing your stuff. And that has, I created a variable that's machine state. It's going to either go to one of four places, self-test and track mode, diagnostics, which we talked about, and gameplay mode. And then you're basically just going to go into the gameplay mode and you're going to work with init gameplay, init new ball, manage game mode. So, you know, you can just imagine from how these are named what they do. So you're just going in there and you're putting in your own code. At this point, there's so many examples. There's got to be at least a half dozen or more people who have developed code for these. So there's a lot of examples out. Open source on GitHub. GitHub is a place where you can share code and everything that I've done is free and open source with a GPL license, which means that anybody here is free to download, use it, compile it, modify it. Give me credit, don't give me credit. I don't care about any of it. It's all there for you to use and do what you want with. So in my game mode, I update timers, execute game logic, change the state to manage displays. So that's how I approach a machine. When I was doing Gorgar the other day, I'll show you in a second. Oh, here's some basic instructions. If you get the code from GitHub, there's a link, pinball refresh, download the ZEP, unpack it, put it in a folder with the appropriate name, and then update your RPU config. Your RPU config tells it what kind of machine you're running on. So here's GitHub. The download button is that green code button. Here's my folder for, it comes in as example machine. I turned that into Demon23 because I'm doing Gorgar. So one thing I've been doing lately is, when I first started out, I was naming things like, you know, Stars 2020. And then I realized, you know, that's kind of disingenuous. This isn't Stars. This is my game code running on a Starz machine. So I've been renaming stuff to unique names to not tread on that, those original names. And then here's what Arduino looks like. This happens to be the RPU config file. And you just go in and you tell it what hardware rev you're running on, what architecture it is, whether or not it's a 6800 CPU, although the new boards will detect that for you so you don't even need to do that. And then it's basically a matter of using your manual or just your eyeballs, figuring out which lamps are in which indices, and then going in and making your files match that. So I created, you know, defines from all my lamps. Then here's all my switches, defines from all my switches. Same thing with solenoids. Sometimes you have to dive into deep schematics to find what you're looking for. But it's all pretty, once you get used to it, it's self-explanatory. Did I lose? I'm sorry. It was just the ear. Okay. So here's some more demonstrations. This is the other video I wanted to show you. This is various people, not just me, and some of my highlights from what I've seen other people do. Just imagine the correct colors. Flashboard and game code. Deep blue sea. And here's 110 seconds of deep blue sea. This is just jackpot hunting. Saucer's a jackpot. Change. This is like flapping bird wings. Waterfall sound. Little knife sounds, sword sounds, and stuff like that. First ball on. Give the second a charge. Oh, my. The defense is out. Oh, my. All right, look. Now, chase that thing. Oh, you're chasing. The center real should be telling you where to go. Get on it. Just chase the thing. All right. So, you can hold the right flipper. And it'll swing. Oh, my. What's the next one? This is one of my favorite rewrites. Watching so many people in tournaments just get the ball in the left flipper and go to the spinner. This code version makes you use every part of the play field if you want to score points. Including that weird lane on the left-hand side. You hear the call outs and the digital sounds and the light flashing. My nephew did this attract mode. All right, this is waiting for plunge mode, I should say. Oh, so this is the user, D-Panel. I don't remember his name, but he took another programmer's version of Flash Gordon 2021 and then added on video and multiball onto it so you could do your video clips and multiball, etc. Meteor is one of my favorite rewrites. This is incoming. We've targeted the media. Shoot only the lit shots to avoid fragmentation. So I'm in Orpheus mode. So that's the basics of RPU. we'll take questions at the end but John's gonna talk about what's upcoming and no all right cool so John Turner I got started actually by buying a pinball machine that already had Dix code running on it I actually researched and I wanted to implement RPU, and I was looking for a Ballystern machine that I could do it on. And I happened to find a machine actually out there that already had it on it, and it got me jump-started. And so just, you know, it's really easy to do. Everything that Dick talked about in terms of timing and the interrupts and things like that, you don't have to do it. Dick did all the hard work for you. Now you just got to learn a little bit of coding, which is a fun project. And what better to learn coding on than a pinball machine? So if you like pinball and you want to get into learning how to code, this is an awesome way to do it. It's just a lot of fun, and if you have a passion for it, which is sort of where I had it. So I had an initial idea, let's go to the next slide, which was, I actually was, and how I found it is I wanted, I have an old machine, it's a strange science, interestingly enough we haven't implemented RPU on that yet, but I wanted to send my scores up to Twitter. I just wanted to, hey, I played a game. Here's my high score. Wouldn't that be fun? Well, anyway, so once I found RPU and started working with Dick on it and implemented it a little bit, I thought, hey, this would be a relatively easy thing to actually add Wi-Fi to. So, again, once you get beyond sort of the game, you have the game, adding components to the RPU board and add code into it, It was relatively easy, easy to write a library. So what I did is I wrote something called OPINS, or Open Pinball Score Server, an idea of basically how do we take these games and send the scores up there. So it's always fun just to know. I like to see how many games I've played and what the scores are and things like that. A lot of fun to be able to just go ahead and do that. And the big thing for us in this was we wanted to minimize the load on the RPU because one of the big things is that the Arduino has to service obviously very fast, right? You don't want any delays on playing the game. So this wanted to be very non-intrusive. So this was a daughter board. So the way I implemented this, next slide, was using an ESP32 module. So this is a relatively easy chip to program. It's got Arduino support, so it was perfect for it. And I chose to implement it by serial. I could have done I squared C, which is maybe a little more reliable, but serial was just an easy way for us to do this. It makes it really easy to program. If people want to extend this and things like that, it's relatively easy to do. But, again, it's Arduino code-based. It's got a separate library, easy to enable. It's not required. So you can do all of you just saw without having that board on there, or if we want to add this in, you just add it on. So as far as the module goes, relatively pretty easy to do. I have two library calls, audit update, game update, and there's actually one that's just game over. So very simple calls that you put within the code to enable this. And this is all customizable per machine. So each machine has different, you know, achievements and scores and things like that. Next slide. So what this does is it actually sends it up to the portal. So this is a RESTful API using Python, something called FastAPI. Really pretty easy. None of this should be anything that you have to program. The idea was basically that the portal would just accept updates from the game. So as far as adding special things to it, you would just program your game, add your achievements and things like that, and it would just send it up to the Opens portal. Opens was supposed to be just generic, easy to use, and again, nothing that required you to customize, because the last thing you wanted to have to do was then learn how to program on the web. And trust me, I had to learn all this. It was interesting to do. But you can see, really, it's a modernized web app. I've actually got it Dockerized. Don't even ask. But it's relatively easy to integrate. Because it's using API, you could take a dot matrix display, you could add anything you wanted, and you could actually plug into that API and then do a display. So if you wanted to do like a tournament at your house, you wanted to do a tournament someplace, you could have all these machines send that data back through the API and then update. Really relatively easy as far as extending is concerned. Right now, it's very sort of focused on the owner versus the player. Dick and I have talked about some changes and how maybe we think about this in terms of templating it or making it easier for folks to be just a player. So if you want to come to my house and register on Opens, you could play the game and see your score. Obviously, as this thing expands, if it expands, if people are interested, then that's something we'll probably add on. But yeah, it's relatively easy to do. And you can see, you know, I got all the game audit machines, so all the audits, the coins, and things like that, replays are all in there. It's a lot of fun to do. Next slide. Some features for this, again, so talked about, you know, templated setup per RPU machine. So basically go in and say, hey, I've got, you know, Dick's version of Trident with the multiball. So, all right, we're just going to choose that, drop down and say, all right, that's the machine that I have. and be able to have it just automatically pick up all the associated achievements and things like that. Make it probably a little more leaderboard-focused. QR codes. So I've got a couple of... Did I bring them up? They're somewhere. Oh, there they are right here. So I've got a couple different components. So this is a QR code reader that's connected by I2C. This is something that you can really easily implement into this and have a QR code and just put your QR code like some of the other machines out there and boom, just automatically identify yourself into the system, right? So a way to say, hey, this is who the player is. So that's some of the things we're thinking about doing, pushing machine settings to the RPU, so being able to go in and let's say you want to change the bonus values, things like that from the web, make those changes and just push them right down to the machine. So relatively easy. Today, it's unidirectional. the machine sends changes up to the portal, but down the road, it's really easy to implement the reverse. So that was the Wi-Fi module. The second thing, this is somebody who had an idea, and I'm trying to remember, Dick, who had the idea. I don't know. Somebody said, hey, let's add a display, right? And it wasn't like we're going to add a giant DMD. This was just like, hey, maybe we want to have something on the board itself. And this is really to sort of replace the serial connection. So a lot of the diagnostics and, you know, whenever you're building a new game, you're like, hey, what happened? Did this, am I running out of battery? I don't know. Every now and then it seems to go. Or maybe it's the cable. I'll hold it one direction. All right. All right, there we go. Just clip it and stop walking around a bit. So a lot of times when you're doing programming, you need to sort of know what's going on. This makes it really easy. You don't have to have your connection, your serial connection. and it's just great for diagnostic messages. I'm looking at doing another version of this right now. Again, this is plugged in by the I2C port. This is a rotary encoder and it allows it to basically set up your menu. So instead of having to go and use the scores and all the diagnostics modes and put it in troubleshooting, you can just use this, change your values through a menu-based driven system, pretty easy to do. So that's some of the cool things that I think that are out there in terms of being able to extend. So again, Dick did all the hard work and I can't, you know, all of the hard work and timing and things like that were all done. Now, it's really just taking and being able to extend the libraries out which is relatively easy especially if I can do it, anybody else can do it. Cool. So, think of the diagnostics by the way as like you said, Leon's ROMs or you call it Leon's ROMs. If you're familiar with Leon's ROMs, to fix your boards up. Diagnostics would work like that. So here's a list of some of the machines. There's more than this, but this is what we have on the wiki right now. One of the hardest things to keep up to date is the documentation, so apologies for that. But we document when we have spare time, which is never. So these machines are at least what's out there. As I mentioned earlier, if you get these boards made, like, from China, they're less than a buck apiece. And when I get boards made, I just will order, you know, like 50 of them. So these are Rev3s. If anybody wants to grab one, feel free. You'll have to buy the other parts, but I guess, you know. And I got some Rev4s and 102s, actually, too. Oh, perfect. So that's a jump start, if anybody wants to jump start into this project. Any questions? Yeah. Hello. I can repeat the question, so just tell me what it is. Oh, go ahead. Maybe it's just me. That's better. I have a bunch of older Williams. So your System 4 to System 7 in particular, if you plug that into a machine that has bad game ROMs, what happens? So you can do a number of things. You actually don't need a 5101, a CMOS RAM, a 6810, or any of your 2716, 2730. You don't need any other chips in there. It'll take over and do all that stuff for you if you don't want to run old code. or you can plug in and you can actually, what I do is like to see if I've got a board with unknown code on it, I'll just plug in, turn it on, do a ROM dump and then check that versus what I think it is and I can do checksums and you can actually read those ROMs, see if they're still working. You can go out and test your 5101, see if that's working. So you can use this. It's basically just going to, you imagine that the board, you know, just has all these components sitting on the bus. It's just going to plug into the bus and be able to talk to all those things. So you can do whatever you want with it. Any other questions? Are the things on GitHub like a whole, the old rule set that you can then tweak? Is that intellectual property? I don't know the answer to that. I don't do anything with old rules. So if you want to develop your stuff from scratch, it's up to you to develop the old rules first and then put the new rules on top. Thank you for this presentation, by the way. I have a lot of terrible ideas from it. So thank you very much. The thought process that I had was, do you see any limitation perhaps on the ability to have the old processor and the Arduino board potentially cooperate? For example, playing the old rules, but allowing for the ability to connect to basically a maintenance portal via Wi-Fi to perhaps do something along the lines of undo a drain rather than having to deal with compensation balls all the time. Yeah, I mean, that's a tough topic with the Arduino because it is 32 times faster than the original CPU, and that's not quite fast enough to do everything you're saying there. So if you had an ESP like John's done with the Wi-Fi, unfortunately those don't sit on the bus as easily as the Arduino, so I haven't been able to make that work. So the answer is no, conditionally. You can go out and tweak stuff on the 5101 if you halt the original CPU and you can go out and check high scores, change what ball you're on, that kind of stuff. Kind of? Not really. So I would say no. Sorry. One more? One more? Any other? All right, well, thanks. Thanks, everybody, for watching. Thank you. Thank you. you