You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Commit 625a197
Browse filesBrowse the repository at this point in the historyBrowse files
Show the Items page over the exact pause scene and record skinned palettes
The town and dungeon main menus keep the frame captured when the game pauses,
plus a same-tick copy replayed without the player's meshes, shadow, outline,
player-owned effects and town exit markers. Entering Items runs the native orb
close: the orb shows the scene converging on the playerless backdrop while bg16
fades and the player dissolves; the return uses the native open. The menu
character is framed on the left above its name, centred on the HP bar, and fades
in once the orb has closed. The Item title is centred, the quick-select slots sit
higher, and the cursor moves on one continuous offset across the panel split,
stays hidden until the panels settle and is never mirrored. The debug item
browser ignores the spread.
Skinned prog0 draws record their bone palettes beside the draw (Kazarov bump),
the renderer gains Tracy profiling, and the logging, crash report, config, input
startup and quick-change sound work is included with its docs.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/DEBUG.md
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -9,7 +9,7 @@ Retail cites are `ps2/src` file:line. PC cites are `port/src` or `tools/kazarov`
9
9
-`true`: at boot, `MasterDebugCode` is set to `MASTER_DEBUG_CODE` and `MasterDebugModeOn` is set to 1. Retail `title.cpp:2377` then unlocks pad 2 without a developer save. Retail `title.cpp:2281` would otherwise read the save's debug code. Also enables the pad-1 chord below.
10
10
-`false`: nothing changes at boot. Retail behaviour: pad 2 unlocks only if the four shoulders are held on pad 2 at boot and a memory card save carries a debug code. The pad-1 chord is off.
11
11
12
-
Set `"game": {"debug_mode": true}` in the save root's `config.json` to enable native debug controls. Ordinary boots preserve the retail developer-save gate. `--jump` enables debug controls explicitly for that run.
12
+
Set `"game": {"debug_mode": true}` in the `config.json` beside the save root to enable native debug controls. Ordinary boots preserve the retail developer-save gate. `--jump` enables debug controls explicitly for that run.
13
13
14
14
Boot code: `port/src/debug_mode.cpp` (`DebugModeBoot`), called from `port/src/mainloop.cpp` after the retail shoulder check.
Copy file name to clipboardExpand all lines: docs/NATIVE_MODELS.md
+15-1Lines changed: 15 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -24,7 +24,21 @@ A rotation key replaces an authored matrix's scale in the game; a clip that rota
24
24
25
25
Each CFG `KEY` interval is one action and one glTF animation, named in English (see [motion names](MOTION_NAMES.md)); a motion without `KEY` intervals is one action named after its file. Clip times start at zero, and keys the game would interpolate at an action's first and last frame are sampled with the game's own interpolation (including its rotation thresholds) and added there. Where several actions share an interval each still has its own clip. Auxiliary material, visibility, camera and vertex keys are sliced to each action the same way, with step sampling for visibility and linear sampling for the rest. A `KEY` that ends before it starts (one in the retail data: `横飛びL` in `event/e00/e50/e50_monica.chr`) plays as a still pose at its start.
26
26
27
-
Motions loaded onto an existing character, such as event and extension motions, are published into the models the game loads them onto and never into an animation-only glTF. The extractor reads those loads from the compiled event and map scripts (`_LOAD_MOTION`, and `_LOAD_CHARA` of the pack itself, with constant actors or actors read from globals the script only sets to constants) and from a table of the game code that loads packs itself (fishing, the buggy game and the invent menu). Actor 0 is the player unit, whose model the game picks at run time from the active character and weapon, so those motions go to each player model they fit. Every target must fit the motion's skeleton; [the model format](PORT_MODEL_FORMAT.md#motions-for-other-bundles-models) gives the rules. Their clips are named `<bundle>/<action>`.
27
+
Motions loaded onto an existing character, such as event and extension motions, are published into the models the game loads them onto and never into an animation-only glTF. The extractor reads those loads from the compiled event and map scripts (`_LOAD_MOTION`, and `_LOAD_CHARA` of the pack itself, with constant actors or actors read from globals the script only sets to constants) and from a table of the game code that loads packs itself (fishing, the buggy game and the invent menu). Actor 0 is the player unit, whose model the game picks at run time from the active character and weapon, so those motions go to each player model they fit. Every target must fit the motion's skeleton; [the model format](PORT_MODEL_FORMAT.md#motions-for-other-bundles-models) gives the rules.
28
+
29
+
Fourteen of the 254 external motions are placed by skeleton match because no load reaches them, and `dc2data` reports each one:
30
+
31
+
| Motion | Reason | Models |
32
+
|---|---|---|
33
+
|`event/e00/e50/e50_guiltoni#1`, `event/e300/e352/e352_guiltoni#0`, `event/e500/e536/e536_guiltoni#0`| Scripts load the pack, but its own models do not fit |`event/lm/p00_06vs`|
34
+
|`dungeon/chara/c01_fishing#0`| Unloaded; the game loads the copy `chara/c01_fishing` onto the player | Max's player models |
35
+
|`menu/chara4/c01_camera#0`| Unloaded; the game loads the copy in `camera.pac` onto the invent menu's Max |`menu/chara4/c01b_think`|
36
+
|`event/e200/e209/e208_mints#0`| Unloaded; copy of `event/e200/e208/e208_mints`| That copy's models |
37
+
|`event/e700/e712/e207_monica#0`| Unloaded; copy of `event/e200/e207/e207_monica`| That copy's models |
38
+
|`sg/sig/sig.pak/mints_bomb#0`| Unloaded; copy of `sg/pb/pb.pak/mints_bomb`| Max's player models |
39
+
|`event/e3_event/e3_mints#0`, `event/e700/e712/e712_mints#0`| Unloaded, no copy | Best skeleton fit: `chara/c01_base`|
40
+
|`event/lm/monica#0`, `event/lm/mo_vs_gil2/c02_vs2#0`| Unloaded, no copy | Best skeleton fit: `chara/c02_base`|
41
+
| `event/lm/mo_vs_gil2/b03a_vs2#0`, `dungeon/monster/b18a#1` | Unloaded, no copy | Best skeleton fit: `event/lm/p00_06vs` | Their clips are named `<bundle>/<action>`.
28
42
29
43
MDT corner streams become standard position, normal, UV and colour attributes. Sidecar primitive mappings preserve independent source stream identities for CPU deformation. Normalized normals and clamped colours meet glTF requirements. Sparse `stream_overrides` retain only components standard reconstruction cannot reproduce: fourth components, nonunit normals, unclamped colours and unused source elements. Full geometry streams are not duplicated.
0 commit comments