3.0 KiB
3.0 KiB
| 1 | # DRAGON QUEST XI S: Echoes of an Elusive Age – Definitive Edition: Square Enix, Unreal Engine 4.18 (legacy version 4 paks, LZ5-compressed), SDK 7.3.2, NVN, Square Enix's own sound driver | |||||
|---|---|---|---|---|---|---|
| 2 | # Started from the NSP script's provisional profile (dm/games/profile_guess.py) and brought up on the Mac (docs/agents); plays on the Mac and on the iPhone | |||||
| 3 | # ---- Identity ---- | |||||
| 4 | title_id | 01006C300E9F0000 | ||||
| 5 | program_id | 01006C300E9F0000 | ||||
| 6 | # ---- App ---- | |||||
| 7 | name | DRAGON QUEST XI S: Echoes of an Elusive Age – Definitive Edition | ||||
| 8 | ipa | DragonQuestXIS.ipa | ||||
| 9 | app_category | public.app-category.role-playing-games | ||||
| 10 | # ---- Versions ---- | |||||
| 11 | build | v262144 | 1.0.4 | main=1719aabfa5eae42b132b65770b871288 | subsdk0=93ff8252d975adf07230cb86c83301c5 | sdk=fcf93a41b08c5193a1410d262602dc62 |
| 12 | package | v262144 | ||||
| 13 | shader_versions | v262144 | ||||
| 14 | # ---- Files ---- | |||||
| 15 | # subsdk0 is NintendoSDK_movie (main imports from it) | |||||
| 16 | modules | main subsdk0 sdk | ||||
| 17 | romfs_marker | JackGame/Content/Paks/pakchunk1-Switch.pak | ||||
| 18 | zip_store | .pak:.webm:.metallib | ||||
| 19 | # ---- Graphics ---- | |||||
| 20 | # 60 fps (30 on the Switch): the game's config caps Unreal at 30 (FrameRateLimit=30 in DefaultGameUserSettings.ini, which sets t.MaxFPS, and nvn.SyncInterval=2 in SwitchEngine.ini, the present | |||||
| 21 | # interval 2 it asks for); the host writes t.MaxFPS 60 and nvn.SyncInterval 1 into its console variables (hle_fpslock.c), so the game asks for present interval 1 itself. Unreal steps the game by | |||||
| 22 | # the time that really passed. DM_FPS_TARGET=30 (Documents/env.txt on the iPhone) keeps the game's 30 and saves power | |||||
| 23 | fps_target | 60 | ||||
| 24 | # ---- Input ---- | |||||
| 25 | # a 3D game: D-pad, right stick (camera) and L3 / R3 on the iPhone's virtual gamepad | |||||
| 26 | pad_layout | full | ||||
| 27 | # ---- Memory ---- | |||||
| 28 | # Unreal Engine 4.18: nninitStartup takes one address region for the whole engine (16 GB by default), which a NumberLineAllocator (main+0x177c4d0) hands out; the game's argument | |||||
| 29 | # -SwitchVirtualAddressSpaceSize= caps it, in MB up to 4095 (main+0x177c440: atoi, and a larger number is taken as bytes; 4224 gave a 4 KB region and a crash in the allocator's | |||||
| 30 | # Compaction at boot). Two cuts on the SDK 7.3.2 build (dm/tools/sdk_patches.py) put it 64 MB into the alias region: the node area 62 MB instead of 1 GB, and regions of 1 GB and more | |||||
| 31 | # 32 MB aligned instead of 1 GB. Engage's 5 GB block: 256 MB in front + 4.375 GB alias region + 256 MB stack region + 128 MB heap region (the game sets no heap) | |||||
| 32 | game_args | -SwitchVirtualAddressSpaceSize=4064 | ||||
| 33 | mem_reserve | 0x140000000 | ||||
| 34 | mem_alias | 0x118000000 | ||||
| 35 | mem_stack | 0x10000000 | ||||
| 36 | app_pool | 0xCD500000 | ||||
| 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.18 keeps every shader inline in the cooked packages, | |||||
| 39 | # zlib-compressed, in paks whose blocks are LZ5-compressed; the NSP script decodes them on the Mac with the game's own LZ5 (uepak.py, shader_split.py ue_legacy_jobs, DM_OODLE_SERVE) | |||||
| 40 | shader_groups | GlobalShaderCache=global #Engine/=engine #JackGame/=game | ||||
| 41 | shader_note | DRAGON QUEST XI S shaders |