Downloads GitHub

Contributing & Testing

How changes get into Launchstation: what to run before opening a pull request, what CI enforces, and what only real hardware can prove.

Workflow

  1. Fork NathanNeurotic/Launchstation and branch from master. Check existing issues and open a draft early for anything large (storage-driver and IOP-lifecycle changes in particular).
  2. Build locally with the LLVM toolchain. A change that only compiles with GCC is not releasable.
  3. Run the affected tests, and the whole suite for anything touching shared code such as init.c, dash_worker.c or the file-copy path.
  4. Update documentation in the same pull request (see below).
  5. Open a pull request. CI runs on every push and pull request; only a verified push or manual dispatch on master can publish the rolling release.

What CI enforces

.github/workflows/compile.yml (Automated-Build) runs, in order:

  1. the explicit list of tests/test_*.py scripts, then the copy-test fixture generator;
  2. the documentation site build (python3 docs-site/build.py);
  3. SDK version resolution, cache restore or installation with scripts/ps2build_sdk.sh, and the LLVM toolchain check;
  4. Mbed TLS and libjpeg-turbo builds, the Google client header, the isolated PC CARD CF driver and ps2ips_rpc socket server;
  5. the standard and DS34 builds, then check_ds34_build.py, check_toolchain_purity.py, check_udpfs_smap.py and check_loader_layout.sh;
  6. packaging with package_apps.py and a second run of the package test; artifacts are uploaded.

On master pushes or manual dispatch, a final step publishes the four app packages and four loose ELFs to the rolling latest release only if the tests, both builds and every check passed, if master did not move during the build, and if the previous latest commit is an ancestor of the new one (the in-app updater relies on that lineage). It then verifies the GitHub-computed SHA-256 digest and size of every published asset, and only then moves the tag. The workflow does not re-download every asset to compare bytes. The full kit is a separate optional build: download or kit-validation failures keep the previous kit attached while the app release proceeds. Pull requests build review artifacts but never overwrite public downloads.

Writing and running tests

Fixtures live in tests/fixtures and tests/pccf-stubs. Passing host tests do not establish console behavior: USB timing, IOP stalls, DEV9 sharing, display output and external-core handoffs need a console, and release notes say so.

Hardware validation

When you test on real hardware, report the console model and revision, video mode, boot device and exact ELF commit (shown by Settings > System > About Launchstation), the storage devices attached and the minimal reproduction steps. Say clearly what you did not test (for example one USB drive but not two). The copy-test fixture (LS-COPY-TEST.zip, produced by scripts/copy_test_pack.py and uploaded by CI as the Launchstation-copy-test artifact) gives deterministic files for verifying copies across devices; --verify checks a returned folder.

Documentation and attribution

Repository hygiene

Reporting bugs

Use the Launchstation issue form. It asks for the console model, the build commit, the package you installed, the storage and network setup, and the display chain, so complete reports are triaged quickly. Consoles with a modchip installed are a confounder; confirmation on an unmodified console is appreciated. See also Good bug report.