Welcome to Open Carnage

A resource for Halo Custom Edition and MCC modding, with unique means of rewarding content creation and support. Have a wander to see why we're worth the time! - EST. 2012

Sign in to follow this  
Followers 0
Kavawuvi

New feature: Maps in RAM

Something I'm working on is loading Halo maps directly into RAM. The benefit to doing this is mostly performance, but it will also allow for compressed maps as well as not having to worry about the 23 MiB tag data limit outside of BSPs. However, to do this, you will need a slightly modified haloce.exe file. This isn't a modification in Halo's code but rather a flag in the .exe header, LARGEADDRESSAWARE. This is required in order to allocate such a large amount of RAM.

 

To lay it out for you, here are the pros and cons:

 

Pros

  • Performance can be significantly improved even on high end PCs. This is because all of the disk reading is all done on load, removing the need to read from disk, removing hitches when loading assets.
  • BSP transitions are now nearly instantaneous. Again, all of the disk reading is done on load.
  • Map compression means that maps now take up a lot less space. To put it in perspective, @Vaporeon, using the compression tool I wrote, managed to compress over 3000 maps down to under 100 GB. I'll repost those map compression tables for you to see.
  • Monochrome bitmaps can be used, drastically reducing the file size of bitmaps such as those used in HUDs without any loss in quality (lossless).
  • The 23 MiB tag data limit is no longer an issue (outside of BSP tags which can now take almost all of the 23 MiB uncontested though I might even make those not limited), allowing for more complex maps with more content than ever. Because I've allocated a whole GiB, you can use as much as you want of that GiB for your maps.

Cons

  • You need a haloce.exe file that is patched to support LARGEADDRESSAWARE. This will allow Chimera to allocate larger chunks of RAM than what is normally possible.
  • Loading times for Halo maps are increased to around 0.5-3 seconds depending on your PC specifications. This is because the entire map has to be loaded into RAM, and compressed maps have to be decompressed.
  • Halo may use over 1 GiB of RAM. Loading 700+ MiB maps directly into RAM uses a lot of RAM.

 

Map Compression Benchmarks

Here are some familiar tables you've probably seen before.

 

MwmDrIj.png

 

As you can see, the whole Refined campaign takes up nearly 2.65 GiB. When compressed, the Refined campaign takes up under 1 GiB (1024 MiB = 1 GiB). Compression ratios are usually at or under 40%, and with features like monochrome bitmaps, they can be dropped even further. On a mid-ranged CPU like the Ryzen 5 2600, these maps do not take that long to decompress.

 

Here's another table containing some popular maps. Obviously compression ratio varies from map to map, but LZMA's compression ratios are really good.

 

AzxHV2x.png

WaeV, Tucker933, ShikuTeshi and 1 other like this

Share this post


Link to post
Share on other sites

Tiddy-bits:

I've also written a patcher. Simply place this program in your Halo Custom Edition directory next to haloce.exe and haloceded.exe and run it.

 

If you don't have write access to Halo Custom Edition, you should give yourself write access, or you can try running this program as an administrator.

 

Download: laa-patch.zip

ST34MF0X likes this

Share this post


Link to post
Share on other sites

I've done a bunch to Chimera since then. This includes support for compressed .vap maps, fixes for commands like chimera_interpolate and chimera_auto_center, as well as being able to use chimera_interpolate.

 

As usual, it's protected like approximately 25% of Halo maps out there.

 

To break the protection, you must find the answer. For there is only something in this universe that is powerful enough to defeat the encryption. What is that, you ask? It's in this post that you just read!

 

Download: chimera-20190504T231621Z.7z

 

edit: I previously broke interpolation. If you find that there is no interpolation and chimera_interpolate doesn't work, try redownloading. It's fixed now.

Edited by Kavawuvi
ST34MF0X, Java and VoidsShadow like this

Share this post


Link to post
Share on other sites

As I mentioned in a previous post, you will need to patch Halo Custom Edition for IMAGE_LARGE_ADDRESS_AWARE (you can use my laa-patch tool for this) to use a few more of Chimera's features. If you do not do this, you will still be able to use Chimera, but a few features will not be available. Here is a table that details this:

 

n2HapVA.png

 

If you have any questions or comments, reply here.

ST34MF0X likes this

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.