Minish Cap (Android, dual screen)
The Legend of Zelda: The Minish Cap
OriginGame Boy Advance
TechnologyNative C/C++ port (engine reimplementation)
Available forAndroid
View official projectAbout the project
The Legend of Zelda: The Minish Cap, conocido en Japón como Zelda no Densetsu: Fushigi no Bōshi , es el duodécimo videojuego de la saga The Legend of Zelda, desarrollado por Flagship bajo la supervisión de Nintendo. The Minish Cap es el primer título original de la saga para consola portátil tras la reedición de The Legend of Zelda: A Link to the Past junto con el primer Zelda multijugador, The Legend of Zelda: Four Swords. El juego llegó a Game Boy Advance en noviembre de 2004 en Japón y Europa, y a principios de 2005 en Estados Unidos y Australia.
9 versions of The Legend of Zelda: The Minish Cap
You're viewing: Minish Cap (Android, dual screen)
Minish Cap (Android, dual screen)github.com/samyost1/tmc-android
Minish Cap (Switch, Alek's Edition)github.com/Alexgg1014/The-Legend-of-Zelda-The-Minish-Cap-Alek-s-Ultimate-NX-Edition
Project Picori (Minish Cap PC)github.com/999sian/tmc
The Legend of Zelda: The Minish Capgithub.com/MatheoVignaud/tmc
auto tmc (StonedModder)github.com/StonedModder/auto-tmc
Project Picori (Nintendo 64)github.com/999sian/picori-n64
The Legend of Zelda: The Minish Cap (mstan)github.com/mstan/MinishCapRecomp
The Minish Cap Decompilationgithub.com/zeldaret/tmcOfficial project information
Minish Cap — Dual Screen
A dual-screen mod of The Legend of Zelda: The Minish Cap for the AYN Thor. The handheld's bottom panel becomes a live map, quest status and touch inventory, so the top screen can be nothing but the game.
The dual-screen mod was made with the help of Claude Code and opencode.

Everything on the panel is decoded from your own ROM as the game runs — the map artwork, the menu chrome, the item icons, the font. No game data is stored in this repository.
What's on the panel
- Map — Hyrule with a follow cam. ZOOM steps out to the whole kingdom; tap a region to open the game's own enlarged map of it. Windcrest warps show as pins.
- Dungeon — the real automap: floor plaques, explored rooms, Link's position, and the small-key count beside your rupees.
- Quest — the pause menu's quest screen, reflowed for a square panel. Tap the kinstone bag or the technique scroll to open those lists.
- Items — tap a ring to arm it, then tap an item to equip that slot.
- Settings — hide the top HUD (the panel takes over your vitals), true widescreen, and the port-wide toggles the desktop build puts behind F8.
Install
- Download the APK from the Releases page and install it. It is debug-signed, so Android will warn about an unknown developer.
- Put your own
baserom.gba(USA, SHA-1b4bd50e4131b027c334547b4524e2dbbd4227130) inAndroid/data/dev.picori.tmc/files/on internal storage. - Launch. The panel appears on the second display automatically.
Built for the Thor, but it is a plain Android Presentation — any device with
a second display will do.
ROM regions
The native port detects the region from the ROM header and switches its data
tables at runtime, so the released USA APK also loads a EU (BZMP, SHA-1
cff199b36ff173fb6faf152653d1bccf87c26fb7) or JP (BZMJ) ROM — name it
baserom_eu.gba / baserom_jp.gba or just baserom.gba.
It is not the same as a EU build, though. Each APK is compiled against one
region's baseline: the blob-offset headers in build/<region>/assets/ and the
region #ifdefs in src/ that have not yet been converted to the port's
runtime REGION_IS_* form. On a baseline mismatch those compile-time sites
keep following the baseline region, so a USA APK running a EU ROM is a hybrid —
expect region-specific text, menu graphics and RNG to be off. The port logs
which combination it is on startup:
$ adb logcat -s tmc | grep 'Region baseline'
Region baseline: build=USA rom=EU (MISMATCH). ...
For a faithful EU port, build the EU APK (below). JP additionally needs the
data tables described in docs/JP_PORT_ENABLEMENT.md.
Build from source
Needs the Android SDK and NDK r26. Build the native library for both ABIs, then package:
for abi in arm64-v8a x86_64; do
xmake f -y -p android -a $abi --ndk=$ANDROID_NDK_HOME \
--game_version=USA --gpu_renderer=y --widescreen_width=384
xmake -y
done
cd android && ./gradlew assembleRelease
--widescreen_width=384 is what compiles the wide render paths in; without it
the WIDESCREEN row is hidden because the setting would have nothing to switch.
The APK lands in android/app/build/outputs/apk/release/.
Swap --game_version=USA for --game_version=EU to build the EU APK; the
tracked build/EU/assets/*_offsets.h mean that is the only change needed. For a
region with no tracked headers (JP, the demos) generate them on the host first —
the Android toolchain cannot produce them, since asset_processor has to run
on your machine:
xmake f -P . -y -p linux # your host platform
xmake build -P . -y asset_processor
tools/bin/asset_processor extract JP build/JP/assets
The build does this for you when it can and otherwise stops with these
instructions, rather than failing on a missing assets/map_offsets.h.
For the desktop port, see INSTALL.md.
Built on
- Project Picori — the native Minish Cap port this mod extends (SDL3, software PPU, agbplay audio).
- Raekwon1603/tmc-android — the Android packaging and second-screen scaffold this forked from.
- zeldaret/tmc — the decompilation underneath all of it.
License
GPL-3.0 — see LICENSE. Bundled and linked third-party components
keep their own GPL-compatible licenses, listed in
THIRD-PARTY-LICENSES.md; notably agbplay is
LGPL-3.0 and is not relicensed by being linked here.
This builds on a decompilation of a copyrighted game. All Nintendo intellectual property remains Nintendo's, and a legitimately-owned ROM is required to play.