Skip to content
View in the app

A better way to browse. Learn more.

ResHax

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Help us keep the site running.

Mass Effect Andromeda

Featured Replies

  • Author
  • Localization

warrantyvoider, posted Mon Apr 17, 2017 1:25 pm (22294)


Code:
const char *__cdecl fb::toString(fb::LanguageFormat v)
{
  const char *result; // eax@2

  switch ( v )
  {
    case 0:
      result = "LanguageFormat_English";
      break;
    case 1:
      result = "LanguageFormat_French";
      break;
    case 2:
      result = "LanguageFormat_German";
      break;
    case 3:
      result = "LanguageFormat_Spanish";
      break;
    case 4:
      result = "LanguageFormat_Italian";
      break;
    case 5:
      result = "LanguageFormat_Japanese";
      break;
    case 6:
      result = "LanguageFormat_Russian";
      break;
    case 7:
      result = "LanguageFormat_Polish";
      break;
    case 8:
      result = "LanguageFormat_Dutch";
      break;
    case 9:
      result = "LanguageFormat_Portuguese";
      break;
    case 10:
      result = "LanguageFormat_TraditionalChinese";
      break;
    case 11:
      result = "LanguageFormat_Korean";
      break;
    case 12:
      result = "LanguageFormat_Czech";
      break;
    case 13:
      result = "LanguageFormat_Count";
      break;
    case 14:
      result = "LanguageFormat_Undefined";
      break;
    default:
      result = "InvalidEnumValue";
      break;
  }
  return result;
}


from bf3 pdb leak...

Code:
__int64 __fastcall fb::toString(int a1)
{
  __int64 result; // rax@2

  switch ( a1 )
  {
    case 0:
      result = (__int64)"LanguageFormat_English";
      break;
    case 1:
      result = (__int64)"LanguageFormat_French";
      break;
    case 2:
      result = (__int64)"LanguageFormat_German";
      break;
    case 3:
      result = (__int64)"LanguageFormat_Spanish";
      break;
    case 4:
      result = (__int64)"LanguageFormat_SpanishUSA";
      break;
    case 5:
      result = (__int64)"LanguageFormat_SpanishMex";
      break;
    case 6:
      result = (__int64)"LanguageFormat_Italian";
      break;
    case 7:
      result = (__int64)"LanguageFormat_Japanese";
      break;
    case 8:
      result = (__int64)"LanguageFormat_Russian";
      break;
    case 9:
      result = (__int64)"LanguageFormat_Polish";
      break;
    case 10:
      result = (__int64)"LanguageFormat_Dutch";
      break;
    case 11:
      result = (__int64)"LanguageFormat_Portuguese";
      break;
    case 12:
      result = (__int64)"LanguageFormat_TraditionalChinese";
      break;
    case 13:
      result = (__int64)"LanguageFormat_Korean";
      break;
    case 14:
      result = (__int64)"LanguageFormat_Czech";
      break;
    case 15:
      result = (__int64)"LanguageFormat_BrazilianPortuguese";
      break;
    case 16:
      result = (__int64)"LanguageFormat_ArabicSA";
      break;
    case 17:
      result = (__int64)"LanguageFormat_Count";
      break;
    case 18:
      result = (__int64)"LanguageFormat_Undefined";
      break;
    default:
      result = (__int64)"InvalidEnumValue";
      break;
  }
  return result;
}


from mea
  • Replies 674
  • Views 109
  • Created
  • Last Reply

Top Posters In This Topic

  • Author
  • Localization

Trip, posted Mon Apr 17, 2017 2:14 pm (22295)


Hey all, great work WV! Been watching this progress :) I would like to extract English dialogue and subtitles, would this be possible with your explorer currently? I have done some searches with your tool and can't seem to find speech at all. Can anyone suggest where I should be looking?
  • Author
  • Localization

warrantyvoider, posted Mon Apr 17, 2017 2:53 pm (22302)


some new infos about talktables (UITextDatabase):

this is the german one...
Image


and this the english one...
Image

red: for all other languages its 4, but for english its 5, dunno why
orange: this is the language index from my previous post
green:in german TT its zero, in english its not, which means there has to be a 5th count/offset pair read
purple:additional header info about some list, which I dunno what it does
blue:end of header

-I was not able to load chinese characters into unicode, although it should support it.
-Also I was not able to simply load the english text into the german table, and load that as either german or english
-so there is no way sofar to recompile the english TT and all others have to keep marker names I guess, but can be used for basic unicode translation
-dunno im out of ideas, and I guess thats the best it can get, sorry

here my code for TT, as you can see, its not very complete, but if anyone wants to write an external tt editor...

greetz
  • Author
  • Localization

warrantyvoider, posted Mon Apr 17, 2017 2:59 pm (22303)


Trip wrote:
Hey all, great work WV! Been watching this progress :) I would like to extract English dialogue and subtitles, would this be possible with your explorer currently? I have done some searches with your tool and can't seem to find speech at all. Can anyone suggest where I should be looking?


open some /loctext/ .toc file, choose a bundle and load the talktable ressources into vfs, there you can right click them and open in talktable editor (well more import/export, but anyway)
  • Author
  • Localization

warrantyvoider, posted Mon Apr 17, 2017 7:24 pm (22313)


added EXPERIMENTAL ebx support/preview, ebx are pretty complicated so dunno when I will have time to fix problems with or even allow editing/saving back
Image

btw, as I dont know everything aswell; whoever has useful frostbite ressources, always keep posting links, I cant have enough sources :D this is just my EBXStream class from DAIToolsWV, so I have no idea if this has bugs, but as far as ive looked, it doesnt crash. anyway, if there are more infos about ebx out there, let me know (dont worry if its already known, having it for reference is good too)

greetz WV

PS:also fixed a bug in texture preview

Release.rar

  • Author
  • Localization

y3804, posted Mon Apr 17, 2017 9:26 pm (22318)


edited
  • Author
  • Localization

warrantyvoider, posted Mon Apr 17, 2017 9:31 pm (22319)


lol
Image
  • Author
  • Localization

y3804, posted Mon Apr 17, 2017 9:44 pm (22320)


To add on WV's EBX previewer, here's the full EBX previewer from DAI ModMaker, which has near-flawless reading support and YAML (less eye-strain) and correct offsets. Also has support for internal GUID references.
I used ILDASM to hijack it into a standalone tool. Full credits to DAI ModMaker coders: WV, Ehamloptiran and Dawnless Sky, and more.

Image

How to use:
-----------
1. Open EBXTool.exe
2. Debug -> Import EBX Binary -> Select .bin/.ebx (exported from WV's tool)

You can also uses CTRL F if you need to find text within that ebx

I will use this for a later tutorial today.

P.S. Edit/save ebx button doesn't work, but it never did even in ModMaker.

EBXTool.rar

  • Author
  • Localization

Trip, posted Mon Apr 17, 2017 10:44 pm (22322)


warrantyvoider wrote:
Trip wrote:
Hey all, great work WV! Been watching this progress :) I would like to extract English dialogue and subtitles, would this be possible with your explorer currently? I have done some searches with your tool and can't seem to find speech at all. Can anyone suggest where I should be looking?


open some /loctext/ .toc file, choose a bundle and load the talktable ressources into vfs, there you can right click them and open in talktable editor (well more import/export, but anyway)


Thanks WV will look
  • Author
  • Localization

y3804, posted Tue Apr 18, 2017 12:20 am (22327)


Tutorial: Modding weapon stats - HEX editing EBX files - using the EBX previewer tool

https://www.youtube.com/watch?v=b5snvc1dE8Y

Please look if you need guidance on how to mod EBX files yourself!

Edit: Added 2 more tutorials, one for modding Jump (jetpack) Height, the second one is for modding Sprint/Running speed

https://www.youtube.com/watch?v=Sg6cikcQ40w
https://www.youtube.com/watch?v=DF-ZS6CSY-A

all in all pretty basic editing stuff, but enough to do a lot of things
  • Author
  • Localization

VladlenCry, posted Tue Apr 18, 2017 2:38 am (22332)


warrantyvoider, thanks for creating such an amazing tool. Excuse me that I'm asking maybe a stupid question. But how and to take the chunks? I'm glad that can find out the Chunk's ID, but here's how to get it, I don't know.
  • Author
  • Localization

warrantyvoider, posted Tue Apr 18, 2017 4:44 am (22333)


VladlenCry wrote:
warrantyvoider, thanks for creating such an amazing tool. Excuse me that I'm asking maybe a stupid question. But how and to take the chunks? I'm glad that can find out the Chunk's ID, but here's how to get it, I don't know.

I dont understand your question. for example textures have a chunk id in their res objects data, then the bundle usually has a chunklist, in which this id is connected with a sha1 which contains the chunks data
  • Author
  • Localization

VladlenCry, posted Tue Apr 18, 2017 5:33 am (22334)


warrantyvoider wrote:
I dont understand your question. for example textures have a chunk id in their res objects data, then the bundle usually has a chunklist, in which this id is connected with a sha1 which contains the chunks data

I want to extract music. With the help of your program, can find and receive EBX files, but I do not understand how to get the chunk itself.
To get audio, need an EBX file (with your program you can get), where only information about the chunk, and chunk in which it is audio is available. In EBX there is an ID chunk, but how to get it I do not understand. Sha1 search does not give results, chunks do not find, only refers to the ebx files themselves.
  • Author
  • Localization

Mordek, posted Tue Apr 18, 2017 2:45 pm (22346)


y3804 and warrantyvoider thank you for your hard work. I've been playing around with your tools since the beginning trying to understand how they work. I've got a few questions to y3804 - how did you know that weapon with 525 ROF had index 0? Also where can I change weapon damage or magazine capacity?

Thank you again :] I can't express how awesome job you do here.
  • Author
  • Localization

warrantyvoider, posted Tue Apr 18, 2017 6:41 pm (22385)


lololol! I made myself a little tool to understand the patching system, it seems pretty easy sofar. my first patched data is the german tt, so I extracted both, the original and the patched version of it and threw it into notepad to compare them, nice to be able to analyze what changes were done! 8-)
Image
Image

this was easy, as its the 3 easiest cases of patching, 2 more and getting ready patched data by sha1 could be possible :D

download compare data, bin and txt

greetz WV
  • Author
  • Localization

griggs111, posted Tue Apr 18, 2017 7:12 pm (22386)


First of all... congrats for what you achieved with the patch system!

I maybe found the source of the problems about the talktables. (Of course there's no problem with the editor.)
Everything is perfect if I'm editing the german talktables using the german alphabet, the english TT with english alphabet, french TT with french alphabet etc., but if I start to use german 'O', 'U' in french localization or hungarian letters which you cannot find in the other 7 languages, like 'E', 'A', 'I', 'O', 'O', 'U', 'U' in any of them, it messes everything up. (both capital and non-capital)

So I think somewhere has to be 7 lists (one for each language) which holds the acceptable unicode characters or 7 region code.

I really appreciate what you're doing for us and I have no right to ask you this, but can you try to unlock every unicode characters?
If I can help you in anything, you just need to ask! ;)
  • Author
  • Localization

y3804, posted Tue Apr 18, 2017 9:25 pm (22390)


Mordek wrote:
y3804 and warrantyvoider thank you for your hard work. I've been playing around with your tools since the beginning trying to understand how they work. I've got a few questions to y3804 - how did you know that weapon with 525 ROF had index 0? Also where can I change weapon damage or magazine capacity?

Thank you again :] I can't express how awesome job you do here.


I am converting the gunstats.ebx to an excel sheet to save yourself a headache. will upload and do a tutorial on how to EASILY edit any gun stat
  • Author
  • Localization

y3804, posted Tue Apr 18, 2017 11:23 pm (22391)


Converted game/exceldataimports/gunstats.ebx to excel sheet

https://docs.google.com/spreadsheets/d/ ... sp=sharing

and game/exceldataimports/gunstatsmp.ebx

https://docs.google.com/spreadsheets/d/ ... sp=sharing

And here's a tutorial on how to USE:

https://youtu.be/flBcWBtUJ4I

(Keep in mind, gunstats.ebx for SP, gunstatsmp.ebx for MP, be careful modding multiplayer files!)

edit: just tested modding gunstatsmp.ebx and you cannot edit multiplayer this way, the other way is to change the Weapon Index in the right gun file itself (so it points on the values of another gun)
  • Author
  • Localization

femshepping, posted Wed Apr 19, 2017 1:05 am (22392)


Thank you so much for the tools!
I have exported a bunch of res files - which I'm assuming are the textures (?). How do I convert them so that I can edit them in photoshop? Sorry for the noob question - I know I'm probably missing a whole bunch of steps!
  • Author
  • Localization

Devisaur, posted Wed Apr 19, 2017 1:48 am (22394)


Hi everyone,

I've been doing some digging and I've hit a snag -- perhaps someone might know where to look next. Basically I'm trying to get into the text of the codexes. Which I've already located within Win32/game/levels/mainmenu.

The issue is the EBX gives me reference to the TextEntryHashes which based on what I'm looking at should be where the text is, is there a file where this information would be stored? Or is their a way to access this hash. I've attached the .ebx code as reference.

Code:

 
   
     
       
         
           
           

           
              Game/Codex/AndromedaSpecies/Angara/Angara_Akksul_Codex
           

         

       

       
         
            0x00000002
         

       

     

   

 

 
   
     
       
         
           
           

         

         
           
             
               
                  0x00000000
               

               
                  0x00000000
               

               
                  PlotConditionType_DefaultCheckBoolean
               

               
                 
                   
                     
                       
                          F957D5C25FE3814FB887CE12E2BC0194
                       

                     

                   

                 

               

               
                  0x01
               

             

           

         

         
         

         
            0x80000000
         

         
           
             
                0x0003496F
             

           

         

         
           
              0xFF7B7F91
           

           
              0xCEE58D5C
           

           
              0x160EF10F
           

         

         
            0x80000001
         

       

       
          CodexEntryType_Codex
       

       
          0x00000000
       

       
          0x00
       

     

     
     

     
        0x00
     

   

 

  • Author
  • Localization

y3804, posted Wed Apr 19, 2017 1:57 am (22395)


Devisaur wrote:
Hi everyone,

I've been doing some digging and I've hit a snag -- perhaps someone might know where to look next. Basically I'm trying to get into the text of the codexes. Which I've already located within Win32/game/levels/mainmenu.

The issue is the EBX gives me reference to the TextEntryHashes which based on what I'm looking at should be where the text is, is there a file where this information would be stored? Or is their a way to access this hash. I've attached the .ebx code as reference.


Yes, string ID refers to an entry in the talktable files
  • Author
  • Localization

Devisaur, posted Wed Apr 19, 2017 2:00 am (22396)


y3804 wrote:
Devisaur wrote:
Hi everyone,

I've been doing some digging and I've hit a snag -- perhaps someone might know where to look next. Basically I'm trying to get into the text of the codexes. Which I've already located within Win32/game/levels/mainmenu.

The issue is the EBX gives me reference to the TextEntryHashes which based on what I'm looking at should be where the text is, is there a file where this information would be stored? Or is their a way to access this hash. I've attached the .ebx code as reference.


Yes, string ID refers to an entry in the talktable files


Hmm, I figured as much -- I've pulled all of the text from the talktable files and unless there are a bunch I'm missing I'm not finding that text. Just to confirm we're talking about the same files the ones I'm talking about are Win32/loctext/en.toc

EDIT#

I am finding the string ID -- it appears that this is the title -- now would (see below) be the sub text?

Code:
  
           
              0xFF7B7F91
           

           
              0xCEE58D5C
           

           
              0x160EF10F
           

         


Edit 2:

I can actually look at the file and it appears that all the text is above this title entry -- but I'm still curious as to if one of these tags should be indicating where all the text is.

It would make it easier to parse if that was so -- for reference I've included the entry I'm looking at.
Code:
0003496C Word of your stand-off with Akksul and his death has spread across Heleus. The Roekaar are using the event as a rallying cry for their cause.
0003496D By shooting Jaal, Akksul disgraced himself in front of his followers. While the Roekaar have not completely disbanded, Akksul has retreated into the shadows.
0003496E Akksul is a former student of the Moshae, who was captured by the kett ...
0003496F Akksul



Edit 3:

I've figured it out -- for any of those interested.

String ID -- will help you located the location of the text in the Texttable
TextEntryHash -- these are reference IDs in the hash -- yet all the text is in the texttable. The number of times these tags will correlate to how many lines above.

With my example above you can see the initial String ID 0003496F, then it has 3 tags for TextEntryHash and thus three lines above. I've reproduced this occurrence with at least 4 other codexes so while I can't claim this is an absolute rule but it seems to be.
  • Author
  • Localization

warrantyvoider, posted Wed Apr 19, 2017 1:09 pm (22403)


Nice find! So you get the line with the string id and then add for each textentryhash member one of lines before that? In which order? Can you give an example of what the result would look like? Thx^^
Greetz

Ps: i guess the member values are some hash over the text in the line
  • Author
  • Localization

Devisaur, posted Wed Apr 19, 2017 1:25 pm (22404)


warrantyvoider wrote:
Nice find! So you get the line with the string id and then add for each textentryhash member one of lines before that? In which order? Can you give an example of what the result would look like? Thx^^
Greetz

Ps: i guess the member values are some hash over the text in the line



Sure -- I ran into a slight issue it appears it's either BEFORE or AFTER the line with the string ID which creates an problem of deciding do you pull the lines before or after and how do you know?

I'm looking into it now and as soon as I figure out an accurate solution I'll let you know.

Edit1:
And some are out of order... so far I haven't seen anything that indicates that the hex will give indication -- besides the number of lines..unless we can figure out a way to reverse the hash. I'll see if I can come up with something.
Guest
This topic is now closed to further replies.

Account

Navigation

Search

Search

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.