What is Tickle?

In short, Tickle is a platform for developing emulators. However, read on...

Tickle consists of a set of C++ functions and interfaces (portable), a set of drivers (also portable) and an OS-dependent front-end. The result is a "framework" that, although it was born for developing emulators, can just as easily support "native" drivers and applications. For example, the screen with the colorful banner that appears when the program start is a driver like any other, there's nothing special about it. (From there, you can also activate some test functions by pressing [Ctrl], [1] and [5] at the same time.)

Tickle has an object-oriented architecture and provides several useful "stock" objects and functions for developing drivers, including for example bitmap manipulation, digitized sample loading and playback, input and output streams on so on. In addition to these, there are also several objects that provide emulation of CPUs (8080, Z80), sound chips (AY-3-8910, Namco 3-channel WSG, SN76477) and more (waveform generation, LM555 oscillator, RC filters). As of version 0.92 a new library called ASE (for Analog Sound Emulation) contains several components that are specifically designed to help emulating the analog sound circuits found in many old games.

Drivers take advantage of the above library, adding specific extensions if needed, and implement the logic that makes everything work together as a single application.

Although drivers have the maximum freedom in how they implement their internal logic, they must still obey a few rules dictated by the Tickle architecture. In particular, they must realize a specific interface (named TMachine) that allows them to receive input and send output without becoming dependent on a particular operating system or platform.

Finally, an OS-dependent front-end takes care of loading and unloading drivers, dispatching events, updating graphics, playing sounds and so on. There are no restrictions on how this part is implemented, it may be a native application or possibly use a cross-platform library for GUI, graphics and sounds... anything goes. In Windows the front-end everything is native and although it embeds the ZLIB library and all the rest the final executable is actually quite small (119K in version 0.92, compressed with UPX).

Copyright (c) 2004 Alessandro Scotti. All rights reserved.

 Home :: Computer Programming :: Tickle homepage

Site Map