tttool: Working with files for the Tiptoi® pen

This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.

[maintain] [Publish]

The Ravensburger Tiptoi® pen is programmed via special files. Their file format has been reverse engineered; this is a tool to analyse and create such files.


[Skip to Readme]

Properties

Versions 0.1, 1.0, 1.1, 1.3, 1.4, 1.4.0.1, 1.4.0.2, 1.4.0.3, 1.4.0.4, 1.4.0.5, 1.5, 1.5.0.1, 1.5.1, 1.6, 1.6.0.1, 1.6.1, 1.6.1.1, 1.6.1.2, 1.6.1.3, 1.6.1.4, 1.7.0.1, 1.7.0.2, 1.7.0.3, 1.7.0.4, 1.8, 1.8.1
Change log None available
Dependencies aeson (>=0.7 && <1.3), base (>=4.5 && <4.11), binary (>=0.5 && <0.9), bytestring (>=0.10 && <0.11), bytestring-builder (>=0.10.4.1.1), containers (>=0.4 && <0.6), directory (>=1.2 && <1.4), executable-path (>=0.0 && <0.1), filepath (>=1.3 && <1.5), ghc-prim, hashable (>=1.2 && <1.3), haskeline (>=0.7 && <0.8), HPDF (>=1.4.10 && <1.5), JuicyPixels (>=3.2.5 && <3.3), mtl (>=2.1 && <2.3), natural-sort (>=0.1 && <0.2), old-locale, optparse-applicative (>=0.13 && <0.15), parsec (>=3.1 && <3.2), process (>=1.1 && <1.7), random (>=1.0 && <1.2), split (>=0.2 && <0.3), spool (>=0.1 && <0.2), template-haskell (>=2.7 && <2.13), time (>=1.4 && <1.9), vector (>=0.10 && <0.13), yaml (>=0.8 && <0.9), zlib (>=0.5 && <0.7) [details]
License MIT
Copyright 2013-2017 Joachim Breitner
Author Joachim Breitner
Maintainer mail@joachim-breitner.de
Category Reverse Engineering
Home page https://github.com/entropia/tip-toi-reveng
Source repo head: git clone https://github.com/entropia/tip-toi-reveng
Uploaded by JoachimBreitner at 2017-08-29T07:14:36Z

Flags

Automatic Flags
NameDescriptionDefault
old-locale

If false then depend on time >= 1.5.

If true then depend on time < 1.5 together with old-locale.

Disabled
bytestring_has_builderEnabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees


Readme for tttool-1.7.0.4

[back to package description]

Das tttool hat jetzt eine deutsche Webseite für Anwender: http://tttool.entropia.de/

tip-toi-reveng

The goal of this project is to understand the file and paper format for the Ravensburger TipToi pen. The ultimate goal is that everyone can create their own books, with their own sounds.

The current status is that we understood most of the file format (see the GME file format specification). We provide a tool that allows you to dissect these files.

The tool can also be used to generate completely new files from scratch; see below for details.

If you want to learn more please have a look into our wiki (https://github.com/entropia/tip-toi-reveng/wiki).

The tttool tool

Use the tool tttool to investigate the gme files and build new ones. It supports various subcommands:

GME creation commands:
assemble                 creates a gme file from the given source

OID code creation commands:

oid-table                creates a PDF file with all codes in the yaml file
oid-codes                creates PNG files for every OID in the yaml file.
oid-code                 creates PNG files for each given code(s)

GME analysis commands:
info                     Print general information about a GME file
export                   dumps the file in the human-readable yaml format
scripts                  prints the decoded scripts for each OID
script                   prints the decoded scripts for a specific OID
games                    prints the decoded games
lint                     checks for errors in the file or in this program
segments                 lists all known parts of the file, with description.
segment                  prints the decoded scripts for a specific OID
explain                  print a hexdump of a GME file with descriptions
holes                    lists all unknown parts of the file.
rewrite                  parses the file and writes it again (for debugging)

GME extraction commands:
media                    dumps all audio samples
binaries                 dumps all binaries

Simulation commands:
play                     interactively play a GME file

Run

./tttool --help

to learn about global options (e.g. DPI settings), and

./tttool command --help

for the options of the individual command.

Installation

This program is written in Haskell and can be installed on Windows, MacOS or Linux.

For Windows users, we create zipfile containing tttool, you can find them in the releases section of the github project.

Otherwise, installation from source is not difficult either:

  1. If you have not done so yet, fetch the source code and change to the directory containing the code:

    git clone https://github.com/entropia/tip-toi-reveng.git tttool
    cd tttool
    
  2. Install the Haskell platform, see http://www.haskell.org/platform/ for details for your system. Users of Debian or Ubuntu simply run

    apt-get install haskell-platform
    
  3. Install the development packages for ncurses, i.e.

    apt-get install libncurses5-dev
    
  4. Install the Haskell dependencies. The Haskell platform comes with a tool called cabal, and you should run the two commands

    cabal update
    cabal install --only-dependencies
    
  5. Now you can build the program using

    cabal install --bindir=.
    
  6. At this point, tttool should be ready to go. If you run

    ./tttool
    

    you should see the list of commands shown above.

If you have any problems, you can report an issue via GitHub.

Building your own gme files

Once you have installed tttool, you can create your own .gme files. The process is as follows

  1. Record the audio samples you want to include, as Ogg Vorbis files, mono, 22050Hz. I use

    arecord -r 22050 foo.wav
    oggenc foo.wav
    rm foo.wav
    
  2. Write a my-book.yaml file containing some general information, and especially the scripts (i.e. what to do) for each OIDs (i.e. the various fields of a book). You can use the example.yaml file as a starting point; it contains more information in its comments.

  3. Run ./tttool assemble my-book.yaml, and make sure it reports no error, i.e. finishes silently.

  4. Copy the now generated my-book.gme to your TipToi pen and enjoy!

If you need to find out what OID code corresponds to what part of the book, you can generate a debug gme using the debug.yaml file, adjusting its Product-Id to your product’s id, building it with ./tttool assemble debug.yaml and loading the resulting debug.gme on your pen. It will then read out the codes, as a sequence of english digits.

If you want to convert existing audio files of almost any format, and you have ffmpeg installed, you can use

ffmpeg -i input-audio-in-some.fmt -ar 22050 -ac 1 foo.ogg

Text to speech

If you have libttspico-utils and vorbis-tools installed, you can have tttool generate audio files from text for you, which makes developing your yaml file much easier. See text2speech.yaml for more information.

Printing your own books

With the code in this repository, you can create GME files. This is even more fun if you can also create your own books! „Pronwan“ found out how that works, as you can see in this video demonstration. He also published 30 minute video tutorial (in German).

Press Review

TODO

Other resources in this repository