Devil May Cry 3 HD Collection · Evidence-first C++20 research

Урок 1 — Що таке .MOD і де він живе — DMC Rengine

Lesson 1 of 12 in the canonical DMC3 MOD learning path. Start with the completed DMC3 HD MOD reverse, the resource's role and the separation between reverse completeness and writer/original-game acceptance. The repository Markdown remains the source authority for this educational page.

Lesson 1 scope

How to use lesson 1

1. Не «просто 3D-модель»

У DMC3 HD .MOD — serialized MOD ресурс скінованої 3D-моделі. Він поєднує геометрію, object/mesh state, skeleton node domain, rest transforms, skin indices/weights, texture-slot selectors і legacy material state.

MOD = model document
    + objects
    + meshes
    + vertex streams
    + skeleton/rest pose
    + skin binding
    + material selectors
    + runtime fixup contract

2. Поточний статус reverse

MOD reverse complete for the canonical DMC3 HD scope.

Це не означає, що кожен байт отримав красиву artistic/material назву. Це означає, що кожен важливий serialized/runtime domain має фінальний evidence-статус.

Можливі фінальні стани:

Тому PRESERVED_UNDECODED тепер є terminal evidence classification, а не «ще треба дореверсити».

3. Ресурсний стек

DMC3-*.nbz
 -> GData.afs/ logical namespace
 -> PAC або PNST
 -> physical slot / nested container
 -> MOD payload

Writer не закінчується на .mod: authored child треба коректно повернути в parent container, потім у NBZ/overlay chain.

Після PR #372 ми вже маємо provenance-bound real retail PNST reintegration для одного authored MOD child і synthetic MOD -> container -> NBZ overlay -> reopen. Але original-runtime selection/consumption цього overlay ще не доведені.

4. Що MOD дає runtime

Після завантаження гра:

  1. читає document/object/mesh records;
  2. relocates потрібні offsets;
  3. будує runtime mesh state;
  4. зв’язує texture slots із зовнішнім companion;
  5. використовує skeleton runtime nodes;
  6. будує current world matrices;
  7. використовує inverse rest matrices;
  8. формує skin palette;
  9. подає skin indices/weights у vertex shader.

5. З чим MOD взаємодіє

Texture companion

mesh.texture_slot посилається у зовнішню texture domain authority.

MOT / CMotion

MOD дає hierarchy/rest pose/motion-group relationship. MOT/CMotion дає evaluated animation data. Serialized MOD rest pose не можна змішувати з animated pose.

SCM

SCM і MOD частково ділять model-family infrastructure, але SCM — scene/stage geometry, MOD — skinned model pipeline.

EFM

Спільні physical offsets не гарантують однакової семантики. mesh+0x38 — хороший приклад: audited MOD path не forward-ить його, тоді як homologous EFM slot live.

SHW

SHW має shadow-hull geometry і matrix selectors. Це сусідня resource-family authority і не є відкритим MOD reverse blocker.

6. Evidence baseline

38 unique MOD
166 objects
180 meshes
20,976 vertices
285 transforms

Canonical reverse covers document/object/mesh ABI, hierarchy/order, transforms, texture slot + GS CLAMP, post-load topology, companion validation, inverse-rest skin palette, runtime texture descriptor ABI, direct skin ABI, motion-group relationship і source-byte preservation.

7. Ключові closure outcomes

Це вже закриті reverse результати.

8. Що вже доведено як writer

9. Що вже доведено для container chain

Real retail PNST — PR #372

parent                   m20_s00_012.pac
representation           PNST
physical slots           33
target slot              23
target offset            129280
target size              1888
parent size              346272

Після authored MOD reintegration:

Synthetic NBZ overlay — PR #372

Authored MOD проходить через existing container writer/reintegrator та existing NBZ overlay writer/source, generated NBZ reopens, root member дорівнює rebuilt container, а MOD canonical reopen зберігає authored value.

Це synthetic NBZ product gate, не retail/original-runtime acceptance.

10. Що залишається після reverse completion

Не закриті writer/integration/acceptance gates:

Сусідні MOT playback і TIM2 authoring мають власні authority і не рахуються як незакритий MOD reverse.

Правильна evidence chain така:

MOD reverse complete
!= full writer complete
!= retail NBZ acceptance
!= original-game acceptance

Canonical source

This page is a public discovery and readability layer. It does not replace the repository's current implementation, status, evidence or format-specific documentation.

Open canonical GitHub source

Evidence boundary

A parser is not automatically a writer. A successful writer is not automatically equivalent to Capcom's offline tools. Synthetic validation does not establish original-game behavioral equivalence.

Use the current status for promoted capabilities and open proof gates.