Ypsilon - The ultimate script language system for the video pinball fourth generation

Ypsilon Scheme System has been developed as a fundamental technology for LittleWing Pinball Construction System. It is named after Yoshikatsu Fujita, the author of the program. It is distributed by BSD-like License.

Our pinball game rules are described in C or C++. Though they have great advantages in processing speed, there are some difficulties in development because C language stops the program immediately upon encountering an error. It makes debugging programs very difficult.

Ypsilon makes programming game rules very easy and safe. Of course, the advantages of using Ypsilon are not only for pinball games. It is good for applications of any kind that require quick, interactive processing as it is in conformity with the latest R6RS and provides complete R6RS standard libraries.

Ypsilon uses Scheme, one of the dialects of LISP. Scheme was developed in the '70s and has been utilized in computer and programming education industries. More info on Scheme: http://ja.wikipedia.org/wiki/Scheme

More info on Ypsilon & downloads
Visit Ypsilon development project page

What is the LittleWing Pinball Construction System?

This project was preceded by feedback from the development of our own pinball game improvements. I've been continuing the development while dreaming of the great pinball games that will be developed by our customers. They should amaze me and get me hooked.

I've kept the dream since I saw the legendary "Pinball Construction Set" created by Mr. Bill Budge running on Apple II. My own construction set has been my dream and now I am close to achieving it.

I remember the day I visited Bill at his home in San Francisco and talked with him passionately about pinball. He has an upright Raster Blaster in his house. See info about his Pinball Construction Set at: http://en.wikipedia.org/wiki/Pinball_Construction_Set


Why has Ypsilon been created?

There were lots of ideas about planning the script language system for my construction set. First, I searched for languages that have automatic memory management with a high level of reliability, meaning a language with a Garbage Collection function. Next, I searched for languages that have macro functions for simple game rule coding with least bug generation possibility.

The one that satisfied the two conditions above was LISP. LISP has a long history as well as high reliability. And the reason for selecting Scheme among the LISP languages was its simple and strong macro function. Macro enables coding like this:

[Parts Name: B1 Type: Thumper-Bumper Location: (230 20) Connect: switch[3] Point: 20K]

The code means "Locate B1 Thumper Bumper to the coordinate† 230, 200 then connect the censor to switch no.3. Set the default score at 20K"

It's so easy, isn't it? Well, there are many implementations of scheme already. Also, most of them are distributed as open-source programs that can be used free of charge. So, why didn't I use any of them and instead create Ypsilon?

It is because none of them satisfied the three elements that I require for my construction set.

1. Sufficient performance to achieve high-level real-time processing speed

2. Simple construction that enables sufficient maintenance

3. Complete independence that doesn't require anything other than the standard functions of an operating system and C/C++

For example, we can not use Boehm Garbage Collector, which doesn't support†game consoles or arcade games, as we also develop games for such machines. Also, we cannot depend on Java, VisualBasic, or C#. Therefore, all existing implementations were out of consideration. So, I decided to develop a new original implementation. It is Ypsilon.

Info on Boehm Garbage Collector: http://en.wikipedia.org/wiki/Boehm_garbage_collector

- Yoshikatsu Fujita, the president and the programmer of LittleWing Company Limited.

Ypsilon - The implementation of Scheme Programming Language for real-time applications. Copyright (c) 2008 Y. Fujita, LittleWing Company Limited. All rights reserved.