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

47 lines
2.8 KiB
Plaintext
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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
# Format: see dm/games/README.md
# 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.
# 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
# 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.
# 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
# nn::oe::ExecuteProgram(1) (main+0xa31910); the host runs only program 0 (nx_extract picks program index 0's NCAs)
# ---- Identity ----
title_id 0100C2A01A730000
program_id 0100C2A01A730000
# ---- App ----
# 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)
name ROMANCE OF THE THREE KINGDOMS 8 REMAKE
ipa RomanceOfTheThreeKingdoms8Remake.ipa
app_category public.app-category.strategy-games
# 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
# GetTouchScreenState), only a USB mouse, which the host does not provide
pad_layout full
# ---- Versions ----
build v851968 1.1.3 main=3c737e2d67d57d03ced6019f17f6e47d subsdk0=2f9e7f4ec017bb00e214af7c2fd70f4b sdk=311deab1f062b504f3d646a49ddcd4e8
package v851968
shader_versions v851968
# ---- Files ----
# load order as on Horizon: main, subsdk*, sdk (subsdk0 = NintendoSDK_movie)
modules main subsdk0 sdk
romfs_marker 0002/root.rdb
zip_store .fdata:.file:.rdb:.webm:.metallib
# ---- Memory ----
# 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
# address memory (256 MB in front + 256 MB alias region + 256 MB stack region + 3.25 GB heap region)
mem_reserve 0x100000000
mem_alias 0x10000000
mem_stack 0x10000000
app_pool 0xCD500000
sys_resource 0x0
# 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
mem_used 0x5000000
# ---- Shader split (shader_split.py; KTGL G2S and _DOK containers in the RDB entries, GLSLC outputs in main) ----
shader_groups /0002/=rdb
shader_note ROMANCE OF THE THREE KINGDOMS 8 REMAKE shaders