mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 02:11:36 -04:00
33b842e97f
A [[plugin]] may declare netplay = "local_view": it only changes what one player sees. A netplay session now keeps the player's own features whose every contribution is such a plugin (no writes, overlays or derived discs) instead of clearing them, without saving state.toml. They activate as usual, but their hooks run only inside psx_mod_render_local_view (psx_mod_local_view_scope) and their vblank/savestate callbacks not at all. With such a plan the widescreen cull margin is the stock 0 in the shared game and this peer's own margin only inside the sandboxed own-view draw; squash is not used. The canonical frame, snapshots and digests stay identical on every peer whatever each player chose, so nothing is negotiated, and each keeps their own aspect. Tests: netplay_view_mods_test (flag, plan filter, parked hooks, no vblank, state.toml untouched), ws_local_view_margin_test (margin scope), render-pass sandbox asserts the scope around a local view. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>