Log In  

Cart #fairchild001-10 | 2020-05-06 | Code ▽ | Embed ▽ | License: CC4-BY-NC-SA
17

Update 1 - full speed & better sound.
Update 2 - fix missing mouse cursor.
Update 3 - fix speed decrease in Pico8 0.2.0

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 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, the easiest way to plug them into the emulator is to go to the below webpage which has the emulator together with a convenient UI to upload carts straight to pico-8. (Via the gpio pins, if you're wondering)

Load Other Carts Here

A less easy way is to bring this convenient UI over to the this webpage, by pressing Ctrl+Shift+I (or perhaps F12) to open developer tools and copy/pasting the contents of the following javascript file into the console (Note that it's not a good idea to copy/paste unknown javascript into the console in general):

Link to Javascript

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
  • N + 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)
  • X + Z = switch between 1P/2P modes. (can also use the mouse; only affects the controls)

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!

P#64568 2019-05-18 21:25 ( Edited 2020-05-06 02:26)

:: z80jim

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!!!

P#64662 2019-05-21 23:27

Wow. Wonderful job!

P#64681 2019-05-22 22:33

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.

P#69876 2019-11-13 13:00
:: dw817

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().

P#69881 2019-11-13 17:12 ( Edited 2019-11-13 17:13)

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.

P#71054 2019-12-16 09:45

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.

P#71273 2019-12-21 01:27

[Please log in to post a comment]

Follow Lexaloffle:        
Generated 2020-06-06 01:47 | 0.031s | 4194k | Q:44