Update 1 - full speed & better sound.
Update 2 - fix missing mouse cursor.
Update 3 - fix speed decrease in Pico8 0.2.0
Update 4 - support cart/bios drag&drop and function keys.
What is this?
An emulator for the Fairchild Channel F, the first console to use programmable ROMs and a microprocessor.
The console was released in 1975, so don't expect much in the way of graphics, gameplay, or usability.
See Wikipedia for more info.
And what's that game running?
That's a homebrewed (i.e. - NOT original) game made by Blackbird and e5frog. You can find it here.
Any sound glitches are due to the emulator, not the game, by the way. (See below)
It pushes the capabilities of the console to its limits, so its quality is considerably higher than that of the other games for the console.
It's also anachronistic - the original Pac-Man wasn't released until 1980.
And how do I play other games?
In order to play other games, you first need the console's two BIOS files and the ROM for the other game you want to play. (Having these is up to you and they cannot be shared)
If you have those, simply drag & drop them one-by-one into pico-8. (E.g. drop each of the bios files, then drop the cart).
If you want to run the game included in the bios, drop only the 2 bios files, then press the reset button.
By the way, a BIOS is needed since the "BIOS" included with the emulator is a homebrewed one which is only good enough for running a few games which don't use it much.
If you wish to copy the BIOS and ROM to the cart yourself - e.g. via cstore, they should be copied sequentially: BIOS SL31253 or SL90025 to location 0x0, BIOS SL31254 to location 0x400, and the cart to location 0x800. (Just like the Fairchild's own memory layout)
What are the controls?
In "1P" mode (default), the controls are:
- arrow keys = move
- Z = push
- S/F = rotate left/right
- E/D = push/pull
- left shift = hold to control player 2 instead of player 1
In "2P" mode, the controls are:
- arrow keys = move
- Z + arrow keys = rotate/push/pull
- S/F/E/D = player 2 move
- left shift + S/F/E/D = player 2 rotate/push/pull
In both modes, additional controls are:
- X + left/down/up/right = press console key 1/2/3/4. (can also use the mouse, or F1 through F4)
- X + Z = switch between 1P/2P modes. (can also use the mouse or F5; only affects the controls)
- (to reset, can use the mouse or F12)
What's working well?
All functionality is working and most likely bug-free, so all original and homebrew games work well, including the carts with extra memory.
(Exception: no support for the homebrewed multicart, which is too large for pico8 anyway)
Thanks to some optimizations, games now usually run at full speed.
What's not working well?
Sound has occasional glitches (either due to pico8's sound limitations or my implementation).
Keys sometime need to be pressed for a few moments to work in some games. This might be due to the original console's controls being slow to press.
What's the point of this?
Proving that emulators for non-trivial systems are possible to do in pico-8.
And just for the fun of creating and/or playing an emulator!
I don't understand how this slipped by me back in May, but this is truly amazing. Your tool for "inserting" another cartridge via GPIO is an ingenious idea.
Post this on a website with a UI for uploading BIOS/games instead of having to use the console (host it on itch?) and post about it on the AtariAge forums if you haven't already, that's where the Channel F people (including e5frog) are hanging out.
I've seen this for a-while. Definitely beyond me. Can someone please explain to me the importance of GPIO, what it does in your own words, and why it's useful in carts ?
I've been doing a little reading up on it myself and although the documentation I found shows HOW to use it, it does not explain WHY it should be used outside of any other memory location like the very useful and valid 256-byte Cartridge Data cartdata().
The main idea behind GPIO is basically outer machine communications. So the Pico-8 can communicate with the outside world via virtual pins that it has. Akin it VERY much to COM ports on older x86 systems. These COM ports have a specific pin layout and you can send and receive whatever sort of data you want from them as long as you have the right software to decode the signals.
GPIO are just that, however, their usefulness is limited in the case of the Pico-8, especially for PC/Browser users. But for people who the console on let's say... an Arduino board with a microcontroller or a raspberry pi, then things can get interesting because we can map these virtual pins to ACTUAL pins and that allows us to send data to... well anything honestly. You could use them to turn on a grid of leds, set a timer for something and send a signal when it finishes, data transfer, truly and honestly, you could do pretty much anything you could with any sort of normal PC port, given the same limitations for bandwidth and speed of course. I hope this helps a bit.
I've seen some cool examples on the bbs here, but cannot recall off hand, maybe I'll dig around tomorrow for some.
Thanks for the comments, everyone.
@tobiasvl - thanks for the suggestion, I've added a hosted website ("Load Other Carts Here" link in the description) and will share it over at AtariAge.
And now pico-8 just supports drag-n-dropping files into it, even in the BBS, so I went ahead and added support for just dropping the BIOSes and ROMs into the pico-8 cart
[Please log in to post a comment]