mirror of
https://github.com/par274/sharpemu.git
synced 2026-07-26 12:48:39 +08:00
dce7c87c4d
sceAgcDriverUnregisterOwnerAndResources (ZLJk9r2+2Aw) and sceAgcDriverUnregisterAllResourcesForOwner (SCoAN5fYlUM) were unresolved. We already register owners and resources, and the guest registers a resource owner per streaming batch, so with no way to release one the fixed owner pool filled up: sceAgcDriverRegisterOwner started failing and the guest logged its own "Agc registerOwner error: 0x80020003", after which it kept half-registering records. Demon's Souls then crashed scanning that registry. Owner-scoped teardown is straightforward because RegisteredAgcResource already carries its owner, so both entry points share one sweep over the resource table. UnregisterOwnerAndResources additionally drops the owner itself and its compute queue, and reports INVALID_ARGUMENT for an owner that was never registered. The existing single-resource sceAgcDriverUnregisterResource (pWLG7WOpVcw) is unchanged. Both NIDs are checked against their export names by the SHEM004 analyzer, which fails the build on a mismatch. Tested on Demon's Souls (PPSA01342): the registerOwner error no longer appears and the registry stays consistent across streaming batches. 470 tests pass.