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.8, 1.8.1, 1.8.1 |
Change log |
Changelog.md |
Dependencies |
aeson (>=0.7 && <1.5), base (>=4.9 && <4.13), base64-bytestring (>=1.0 && <1.1), binary (>=0.5 && <0.9), blaze-svg (>=0.3 && <0.4), bytestring (>=0.10.4 && <0.11), containers (>=0.4 && <0.7), directory (>=1.2 && <1.4), executable-path (>=0.0 && <0.1), filepath (>=1.3 && <1.5), hashable (>=1.2 && <1.3), haskeline (>=0.7 && <0.8), HPDF (>=1.4.10 && <1.5), JuicyPixels (>=3.2.5 && <3.4), mtl (>=2.2 && <2.3), natural-sort (>=0.1 && <0.2), 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.15), text (>=1.2 && <1.3), time (>=1.5 && <1.9), vector (>=0.10 && <0.13), yaml (>=0.8 && <0.12), zlib (>=0.5 && <0.7) [details] |
License |
MIT |
Copyright |
2013-2019 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 2019-03-30T20:31:40Z |
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).
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
We release tttool
for Windows and Linux users as a zipfile. You can find them
in the releases section
of the GitHub project.
See Building.md
for instructions on how to build tttool
from source.
Building your own gme files
Once you have installed tttool
, you can create your own .gme
files. The
process is as follows
-
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
-
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.
-
Run ./tttool assemble my-book.yaml
, and make sure it reports no error, i.e.
finishes silently.
-
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
- What are all the header fields? (See wip/Header.md)
- Finish decoding the games. (See wip/games.txt)
- What is the purpose of the additional script table?
Other resources in this repository
-
oid-decoder.html
allows you to manually decode an OID image.
-
scripts/update.sh
downloads all gme files from the Ravensburger server (requires perl and the XML::Simple module).
Instead of downloading all of them, you can conveniently browse them at http://tiptoi.vakat.de/, a service provided by Falko Oldenburg tiptoi@vakat.de.
-
gameanalyse.c
and libtiptoi.c
is an alternative tool to investigate gme
files. It can also replace audio files in gme files;
compile and run it for diagnostic output.
-
Audio/
contains some audio files, such as digits read out.
-
docs/
collects information about TipToi found elsewhere.
-
wip/
(work in progess) contains notes about the parts of the gme files that are not
fully understood yet.
-
perl-tools
contains a perl based script, to generate a PDF with all OID codes from a yaml-file as well some functions to generate PNG-files, inject pHYs-chunks with resolution hints into GD generated PNG files as result from some testing