Profile 010069C01AB82000 (Atlus, Unreal Engine 4.27, SDK 15.3.2, NVN). Opening gameplay tested on the Mac: new game, classroom, saves and reload in a fresh process, Tokyo map, Shinagawa Station and its event. iOS and combat untested. - Memory: the FMallocBinned3 constructor cut (main+0x1f2f63c, gate +0x1f2f644) with the measured UE4 vtable in hle_uemalloc.c; -SwitchVirtualAddressSpaceSize=2048 and a 3.75 GB block. profile_guess.py now leaves 128 MB for the initial heap in provisional Unreal layouts (test_profile_guess.py). - Shaders (general, chain 86c8282f6fb4): returning IGN image atomics keep the old value with bounded access (Ryujinx translator, t_atomic_return.m); buffer-image reflection keeps its Metal texture type (nvn_refl.m, t_refl.m). All 19,746 shaders build for Mac and iOS. - 60 fps: hle_fpslock.c writes the game's own Project.FrameRateLimit (main+0x6d6d5d0, which GameUserSettings applies to t.MaxFPS) and rhi.SyncInterval, gated on main 0a4f14a5... Mac (M4 Pro): 59.2-60.1 fps at the station, frame p95 17.5-20.3 ms; a 1 s walk ends at the same place at 30 and 60 fps. DM_FPS_TARGET=30 keeps 30. Docs: the game note, games table, README gallery, memory.md, shaders.md, symptom index; AGENTS count 68 -> 69. Checked: tool tests (186, 6 skips), docs tests.
19 lines
942 B
Python
19 lines
942 B
Python
# SHIN MEGAMI TENSEI V: Vengeance: build-specific changes to the game's own module.
|
|
# Nintendo SDK changes stay in dm/tools/sdk_patches.py.
|
|
CUTS = {
|
|
# 1.0.3: GCreateMalloc allocates 0x1c38 bytes, constructs FMallocBinned3 at
|
|
# main+0x1578bc0 (vtable main+0x5a7f0a8), then stores GMalloc at +0x72c1b10.
|
|
# Its constructor reserves 0x940000000 bytes (37 GB) at +0x15790b0, which
|
|
# cannot fit the iPhone's address space. Replace it with the host allocator;
|
|
# the gate below installs its vtable before any allocator method is called.
|
|
'0a4f14a5c12f470a4d3168a8f2ae6005': [
|
|
(0x1f2f63c, '6125d997', '1f2003d5', 'GCreateMalloc: bl FMallocBinned3 constructor -> nop; host malloc zone installed at OBS_UE_MALLOC'),
|
|
],
|
|
}
|
|
|
|
OBS = {
|
|
'0a4f14a5c12f470a4d3168a8f2ae6005': [
|
|
(0x1f2f644, 21, 'aa1303e0', 'GCreateMalloc: x19 is the allocator object; install the host vtable before use; orig mov x0, x19'),
|
|
],
|
|
}
|