Parallax Propeller Poker
Posted: April 9, 2009
I got this Propeller development kit a while ago, but never really had a chance to play with it. This is a pretty neat chip actually. It has eight 32 bit cores that run independently at speeds up to 80MHz. The devkit comes with VGA and PS/2 ports for keyboard and mouse and other stuff. It can be programmed in either assembly or a language called Spin and comes with a library of Spin objects for the keyboard, VGA, and other stuff.
So finally a couple days ago I thought of this idea of doing a video poker game for Propeller so here it is. I took a bit of the logic from a Java version of this game that I did and translated it to Spin. Unfortunately, the VGA library ended up being a bit restrictive. Every 32x32 pixel block could only have two unique colors (out of a palette of 64 colors). Also, all the text and images I drew using a small python program I wrote that turned "ascii art" into Spin code I could paste into the .spin source. This was quite time consuming and tiring, so due all this the graphics here are quite 1983 looking, which actually I kind of like :).
Anyway, to run the development version game (which can download below) the Propeller devkit is needed along with a PS/2 keyboard, and a VGA monitor (or flat screen as I have in the picture below). Load the two spin programs and build the PropellerPoker.spin as the top module. On the keyboard: b = bet, 1-5 = hold cards 1 to 5, space = deal, and capital A = add more credits.
Related Projects @mikekohn.net
The Final Product
So after getting the game working on the development board, I wanted to build something for it. I was thinking of building a full poker machine cabinet, but I couldn't find a cheap LCD display to take apart for it, so I decided on just mounting everything to a piece of wood in the shape of a little table. I cut a coin slot in the wood and put an IR emitter and detector on either side so it can detect a coin falling through it. I also added a little speaker which I ripped out of an old Juice Box media player. Finally I added some little sheets of metal for buttons using a cap-sense circuit/software. Basically what it does is, if a finger is touching the metal piece, it acts like a capacitor. So I set the input pin on the micro to output and set it's value to 0 creating a virtual ground and discharging the "finger capacitor" for 1ms. Then I set the I/O pin back as an input and wait 5us (actually the page I read how to do this on said 5us, but for my resistors and such I'm doing 10us) before testing the value of the input. If the input is a 0, then the finger capacitor is being charged (aka, there is a finger on the metal piece so detect it as a button push) otherwise if there is a 1 on the i/o pin then the capacitance of the line was next to nothing and no finger is there. Probably I should have use shielded wire from the resistors to the metal plates, but I didn't have any and I was too cheap/lazy to go out and buy some. Using object-oriented techniques, I made my PokerKeyboard.spin module directly pretend to be the stock Parallax Keyboard.spin module so they can be substituted for each other. Or at least, I think I did.. I forgot to test this :).
Here's a video showing coins being inserted into the poker machine and the playing of a hand. https://youtu.be/0xinnBKeauM
Here's a screenshot of the game running. Since this time I've added a little more. It says "BET:" now next to the number on the right side and there is a $ next to the amount of credits the player has.
This is the little board that I originally developed the game for. I then created my own circuit based on the devkit but added a speaker, a coin slot, and cap-sense buttons.
Here's the poker game from the top with the cap-sense buttons and a coin slot.
Here's the entire circuit all soldered together and mounted to the bottom of the little wooden table.
Copyright 1997-2024 - Michael Kohn