Tutti II: The Tape-Enabled Tomy Tutor Emulator

Finally: the first Tomy Tutor emulator to load and save tape image files you can transfer to and from your real Tomy Tutor.
This section is under development. Last modify 22 June 2016.

Back to the XTOMYDEV page | Back to the main page


Something old becomes something new

Tutti II is the spiritual successor to the original Tutti simulator, the first attempt to model the Tomy Tutor on another platform (in this case, the Commodore 64). However, it is also the actual successor to another older emulator, Ian Gledhill's TutorEm, as it is in fact based on its source code, just with bug and endian fixes, tape support and upgrades for performance. This makes it a descendant of some of the oldest attempts to emulate this unusual computer.

Tutti II is not designed to replace MESS's Tutor driver, which currently has the best 9918ANL and DCSG video and sound emulation, and is the only emulator to support cartridge images. If you're just looking for something that plays Traffic Jam, for example, this is not the emulator you want.

Instead, Tutti II is a programmer's emulator for hacking the Tutor on its own terms. Besides being currently the only emulator that reliably loads and saves to emulated cassette -- using XTOMYDEV-format bitstreams which can be transferred to and from a Data Recorder and then the real Tomy Tutor -- it also offers the excellent TutorEm debugger, the ability to decouple the VDP for better responsiveness, a turbo processing mode and the ability to snapshot the running system. Tutti's cassette acceleration reads and generates bit-exact bitstreams that are perfect representations of the computer's output in just seconds, even on slow systems.

Tutti II is available under the New BSD license.

Copyright © 2003, Ian Gledhill.
Copyright © 2015, 2016 Cameron Kaiser.
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "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 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.

What Tutti II currently supports (and doesn't support)

Tutti II supports:

Tutti II does not support (yet? -- roughly in priority order):

Using Tutti II

The Tutti II application encapsulates the necessary ROMs and all libraries, so just start it up. Because Tutti II includes copies of the Tomy BIOS, legally you can only use this emulator if you are entitled to do so, such as by already owning a Tomy Tutor. The Tutor 256x192 display will appear.

The Tutor keyboard is fully emulated in its original positions (keyboard layout permitting). That means double quotes on SHIFT-2, parentheses on SHIFT-8/9, equals sign on SHIFT-0, etc. The handaku (°) key is on the plus/equals key, and the underscore is on the tilde/backtick key. In addition, the Tutor puts the colon key next to the semicolon key.

With respect to Tutor-specific keys, LOCK is mapped to LEFT CONTROL, MOD to RIGHT CONTROL or RIGHT OPTION or keypad ENTER (to faciliate laptop layouts that may be missing some of these keys), and MON to backslash. As a convenience, DELETE is also mapped to the left arrow key so that you can (sort of) backspace, and both SHIFT keys are mapped to the Tutor's single SHIFT key.

Tutti also defines certain specific keys for special functions, which you can also access from the pull-down menus:

Tape operations

When Tutti II detects cassette activity, it automatically attempts to link it to a bitstream file. For example, if you have a BASIC program written and you attempt to save it with the SAVE command within the emulator, a file picker will automatically appear to select where the XTOMYDEV bitstream should be written. Once you select the file, the emulator will reduce screen updates and unthrottle the CPU, causing most tape operations to complete within seconds. After the save has completed, the emulator will return to previous settings.

Similarly, if you attempt to LOAD a file from within the emulator, the file picker will appear to select which XTOMYDEV bitstream you will use as emulated tape input. If you give a filename argument to the LOAD command, the Tutor will scan the bitstream for that filename specifically; if no filename is given, the Tutor loads the first file it finds, which is usually what you want because if the filename is not found, an error message will appear in the emulator. In GRAPHIC mode, the filename is required but the emulator doesn't care (see Known bugs).

Tape operations function identically in both GRAPHIC and BASIC modes, and Tutti II can detect tape activity in both environments. The tape acceleration is extremely quick if I do say so myself. Even on my relatively slow 1GHz iMac G4, a GRAPHIC LOAD or SAVE takes only about three seconds; it's practically instantaneous on my Quad G5 and my i7 MacBook Air. Compare this to over six minutes on a real Tutor!

Typically tape operations are automatically stopped and started by the emulator for you while Tutti II monitors tape IRQ activity. However, if the emulated Tutor reacts badly to a tape operation, or the emulator fails to detect that a tape operation is finished, you may need to stop the emulated tape with Command-S to regain functionality.

The dutti disassembler

Tutti includes dutti, a command-line disassembler for the Tutor ROM, within the application package. Run it from the Terminal prompt with a starting and ending address (decimal, or hex if prefixed with 0x). Addresses should end on word boundaries. Make sure the tutor*.bin ROM images are in the same directory.

Known bugs

Other than what Tutti II doesn't yet support (sound, more than four sprites, joy controllers/joystick, etc.), the following bugs are known:

Send comments and new bug reports to ckaiser@floodgap.com. Please, no attachments unless requested.

Download

Download the emulator (504K zipped Mac app), compatible with any Mac (PowerPC or Intel) running 10.4 or higher. It is tested on Tiger (PowerPC), Snow Leopard (i386) and El Capitan (x86_64). This app is not signed, so 10.7+ users may need to adjust your security settings when running the app for the first time.

Download the demo tapes (26K). This includes five bitstreams as a demo: a black and white dithered image of Georges Seurat's A Sunday Afternoon on the Island of La Grande Jatte generated with XTOMYDEV for GRAPHIC mode (load "BITM"), a "GRAPHIC 64" colour dithered image of the same painting also generated with XTOMYDEV (load "PICT"), a "GRAPHIC 64" colour dithered image of the lovely lady named Jayne shown at left also generated with XTOMYDEV (load "PICT"), and James Host's Colour Bars and 32 Sprites demos for BASIC (load "BARS" and "SPRITE" respectively).

Download the source code (warning: includes resource forks) (1.3MB). This includes all media assets and the special universal SDL dylib Tutti uses for maximum compatibility. To build the universal OS X binary requires Xcode 2.5 or 3 (with the 10.4 SDK installed) and exactly SDL 1.2.14. Install the 1.2.14 developer framework and just type make.

Version history

1.5 - Bug fixes and new features:

1.2 - Initial release as Tutti II.

1.0 - "Initial release as TutorEm" (for internal bookkeeping only).


Back to the XTOMYDEV page | Back to the main page