Profile 010057D006492000 (no virtual address memory: the 4 GB heap layout; tex_flush_upload and tex_dirty_upload for the textures Unreal writes from the CPU into uncached pools after creating them) and its note. Brought up on the Mac through the boot, the language notice, the title, the traveler selection and Ophilia's and H'aanit's openings (free play in the cathedral and in S'warkii) at 30 fps; battles, sound and the iPhone not yet tested. General changes found on it: - patch_nso.py: a jump table whose index is bounds-checked with a 64-bit cmp (main+0x1676f58), accepted only in the last pass so earlier rewrites are byte-identical. - profile_guess.py: Unreal's 64 GB alias layout only with virtual address memory (this game sets a 3.08 GB heap instead). - NVN: nvnTextureBuilderGetSparseTileLayout / nvnTextureGetSparseTileLayout (Unreal sizes a sparse texture's mip tail with it; unimplemented, it asked for 1.75 GB twice); sparse 2D textures without a packaged layout take the block height of their 64 KB tile (the world map's tiles were shuffled); every virtual pool gets an address range of its own until its first mapping decides between the alias (a whole-pool mapping, Mario's pool) and the sparse page table (Unreal's one-texture pools, mapped piece by piece: streamed textures were black and later mappings refused). - Audio renderer: SdkMutexType is looked up only when the SDK uses it (SDK 3.5.1 takes LockMutex at +0x1f8). README: the gallery entry (Mac screenshot of S'warkii, IPA ~3.6 GB, all 5,434 shaders built for iOS); AGENTS.md: seventy-one games. Checked on the rebased tree: the tool tests (15 skipped), the docs tests, a Mac boot into the traveler selection; before the rebase the graphics tests (make run, exit 0).
2.3 KiB
2.3 KiB
| 1 | # OCTOPATH TRAVELER: Square Enix / Acquire, Unreal Engine 4.18 (++UE4+Release-4.18; legacy version 4 paks), SDK 3.5.1, NVN, CRIWARE (ADX2 sound, a USM movie); update 1.0.5. | |||||
|---|---|---|---|---|---|---|
| 2 | # Started from the NSP script's provisional profile (dm/games/profile_guess.py) and brought up on the Mac (docs/agents) | |||||
| 3 | # ---- Identity ---- | |||||
| 4 | title_id | 010057D006492000 | ||||
| 5 | program_id | 010057D006492000 | ||||
| 6 | # ---- App ---- | |||||
| 7 | name | OCTOPATH TRAVELER | ||||
| 8 | ipa | OctopathTraveler.ipa | ||||
| 9 | app_category | public.app-category.role-playing-games | ||||
| 10 | # ---- Versions ---- | |||||
| 11 | build | v327680 | 1.0.5 | main=67dacc049ceee8585b1583336c565b43 | subsdk0=798c30e126697f2222cf843f78f5c140 | sdk=ae34e75d02925f4417b24499ad80c394 |
| 12 | package | v327680 | ||||
| 13 | shader_versions | v327680 | ||||
| 14 | # ---- Files ---- | |||||
| 15 | # subsdk0 is NintendoSDK_movie (main imports from it) | |||||
| 16 | modules | main subsdk0 sdk | ||||
| 17 | romfs_marker | Kingship/Content/Paks/Kingship-Switch.pak | ||||
| 18 | zip_store | .awb:.pak:.usm:.metallib | ||||
| 19 | # ---- Input ---- | |||||
| 20 | # menus and the battle commands take the D-pad | |||||
| 21 | pad_layout | full | ||||
| 22 | # ---- Memory ---- | |||||
| 23 | # The NPDM declares no system resource, so there is no virtual address memory: this Unreal Engine 4's nninitStartup sets a heap of pool − used (3.08 GB) and runs on it, with no | |||||
| 24 | # engine address region. The 4 GB block of the games without virtual address memory: 256 MB in front + 256 MB alias region + 256 MB stack region + 3.25 GB heap region | |||||
| 25 | mem_reserve | 0x100000000 | ||||
| 26 | mem_alias | 0x10000000 | ||||
| 27 | mem_stack | 0x10000000 | ||||
| 28 | app_pool | 0xCD500000 | ||||
| 29 | sys_resource | 0x0 | ||||
| 30 | # the rewritten modules (about 120 MB) are larger than the default 64 MB of used memory the game takes off the pool for its heap | |||||
| 31 | mem_used | 0x8000000 | ||||
| 32 | # ---- Textures ---- | |||||
| 33 | # Unreal loads its textures from the CPU straight into CPU-uncached pools after creating them and never flushes (its UI images, the world map, the sprite sheets): without both keys | |||||
| 34 | # they stay black or missing (the language notice's pictures, the title logo, the whole traveler selection), as for FINAL FANTASY TACTICS - The Ivalice Chronicles | |||||
| 35 | tex_flush_upload | on | ||||
| 36 | tex_dirty_upload | on | ||||
| 37 | # ---- Shader split ---- | |||||
| 38 | # The engine's global shaders (Engine/GlobalShaderCache-GLSL_SWITCH.bin), the engine's own materials and the game's. Unreal Engine 4 keeps every shader inline in the cooked packages, | |||||
| 39 | # zlib-compressed, inside legacy paks whose blocks are zlib-compressed too (shader_split.py ue_legacy_jobs) | |||||
| 40 | shader_groups | GlobalShaderCache=global #Engine/=engine #Kingship/=game | ||||
| 41 | shader_note | OCTOPATH TRAVELER shaders |