[PC] Mod manager - 7thHeaven (v1.54)

  • Thread starter Thread starter Iros
  • Start date Start date
Status
Not open for further replies.
Yes, the controller support is broken. The game crashes at start if my Xbox controller is connected.

Here is the modified ConfigSpec-FF7OpenGL.xml.
https://mega.co.nz/#!3QUxDQob!DSNibifr3fB7PX_uQdvbnYUOVFSaNUF0zvpCAQ6QgBU

If I find the time I change the resolution option with suggestions as you have made it.
I have played around with the internal renderer, the 2X*320 and 4X*240 isn't entirely correct. Actually it must be 2x*320 and 2*2x*240 (or 2x*480). This way I had lesser distortions with the upscaled field scenes.
 
?? You mean, controller support is broken by the new version of 7H? The controller works fine if you run FF7 directly, and not when you run through 7H?

If yes, that is very weird, but I will try and work out what the cause is...
 
The controller works without 7th Heaven. I think the new debug mode has something to do with it. I haven't used it yet, but its there since v1.22 according to EQ2Alyza.
 
Can we add a text box for Aali's mod path in the opengl config?

Code: [Select]
Code:
  <Setting xsi:type="TextEntry">    <Group>Aali</Group>    <Name>Mod Path</Name>    <Description>Set the mod path to use for Aali's Custom Driver.</Description>    <Option>mod_path</Option>  <Suggest>Aali</Suggest>
Is there anyway to have it place files in the root folder? A couple mods benefit from their own files placed there.
 
Last edited:
Is there anyway to have it place files in the root folder? A couple mods benefit from their own files placed there.
Really? Hm, do you have an example? Didn't know there were files in the root that were worth overriding...
 
Not overriding anything in this case. It's just for the multi.dll, but I think Dan has retired it recently, so no biggie.
 
Oh, OK. For loading DLLs it is probably more straightforward for me to just add DLL inject support into 7H so a mod can load a DLL. It's trivial since 7H is already injecting its own DLL...
 
I haven't added the mod path for only one plenty of reasons:
I have enough of finding out why a texture don't work and of the extra work with manual copy'n'paste, only because some authors wants to separate their mods and changing the name of a mod path (Bootleg, DK, Avalanche, Reunion). We don't need this with 7th Heaven anymore, (actually we never needed this). Lets call it 'textures' (because that's all what it is) and later will follow 'audio' and 'voice' into the mod folder (maybe 'extra_shader' if Aali finds a suitable way for the light layer replacement).
Lets came to this agreement, then we don't need the extra option to set Aali's modpath. And it looks better sorted in a 7.H mod, if every external texture (and its folder) is stored in 'textures'. I can imagine that someone is confused to see field.lgp and field at once. Some people try to learn how another mod authors has built their mods, so it won't only helps us to have a better sorted mod structure. I also don't won't to store the same texture doubled, one in bootleg/battle/ and one in Reunion/battle/ only to be prepared for a possible mod path swap. Of course I could direct 7th Heaven to use the mod path /mods/bootleg, BUT if I change it in the opengl config to Reunion then I need to direct 7th Heaven to the new modpath too or else none texture mod will work. This causes only problems at the end.

So for the sake of lesser (user) bug reports let us:

[list type=decimal]
[*]name the mod path for external textures 'textures'
[*]point 7th Heaven only to .../mods
[*]place in the 7.H. mods all external texture stuff in 'textures'
[/list]

There is a lot of stuff in Aali's custom driver which is useful for moders and setting another mod path for testing is one of those, but I don't want to bug the average user with it. In future the New Timer option will also be gone, because the bug I had with it is solved. It's simply a 'it has to be on' option now.
 
I'm a bit OCD when it comes to organizing, so that works for me. Textures it is :)
 
Oh, OK. For loading DLLs it is probably more straightforward for me to just add DLL inject support into 7H so a mod can load a DLL. It's trivial since 7H is already injecting its own DLL...
Wouldn't this mean that the dll are loaded twice? One time by 7th Heaven and one time by Hext_launch. Couldn't you simply add a set path for Hext_launch.exe and then launch it automatically through 7th Heaven? As long as all dll are placed in dll_in everything should work fine.
 
Wouldn't this mean that the dll are loaded twice? One time by 7th Heaven and one time by Hext_launch. Couldn't you simply add a set path for Hext_launch.exe and then launch it automatically through 7th Heaven? As long as all dll are placed in dll_in everything should work fine.
Well, for DLLs you want to always load, then put them in your DLL_in folder I suppose. But if you want to include a DLL in a 7H mod (either a mod folder or a .iro) then it is certainly easier for 7H to load it.

(Loading DLLs is slightly different to replacing PNG / LGP files or similar. Because you do not just have to convince FF7 - or Multi.dll, or Aali's driver - that the new file exists even when it is not really there - you have to convince Windows as well, because it is Windows that actually does the work to load a new DLL...)

I'm a bit OCD when it comes to organizing, so that works for me. Textures it is :)
Well, I see two ways of doing things.

One is this way, it makes the mods organized better, but the mod path in Aali's driver MUST be set to 'textures' or things stop working.

The other is that, since 7H can load the opengl cfg file, then instead of asking the user to choose the mod path, we just read it from the cfg file. So whatever it is set to, even if the user changes it, 7H will continue to work.
 
There is another option...

You could check the mod folder and the mod path in the opengl.cfg. If it's not called 'textures' then it will renamed to it.
However if a textures folder is already in the mod path and a different named one is present too, then 7th Heaven will give a warning with the option to place the content of the stranger mod folder into the textures folder.

Code: [Select]
Code:
Warning! There is a mod folder which isn't named Textures.Shall the content of it merged into Textures?   Yes              No
If yes:
Code: [Select]
Code:
This will overwrite everything in the Textures folder with the content of the other(s) mod folder(s).Are you sure?   Yes              No
Of course we need an exclusion list for non texture related mod folder, but this should solve everything.
 
Last edited:
By the way this happens if I try to start the Steam version with 7th Heaven:

Code: [Select]
Code:
System.MissingMethodException: The given user library does not export a proper Run(EasyHook.InjectionLoader+REMOTE_ENTRY_INFO, _7thWrapperLib.RuntimeProfile) method in the 'EasyHook.IEntryPoint' interface.   bei EasyHook.RemoteHooking.CreateAndInject(String InEXEPath, String InCommandLine, Int32 InProcessCreationFlags, String InLibraryPath_x86, String InLibraryPath_x64, Int32& OutProcessId, Object[] InPassThruArgs) in C:\Code\EasyHook-2.7.4761.0-Source\EasyHook\RemoteHook.cs:Zeile 944.   bei Iros._7th.Workshop.fLibrary.Launch(Boolean varDump, Boolean debug) in c:\Iros\7thWorkshop\fLibrary.cs:Zeile 733.   bei Iros._7th.Workshop.fLibrary.bLaunch_Click(Object sender, EventArgs e) in c:\Iros\7thWorkshop\fLibrary.cs:Zeile 632.   bei System.Windows.Forms.Control.OnClick(EventArgs e)   bei System.Windows.Forms.Button.OnClick(EventArgs e)   bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)   bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)   bei System.Windows.Forms.Control.WndProc(Message& m)   bei System.Windows.Forms.ButtonBase.WndProc(Message& m)   bei System.Windows.Forms.Button.WndProc(Message& m)   bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)   bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)   bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
 
All the sudden I'm getting an error after installing any new .iro and attempting to move it up the list on the Active Mods tab.

Code: [Select]
Code:
System.InvalidOperationException: Sequence contains no matching element   at System.Linq.Enumerable.First[TSource](IEnumerable`1 source, Func`2 predicate)   at Iros._7th.Workshop.fLibrary.ChangeProfileItem(pMod pm, Int32 change) in c:\Iros\7thWorkshop\fLibrary.cs:line 379   at Iros._7th.Workshop.fLibrary.DoModBarAction(pMod pm, ModBarAction a) in c:\Iros\7thWorkshop\fLibrary.cs:line 423   at Iros._7th.Workshop.pMod.bDown_Click(Object sender, EventArgs e) in c:\Iros\7thWorkshop\pMod.cs:line 159   at System.Windows.Forms.Control.OnClick(EventArgs e)   at System.Windows.Forms.Button.OnClick(EventArgs e)   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)   at System.Windows.Forms.Control.WndProc(Message& m)   at System.Windows.Forms.ButtonBase.WndProc(Message& m)   at System.Windows.Forms.Button.WndProc(Message& m)   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
I also have a question about how list priorities work. If I have two separated mods, each with a kernel.bin for example, will the one above use its kernel.bin and negate using the one below at all? Or does it use the one below first, then overwrites it with the one above?
 
Last edited:
All the sudden I'm getting an error after installing any new .iro and attempting to move it up the list on the Active Mods tab.
Hm, I cant reproduce that :/ can you give me any more details about exactly what you're doing?

[EDIT: Or post/upload the contents of your %APPDATA%\7thWorkshop folder - exclude the cache if it is too big. That will let me see your library/mod setup]

I also have a question about how list priorities work. If I have two separated mods, each with a kernel.bin for example, will the one above use its kernel.bin and negate using the one below at all? Or does it use the one below first, then overwrites it with the one above?
The first option, I think.

If two mods both contain the same file, then the higher priority file is used, and it is like the low priority mod did not contain that file at all, the file will never be accessed at all. When FF7 loads a file, 7H goes down the list of mods in priority order seeing "does this mod replace the file?" and as soon as it finds a mod that does replace the file, it stops searching.
 
Last edited:
We might need an extra tab to install non-7th Heaven related mods like the Games Converter, Aali's custom driver, DLPB's Tools and possibly implementing the registry cleaner from Kompass63.

I think it's alright if we place all the mods in an install folder and 7th Heaven will install them properly. The last things I could imagine which would be useful are a voting system and donate buttons for the mods (and for 7th Heaven  :wink:).

Well I running out of ideas slowly ...  :roll:
 
Last edited:
7thWorkshop: https://mega.co.nz/#!mkIzxDJS!NpgInvormThuuK0Ka8SoFM5rQwAj_fy2BSxfDZGKlbE

What about if they are packed into the same .iro, then does the list order within it take any priority? If not, I'll have to pack the Menu Overhaul and Gameplay mods into the same .iro since they have a lot of overlapping files. I imagine that will still give some compatibility issues. Bootleg manages to install them in a specific way/order so that they are all compatible, so I know it can be done.
 
Thanks, I will look at it.

EDIT: Reproduced the bug, thanks! Next version will fix it, might be tomorrow.

What about if they are packed into the same .iro, then does the list order within it take any priority? If not, I'll have to pack the Menu Overhaul and Gameplay mods into the same .iro since they have a lot of overlapping files. I imagine that will still give some compatibility issues. Bootleg manages to install them in a specific way/order so that they are all compatible, so I know it can be done.
Yes, the order any extra folders are listed in the mod.xml sets the priority.

When 7H is checking if a mod replaces a certain file, it looks at the contents of the mod like this:

1. -Checks in the 'root' of the mod (e.g. if FF7 wants battle\scene.bin, it looks in modfolder\battle\scene.bin). If it finds the file, uses it and stops looking.

2. -Checks through any extra folders listed in 'ModFolder' entries from mod.xml, in the order they are listed in mod.xml. If it finds the file in any of those folders, uses it and stops looking.

3. -Checks through any conditional folders listed in 'Conditional' entries from mod.xml, in the order they are listed in mod.xml. If it finds the file in any of those folders, uses it and stops looking.


So basically yes: the order you list folders in mod.xml is important and you can control which folder takes priority that way.
 
Last edited:
Status
Not open for further replies.
Back
Top