Repository navigation
v2.1 — per-label battle haptics, long-summon sync, coverage
Bring your own ROM — Final Fantasy Tactics Advance (USA) is the only user-supplied file; the launch BIOS is bundled (clean-room emibios, LGPL-3.0-or-later, committed at bios/).
New in v2.1
- Android battle haptics (issue #30) — damage now buzzes the phone vibrator. Two HP-apply seams (the shared HP-delta helper and the enemy-unit direct store) authorize the pulse; the damage-number popup releases it, so the buzz lands with the number for every animation length.
- One pulse per damage label — each damage number fires its own 120 ms pulse, rate-limited to 8 guest frames so rapid multi-hits collapse. Strength follows the displayed damage.
- Long summons stay in sync — the grace deadline is 2400 frames (40 s), covering Totema summons whose numbers land more than 900 frames after the HP apply. Device-verified on a Mi 11: a Totema produced six labels and six pulses; misses and zero popups stay silent.
- Controller settings shortcut — the pad's menu button or Y opens the in-game settings overlay; the Back key still works.
- Reliability — key-isolation input tests, the CI test-double guard, and the 63,156-unit strict-FULLY_STATIC corpus, including two new Totema-session seeds.
Artifacts
| Artifact | What | SHA-256 |
|---|---|---|
FFTARecomp-v2.1-linux-x64.zip |
Linux x64 (extract → run → pick ROM) | 37fa4b2a237487073a65a8001a1cdb990264336753de3a617ad4ba301db16960 |
FFTARecomp-v2.1-linux-x86_64.AppImage |
Steam Deck / SteamOS, glibc 2.35+ | fcefc2cbd00a50dab2fcd99419c3dedeb953e4234406d5b01310f678f7369d14 |
FFTARecomp-v2.1-windows-x64.zip |
Windows 10+ x64, statically linked | 67b20afd742c43556abc46693ab41b9a38fc98f4ff976f6902da5d34eab6ebb2 |
FFTARecomp-v2.1-android-arm64-v8a.apk |
Android 9+ (API 28), arm64-v8a | 064db79e6b7b90a32bc71271d85b3e659f61babd08434dbbbd28b7d69a8f9bd5 |
- Linux zip and AppImage use the pinned Debian 12 compat binary (glibc 2.35 floor); Windows is a static executable. Linux needs the standard OpenGL/X11 stack.
- The ROM is hash-verified at launch (SHA-1
4ac05441…); a mismatch means the dump is not the expected USA ROM. - The APK is debug-signed (tracked open decision) and is the ROM-less public build: import your dump through the setup screen. Android
versionCodeis now 3; the v2.0 debug key means an in-place upgrade keeps saves. - The AppImage needs FUSE. Without it, use
APPIMAGE_EXTRACT_AND_RUN=1or--appimage-extract-and-run. - Haptics are Android-only in this release: the phone sink and primary routing are live; controller motors (Phase 2) and the haptics setting (Phase 5) remain deferred. Desktop/Steam Deck haptics are unchanged (raylib's GLFW vibration is a stub).
- Every executed path is strict fully-static (zero interpreter fallback), kept that way by the self-healing coverage loop.
Experimental preview — back up important saves. Unofficial, non-commercial preservation project; not affiliated with Square Enix or Nintendo.
Full Changelog: v2.0...v2.1