Files
seedds 6de59702ec ROMANCE OF THE THREE KINGDOMS 8 REMAKE (0100C2A01A730000, update 1.1.3, Koei Tecmo's KTGL on SDK 17.5.3): game profile plus three general changes. Plays on the iPhone with a controller (IPA 16.8 GB); on the Mac from the logo movie, the intro and the title through a new game (the recommended setup, the opening story), the council, espionage, a month's missions, the 3D city view, a visit, a practice duel in 3D and a save and load, at 30 fps as on the Switch with sound, about 2 GB resident in the council and 2.5 GB in the duel, flat on a screen left idle. nx_extract: the update is a multi-program patch, the game's patch (…0000) beside a whole second program (…0001, 34 MB, its own Control NCA) that main starts with nn::oe::ExecuteProgram(1); nx_extract took the first Program NCA, the second program, and stopped with "NCA section 1 does not exist" layering it over the base game. It now takes the base NSP's lowest title ID (program index 0) and the update's Program and Control NCAs of that title ID (Balatro and Mario Kart 8 Deluxe extract as before; the host runs program 0 only). shader_split.py: a newer RDB than Age of Calamity's, 296 .fdata files (PDRK0000 and u64 0x10, then IDRK entries) beside data/*.file; flag 0x400000 marks chunks of a new form (u16 stored length, 8 bytes, the stream; a zero length ends; 16 KB inflated at most), LZ4 blocks with 0x100000 too, zlib otherwise; every other flag value is read as before. All 51,655 entries (49,620 LZ4, 2,026 zlib, 9 stored) inflate to the length in their header. The shaders are G2S (_S2G5000 / 6000 / 7000) and _DOK0000 containers again: 59,214 GLSLC outputs there and 149 in main (149 before the change), all built for the Mac and iOS. hle_audren.c: SDK 17.5.3's OpenAudioRenderer with an event calls the form without one through the PLT (sdk+0x1e489c), which the loader binds to the host's hook, so ar_open ran twice for one renderer: the inner call started the render thread before the event existed and the outer one logged a second renderer; the inner call (t_in_open) now goes straight to the SDK. Profile: pad_layout full (the dialogue boxes' auto and log buttons are the right stick and R3; the game reads a USB mouse, not the touch screen), mem_used 80 MB, a prewarm list recorded on the Mac over the route above (451 entries). Left as is: three shaders get textures of another type on some slots (texture type mismatch, once each), with nothing wrong on screen. Checked: the NSP script packs it from the NSPs alone (Mac and iOS shaders, 1 h 19 min and 1 h 29 min on a 12-core M6), the four tool test files pass (34 tests), profile_guess.py gives the profile's memory keys. README (games table, a Mac picture of the duel), AGENTS.md (48 → 49), docs/development.md and docs/agents say so
2026-10-24 08:29:17 +08:00

2.8 KiB

1# Game profile of ROMANCE OF THE THREE KINGDOMS 8 REMAKE (Switch, update v851968 = 1.1.3, with its four DLC). Plays on the Mac and on the iPhone
2# Format: see dm/games/README.md
3# Koei Tecmo's KTGL engine on NVN, SDK 17.5.3 (Ace Attorney Investigations Collection's SDK). Modules main + subsdk0 (NintendoSDK_movie: the WebM logo and story movies) + sdk.
4# RomFS: a newer RDB than Hyrule Warriors: Age of Calamity's: 0002/root.rdb and system.rdb (indexes, with .rdx beside them) over 296 .fdata files named by KTID (a PDRK header, then
5# IDRK entries) and 0002/data/*.file, 12.6 GB; each entry is LZ4 or zlib in 16 KB chunks (shader_split.py idrk_data). Scenarios, messages and movies sit in loose folders beside it.
6# The update is a multi-program patch: beside the game's patch it carries a whole second program (title ID 0100C2A01A730001, 34 MB, its own control data), which main starts with
7# nn::oe::ExecuteProgram(1) (main+0xa31910); the host runs only program 0 (nx_extract picks program index 0's NCAs)
8# ---- Identity ----
9title_id0100C2A01A730000
10program_id0100C2A01A730000
11# ---- App ----
12# Game name: only a label for profile listings and the Mac window title; the iOS app name is the game name in the base NSP, and the bundle ID comes from the base game title ID (build_ipa.sh / NSP script)
13nameROMANCE OF THE THREE KINGDOMS 8 REMAKE
14ipaRomanceOfTheThreeKingdoms8Remake.ipa
15app_categorypublic.app-category.strategy-games
16# Menus and maps by D-pad or left stick; the dialogue boxes' auto and log buttons are the right stick and R3 (the 3D layout's). The game reads no touch screen (main imports no
17# GetTouchScreenState), only a USB mouse, which the host does not provide
18pad_layoutfull
19# ---- Versions ----
20buildv8519681.1.3main=3c737e2d67d57d03ced6019f17f6e47dsubsdk0=2f9e7f4ec017bb00e214af7c2fd70f4bsdk=311deab1f062b504f3d646a49ddcd4e8
21packagev851968
22shader_versionsv851968
23# ---- Files ----
24# load order as on Horizon: main, subsdk*, sdk (subsdk0 = NintendoSDK_movie)
25modulesmain subsdk0 sdk
26romfs_marker0002/root.rdb
27zip_store.fdata:.file:.rdb:.webm:.metallib
28# ---- Memory ----
29# The NPDM declares no system resource (META +0x14 = 0): nninitStartup sets a heap of the pool − used memory (3.13 GB here). The 4 GB block of the other games without virtual
30# address memory (256 MB in front + 256 MB alias region + 256 MB stack region + 3.25 GB heap region)
31mem_reserve0x100000000
32mem_alias0x10000000
33mem_stack0x10000000
34app_pool0xCD500000
35sys_resource0x0
36# The rewritten modules take more than the default 64 MB of used memory (Age of Calamity: 66.6 MB → 72 MB), which SetHeapSize checks the request against
37mem_used0x5000000
38# ---- Shader split (shader_split.py; KTGL G2S and _DOK containers in the RDB entries, GLSLC outputs in main) ----
39shader_groups/0002/=rdb
40shader_noteROMANCE OF THE THREE KINGDOMS 8 REMAKE shaders