Commit e0714e2
DIAG v10: fix SNDR resolution (typed BSISoundDescriptor cast, not void*)
The CommonLib header settled it: BGSSoundDescriptorForm multiply-inherits
BSISoundDescriptor at +0x28 (TESForm is the offset-0 base), and the inner
BGSSoundDescriptor is-a BSISoundDescriptor at offset 0. So the descriptor the
game passes is either form+0x28 or the inner descriptor. v8/v9 compared void*
of the form base (offset 0), which never matches form+0x28 -> SNDR 00000000.
v10 compares static_cast<BSISoundDescriptor*>(snd) and
static_cast<BSISoundDescriptor*>(snd->soundDescriptor) against a_desc, letting
the compiler apply the base adjustment. Now the enchant SFX resolves to its real
FormID + editorID -> the target for the static dummy-replace. vtbl dump retained
as backup. Still pure log-only.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent b40d1c2 commit e0714e2
1 file changed
Lines changed: 10 additions & 2 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
5770 | 5770 | | |
5771 | 5771 | | |
5772 | 5772 | | |
| 5773 | + | |
| 5774 | + | |
| 5775 | + | |
| 5776 | + | |
| 5777 | + | |
5773 | 5778 | | |
5774 | 5779 | | |
5775 | 5780 | | |
5776 | 5781 | | |
5777 | 5782 | | |
5778 | | - | |
5779 | | - | |
| 5783 | + | |
| 5784 | + | |
| 5785 | + | |
| 5786 | + | |
| 5787 | + | |
5780 | 5788 | | |
5781 | 5789 | | |
5782 | 5790 | | |
| |||
0 commit comments