SnowyMouse/chimera

Reimplement strings.dll's exception strings

Closed this issue · 10 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?

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.

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.

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

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

I see.

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

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?

Fixed in 00d2fa7

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

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