tag:blogger.com,1999:blog-10947159453649291062024-03-05T19:11:25.154+01:00Poor Man's Pinball!A building blog for my homemade BioShock pinball machine!rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.comBlogger296125tag:blogger.com,1999:blog-1094715945364929106.post-3389188649893080282022-12-27T10:36:00.001+01:002022-12-27T10:36:10.998+01:00Empty tank and all that...<p> In case you're seeing this as a subscriber to the blog, sorry - no new update to post, really. </p><p><br /></p><p>Another year has passed. </p><p>Almost two, in fact. </p><p><br /></p><p>The machine is pretty much alive and we've even played a few games, but other than a new 24V for lights and a few basic game rules and programming, not a lot has happened since COVID-19. I've focused a lot more on my family these days, as having a pandemic in such close proximity kind of split my outlook on life in pre / post-COVID parts. </p><p>And now we're moving to a new apartment, or house - both are being negotiated at the moment. </p><p>My BioShock pinball will naturally come with us. ;) </p><p><br /></p>rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com1tag:blogger.com,1999:blog-1094715945364929106.post-56139710515023786932021-04-04T01:50:00.008+02:002022-12-27T10:29:03.484+01:00Debugging<p> Long story short, found and squashed a few bugs.</p><p>And ever since I removed a big chunk of volatile array data that I kept to reserve space for gameplay uploads have mostly verified ok, so that's great. </p><p>Just for the lulz (and it's usefulness when writing code from the bed) I created a DMD preview of the machine's internal DMD frame buffer on the serial terminal. It... looks a bit weird. The terminal I'm using to debug doesn't support extended ASCII or 256 colors, so I've had to be a bit creative. <br /><br />But still pretty dope. :) <br />I've also hot keyed flippers and start button, so I can navigate menus (and in theory) play a game as well. Of course, all previous maintenance commands like triggering solenoids, switches and lights etc still work as well. </p><p><br /></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDooue-zu9BGDmU9KkWQ5c28JLtG4zXvkJAbGa3eTJfIW4WNY8CcQ5DXUUEC8DAUcowNVEDkxYy4aMkMmN8iDEiJy5txS8sSL7O1PPl7JeoZr0XUD4KIuyO8BZDrgPXYtYXFiJ8Vtxqq8/s4640/IMG_20210404_013016.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDooue-zu9BGDmU9KkWQ5c28JLtG4zXvkJAbGa3eTJfIW4WNY8CcQ5DXUUEC8DAUcowNVEDkxYy4aMkMmN8iDEiJy5txS8sSL7O1PPl7JeoZr0XUD4KIuyO8BZDrgPXYtYXFiJ8Vtxqq8/w640-h360/IMG_20210404_013016.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">1) "Four-color" version. Colors turned out weird when photographing this one. <br />The red shade is the same as the one below. The spelling error has since been corrected. ;)<br /><br /><br /></td></tr></tbody></table><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2QrFEQNVB7E7ZCpfKRRmR-etUN1viro6qnLRvrQYhg4pUtIFrWJk5r8_Q-hofbZkmqA6gAfMJQjNsBtfvbX6p9XBpUtp05E0rRnqiH74vj_6vCOYYfnGw39svnwZj9OCjCqSMiAltpbw/s4640/IMG_20210404_001641_01.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh2QrFEQNVB7E7ZCpfKRRmR-etUN1viro6qnLRvrQYhg4pUtIFrWJk5r8_Q-hofbZkmqA6gAfMJQjNsBtfvbX6p9XBpUtp05E0rRnqiH74vj_6vCOYYfnGw39svnwZj9OCjCqSMiAltpbw/w640-h360/IMG_20210404_001641_01.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">2) Two variants; Top - two brightness values. Bottom - max or nothing. <br />Having white/red was confusing so I went with the first four-color version in the end.</td></tr></tbody></table><br /><div>I won't put more effort into this, but this can be super handy to avoid having to be connected to the machine to test if game logic and various functions are working correctly. The big upside is that I can use actual code and not "log commands" that output something arbitrary to the terminal. </div>rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com1tag:blogger.com,1999:blog-1094715945364929106.post-86012807664406574922021-03-30T14:04:00.007+02:002021-03-30T14:45:43.646+02:00Should have learned by now...<p> ...to not say that things are going well. </p><p>So I've been having some weird issues lately, problems that I've sometimes been unable to reproduce and they are seemingly random in behavior. I've mistakenly assumed these have been part of the conversion to using "several threads" described earlier.</p><p>But this time I noticed that some weird graphical bugs creeped in and since that code "cannot" do anything wrong (it basically sets a number on or off in a fixed array), I figured it must be a disk/flash issue since the letters are hardcoded . </p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixdGp6w49lPRGRwGgDn2t9EYRG8s9J322oryS1L1jw6BE7TVkE6hz5N4uNDESJG-WKBldkkFlI2dzIkGCc4DBB10kTfJ1vLF9vwTYi3ZeHsddEfJZADyE2yrcQ_hkBiS6DXwfG_neQxkg/s4640/IMG_20210330_130831.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEixdGp6w49lPRGRwGgDn2t9EYRG8s9J322oryS1L1jw6BE7TVkE6hz5N4uNDESJG-WKBldkkFlI2dzIkGCc4DBB10kTfJ1vLF9vwTYi3ZeHsddEfJZADyE2yrcQ_hkBiS6DXwfG_neQxkg/w640-h360/IMG_20210330_130831.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">1) The M is consistently erroneous despite working fine the upload before etc. </td></tr></tbody></table><p><br /></p><p>Then I realized, I hadn't enabled "Verify flash after upload" .. and, yeah. This. </p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaeWCFaK4I1YS0Tj7TJ-J7Q36TQ2hlLg437uUfryUUoKdVj7yZG-RjDwgmgJ-vHMcJAqsOUUESPpbyLbCdQn2-Db8DUFtsGYSXFT7PEOuuYOEKPTX7L10kJ7Thv0tXHgQspIvdohyL5To/s817/Sk%25C3%25A4rmbild+%252825%2529.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="330" data-original-width="817" height="258" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjaeWCFaK4I1YS0Tj7TJ-J7Q36TQ2hlLg437uUfryUUoKdVj7yZG-RjDwgmgJ-vHMcJAqsOUUESPpbyLbCdQn2-Db8DUFtsGYSXFT7PEOuuYOEKPTX7L10kJ7Thv0tXHgQspIvdohyL5To/w640-h258/Sk%25C3%25A4rmbild+%252825%2529.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">2) Verification always fails at the same adress on the installed Chipkit. </td></tr></tbody></table><br /><p>Note that the flash is completed, so the machine boots and is playable. But it appears that whatever ends up in that space (this time it was the letter 'M') gets corrupted and could cause issues.</p><p>I've been uploading to the Chipkit a lot over the years, so it's not unlikely that the flash has finally failed. I also tested to do an upload and verify against a spare Chipkit MAX32 that I have, and that verified just fine.<br /><br />I might try to keep uploading and trouble shoot on the broken (?) Chipkit until it completely breaks rather than swapping it now, since I'm working on isolated code segments at the moment. <br /><br /></p><p>Update: </p><p>The verification <i>sometimes </i>do succeed. Obviously I won't leave things to chance later on, but for development of game scenes and thing that are "fixed" in scope - I can manage. </p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLGwSvKTigFdD_BhwfSe3ObfjehzL6GNOndZ1XlbDNUwWSZsejkWMkC6rbSNKoncu2Xwo77Fk4XlSQwguFG0DED9W2_HuOsyQUIlvnqQgpj-qfwD6nNyUBUNzB5It8wRDE7GEopwnWMYs/s953/Sk%25C3%25A4rmbild+%252827%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="331" data-original-width="953" height="222" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgLGwSvKTigFdD_BhwfSe3ObfjehzL6GNOndZ1XlbDNUwWSZsejkWMkC6rbSNKoncu2Xwo77Fk4XlSQwguFG0DED9W2_HuOsyQUIlvnqQgpj-qfwD6nNyUBUNzB5It8wRDE7GEopwnWMYs/w640-h222/Sk%25C3%25A4rmbild+%252827%2529.png" width="640" /></a></div><br /><p><br /></p>rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com0tag:blogger.com,1999:blog-1094715945364929106.post-10438918655731886042021-03-29T22:59:00.011+02:002021-03-29T23:18:29.055+02:00Setting myself up for success!<p></p><div class="separator" style="clear: both; text-align: left;">Still tweaking and improving on the general flow and function on the machine. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">I found out that I could have one more interrupt "loop" attached beside the one I've been using for, well, mostly everything - so I've migrated to using two separate loops for display and switches etc. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">Doing solenoid and switch updates at 1400+ Hz turned out to be a bit overkill, so by separating screen refresh from that loop I could increase frame rate while still keeping a solid 200 Hz refresh rate on solenoids and switches. This is more than enough to dim/fade lights and from what I can tell, I haven't been able to *not* register a switch hit. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">The downside is that code is somewhat more complex (servos in particular has proven a bit challenging, since I obviously struck gold with my magic numbers the first time...) but I'm getting there. Getting all time & counter values updated took a while too, but now I got TIME_1MS variables to use that are exact and not "40 loops", which can be whatever... So it's all good. </div><div class="separator" style="clear: both; text-align: left;"><br />Basic gameloop as in start game, play game, end game, award match or highscore etc is in place. Not "final" but in place. And that's quite a relief - and this also means that for the first time in YEARS I've actually progressed further than I've ever been. *optimistic fanfare* <br /><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNJPnBFkn_4dEJVyVC2X5zu6aHEkiQd_Co9Ttzth3VtFXUonQyDQMLG-4WtSs0Mvb8-nFlj_39_eR_Kd0tHg8kiE-t494g2GashoG-I2-N97VvdxXY48B95ZQCC79Bk-5aD6gTsMxm9F4/s4640/IMG_20210329_124627.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjNJPnBFkn_4dEJVyVC2X5zu6aHEkiQd_Co9Ttzth3VtFXUonQyDQMLG-4WtSs0Mvb8-nFlj_39_eR_Kd0tHg8kiE-t494g2GashoG-I2-N97VvdxXY48B95ZQCC79Bk-5aD6gTsMxm9F4/w640-h360/IMG_20210329_124627.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">1) Highscore is in place, both reading and writing to EEPROM - and of course, earning them in-game.<br />The eagle eyed might notice a slight ghosting. This is due to insufficient wait time during display-enable/disable cycle, but I'll get that fixed soon enough. I might even revisit the DMD rendering routine eventually to see if it's the most optimal version. I'm not terribly sure the timing is 100% when reading the documentation for the display, but it can't be far off either. </td></tr></tbody></table><p><br /></p><p></p><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWG3w6b9nqHJql240bS8YdQTDLwKV9XUUVorvL1ON6t5cNQdC8Nj1CjNvSWLV2kKxSw8VuUAl8eG0KGJTYvFz4M2HUth3dBEFM8mqz9an3AXQ1zBIVffc9q0ognOq0Q5xg1ghBX56YOrY/s4640/IMG_20210329_122413.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiWG3w6b9nqHJql240bS8YdQTDLwKV9XUUVorvL1ON6t5cNQdC8Nj1CjNvSWLV2kKxSw8VuUAl8eG0KGJTYvFz4M2HUth3dBEFM8mqz9an3AXQ1zBIVffc9q0ognOq0Q5xg1ghBX56YOrY/w640-h360/IMG_20210329_122413.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">2) Various stats are being recorded and available to view in the audit menu. Beyond being interesting I plan to use the data to decide if a feature is too easy or too hard, balls drain to fast etc. </td></tr></tbody></table><br /> <p></p><p>Luckily the audit stats are getting reset eventually, since ball times aren't exacty... spectacular... during testing... :) </p><div>I've also added a lot of settings that can be tweaked, including ball save time, lamp brightness, coil power, hold start to launch ball,number of hits required for this and that. Each setting comes with a type of setting that is rendered differently such as slider ("volume bar"), cycle values, on/off, yes/no and so on. I've also added the possibility to disable certain features of the game, for instance - if the drill-arm breaks it can be disabled so the game won't try to run it etc. I'm trying to plan ahead and add as many settings I can (and since it's simple to do - why not) that allows for greater flexibility when designing the game. It would be great if some years down the road the machine won't be completely inoperable in case of mechanical failure of some part. Most professionally constructed machines compensate for broken switches and machinery, so I'm trying to be at least on par. </div><div><br /></div><div>But...</div><div><br /></div><div>I'm at 62% flash usage already. <br />Hopefully actual game rules won't have to be just random points and sound, hehe.<br /><br />I'm not expecting and issues really, since most of the heavy lifting is done with all the various classes, mainframe and scene management. Game logic is relatively simple, after all, and worst comes to worst - I could probably offload all maintenance names and text to EEPROM and stream in when required. It should free up a few KB of valuable space, at least, and if necessary I could also squeeze out a few more KB by using binary values for letters and numbers instead of having a byte per pixel. That means I won't be able to use per pixel colors, but I'll cross that bridge if I ever get there. </div><div><br /></div><div><div>All in all, code is shaping up pretty nicely! </div><div><br /></div></div>rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com0tag:blogger.com,1999:blog-1094715945364929106.post-11722945296896354162021-03-19T00:14:00.000+01:002021-03-19T00:14:00.024+01:00Down for maintenance...<p> ...is something you might say during maintenance. :P </p><p>Almost got all parts of the maintenance modes down by now.<br />Naturally, I will have to keep coming back to update certain features as the game programming goes on, but I feel most of the menues and how everything works feels pretty good. </p><p><br /></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidwpSGIoWitB7eu5bv2yqZFwlV4yYarzxqnY8S9qsTlFPlSZfP3JuxWXrNj8bER-vVMmf4y_TbsAnSibCSyAJoD4DLsBd8jv93fOv3St8OTw9jumAX_i2W3SokoXEsTqmUNaoD0cnYeGg/s4640/IMG_20210317_143247.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEidwpSGIoWitB7eu5bv2yqZFwlV4yYarzxqnY8S9qsTlFPlSZfP3JuxWXrNj8bER-vVMmf4y_TbsAnSibCSyAJoD4DLsBd8jv93fOv3St8OTw9jumAX_i2W3SokoXEsTqmUNaoD0cnYeGg/w640-h360/IMG_20210317_143247.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">1) This menu will be super handy if something doesn't work as expected! Here, we see that the watchdog is disabled (due to open coindoor), and that in turn disable power and solenoid+flash MCP's. I'm thinking of enabling a "secret" debug menu that adds this screen and others as overlays during gameplay too.<br /><br /></td></tr></tbody></table><p>One of these days I'll update with a video, hehe. </p><p><br /></p>rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com0tag:blogger.com,1999:blog-1094715945364929106.post-63961772655836344542021-03-14T16:21:00.001+01:002021-03-14T16:21:21.848+01:00Here Be There Pixels... <p> Been working a bit on the maintenance menues and the part from boot to attract mode lately. </p><p>Not complete, but feels pretty good so far and having a proper maintenance mode is crucial. Before coding the first one (a few years ago) I thought that perhaps I wouldn't need it for a home pinball... But boy, has it helped. So I'm spending some extra "bucks" getting the newest iteration up to par with a commercial machine incl trough test, standard and feature adjustments etc. </p><p>Behold the "slightly washed out due to sun reflections"-images below!</p><div class="separator" style="clear: both; text-align: center;"><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPDOaBcwNNfOiRjyK1VDCcJ_Zl_MzJLzvdD4oiwqzDsVw7RmhXzaIgqn2Suq5qp2_v4xoVI08G5C0pHPZyxhtCO0xn2kCQgzB1m4TnKmz7TXhMSVcoFCxeKUKV9OmVVGRlkvbNPH-ALEE/s4640/IMG_20210314_134906.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhPDOaBcwNNfOiRjyK1VDCcJ_Zl_MzJLzvdD4oiwqzDsVw7RmhXzaIgqn2Suq5qp2_v4xoVI08G5C0pHPZyxhtCO0xn2kCQgzB1m4TnKmz7TXhMSVcoFCxeKUKV9OmVVGRlkvbNPH-ALEE/w640-h360/IMG_20210314_134906.jpg" width="640" /></a></div><br /><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzTxio4glAOb52s-XUOz0oM7sYtfYWzStI3j1aGvMIbO5Ji5nfJGKUTK7u9zgeUt-NXgE7QgkMzB-ZXmh2WhPeLOuipdT2ikr36KVtwzxgS0FlpTMMwC8MriAcphuteQ6q1y_H005Sd_Y/w640-h360/IMG_20210314_134913.jpg" width="640" /></div><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN7RCahl42yXpDbxktRWX2zcRw90AShrwV9e8K2IQOEa3FXMk4lzgsYRQ3wta2cCG8xm2hz0-HG8rPSi1jv7PMEOuOOVnfIQVeezrt9AnbEnaJxEekFgLm0rOQCdtPW3aoq94V90kahGQ/s4640/IMG_20210314_134945.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiN7RCahl42yXpDbxktRWX2zcRw90AShrwV9e8K2IQOEa3FXMk4lzgsYRQ3wta2cCG8xm2hz0-HG8rPSi1jv7PMEOuOOVnfIQVeezrt9AnbEnaJxEekFgLm0rOQCdtPW3aoq94V90kahGQ/w640-h360/IMG_20210314_134945.jpg" width="640" /></a></div><div><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzTxio4glAOb52s-XUOz0oM7sYtfYWzStI3j1aGvMIbO5Ji5nfJGKUTK7u9zgeUt-NXgE7QgkMzB-ZXmh2WhPeLOuipdT2ikr36KVtwzxgS0FlpTMMwC8MriAcphuteQ6q1y_H005Sd_Y/s4640/IMG_20210314_134913.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjzTxio4glAOb52s-XUOz0oM7sYtfYWzStI3j1aGvMIbO5Ji5nfJGKUTK7u9zgeUt-NXgE7QgkMzB-ZXmh2WhPeLOuipdT2ikr36KVtwzxgS0FlpTMMwC8MriAcphuteQ6q1y_H005Sd_Y/s4640/IMG_20210314_134913.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"></a><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi72UoXCZcLExjBL6y5-b2zULyfMQDSxP9sHZ-D1k4TTwrlI2x28bjBZKoH2YUHpBxrr8gidcd0vEJZy7gpZPcIAHMTKioVRFBFSeZ_bt8vQ57hBQydnEvBtCqGn5jUlyKXPOb8aNxmkuM/s4640/IMG_20210314_135101.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEi72UoXCZcLExjBL6y5-b2zULyfMQDSxP9sHZ-D1k4TTwrlI2x28bjBZKoH2YUHpBxrr8gidcd0vEJZy7gpZPcIAHMTKioVRFBFSeZ_bt8vQ57hBQydnEvBtCqGn5jUlyKXPOb8aNxmkuM/w640-h360/IMG_20210314_135101.jpg" width="640" /></a></div></div><br /><br /><br /><p></p><div>The icons above are created by first designing them in Pixel Art Studio (free version) and then converting to regular C arrays using Google Sheets. <br /><br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA-j1fX-2sH2EtpYDPfLvgJFngG07hY4DV3L5cfPX6eb4-gjvtT_Qp7-Efrnda-bXNrWz9J47rzg2xefynOH6kmPdohlsYuhVpKvir6BOLxhyphenhyphenH6pcnCLBao_juuXCO85TNPYJP2uMI27I/s2040/Screenshot+%25285%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="874" data-original-width="2040" height="274" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgA-j1fX-2sH2EtpYDPfLvgJFngG07hY4DV3L5cfPX6eb4-gjvtT_Qp7-Efrnda-bXNrWz9J47rzg2xefynOH6kmPdohlsYuhVpKvir6BOLxhyphenhyphenH6pcnCLBao_juuXCO85TNPYJP2uMI27I/w640-h274/Screenshot+%25285%2529.png" width="640" /></a></div></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgziK5qE492zHDammEPvPJQLfE-xM42JenoN8TUq_I6lm_rqHdELpVRJXj48kVTMWLUbl8iZKp9vcMT-0gPgmS89j_nYzNJVxiIh5oN7xtvsNbqSA-1tMRpXzOtGzetKDLvCQgvHj9ImR0/s1661/Screenshot+%25286%2529.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="947" data-original-width="1661" height="364" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgziK5qE492zHDammEPvPJQLfE-xM42JenoN8TUq_I6lm_rqHdELpVRJXj48kVTMWLUbl8iZKp9vcMT-0gPgmS89j_nYzNJVxiIh5oN7xtvsNbqSA-1tMRpXzOtGzetKDLvCQgvHj9ImR0/w640-h364/Screenshot+%25286%2529.png" width="640" /></a></div><div><br /></div><div><br /></div>It's a few extra steps, but since there won't be a lot of them it goes really fast to "trace" them manually. Took about an hour to get the 19 icons I have converted to C. <div><br /></div><div>The good thing about Pixel Art Studio is that I get the exact pixel coordinate for each pixel, so I can do mockups of entire scenes and get the layout exactly right when recreated using various draw calls and texts. </div><div><br /></div><div>Good times! </div><div><br /></div><div>(Oh, and I broke my start button. So I need to fix it/order a new one... )<br /><br /></div>rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com0tag:blogger.com,1999:blog-1094715945364929106.post-62362146504976135412021-02-27T21:55:00.008+01:002021-02-28T18:46:41.386+01:00Achilles, Agony and Ecstasy In Eight Parts<p></p><div class="separator" style="clear: both; text-align: left;">So, I decided to fix the power rails. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">First I removed the old fuses.... </div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZuCJH0H0T4B0k99insfY8GiUIzaQqFim8wnxN9spZ1oKfeMNQIiP2hWYnNMGAMbjy5KJC1IT1VoeEsGOFWYbVg06Af3bovcqXbb2e6q2hojeRssajTXikw5Nzab9q8a2Ha4bw7uCnxqs/s4640/IMG_20210225_122050.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhZuCJH0H0T4B0k99insfY8GiUIzaQqFim8wnxN9spZ1oKfeMNQIiP2hWYnNMGAMbjy5KJC1IT1VoeEsGOFWYbVg06Af3bovcqXbb2e6q2hojeRssajTXikw5Nzab9q8a2Ha4bw7uCnxqs/w640-h360/IMG_20210225_122050.jpg" width="640" /></a></div> <p></p><p>...built a board to host all three PSU's. </p><p>Yes, three. The scratches on the 12V line is me severing that line to allow me to use a 24V PSU instead of 12V. This line also provided power to the Chipkit, so Chipkit got its own jack now too. Real pinball machines strobe their light matrix with 18V, so 24V should provide more vibrant lights and flashers. </p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1ZRX_f8f3P8FBhE_8a49W-5yw_KtV4F-95TmQ4RVIvhbgd-lZLwjfQP72sEObRQwk0hwaYEmm8C-gJMLra3kK7ejh4cSlFVQhZ-Rat3tnYZIphNAAO2dn7yMnUVYIRBTAPxGAX17A_UI/s4640/IMG_20210225_215653.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj1ZRX_f8f3P8FBhE_8a49W-5yw_KtV4F-95TmQ4RVIvhbgd-lZLwjfQP72sEObRQwk0hwaYEmm8C-gJMLra3kK7ejh4cSlFVQhZ-Rat3tnYZIphNAAO2dn7yMnUVYIRBTAPxGAX17A_UI/w640-h360/IMG_20210225_215653.jpg" width="640" /></a></div><br /><br />Black is the new ...black, baby! <br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUA16LrKWrTBxO6y89FNOCegk5TTUCu91ukE-C2DZRNg0-gJUQ2S0tVafXBGUiqCumc9gpBOXZt1wNdJ8uvbQW-hftnttUc83X-ZrEEYdehr8xzib3KyvVMax0f5I-060uMyfnLlsyIwY/s4640/IMG_20210227_102746.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiUA16LrKWrTBxO6y89FNOCegk5TTUCu91ukE-C2DZRNg0-gJUQ2S0tVafXBGUiqCumc9gpBOXZt1wNdJ8uvbQW-hftnttUc83X-ZrEEYdehr8xzib3KyvVMax0f5I-060uMyfnLlsyIwY/w640-h360/IMG_20210227_102746.jpg" width="640" /></a><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div style="text-align: left;">Prepared the little power circuit.... </div><div style="text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaj6jdZL6rbSCLZU9EpYieg1ywMKJ5aV5UH6GA0CDYJ2f1UJq7kp38c4wQvkICqWU-kTcMzvTCs6RF3Elb02mG1cywMZ8jRLOjLTDb9ccUWYLXMtnLfjHKwB2SnjeLjrizMSBmg9rJAqI/s4640/IMG_20210225_123828.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhaj6jdZL6rbSCLZU9EpYieg1ywMKJ5aV5UH6GA0CDYJ2f1UJq7kp38c4wQvkICqWU-kTcMzvTCs6RF3Elb02mG1cywMZ8jRLOjLTDb9ccUWYLXMtnLfjHKwB2SnjeLjrizMSBmg9rJAqI/w640-h360/IMG_20210225_123828.jpg" width="640" /></a></div><br /><div style="text-align: left;"><br /></div></div><div class="separator" style="clear: both; text-align: center;"><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiILSgtgt7NlIqyyXwIlvEMlBkHXN2xKnZ9KlWlkTolZ6dpfw2ZVD5NO6wD6Dfd1Cd2_AbUZUuEqAzNBt1x6RRZB1NzhvafiupEYhyphenhyphenWhnr4h1S9gpLiQlSWb9Itt5tKJcNR-H2zi7YVL_k/s4640/IMG_20210227_173559.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiILSgtgt7NlIqyyXwIlvEMlBkHXN2xKnZ9KlWlkTolZ6dpfw2ZVD5NO6wD6Dfd1Cd2_AbUZUuEqAzNBt1x6RRZB1NzhvafiupEYhyphenhyphenWhnr4h1S9gpLiQlSWb9Itt5tKJcNR-H2zi7YVL_k/w640-h360/IMG_20210227_173559.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;">And removed / accidentally messed the traces when removing a capacitor (more about that later)...</div></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPJ2Vt4SF3cNfMeQUiW13NJQX4ZRJDKohWh-GyD12p0MVar-8-vSDx3drfyWSmL7o_mnsOO-oxlgJDl3BYmbQD4M0L6VINjD35cHTisbm5L9WgxFzewO4y-ZneZUVeiE_1gkA_4Va6gSQ/s4640/IMG_20210227_202109.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiPJ2Vt4SF3cNfMeQUiW13NJQX4ZRJDKohWh-GyD12p0MVar-8-vSDx3drfyWSmL7o_mnsOO-oxlgJDl3BYmbQD4M0L6VINjD35cHTisbm5L9WgxFzewO4y-ZneZUVeiE_1gkA_4Va6gSQ/w640-h360/IMG_20210227_202109.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div>....but finally got everything in place! <p></p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgybLzCSX8edcCPlDdJywDNtXhNfAP3M-YV79h8Y5PjpXjIBIq1sML8Zujm2sS-mgWnpYTr9AEUTuUm3WmMAAF8IO1J7e2TxZcsb6YT7vlQMRHkKWnCCvJXq0bV_8apDILUWGIWJiv4t_Y/s4640/IMG_20210227_180436.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgybLzCSX8edcCPlDdJywDNtXhNfAP3M-YV79h8Y5PjpXjIBIq1sML8Zujm2sS-mgWnpYTr9AEUTuUm3WmMAAF8IO1J7e2TxZcsb6YT7vlQMRHkKWnCCvJXq0bV_8apDILUWGIWJiv4t_Y/w640-h360/IMG_20210227_180436.jpg" width="640" /></a></div><p><br /></p>Nice! Looking almost as if was part of the plan. <br /><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0B9gI4grU28SBPeE1k4jh-QI-653Pzjx43hyphenhyphenz2v06prYPG0Fyz0FnuOZKz9A9qNgFrPQzfnJOF5CQKQtA3NjklHVF6Xu688DGLw4H635lg_aIRC2CrZM_dEtFdnmshHyAaR0rCJUzo5I/s4640/IMG_20210227_180426.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh0B9gI4grU28SBPeE1k4jh-QI-653Pzjx43hyphenhyphenz2v06prYPG0Fyz0FnuOZKz9A9qNgFrPQzfnJOF5CQKQtA3NjklHVF6Xu688DGLw4H635lg_aIRC2CrZM_dEtFdnmshHyAaR0rCJUzo5I/w640-h360/IMG_20210227_180426.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">The board lights up! </div><div class="separator" style="clear: both; text-align: center;"><br /><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeORV0vm2tXKvZB6nfXgeX866lIw1O8TAbUU2Fm1Kc0ySFQ4AnGqOBplbm3290jOjlLEBwyE0yRhtIZVHhmsIV-JLAnnp5ZepbaPTVcpdn4yC3mRF2LnELsfL37Dwuxl2Zi_zqTmiidY8/s4640/IMG_20210227_185554.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjeORV0vm2tXKvZB6nfXgeX866lIw1O8TAbUU2Fm1Kc0ySFQ4AnGqOBplbm3290jOjlLEBwyE0yRhtIZVHhmsIV-JLAnnp5ZepbaPTVcpdn4yC3mRF2LnELsfL37Dwuxl2Zi_zqTmiidY8/w640-h360/IMG_20210227_185554.jpg" width="640" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;">But, did it work? </div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;"><i><b>Of course not. </b></i></div><div class="separator" style="clear: both; text-align: center;"><i><b><br /></b></i></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;">It's infuriating and fascinating how something can be tested and tested again, and work perfectly in a controlled environment - and yet fail miserably in the real world. Even when loosing my cool and removing a few of the caps (and doing a hack-job at it too....) it wouldn't work. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">So here's Mr Cable once again. At least it's before the fuse this time, although I'm not sure that'll help. </div><div class="separator" style="clear: both; text-align: left;">The big downside is that I cannot start the PSU after I've inserted the USB-cable, so I have to power up the machine/board - then - plug in the USB-cable, or only use the USB-cable. </div></div><br /><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibibW9RYAMUTNlOIjjltK_A7xwUAA1SbAyLXy9Lv9tqnlnV-rUwZO6qjAJKBK6zvX9bO2A_kufqdUCnBhp1qanCASdCWjqj0YY_VviE4VMto0y9Jf3K8LFVuzK5qy0pGOWGnIx6Fzc2Nk/s4640/IMG_20210227_202029.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEibibW9RYAMUTNlOIjjltK_A7xwUAA1SbAyLXy9Lv9tqnlnV-rUwZO6qjAJKBK6zvX9bO2A_kufqdUCnBhp1qanCASdCWjqj0YY_VviE4VMto0y9Jf3K8LFVuzK5qy0pGOWGnIx6Fzc2Nk/w640-h360/IMG_20210227_202029.jpg" width="640" /></a></div><br /><div class="separator" style="clear: both; text-align: center;"><br /></div>To be fair, it does work without the extra cable - eventually. After a few attempts and the power has stabilized it's possible to re-init the IC's that fail and they'll work. But it's highly unreliable and even when removing the 5V fuse, the LED still lights up, so power is sourced from somewhere. I don't really know where the power creeping is coming from - it feels unsettling to leave it without the extra cable.<div><br /></div><div> Anyhow, win some, lose some. Story of this build. :) </div><div><div><br /><p><br /></p></div></div>rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com0tag:blogger.com,1999:blog-1094715945364929106.post-36272741625152423122021-02-24T10:29:00.009+01:002021-02-24T16:22:51.347+01:00MOSFET's... You will never find a more wretched hive of scum and villainy. <p>So - apparently there's a thing called an <a href="https://www.analog.com/en/technical-articles/primer-on-powerpath-controllers-ideal-diodes-prioritizers.html#" target="_blank">ideal diode</a> that can be created using <a href="http://www.rs20.net/w/2013/02/using-mosfets-as-blocking-diodes-reverse-polarity-protection/" target="_blank">MOSFET's instead</a>. </p><p>For instance, comparing two circuits built in <a href="https://tinyurl.com/y8z28q5h" target="_blank">Falstad</a>: </p><p><br /></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp1C8GkX3QTbtqWCO1zYaQMWzYtuYF8mfVO2GwLR2BHY8iCmtMI0IAIX9fP9T8JDWVnCs-OWKUmTSh21YpbjdGBo74hgyuuUVktiC58ermhn-YzIAQaNCLSpxcUnK0S9I2riDnHNH7SVI/s892/circuit-20210224-1619.png" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="676" data-original-width="892" height="486" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjp1C8GkX3QTbtqWCO1zYaQMWzYtuYF8mfVO2GwLR2BHY8iCmtMI0IAIX9fP9T8JDWVnCs-OWKUmTSh21YpbjdGBo74hgyuuUVktiC58ermhn-YzIAQaNCLSpxcUnK0S9I2riDnHNH7SVI/w640-h486/circuit-20210224-1619.png" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">1) Diodes in series with the power lines, compared to P-Channel MOSFET's (+ protective diodes and resistors)<br /><br /></td></tr></tbody></table><p><br />Even using default values (there are better - and worse - components out there) the P-Channel MOSFET version provides a voltage closer to the source and provide the same features. This MOSFET version should be possible to use in my "vertical fuse holder"-design as well, but require a bit more components and "not as clean setup".</p><p>I will have to do some breadboard tests to see which one to use as both will work, but it's nice to keep as much power as possible so I'm leaning towards using the MOSFET one at the moment... </p>rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com0tag:blogger.com,1999:blog-1094715945364929106.post-78870071741029334452021-02-20T22:38:00.005+01:002021-02-24T10:45:43.612+01:00Beam me up, Schottky! <p>So, I think I finally figured out - or at least the remedy for - why the extra cables were needed. </p><p>It was pretty much as I expected and that voltage somehow got reversed in the circuit, and me either knowing too little about electronics or expecting too much from the power supplies. Rookie mistake in assuming the power supply would overpower the other components, but it seems that it doesn't. </p><p>Long story short, it would seem that the capacitors I have on the PCB is enough to offset the "power balance" in the board, and by connecting the power lines to the ChipKit's lines I basically hijacked the voltage rectifiers to "heal" the PCB. </p><p>By replacing the fuse with a diode (temporarily) all of my problems goes away: </p><p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisp-igyctd9tHnW_uYQTxBvG2gSqv3Rpd3BH8oTLtCPQ2_jzH1RSaZjf0-mOyF1fpJVL5ErZ_8yOKquCpG79hH09oJ4EaSLCBXv_9Ft5mqBRNArnAufiy9XI58T2II8wiN8kix9IKV55A/s4640/IMG_20210220_200745.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="4640" data-original-width="2610" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEisp-igyctd9tHnW_uYQTxBvG2gSqv3Rpd3BH8oTLtCPQ2_jzH1RSaZjf0-mOyF1fpJVL5ErZ_8yOKquCpG79hH09oJ4EaSLCBXv_9Ft5mqBRNArnAufiy9XI58T2II8wiN8kix9IKV55A/w360-h640/IMG_20210220_200745.jpg" width="360" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">1) It ain't safe and it's not pretty, but proof is proof. <br />Notice the disconnected +3V3 and +5V cables. <br /><br />Oh, fun fact: <br />Turns out that the +3V3 cable wasn't really needed. <br />I had damaged the trace on the board while removing the capacitor <br />in my first feeble attempt to solve the power problem a year ago or so. </td></tr></tbody></table></p><p><br /></p><p>I used diodes to force current this or that way on the board, but forgot/ignored the main lines since I assumed they would be alright coming directly from the PSU. </p><p>So now I'm basically trying to find a way to incorporate diodes (Schottky's) in series with each power line. The voltage drop isn't that bad (-0.48V) but still a lot more than I had hoped to achieve. I want to avoid having several boards and something like the below should probably work, but I could also use a P-channel MOSFET as a very low resistance diode. </p><p><br /></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAigBh9KH3IOQlOEo1PTInCKoubulUKYb7OtjxBNCXJsUvFZolDthNAQZo4E-_dFQkO-Hj8CJYIQbRR7QH_JdbeNzLrQ8ogtt_NFGyGN5rtt_sgrrh_8whEmqmRy08AG-S-8ZEmpbDeGQ/s2610/IMG_20210220_215530.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2610" data-original-width="2443" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiAigBh9KH3IOQlOEo1PTInCKoubulUKYb7OtjxBNCXJsUvFZolDthNAQZo4E-_dFQkO-Hj8CJYIQbRR7QH_JdbeNzLrQ8ogtt_NFGyGN5rtt_sgrrh_8whEmqmRy08AG-S-8ZEmpbDeGQ/w600-h640/IMG_20210220_215530.jpg" width="600" /></a></div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">But I'm going to try to use a setup similar to the one at the top in the above image, where the diode would be standing up and connect to a vertical mounted fuse cylinder instead. It should work, and it seems there's enough space. Would be nice to get rid of this pesky power problem once and for all. </div><div class="separator" style="clear: both; text-align: left;"><br /></div><div class="separator" style="clear: both; text-align: left;">But we'll see. </div><p></p>rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com0tag:blogger.com,1999:blog-1094715945364929106.post-18455251023262871862021-02-19T11:27:00.009+01:002021-02-19T11:39:56.775+01:00Daily motivation!<p> </p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimqiTmLdzYVZJrGQH86ObKY-Fv9Y5umV4G67-9q8tfOw5UWqfwtX_gTv_poLgnFQZC1tIKI69ITAYqe93m_GuqZXwBcaA_Z-1Ipmtzbg7nx3lWYPn1JriZyvaODe8DjuZmYo2quRfGWWw/s4640/IMG_20210218_235501.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="4640" data-original-width="2610" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEimqiTmLdzYVZJrGQH86ObKY-Fv9Y5umV4G67-9q8tfOw5UWqfwtX_gTv_poLgnFQZC1tIKI69ITAYqe93m_GuqZXwBcaA_Z-1Ipmtzbg7nx3lWYPn1JriZyvaODe8DjuZmYo2quRfGWWw/w360-h640/IMG_20210218_235501.jpg" width="360" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">1) Steinman got his sign back! (I misplaced it two years ago... :') ) </td></tr></tbody></table><br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBqwMIs0A44dbjqXvNcjQGS0TpcSrdMmPx9WXG2p0cjaBOGXZoD6SIqdNzWildmKugNXWh0Tpw5IcMv8MUErh7JFZeKysXOW2WcldmorpHiCsvUPgFKioIxwJH-sB33qYEaSGN0JY9YQM/s4640/IMG_20210218_210524.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="4640" data-original-width="2610" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBqwMIs0A44dbjqXvNcjQGS0TpcSrdMmPx9WXG2p0cjaBOGXZoD6SIqdNzWildmKugNXWh0Tpw5IcMv8MUErh7JFZeKysXOW2WcldmorpHiCsvUPgFKioIxwJH-sB33qYEaSGN0JY9YQM/w360-h640/IMG_20210218_210524.jpg" width="360" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">2) I really like this corner. The two-way quadtych-switch is pretty cool. <br />Although I am toying with the idea of making it open/close via servo... </td></tr></tbody></table><div><br /></div><br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiieRU6_2PNSOikRMeMMZSs7h0izjgpsWJ0Pqf0avM4Mhu0rFYCAbDvVhXCpk5b1xRO62WFoBQX-NzgjJd6kAIemVqwW0rb43DdQLlnPUAu_F9vYpAA6f8SL2uhcnVTQwCLy3-InpiIrqg/s4640/IMG_20210218_210436.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiieRU6_2PNSOikRMeMMZSs7h0izjgpsWJ0Pqf0avM4Mhu0rFYCAbDvVhXCpk5b1xRO62WFoBQX-NzgjJd6kAIemVqwW0rb43DdQLlnPUAu_F9vYpAA6f8SL2uhcnVTQwCLy3-InpiIrqg/w640-h360/IMG_20210218_210436.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">3) Got the new ball through in place, although I'm still waiting for my new soldering iron. <br />But switches tested and works fine. <br /></td></tr></tbody></table><div><br /></div><div><br /></div><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3CbRFGM-6erm12N9DJiVG3T9gNSEzL2KjUMzsyr_6IuTBOZNJKnOi1xnJqL4ild8r46pxtu9ITHWLV3KvxmjTtBBAAVXlaIoqiDD0KrbIJ5Es4yc6er-QNWwTjgVECbHgZsI5T48biM/s4640/IMG_20210219_001923.jpg" style="margin-left: auto; margin-right: auto; text-align: center;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjF3CbRFGM-6erm12N9DJiVG3T9gNSEzL2KjUMzsyr_6IuTBOZNJKnOi1xnJqL4ild8r46pxtu9ITHWLV3KvxmjTtBBAAVXlaIoqiDD0KrbIJ5Es4yc6er-QNWwTjgVECbHgZsI5T48biM/w640-h360/IMG_20210219_001923.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">4) Someone asked me why pinball machines are so big... Thing is - the playfield is pretty much<br />the same size under the board as above, so there's not a whole lot of empty space inside actually. </td></tr></tbody></table><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiYzbXrZCa3p2_Vg5PQz6EwJTWhKvUDwrJJLIuuv0mg2PgYIswKkTYR65C7TKUohilJ5pxnhV1SzITYWgUjp7b94FjDL4OOYQJIFEN5r5BqsrRnl7vLGFEpU_P_dLdz2caVLLFBac_I6Wc/s4640/IMG_20210219_000148.jpg" style="margin-left: 1em; margin-right: 1em;"><br /><br /></a></div><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLiKnOJPWxdUclo49agty9lns7sM-mcgN-6vE-IooOsAXusUFY9uUqUzPO5XYSP5mxk7tWUeppvLSzK7SMvPDersMGwiXWeiJFdr0vD_b94L9imeA5DiROH4U9Os_onfioV1cRbN4nqTs/s4640/IMG_20210219_000209.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhLiKnOJPWxdUclo49agty9lns7sM-mcgN-6vE-IooOsAXusUFY9uUqUzPO5XYSP5mxk7tWUeppvLSzK7SMvPDersMGwiXWeiJFdr0vD_b94L9imeA5DiROH4U9Os_onfioV1cRbN4nqTs/w640-h360/IMG_20210219_000209.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">5) The plasmid saucer. I have not settled on the final behaviour yet, since it depends<br />on how hard it is to "backhand" the ball into this corner. But we'll see. </td></tr></tbody></table><div><br /></div><br /><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD4HwNZ9zUSZdZxLPPxaGSZj_koL8O3ZU4dy7UPjhxZEVWYVgC9_IG6n6Ok3FuVQdADsdoGnJpCbOGCXl4C9DPPNDsZcbgz4Kjt7I4nAv1GBsLOCyXNddL5ETpajCVpHB5UdLcTc__QMA/s4640/IMG_20210219_000222.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiD4HwNZ9zUSZdZxLPPxaGSZj_koL8O3ZU4dy7UPjhxZEVWYVgC9_IG6n6Ok3FuVQdADsdoGnJpCbOGCXl4C9DPPNDsZcbgz4Kjt7I4nAv1GBsLOCyXNddL5ETpajCVpHB5UdLcTc__QMA/w640-h360/IMG_20210219_000222.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">6) Originally a captive ball, then thought to be a ball lock - and now "just" a lane. <br />Kill your darlings, they say. Anyhow - it's a tricky shot so it should feel quite nice when hit. </td></tr></tbody></table><div><br /></div><div><br /></div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiALqQGikf1ah5ifKeK3LuMa7BpBSg1v49PywUOnxTEAof4A35adlcyizI06mRZTPcxNZiyE3mgBSd72FG3GFGfYJ5thRHNFWmQrluWxpBTVhNkv2OFPU6nl-JcwWTHvECaFjz97jCIDNo/s4640/IMG_20210219_000148.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiALqQGikf1ah5ifKeK3LuMa7BpBSg1v49PywUOnxTEAof4A35adlcyizI06mRZTPcxNZiyE3mgBSd72FG3GFGfYJ5thRHNFWmQrluWxpBTVhNkv2OFPU6nl-JcwWTHvECaFjz97jCIDNo/w640-h360/IMG_20210219_000148.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">7) The upper playfield as it stands today. Looks pretty good, imho! </td></tr></tbody></table><br /></div><br /><p></p><div class="separator" style="clear: both; text-align: center;"><br /></div><br /><p></p><p></p><div class="separator" style="clear: both; text-align: center;"><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_dw6l6H7cyFMDz8Jf9k6jGqiFSpG9z8rj3GeYhzNySGNVULVc6_EvPmgSmHMtlD24C9v6h0K4v7zKY8TlB6gsdhgSbNcVPQb6BYK0VIC5c9V1Ah8RKZcoSCOSPGWjk80EBan2B3tL6oc/s4640/IMG_20210218_210659.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="4640" data-original-width="2610" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg_dw6l6H7cyFMDz8Jf9k6jGqiFSpG9z8rj3GeYhzNySGNVULVc6_EvPmgSmHMtlD24C9v6h0K4v7zKY8TlB6gsdhgSbNcVPQb6BYK0VIC5c9V1Ah8RKZcoSCOSPGWjk80EBan2B3tL6oc/w360-h640/IMG_20210218_210659.jpg" width="360" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">8) A full overview of the playfield 2021. <br /><br />I set out to make it look commercially made, and I believe I've<br />accomplished that as far as the playfield goes. Just need to make<br />sure the gameplay and rules are up to par! <br /><br />I really like that I've been able to make the whole 'miniature wonderland'-feeling<br />I wanted from a pinball. I've always enjoyed miniatures and the glimpse into another world <br />you can achieve with them. Can't wait until I get to play the first actual game! :) </td></tr></tbody></table></div><br /><p></p><br />rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com0tag:blogger.com,1999:blog-1094715945364929106.post-47019316950430321792021-02-17T23:02:00.005+01:002021-02-18T08:02:03.452+01:00Jinxed-Schminxed ... <p>So, yeah... </p><p>"unless - epic ninjas forbid - connecting the solenoids mess something up"</p><p>Guess what? <br /><br />I had messed up. <br /><br /><i>Almost burnt down the board</i> since +48V pretty much forced all the gates open.</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbDEB9S2uv8_QwRYnbOY93liKhgpmRTLF5kycXusdskRin5_yqRg4GdHPv5TPoGWWg2s3MJ8aGnMGy7wWSuXIWSbxqWrN-BGqpQJETrMt4fKAaw5KKBWyfln2hKX6qt6xEjH3mS5jrVsE/s4640/IMG_20210217_100335.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjbDEB9S2uv8_QwRYnbOY93liKhgpmRTLF5kycXusdskRin5_yqRg4GdHPv5TPoGWWg2s3MJ8aGnMGy7wWSuXIWSbxqWrN-BGqpQJETrMt4fKAaw5KKBWyfln2hKX6qt6xEjH3mS5jrVsE/w640-h360/IMG_20210217_100335.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">1) That mini-heartattack when you apply power, "all is well?" and suddenly smoke rises from the board<br />while the solenoids are going tick-tick-tick... </td></tr></tbody></table><p><br /></p><p>I had pull-down resistors on the gates, but since the +48V and +5V didn't have a common ground the gates were essentially floating anyway. (<a href="https://majenko.co.uk/blog/importance-sharing-grounds" target="_blank">Thanks for the help again, Majenko!</a>) It didn't show up in earlier tests since I used +5V and ground from the board itself to test the circuit, but when the other supply was used it didn't work correctly. For some reason I assumed the high voltage power could be completely separated - and I realize how naive that was in retrospect. </p><p>The fix was easy enough after actually finding the error, just a cable between GND & GND and Bob's your uncle...</p><p>...until I realized that I've somehow <b>completely forgot to add pull-down resistors</b> to pretty much all other MOSFET's on the board. *sigh*. So I'll have to fix that by soldering on resistors between gate and source even though that probably means putting components on the backside, but...</p><p>... <b>my soldering iron broke down</b>.</p><p> <br />And now I play the waiting game with the Swedish postal service once again. <br />This build is cursed, I shit you not... </p><p>But besides doing two lame n00bzor 2000-mistakes (which I didn't do when designing the circuits on breadboard, mind you) the machine can now flip balls.</p><p>And that's pretty dope. </p><p>I also got two potentiometers in place to (in theory) help me dial in the opto's to only react to the IR-LED and not (as much from) the sun, for those rare Swedish summer days. </p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivNhvWGRyemB477vr1xgcBBbDDIbjX-FJeQljX0Hx-ZPg5mIjyx8zoJ6oSHmt4_dfxYlZnyl65xyIrU0iKlxNBRg4mu42Meg1OaW2bJItjoF8k3PWP5iVlDCIKpHG61cHCkDy5uhWddAY/s4640/IMG_20210217_105428.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEivNhvWGRyemB477vr1xgcBBbDDIbjX-FJeQljX0Hx-ZPg5mIjyx8zoJ6oSHmt4_dfxYlZnyl65xyIrU0iKlxNBRg4mu42Meg1OaW2bJItjoF8k3PWP5iVlDCIKpHG61cHCkDy5uhWddAY/w640-h360/IMG_20210217_105428.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">2) Dialed In! ;) <br />JJP are pushing out some high quality boards these days. STERN needs to up their game, imho... </td></tr></tbody></table><br /><br />Footnote: <br /><p>I've been hunting a few bugs that are seemingly random - perhaps they too are caused by the floating pins. Would also be interesting to see if the +5V and +3.3V cables are required once all floating pins are properly grounded. </p><p><br /></p><p> </p>rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com0tag:blogger.com,1999:blog-1094715945364929106.post-28032986422878702152021-02-15T20:52:00.007+01:002021-02-15T20:54:51.729+01:00The devil's in the details... (is he really that small, though?) <p></p><div class="separator" style="clear: both; text-align: center;">Spent the last weeks writing rules and preparing each game mode with music, sound effects and overall flow of the game. It's getting quite complex (as it should be) considering the development time on the machine, hehe. Since I don't have room for more than one pin, I guess it won't hurt having a deep rule set either. Doing my best to stay true to the game(s) while having a bit of artistic freedom with each event, I think I've got a good chunk of fun and must-have elements in there. We shall see. </div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;">I've corrected a couple of wrongfully connected switches and finally bit the bullet and replaced a couple of older cables for the targetbank that I left with the wrong wire colors - as I obviously connected them wrong anyway. All good now, though! </div><div class="separator" style="clear: both; text-align: center;"><br /></div><div class="separator" style="clear: both; text-align: center;">I've also added a few more decorations and touch ups on the playfield - without further ado:</div><div class="separator" style="clear: both; text-align: center;"><br /></div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ3ZFao98d24ms0wYWjTkWFbfXBOCbFB3U265Ixzgt8tCwv5RgKxo67q0txYFHmA1sJAP3H0FsoDuDMglpZ_sSJ9ypbxoZe99tR0MtGDIKTqt-rgeKiQ5C9Fduyu-DAYeOXoFCs_GZOY4/s4640/IMG_20210215_125331.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="4640" data-original-width="2610" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhJ3ZFao98d24ms0wYWjTkWFbfXBOCbFB3U265Ixzgt8tCwv5RgKxo67q0txYFHmA1sJAP3H0FsoDuDMglpZ_sSJ9ypbxoZe99tR0MtGDIKTqt-rgeKiQ5C9Fduyu-DAYeOXoFCs_GZOY4/w360-h640/IMG_20210215_125331.jpg" width="360" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">1) Mask for the Quadtych. The area was missing something and once the mask was in <br />place the whole area did, as Sander Cohen said, come together.</td></tr></tbody></table><div class="separator" style="clear: both; text-align: center;"> </div><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7UofsHVK7dNLNJSqoS_-qMXSYYL6GDgsPGu1fFsdaQRbYSxmwRGLQJlRwAX8iI7bP5OJENZssMuzg4qmKoXLbG0OWcx0_GxjxHpn8fx7TKC7pnecpXGbjEd0eyKF2ILclZZGoVRKPJ0Q/s4640/IMG_20210215_125337.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="4640" data-original-width="2610" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh7UofsHVK7dNLNJSqoS_-qMXSYYL6GDgsPGu1fFsdaQRbYSxmwRGLQJlRwAX8iI7bP5OJENZssMuzg4qmKoXLbG0OWcx0_GxjxHpn8fx7TKC7pnecpXGbjEd0eyKF2ILclZZGoVRKPJ0Q/w360-h640/IMG_20210215_125337.jpg" width="360" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">2) Spinner "topper". There's a few iconic places in Rapture, so it <br />felt nice to have them presented on the playfield as well. </td></tr></tbody></table><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikdDcG5G-Y_Nn2Ux7HNPxao8xaPhj83uKTdmja16-Lu1v2BAiKpYXjEwR9Q3ZrmD8c5warvwypTH5a3_2GRv3V8HSMhnwKESRBVzdBqUGFfub-f5uGxvjEgoa2CPcEMGiml1FM-1J743U/s4640/IMG_20210215_125350.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="4640" data-original-width="2610" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEikdDcG5G-Y_Nn2Ux7HNPxao8xaPhj83uKTdmja16-Lu1v2BAiKpYXjEwR9Q3ZrmD8c5warvwypTH5a3_2GRv3V8HSMhnwKESRBVzdBqUGFfub-f5uGxvjEgoa2CPcEMGiml1FM-1J743U/w360-h640/IMG_20210215_125350.jpg" width="360" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">3) Party mask for the New Year's Eve ...ahem.. party. </td></tr></tbody></table><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGEKtDBGWN0REaSPyLubxLLzKNBD5wLrelFrfWpqO-ddl-ckQgHipwQWtOw1CJNgHQ9wugv9zkNKTqhMkaKYZeHukFx86ZUr2i72SqpI21FfLTvz9yOFuRO-l8KSD7Sjt9ZSouFcwdyIw/s4640/IMG_20210215_125428.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgGEKtDBGWN0REaSPyLubxLLzKNBD5wLrelFrfWpqO-ddl-ckQgHipwQWtOw1CJNgHQ9wugv9zkNKTqhMkaKYZeHukFx86ZUr2i72SqpI21FfLTvz9yOFuRO-l8KSD7Sjt9ZSouFcwdyIw/w640-h360/IMG_20210215_125428.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">4) The "hidden" doll lane has been upgraded with a physical doll figurine. It's adorable. <br />Might get a proper one for my kids, haha. </td></tr></tbody></table><br /><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy3-4dcV_-IEVLzkhWwCkI1Ur_PojuM-uqV6PoXkBcoEas3VabIdTGCQUoq1YN4KSilb-WRmcj9LSxj2WkDfrsUISBjN5MlQZb1TTg4a3rV6lAf6YSJO1wdcIma3zprCOOv8rG1OWoKVY/s4640/IMG_20210215_125458.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiy3-4dcV_-IEVLzkhWwCkI1Ur_PojuM-uqV6PoXkBcoEas3VabIdTGCQUoq1YN4KSilb-WRmcj9LSxj2WkDfrsUISBjN5MlQZb1TTg4a3rV6lAf6YSJO1wdcIma3zprCOOv8rG1OWoKVY/w640-h360/IMG_20210215_125458.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">5) Although not necessarily in the "correct" spot, the lower right area felt a bit bare - until now. <br />The original plan was to have this cage around the center VUK, but it looks crowded enough already. </td></tr></tbody></table><br /> <p></p><p>So, all in all - things are moving along and unless - epic ninjas forbid - connecting the solenoids mess something up, I'm looking at a fully playable machine in the very near future! </p>rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com0tag:blogger.com,1999:blog-1094715945364929106.post-46474592059620719632021-01-28T10:33:00.004+01:002021-01-28T10:35:46.401+01:00I Dream In Infrared...<p> F**king finally - opto's are online! </p><p>Pardon the french, but I've been troubleshooting the optos for 6+ months without success, and yesterday the solution came to me lying half-awake in bed... It's stupidly simple, has a few downsides - but it works. </p><p>After a few months of this...</p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxXIISfafzX_rV1lFcU51oEt9_XH1iPr5GF-Qx17-lB19feSLq0-_QeSY5HTwePOf6lPPTc9NfSORhptzTK7Kgvp-WLo8tm1Fb7vp4rS9VciIXU9YcyXsmOVzVMe9LZfutrCJt3vTUThk/s4640/IMG_20210127_184216.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjxXIISfafzX_rV1lFcU51oEt9_XH1iPr5GF-Qx17-lB19feSLq0-_QeSY5HTwePOf6lPPTc9NfSORhptzTK7Kgvp-WLo8tm1Fb7vp4rS9VciIXU9YcyXsmOVzVMe9LZfutrCJt3vTUThk/w640-h360/IMG_20210127_184216.jpg" width="640" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">1) Breadboard horror...</td></tr></tbody></table><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div>I realized (but not sure why) there was no power reaching the +3.3V line that powers the opto's. Come to think of it, pretty much all +3.3V devices are powered by the Chipkit already... hmm hmm. </div><div>Turns out it was easier to create a new circuit on a breadboard and use a regular remote to trigger the IR receiver. This allowed me to see exactly what worked, and I could then apply the same method of troubleshooting on the board itself. </div><div><br /></div><div><table cellpadding="0" cellspacing="0" class="tr-caption-container" style="float: left;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAmavYly05l20orH76Jz52UsJD432iqFerpwb9PLIb1qxq_lqSRUlau8Xw2s14xj0Oh-DWb8PMCnItf6GnYpiVAuU9wGUGvO_SwrPWtgP2QngvWPO1iPWENaX8tRLHN5rT2jg8vHosjfw/s4640/IMG_20210128_093450.jpg" style="clear: left; margin-bottom: 1em; margin-left: auto; margin-right: auto;"><img border="0" data-original-height="4640" data-original-width="2610" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAmavYly05l20orH76Jz52UsJD432iqFerpwb9PLIb1qxq_lqSRUlau8Xw2s14xj0Oh-DWb8PMCnItf6GnYpiVAuU9wGUGvO_SwrPWtgP2QngvWPO1iPWENaX8tRLHN5rT2jg8vHosjfw/s320/IMG_20210128_093450.jpg" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">2) Dusty horror....</td></tr></tbody></table><p>Anyhow - I suspect a grounding issue (remember way back when I had problems with the +5V line not functioning correctly, or rather some of the MCP23S17 IC's would not work) so I simply took the same approach here. Basically, allowing the Chipkit to force the current the right way, since I suspect they're better at designing PCB's than I... </p><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><br />And sure enough - we got opto's. </div><div><div><br /></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBTkdwUNBfObLjJ-UuFCrqNYFHY_Bt59hiwxuqP_E2riGHRX4YB9jZnLhpYeTtrSbkA-QAGdNhbmhBgjUsvTAxHqw8vU6X2RVDhchtqvf3jKKDn-vzRdaYlj-1Er8SDw90T9erBeru6zA/s4640/IMG_20210128_093722.jpg" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="2610" data-original-width="4640" height="181" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgBTkdwUNBfObLjJ-UuFCrqNYFHY_Bt59hiwxuqP_E2riGHRX4YB9jZnLhpYeTtrSbkA-QAGdNhbmhBgjUsvTAxHqw8vU6X2RVDhchtqvf3jKKDn-vzRdaYlj-1Er8SDw90T9erBeru6zA/w320-h181/IMG_20210128_093722.jpg" width="320" /></a></div><div><br /></div><div><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjENd8pZ6c2Y0yCJcyOONU-4OdG8elIEOr2Bj859LPY-Ff-fg55C-t2lvBo-B09QSxJlIGg6qz1rvdk5PsyqPCpt14slNUnZu_UOrPb-s0kLeZbEH4ncuxV-DzfDnfm8-VttFhJFdzV9eE/s4640/IMG_20210128_093718.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2610" data-original-width="4640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjENd8pZ6c2Y0yCJcyOONU-4OdG8elIEOr2Bj859LPY-Ff-fg55C-t2lvBo-B09QSxJlIGg6qz1rvdk5PsyqPCpt14slNUnZu_UOrPb-s0kLeZbEH4ncuxV-DzfDnfm8-VttFhJFdzV9eE/s320/IMG_20210128_093718.jpg" width="320" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">3-4) Opto off and on. Tried and tested in the VUK, so it works<br />properly with a ball too and not just some giant hand covering it up.</td></tr></tbody></table><br /></div><div><br /></div><div><br /></div><div>Bloody brilliant! </div><div><br /></div><div>Pretty happy that I didn't had to make any (more) changes to the PCB and/or create external circuitry. This was also the last remaining hardware that needed to be solved, so onwards to creating the actual game!</div><div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div><br /></div><div>Still here? </div><div><br /></div><div>What do you mean 'downsides'?</div><div><br /></div><div><br /></div><div>Well, yes. </div><div><br /></div><div>This change has pretty much rendered the fuses on the +3.3V and +5V lines completely useless as power will be drawn from the Chipkit (also) regardless. I have moved the screen to it's own power line now though, so worst comes to worst - only a few MCP's will burn to a crisp in case of failure. </div><div>I hope. </div><div><br /><div><p><br /></p></div></div></div></div>rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com2tag:blogger.com,1999:blog-1094715945364929106.post-62853419812998078302021-01-25T08:31:00.006+01:002021-01-25T08:58:19.733+01:00Operation Mother<p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg9SeNrWBikTMF7zouOOGR0rJoIqtIB-mG-O97hjlBq1Rn2qHZY6_Jfh4aFZolHXr0YHIn_rHa8oP_wW3zqmwlKx_KAjPojJ2qGJqZJhOjTMKX8ypeHcPXNgiF7_USaqtVlWN-QQ9mkgk/s2048/IMG_20210124_113919.jpg" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img border="0" data-original-height="2048" data-original-width="1753" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhg9SeNrWBikTMF7zouOOGR0rJoIqtIB-mG-O97hjlBq1Rn2qHZY6_Jfh4aFZolHXr0YHIn_rHa8oP_wW3zqmwlKx_KAjPojJ2qGJqZJhOjTMKX8ypeHcPXNgiF7_USaqtVlWN-QQ9mkgk/s320/IMG_20210124_113919.jpg" /></a></div>So - finally got my greasy fingers around properly installing the motherboard inside the machine.<p></p><p>Still haven't got my opto's to work but at this moment I'll have to live without them. Will need to debug the circuit and possibly rebuild it separately in the future. </p><p>Like most of the work on this build it's a bit of "one step forward, two steps back" since I was only going to screw the board to the backing plate. But... I forgot that the backing plate was made out of cheap fiber board so screws won't work - and - of course the cables didn't reach the intended position for the board.</p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p></p><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3FomhWEQBdRETnqlpuFa_F5eEnyvZP4Z-YzCli48S-GFA6DO0aENA3CRJ6_A8o33mfXg90sBaTFfoR_oAqFSL2Jvui-25CLJmZ9jjKBMUcE-VVcPVWc4N1sZ3FCZVCgj7Nt4_GCmprbs/s2048/IMG_20210124_134845.jpg" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img border="0" data-original-height="2048" data-original-width="1702" height="320" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj3FomhWEQBdRETnqlpuFa_F5eEnyvZP4Z-YzCli48S-GFA6DO0aENA3CRJ6_A8o33mfXg90sBaTFfoR_oAqFSL2Jvui-25CLJmZ9jjKBMUcE-VVcPVWc4N1sZ3FCZVCgj7Nt4_GCmprbs/s320/IMG_20210124_134845.jpg" /></a></div>So I did what any hobby engineer with(out?) self respect would have done; I cut a big hole inside the frame of the head.<p></p><p>This worked alright, but due to the placement of the intended cut everything turned out a bit crooked. Not that it matters much, since now it's done. But I know my future self will grin at this during any maintenance session, haha...</p><p>"Fun fact" - while checking out the playfield, it turns out most of the rubbers have cracked and need replacements. Again. But I guess I kind of was prepared for that and it'll have to wait until the game logic / game rules are completed and the machine is closed up properly.</p><p><br /></p><p><br /></p><p><br /></p><p><br /></p><p>Other than a few mishaps; the board is now installed and I didn't break anything in the process!</p><p><br /></p><p></p><table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto;"><tbody><tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5bC-q88T7H_C65huKhg-0nlItdankMETeybwAIzoq4aqBRuwmrS9U5i1-SkTfy20zIhQ_yWHCLEyZA9ohDmT7RcWiGDGBWDW8_vdNhyphenhyphenXWs5LO-SAqodtWMQhyphenhyphend97VyOI5-nT2GheCm0w/s2048/IMG_20210124_171057.jpg" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="2048" data-original-width="1152" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEh5bC-q88T7H_C65huKhg-0nlItdankMETeybwAIzoq4aqBRuwmrS9U5i1-SkTfy20zIhQ_yWHCLEyZA9ohDmT7RcWiGDGBWDW8_vdNhyphenhyphenXWs5LO-SAqodtWMQhyphenhyphend97VyOI5-nT2GheCm0w/w360-h640/IMG_20210124_171057.jpg" width="360" /></a></td></tr><tr><td class="tr-caption" style="text-align: center;">Installed and ready to be developed! <br /><br />P.S, ignore the double vision display, there's<br />a small gap between the display and the panel at the moment. </td></tr></tbody></table><br /><br /><br /><p></p>rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com2tag:blogger.com,1999:blog-1094715945364929106.post-88826368611372539972020-05-10T18:40:00.000+02:002020-05-10T18:44:15.343+02:00Holy optimizations, Batman!<div class="separator" style="clear: both; text-align: left;">
Spent a "little" time optimizing the code base, along with actually trying to work out the kinks of why optimized mode doesn't work. I'm not all the way there yet, but the results so far are very nice! </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Note: The flickering apparent in both videos is mostly picked up by the camera only and isn't really noticeable IRL, and the refresh rate can be pushed up further. Just keeping it a bit "low" to avoid confusing myself while debugging the rest of the code in case it causes crashes/erratic behavior etc.<br /></div>
<div class="separator" style="clear: both; text-align: left;">
For instance - </div>
<div class="separator" style="clear: both; text-align: left;">
Here's a clip of SD-card videos running as fast as possible in the old code. </div>
<div class="separator" style="clear: both; text-align: left;">
Notice the slow motion (faked by frame-skipping previously, removed here). </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/pe7B3uwFU8I/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/pe7B3uwFU8I?feature=player_embedded" width="320"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
And here's the same clip after optimization. </div>
<div class="separator" style="clear: both; text-align: left;">
Compared to the old version, it's a lot smoother and I'm actually running the videos at 40fps here (faster than original 30). Notice the long blank space between the videos, where the old version barely finished rendering the first one when the second one was timed to start. :) </div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<iframe allowfullscreen="" class="YOUTUBE-iframe-video" data-thumbnail-src="https://i.ytimg.com/vi/Kdk0TRH1XG8/0.jpg" frameborder="0" height="266" src="https://www.youtube.com/embed/Kdk0TRH1XG8?feature=player_embedded" width="320"></iframe></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: left;">
Some crude counter increments:</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Previous one-second count: 28402</div>
<div class="separator" style="clear: both;">
New one-second count: 91857</div>
<div class="separator" style="clear: both;">
<br /></div>
<div class="separator" style="clear: both;">
Quite the improvement! </div>
<div class="separator" style="clear: both; text-align: left;">
Very satisfied with the results so far!</div>
<div class="separator" style="clear: both; text-align: left;">
<br />In case you didn't notice, I used two simultaneously running SD-animations (background & fx) during the second video. Works great and allows me to spice things up. #thumbsup <br /></div>
<div class="separator" style="clear: both; text-align: left;">
And the cable mess have been mostly corrected now, all lights tested and working. :) </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnkpUaD-A57j30gF1arha4o356EFt_29-x7qfu1oMea7VgRMXQHy2eG4IaLTM0Q4WjxIFyTm7fFXkII34h2yXCtR9-242DP_RczvUjhB1iOxs5NM6duHfLeTS-U-9U-nqqow_c2mJ2kvc/s1600/IMG_20200506_143446.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjnkpUaD-A57j30gF1arha4o356EFt_29-x7qfu1oMea7VgRMXQHy2eG4IaLTM0Q4WjxIFyTm7fFXkII34h2yXCtR9-242DP_RczvUjhB1iOxs5NM6duHfLeTS-U-9U-nqqow_c2mJ2kvc/s640/IMG_20200506_143446.jpg" width="360" /></a></div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com5tag:blogger.com,1999:blog-1094715945364929106.post-8285773574081686952020-05-04T10:26:00.000+02:002020-05-04T10:26:15.183+02:00Rolling with the punches! What's this... two post within a year? Yes - it actually happened! ;)<br />
<br />
Been using my new found determination and time to keep working on the machine, finishing up bits and pieces all over. To start off - flashers, GI and playfield lights are now soldered up and working correctly.<br />
<br />Well, mostly at least. <br /><br />I ran out of cables so I had to order more. <br />And I kind of ran out of output ports for the lights, so I'll have to hook up some of them to the AUX-ports I made on the board. (phew). But it's all good! <br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYigqGTDhtfHRexmMQyAuGLXSyOw-C2wmsFrJ89KMpH2eGs-hOQmhigz7a29YkSNRFU-_EXjiijAaMASESkpWkeSNY3yNUJp0YOAUWEBxpSZmUXX_x1ctnXP6K-WsVHfCu1FJm4cUfKVc/s1600/IMG_20200503_010835.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1600" data-original-width="900" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhYigqGTDhtfHRexmMQyAuGLXSyOw-C2wmsFrJ89KMpH2eGs-hOQmhigz7a29YkSNRFU-_EXjiijAaMASESkpWkeSNY3yNUJp0YOAUWEBxpSZmUXX_x1ctnXP6K-WsVHfCu1FJm4cUfKVc/s640/IMG_20200503_010835.jpg" width="360" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">1) All lights, switches and solenoids are wired/soldered! </td></tr>
</tbody></table>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc0CF4rYfDK4yeI4rxDsA4-XRlQbhjfiSuba56B6fVMqEaneR4q7I8CJJ_VAJ29SBNEi6qopA2EEzhBCtMBB3mXoqPLZHM4bA5_KrBrh0_GIsPtIXPDjSQ_45UM_IC0m-Tx5_ux8HGqw8/s1600/IMG_20200503_014551.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="900" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgc0CF4rYfDK4yeI4rxDsA4-XRlQbhjfiSuba56B6fVMqEaneR4q7I8CJJ_VAJ29SBNEi6qopA2EEzhBCtMBB3mXoqPLZHM4bA5_KrBrh0_GIsPtIXPDjSQ_45UM_IC0m-Tx5_ux8HGqw8/s640/IMG_20200503_014551.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">2) It looks very messy, but the cables are actually measured and the "exact" length required. <br />I ran out of zip-ties, but will of course tie everything neatly when the new arrives. </td></tr>
</tbody></table>
<br />
As for input during menus, I've gone ahead and made the switch "box" that houses the menu buttons. It will be painted and/or covered with a left-over decal, but I'll do that once I've finished the building. <br /><br />When not in maintenance mode, the red button will lower volume and the green button raise it. Pressing the white button enters maintenance mode. During maintenance mode red/green goes left/right (use can also use flipper buttons), while the white button confirms and start button cancel. <br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipm_X2LVMEfn_xoz1QvC8oTlYrRH9eCk8WnkCVTcZv1tekNLg-wJpbWMvQOcsHEjEmeEiUS4QG6Z3-8WXESnvOcEp3CkRQOGsjdVItN7bVDs_WkmZdcpahdaYFgVsDqFQFHApsKDT4maI/s1600/IMG_20200503_184655.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="900" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEipm_X2LVMEfn_xoz1QvC8oTlYrRH9eCk8WnkCVTcZv1tekNLg-wJpbWMvQOcsHEjEmeEiUS4QG6Z3-8WXESnvOcEp3CkRQOGsjdVItN7bVDs_WkmZdcpahdaYFgVsDqFQFHApsKDT4maI/s640/IMG_20200503_184655.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">3) The early draft of a control-box inside/behind the coindoor. <br />Basically - menu buttons and volume etc. </td></tr>
</tbody></table>
<br />
I've also adjusted the syringe to be a little more reliable as a pinball toy and replaced the tiny LED with a proper pinball LED-bulb. <br /><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGgE2WCX55xERIosOQhrmNshzji6gd57cmo3aIx5iqDsqYncl1gg7dkkSmAo3WmM16xRRFyg63ZeO6UOCsplWvaGMXHTOzN8KrhTxboELVSipHEetyDtBmGHCU0RBFZbTS4ZjMrfcpagI/s1600/IMG_20200503_144616.jpg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="900" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiGgE2WCX55xERIosOQhrmNshzji6gd57cmo3aIx5iqDsqYncl1gg7dkkSmAo3WmM16xRRFyg63ZeO6UOCsplWvaGMXHTOzN8KrhTxboELVSipHEetyDtBmGHCU0RBFZbTS4ZjMrfcpagI/s640/IMG_20200503_144616.jpg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">4) I replaced the standard LED with an actual pinball LED-lamp. <br />No more worrying about accidentally applying too much voltage! </td><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
<div class="separator" style="clear: both; text-align: center;">
</div>
<div class="separator" style="clear: both; text-align: center;">
</div>
<br />
Software-wise I've optimized loading and SD-buffer creation to utilize hardware interrupts for SD-card loading. I've used this a while for DMD rendering, but now I've managed to get it running on the SD-card as well.<br />
<br />
So the loops are pretty tight now, which are very nice. <br />For instance - When sending new data to the DMD I process switches/solenoids etc in the small gap the display needs to stay blank. This is not uncommon among older games which did processing between scanlines (more or less). Works a treat and pretty much doubles the performance.<br />
<br />
And now I've done the same for SD-loading, where I basically start loading 512 bytes, and as soon as they're done loading I schedule the next batch and start building the buffer with the 512 bytes just loaded. The unpacking is needed to convert 2K (half-byte per pixel) to a DMD buffer (byte per pixel). The SD card is slower than building the buffer, so that's the reasoning behind not loading the full frame from disk. Previously I built the buffer after all 2K was received, but now I've
shaved of a few milliseconds by doing it while "idle". Very nice! <br />
<br />
I've also started the rather tedious task of converting away from Arduino/Chipkit's "String" class. It's ridden with bugs, memory intense and in fact - won't even run when compiled as O3 ("optimize for speed")... There seem to be a problem with the hardware watchdog resetting during optimized compilations, but I can't get my hands around why at the moment. Considering the standard/built-in libraries won't even run properly, I'm not terribly sure my code is the culprit here...<br /><br />But first, back to the 80's we go; hello, C-string. <br /><br />rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com0tag:blogger.com,1999:blog-1094715945364929106.post-13112776155976511142020-04-20T18:46:00.004+02:002020-04-20T18:47:30.370+02:00A Ferrari-style pit stop! Got around to do a little tinker on the board the other day!<br />
<br />
* audience cheers *<br />
<br />
First - had to recreate the development environment on my laptop. Took a little while, but well worth it in the end. And, naturally, the SD card for audio (and the reader) had given up and didn't work. (...sigh). A purchase of a new reader and a format later solved that. No big deal. But annoying.<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1eYxuxjFOJhTKXZViH2PGqVGjPRQSXPWSmazaIA8X6jYPZ-mstX4SOfcg52xfZYx9Rhg3nhaE1n-sdx_uPsGU0NR6_wgO8YISwk25pMBvb7Am260Qn0P2L5r5-1yFp7x6TXwjpnmycKg/s1600/IMG_20200411_113448_01.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEg1eYxuxjFOJhTKXZViH2PGqVGjPRQSXPWSmazaIA8X6jYPZ-mstX4SOfcg52xfZYx9Rhg3nhaE1n-sdx_uPsGU0NR6_wgO8YISwk25pMBvb7Am260Qn0P2L5r5-1yFp7x6TXwjpnmycKg/s640/IMG_20200411_113448_01.jpg" width="640" /></a></div>
<br />
<br />
<br />
Still a bit of wiring to do, but slowly getting there!<br />
Switches, flashers and global illumination is now done, and with a little luck I'm done with the playfield lights in the coming days (or so).<br />
<br />
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRbn67WyZ2OCHLariMhQnCVXS_7H4ZeAVbiOPa7UYKGmqf_fazoCrv_6W9m3BsqXbp9x2tsBQwRrDWOEiSg3XLdKmcqXMoXFzeVvgGK2VRdTL3WJQDQ-WKZ8aWYOQJnfmJ5C8uDwJ1g4k/s1600/IMG_20200411_113534.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="900" data-original-width="1600" height="360" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhRbn67WyZ2OCHLariMhQnCVXS_7H4ZeAVbiOPa7UYKGmqf_fazoCrv_6W9m3BsqXbp9x2tsBQwRrDWOEiSg3XLdKmcqXMoXFzeVvgGK2VRdTL3WJQDQ-WKZ8aWYOQJnfmJ5C8uDwJ1g4k/s640/IMG_20200411_113534.jpg" width="640" /></a></div>
<br />
I knew about this before, but I may have to increase voltage for the lights. Currently 5V is a bit on the low side, as lights are quite dim. To avoid using a lot of constant power I also duty cycle the GI, so I figure 12V would be ideal here. <br />
<br />
Luckily; there's not a whole lot that needs to be done - either cut the 5V traces and connect the existing 12V line, or move the drive cables to a 12V port on the board. This can be done "any time" so if the board feels too dim during actual play I'll adjust accordingly. :)<br />
<br />
Stay safe!<br />
<br />
<br />
<br />rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com0tag:blogger.com,1999:blog-1094715945364929106.post-53367569120077329982019-06-15T13:06:00.002+02:002019-06-15T13:06:45.362+02:00"Woah" - Keanu ReevesCan't believe it's been six months since the last update. :|<br />
<br />
This will be another short and disappointing one, unfortunately.<br />
I've had little to no time to work on my pinball machine, due to work, hobbies, life and family in general. And I've gone pretty close to burning myself out the last years, so I must take a hiatus from several projects for a little while.<br />
<br />
I still expect the machine to be done somewhat soon, so bear with me. :)<br />
<br />
Thanks again and check back from time to time! \m/rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com1tag:blogger.com,1999:blog-1094715945364929106.post-41460813893316084762018-12-29T22:23:00.001+01:002018-12-29T22:23:06.038+01:00....still cables. <div class="separator" style="clear: both; text-align: left;">
Waiting for cables.... damn holidays. :) </div>
<div class="separator" style="clear: both; text-align: left;">
In the meantime, enjoy this random photo (source unknown). </div>
<div class="separator" style="clear: both; text-align: left;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<br /></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR29556vXDXWvy9Iw9CCS_s4F-0FdeEqiyhEcgKIcoJ-RiQEtIUWYcSe69DvhehdBkTwLMG46MuxC-swD-3qSFF8quUEPnm2Grrr1M5-16e0WmD47lwlQLMzczwbEB5ba2iruMb6mo__A/s1600/a5MM0xg_460s.jpg" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" data-original-height="920" data-original-width="460" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhR29556vXDXWvy9Iw9CCS_s4F-0FdeEqiyhEcgKIcoJ-RiQEtIUWYcSe69DvhehdBkTwLMG46MuxC-swD-3qSFF8quUEPnm2Grrr1M5-16e0WmD47lwlQLMzczwbEB5ba2iruMb6mo__A/s1600/a5MM0xg_460s.jpg" /></a></div>
<br />rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com3tag:blogger.com,1999:blog-1094715945364929106.post-39522957411655523012018-12-26T17:24:00.000+01:002018-12-26T17:24:08.844+01:00Cables... oh god. So many cables...Been busy removing old cables and stripping the playfield from "debris" the last few weeks. It was a big but crucial step in order to get the new wiring neat and functioning properly. <br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEZDWuONfEqFc4pKDcFeSNDNQaR_jpT0tshC1wZNusBY1BHEahFCvd5RAI7BmauXA8Xtisda53SBGMLYlBKBdHrw48OrhD2x1FHUDc5PtuPtyloV108cwSB9mbtXlv4E6HTQWKFTTHdNw/s1600/1.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1600" data-original-width="1200" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgEZDWuONfEqFc4pKDcFeSNDNQaR_jpT0tshC1wZNusBY1BHEahFCvd5RAI7BmauXA8Xtisda53SBGMLYlBKBdHrw48OrhD2x1FHUDc5PtuPtyloV108cwSB9mbtXlv4E6HTQWKFTTHdNw/s640/1.JPG" width="480" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">1) Cutting commenced! It's funny how destroying things always goes faster than building them...</td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiol_VEFE6jaid3RLdLevwJ3qzgfzID-h1AjjBEo0H2Q4BEOz64Y9JbsZ7PPxXUOBfdCU0RyZ_XpMiG3QphvnunG2UoFn8b4J7IOCHGnB2pTxqGgstTF2CVDISFMQhhcl1vpjr7lkWVbT0/s1600/2.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEiol_VEFE6jaid3RLdLevwJ3qzgfzID-h1AjjBEo0H2Q4BEOz64Y9JbsZ7PPxXUOBfdCU0RyZ_XpMiG3QphvnunG2UoFn8b4J7IOCHGnB2pTxqGgstTF2CVDISFMQhhcl1vpjr7lkWVbT0/s640/2.JPG" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">2) Patient is on the operating table. <br />Straight under a florescent light, there's _finally_ a good work space to work on the machine! </td></tr>
</tbody></table>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAt1c-XigcDMqK_K3gedeImEPPnLMnCcUCcYIBtY7A5wOSngz_bFNQy67P-AhvB8Xq7nY7-nMjTnw8S6kxWhca0odANypNauqelK_FMrDBE4JWAeISxgfQCwGMFOnDRPCCA0OYNvfvIsM/s1600/3.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgAt1c-XigcDMqK_K3gedeImEPPnLMnCcUCcYIBtY7A5wOSngz_bFNQy67P-AhvB8Xq7nY7-nMjTnw8S6kxWhca0odANypNauqelK_FMrDBE4JWAeISxgfQCwGMFOnDRPCCA0OYNvfvIsM/s640/3.JPG" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">3) Remains from the sockets and switches. The cabling all in all filled a big plastic bag... :| </td></tr>
</tbody></table>
<br />
<span id="goog_1821800083"></span><span id="goog_1821800084"></span><br />
<br />
I found out that I had placed all switch diodes wrong, so I actually redid the switches... twice. <br /><br />Oh the horror when reconnecting a fully rebuilt pinball table and.... nothing. Haha. <br /><br />But it's done properly this time, and as an added bonus the wiring is identical to commercial machines now. This means that if I forget how it's built in a few years I can always look up the wiring online - or in the manual I've decided to write for the machine. The manual will keep track of all hardware, parts and positions etc, and will have pictures and "maps" to show each position. I have also started gathering manuals for the actual hardware used on the PCB and table/cabinet. Nothing should have to be guessed or "reinvented" during the next repair. :) <br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnvxvWW-qjTlHpy3_U8FvXgNwArbnpCGyrFtCnFIFUQ5R2rodv1AWs0CCvHVJtaKC29az1I3jS00GwQ1A1IKvJMtTA8zk9OVFEiB7IISz3kdiiwhtDlFLm2KtD-9UJjX5O0qsQU9yIl3k/s1600/4.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgnvxvWW-qjTlHpy3_U8FvXgNwArbnpCGyrFtCnFIFUQ5R2rodv1AWs0CCvHVJtaKC29az1I3jS00GwQ1A1IKvJMtTA8zk9OVFEiB7IISz3kdiiwhtDlFLm2KtD-9UJjX5O0qsQU9yIl3k/s640/4.JPG" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">4) Yo, Internet. Welcome to my crib... </td></tr>
</tbody></table>
<br />
I've also miscalculated the amount of cabling necessary
now that I've gone full matrix on lights and switches and making sure each switch follows the trunk. So basically I'm 90 meters in and only had enough cables for the switches. :'D <br />
<br />
But more cables are on the way, so early next year I'll have the lights and other cables in place! <br /><br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDLZmJffTddGKtKyQUE0x1j6QxhLDTabi9yaDU5IAeDX0VDRGXSU7r-GZsfzIBNpQ4NI9C_6yz0Y2TuKJjnxxpoFgw3wWDOAb9S31CSc6F3geMguSm-5SnAGkvFWL8aMyr9kUVAjQMstY/s1600/5.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgDLZmJffTddGKtKyQUE0x1j6QxhLDTabi9yaDU5IAeDX0VDRGXSU7r-GZsfzIBNpQ4NI9C_6yz0Y2TuKJjnxxpoFgw3wWDOAb9S31CSc6F3geMguSm-5SnAGkvFWL8aMyr9kUVAjQMstY/s640/5.JPG" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">5) The finished (more or less) wiring for switches! Since I've been using different switches of various makers<br />I've unfortunately not been able to keep a pro-standard everywhere, hence the "floating diodes" in a couple of places. <br />I also ran out of shrink tube, which will be used everywhere there's a cable "edge" visible. </td><td class="tr-caption" style="text-align: center;"> </td><td class="tr-caption" style="text-align: center;"> </td><td class="tr-caption" style="text-align: center;"> </td><td class="tr-caption" style="text-align: center;"><br /></td><td class="tr-caption" style="text-align: center;"><br /></td></tr>
</tbody></table>
<br />
<br />The coding was also revamped slightly to accommodate the changes in the switch matrix, and overall it seems rock solid. Of course, it will be tested and retested during game rules programming, but I haven't been able to "trick" the machine from detecting hits now, something that was possible earlier due to the relatively (very) slow switch detection. <br />
rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com1tag:blogger.com,1999:blog-1094715945364929106.post-74096591053110476042018-11-29T21:05:00.000+01:002018-11-29T22:57:48.115+01:00A Pin Best Servo'd Cold...<div>
Woho, a proper update!</div>
<div>
<br /></div>
I've rewritten (or rather written) a servo library that piggybacks on the existing I/O loop. The good thing is that there's zero jitter and no "overflow" or "rollover" issues that is present in some libraries, and it seems to work pretty well. Although I had to guesstimate certain values, as the servos require a rather exact timing to function, it should be close enough for my purposes. I expect to trim and tune these parameters once everything is connected properly (like everything else) but it's nice to see the "last bastion" of remaining functions taken care of.<br />
<div>
<div>
<br />
Furthermore, I've finalized solenoid, switch and light functions so they work properly and reliably with callbacks. I think I covered the switches in an older post, but the hits are buffered and executed in the order they were triggered and is put in the outside loop at ~40 Hz. </div>
<div>
<br /></div>
<div>
For time critical events I've add high-prio callbacks that gets called right away in the inner loop (even before buffering the hit) that will be used by slingshots, flippers and bumpers, to ensure these solenoids gets triggered within the next microsecond. Sound, points and game related callbacks will run as usual in the outside I/O-loop. Hopefully this will, and should, make the game feel super snappy and responsive.<br />
<br />
I've started the time consuming work of making the cables needed for connecting the new PCB-board to the pinball machine, and it's a few hundred meter cables that needs to be redone. Obviously I only do the ends of the cables, but still... ;)<br />
<br />
So things are rolling once again, which is rather nice!</div>
<div>
<br /></div>
<div>
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcpmuHLzU3AczrSZ1-bhZSr7hxUCxQEeldwG5I2ubJIFCYAvarsxdx96cUt5BsIluZDBqFeGwT1sY2PpT15CquOmmE9IhxyAGU-P298WaM5_rxpDTGbpC13i3vqotYDCmEFg6KWTAb9pw/s1600/IMG_0902.JPG" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgcpmuHLzU3AczrSZ1-bhZSr7hxUCxQEeldwG5I2ubJIFCYAvarsxdx96cUt5BsIluZDBqFeGwT1sY2PpT15CquOmmE9IhxyAGU-P298WaM5_rxpDTGbpC13i3vqotYDCmEFg6KWTAb9pw/s640/IMG_0902.JPG" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">1) Doesn't exactly show the servos, but at least the colors are nice. ;) </td></tr>
</tbody></table>
<br /></div>
</div>
rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com1tag:blogger.com,1999:blog-1094715945364929106.post-83597486906379073382018-06-01T00:50:00.002+02:002018-06-01T00:50:58.376+02:00Not dead - just hibernatingSorry for this update, hehe.<br />
Many subscribers probably sees this thinking it's another fancy development post. ;) <br /><br />
I've got so much going on in my life at the moment, so there's just not any time to work on the machine (it's been almost five months since the last update! :O ). The machine isn't abandoned, so please check back from time to time, but there will probably not be any work done until August/September.<br />
<br />
See you sooner than you think and thanks for helping me stay motivated through the years! :) rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com5tag:blogger.com,1999:blog-1094715945364929106.post-73045350905570953992018-01-28T17:35:00.000+01:002018-01-28T17:35:04.332+01:00Remembering The PastNeeded the soundboard from the "old system", so I opened up the pinball machine for the first time in a while... And I was actually surprised to see what a mess it was/is! It's a wonder it even worked at all, haha. :D<br />
<br />
Anyhow -<br />
It was quite satisfactory to see that where the old setup used tons of different boards, two MCU's and a cabling from hell, the new setup is ultra neat in comparison. And despite having "only" one MCU, the performance is 4x in most cases, but 200x when it comes to I/O. Hardware stability is improved a lot as well! I'm also pleased with the new code library compared to the old, which will make game programming a breeze.<br />
<br />
The maintenance mode is always enabled, which gives me detailed input on sounds running, scenes started, sound and input / output etc - so I can see right away if there's a problem. Love it!<br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBsEpTdDQTQphxFlbiBphu_bphEHmzDOVCG08v-AOXljJzPdCF84O_OX3jBzvPUOS8Pj8FiVBTOyZH_x3bdvVf3CPF1ITm5205IbILGES3_R30y64pXxB19jJ4Gr6IdwWa6lH7bsQDXeY/s1600/File+2018-01-26%252C+01+18+28.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1600" data-original-width="1200" height="640" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEjBsEpTdDQTQphxFlbiBphu_bphEHmzDOVCG08v-AOXljJzPdCF84O_OX3jBzvPUOS8Pj8FiVBTOyZH_x3bdvVf3CPF1ITm5205IbILGES3_R30y64pXxB19jJ4Gr6IdwWa6lH7bsQDXeY/s640/File+2018-01-26%252C+01+18+28.jpeg" width="480" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">1) The old....monstrosity. This is actually HW3.0, if we're counting revisions. <br />HW4 (current) is seen in the post below, which despite being in development "mode", still looks tons better. </td></tr>
</tbody></table>
<br />rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com1tag:blogger.com,1999:blog-1094715945364929106.post-52245017521821141582018-01-22T13:20:00.000+01:002018-01-22T13:20:15.433+01:00Mostly Behind The ScenesWhat is up, Internet!?<br />
<br />
Most of the work at the moment isn't very visually interesting, but I'd thought I'd share a little snapshot of the current (messy) state of the debug screen. What I'm verifying here is that the various conversion and positioning functions are functioning properly. Which they are. <br />
<br />
On top of this, I've fleshed out the switch callback handling, which includes buffered and queued switch hits. This allows the best of both worlds; the interrupt routine can register switch hits as fast as it can detect ( 1000+ > Hz per switch) while the game loop is chugging along at 40Hz. So no switch hits are missed, and the response for each hit is a maximum of 25ms late. Certain switches such as flippers, slingshots and bumpers are allowed to trigger the corresponding solenoid immediately and allow the sound and gameplay events to happen "later". It might be possible to queue sounds right away since the serial out is asynchronous, but I have yet to test this. What ever decision is made has to manage up to 8 simultaneous switch presses so each response must be pretty tight. I don't want the machine to run fine during single ball and crash during multiball etc. :) <br />
<br />I've enabled printing a copy of the internal switch matrix and the current animations, lights and so on in the console maintenance mode, which is guaranteed to be correct at all times unlike an offline version in Excel, for instance. On top of that I have started work on the state machine for modes and various scenes, so things are progressing nicely, albeit slowly! <br />
<br />
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqpOsZNDarls_1Qc7SgzRDNH9TOYXAMBzn-9k9FlMtlTzaJkjUQ3Eh5QsFMp0zriMoXuuW-a4845QhnUdP76JkEnMN4AqHMsctIH2Uhlog7yxAJISCWAiKahYpvhh-rPlbxnTxg_2p9JE/s1600/File+2018-01-22%252C+13+02+22.jpeg" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1200" data-original-width="1600" height="480" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEhqpOsZNDarls_1Qc7SgzRDNH9TOYXAMBzn-9k9FlMtlTzaJkjUQ3Eh5QsFMp0zriMoXuuW-a4845QhnUdP76JkEnMN4AqHMsctIH2Uhlog7yxAJISCWAiKahYpvhh-rPlbxnTxg_2p9JE/s640/File+2018-01-22%252C+13+02+22.jpeg" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">1) Development board with debug options enabled on the DMD. I've also created a "overflow" function for scores, <br />so that any score larger than 999 999 999 will be visually divided by 1000 and rendered correctly. I believe this is how newer tables by Stern work, unless I'm mistaken. </td></tr>
</tbody></table>
<br />rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com0tag:blogger.com,1999:blog-1094715945364929106.post-89405011897148872222017-10-17T00:13:00.000+02:002017-10-17T11:37:13.009+02:00Terminal Madness!<div class="separator" style="clear: both; text-align: left;">
</div>
<div class="separator" style="clear: both; text-align: left;">
</div>
I decided it was time for a proper maintenance terminal function, so I coded up a rather crude but functional terminal maintenance function. <br /><br />It goes hand in hand with logging boot status and game state changes etc, and will allow for _much_ speedier creation of game rules without actually pressing switches. Commands can also be chained, so I can easily create a sequence of actions to be simulated to properly activate features and modes instead of faking it by turning a specific mode flag on etc. This prevents me from mistakenly forgetting to reset something that might break the game - very handy! <br />
<div class="separator" style="clear: both; text-align: left;">
</div>
<table align="center" cellpadding="0" cellspacing="0" class="tr-caption-container" style="margin-left: auto; margin-right: auto; text-align: center;"><tbody>
<tr><td style="text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9IUcBf0imldIYiRqBrTCKDuzPoM0nxYZcZurTHYwdvtLdz7snSLZFDOSPd_BaYFeClBPoy4Kuq2Atw6c_e4m5T44AHKvO1Q-mJWkkzh5xcO_4WX7vBhxNaWaRRM_TGZI5HwLGT8wxTjE/s1600/Screen+Shot+2017-10-17+at+00.04.44.png" imageanchor="1" style="margin-left: auto; margin-right: auto;"><img border="0" data-original-height="1020" data-original-width="1600" height="408" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj9IUcBf0imldIYiRqBrTCKDuzPoM0nxYZcZurTHYwdvtLdz7snSLZFDOSPd_BaYFeClBPoy4Kuq2Atw6c_e4m5T44AHKvO1Q-mJWkkzh5xcO_4WX7vBhxNaWaRRM_TGZI5HwLGT8wxTjE/s640/Screen+Shot+2017-10-17+at+00.04.44.png" width="640" /></a></td></tr>
<tr><td class="tr-caption" style="text-align: center;">1) UECIDE (how's the new name going, Majenko? ;) ) with a terminal active. Me gusto. </td></tr>
</tbody></table>
<div style="text-align: left;">
Now, if only there was a smart and efficient way of handling game code from EEPROM or SD-card. That would be excellent since a re-flash both take a long time and waste a full erase cycle on the Chipkit (a process that eventually will break the board). <br /><br />It should be relatively easy to achieve, but it must be robust and extensible. <br /> </div>
rasmadrakhttp://www.blogger.com/profile/15811309356939122577noreply@blogger.com0