Skip to main content

What this is

The host app​

General Automation Platform is an Android app that runs automation scripts against games. It owns everything that touches the device: taking screenshots, reading pixel colours, tapping and dragging, launching apps. Anything that could send data off the device or act out of sight is off until the player allows it for that script (Trust and access). A script is a folder the app loads:

FileWhat it is
index.jsThe automation itself, run on the app's embedded JavaScript engine (QuickJS-ng). It has to declare a global start(settings) and stop().
index.htmlThe settings page, shown in a floating window over the game. It builds the settings object and calls start(...) when you press Play.
quickbar.htmlOptional. A strip of live controls the app draws along the bottom of the screen.
tsums.datThis script's own data files (tsums.dat and two more libraries): tsum portraits, deployed beside the bundle.
gap-env.json, gap-backup.jsonOptional. The values a script asks the player for, and which page settings the app may back up.
gap-signature.jsonRelease builds only. The signature that tells the app this is the published build, unedited.

The app installs scripts from sources — catalogues it downloads — or from a folder copied in by hand. It lists no third-party source by itself: the starter offers to add the Tsum Tsum library, and the player confirms. Its floating bar has Play, Stop, a Log panel, a settings button and, for scripts that ship one, the Quick Bar.

The script​

This repository's one script plays Disney Tsum Tsum. Left running, it:

  • plays rounds — reads the board, links chains of matching tsums, uses the tsum's skill, pops bubbles, sets bonus items, and records what each round scored;
  • receives items from the mailbox, one by one or with Claim All;
  • sends hearts to friends;
  • raises level caps on tsums that have reached them;
  • buys boxes in the store, on a schedule and up to a limit.

Everything it does is driven by screen recognition: a screen is "fingerprinted" by a handful of probe pixels, the script decides which screen it is looking at, and a table of subscriptions says what happens on each one. That one idea — recognise, then react — runs through the whole codebase and is worth holding onto as you read.

The script has no view of the game's memory or network. It sees pixels and it taps. Every timing, every coordinate and every colour threshold in the source was measured against the real game, which is why the docs keep saying "prefer a measurement to a tidy-up".

Where it came from​

The script was forked from a Robotmon script (r2-studio/robotmon-scripts, Apache-2.0) and rewritten since. The break is complete: there is no upstream to compare against, no compatibility layer, and no reason to keep a behaviour because the original had it. What survives is the reason a few constants look arbitrary — they were tuned against a working script rather than derived. NOTICE in the repository root records what was inherited.

What you need to know already​

TypeScript, and a willingness to read header comments. Each source file opens with one that says what the file owns and why it is shaped the way it is; those comments are the long form of everything on this site. You do not need Android experience: the host app is a black box with a documented API, and most changes never touch it.