ividyon / WitchyBND

Unpacks/repacks FromSoftware archive formats and serializes FromSoftware data formats.
Other
116 stars 11 forks source link

Identify and rename AC6 MissionParam field "Unk0x124" as "missionDebriefingTalk" and add related metadata #50

Closed ndru83 closed 1 month ago

ndru83 commented 1 month ago

Identify and rename AC6 MissionParam field Unk0x124 as missionDebriefingTalk and adding related metadata.

Context & Corroborating Evidence

Mission debriefings are talk sequences that play after completing certain Armored Core VI missions.

These debriefings seem to be associated with 80XXXX000 TalkParam sequences, where XXXX denotes the value of the missionDebriefingTalk MissionParam field, but the mapping may also be represented algebraically as 800000000 + 10000 * missionDebriefingTalk.

The lack of naked references to 80XXXX000 TalkParam IDs in MQB or ESD files seems to indicate that there's a separate, dedicated command for triggering these sequences, though I've not managed to identify one so far.

Only missions with a missionDebriefingTalk (Unk0x124) seem to play mission debriefings and, as can be seen in the following table, the values and their respective TalkParam IDs seem to line up in all but one case.

MissionParam ID MissionParam paramdexName MissionParam missionDebriefingTalk TalkParam ID TalkParam paramdexName
2010 Illegal Entry 2000 802000000 None (see notes)
2050 Attack the Watchpoint 2010 802010000 "...A friend of mine sent me this observational data."
2055 Attack the Watchpoint (ALT) 2010 802010000 "...A friend of mine sent me this observational data."
3011 "Steal the Survey Data" 2020 802020000 "Hey, Raven. It's me, Rusty— old buddy from the Vespers."
3043 Attack the Old Spaceport 2025 802025000 "Here's the situation, 621."
3230 Destroy the Ice Worm 2030 802030000 "The temporary alliance between the Arquebus and groups turned the tide of war..."
4030 Reach the Coral Convergence 2040 802040000 "Arquebus seized control of the Coral..."
4100 MIA 2070 802070000 "We have entered satellite orbit."
5010 Take the Uninhabited Floating City 2050 802050000 "How's the view at 8,000 meters, tourist?"

Notes:

Although the debriefing for MissionParam ID 2010 (Illegal Entry), maps to an existing TalkParam entry of ID 802000000 spoken by the "Narrator", but all entries in this sequence seem to reference invalid msgId's. Instead the mission seems to be playing a pre-rendered video associated with the 301102200 TalkID sequence (""Cora"—a sublime substance.").

Whether the 802000000 entries indicates a leftover portion of some cut content or is just part of some hacky workaround for the video is unclear at this point. Please note, that the actual 301102200 TalkParam sequence playing under the video does not seem to be associated with any particular naked parameter in an MQB cutscene file or ESD script either.

There might be some additional flag field that could acts as a precondition for the debriefing to play, although I've not managed to identify one yet.

The somewhat related UnkByte0x44 field seems to be a likely candidate, but there's a slight mismatch between its use and that of the proposed missionDebriefingTalk.

UnkByte0x44 seems to be more associated with chapter transitions that sometime happen to line up with missions with debriefings.

ndru83 commented 1 month ago

@ividyon - Please note that English is not my first language so I'm open to proposals that might better describe the field in question.

I'm not sure whether this renaming could constitute a breaking change for other projects relying on paramdex.

Given the weirdness of MissionParam ID - 2010 (Illegal Entry) it would be good to have someone review and validate whether that's really just some edge-case.

ividyon commented 1 month ago

@ndru83 Thanks for the effort, but I suggest you make this contribution to the Smithbox project, as that is where I source my Paramdex. I can merge this PR here, but it would eventually be overwritten unless added to Smithbox.

ndru83 commented 1 month ago

@ividyon Oh, I didn't realize. Thank you for the quick response! I'll close the PR and submit it there! Cheers!