← All questions

How do I hook a galgame into Fushi?

Galgames are close to perfect immersion material: sound, picture and text, with the text delivered one line at a time. It used to take Textractor + Yomitan + ShareX / GSM chained together; Fushi folds that chain into one module (Windows only).

Step 1: add the game ​

Bottom bar Games → Add game, pick the game's exe — or drag the exe straight into the game library. Added games get a cover automatically (from the game folder or the program icon), and you can Scrape metadata to pull synopsis and cover from VNDB / Bangumi (see scraping).

Step 2: launch and capture ​

Press Launch and capture: Fushi starts the game, injects its hook component and begins collecting dialogue. If the game is already running, use Attach and capture.

At launch Fushi handles two things on the side:

  • Japanese locale: it judges whether the game needs a locale switch (Shift-JIS evidence in the folder / executable) and if so starts it in a Japanese locale through the built-in Locale Emulator — 32-bit games only. Garbled text or script errors? Change "Japanese locale" for that game from "Auto" to "Always on" or "Off" in the game's settings; Chinese / English patched builds must use "Off", or the game crashes on launch.
  • Window upscaling: old games have low native resolutions; set "Game window upscaling" to Auto in the game's settings and Fushi uses its bundled Magpie to scale the window to full screen (if Magpie is already running on your machine, yours is used; to use only your own Magpie, pick "Installed only"). If it doesn't kick in automatically, press Win+Shift+A. It uses the GPU and is set per game.

Step 3: pick the dialogue thread ​

Most engines produce several text threads on first contact (dialogue, character names, system messages, character-by-character repeat artifacts…); pick the clean dialogue thread in the session panel and capture begins in earnest. The one marked "N lines with audio" is usually the dialogue; ignore the ones marked "artifact".

For games the engine doesn't recognise (injected but no text before the timeout) you can paste a special code (a Textractor-style H-code such as /HQN4@4CE90:game.exe, usually findable in the community; it binds to that exe and is reused next time). No code either? The engine isn't supported yet — wait for an update.

Step 4: read, look up and mine in the floating window ​

Dialogue appears in the dialogue overlay floating over the game window:

  • tap a character to look it up, the same popup as the reader;
  • plus to mine: the card carries the line, its voice, and a screenshot from that moment, straight into Anki;
  • overlay buttons: follow new lines / lock position / stay on top / click-through to the game / toggle backdrop (transparent, desktop-lyrics style) / replay this line's voice / re-record voice (missed it? replay the line in the game) / open the mining workbench (review every line of this session and mine from it);
  • font, size, colour, outline and backdrop opacity live under Settings → Galgame dialogue overlay.

One step further is in-game lookup: skip the overlay and tap characters right on the game screen. This is still experimental and not yet verified on any engine: KiriKiri (krkr), SiglusEngine and others have an implementation, CMVS supports looking up with Shift held, and the actual status per engine is listed in Which engines does Fushi's galgame text hook support?. Some games need a one-time calibration of the text area (tap three probe glyphs in the game), and a bare left click may also advance the dialogue or trigger a choice, so be aware of that risk before using it. The "In-game lookup" section of the session panel shows the status for the current engine.

Where the voice comes from ​

The sentence audio on cards is taken from the game's own voice first (its resource files or the engine's playback buffer — clean, no BGM); only when neither works does it fall back to recording the system mix. Lines without voice acting are mined as usual, just without audio.

Playing PC games on your phone ​

Game streaming (experimental): the game and the hook stay on the Windows PC; picture and sound stream to another device (Android, iOS, macOS or another Windows PC) along with the dialogue, which you can tap to look up (using the PC's dictionaries) and mine (the PC makes the card and puts it into its Anki), while touch and gamepad input goes back to the game.

  1. Pair the two with Fushi interconnect first, on the same local network;
  2. on the PC, "Launch and capture" as usual and press Start streaming in the capture workspace;
  3. on the receiving device, open Game (on every platform except Windows it is the streaming client; on Windows it's the stream section of the game page): it lists each host's game library and running streams — tap Join. If the PC has "Allow remote launch" turned on, you can also launch a game from the phone's view of the library and stream it straight away.

Resolution, frame rate, bitrate, codec and gamepad keys can be adjusted in the stream settings. Touch, mouse and gamepad all work.

Health ​

The Health section of the session panel shows at a glance which link is missing: game process / game window / text source / audio source / hook helper / window upscaling / Anki output. Whatever's red, open it for the reason.

Common situations ​

  • Injection blocked / component not responding: add Fushi and the game to your antivirus whitelist and check the quarantine.
  • The game runs with higher privileges: start Fushi as administrator, then launch the game.
  • Bitness mismatch / version mismatch: close the game completely and relaunch; if that doesn't help, run the Fushi installer again (the game was open during the last update, so the component file couldn't be replaced).
  • Injected but no text: engine not supported yet — try a special code (step 3), otherwise wait.
  • Garbled text: set Japanese locale to "Always"; 64-bit games can't be switched — install a system-wide Japanese locale.
  • A previous capture session is still lingering: restart the game once.
  • "Window not found yet, can't screenshot": normal; it binds as soon as the window appears.

Still have a question? Ask on Discord or in the QQ group.