Halo: Combat Evolved Mod Tools

The H1A Editing Kit, abbreviated as H1A-EK, is an editing software released by 343 Industries for the Master Chief Collection version of Halo: Combat Evolved and distributed via Steam. The modding software itself is quite similar to the Halo Editing Kit released by Gearbox Software for Halo Custom Edition, although with several improvements, and an additional program called H1A standalone build for loading tags instead of maps. H1A-EK includes updates to the game engine and tools, bug fixes QoL improvements, extended limits, and new features. A complete source tag set for the game's stock campaign and multiplayer maps, plus source scripts for the campaign is also available.

Mapping programs
Much like Halo Custom Edition, H1a Editing Kit comes with several programs designed to assist users in making custom content.

General
Stability improvements:
 * Negative fog opaque distance and depth no longer causes a crash.
 * Negative power values for skies no longer causes a radiosity crash.
 * Fixed bitmap group sequence blocks crashing when crosshair overlay sequence index was out of bounds.
 * Fixed exception when AI try to fire weapons without projectile references.
 * Fixed a crash resulting from ejection from flipped vehicles not resetting unit animation state.
 * Removed an incorrect assertion related to drawing HUD numbers and bitmap sequences.
 * AI debug code now safely checks for an actor's secondary look direction prop index being NONE.
 * Various buffer overflow, index out of range, and stale pointer fixes.
 * Increase MAXIMUM_NUMBER_OF_BUILD_SPRITE_BITMAPS from 8 to 16 (renderer stability).
 * The engine will now check and log when an invalid particle_system using rotational complex render mode has a particle state where the sprites bitmap does not include another "sideways" sequence after the given "forward" sequence index.
 * The tools are in general faster and more responsive (in part due to manual optimizations, in part due to play builds built with a modern optimizing compiler being used instead of test builds).
 * Asserts can be disabled using the -noassert command line flag.
 * The tags, data, and maps directories can now be set when running all tools. See custom content paths for more info. This makes it easier to work with different tag sets.
 * All tools are still 32-bit but they are now large address aware (LAA). This allows them to use up to 4 GiB of virtual memory instead of 2, which prevents Sapien from running out of memory when editing scenarios with many large assets.
 * Various cases of unnecessary/confusing logging in the tools have been removed, such as "Couldn't read map file toolbeta.map" and "Sound card doesn't meet minimum hardware requirements".

Visual

 * The tools now use the modern DX11 graphics API instead of the obsolete D3D9 API. this should result in better performance and support on modern systems.
 * First person models now use the highest LOD available instead of the lowest.
 * Increased MAXIMUM_RENDERED_ENVIRONMENT_SURFACES from 16k to 32k. This means BSPs can now have more visible triangles without culling happening. It is still important to use portals to manage visible clusters.
 * Many Gearbox visual bugs were fixed. Some examples are:
 * Restoration of shader_transparent_generic and shader_transparent_plasma
 * fog screen layers
 * Fog planes draw over sky
 * Environment bump mapping
 * Interpolation on screen shake, antennas, flags, and some UI fading
 * Water mipmap order
 * Camo tint
 * Glass with bumped reflections
 * Flashlight distance
 * Widget alignment in mirror reflections

Tool

 * Lots of new verbs have been added.
 * A -verbose flag can be added to see additional logging.
 * Lightmapping code has been optimized and is even faster with the -noassert command line flag. Lightmapping now takes roughly a quarter of the time of legacy Tool and is even faster than LM tool. Additionally this code now only uses 32-bit integers instead of an unsafe mix with 16-bit ones, and 16 MiB stack reserve. This increases the crash stability of radiosity.
 * Most logs (like debug.txt) are now saved to a reports subfolder (similarly to Halo 2+).
 * Bitmaps compilation
 * Bitmap DXT1-3 (BC1-3) encoding now uses DirectXTex instead of some S3TC code. This should result in higher quality similar to the original XDK.
 * The bitmaps verb now accepts both .tiff and .tif extensions like bitmap does.
 * Map compilation (build-cache-file):
 * Script data is properly recompiled from source files when available now. A bug previously caused Tool to always fall back to sources stored in the scenario tag.
 * Resource maps can optionally be updated to include all the resource data for the scenario being packaged.
 * Maps can target "classic" or "remastered" mode.
 * loc.map resource maps are no longer generated or used as they are not used by H1A (aside from H1CE backwards compatibility).
 * Tool will now log errors when the user attempts to use swarm actors in firing-position based combat; always charge at enemies must be set to prevent runtime crashes.
 * Model and structure compilation:
 * The functionality used by phantom_tool to remove collision artifacts is now exposed as an argument for compiling BSPs (structure verb) and model_collision_geometry (collision-geometry).
 * WRL files are saved alongside the JMS file being compiled rather than the HEK root. The user is now told that this file was generated.
 * When compiling a structure BSP and shaders do not yet exist, the chosen types of shaders will now be generated in the level's shaders directory instead of the tags root.
 * Model compilation can now optionally use Halo 2's logic for LOD selection, which is more intuitive.
 * Model and collision importing have more verbose output. Use -verbose for the most troubleshooting information.
 * Usage and feedback clarity:
 * Argument parsing is now less primitive. Verbs can include optional arguments and flags and any unrecognized options are presented to the user.
 * The usage printout when Tool is run without arguments is now sorted. The names and argument descriptions of some existing verbs have been updated for clarity and consistency.
 * zoners_model_upgrade and strings verbs have been removed since they weren't useful.
 * Tool will now tell you if it couldn't find a directory rather than simply logging nothing like some verbs previously did (looking at you model).
 * Verbs which accept a tag path as an argument will now automatically strip data\ and tags\ prefixes, allowing you to use tab completion on the command line (Halo 3 backport).
 * Tool will no longer exception (but will log errors) when compiling a gbxmodel where the JMS has invalid node weights (two nodes where one has weight 1.0).
 * Tool supports a -pause flag which keeps the process running after completion until the user presses Enter. This was meant for community-made launchers like Osoyoos.
 * Stability improvements:
 * ogg/vorbis upgraded to to 1.3.5/1.3.7 which should improve sound compilation stability.
 * Fixes for various unsafe code: uninitialized variables, bad printf args, etc.