Monday, August 11, 2008

Coin door and front end

I installed the one final piece that the cabinet was missing: the coin door. Now I can charge people for playing! But they can just take their quarters back, or press the free coin-up button next to the start button. The coin slots light up because I wired some bulbs to the computer's power supply.

Since the coin 1 and 2 slots are wired up to press 5 and 6 on the keyboard, I got an idea - a keyboard where you have to pay a quarter for every keypress. If you think text messaging shorthand is annoying, just wait until every letter costs a quarter. There'll be a shorthand renaissance.

I had an arcade cabinet and no way to easily choose what game to play. And I didn't like any existing frontend software. No fear! Computer programming skills to the rescue! Exclamation marks! I designed and programmed this game picking frontend (this list of games is clearly not complete, but it was good enough for testing).

Here is the frontend running on the machine. The computer boots right up to the following screen:

So what don't I like about existing frontend software?

  • Not configurable enough.
  • Takes too long to boot up.
  • Too slow to move around the UI.
  • Too fancy.
  • Too not made by me.

How did I fix those problems?

  • I made the ultimate configurable system. Nothing is set in stone. The list of emulators and games are read from an XML file and parsed into objects. Those objects are provided to an HTML page to render them however it wants. When the user presses a key or moves the joystick, a script function in the HTML page is called. The script can handle the event however it wants. The list of system commands to run before and after a game are in the XML file, and any game can easily modify them.
  • Boot time is practically instant, the HTML page I made loads really fast. Since I wrote my own hosting window for MSHTML, I don't have to wait for a web browser to load.
  • In my HTML page, I didn't make any animations or sounds or anything to annoy me.