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. Version 2.2 released 25 September 2020.

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, 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, as reproduced below:

Copyright © 2003, Ian Gledhill.
"ALU core derived from code originally written for the MAME project by Edward Swartz, initially converted for MAME by M. Coates, updated by R. Nabet. Conserved portions copyright © 1997-2017 MAMEDev and contributors."
Copyright © 2015-2020 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 emulates a single joystick on the numeric keypad. The 8-4-5-6 inverted T sends up, left, down and right respectively, with 0 for SL and "." (dot) for SR.

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 (cartridges, multiple joy controllers, etc.), the following bugs are known:

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

Downloads and good stuff

Download the emulator for 32-bit (511K, PowerPC/Intel Universal) or 64-bit (220K, x86_64 only). The 32-bit version is a Universal build compatible with any Mac (PowerPC or Intel) running 10.4 through 10.13, and is accelerated for AltiVec on Power Mac G4 and G5 machines, but does not work properly on 10.14 and will not run on 10.15 or any later version of macOS. The 64-bit version is compatible with any 64-bit Intel Mac running 10.12 through 10.15. Tutti II 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 (50K). This includes a selection of games, pictures and demos for both GRAPHIC and BASIC. For GRAPHIC,

and for BASIC (all by James Host, all hail the Wizard Kludgefinder),

Development is now on Github. This includes all media assets and the special universal SDL dylib 32-bit Tutti uses for maximum compatibility. Old versions and source code are in the archive.

Version history

2.2 - "Tutti Two Point Two Meets The Hooded Fang"

2.0 - "Tutti Two Two Meets The Hooded Fang"

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