Jump to content

Recommended Posts

Posted (edited)

After a report that my very simple Paradiso General Goods Clothing and Incidentals causes a crash on the beach, I've tried looking at it with xEdit 4.1.5p (an adventure in itself). I've found it has a Navmesh Info Map 00000FF1.

What the heck is this? How did CK attach this to a miniscule change of a leveled list? Can I safely get rid of it?

Also, there are a fair number of completely unrelated masters. Does the experimental xEdit master cleaning work?

Edited by DayDreamer
Posted (edited)

Small flagged files can't be saved in SF1Edit?

 

Quote
 *** Application started *** 
Time: [20836765] 2025-11-02 20:29:46.146
ExceptionInfo: nil
Exception: Exception
Message: Small flagged files can't be saved in SF1Edit
Filesize: 37490176
Filedate: 2025-10-19 09:27:36
Computer: WASI7-6850-1080
User: Play
ThreadID: 2892
ProcessID: 472
Version: SF1Edit 4.1.5p x64
Current Window Caption: SF1Edit 4.1.5p x64
Current Window Class: TfrmMain
--------------------------------------------------------------
Callstack (Frames):
[00000000005E8B24] JclDebug.TJclStackInfoList.Create (Line 5722, "JclDebug.pas")
[00000000005E8668] JclDebug.JclCreateStackList (Line 5564, "JclDebug.pas")
[00000000005E85D6] JclDebug.DoExceptionStackTrace (Line 5505, "JclDebug.pas")
[00000000005EAC97] JclDebug.DoExceptNotify (Line 6995, "JclDebug.pas")
[00000000005DA615] JclHookExcept.TNotifierItem.DoNotify (Line 272, "JclHookExcept.pas")
[00000000005DA8C5] JclHookExcept.DoExceptNotify (Line 347, "JclHookExcept.pas")
[00000000005DA9C5] JclHookExcept.HookedRaiseException (Line 381, "JclHookExcept.pas")
[000000000041174D] System.@InternalRaiseAtExcept (Line 22464, "System.pas")
[0000000000411794] System.@RaiseExcept (Line 22558, "System.pas")
[0000000001062EDA] wbImplementation.TwbFile.PrepareSave (Line 5367, "wbImplementation.pas")
[000000000106C3D5] wbImplementation.TwbFile.WriteToStreamInternal (Line 6407, "wbImplementation.pas")
[00000000010C4918] wbImplementation.TwbElement.WriteToStream (Line 20340, "wbImplementation.pas")
[000000000106C2ED] wbImplementation.TwbFile.WriteToStream (Line 6393, "wbImplementation.pas")
[0000000001CF27CE] xeMainForm.TfrmMain.SaveChanged (Line 15919, "xeMainForm.pas")
[0000000001CAF8BB] xeMainForm.TfrmMain.FormKeyDown (Line 6597, "xeMainForm.pas")
[000000000069D539] Vcl.Controls.TWinControl.KeyDown (Line 12246, "Vcl.Controls.pas")
[000000000069D5FC] Vcl.Controls.TWinControl.DoKeyDown (Line 12277, "Vcl.Controls.pas")
[000000000069D638] Vcl.Controls.TWinControl.WMKeyDown (Line 12286, "Vcl.Controls.pas")
[000000000040F994] System.TObject.Dispatch (Line 19258, "System.pas")
[0000000000692E5A] Vcl.Controls.TControl.WndProc (Line 7998, "Vcl.Controls.pas")
[000000000069AB70] Vcl.Controls.TWinControl.WndProc (Line 11233, "Vcl.Controls.pas")
[000000000082CDD0] Vcl.Forms.TCustomForm.WndProc (Line 6599, "Vcl.Forms.pas")
[0000000001D0E49D] xeMainForm.TfrmMain.WndProc (Line 21083, "xeMainForm.pas")
[0000000001BCF99B] Vcl.Styles.Utils.SystemMenu.TVclStylesSystemMenu.WndProc (Line 332, "Vcl.Styles.Utils.SystemMenu.pas")
[0000000000699C3C] Vcl.Controls.TWinControl.MainWndProc (Line 10902, "Vcl.Controls.pas")
[0000000001D1359B] xeMainForm.Detour_TWinControl_MainWndProc (Line 21880, "xeMainForm.pas")
[00000000005560D6] System.Classes.StdWndProc (Line 19109, "System.Classes.pas")
[00007FFDB45FEF5C] Unknown function at CallWindowProcW
[00007FFDB45FE684] Unknown function at DispatchMessageW
[000000000083D2A5] Vcl.Forms.TApplication.ProcessMessage (Line 13408, "Vcl.Forms.pas")
[000000000083D318] Vcl.Forms.TApplication.HandleMessage (Line 13438, "Vcl.Forms.pas")
[000000000083D76F] Vcl.Forms.TApplication.Run (Line 13577, "Vcl.Forms.pas")
[0000000001DE5F96] xEdit.xEdit (Line 143, "")
[00007FFDB5107374] BaseThreadInitThunk
[00007FFDB585CC91] RtlUserThreadStart
==============================================================

 

 

Edited by DayDreamer
exception log
Posted

Cleaning should work fine.

It is correct that xedit cannot save small or medium master files (or standard .esp files). It's a technical issue with how those files are constructed. You'd have to go poke one of the devs for a more detailed explanation.

No idea why you ended up with a NAVI record but I've had Fallout 4 stuff do the same even though I didn't touch a navmesh.

Posted

I had a similar thing happen in FO4 working on the leveling Cap stash mod.  I was editing a leveled list entry and inadvertently (read fat fingered) opened a cell in view mode.  Didn't even change the cell, but when I saved the Leveled List, I got a NAVI record I neither wanted nor needed.  I deleted it safely.  

Posted (edited)

It won't save a change from small master, either. What should I try now?

Quote
 *** Application started *** 
Time: [77776859] 2025-11-03 12:18:46.238
ExceptionInfo: nil
Exception: Exception
Message: Modules with Small, Medium, or Update flagged modules as masters can't be saved in SF1Edit
Filesize: 37490176
Filedate: 2025-10-19 09:27:36
Computer: WASI7-6850-1080
User: Play
ThreadID: 10776
ProcessID: 1708
Version: SF1Edit 4.1.5p x64
Current Window Caption: SF1Edit 4.1.5p x64
Current Window Class: TfrmMain
--------------------------------------------------------------
Callstack (Frames):
[00000000005E8B24] JclDebug.TJclStackInfoList.Create (Line 5722, "JclDebug.pas")
[00000000005E8668] JclDebug.JclCreateStackList (Line 5564, "JclDebug.pas")
[00000000005E85D6] JclDebug.DoExceptionStackTrace (Line 5505, "JclDebug.pas")
[00000000005EAC97] JclDebug.DoExceptNotify (Line 6995, "JclDebug.pas")
[00000000005DA615] JclHookExcept.TNotifierItem.DoNotify (Line 272, "JclHookExcept.pas")
[00000000005DA8C5] JclHookExcept.DoExceptNotify (Line 347, "JclHookExcept.pas")
[00000000005DA9C5] JclHookExcept.HookedRaiseException (Line 381, "JclHookExcept.pas")
[000000000041174D] System.@InternalRaiseAtExcept (Line 22464, "System.pas")
[0000000000411794] System.@RaiseExcept (Line 22558, "System.pas")
[0000000001062CBF] wbImplementation.TwbFile.PrepareSave (Line 5354, "wbImplementation.pas")
[000000000106C3D5] wbImplementation.TwbFile.WriteToStreamInternal (Line 6407, "wbImplementation.pas")
[00000000010C4918] wbImplementation.TwbElement.WriteToStream (Line 20340, "wbImplementation.pas")
[000000000106C2ED] wbImplementation.TwbFile.WriteToStream (Line 6393, "wbImplementation.pas")
[0000000001CF27CE] xeMainForm.TfrmMain.SaveChanged (Line 15919, "xeMainForm.pas")
[0000000001CAF8BB] xeMainForm.TfrmMain.FormKeyDown (Line 6597, "xeMainForm.pas")
[000000000069D539] Vcl.Controls.TWinControl.KeyDown (Line 12246, "Vcl.Controls.pas")
[000000000069D5FC] Vcl.Controls.TWinControl.DoKeyDown (Line 12277, "Vcl.Controls.pas")
[000000000069D584] Vcl.Controls.TWinControl.DoKeyDown (Line 12259, "Vcl.Controls.pas")
[000000000069D638] Vcl.Controls.TWinControl.WMKeyDown (Line 12286, "Vcl.Controls.pas")
[00000000008AAECB] VirtualTrees.TBaseVirtualTree.WMKeyDown (Line 16987, "VirtualTrees.pas")
[000000000040F994] System.TObject.Dispatch (Line 19258, "System.pas")
[0000000000692E5A] Vcl.Controls.TControl.WndProc (Line 7998, "Vcl.Controls.pas")
[000000000069AB70] Vcl.Controls.TWinControl.WndProc (Line 11233, "Vcl.Controls.pas")
[00000000008C25C3] VirtualTrees.TBaseVirtualTree.WndProc (Line 26185, "VirtualTrees.pas")
[0000000000699C3C] Vcl.Controls.TWinControl.MainWndProc (Line 10902, "Vcl.Controls.pas")
[0000000001D1359B] xeMainForm.Detour_TWinControl_MainWndProc (Line 21880, "xeMainForm.pas")
[00000000005560D6] System.Classes.StdWndProc (Line 19109, "System.Classes.pas")
[00007FFDB45FEF5C] Unknown function at CallWindowProcW
[00007FFDB45FE684] Unknown function at DispatchMessageW
[000000000083D2A5] Vcl.Forms.TApplication.ProcessMessage (Line 13408, "Vcl.Forms.pas")
[000000000083D318] Vcl.Forms.TApplication.HandleMessage (Line 13438, "Vcl.Forms.pas")
[000000000083D76F] Vcl.Forms.TApplication.Run (Line 13577, "Vcl.Forms.pas")
[0000000001DE5F96] xEdit.xEdit (Line 143, "")
[00007FFDB5107374] BaseThreadInitThunk
[00007FFDB585CC91] RtlUserThreadStart
==============================================================

 

 

Cleaning the masters, then removing the small flag:

Quote
 *** Application started *** 
Time: [78321812] 2025-11-03 12:27:51.200
ExceptionInfo: nil
Exception: Exception
Message: Small flag can't be added or removed from existing files in SF1Edit
Filesize: 37490176
Filedate: 2025-10-19 09:27:36
Computer: WASI7-6850-1080
User: Play
ThreadID: 7284
ProcessID: 10524
Version: SF1Edit 4.1.5p x64
Current Window Caption: SF1Edit 4.1.5p x64
Current Window Class: TfrmMain
--------------------------------------------------------------
Callstack (Frames):
[00000000005E8B24] JclDebug.TJclStackInfoList.Create (Line 5722, "JclDebug.pas")
[00000000005E8668] JclDebug.JclCreateStackList (Line 5564, "JclDebug.pas")
[00000000005E85D6] JclDebug.DoExceptionStackTrace (Line 5505, "JclDebug.pas")
[00000000005EAC97] JclDebug.DoExceptNotify (Line 6995, "JclDebug.pas")
[00000000005DA615] JclHookExcept.TNotifierItem.DoNotify (Line 272, "JclHookExcept.pas")
[00000000005DA8C5] JclHookExcept.DoExceptNotify (Line 347, "JclHookExcept.pas")
[00000000005DA9C5] JclHookExcept.HookedRaiseException (Line 381, "JclHookExcept.pas")
[000000000041174D] System.@InternalRaiseAtExcept (Line 22464, "System.pas")
[0000000000411794] System.@RaiseExcept (Line 22558, "System.pas")
[0000000001062D6B] wbImplementation.TwbFile.PrepareSave (Line 5359, "wbImplementation.pas")
[000000000106C3D5] wbImplementation.TwbFile.WriteToStreamInternal (Line 6407, "wbImplementation.pas")
[00000000010C4918] wbImplementation.TwbElement.WriteToStream (Line 20340, "wbImplementation.pas")
[000000000106C2ED] wbImplementation.TwbFile.WriteToStream (Line 6393, "wbImplementation.pas")
[0000000001CF27CE] xeMainForm.TfrmMain.SaveChanged (Line 15919, "xeMainForm.pas")
[0000000001CAF8BB] xeMainForm.TfrmMain.FormKeyDown (Line 6597, "xeMainForm.pas")
[000000000069D539] Vcl.Controls.TWinControl.KeyDown (Line 12246, "Vcl.Controls.pas")
[000000000069D5FC] Vcl.Controls.TWinControl.DoKeyDown (Line 12277, "Vcl.Controls.pas")
[000000000069D584] Vcl.Controls.TWinControl.DoKeyDown (Line 12259, "Vcl.Controls.pas")
[000000000069D638] Vcl.Controls.TWinControl.WMKeyDown (Line 12286, "Vcl.Controls.pas")
[00000000008AAECB] VirtualTrees.TBaseVirtualTree.WMKeyDown (Line 16987, "VirtualTrees.pas")
[000000000040F994] System.TObject.Dispatch (Line 19258, "System.pas")
[0000000000692E5A] Vcl.Controls.TControl.WndProc (Line 7998, "Vcl.Controls.pas")
[000000000069AB70] Vcl.Controls.TWinControl.WndProc (Line 11233, "Vcl.Controls.pas")
[00000000008C25C3] VirtualTrees.TBaseVirtualTree.WndProc (Line 26185, "VirtualTrees.pas")
[0000000000699C3C] Vcl.Controls.TWinControl.MainWndProc (Line 10902, "Vcl.Controls.pas")
[0000000001D1359B] xeMainForm.Detour_TWinControl_MainWndProc (Line 21880, "xeMainForm.pas")
[00000000005560D6] System.Classes.StdWndProc (Line 19109, "System.Classes.pas")
[00007FFDB45FEF5C] Unknown function at CallWindowProcW
[00007FFDB45FE684] Unknown function at DispatchMessageW
[000000000083D2A5] Vcl.Forms.TApplication.ProcessMessage (Line 13408, "Vcl.Forms.pas")
[000000000083D318] Vcl.Forms.TApplication.HandleMessage (Line 13438, "Vcl.Forms.pas")
[000000000083D76F] Vcl.Forms.TApplication.Run (Line 13577, "Vcl.Forms.pas")
[0000000001DE5F96] xEdit.xEdit (Line 143, "")
[00007FFDB5107374] BaseThreadInitThunk
[00007FFDB585CC91] RtlUserThreadStart
==============================================================

 

 

Edited by DayDreamer
Posted (edited)

The CK will generate a NAVI, regardless of whether or not the active file edits any navmesh.  If there is NVMIs in the upstream maters NAVI records, that do not match the data on their respective NAVMs.  If the CK is doing this, then the NAVIs are broken for at least 1 navmesh in at least one of the active files masters.

 

Also, editing in relation to Small/Medium flagged files for Starfield is blanket prohibited due to a broken change in how FormIDs are handled in them, which makes it impossible to reliably work with them in xEdit.  This is an issue with the game itself and not xEdit.

Edited by robertgk2017
Posted (edited)
6 hours ago, robertgk2017 said:

then the NAVIs are broken for at least 1 navmesh in at least one of the active files masters.

Since I'd routinely set USFP on loading to incorporate any existing fixes, and USFP in turn loads all the official masters, then at the time of making my plugin there was a broken navmesh somewhere in them.

 

6 hours ago, robertgk2017 said:

blanket prohibited due to a broken change in how FormIDs are handled in them

Could somebody please specifically document this broken change in the AFKmods Knowledge Base?

I'll check to see whether the CK will UNflag a small master. But unflagging should be relatively easy for xEdit, as it wouldn't affect the FormIDs in any way. They'd be exactly the same in a larger pool.

And it would be really nicer to not throw an exception in addition to the warning.

Nevertheless, I'm glad that xEdit is able to read (most of) the files now, as it would have been impossible to debug this otherwise.

Edited by DayDreamer
  • DayDreamer changed the title to xEdit, Small Masters, and Navmesh Info Map
Posted
1 hour ago, DayDreamer said:

whether the CK will UNflag a small master

The CK will not. The CK will not flag any .esm as an active file. The CK will only save an .esp. The CK will only convert an .esp to any .esm.

For workflow, we need to be able to operate on both .esm and .esp.

Since SF1Edit will only (currently) save a large .esm, we need to be able to convert a small or medium to a large .esm.

Since CK will only save an .esp, SF1Edit needs to be able to convert .esm back to .esp, so that we can use CK to properly make the small and medium .esm, and upload Creations.

(Currently, I'm screwed.)

Posted

After discussion, helpfully robertgk2017 made some suggestions on work-arounds. Since SF1Edit currently only works on full/large masters (.esm) and not plugins (.esp):

  1. use SF CK to create a new full/large .esm with nothing much in it,
  2. save and quit,
  3. use SF1Edit to copy my 2 leveled-list records from my small master .esm into the new .esm,
  4. renumber the resulting records to match the old small .esm and my original .esp,
  5. clean the .esm to remove unused masters,
  6. save and quit,
  7. rename the .esm file suffix to .esp,
  8. use Notepad++ hex edit to remove the "master" flag (a 01 little endian flag),
  9. use SF CK on the new .esp to recreate the new small master .esm,
  10. publish.

A lot of work to simply clean a 2 record file. It would have been a lot easier for xEdit to work on the original .esp.

They crippled xEdit. According to Discordant explanations, it won't work on native .esp because that might encourage folks to publish .esp instead of .esm. Unlike previous versions of xEdit, it won't remove the "master" flag either. Social engineering, not computer engineering.

Posted
1 hour ago, DayDreamer said:

They crippled xEdit.

Incorrect. xEdit can only work with what it has available to it and the way Bethesda's current form ID system works in Starfield does not allow for editing files with the Small or Medium master flag.

As for it not working on .esp files, considering the level of silliness people engage in with mods, encouraging direct .esp editing would indeed lead to people publishing those files as actual mods. Since the game absolutely will not work properly loading those, it would break peoples' games. At some point you have to weigh the decision of "just let me do this" against what would happen if everyone actually did. Then they'd blame the wrong party for why it doesn't work.

The explanations you got on Discord were spot on btw. You weren't just talking to randoms, you were talking to the app's primary developers who ought to know what can and can't be done.

Posted (edited)
1 hour ago, DayDreamer said:

They crippled xEdit.

You are intentionally lying and misrepresenting the explanations we have given to your questions. 

We have the restrictions in place for good reason to prevent people and xEdit itself, from producing broken/corrupted files.   The issues at play have nothing to do with xEdit itself, but how Starfields engine works.  And we have no control over that.  We have reported these issues to Bethesda in an egregious amount of technical detail.  And at least as of the most recent game/CK update, these issues have not yet been fixed.   Until they are, we cannot remove the restrictions we have in place.  This is not up to us.  Bashing Elminster and the rest of us devs for "crippling" xEdit is disingenuous at best.  Be better.

Edited by robertgk2017
Posted
16 hours ago, Arthmoor said:

editing files with the Small or Medium master flag.

With the posted explanations, I've not advocated for editing files with the Small or Medium master flag. I understand the xEdit code limitations.

I'm requesting that we can edit .esp, and then the CK will set the Small or Medium master flag as part of its distribution.

17 hours ago, Arthmoor said:

considering the level of silliness

All CK development is done with .esp, then converted to .esm for publication. I'm asking that xEdit also edit .esp, because that matches the workflow, instead of the convoluted work-around described above. I've seen no technical reason that will fail.

If folks were going to be silly, they'd already be publishing .esp instead of .esm -- because that's what the CK produces.

SF1Edit will currently read .esp, and copy into .esm. In fact, that's how I've been contributing patches for USFP.

I've always tested them as small .esm (and have noted that on the tracking attachment), but IMnsHO that's not the best distribution method for a contributed patch. If you'd prefer a small .esm, please let all of us know....

17 hours ago, Arthmoor said:

explanations you got on Discord

Some of the "explanations" have been mere polemic. As I've noted above, robertgk2017 has been helpful (until now).

Posted
17 hours ago, robertgk2017 said:

You are intentionally lying and misrepresenting the explanations we have given to your questions.

Earlier, I'd thanked you for your help. I've given the exact explanation posted on Discord. That was confirmed above by Arthmoor. That's truth. This personal attack is unwarranted.

Although it's been many years, I've been programming Pascal since 1978 (UCSD Pascal on the Terak). In the 1980s I'd made much of my living with Apple Pascal (and later Metrowerks Pascal and C), Turbo Pascal, and Turbo C. There are unfamilar things in xEdit, as the closest I've been to Delphi was dating one of the developers at Borland in the early '90s.

There is no software engineering reason that SF1Edit cannot set or remove the master flag correctly. As you suggested (on Discord), a hex editor will do the job -- as will Wyre Bash.

There is no software engineering reason that SF1Edit cannot edit .esp files correctly. That is the CK native editing format.

But it would be nicer for xEdit to scan every .esp (and .esm) and detect any old embedded FD/FE FormID.

17 hours ago, robertgk2017 said:

We have reported these issues to Bethesda in an egregious amount of technical detail.

I've also sent extensive feedback to Bethesda about many bugs, Starfield and others. AFAICT, the only Starfield reports of mine they've actually fixed were two Neon locations, because it was trivially easy.

Posted
5 hours ago, DayDreamer said:

All CK development is done with .esp, then converted to .esm for publication. I'm asking that xEdit also edit .esp, because that matches the workflow, instead of the convoluted work-around described above. I've seen no technical reason that will fail.

If folks were going to be silly, they'd already be publishing .esp instead of .esm -- because that's what the CK produces.

SF1Edit will currently read .esp, and copy into .esm. In fact, that's how I've been contributing patches for USFP.

Yes, the workflow is different. That's to be expected. Bethesda has tightened up how the CK should have been used all along in every game, not just Starfield. You either shrug and go with it, or you become one of the many complainers yelling at the clouds. Bethesda is not going to change because you yelled at the clouds :P

People have in fact published .esp files before, and it was quickly verified that they won't work. My own personal testing in this area resulted in a file that caused landscape to disappear, dropping everything not nailed down into the water level below. And that was for a mod that only edited storage containers that had to be constructed.

You are obviously not aware of how merging is taking place for Starfield. While we do appreciate the patch files, they've had to be added into the USFP .esp file manually through the CK to match the edits made by the submissions. Sometimes because they involved Reflection Data on records, but mainly because they need to be in our .esp file in order to migrate to our .esm file for distribution. Doing so directly from your .esm files into our .esm file would violate the workflow that's expected.

5 hours ago, DayDreamer said:

Some of the "explanations" have been mere polemic.

No, they were detailed explanations as to why you can't do what you want to do. You just didn't like the answers you got.

Posted
On 11/6/2025 at 7:02 AM, DayDreamer said:

After discussion, helpfully robertgk2017 made some suggestions on work-arounds. Since SF1Edit currently only works on full/large masters (.esm) and not plugins (.esp):

  1. use SF CK to create a new full/large .esm with nothing much in it,
  2. save and quit,
  3. use SF1Edit to copy my 2 leveled-list records from my small master .esm into the new .esm,
  4. renumber the resulting records to match the old small .esm and my original .esp,
  5. clean the .esm to remove unused masters,
  6. save and quit,
  7. rename the .esm file suffix to .esp,
  8. use Notepad++ hex edit to remove the "master" flag (a 01 little endian flag),
  9. use SF CK on the new .esp to recreate the new small master .esm,
  10. publish.

A lot of work to simply clean a 2 record file. It would have been a lot easier for xEdit to work on the original .esp...

Just a twee thought - there's no way of doing (most of) these via script? Looks like a bit in it - one would have to be very nice for folks to consider it. :)

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...