Mass Effect Andromeda

Extraction and unpacking of game archives and compression, encryption, obfuscation, decoding of unknown files
warrantyvoider
Posts: 236
Joined: Tue Apr 04, 2017 11:44 am

Re: Mass Effect Andromeda

Post by warrantyvoider »

read the the previous pages, thats exactly what is the current problem, face textures. I dont think this ever worked before, also there are new versions out all the time. either help debug or wait, cant offer anything else at the moment

EDIT: без проблем
EDIT2: from your log: the plugin dlls need to be unlocked! goto their folder, right click, open properties, press "unblock". repeat for all dlls. also your version is outdated, please get a fresh copy from github
warrantyvoider
Posts: 236
Joined: Tue Apr 04, 2017 11:44 am

Re: Mass Effect Andromeda

Post by warrantyvoider »

a new version is now on github,
I had a bug with imports where an official patch already existed, please retry your mods that crashed before with this again and let me know how it goes :D

greetz WV
Primed58
Posts: 1
Joined: Fri May 12, 2017 11:04 pm

Re: Mass Effect Andromeda

Post by Primed58 »

I repaired the game with new patch 1.06, installed your new version of the modding module, installed the dll's but it still hangs up on loading shaders after selecting custom character. You are a marvelous modder whom I have followed all through Mass Effect and your work is amazing. I hope you can fix soon, but understand you are a busy person. Oh, and I did unblock. :D
Last edited by Primed58 on Sat May 13, 2017 3:15 am, edited 1 time in total.
elelunicy
Posts: 1
Joined: Fri May 12, 2017 10:43 pm

Re: Mass Effect Andromeda

Post by elelunicy »

So I'm trying to replace a piece of texture that has been patched with its unpatched version. Is it possible at all? MEAExplorer doesn't seem to be able to give a preview or let you import if it's been patched.
warrantyvoider
Posts: 236
Joined: Tue Apr 04, 2017 11:44 am

Re: Mass Effect Andromeda

Post by warrantyvoider »

@bothOfYou: you seem to be pretty happy with your bugs, because you offer no information to recreate the problem. How am I supposed to fix anything without knowing what you did? (check the russian guy a page back, he gave a log, a description, a screenshot, and its not even his language) you could tell toc/bundle/(ebx/res/chunk) path, your input data, where you go ingame to see if it worked or crashes and has anyone read the previous pages, that are ALL about face textures and them not working? have you use the "patchall" option? because stuff like this gets uses over and over and needs to be fixed at each position.
@elelunicy you can set the preview in main tool to unpatched, im not sure if the plugin will accept it, but it should now also show unpatched versions
JackBauer
Posts: 1
Joined: Sat May 13, 2017 7:36 am

Re: Mass Effect Andromeda

Post by JackBauer »

Primed58 wrote:I repaired the game with new patch 1.06, installed your new version of the modding module, installed the dll's but it still hangs up on loading shaders after selecting custom character. You are a marvelous modder whom I have followed all through Mass Effect and your work is amazing. I hope you can fix soon, but understand you are a busy person. Oh, and I did unblock. :D


In the new patch they edited the default skin textures and the location they're called from, so if you're using any mods which use the default character's skin texture it will hang on the loading screen as it's looking for a path that isn't there anymore. http://bsn.boards.net/thread/9736/borrow-skin-brow-younger-ryder has the steps to fix it if that's what you're using, there's some tutorials on pages 2 and 3. That's how I bodged mine up anyway.

If you're using the pale skin mod, the patch messed with game/ui/charactercreate/blueprints/facialtraitsscreen.ebx in win32\game\levels\charactercreate\charactercreate.toc. The patched version doesn't have any data to export? Keep in mind I'm not entirely sure what I'm doing, I just tinker with things until they start to work again and call it a win.
Huili
Posts: 3
Joined: Fri May 12, 2017 9:39 am

Re: Mass Effect Andromeda

Post by Huili »

warrantyvoider wrote:read the the previous pages, thats exactly what is the current problem, face textures. I dont think this ever worked before, also there are new versions out all the time. either help debug or wait, cant offer anything else at the moment

EDIT: без проблем
EDIT2: from your log: the plugin dlls need to be unlocked! goto their folder, right click, open properties, press "unblock". repeat for all dlls. also your version is outdated, please get a fresh copy from github


Thanks for the quick response. Yes, I set everything up, now everything is loaded normally. I thought about the texture problem, can this be a problem of export and import? Ie when importing/exporting information about mipmap disappears? Just a similar problem (pixels instead of images) I saw in Skyrim, when I forgot to generate a mipmap for the first time.
I hope I translated it normally.
warrantyvoider
Posts: 236
Joined: Tue Apr 04, 2017 11:44 am

Re: Mass Effect Andromeda

Post by warrantyvoider »

Huili wrote:Thanks for the quick response. Yes, I set everything up, now everything is loaded normally. I thought about the texture problem, can this be a problem of export and import? Ie when importing/exporting information about mipmap disappears? Just a similar problem (pixels instead of images) I saw in Skyrim, when I forgot to generate a mipmap for the first time.
I hope I translated it normally.


that can not be the issue, as I never touch the pixeldata for export or import. so if you reimport the same dds, you get a byte exact copy. its about this rangeStart and rangeEnd, its for "where in the COMPRESSED data does this chunk start and end" and logicalSize and logicalOffset are the offset and size, once its loaded to memory (UNCOMPRESSED). I mean the only byte difference is that when the import gets compressed again (with my tool) the resulting size is different, because I dont know their exact compression settings they used, but it also shouldnt matter. once it imports the pixeldata (of original texture) to a cas file and makes the cat file point to it , it then scans through all or one (depending on setting) sb files, to fix their fields to the new compressed size. im also pretty sure, if I would just reimport the original COMPRESSED data, it would keep size, no sb has to patched and then it should work, because those fields mention above match it, even if its in another cas. just its pretty useless^^ so again, the only difference when importing the original is the change in compressed size, so there has to be some issue with that

greetz

PS: im currently away from my pc, can someone check the corresponding ebx to such a texture? do they have size information maybe too?
warrantyvoider
Posts: 236
Joined: Tue Apr 04, 2017 11:44 am

Re: Mass Effect Andromeda

Post by warrantyvoider »

Code: Select all

<EbxFile Guid="34BA1654-64C9-11E6-8305D6DEAE8BA0BC">
  <TextureAsset Guid="74D1B709-DD06-82C7-5FA06C63E6B8A5FD">
    <TextureAsset>
      <TextureBaseAsset>
        <Asset>
          <DataContainer>
          </DataContainer>
          <Name>
            Game/Characters/Human/HMM/0_Heads/HMM_Head_Vik/PCA/Textures/diffuse_mean
          </Name>
        </Asset>
      </TextureBaseAsset>
      <GenerateMipmapsFilter>
        GenerateMipmapsFilter_Box
      </GenerateMipmapsFilter>
    </TextureAsset>
  </TextureAsset>


found the ebx, but also that it seems to miss stuff, I mean, I wrote in big red letters that this was experimental code, so this could be work for another day. anyway I dont see any value in the hex the could represent sizes or so. dunno, so ebx isnt the problem for "glitchy mc pixelface" either...

Code: Select all

Offset(h) 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

00000000  CE D1 B2 0F 50 02 00 00 90 00 00 00 00 00 00 00  ÎѲ.P...........
00000010  01 00 01 00 01 00 05 00 0A 00 10 01 50 00 00 00  ............P...
00000020  00 00 00 00 40 00 00 00 54 16 BA 34 C9 64 E6 11  ....@...T.º4Édæ.
00000030  83 05 D6 DE AE 8B A0 BC 00 00 00 00 00 00 00 00  ƒ.ÖÞ®‹ ¼........
00000040  44 61 74 61 43 6F 6E 74 61 69 6E 65 72 00 41 73  DataContainer.As
00000050  73 65 74 00 24 00 4E 61 6D 65 00 54 65 78 74 75  set.$.Name.Textu
00000060  72 65 42 61 73 65 41 73 73 65 74 00 52 65 73 6F  reBaseAsset.Reso
00000070  75 72 63 65 00 54 65 78 74 75 72 65 41 73 73 65  urce.TextureAsse
00000080  74 00 47 65 6E 65 72 61 74 65 4D 69 70 6D 61 70  t.GenerateMipmap
00000090  73 46 69 6C 74 65 72 54 79 70 65 00 47 65 6E 65  sFilterType.Gene
000000A0  72 61 74 65 4D 69 70 6D 61 70 73 46 69 6C 74 65  rateMipmapsFilte
000000B0  72 5F 42 6F 78 00 47 65 6E 65 72 61 74 65 4D 69  r_Box.GenerateMi
000000C0  70 6D 61 70 73 46 69 6C 74 65 72 5F 42 6F 78 52  pmapsFilter_BoxR
000000D0  67 62 53 68 61 72 70 65 6E 41 6C 70 68 61 00 47  gbSharpenAlpha.G
000000E0  65 6E 65 72 61 74 65 4D 69 70 6D 61 70 73 46 69  enerateMipmapsFi
000000F0  6C 74 65 72 5F 42 6F 78 52 67 62 4B 65 65 70 41  lter_BoxRgbKeepA
00000100  6C 70 68 61 54 65 73 74 43 6F 76 65 72 61 67 65  lphaTestCoverage
00000110  00 47 65 6E 65 72 61 74 65 4D 69 70 6D 61 70 73  .GenerateMipmaps
00000120  46 69 6C 74 65 72 5F 41 6C 70 68 61 57 65 69 67  Filter_AlphaWeig
00000130  68 74 65 64 42 6F 78 00 47 65 6E 65 72 61 74 65  htedBox.Generate
00000140  4D 69 70 6D 61 70 73 46 69 6C 74 65 72 00 00 00  MipmapsFilter...
00000150  81 B5 02 00 00 00 00 00 08 00 00 00 00 00 00 00  .µ..............
00000160  82 D8 82 7C 7D 40 00 00 08 00 00 00 20 00 00 00  ‚Ø‚|}@...... ...
00000170  81 B5 02 00 00 00 01 00 08 00 00 00 00 00 00 00  .µ..............
00000180  0F FE 70 04 7D 41 00 00 10 00 00 00 50 00 00 00  .þp.}A......P...
00000190  81 B5 02 00 00 00 02 00 08 00 00 00 00 00 00 00  .µ..............
000001A0  D5 1A B2 19 89 C0 04 00 18 00 00 00 58 00 00 00  Õ.².‰À......X...
000001B0  5F 48 13 88 00 00 00 00 00 00 00 00 00 00 00 00  _H.ˆ............
000001C0  4F 2D 95 E1 00 00 00 00 01 00 00 00 01 00 00 00  O-•á............
000001D0  BF FE 8C D4 00 00 00 00 02 00 00 00 02 00 00 00  ¿þŒÔ............
000001E0  6A 9C 84 88 00 00 00 00 03 00 00 00 03 00 00 00  jœ„ˆ............
000001F0  72 6C 7E E4 00 00 00 00 00 04 35 00 08 00 00 00  rl~ä......5.....
00000200  F5 F1 46 0C 00 00 00 00 02 04 35 00 0C 00 00 00  õñF.......5.....
00000210  3F 25 E3 8E 02 00 00 00 02 08 35 00 18 00 00 00  ?%ãŽ......5.....
00000220  4A A8 E7 80 04 00 00 00 02 08 35 00 20 00 00 00  J¨ç€......5. ...
00000230  2D 49 0F 88 06 00 00 00 04 04 89 C0 04 00 00 00  -I.ˆ......‰À....
00000240  03 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
00000250  47 61 6D 65 2F 43 68 61 72 61 63 74 65 72 73 2F  Game/Characters/
00000260  48 75 6D 61 6E 2F 48 4D 4D 2F 30 5F 48 65 61 64  Human/HMM/0_Head
00000270  73 2F 48 4D 4D 5F 48 65 61 64 5F 56 69 6B 2F 50  s/HMM_Head_Vik/P
00000280  43 41 2F 54 65 78 74 75 72 65 73 2F 64 69 66 66  CA/Textures/diff
00000290  75 73 65 5F 6D 65 61 6E 00 00 00 00 00 00 00 00  use_mean........
000002A0  09 B7 D1 74 06 DD C7 82 5F A0 6C 63 E6 B8 A5 FD  .·Ñt.ÝÇ‚_ lc渥ý
000002B0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
000002C0  63 12 B4 D5 07 2B E1 2A 00 00 00 00 00 00 00 00  c.´Õ.+á*........
000002D0  00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................


greetz WV
GOTBLZ
Posts: 16
Joined: Tue May 09, 2017 4:21 pm

Re: Mass Effect Andromeda

Post by GOTBLZ »

Hey WV,

Would it be possible for you to make a option to import the dds over the original data, as long as of course the dds is the exact size of the original, byte for byte. Or maybe see yourself if overwriting the original has the same effect? I don't mind only being able to edit the dds as the original's size, its better than not being able to edit it at all.

(So not creating a file in the cas_99.cas. but in the original cas it came out of)
warrantyvoider
Posts: 236
Joined: Tue Apr 04, 2017 11:44 am

Re: Mass Effect Andromeda

Post by warrantyvoider »

GOTBLZ wrote:Hey WV,

Would it be possible for you to make a option to import the dds over the original data, as long as of course the dds is the exact size of the original, byte for byte. Or maybe see yourself if overwriting the original has the same effect? I don't mind only being able to edit the dds as the original's size, its better than not being able to edit it at all.

(So not creating a file in the cas_99.cas. but in the original cas it came out of)


warrantyvoider wrote:so if you reimport the same dds, you get a byte exact copy. its about this rangeStart and rangeEnd, its for "where in the COMPRESSED data does this chunk start and end" and logicalSize and logicalOffset are the offset and size, once its loaded to memory (UNCOMPRESSED). I mean the only byte difference is that when the import gets compressed again (with my tool) the resulting size is different, because I dont know their exact compression settings they used


greetz WV
GOTBLZ
Posts: 16
Joined: Tue May 09, 2017 4:21 pm

Re: Mass Effect Andromeda

Post by GOTBLZ »

warrantyvoider wrote:so if you reimport the same dds, you get a byte exact copy. its about this rangeStart and rangeEnd, its for "where in the COMPRESSED data does this chunk start and end" and logicalSize and logicalOffset are the offset and size, once its loaded to memory (UNCOMPRESSED). I mean the only byte difference is that when the import gets compressed again (with my tool) the resulting size is different, because I dont know their exact compression settings they used


greetz WV[/quote]

Ok on that note I am off to get some sleep, cause I remember you saying that, but for some reason, I seemed to forget it... why didn't I remember even asking you that...
warrantyvoider
Posts: 236
Joined: Tue Apr 04, 2017 11:44 am

Re: Mass Effect Andromeda

Post by warrantyvoider »

Image

use the mesh plugin to export the mesh data and a single LOD as bin, then use this tool to export all sections to .obj format. thx to spinal for the missing info

experimental

greetz WV
Snowpiercer
Posts: 22
Joined: Thu Aug 13, 2015 5:08 pm

Re: Mass Effect Andromeda

Post by Snowpiercer »

warrantyvoider wrote:
use the mesh plugin to export the mesh data and a single LOD as bin, then use this tool to export all sections to .obj format. thx to spinal for the missing info

experimental

greetz WV


Image

Exciting stuff, thanks WarrantyVoider!
warrantyvoider
Posts: 236
Joined: Tue Apr 04, 2017 11:44 am

Re: Mass Effect Andromeda

Post by warrantyvoider »

np^^ I still dunno why all meshes have holes like a swiss cheese, but maybe thats some anti-modding trick again, to split meshes into multiple instances, rly dunno

greetz
apollon08170
Posts: 14
Joined: Fri Mar 17, 2017 9:41 pm

Re: Mass Effect Andromeda

Post by apollon08170 »

Wow, Nice Job =D
axellslade
Posts: 11
Joined: Tue Jan 10, 2017 10:58 pm

Re: Mass Effect Andromeda

Post by axellslade »

warrantyvoider wrote:np^^ I still dunno why all meshes have holes like a swiss cheese, but maybe thats some anti-modding trick again, to split meshes into multiple instances, rly dunno

greetz


lol
But still better than having no cheese at all! The progress you guys are making in such a short time is amazing!
warrantyvoider
Posts: 236
Joined: Tue Apr 04, 2017 11:44 am

Re: Mass Effect Andromeda

Post by warrantyvoider »

damn, thats ALOT to code in dx10+ for displaying a simple rotating triangle, that took me way longer than expected

Image

I think you can guess what this code is preparation for^^

greetz WV
warrantyvoider
Posts: 236
Joined: Tue Apr 04, 2017 11:44 am

Re: Mass Effect Andromeda

Post by warrantyvoider »

aaand here comes the merged result of my meshplugin, the fbmeshinfo tool and the dx10 hello world code....
Image

also added a button so you can export a lod to obj files
Image

now on github

greetz WV
spinal
Posts: 34
Joined: Sat May 13, 2017 10:35 am

Re: Mass Effect Andromeda

Post by spinal »

Hi all,


Regarding the holes in the meshes, it's easy to fix:

In class MeshLodSection and method LoadVertexData, when looping over indCount, you need to read 3 float from the stream instead of 1 because indCount is not index count but triangles count.

so if you replace this:

for (int i = 0; i < indCount; i++)
indicies.Add(Helpers.ReadUShort(s));

by this:

for (int i = 0; i < indCount; i++)
{
// FIX1 : indCount is a triangle count, not index count
indicies.Add(Helpers.ReadUShort(s));
indicies.Add(Helpers.ReadUShort(s));
indicies.Add(Helpers.ReadUShort(s));
}

the holes should be gone.