Skip to content

feat(symbian): port full OpenStrike to Nokia E7#14

Merged
doodlewind merged 6 commits into
mainfrom
feat/symbian-e7-compat
Jul 26, 2026
Merged

feat(symbian): port full OpenStrike to Nokia E7#14
doodlewind merged 6 commits into
mainfrom
feat/symbian-e7-compat

Conversation

@doodlewind

@doodlewind doodlewind commented Jul 25, 2026

Copy link
Copy Markdown
Contributor

Summary

  • port the canonical full 3D OpenStrike game to Nokia E7 / Symbian instead of the temporary compatibility game
  • package all eight CS maps in one independently installable SIS
  • add complete E7 keyboard controls: WASD movement, arrows look/select, Enter or E fire, R reload, Space jump, Shift walk, and Backspace/Home menu
  • keep 30 Hz presentation with deterministic 60 Hz simulation and live landscape/portrait layout

Architecture

PocketJS owns QuickJS, lifecycle, the GLES2 context, physical-key sampling, packaging, and the JSX overlay. The app-specific ARMv6 extension owns OpenStrike simulation, map loading, and Pocket3D GLES2 presentation. Map files remain outside app.pak under the app-private mass-memory data root, with exact path, size, and SHA-256 entries in receipt schema 3. One reusable aligned buffer keeps the eight-map package within the E7 process heap.

E7 input root cause and fix

The RM-626 physical top row reports native scan codes 1..0 for the QWERTY positions (1→Q, 2→W, …, 0→P); the character layer supplies Q–P only after FEP translation. That is why A/S/D could work while W and R were still seen as 2 and 4.

PocketJS PR #188 now resolves the complete E7 physical matrix from native scan codes, shares the mapping across press/release, preserves a complete pulse for one 30 Hz host frame, and clears held/latched input on focus, rotation, viewport, and guest boundaries. OpenStrike maps held R to an idempotent reload request so the Starting→Live two-tick boundary cannot swallow it.

PocketJS #188 merged as 5bfaff7091e63a1cd93fe46fd5a4f8b61b46b335; this PR pins that merged commit. Its tree is byte-identical to the hardware-tested pre-merge key fix.

Validation

  • PocketJS full test suite and tsc --noEmit
  • OpenStrike check:platforms: PSP and Vita admission, 33 modules each
  • OpenStrike Symbian tooling: 11/11
  • default and embedded-map-catalog cargo check --locked --tests
  • held-reload ammo-conservation unit test
  • all eight real P3D maps pass the canonical verifier
  • pinned-nightly ARMv6 build-std build
  • real GCCE, QuickJS, and GLES2 link, elf2e32, and signed 0.3.4 SIS
  • MTP upload and device readback byte-exact

Hardware acceptance

Accepted on a real Nokia E7-00 / RM-626:

  • all eight maps selectable and loadable
  • smooth first-person look and full 3D Dust2 rendering
  • W/A/S/D movement, including corrected W forward and D right
  • Enter fire, R reload, Backspace return to map selection
  • no sticky-key regression observed

Final artifact

  • openstrike-0.3.4.sis: 22,778,152 bytes
  • SHA-256: 0702f07d6cd6d84c9f7b1ff605474a03cd834f79dfdbd4b96aab9bdb46556266
  • UID: 0xE86B9226

@doodlewind doodlewind changed the title feat(symbian): add Nokia E7 compatibility app feat(symbian): port full OpenStrike to Nokia E7 Jul 25, 2026
@doodlewind
doodlewind marked this pull request as ready for review July 26, 2026 07:54
@doodlewind
doodlewind merged commit fcfe93e into main Jul 26, 2026
@doodlewind
doodlewind deleted the feat/symbian-e7-compat branch July 26, 2026 07:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant