- README: about the fork, features, quick start, the original project's issues this fixes, other fixes, screenshots, credits and license. - CHANGELOG for 1.0.0, docs/protocol.md for client authors, CONTRIBUTING.md, SECURITY.md, issue templates and Ko-fi funding link. - CI: read-only by default; pushing a version tag publishes a release with the plugin attached (release action pinned to a commit).
2.9 KiB
Contributing to RemotePad NG
Thanks for helping! Bug reports, game compatibility reports, fixes and reviews are all welcome.
Reporting a bug
Use the bug report form. The most useful details:
- the RemotePad NG version, shown at the bottom of the page;
- the firmware and GoldHEN versions;
- the game and its title ID (like
CUSA00001); - what you did and what happened;
- the plugin's log, if you can get it. GoldHEN's log server is on port 3232:
nc <ps4-ip> 3232from a computer. The plugin's lines start with[remote_pad].
Logs can contain your console's IP address and PS4 user IDs. Remove them before posting if you prefer.
Security problems: please follow SECURITY.md instead of opening a public issue.
Building
The easiest way is Docker with the xfangfang/goldhen_plugin image, which has the OpenOrbis toolchain and
LLVM:
git clone --recursive https://github.com/MoHadiShibli/remotePad-ng
cd remotePad-ng
docker run --rm -v "$PWD:/src" -w /src xfangfang/goldhen_plugin:latest \
sh -c "cmake -B build -DCMAKE_BUILD_TYPE=Release && cmake --build build"
The plugin is build/remote_pad.prx. With -DDEVICE_IP=<ps4-ip>, the build also uploads it to the PS4 over
GoldHEN's FTP server.
The web page is one file with no dependencies: client/index.html. It's packed into the plugin when you
build. To try page changes without rebuilding:
- open the file from disk and enter the console's address, or add
?host=<ps4-ip>:4263to the page's URL; ?pad=2opens Pad 2 directly.
A page opened from a file can play but can't change the console's settings.
Code style
Match the code around your change:
- C with GNU extensions (gnu11), 4-space indent,
camelCasefor functions; - logs go through
final_printf, and errors useSCE_OKand theORBIS_*codes; - hooks follow the existing pattern in
src/main.c:HOOK_DEFINE(fn, ...) { ...; return HOOK_PASS(fn, ...); }, plusHOOK32(fn)inplugin_loadandUNHOOK(fn)inplugin_unload; - a new way to connect is a new
RemotePadDriverinsrc/pad/(seesrc/pad/ws.c), added topadDrivers[]insrc/pad.c; - comments explain why, not what;
- the page has no build step and no libraries: keep it that way.
Build without new warnings. Test on a real console when you can, and say in your pull request which games you tried.
Reviewing AI-written code
Much of RemotePad NG 1.0.0 was written with the help of an AI model (Claude Opus 5.5). It has been tested, but AI-written code can look right and still be wrong. Please read it critically: if you find dead code, wrong assumptions, needless complexity or anything that smells like AI slop, open an issue or a pull request. Fixes like that are as welcome as new features.
License
By contributing, you agree that your contributions are licensed under the GNU GPL v3, like the rest of the project.