Last edit: [Link]
Here's a table to force-load Lunafreya's model into memory and "play" as her... For safety reasons (in regards to not fucking up some other models), I'm only doing a check for Aranea so she needs to be in your party. Either load a save with her in the guest slot or use Cielos' table and choose Aranea as your guest.
This is ONLY so other people can take a crack at finding this function. The Luna model will still be using Noctis' constraints, physics, kinematics, and above all else, animations. We're only loading her character model, nothing else. Trying to set the other settings manually will result in a crash as they do not exist in memory yet.
Do note that you shouldn't be using the default outfit for Noctis. Her skin will be black and it'll look like so bad that it looks like black-face.
PS: Yes you can play as anything loaded in memory without this and it'll be just as fucked up. Yes you can load whatever NPC you want and run around as them with this. Still, just as fucked up.
You'll be stuck in the menu just as if you'd choose Luna as a guest. This is because she lacks a mainmenu file and things get broken. Use "Map" and go back to last resting place to get out.
Again; NOT FOR GENERAL USE! Don't download this if you don't intend to help. It looks like this:
Default outfit on Noctis (blackface):
[Link]
Other outfit on Noctis (normal):
[Link]
Bonus:
[Link]
Table contains the 'best' looking model to use. The other 2 models just gets parts stretched to oblivion.
Update 3
Now supports debug release (sans play-as-luna script). Opcodes are close enough that debugging this version should be fine, and maybe even easier since it's 83megs vs 243megs and has a shitton more strings and func. names.
Order of the codes mirror those of the release version so you know which one is which.
Includes a lua script from CE's wiki to auto-attach to ffxv_s.exe and pause it immediately for those who want to test stuff at launch. Script comes from
[Link]. I only added "pause()".
Quick update
Added VCRuntime to make it easier to debug. I think this is the one that loads files into memory, but how it gets the values in register is beyond me. It runs AFTER the other two calls.
Added symbols for convenience.
In mem viewer use these as addresses -> Go to:
For "ffxv_s.exe"+5976437: CHECKME_FFXV
For "VCRUNTIME140.dll"+CCFE: CHECKME_VC
NOTES 20180408, 22:48
Got new stuff loaded into memory, but I must be missing something. Hmm.
NOTES 20180408, 20:39
Well that wasn't it. Removed it to avoid confusion. Time wasted. :<
NOTES 20180408, 10:19
CharaResourceManager::RegisterIndependentCharaEntry : character/nh/nh10/entry/nh10_000.ebex
...
[CharaResourceManager] +++ load +++ : character/nh/nh10/entry/nh10_000.ebex
NOTES 20180407, 23:30
ffxv_s.exe+5976466 accesses it first. Not sure how it's used, but it hits Aranea quite a few times via rax+rsi+14 before ffxv_s.exe+5976437 accesses it, and WAAAY before VCRUNTIME140.dll+CCFE. Could be a part of a bigger function that reads/writes from/to an array (or perhaps it IS the array?). Idk.
NOTES 20180407, 21:42
Aranea normal
2B 36 01 01 8F C7 01 01 8F C7 01 01
Aranea winter:
CE 28 05 01 CD 28 05 01 CD 28 05 01
==== ffxv_s.exe+5976437 (cmp [rsi+14],#808544366 -- checking rbx (holds char id, 8F C7 -- 4B: 16893839) crashes? :S
RBX points to charvalues, 8F C7 (normal aranea, winter is CD 28 ref above)
RCX+28 the same
RSI has character file (ebex)
Second hit: (probably model)
Second hit, RSI holds same
Second hit, R12 has character model (gmdl)
Second hit, R14 has same
==== VCRUNTIME140.dll+CCFE (cmp [rcx+rdx+14],#808544366)
VCRuntime (first hit):
RAX is after model (string)
RSI,R10 holds model: data://character/nh/nh10/entry/nh10_000.ebex@
VCRuntime (second hit):
RAX is after model (string)
RSI,R10 holds model: data://character/nh/nh10/entry/nh10_000.ebex (without @)
RCX+RDX <- Model gets loaded into this?!
VCRuntime (third hit):
RSI,R10 holds model: data://character/nh/nh10/entry/nh10_000.ebex@
======
Root: /datas/
Files set in memory by common/autobuild.earc
Charfiles set by data/character/bin/resident-character.win32.bins