chimera icon indicating copy to clipboard operation
chimera copied to clipboard

Reimplement strings.dll's exception strings

Open BinToss opened this issue 3 years ago • 7 comments

  • [ ] Make a list of all the string resources in strings.dll.
  • [ ] Figure out how Halo accesses those string. Does it load the resources from the assembly or access them some other way?

BinToss avatar Apr 09 '21 06:04 BinToss

https://drive.google.com/file/d/1aOVTIJPRjI09TposPqRs6g8xJJZyAsUl/view?usp=sharing A rundown of the Custom Edition 1.0.10 strings.dll Every string is stored as a Resource.

BinToss avatar Apr 09 '21 09:04 BinToss

Possible solutions:

A - Copy resources during compiletime

Compile strings and bitmap resources into Chimera binary during compile-time.

B - Copy resources during runtime

Modify Chimera binary during runtime. Copy resources from strings-old.dll/strings.gearbox.dll to chimera's strings.dll

C - Patcher

Provide patcher app to users. Patch Chimera into stock strings.dll (!!! may violate Microsoft code sig). What if user's strings.dll is older Chimera? Do we patch stock resources into it?


I'd have suggested a DllImport/LoadLibrary, but I don't recall this working correctly in my tests. However, it's been a long time since I last tried it, so I may have forgotten if it works. If it doesn't work, then the client, dediserver, and update applications require the resources be in "strings.dll".

Side note: I still haven't given up on OpenSauce giving other mods priority for hooks and redundant features, despite it having been on the backburner for a very long time.

BinToss avatar Jul 12 '22 22:07 BinToss

Interesting, I think solution A is the right way to go, I'll take a look at it later. Thank you!

MangoFizz avatar Jul 12 '22 22:07 MangoFizz

I tested the theory via ResourceHacker tonight. Transplanting the string resources does work. I used an SPV3 strings.dll as the donor and a Monolith 1.0.5 as the recipient. image

BinToss avatar Aug 13 '22 11:08 BinToss

I see.

Aerocatia avatar Aug 14 '22 01:08 Aerocatia

If you include the halo bitmap, the original splash screen works too.

Aerocatia avatar Aug 14 '22 01:08 Aerocatia

Speaking of the loading screen bitmap, could we consider loading an external bitmap for loading screen customization that doesn't require modifying patching a DLL with a new bitmap?

BinToss avatar Aug 31 '22 22:08 BinToss

Fixed in 00d2fa7ed0d0f315aed374a3dd8ef79a82438805

Aerocatia avatar Jan 17 '23 00:01 Aerocatia

@BinToss A custom bitmap loaded at runtime could be possible, but it would be a low priority to implement this I'd say.

Aerocatia avatar Jan 17 '23 00:01 Aerocatia

That's fine with me. I can't imagine anyone using it other than for memes or for stuff like SPV3.

BinToss avatar Jan 19 '23 19:01 BinToss