- C 60.6%
- C++ 38.3%
- Makefile 1%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
The installed code handler checks a fixed flag word on every invocation and returns immediately without touching the code list unless that word is non-zero. The flag was only ever written by the SD cheats path, so codes uploaded over the network sat in memory correctly but were never processed since the flag stayed at whatever the running title happened to leave there. Explicitly enable it right after installing the code handler and keep re-asserting it each loop iteration in case the title overwrites that memory itself. |
||
| .vscode | ||
| src | ||
| .clang-format | ||
| .gitignore | ||
| Dockerfile | ||
| LICENSE | ||
| Makefile | ||
| README.md | ||
| README_JA.md | ||
TCPGecko Plugin
TCPGecko Plugin is a Wii U Aroma plugin that exposes a TCP Gecko-compatible server for development, debugging, memory inspection, and cheat-code workflows. The server listens on TCP port 7331.
Warning
TCPGecko provides powerful memory and code-execution commands. Use it only on a trusted local network and only with software and hardware you are authorized to inspect.
Features
- TCP Gecko-compatible server on port
7331 - User and kernel memory read/write commands
- General and latest code-handler modes
- SD
.gctucheat loading and optional combination with client-uploaded codes - Breakpoint, thread, stack-trace, symbol, memory-search, and remote-call commands
- Screenshot and file-operation support
- Persistent raw assembly execution
- Configurable server enablement and thread priority through the WUPS configuration menu
Some low-level commands can crash the running title or the console when given invalid addresses or code. Save your work before testing.
Requirements
Wii U
- A Wii U running Aroma
- WiiUPluginLoaderBackend
- NotificationModule
- A TCP Gecko-compatible client on the same trusted network
Use mutually compatible versions of Aroma and its modules. The current Aroma package normally supplies the required runtime modules.
Building
The recommended build path requires Docker Desktop or another Linux-container-compatible Docker installation. A native build requires devkitPro/devkitPPC, WUT, WiiUPluginSystem, libwupsbackend, libnotifications, and the port libraries referenced by the Makefile.
Installation
-
Build the project or obtain
TCPGeckoPlugin.wpsfrom a trusted release. -
Copy it to:
sd:/wiiu/environments/aroma/plugins/TCPGeckoPlugin.wps -
Start Aroma or reload its plugins.
-
Open the Aroma/WUPS plugin configuration menu to change TCPGecko settings.
-
Connect a compatible client to the Wii U's local IP address on port
7331.
For a non-default Aroma environment, replace aroma in the path with that environment's directory name.
Configuration
| Setting | Purpose |
|---|---|
| Enable TCPGecko | Starts or stops the TCPGecko service. Disconnect the client before changing it. |
| Code Handler | Selects the general or latest embedded code handler. |
| Enable SD cheats | Loads the current title's .gctu file from the SD card. |
| Combine SD and client cheat codes | Appends SD codes when compatible codes are uploaded by a client. |
| Serialize assembly execution | Enables the existing mutual-exclusion behavior around persistent assembly execution. |
| TCPGecko thread priority | Selects low, normal, high, or real-time priority. Use real-time with care. |
SD cheat files use this layout:
sd:/codes/<16-digit-title-id>.gctu
For example, use the title ID as 16 uppercase hexadecimal digits followed by the .gctu extension.
Docker build
From the repository root:
docker build --tag tcpgecko-plugin-builder .
docker run --rm --volume "${PWD}:/project" tcpgecko-plugin-builder make -j2
The build creates these files in the repository root:
TCPGeckoPlugin.wps— installable Aroma pluginTCPGeckoPlugin.elf— ELF build artifact for development and symbol inspection
To build with logging:
docker run --rm --volume "${PWD}:/project" tcpgecko-plugin-builder make DEBUG=1 -j2
For verbose logging:
docker run --rm --volume "${PWD}:/project" tcpgecko-plugin-builder make DEBUG=VERBOSE -j2
Clean generated files separately before switching build modes:
docker run --rm --volume "${PWD}:/project" tcpgecko-plugin-builder make clean
These commands work in PowerShell and POSIX-style shells. On Windows, Docker Desktop must be using Linux containers.
Native build
After installing the dependencies and setting DEVKITPRO, run:
make -j2
The Makefile supports the same DEBUG=1 and DEBUG=VERBOSE options as the Docker build.
Project layout
src/main.cpp Plugin metadata, lifecycle, settings, and storage
src/tcpgecko/ TCP Gecko protocol and code-handler implementation
src/tcpgecko/libs/ Wii U filesystem, patching, sound, and system helpers
src/utils/ Logging, exceptions, threading, and general utilities
Dockerfile Reproducible devkitPPC/WUPS build environment
Makefile Source list, compiler options, and link dependencies
Contributing
Keep changes focused and readable, and preserve existing copyright notices. Before submitting a change:
- Run a clean normal build.
- Run a clean
DEBUG=1build when changing logging or diagnostics. - Run
git diff --check. - Describe any runtime validation performed on a Wii U or emulator separately from build-only validation.
Credits
This project is a fork of BullyWiiPlaza/tcpgecko, adapted for use as an Aroma plugin by Katope. This project also contains work from TCP Gecko and Wii U homebrew contributors; individual source files retain their applicable copyright and license notices.
License
This project is distributed under the GNU General Public License v3.0, matching the upstream project. Files containing additional notices remain subject to those notices. See LICENSE for the full terms.
This project is not affiliated with or endorsed by Nintendo.