https://github.com/entropia/tip-toi-reveng Skip to content Navigation Menu Toggle navigation Sign in * Product + GitHub Copilot Write better code with AI + Security Find and fix vulnerabilities + Actions Automate any workflow + Codespaces Instant dev environments + Issues Plan and track work + Code Review Manage code changes + Discussions Collaborate outside of code + Code Search Find more, search less Explore + All features + Documentation + GitHub Skills + Blog * Solutions By company size + Enterprises + Small and medium teams + Startups By use case + DevSecOps + DevOps + CI/CD + View all use cases By industry + Healthcare + Financial services + Manufacturing + Government + View all industries View all solutions * Resources Topics + AI + DevOps + Security + Software Development + View all Explore + Learning Pathways + White papers, Ebooks, Webinars + Customer Stories + Partners + Executive Insights * Open Source + GitHub Sponsors Fund open source developers + The ReadME Project GitHub community articles Repositories + Topics + Trending + Collections * Enterprise + Enterprise platform AI-powered developer platform Available add-ons + Advanced Security Enterprise-grade security features + GitHub Copilot Enterprise-grade AI features + Premium Support Enterprise-grade 24/7 support * Pricing Search or jump to... Search code, repositories, users, issues, pull requests... Search [ ] Clear Search syntax tips Provide feedback We read every piece of feedback, and take your input very seriously. [ ] [ ] Include my email address so I can be contacted Cancel Submit feedback Saved searches Use saved searches to filter your results more quickly Name [ ] Query [ ] To see all available qualifiers, see our documentation. Cancel Create saved search Sign in Sign up Reseting focus You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert {{ message }} entropia / tip-toi-reveng Public * Notifications You must be signed in to change notification settings * Fork 124 * Star 720 Trying to understand the file format of Tip Toi tttool.entropia.de/ License MIT license 720 stars 124 forks Branches Tags Activity Star Notifications You must be signed in to change notification settings * Code * Issues 35 * Pull requests 5 * Discussions * Actions * Wiki * Security * Insights Additional navigation options * Code * Issues * Pull requests * Discussions * Actions * Wiki * Security * Insights entropia/tip-toi-reveng master BranchesTags [ ] Go to file Code Folders and files Last Last Name Name commit commit message date Latest commit History 962 Commits .github/workflows .github/workflows 34c3-ad 34c3-ad Audio Audio book book contrib contrib docs docs example example nix nix perl-tools perl-tools playmus playmus prism-syntax-highlighter prism-syntax-highlighter src src templates templates testsuite testsuite transcript transcript voicetool voicetool wip wip .gitignore .gitignore Building.md Building.md Changelog.md Changelog.md Debug.yaml Debug.yaml GME-Format.md GME-Format.md LICENSE LICENSE Makefile Makefile README.md README.md Setup.hs Setup.hs cabal.project cabal.project cabal.project.freeze cabal.project.freeze default.nix default.nix example.yaml example.yaml fetch-contrib.sh fetch-contrib.sh gameanalyse.c gameanalyse.c generate-oid-table.sh generate-oid-table.sh libtiptoi.c libtiptoi.c makegraphic.c makegraphic.c oid-decoder.html oid-decoder.html shell.nix shell.nix text2speech-multi-lang.yaml text2speech-multi-lang.yaml text2speech.yaml text2speech.yaml tttool.cabal tttool.cabal View all files Repository files navigation * README * MIT license Das tttool hat jetzt eine deutsche Webseite fur 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 or SVG file with all codes in the yaml file oid-codes creates files for every OID in the yaml file (default: PNG). oid-code creates PNG files for each given code(s) GME modification commands: set-language sets the language field of an GME file set-product-id changes the product id an GME file 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 segment that contains a specific offset 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. Linux users likely want to install additional packages. On Debian or Ubuntu, run sudo apt install libttspico-utils vorbis-tools 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 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 * tiptoi hacking by Guido Arnold * TipToi Hacking and TipToi Hacking II by Mr. Blog * Various posts by Joachim "nomeata" Breitner (the main author of tttool) * Self-made animal figures demonstration video 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. * 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 About Trying to understand the file format of Tip Toi tttool.entropia.de/ Resources Readme License MIT license Activity Custom properties Stars 720 stars Watchers 78 watching Forks 124 forks Report repository Releases 21 A productive release Latest Feb 11, 2023 + 20 releases Packages 0 No packages published Contributors 43 * @nomeata * @uli42 * @chibicode * @HorstFrank * @NimVek * @kontrafuss * @centic9 * @rneuber1 * @sangyye * @colinba * @B-G-T * @Golpe82 * @tbleher * @larsweiler + 29 contributors Languages * Haskell 68.3% * C 10.2% * Perl 8.8% * HTML 5.0% * Nix 3.0% * Shell 2.0% * Other 2.7% Footer (c) 2024 GitHub, Inc. Footer navigation * Terms * Privacy * Security * Status * Docs * Contact * Manage cookies * Do not share my personal information You can't perform that action at this time.