prideslayer Posted July 28, 2012 Author Posted July 28, 2012 V9 is promoted to release and was renamed. If you already have the beta, there's no difference between it and the current V9. I will leave the V8 download up in case V9 does have any problems. V9 will also be included in the next sexout CORE download as usual.
prideslayer Posted July 29, 2012 Author Posted July 29, 2012 Finally found the time to pull in what ashmedai has done so far, and with a custom built NVSE, the extender is detecting game loads just fine. Saves are another matter though, looking in to that.
prideslayer Posted July 29, 2012 Author Posted July 29, 2012 Had just missed actually patching the hook in.. save and load are working now. New game notification will be a lot more difficult as the address in the source isn't actually correct, but I think we could "live with" that if people are instructed to quit and restart (which will clear the extender) if they want to start a new game. The only problem this will cause is vars not being reset if you start FONV, load a game, and then start a new game. Test results from log file: tail: nvse_extender.log: file truncated Received load message with file path Save 20 Wyoming The Vikki and Vance Casino 02 11 04.fos Received save message with file path Save 24 Wyoming The Vikki and Vance Casino 02 11 23.fos Received save message with file path autosave.fos
prideslayer Posted July 29, 2012 Author Posted July 29, 2012 Fired off a diff of the changed files in NVSE to the team and to Ian directly. Hopefully this (and maybe newgame notification) can make it into an official NVSE release. Will give them time to look it over and respond while I work on the actual save/load code in the extender before I resort to releasing an 'unofficial' NVSE.
ragindude Posted August 8, 2012 Posted August 8, 2012 I deactivated all the related mods, some I'm assuming this is coming from this NVSE. The message telling me about "deactivating NVLady and JuliaChang esp and use SexoutStore" is really really really annoying and it would be immensely appreciated if it could be removed in the next update. Thank you
prideslayer Posted August 8, 2012 Author Posted August 8, 2012 I deactivated all the related mods' date=' some I'm assuming this is coming from this NVSE. The message telling me about "deactivating NVLady and JuliaChang esp and use SexoutStore" is really really really annoying and it would be immensely appreciated if it could be removed in the next update. Thank you [/quote'] That message comes from Sexout, not from the extender, and it's not being removed. In the current beta of Sexout, it's updated to only display that message if you have Pregnancy or SexoutStore active though, in which case, you should heed the warning.
ragindude Posted August 8, 2012 Posted August 8, 2012 Hmm that strange, even with Sexout ticked off I still get the message, but the real problem is that I have neither of them (preg or store) and I'm still getting spammed everytime I load or reload a savegame ;
prideslayer Posted August 8, 2012 Author Posted August 8, 2012 1. The beta removes the message if you don't have preg or store, not the release version. 2. If you're still getting the message, you haven't actually disabled sexout. Just unchecking it in the load order will not disable it if you have other mods checked off that need it. The game engine will load it anyway.
ashmedai Posted August 11, 2012 Posted August 11, 2012 Had just missed actually patching the hook in.. save and load are working now. New game notification will be a lot more difficult as the address in the source isn't actually correct' date=' but I think we could "live with" that if people are instructed to quit and restart (which will clear the extender) if they want to start a new game. The only problem this will cause is vars not being reset if you start FONV, load a game, and then start a new game. [/quote'] Glad to see it's working. I've been far too busy with work to even play. I should have time in a week or two to help with the extender.
prideslayer Posted August 11, 2012 Author Posted August 11, 2012 Cool. I'm just waiting on some kind of response from silverlock, so far nothing. If it goes another week without a reply, I'm just going to release it here as a beta. If it goes another 2-4 weeks after that, I may 'officially' fork NVSE and give it a new name. I know they don't want anyone doing that, and I don't really want to do it, but I'm getting tired of waiting and the extender really needs these features released.
prideslayer Posted August 14, 2012 Author Posted August 14, 2012 Minor update. I have saving fully working in my local working copy. I've opted to save the data as CSV files for now, since I have no complex datatypes in the extender as yet, and it's easier to debug/troubleshoot. The CSV format has three types of rows, always the same number of columns. The files are saved in data\nvse\plugins\Extender\Saves and have the same name as your savegame, with a '.csv' appended, for example "Save 31 Wyoming Goodsprings 02 18 04.fos.csv" is a file just created while testing. The file contents, as a CSV, are pretty straight forward. Here are the contents of the file above, a save made in goodsprings during a sex scene between the player and Sunny. IX, 0, FalloutNV.esm, IX, 1, DeadMoney.esm, IX, 2, HonestHearts.esm, IX, 3, OldWorldBlues.esm, IX, 4, LonesomeRoad.esm, IX, 5, MikotoBeauty.esm, IX, 6, The Mod Configuration Menu.esp, IX, 7, BlueTint.esp, IX, 8, KDC_Companions_Removable_Armors.esp, IX, 9, UnlimitedCompanions.esp, IX, 10, populatedcasino.esp, IX, 11, FalloutNVCheatTerminal.esp, IX, 12, Centered 3rd Person Camera - Unraised.esp, IX, 13, SmallerTalk.esp, IX, 14, Type 6.esp, IX, 15, bzArmour.esp, IX, 16, MikotoBeauty.esp, IX, 17, Sexout.esp, FO, 1068677, sexout:start::spelltarget, 1068677 FO, 1068677, sexout:start::actora, 1068677 FO, 1068677, sexout:start::actorb, 20 FO, 1068677, sexout:core:partners:a, 1068677 FO, 1068677, sexout:core:partners:b, 20 FO, 20, sexout:core:partners:a, 1068677 FO, 20, sexout:start::spelltarget, 1068677 FO, 20, sexout:core:partners:b, 20 FL, 1068677, sexout:start::duration, 25 FL, 1068677, sexout:start::anima, 231 FL, 1068677, sexout:start::animb, 231 FL, 1068677, sexout:start::animc, 231 FL, 1068677, sexout:core:actors:count, 2 FL, 1068677, sexout:posy, 3126.62 FL, 1068677, sexout:posx, -67833.1 FL, 1068677, sexout:start::bcanoral, 30 FL, 1068677, sexout:start::bcanvaginal, 60 FL, 1068677, sexout:start::bcananal, 10 FL, 1068677, sexout:start::focusz, 8355.8 FL, 1068677, sexout:start::focusy, 3160.85 FL, 1068677, sexout:start::focusx, -67840.4 FL, 1068677, sexout:saver, 1 FL, 1068677, sexout:rotz, 347.947 FL, 1068677, sexout:posz, 8355.8 FL, 20, sexout:rotx, 14.4561 FL, 20, sexout:posx, -67840.4 FL, 20, sexout:start::bcanoral, 30 FL, 20, sexout:start::bcanvaginal, 60 FL, 20, sexout:start::bcananal, 10 FL, 20, sexout:start::focusz, 8355.8 FL, 20, sexout:start::focusx, -67840.4 FL, 20, sexout:start::focusy, 3160.85 FL, 20, sexout:core:actors:count, 2 FL, 20, sexout:saver, 1 FL, 20, sexout:posy, 3160.85 FL, 20, sexout:rotz, 167.947 FL, 20, sexout:posz, 8355.8 The first section has records of type IX. This is simply a list of active mods. It's needed during file load to fix references if the load order changed, similar to what the game does internally. The columns are "IX, , , ". The second group are FO (forms), anything set by NX_SetEVFo. Columns are "FO, , , ". The third group is the same, but for floats (NX_SetEVFl). At some point the save format will probably change from CSV to XML, as the data structures internal to the extender get more complex. For now, this will do.
prideslayer Posted August 16, 2012 Author Posted August 16, 2012 There is an extremely experimental (I hesitate to even call it alpha) version of the extender in the OP, built (in theory anyway) for the NOGORE version of FONV. If you try to use it on any other version, you'll probably crash the game. If you try to use it with the NOGORE version.. well that will probably crash the game too, but I hope not. It's not exactly like I can test it. You NOGORE guys, give it a shot. Let me know. If it crashes, I'll just take it down until I can get myself an NG copy of the game to test with... or you guys can buy the Austrian version. I read that's the 'normal' thing to do over there.
prideslayer Posted August 16, 2012 Author Posted August 16, 2012 15 downloads from the germans.. so does it work or what?
jaam Posted August 17, 2012 Posted August 17, 2012 I just looked to see how different it was. Can't use it I'm afraid...
prideslayer Posted August 17, 2012 Author Posted August 17, 2012 I just looked to see how different it was. Can't use it I'm afraid... Oh.. it's identical to the v9 one, except compiled with the version set to the NG version of FONV, which has a different EXE and thus different offsets for the calls. If you don't have the german version of FONV it won't work, and won't really "look" any different. I will probably be releasing my private built of NVSE itself, as well as a v10 beta of the extender, later today. This will certainly not work with the nogore version, so if there are no responses about this build from nogore users, I will not be supporting that version.. :/
jaam Posted August 17, 2012 Posted August 17, 2012 I just did a binary comparison, but there were far too much changes. May a decompliation next? I'm just currious what exact effect has the recompilation.
prideslayer Posted August 17, 2012 Author Posted August 17, 2012 I just did a binary comparison' date=' but there were far too much changes. May a decompliation next? I'm just currious what exact effect has the recompilation. [/quote'] Uhh... source is available on sourceforge, link is in the OP, though I didn't check in yet. I can do that now.
prideslayer Posted August 17, 2012 Author Posted August 17, 2012 Actually that wouldn't help you.. you need to look at the NVSE source and the difference between compiling 'Release' and 'Release ng'. That changes the define of RUNTIME_VERSION from the normal release to the NG release. You'll see ifdefs for that all over the NVSE source wherever it interacts with the fallout EXE.
jaam Posted August 17, 2012 Posted August 17, 2012 I know. But nothing in your sources SHOULD be affected. So I'm curious what exactly gets affected at the code level.
prideslayer Posted August 17, 2012 Author Posted August 17, 2012 I know. But nothing in your sources SHOULD be affected. So I'm curious what exactly gets affected at the code level. It does, because a lot of the functions called within it are mapped into the exe as entry points. For example ExtractArgs, which every command in NX needs in order to get its argument list, is not actually an NVSE function -- it's a function in the falloutNV that is called via an entrypoint that is different between the normal and NG versions.
prideslayer Posted August 17, 2012 Author Posted August 17, 2012 This is, really, just a design stupidity by the silverlock guys in some respects. They should have abstracted all these calls into function calls in NVSE itself, which then calls the right entrypoint in the EXE. They didn't, so I need to build an NG specific version of the extender.
prideslayer Posted August 17, 2012 Author Posted August 17, 2012 This is in GameAPI.cpp: #if RUNTIME_VERSION == RUNTIME_VERSION_1_4_0_525 const _ExtractArgs ExtractArgs = (_ExtractArgs)0x005ACCB0; const _FormHeap_Allocate FormHeap_Allocate = (_FormHeap_Allocate)0x00401000; const _FormHeap_Free FormHeap_Free = (_FormHeap_Free)0x00401030; const _LookupFormByID LookupFormByID = (_LookupFormByID)0x004839C0; const _CreateFormInstance CreateFormInstance = (_CreateFormInstance)0x00465110; const _GetSingleton ConsoleManager_GetSingleton = (_GetSingleton)0x0071B160; const _QueueUIMessage QueueUIMessage = (_QueueUIMessage)0x007052F0; const _ShowMessageBox ShowMessageBox = (_ShowMessageBox)0x00703E80; const _ShowMessageBox_Callback ShowMessageBox_Callback = (_ShowMessageBox_Callback)0x005B4A70; const _ShowMessageBox_pScriptRefID ShowMessageBox_pScriptRefID = (_ShowMessageBox_pScriptRefID)0x011CAC64; const _ShowMessageBox_button ShowMessageBox_button = (_ShowMessageBox_button)0x0118C684; const UInt32 * g_TlsIndexPtr = (UInt32 *)0x0126FD98; #elif RUNTIME_VERSION == RUNTIME_VERSION_1_4_0_525ng const _ExtractArgs ExtractArgs = (_ExtractArgs)0x005ACE60; const _FormHeap_Allocate FormHeap_Allocate = (_FormHeap_Allocate)0x00401000; const _FormHeap_Free FormHeap_Free = (_FormHeap_Free)0x0042F4D0; const _LookupFormByID LookupFormByID = (_LookupFormByID)0x004849B0; const _CreateFormInstance CreateFormInstance = (_CreateFormInstance)0x00465F10; const _GetSingleton ConsoleManager_GetSingleton = (_GetSingleton)0x0071B110; const _QueueUIMessage QueueUIMessage = (_QueueUIMessage)0x00705220; const _ShowMessageBox ShowMessageBox = (_ShowMessageBox)0x00703DB0; const _ShowMessageBox_Callback ShowMessageBox_Callback = (_ShowMessageBox_Callback)0x005B4B10; const _ShowMessageBox_pScriptRefID ShowMessageBox_pScriptRefID = (_ShowMessageBox_pScriptRefID)0x011CAC64; const _ShowMessageBox_button ShowMessageBox_button = (_ShowMessageBox_button)0x0118C684; const UInt32 * g_TlsIndexPtr = (UInt32 *)0x0126FD98; #else #error RUNTIME_VERSION unknown #endif
prideslayer Posted August 17, 2012 Author Posted August 17, 2012 On the possibility always exists that there ARE appropriate functions, and I'm just calling the wrong ones. It's not like this goddamn thing is actually documented -- especially when it comes to writing plugins for it. I just have to wing it based off what I see in NVSE itself. The above is probably an example of that; there's an ExtractArgsEx (which I do use in one spot) that is an NVSE call. If I change all my functions to use that, then that eliminates one difference in an extender for NG vs not. I don't know if all the functions I'm calling have such analogues.
jaam Posted August 17, 2012 Posted August 17, 2012 All right! Now its logical (and the chrashes too in fact).
Recommended Posts