I have seen a number of pico-8 home-made consoles and had an idea: what if there was a pico-8 operating system, designed for making that sort of thing.
--If I am confusing or missing big parts of the idea, please let me know!
here is what I came up with:
1 .p8cart file:
this is a (renamed) folder formatted like this:
this is where the game data saves to
all extra cards loaded by the main game go here
-gets up, down, left, right, Z, X from up to 2 input sources (2 controllers for example)
-creates it's own save location (so it is entirely self contained)
-loads custom filetype (more on this later)
-NO EDITOR OF ANY KIND
-has folder for local carts
-searches for special filetype on any external devices (ex:usb)
-only one tab: games
this tab would list all local carts, as well as any carts found on a external device.
-the os would load cart files which would be something like .p8cart
these would be like .p8.png BUT would not allow access to source code/sprites
-can be made with save cartname.p8cart
A lot of it is really just slight changes to the current system
ex: cart list could just instead list carts from specified folder
new filetype could just be an extension change
save cartdata to local folder, rather than appdata
loads directly into cart list
(the operating system part could just be done via command (not part of the application but done by the user) to run it on device startup and I'm not sure about reading things like usb for data)
> A lot of it is really just slight changes to the current system
No, it really isn’t. An operating system is responsible for connecting to all hardware components, managing programs, starting user sessions, displaying windows… It is a ton more than what pico-8 is doing.
What pico8 really needs is for the at least the player software to be opensourced. I understand why it hasn't been, at the end of the day pico8 is a product. However, we already have the web player. If the official pico8 player was open sourced, it would be easier for hardware projects to run pico8 games. So far, every project outside the pocket chip has had to be essentially made from scratch. Most lack features as well
uuuh, @queequeg i have a couple of questions. I'm doing that too at the moment and i really want to put it in a bar.
1.Do you use a coin acceptor, and if so, how do you utilize it? My plan is custom games where the "insert coin" thing is just a press from Player3 or 4 using one of the open pins on the controller board.
2.How do you avoid the player getting out of pico8 without stripping the pause button? Or do you strip it and keep one game running at a time?
3.What display did you use?
4.Did you go for one or two players?
Thanks in advance :)
- I have used coin acceptors. I feel like I wouldn't anymore. The amount of money it collects is not significant, in a bar the game is more of a feature than a money maker. Well, I should say that I can rarely find a place to put games. People really don't get it these days. The coin acceptors I used are like 50 bucks too, that's a consideration. I had a thing about coin acceptors but I got it out of my system.
Anyway yes, just assign a key for the coin acceptor and hook your interface up to the coin acceptor microswitch. I assume by controller board you mean an Ipac or something, which is fine but also costs 50 bucks. What I do now is take apart a USB keyboard, pull out the little circuit board and throw away the rest. There is a little barcode of contacts on it. Hook it up to a computer and go to a keyboard tester website. This is annoying. Take a wire and short out pairs of contacts until you have all the inputs you need. Make a note of which pairs are what (2 from the left plus 3 from the right is one player down). Take an x-acto and scratch off the coating on there, you can't solder to it. Once it is shiny, solder a wire to both and hook those wire up to the contacts of your microswitches on your arcade button/joystick, voila. You've got a free interface- almost free, I find USB keyboards at reuse stores for 5 bucks. I've done this 5 or 6 times and it gets easier. Every once in a while you come across a keyboard that doesn't work for this- avoid the ones with a million media buttons and the really cheap ones. I'm pretty good with dell ones.
- Not so much stripping it as not wiring a switch up for it? The only multigame I made was for my kids and not in a retail setting- I stole the code for the "toy box game jam" to use as a menu system and when you load a cart out of that you can use this: load(cartname[cartnum],"back to arcade")
which adds a 'back to arcade' option in the pause menu. Then I just added a pause button above the player controls so they can hit pause and navigate back to the menu rom. It works great. I've been adding games to it for years and it's over 400. That machine is a one player game, most pico8 games are one player games so I just decided to make it that way. You could also do what old neo geo games did, which was have a multicade with buttons to select which game you want. Just wire up another dedicated button or buttons. I had a game where I put a button on the top of the cabinet that switched between cart, just put a little code in both that loads the other cart.
- This is mainly good for smaller machines. I find the biggest old flat screen monitor I can...either at a thrift store or on the side of the road. As close to 4:3 aspect as you can get it...newer monitors suck obviously because they are "pillar boxed" with blank space because of their aspect ratios. But there are still nice old monitors everywhere. True, they don't have HDMI input, so if you are using rPi 3 like me you need to convert it to VGA. There are converters on amazon for 10 bucks or so that strip the audio out which you need to send to your amp. Anyway, with the monitor, stip the bezel off carefully. Careful with the buttons, you want to make it so you can reach those if you have to, and it's not a bad idea to make a note of which buttons are which because they usually aren't marked on the little circuit board. You might want to mess with the brightness and contrast now to get it where you want it for the game. Now, plug in your little raspberry pi running pico8 and you can see where the pico8 will display. You can take some black electricians tape and mark right on the display where the edge of that is. You've probably ended up with a square that is 10 1/4" by 10 1/4". Kind of small, but people stand close to arcade machines. I find the displays good to look at too, it should be pixel perfect with no upscaling or anything. Now you can cut a nice bezel out of 1/2" plywood or something that will perfectly cover everything except for the display portion of the screen. I just attach the bare monitor to the back of the wood with some braces. God forbid the monitor breaks someday. Then, and this is the only expensive thing you can't cheat on, get a piece of tempered glass to cover the whole bezel and monitor. Probably cost you 30-40 bucks. I've used Lexan and it scratches and even deformed slightly from the heat of the monitor.
You didn't ask but then I send the sound to one of those 12V amps they sell in a metal housing for 12 bucks and use 1 or 2 3.5" speakers for sound. Plenty loud when pointed at the user through a grill.
- Depends on the game, most of the pico8 cabinets I made are kind of whimsical, so the ones I made were usually one player. Not for any reason.
I made an 8 player game (!) but it's not pico8 and it's running on a little PC.
Happy to help, hope that's all clear.
Oh I should also mention, you mentioned GPIO, I did figure out how to use the GPIO pins by doing memory pokes in Pico8, I had a game that needed to turn on lights and pumps and stuff so I hooked up a relay board to the GPIO pins of the rPi- HOWEVER I had to do it by running raspbian and booting to a pico8 cart after startup instead of the method I usually use, which I can't seem to find on the internet anymore...it boots straight to the cart? I guess the guy took his blog down. I think his name started with a G. In any case I wasn't smart enough to change his configs so that the GPIO pins were accessible.
Wow, thanks for that detailed answer! Here is were I am at.
I took an old laptop and installed a really slim linux distro and pico8. I thought i just let it boot straight to splore so you choose a game to display for the given day. I also would have skipped the pause button-but your way is neat, might give that a try. Maybe there should be a category for strictly arcady games with coin implementation. And i donˋt really care about the amount of money going in because i thought it could be a nice charity thing or maybe even a cut for the staff at the given location.
Ill use the laptop screen, so my arcadescreen will be around 11 inches too. Ill see how loud the speakers get, but I'll probably go for cheap secondhand USB-speakers.
As a controller I'm using one of the cheap 10€ arcade kits from amazon and just hook the coin acceptor up to it, mine just sends a blip when a coin goes through.
But the tempered glass is a great idea, i will do that.
I'll try to do an update once i REALLY build the thing :D The laptop and software part is done, but the rest is still missing.
My experience with laptops in this kind of setup is not great over the long term. Make sure the cabinet is vented well.
It's interesting, having the thing just be networked and using splore but it's not as good for pedestrian use IMO. Might be OK for a makerspace, but I think you'll just walk in and see it sitting there getting ignored on some busted game most of the time. I curated, like I said, over 400 games that I know all work (your half-life demake is one of them, for instance). So it's like a mini version of splore that won't feed people "tests" that first timers uploaded over and over again...
For instance, as soon as there is a new version of pico8 and people post games compiled with that version to the BBS, your machine will need to be updated or they won't work.
No way, that's very cool to hear! Can't imagine somebody on the other side of the world playing my game on an arcade machine! Thank you!
And yes, venitlation will be key, but it's cheap ultrabook that didn't didnt really use fans. I'll be sure to include an old CPU-fan though.
And that update thing is really annoying. I already have one arcade without a screen(so a controller with a raspi zero w inside) and updating it get's old quick, just like my anbernic with 351elec.
[Please log in to post a comment]