# Project status

Updated 2026-09-05.

The port now boots the original graphical Zero Hour engine on Nintendo Switch and
has reached real in-game rendering.  A hardware capture from the current session
(`artifacts/switch/pre-input-fix.jpg`) shows a running Skirmish with terrain, HUD,
buildings and units.  This supersedes the earlier bring-up note that said no visible
match had been verified.

## Current native build

- Runtime: `build-switch/GeneralsZH.nro`
- SHA-256: `197c1cef488b19a4e6e9967c6c41921271942daa3d3086cd321b6ecccaaea167`
- Target: Horizon ARM64, SDL3 + D3D8 compatibility layer + DXVK/NVK.
- The current NRO is installed at `/switch/generalszh/GeneralsZH.nro` on the
  development Switch and is launched by the separate HOME Menu title.
- The original engine exits cleanly back to Sphaira through the debug RPC; evidence:
  `artifacts/switch/quit-before-input-fix.json` and
  `artifacts/switch/after-quit-input-fix.jpg`.

## Input status

- Joy-Con/Pro Controller input is translated into the original SDL mouse/keyboard
  path rather than issuing simulation commands directly.
- Touch supports tap, one-finger selection drag, contextual right-click gestures,
  two-finger camera pan and pinch zoom through that same gameplay path.
- Detached Joy-Con handling was fixed on 2026-09-05.  The old code configured one
  Npad and used `padInitializeDefault()`, which only covered Handheld + controller
  No1.  The current code configures eight standard Npad IDs and uses
  `padInitializeAny()`, so separately assigned left/right Joy-Con are merged into
  the game's single RTS controller state.
- `tests/console_input_test.cpp` passes after the change, and the complete Switch
  graphical target cross-builds successfully.
- A final physical topology check with two actually detached Joy-Con remains a
  hands-on acceptance check; remote synthetic controller input cannot reproduce
  Horizon assigning the two physical controllers to separate Npad IDs.

## Packaging

- `GeneralsZH-Switch-0.2.1-preview-Installer.nro`: one-shot HOME Menu installer/
  updater.  It installs title `01856B91D76FA000` as `C&C: Generals Zero:Hour`,
  publisher `t.me/otakukz17`, and embeds the current release icon.
- `GeneralsZH-Switch-0.2.1-preview-BYO.zip`: public-style runtime package with no
  original EA game assets.  The owner supplies files from a legal Generals/Zero
  Hour installation.  The ZIP also contains `switch/GeneralsZH-Installer.nro`.
- `GeneralsZH-Switch-0.2.1-preview-FULL-PRIVATE.zip`: private owner backup/install
  containing the exact allowlisted game banks already staged on the development SD.
  It also contains the same HOME Menu installer. Saves, replays, logs, caches,
  old backups and arbitrary SD files are excluded.
- The FULL-PRIVATE variant contains copyrighted original game resources and is not
  a redistributable public release unless the distributor separately has the rights
  to those resources.

## Still outside this task's acceptance

The port should still be treated as a preview rather than a finished 1.0 release.
Long-duration stock-clock stability, suspend/resume, every menu/settings path,
all campaigns/multiplayer modes and exhaustive audio/rendering compatibility need
their own acceptance passes.  A successful build or package does not imply those
broader tests have passed.
