Foobase


Main Foobase Window


About Foobase

Foobase is a tool for managing collections of chess games. It is not a chess playing program (that is: you cannot play games against it)

The main drive for starting the project was to be able to enter chess games on a java capable PDA device. It was highly preferable that the output was directly compatible with the commercial Chessbase program so that the editor of our chess club magazine could publish the games without going through the process of entering the games himself (and usually detecting that many of the game sheets are worthless due to notation errors made by the players during the game ;-)

The screenshot above shows the current state of development: games can be entered through the graphical interface and stored directly in Chessbase compatible files. This version only supports the older format using .CBI/.CBF files.

Future releases may offer filters for additional formats.

What is new?

The current version, release 0.2, is a minor upgrade. It includes:

Note that an update still appends the new version to the database file. This is a limitation of the database format, unfortunately.

Also note that a delete operation does not really delete anything: it merely sets the "game deleted" flag in the game header.

Goals

After deciding to start a new open source project, the original short-term intentions were extended to the following, more general list:

  1. provide a platform independent for manipulating chess databases
  2. provide a tool that can run on devices thar are low on resources, such as PDA's
  3. provide an open framework that allows any number of database format filters
  4. provide a tool that is capable of operating on standard databases as they are created by Chessbase
  5. provide filters for other database formats

Current state of implementation

The first goal is achieved by means of portability of Java applications. The code uses 1.1 features, so any 1.1 or higher Java VM should do the trick.

The resource consumption is limited by using plain AWT instead of Swing. Unfortunately, that is no guarantee for low resource consumption: using a database of about 170 games and browsing through a couple of games, rapidly consumed all of the available 10MB RAM available to the application.

The current implementation uses a number of interfaces instead of hardcoded classnames for a number of classes:

This approach should allow to plugin other implementations of the same interfaces.

For the time being, only one format of database is supported: the older Chessbase format using .CBI/.CBF files. Even this format is not yet fully implemented: it is possible to retrieve games and add new games to a database, but update and delete are not yet implemented.

Probably the next filter will be for PGN support.

Support for the new format of Chessbase databases is high on my wishlist, but a first attempt failed on decoding the move-bytes stored in these databases (apparently, either the "encryption" has changed or the move generator generates moves in a different order)

The current implementation runs fine on this configuration:

Where to get it

Three kits are available:

You can find a brief explanation of the functionality of the current version here

To do

Given the rather poor performance of CPU intensive tasks in Java, there are currently no plans for implementing database searches (so you won't be able to sneak into a private corner during a game to quickly lookup what to play next ;-)

Credits

The name "Chessbase" is probably trademarked and registered by the company of the same name. They are reachable here.

The information about the actual file formats comes mostly from the sources of the 1-Apr-96 release of "CBUTILS" by Andy Duplain, Syntegra, Brighton, UK. That kit is available here (look for the file CBU_SRC.ZIP)

The images used for drawing the pieces have been created with Gimp from screenshots of characters in the freeware "CHESS MAYA" font created by Armando Hernandez Marroquin. Look for file MAYA_TT.ZIP on the same FTP site.

Licensing

Copyright © 2000 Eddy Vanlerberghe.  All rights reserved.

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions
are met:
1. Redistributions of source code must retain the above copyright
   notice, this list of conditions and the following disclaimer.
2. Redistributions in binary form must reproduce the above copyright
   notice, this list of conditions and the following disclaimer in the
   documentation and/or other materials provided with the distribution.
3. The name of Eddy Vanlerberghe shall not be used to endorse or promote
   products derived from this software without specific prior written
   permission.

THIS SOFTWARE IS PROVIDED BY EDDY VANLERBERGHE ``AS IS'' AND
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED.  IN NO EVENT SHALL EDDY VANLERBERGHE BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
SUCH DAMAGE.


 
This project is hosted by SourceForge.
Last Update: 15 October 2001.
Any Browser