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


  • Content count

  • Joined

  • Last visited

Everything posted by Kavawuvi

  1. The syntax is "chimera_fov 60" and "chimera_widescreen_fix 1". You put the underscores in the command name and you put spaces between arguments.
  2. Maybe give the latest Chimera build a try? Chimera's no longer in alpha, but it never has been truly "stable" in terms of feature completeness.
  3. Cheat Engine using a similar method of finding where to enable it which I did with Chimera so you could run Halo PC with a console without -console
  4. I figured that here would be a good place to put this here. Before someone asks for the difference between Custom Edition maps and CEA map files: aside from the ability to load tag data from external map files and different versions in the header, they're the same format as retail, so besides those two minor differences, all differences below also apply to Custom Edition maps. All of this information has been found from my work with Invader. Map Files Anyway, starting with the map file, itself, cache files are stored as 0x20000 byte (128 KiB) chunks which are each compressed using Deflate. This will signficantly negatively impact compression ratios, but it allows for threading for both compression and decompression. Unlike Xbox maps, the header is also compressed, so it is not possible to even identify a map file as a map file without decompressing it. The first number in the compressed file is a count (32-bit integer), followed by an array of file offsets to each block (32-bit integers). Each block is a size of the block when uncompressed (32-bit integer) followed by the Deflate stream. Using this, you can get the decompressed size by adding up the sizes. You can use Ceaflate to decompress and compress these files, but if you intend to use the map files with Invader, do not use Ceaflate to decompress them. Invader handles it automatically. Once you've got a decompressed map file, you may notice something: like retail maps, the engine version is 7, though the build string is different ( instead of either [maps that came with the retail disc] or [ui.map that came with the Halo PC dedicated server]). However, there is one key difference that will prevent many tag parsers from accessing the tag data in the map: the tag data address. Halo PC uses 0x40440000 and Halo CEA uses 0x40448000. Since the tag data header is the same size, tools that infer the tag data address based on the tag array pointer, such as Eschaton, will be able to work with the map as far as allowing you to view and edit tag data without having to update the tool. Also, there is another key difference that will prevent many tag parsers from accessing BSP tags in the map: BSP vertices are stored outside of the tag, and the lightmap pointers are meaningless here. Actually, the vertices are addressed based on file offset and size, so you'll have to use the offset values instead of the address values to find it. Fortunately, they're the same format, so they can be reintegrated back into a BSP tag and exported normally. invader-extract can already do this. There's one last difference: bitmaps and sounds are stored differently in CEA. They are not stored in bitmaps.map or sounds.map. All classic bitmaps are stored in inplace1.ipak (and referenced in the .imeta file), and all classic sounds are stored in fmod files. Also, the .fmeta contains information about file names and the uncompressed file size (which is read by the game and needs to be correct). These files not only store the data, itself, but also the actual attributes to the data. Therefore, the tag data for both the bitmap data and permutation data is actually not correct. Bitmap data can be determined by reading the .imeta and .ipak data and reading the data from that, and thankfully, MCC uses the same formats that Halo PC uses for classic bitmaps. However, sound data may not even use a format that stock Halo PC supports. How do I tell the difference between a Halo PC or CEA map? Technically, you can't safely do this if the maps are uncompressed. Here are a few scenarios: Yes, the build strings are different, but neither games read this value. Anyone can change these with a hex editor and it'd still be just as valid to either game. The only thing you can guarantee based on the header is whether or not something is a Custom Edition map. Yes, BSP vertices are stored differently, but the values used in one game aren't used in the other, so it is possible for either to be set to something that appears valid but isn't actually used. Yes, the tag data addresses are different, so usually the tag arrays will be different addresses, but this does not always have to be the case, and some map protections will exploit this for older, naive tag editors like Eschaton. The only reliable way I can think of for telling the difference between two maps is that CEA maps are compressed. invader-compress will also set its own 563 value in the header as the engine version when decompressed so it can still tell that the map is a CEA map. Ceaflate doesn't do that.
  5. CEA bitmap extraction now works. Turns out that MCC completely disregards everything in the bitmap data block (EDIT: when loading bitmaps - probably not when scaling them) and uses data from the .ipak files, instead. This can be fixed in extraction, but it's a pain in the ass. Thankfully I'm willing to do that.
  6. The console is still in CEA, even if it's a little difficult to reach
  7. None that I know of. Sorry. Halo PC has a bug where if you run the game in windowed mode, you can't run it at your desktop's native resolution. I think this was fixed in HAC2 - going to maybe look for a way to introduce this into Chimera.
  8. I suppose the link to the readme (that also comes with the .dll) should suffice then
  9. That command was removed and replaced with the much better chimera.ini system.
  10. Not presently. There used to be a command for blocking multitexture overlays but I didn't re-add it in the rewrite, as better options such as Jesse's HUD exist.
  11. I guess if I did make a dark and light theme, I would make the dark theme the default one. Those are a bit easier to read. I'm not really experienced with GUIs or theming, though, so that would be difficult to set up for me.
  12. Whoo! More work has been done on the tag editor. Here are some screenshots to show both dark and light themes. Linux - KDE desktop environment, Breeze Dark, my personal color theming Windows 10
  13. Fuck yes
  14. It's that day again - monthly update day! First off, new tools were added. invader-refactor allows you to rename tags while also changing the references in all of the tags in a tags folder. You no longer have to build the tags, rename, and then extract. Also, invader-collection can make .tag_collection tags using text files. Also, CEA maps can now be built... sort of! See this topic for more information: Here's the full log: Added New tool: invader-refactor - Find and replace tag references. New tool: invader-collection - Generates tag collection tags invader-build: Added `mcc` as an engine target. If building MCC CEA maps, you will need to modify the .fmeta tag, too invader-build: Now errors if any tag has an animation graph but no model invader-build: Added --uncompressed for engine targets that default to compressed (i.e. `mcc`) to be built as uncompressed. invader-compress: Can now decompress/compress CEA maps. If decompressed by a tool besides invader-compress, then the engine version in the header will need to be changed from 0x7 (7) to 0x233 (563) to correctly recompress. The value will be set back to the correct value upon compression. invader-extract: Can now extract BSP tags from CEA maps. invader-extract: Can now extract tags from CEA maps. If the map is uncompressed from a tool besides invader-compress, then the engine version in the header will need to be changed from 0x7 (7) to 0x233 (563) to correctly load. BSP tags, sounds, and bitmaps do not currently extract. invader-extract: Added partial support for Xbox maps invader-indexer: Can now index tags from CEA maps. If the map is uncompressed from a tool besides invader-compress, then the engine version in the header will need to be changed from 0x7 (7) to 0x233 (563) to correctly load. invader-info: Added partial support for Xbox maps invader-info: Added `-T uncompressed-size` invader-info: Can now query CEA maps. If the map is uncompressed from a tool besides invader-compress, then the engine version in the header will need to be changed from 0x7 (7) to 0x233 (563) to correctly load. invader-refactor: Added `-s` which only writes to a single tag invader-refactor: Added `-D` which performs the operation without making any actual changes invader-strip: Added `-p` which runs the tag through Invader's preprocessor (used in invader-build). This is to make tags easier to compare. Changed invader: gbxmodel tags that have markers located in the main model struct are now considered invalid invader: Tags with multiple consecutive path separators are now fixed when run through the tag or map parser invader-build: Now warns if a biped or vehicle is missing an animation graph, and, if not, errors if the tag is missing a model Fixed invader-archive: Fixed an issue with single tag archival when archiving bitmaps or sounds invader-build: Fixed ejection port recovery rate being calculated as 1 for some tags invader-build: Fixed maps with stubbed tags being detected as protected in invader-info; note, however, that maps will need to be rebuilt invader-build: Fixed a typo in an error message for weapon_hud_interface tags invader-build: Fixed showing the wrong indices in weapon_hud_interface errors invader-build: Fixed non-power-of-two check giving incorrect results when compiling bitmaps invader-build: Fixed a missing "bip01 head" resulting in a warning invader-build: Fixed sound_scenery references not working in effect tags invader-build: Fixed some bounds checking issues when compiling invalid collision models or BSP collision invader-build: Fixed scenery and light fixtures not spawning on MCC maps invader-extract: Fixed an issue where some hidden values were being stripped unnecessarily invader-extract: Fixed an issue where certain model_animation tags did not extract invader-strip: Fixed an issue where some hidden values were being stripped unnecessarily In other news, work is being done on the tag editor. This cross-platform tag editor offers high performance and support for Invader's multiple virtual tag directory feature. It also works on Linux! By high performance, I mean that BSPs load and save extremely fast - within milliseconds. This is because Invader's parser is blazingly fast, so more time is actually being spent generating the UI than it is being spent parsing the tag. As always, the latest Windows nightly builds can be retrieved from https://invader.opencarnage.net/builds/nightly/download-latest.html
  15. MCC discussion for Invader has moved to this topic:
  16. Looks like we won't be having any trouble porting Snowgulch over.
  17. CEA maps now build sort of
  18. This is a tool that compresses/decompresses Halo Combat Evolved Anniversary PC map, ipak, and s3dpak files. Have fun! Also, make sure to run MCC with anticheat off if you use any map files compressed with this tool. Otherwise, bad things will happen. Source code: https://github.com/kavawuvi/ceaflate Download (win32): ceaflate-build-win32.7z License is GNU GPL v3.
  19. I've pushed an update to ceaflate that removes the check for if it's a CEA map or not. It turns out that other files use this compression format, such as the s3dpaks and ipak files.
  20. I wrote it from scratch twice! The first time was just as an experimental little test. The second time was because I wanted to add some threading and error handling and finally release the thing Multiplayer-wise, Halo CEA is way better. The netcode completely dumpsters Halo PC. Visual and audio-wise, though, it takes a bit of a step back. I made a video yesterday that got a bit of traction from the community, so hopefully 343i fixes the issues.
  21. Time sure flies!
  22. Not yet. This is planned, however, and how I was going to do it was through chimera.ini. What Windows or Wine version are you using? What version of Halo? What version of Chimera? What mods are you using?
  23. I made a web page for Invader, hosting courtesy of @Tucker933. Here's the page: https://invader.opencarnage.net/ Also, the nightly builds page got a style update to match it: https://invader.opencarnage.net/builds/nightly/download-latest.html
  24. Here's a mini-update! Let's start with the new tool: invader-refactor. This took allows you to rename tags and re-reference the tags without having to build a cache file and re-extract. We feel that tag extraction should only make sense if you don't have access to the original tags. This tool is also quite fast, taking only 21-22 seconds on my PC to move the entire Gearbox tag set's "levels\test" directory to a more logically-named "levels\multiplayer" directory, and the maps still build, too! Also, I am working on a new GUI-based tag editor. This tag editor will be based on the Qt framework and is made to take advantage of Invader's multiple-tag directory support while also providing fast, native support for Linux - a first for a GUI HEK tag editor. As always, a full update will be posted on the start of the next month, but you can get invader-refactor right now either by compiling Invader from source or by using the Windows nightly builds. I recommend compiling from source, personally, as you may get a slightly more up-to-date version than what is available on the nightly builds, but I imagine many people don't care to do that. So, it's merely an option.