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!
Wow. Not only an emulator in Pico-8 but of a Channel F, which almost no one has heard of.. Had one of these as a kid and, yes it was crude, but it was the FIRST cartridge system. So many good memories. Great job!!!
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
Bullcrap, this emulator doesn't allow other games to be dropped, so you're forced to play Pac-Man. A game that is more unfair then even Xevious if you've played that game, so you will be betrayed, backstabbed, and quite possibly, bamboozled.
"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)"
This seemed a bit weird to me, so I went ahead and looked into the matter. The first thing that seemed weird is I'm not sure why a BIOS would would be two "files" given that firmware for older systems was generally a single ROM chip. The second and more important thing is I wasn't sure how this would still be an issue, given how easy it is to get around a BIOS legal issue in completely legal ways. (ie. reverse engineering, which is completely legal in the absence of a EULA)
It turns out this is not in fact an issue at all. The Fairchild Channel F was irrelevant within a couple years of its 1976 release, which also means that any and all official software for it would've come out before the 1978 copyright act came into effect. I just checked the public records for the keywords "channel f", "fairchild" and most importantly "bios". There are none that match. This means that not only were the copyrights not renewed, they weren't even registered. The consequence is that they would still have fallen under the 1909 copyright term, which is only 28 years.
In short, the bios, and very likely all the original software, has been in the public domain since 2003.
An emulator for a console that exists in an emulator for a console that doesn't exist.
[Please log in to post a comment]