What's new
Pinball info

Register a free account today to become a member! Once signed in, you'll be able to participate on this site by adding your own topics and posts, as well as connect with other members through your own private inbox!

In Progress Mishmash self build - let’s make a pinball machine

I'm adrift with the software side of things, but re. an electro-mechanical game, I suppose a change to dc solenoid power (if necessary), and addition of tie-back diodes would be required.
for sure they’d ben needed if we’re controlling by mosfet or power transistor. Or use a set of relays to switch the AC into the solenoids. I tried that with my EM clock projects, but the small chinese relays soon burnt out their switch contacts - even though they were rated to carry more currant than the coils drew.
 
I’ve had a quick look at the schematics and wiring diagram for Operation Thunder. I’ve soon concluded that the OT playfield is much more challenging than the 8ball champ playfield, so it makes sense to start this project, as originally intended, with the 8ball champ pf.

Why is the OT pf more challenging?
1. it has more solenoids > 16 so takes up more hardware, wiring and would use some of the bits in my spare shift register - so whilst possible, is just more work.
2. Switch matrix is 12x8 so again would take up more shift register space and more coding. again all possible but more work.
3. it has (i think) some piezo electric rollover switches. these need some extra circuitry to drive. i need to look into this more.
4. It has more mechs and some have parts missing.
5. It has more upper pf parts missing/damage than the 8ballC.

So that’s a decision made.

I’ve been progressing on my notes and ideas for how to program up the game. I’ve probably done as much as I can “on paper” now and need to try some of my ideas when i get home.
 
I’ve had a quick look at the schematics and wiring diagram for Operation Thunder. I’ve soon concluded that the OT playfield is much more challenging than the 8ball champ playfield, so it makes sense to start this project, as originally intended, with the 8ball champ pf.

Why is the OT pf more challenging?
1. it has more solenoids > 16 so takes up more hardware, wiring and would use some of the bits in my spare shift register - so whilst possible, is just more work.
2. Switch matrix is 12x8 so again would take up more shift register space and more coding. again all possible but more work.
3. it has (i think) some piezo electric rollover switches. these need some extra circuitry to drive. i need to look into this more.
4. It has more mechs and some have parts missing.
5. It has more upper pf parts missing/damage than the 8ballC.

So that’s a decision made.

I’ve been progressing on my notes and ideas for how to program up the game. I’ve probably done as much as I can “on paper” now and need to try some of my ideas when i get home.
I've cobbled together a whole bunch of classes :)
 
Mounts up quick doesnt it :)
Program size: 6,340 bytes (used 2% of a 253,952 byte maximum) (9.02 secs)
Minimum Memory Usage: 4296 bytes (52% of a 8192 byte maximum)

Ive splurged and bought license for this
https://www.visualmicro.com

Lets you put breakpoints and such in visual studio \o/
EG:
Program Running 'PinSys'
14:18:26.740 System.cpp, line 17 Setup()
system setup
14:18:26.873 [up:04s:113ms perf:0ms] SwitchManager.cpp, line 24 Setup(System* InSys)
Setup(System* InSys)
14:18:26.874 [up:04s:164ms perf:0ms] SwitchManager.cpp, line 36 AddSwitch(char* Ident, SwitchIndex Index) Ident=LFFL Index=0
AddSwitch(char* Ident, SwitchIndex Index):LFFL,0
14:18:26.923 [up:04s:215ms perf:0ms] SwitchManager.cpp, line 36 AddSwitch(char* Ident, SwitchIndex Index) Ident=RFFL Index=1
AddSwitch(char* Ident, SwitchIndex Index):RFFL,1
 
Nice. i’m not visual studio user so for me the basic arduino ide is good enough. but always willing to learn new tricks.

that doesn’t seem to be a crazy price either.
 
Mounts up quick doesnt it :)


Ive splurged and bought license for this
https://www.visualmicro.com

Lets you put breakpoints and such in visual studio \o/
EG:

Memory usage is always going to be the 'rub' here when you think in an object orienatetd way and are programming for embedded. There's alot to understand in C++ memory organisation. Expect to run out of memory and have to rethink things. Plus you may have some options with EEFlash and using program space. constants vs variables, pointers, defines etc
 
Nice. i’m not visual studio user so for me the basic arduino ide is good enough. but always willing to learn new tricks.

that doesn’t seem to be a crazy price either.

Alan I would second what Jim said here and make a switch to using vscode with platformio. Once you get a handle on how things are organised it's by far a better approach, especially when things start to get a bit more complicated with 3rd party libs and includes. No license and a huge community support when things get sketchy.

I'm a C# user by trade so the hardest bit for me is pointer refs in C++ it's usually a case of trying the different * and & syntaxes until it works properly. Non dynamic arrays really irritate me too but then I've been coddled for my whole programming life.
 
^ cheers another option - i looked at it once and it was another learning curve i decided at the time not to tackle.

to be really honest. i like the arduino ide. i’m not a c, c++ or c# programmer. i struggle with all the classes and pointers stuff etc. but i think i’ve learnt enough arduino language to be able to get by.

I was trained as a support programmer. ie spent years looking at the ****tiest code that always went wrong and fixing it. I’m good at grabbing stuff and patching it up and making it work. i’m also pretty good at finding faults and strengthening code so it doesn’t fail in future. my coding ain’t pretty but then again neither am I. I deffo ain’t the best programmer in the world so am happy to get others to show me a better way.

I will publish my code here once i get something going. I will also ask for help when I get stuck.
 
Also, just for info, breakpoints and debuggers are all very well, but you will never find all your bugs or problems from a simulation with key presses for buttons or hardware on a bench. There is nothing like it actually being played in a real pinball machines at real speed with the glass on. Putting in extra log lines is usually the best way for real world testing but that impacts speed aswell on low end processors.
 
the hardest bit for me is pointer refs in C++ it's usually a case of trying the different * and & syntaxes until it works properly.
Pretty much what everyone does 😂😂

I switch between various programming languages all the time and always have to reread my notes on pointers!! Bloody things!!
 
Also, just for info, breakpoints and debuggers are all very well, but you will never find all your bugs or problems from a simulation with key presses for buttons or hardware on a bench. There is nothing like it actually being played in a real pinball machines at real speed with the glass on. Putting in extra log lines is usually the best way for real world testing but that impacts speed aswell on low end processors.
No you wont - but if all you have is a bunch of code that crashes or stops when a thing happens then figuring out why isn't always obvious ?
Also - I don't actually have a playfield lying around to play with.
Neither do I have any real hardware other than the starter kit I grabbed. Sure this lets you connect switches and lamps - but this as you said isn't quite the same. Still need to know the logic is doing what you expect.
And that's all I've done - created a whole bunch of logical classes that would talk to each other and drive groups of <lamps/switches/solenoids>

There is 100% no need to do it how I have - but based on my experience it would quickly be a nightmare to add stuff, diagnose issues etc if you just started putting bespoke functions in for everything thats needed.. Just my opinion of course :)

I think all the vmicro stuff is is injecting logging etc - but you can turn it off again so.
 
The license was only $14 or so not a big deal.
Ive also got an idea of something I wanted to do for my Cosmic Gunfight (much smaller scale than a whole pin so im sure ill get my moneys worth !)
Could probly use the stuff ive knocked together for that too - though probly a bit ott.
I might transpose the logic ive done back into UE and revisit the pin I never got around to doing :)

And yeah - Probably dont need virtuals and a whole other bunch of stuff - theres deffo plenty scope for optimization :)
 
Just been figuring out my diary. ffs. it’s like everything hits me in aug and sept:
8/8/21 - arrive back to uk to a barrage of tasks. my company year end, collect a pinball from the midlands, sort and deliver a pinball locally, make, test and send out 26 pinbsll led displays. send out another clock/lamp i’ve sold. clares birthday 🎉 celebrations, get my elektra ready for pinfest, start and continue the food cooking(curry) for my 60th birthday bash- tons of other jobs to do in prep for that. I’ve been sat today planning out my days and it looks like i might be free on the 20th sept. 😂😂😂😂😂
 
Just been figuring out my diary. ffs. it’s like everything hits me in aug and sept:
8/8/21 - arrive back to uk to a barrage of tasks. my company year end, collect a pinball from the midlands, sort and deliver a pinball locally, make, test and send out 26 pinbsll led displays. send out another clock/lamp i’ve sold. clares birthday 🎉 celebrations, get my elektra ready for pinfest, start and continue the food cooking(curry) for my 60th birthday bash- tons of other jobs to do in prep for that. I’ve been sat today planning out my days and it looks like i might be free on the 20th sept. 😂😂😂😂😂
Welcome to my life!! Just as i think ive got a day free to start playing with toys, The misses comes along and tells me that i have another project to do around the house...
 
I think i’ve lived three lives whilst being on holiday: I’ve mentally written and tested 3 different versions of my pinball operating system. It’s amazing what your mind does when you’ve got absolutely FA to do. Clares off keeping fit and playing tennis, both girls are off with their new mates, occasionally see them, leaving me to sit in the sun and fill my head with pinshiite.
I keep going over my ideas and then either refining it or occasionally I come up with a totally new idea. I can see that once I get the basic hardware installed and wires up, I am going to spend a ton of effort on the software side. Getting a basic o/s going is one thing, but then the next stage, developing games rules, modes, final showdown mode etc is where a ton of effort could go- it could be never ending!

It also got me thinking about the current manufacturers, Stern, JJP, Spooky, they don’t put in much effort to onwardly develop their past titles. Pretty obvious why not. it’s costly and generates no revenue.
wouldn’t it be great if they were to release the source code to the pinball community, so “we” (royal we - not me) could onwardly maintain and enhance. Just look at the fabulous work on RFM by @myPinballs as an example.

If, massive IF, but if I ever became a pinball manufacturer, I would make the operating system and game code all open source with free access to the code, so that others with more time & motivation could enhance and extend the gameplay of any of the production games.
 
It also got me thinking about the current manufacturers, Stern, JJP, Spooky, they don’t put in much effort to onwardly develop their past titles. Pretty obvious why not. it’s costly and generates no revenue.
wouldn’t it be great if they were to release the source code to the pinball community, so “we” (royal we - not me) could onwardly maintain and enhance. Just look at the fabulous work on RFM by @myPinballs as an example.

If, massive IF, but if I ever became a pinball manufacturer, I would make the operating system and game code all open source with free access to the code, so that others with more time & motivation could enhance and extend the gameplay of any of the production games.

I would be down for working on updates to older games from manufacturers if there was some update program so that you could officially release changes. There are some considerations though.

Firstly taking the 'open source your os and game code' comment, 2 things to think about with open source. 1) the type of licence that you give out with it and how you enforce that. 2) are you prepared for some other individual/company to take your code, reuse it and pass it off as their own, sell it or use for a competitive product. If you know the licence you are using then you should know what to expect, but its been shown before in pinball that some did not know what they were agreeing to with the licences they selected.

Secondly, wms and stern have never released game/os code because of the support knightmare it could cause. In reality only skilled people are able to update games correctly and very few issues will ever arise, but the classic example used for years is, some guy updates a game of yours, gives it away to an operator/home user who installs it then sell the game to another owner which is unaware of the software update/change, then there's a bug in it which burns up the games driver board/playfield device etc. The owner then blames you (the manufacturer, not the software guy) and demands you fix it. You don't know anything about it, as the game was updated some 5 years since you stopped making it but you are blamed and it damages your reputation for reliability non the less.

Third, talking about working as a software guy to update games (specifically older games) that have unknown or unchecked history/restorations. There can be a grey area on the quality of the game running the updates, its history and/or if the games are not in great working condition, so you can become a help desk for all sorts of mechanical problems. An example is, 'Since installing YOUR software, my game no longer xxx-insert whatever mechanical issue suits here-xxx works properly'. Older games will have mechanical issues as parts wear out and dont get replaced or fixed properly.
 
On my own stuff, i’m sure some of the popular std licenses cover it, in a nutshell: free for personal use, free to modify as long as still credited and not for commercial gain.

I feel it would be my responsibility to document my code, especially in areas where changes could burn out coils and driver circuits. it still won’t stop some tinkerer ****ing their machine up. i can guarantee it. 😂

I am planning on using a number or arduino libraries that each have their own licensing rules. for example the popular fastLed library for controlling strings of addressable leds.

One thing I will do is carefully check all of the licenses for any libraries I do use.

On the general idea of major manufacturers releasing their source, you are quite right. a real double edged sword.

You made me laugh with the final comment. over the years of my career I/we got blamed for ruining loads of customers hardware or systems : “well it was all working fine until you installed your software…….”. yeah right. it never was us, usually their own IT depts incompetence. 25 years in business and 25 years of paying £10,000’s a year for professional indemnity insurance and not a single claim.
 
Just a quick update: project still ongoing but I’m not doing anything on this now for about a month. Got a lot on (still playing catch-up from the Rhodes Incident), then pinfest and then my 60th birthday celebrations. Also got my drinking buddy cousin Marcus with me until 20th sept, so won’t be fit to do much during his stay. 🍷🍷🍷🍷😂
 
Just a quick update: project still ongoing but I’m not doing anything on this now for about a month. Got a lot on (still playing catch-up from the Rhodes Incident), then pinfest and then my 60th birthday celebrations. Also got my drinking buddy cousin Marcus with me until 20th sept, so won’t be fit to do much during his stay. 🍷🍷🍷🍷😂
The battle of life vs pinball....life wins the battle, but will pinball win the war??!
 
Whilst I have the skills of my Cousin Marcus (he’s staying with me for 2 weeks), we’ve decided to build a wooden cab for this project. First job is to measure an existing cab and draw up some dimensions
9487BA43-6003-45B3-ABFE-37BC7BB844E2.jpeg
Modelled on a classic ss stern or bally cab

The other thing marcus has done is made a playfield rotisserie for me, which will be really handy on this project
50AFB179-9F88-4B2B-8DB6-320FD57772CE.jpeg
 
Can you tell me where i can buy a cousin Marcus please Alan? Looks quite a useful accessory to have :D
 
Looks odd.
Not a criticism, just saying.
I can't even put my finger on why... Think it's cos the sides don't look. Like a factory pin iyswim
 
Back
Top Bottom