Content: Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Background: Slate Blackcurrant Watermelon Strawberry Orange Banana Apple Emerald Chocolate Marble
Pattern: Blank Waves Notes Sharp Wood Rockface Leather Honey Vertical Triangles
Welcome to Xbox Chaos: Modding Evolved

Register now to gain access to all of our features. Once registered and logged in, you will be able to contribute to this site by submitting your own content or replying to existing content. You'll be able to customize your profile, receive reputation points as a reward for submitting content, while also communicating with other members via your own private inbox, plus much more! This message will be removed once you have signed in.

Search the Community: Showing results for tags 'reach'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Xbox Chaos
    • Announcements
    • Welcome Forum
  • Halo
    • Halo Tools & Utilities
    • General Halo Discussion
    • Halo 4
    • Halo: Reach
    • Halo 3
    • Halo 2
    • Halo: Combat Evolved
    • Halo: The Master Chief Collection
    • Halo 5: Guardians
  • Other Games
    • Destiny
    • Skyrim
    • Miscellaneous
  • All Xbox
  • General Chat
    • Xbox Discussion
    • Free Discussion
    • Software Development

Blogs

  • Dovahkiin's Blog
  • SnipeStyle's Blog
  • AMD's Bit Bucket
  • Halo reach The blog
  • Site News Blog
  • The Intermittent Xevalous
  • How to download and play games on this site
  • Lord Zedd's Blog
  • alvarojulian's Blog
  • Pixel Art
  • halolordkiller3's Blog
  • Urbanmech's Blog
  • disposedman's Blog
  • Random Mods Blog
  • Halo Trivia
  • Modtacular!
  • test
  • julia008's Blog
  • MACKDUB's Blog
  • XxXDarkSoul25XxX's Blog
  • Stanford's Blog
  • OrangeMohawk's Blog
  • Blam Experiments
  • blogs_blog_40
  • sierra 238's Blog
  • .map modding help
  • IbizaClanProductions' Blog
  • seas and oceans' Blog
  • Teancum's Blog
  • Zerker24's Blog
  • nicoleanderson's Blog
  • ColleenMorris' Blog
  • Not Dual's Blog
  • Thilo's Blog
  • Gamecheat13's Blog
  • The404Spartan's Modding Blog
  • XboxChaos App
  • Assembly Plugins
  • Lehvak's fun blog
  • sarahred.01's Blog
  • Stu Pickles' Blog
  • Xoduel's Blog
  • Forerunner.map
  • Reach AI teams
  • broadbunny's Blog
  • MythicalRewards' .map mod Blog
  • Unspecified Project
  • Forerunner569's .MAP mod emporium
  • JenniferWhite's Blog
  • Adventures in the Blam! Engine
  • L337H4X0RZZ's Modding Adventures

Categories

  • Halo Mods
    • Halo 3
    • Halo: Reach
    • Halo 4
  • Modding Programs
  • Videos and Artwork
  • Other Xbox Stuff

Calendars

There are no results to display.


Found 41 results

  1. I don't even know why I made this, but for some reason I wanted to share it with you guys... here it is.
  2. looking for a tut on extracting and injecting skybox and lighting.
  3. Reach Unlock

    Version 1.2

    4 downloads

    The original reach unlock tool, uploading in case anyone needs it for modding with xenia. Xenia does not fair well with Zedd's unlock patch so until the emulator is up to speed this can remove the map checks. Launch with the -ignore parameter to ignore file checks and apply changes anyway. Includes XeXTool.
  4. Everything was fine until i injected some campaign vehicles, this is annoying me. I click continue and my map doesn't load lmao
  5. https://www.moddb.com/mods/halo-ce-xbox-4-player-coop-splitscreen/downloads/halo-ce-ppfs Is the file uploaded to this site working? Do you have to go into the multiplayer map and play? Or do you go into campaign mode? I'm not sure about this mode yet. Please answer me in detail.
  6. Reach

    Well oddly enough theres no selection for Halo Online :? But anyway, I've been having an issue. I've been searching forum after forum for a solution When i try extracting tags or altering a map through assembly (I wanna inject the pelican into several maps for gametypes) It says,"file not supported ms23" Although, as far as I know the halo online maps are just ported halo 3 maps. WHICH IS SUPPORTED. So what do i do? Or should I just abandon hope and go back to my RGH XD Any helpful input would be great, thanks modders.
  7. I was going through websites trying to find Beta builds of Halo 3 (which I didn't find pls help) then I came across this Fan-made halo game unreleased beta build, I'll be more than happy to share the copy of the beta build just message me on twitter @Cserleo Pretty sure it's the exact same game as "Halo: Zero" The main objectives are; Mission 1- Kill the first wave of grunts (do not allow them to reach the captain). Mission 2- Infiltrate the chemical plant silently. You can trigger only 3 alarms. Mission 3- Kill the Giant Elite. You can also use the tank situated at the end of the area. Mission 4- Use the warthog to jump over the chemical boxes then kill floods using the flamethrower. Mission 5- Retrieve the ID tags owned by the infected marines. Mission 6- Same as mission 5. System requirements; Best performing requirements are at least a 1,4 Ghz processor and 256 Mb of RAM. It runs at a 512 X 384 resolution in full screen.
  8. Mind Powers V2

    Version 0.1

    821 downloads

    Mind Powers V2 is a remake of MindPowers by DarkShallFall in Halo 3. However, this mod adds much more than telekinesis. It also adds fire, frost, and shock powerups. Look for the "Powerup" section in the forge list. It is at the very bottom. Enjoy! Special Thanks to: Lord Zedd - For being Lord Zedd (Support) OrangeMohawk - Giving me the old Halo 3 Mind Powers patch which only had megaupload links.
  9. i see why now halo 5 discussion died quickly on here even with forge pc announced.....im a little late to the game and i see its come a long way since eldewritos initial launch.....gonna get to work on some maps i think
  10. Hey my name is Waffle and I am an avid Halo 3/ODST/Reach tricker. The unexplored areas that are left are pretty hard though, and to test some hypothetical ideas we wanted to use liberty. However, I dont believe it is supported anymore, and it seems like microsoft broke it. I was wondering if there is any porgram similar to it that we can use? All we need is the coordinate spawner to help us test out ideas like getting into the floodgate cutscene rooms and other things. Thanks
  11. I recently attempted to access the .MAP files on Dynamic Networks and no matter what link I click on...it gives me this error. Just wanted to check in and see if anyone else is having this issue. Please check and post back here if it does not work. Thank you for your time
  12. .MAP

    File Name: Mind Powers V2 File Submitter: JJIJR File Submitted: 12 Sep 2013 File Updated: 12 Sep 2013 File Category: .MAP Mods Mind Powers V2 is a remake of MindPowers by DarkShallFall in Halo 3. However, this mod adds much more than telekinesis. It also adds fire, frost, and shock powerups. Look for the "Powerup" section in the forge list. It is at the very bottom. Enjoy! Btw this video is outdated, I did finish shock. Special Thanks to: Lord Zedd - For being Lord Zedd (Support) OrangeMohawk - Giving me the old Halo 3 Mind Powers patch which only had megaupload links. I was going to ditch this mod, but I guess people still care for it, so I'm releasing it. Click here to download this file PS: Don't forget to rate the file what you guys think!
  13. when i edit the phmo tag to change the physics model why dose it only take effects after the bypid's die like use the hlmt tag then find elite then change the phmo to lets say he is an elite ill change his physics model to a hat but it wont effect the elite till he is dead he will roll around and go crazy but while his ai is active it wont effect him ?
  14. Reach

    OK so i was trying to add the spire pelican mod. And i was using assembly. But once i had finished the mod and put the make back into the reach folders and started the spire map it says my disk needs cleaning. I have an RGH with freestyle 3.
  15. File Name: Anti-Air Wraith on Forge World File Submitter: haloman30 File Submitted: 29 Sep 2013 File Updated: 14 Jul 2014 File Category: .MAP Mods This patch adds the Anti-Air Wraith (Seen in Halo 3, ODST, and Spartan Assault) into Forge World of Halo: Reach. Sorry that there is no image, can't take any decent screenshots with anything. A few things to note about the first version: In version 1.0/1.1: -THE NEEDLE RIFLE IS NOT USABLE. -THE ORIGINAL WRAITH IS REPLACED. v1.1: Old Screenshots credit to Zeltrax v2: Fixed projectile, shaders, original wraith replacement, and needle rifle unusability v3: Optional TAGC file for those who may wish to put the wraith in any map and their own maps, still needs referencing in SCNR if you do so. Click here to download this file
  16. Anti-Air Wraith on Forge World

    Version 3

    555 downloads

    This patch adds the Anti-Air Wraith (Seen in Halo 3, ODST, and Spartan Assault) into Forge World of Halo: Reach. Sorry that there is no image, can't take any decent screenshots with anything. A few things to note about the first version: In version 1.0/1.1: -THE NEEDLE RIFLE IS NOT USABLE. -THE ORIGINAL WRAITH IS REPLACED. v1.1: Old Screenshots credit to Zeltrax v2: Fixed projectile, shaders, original wraith replacement, and needle rifle unusability v3: Optional TAGC file for those who may wish to put the wraith in any map and their own maps, still needs referencing in SCNR if you do so.
  17. File Name: KSoft.Tool Repack File Submitter: synth92 File Submitted: 01 Sep 2013 File Category: Modding Programs Virus Scan: Click Here This is a repack of the original KSoft.Tool release by kornman00. Contains various batch files to automate the encoding and decoding process as well as support for Reach compilation. Just drag a gametype BLF file over the applicable .bat file and it will encode/decode it. You will need the following files: .NET Framework 4.5Microsoft Visual C++ 2012 Redistributable Package (x86) If it does not work, you may need to install the following: SlimDX Runtime.NET Framework Update Windows 7 - Windows 8 Since it is a commandline program and has batch files (for your convenience), some virus scanners may falsely label it as malware. Click here to download this file
  18. [redacted] Process will / is automated in assembly now. /thread.
  19. KSoft.Tool Repack

    Version

    364 downloads

    This is a repack of the original KSoft.Tool release by kornman00. Contains various batch files to automate the encoding and decoding process as well as support for Reach compilation. Just drag a gametype BLF file over the applicable .bat file and it will encode/decode it. You will need the following files: .NET Framework 4.5 Microsoft Visual C++ 2012 Redistributable Package (x86) If it does not work, you may need to install the following: SlimDX Runtime .NET Framework Update Windows 7 - (Windows 8) Since it is a commandline program and has batch files (for your convenience), some virus scanners may falsely label it as malware.
  20. I am very proud to be a member but i didnt find my time to say that yet :/ I really have to say that xboxchaos is the only good page for modding halo!! I didnt find any others...so thx to the communitiy for posting new halo stuff all the time sorry for my bad english but i am from germany
  21. Support

    How do I use the halo reach plug ins I have I've saved them to my configured USB and then put the USB in the Xbox but what's the next step !!!!!!
  22. Reach

    This is the format of Halo: Reach Films. enjoy. Header of film: struct FilmHeader { Int32 CreationDate, // Offset: 0x7C AsciiString CreationAuthor, //Offset 0x88 Int32 ModificationDate, // Offset: 0xA0 AsciiString ModificationAuthor, // Offset: 0xAC UnicodeString FilmName, //Offset 0xC0 UnicodeString FilmDescription, //Offset 0x1C0 AsciiString InfoString, // Offset: 0x3D8 UnicodeString GametypeName, //Offset 0x998 UnicodeString GametypeDescription, //Offset 0xA98 AsciiString MapName, // Offset: 0x1011C AsciiString MapRallyPoint, // Offset: 0x10220 UnicodeString MatchmakingPlaylistName, //Offset 0x10342 UnicodeString UsermapName, //Offset 0x10460 UnicodeString usermapDescription //Offset 0x10560 } Now, the player table is a table which holds the data of each unique player. Sadly unlike in Halo3 they don't give you the length of the number of people in the player table, and it can be aslong as it needs to be (think about it, you can have films with more than 16 people..). Anyway, i'll come onto that later. This is the location of the table and length of each entry. class PlayerTableData { int PlayerTableStartLocation = 0x01DE11; int PlayerTableEntryLength = 0x108; } Now we have that, I'll explain my hacky of grabbing each player from the table. void LoadPlayerTable() { bool contReadingPlayerTable = true; int playerTableIndex = 0; // Keep looping until we set 'contReadingPlayerTable' to false. while (contReadingPlayerTable) { // Get the offset of the start of the current player table entry long currentEntryOffset = PlayerTable.PlayerTableStartLocation + (PlayerTable.PlayerTableEntryLength * playerTableIndex); // Read the gamertag at the start of the entry _filmReader.SeekTo(currentEntryOffset + 0x0F); string tmpGamertag = _filmReader.ReadUTF16(); // Is the string a Null or just Whitespace? if (String.IsNullOrWhiteSpace(tmpGamertag)) // Yes, the player doesn't exist and there are no more. Stop looping. contReadingPlayerTable = false; else { // Nope, the player exists, load all data about player. // Insert ALL the loading code. // Increase player Table Index playerTableIndex++; } } } Okay, now for the "fun" stuff. This contains the offsets of every customizable object the game stores in the 'PlayerTableEntry'. (Look below for the enum's for everything you shall read). All the offsets are relative to the start of the current 'PlayerTableEntry'. struct PlayerTableEntry { UnicodeString Gamertag, // Offset: 0x0F UnicodeString ServiceTag, // Offset: 0x53 UnicodeString Gamertag2, // Offset: 0xC7 byte Gender, // Offset: 0x37 byte ArmourColourPrimary, byte ArmourColourSecondary, byte VisorColour, byte Species, byte EmblemForeground, // Offset: 0x3F byte EmblemBackground, byte EmblemForegroundTog, byte EmblemPrimaryColour, byte EmblemSecondaryColour, byte EmblemBackgroundColour, byte EmblemBackground, byte EmblemBackground, byte Helmet, // Offset: 0x47 byte LeftShoulder, byte RightShoudler, byte Chest, byte Wrist, byte Utility, byte KneeGuards, byte EliteMilitaryArmour, byte ArmourEffect, // For some reason the engine writes the same byte 2 times. So this and the next byte are the ArmourEffect byte ArmourEffect, // Simply just read the first one, then write it back 2 times. byte FirefightVoice } Now for the repetitive part. These are the enum's for everything stored: /// <summary> /// Offset: 0x37 /// </summary> public enum SpartanGender { Male, Female } /// <summary> /// Offset: 0x3B /// </summary> public enum Species { Spartan, Elite } /// <summary> /// Offset: 0x3A /// </summary> public enum VisorColour { Default = 0x00, Silver = 0x01, Blue = 0x02, Gold = 0x03, Black = 0x04 } /// <summary> /// Offset: 0x47 /// </summary> public enum Helmet { MarkVBase = 0x00, MarkVUA = 0x01, MarkVUAHUL = 0x02, CQCBase = 0x03, CQCCBRN = 0x04, CQCUAHUL = 0x05, MilitaryPoliceBase = 0x06, MilitaryPoliceCBRNHURS = 0x07, MilitaryPoliceHURSCNM = 0x08, ODSTBase = 0x09, ODSTUACNM = 0x0A, ODSTCBRNHUL = 0x0B, HazopBase = 0x0C, HazopCBRNHUL = 0x0D, HazopCNMI = 0x0E, EODBase = 0x0F, EODCNM = 0x10, EODUANUL = 0x11, OperatorBase = 0x12, OperatorUAHUL = 0x13, OperatorCNM = 0x14, GrenadierBase = 0x15, GrenadierUA = 0x16, GrenadierUAFC = 0x17, AirAssaultBase = 0x18, AirAssaultUACNM = 0x19, AirAssaultFCI = 0x1A, ScoutBase = 0x1B, ScoutHURS = 0x1C, ScoutCBRNCNM = 0x1D, EVABase = 0x1E, EVACNM = 0x1F, EVAAUAHUL3 = 0x20, JFOBase = 0x21, JFOHULI = 0x22, JFOUA = 0x23, CommandoBase = 0x24, CommandoCBRNCNM = 0x25, CommandoUAFCI2 = 0x26, MjolnirMkVBase = 0x27, MjolnirMkVCNM = 0x28, MjolnirMkVUA = 0x29, PilotBase = 0x2A, PilotHUL3 = 0x2B, PilotUAHUL3 = 0x2C, PilotHaunted = 0x2D, SecurityBase = 0x2E, SecurityUAHUL = 0x2F, SecurityCBRNCNM = 0x30, ReconBase = 0x3A, ReconHUL = 0x3B, ReconUAHUL3 = 0x3C, EVACBase = 0x3D, EVACCNM = 0x3E, EVACHUL3 = 0x3F, MjolnirMkVIBase = 0x31, MjolnirMkVIFCI2 = 0x32, MjolnirMkVIUAHULI = 0x33, CQBBase = 0x34, CQBHURSCNM = 0x35, CQBUAHUL = 0x36, GungnirBase = 0x37, GungnirHURS = 0x38, GungnirCBRN = 0x39, } /// <summary> /// Left Shoulder Offset: 0x48 /// Right Shoulder Offset: 0x49 /// </summary> public enum Shoulder { Default = 0x00, FJPara = 0x01, Hazop = 0x02, JFO = 0x03, Recon = 0x04, UAMultiThread = 0x05, JumpJet = 0x06, Eva = 0x07, Gungnir = 0x08, ODST = 0x11, UABaseSecurity = 0x09, CQC = 0x0A, Operator = 0x0B, Commando = 0x0C, Grenadier = 0x0D, Sniper = 0x0E, MjolnirMkV = 0x0F, Security = 0x10 } /// <summary> /// Offset: 0x4A /// </summary> public enum Chest { Default = 0x00, UABaseSecurity = 0x01, // Lord Zedd r cool. UAMultiThreat = 0x02, // Lord Zedd r cool. HPHalo = 0x03, UACounterAssault = 0x04, TacticalLRP = 0x05, TacticalRecon = 0x06, CollarGrenadier = 0x07, TacticalPatrol = 0x08, CollarBreacher = 0x09, AssaultSapper = 0x0A, AssaultCommando = 0x0B, HPParafoil = 0x0C, CollarGrenadierUA = 0x0D, UAMultuThreatW = 0x0E, UABaseSecurityW = 0x0F, CollarBreacherR = 0x10, HPParafoilR = 0x11, AssaultSapperR = 0x12, UAODST = 0x13 } /// <summary> /// Offset: 0x4B /// </summary> public enum Wrist { Default = 0x00, UABuckler = 0x01, UABracer = 0x02, TacticalTacPad = 0x03, AssaultBreacher = 0x04, TacticalUGPS = 0x05 } /// <summary> /// Offset: 0x4C /// </summary> public enum Utility { Default = 0x00, TacticalSoftCase = 0x01, UAChobam = 0x02, UANxRA = 0x03, TacticalTraumaKit = 0x04, TacticalHardCase = 0x05 } /// <summary> /// Offset: 0x4D /// </summary> public enum KneeGuards { Default = 0x00, JFPara = 0x01, Gungnir = 0x02, Grenadier = 0x03 } /// <summary> /// Offset: 0x4E /// </summary> public enum EliteMilitaryRank { Minor = 0x00, SpecOps = 0x01, Ranger = 0x02, Ultra = 0x03, Zealot = 0x04, General = 0x05, FieldMarshall = 0x06, Officer = 0x07 } /// <summary> /// Offset: 0x4F /// </summary> public enum ArmourEffect { Default = 0x00, RedFlames = 0x01, BlueFlames = 0x02, BirthdayParty = 0x03, HeartAttack = 0x04, Pestilence = 0x05, InclementWeather = 0x06 } /// <summary> /// Offset: 0x51 /// </summary> public enum FirefightVoice { NobleSix = 0x00, CortanaAI = 0x01, JohnS117 = 0x02, GYSGTBuck = 0x03, SGTMAJJohnson = 0x04, GYSGTStacker = 0x05, CarterS259 = 0x06, KatS320 = 0x07, JunS226 = 0x08, Emile239 = 0x09, JorgeS052 = 0x0A, AuntieDotAI = 0x0B } public enum Colours { Steel, Silver, White, Brown, Tan, Khaki, Sage, Olive, Drab, Forest, Green, SeaFoam, Teal, Aqua, Cyan, Blue, Cobalt, Ice, Violet, Orchid, Lavender, Maroon, Brick, Rose, Rust, Coral, Peach, Gold, Yellow, Pale, UltraWhite = 0x1F } public enum EmblemBackground { Blank, Circle, Diamond, Plus, Square, Triangle, VerticalStripe, HorizontalStripe, Cleft, CrissCross, PointedStar8, Star, CowboyHat, ThickStar, Banner, Diamonds4, Sun, Hexagon, VerticalHexagon, Chalice, Octagon, Pentagon, InvertedPentagon, RacingStripes, HorizontagStripes, Gradient, HorizontalGradient, Oval, VerticalOval, BluntDiamond, BluntDiamond2, SharpDiamond, SharpDiamond2, Aero, DeltaWing, Asterisk, Blam, Blam2, Shield, Display, DreamCatcher, BuzzSaw, FourPlots, BalloFire, Cog, Sprocket, FaceMask, FaceMask2, SmallCircle, Cancel, Crown, SnappyHat, ThreePlots } public enum EmblemForeground { SeventhColumn, BullsEye, Vortex, Halt, Spartan, PowerIsOn, SpartanLeague, Delta, Noted, Stuck, Phoenix, Champion, JollyRoger, ActiveRooster, Campfire, RadioActive, Smiley, Frowney, NoCampaing, Sol, DoubleCrescent, TinYang, Helmet, Triad, CupOfDeath, Rose, Thor, SkullKing, DogTags, Castle, FlamingNinja, Pirate, Spades, Clubs, Diamonds, Hearts, Wasp, Mombassa, Drone, Grunt, Lips, Capsule, Buffalo, GasMask, Jokers, SpartanHelmet, Atomic, Valkyrie, Headshot, ConeD, Leo, Bulltrue, Runes, Arrowhead, CrossedSwords, Unicorn, Wolf, Anchor, Chaos, Elephant, Daisy, Crosshairs, Infected, Tomcat, Supernova, FleurDeLis, BearClaw, FlamingHorns, BlackWidow, Peacefist, Number1, Number2, Number3, Number4, Number5, Number6, Number7, Number8, Number9, Number0 } public enum EmblemForegroundToggle { Toggled, UnToggled }
  23. Reach

    Halo: Reach Campaign Save Format Research by AMD, Xerax, Thunder, and XenonDev None of the file layout or hash information was obtained through 3rd-party sources. If you use any of this research in your own programs, giving credit to the Liberty team would be much appreciated but is not required. Introduction Well, here's everything that I know about the Reach campaign save format. I'm essentially just following the Liberty source code here and giving detailed explanations for everything. If you find any unknown values or have any questions, please comment and let us know. Notations Used in this Documentation When I document values here, I will be documenting them with the following syntax: <relative offset> <type> <short description of value> relative offset describes the value's offset IN HEX relative to the beginning of its container unless otherwise specified. It would be impossible for me to document some absolute offsets here for obvious reasons, so I will instead describe in some way or another how to calculate the position of the container (if there is one). type describes the type, size, and format of the value. It will be one of the following: byte - An unsigned byte value. sbyte - A signed byte value. int16 - A signed 16-bit integer (2 bytes) value. uint16 - An unsigned 16-bit integer (2 bytes) value. uint32 - An unsigned 32-bit integer (4 bytes) value. float - A 32-bit (4 bytes) standard IEEE-754 floating-point value. asciiz - A null-terminated ASCII string. utf16z - A null-terminated UTF-16 big-endian string. datum_index - A datum index as a uint32 (more on this below). Note: all values here are in big endian unless specified otherwise! Also, be aware that for most values I will be simply guessing at the signedness (or even the size) because it can be hard to determine in most cases. short description of value will give a short description of the value. If the description ends with a question mark (?), then it means that I am unsure of the value's purpose but have a vague idea as to what it might mean. If it ends with a superscript number (e.g. 1), then it means that I will further explain the value below. The STFS Container Halo: Reach campaign save STFS containers are always around 10.7 MB large. Their names are usually random aside from an "se" at the beginning, "baaaaa" in the middle, and "aaaa" at the end. They contain two files: gamestate.hdr - I'm not entirely sure what the purpose of this file is. It is literally just the first 0x1E720 bytes of mmiof.bmf (more info on that file is below), which is why it might have the extension "hdr" (abbreviation for "header"). It may be used to display the values shown in the campaign menu, as all of those values can be found in the beginning of mmiof.bmf. Although this file does contain the digest section of mmiof.bmf, it is NOT verified by the game. mmiof.bmf - This file contains the actual gamestate information. It is always exactly 0xA70000 bytes in length and always starts with the four hex bytes 60 CC CC B2. There is a special salted SHA-1 digest (20 bytes) located at offset 0x1E708 in the file (more info on that below). Everything from this point on in the documentation will be found in mmiof.bmf. The SHA-1 Digest To verify the validity of a gamesave, a salted SHA-1 digest of the entire file is stored at offset 0x1E708 in mmiof.bmf. It is preceded by 20 cryptographically strong random bytes generated by the Xbox 360's XeCryptRandom function. Note however that those bytes do not have to be recomputed in order to rehash a save file; they are simply used to make the hash stronger (and also probably to throw off people trying to use a hex editor). If the hash is not valid, the game will reject the save file and display a message to the player. The digest can be calculated as follows: Load mmiof.bmf into a buffer in memory. Zero out the 20 bytes starting at offset 0x1E708. This is where the digest is stored in the file. Set up a new SHA-1 hashing context. Hash the salt value. It is as follows (in hex): ED D4 30 09 66 6D 5C 4A 5C 36 57 FA B4 0E 02 2F 53 5A C6 C9 EE 47 1F 01 F1 A4 47 56 B7 71 4F 1C 36 EC In the same hashing context, hash the memory buffer that was created earlier. Finalize the context and write the computed digest to offset 0x1E708 in the file. General Game Information The following values are at the same absolute offset in every mmiof.bmf file: 00000008 asciiz Map ID string 0000F964 asciiz Path to .map file on disc 0000FAFF byte Difficulty1 * 0 = Easy * 1 = Normal * 2 = Heroic * 3 = Legendary 0000FB0C uint32 Skulls bitfield2 0001D668 utf16z Player's gamertag 0001D6AC utf16z Player's service tag 0066FAA0 asciiz Path to .map file on disc 0066FC3B byte Difficulty1 0066FC48 uint32 Skulls bitfield2 0067E81C uint32 Skulls bitfield2 1. There appears to be another difficulty value somewhere, because only changing the two that I've found makes the game reject the save. If you find where the third value is, please let me know. 2. I'm not entirely sure which bits correspond to which skulls. If anybody would be willing to research this further, it would be greatly appreciated. The Tables Data in save files is stored in large fixed-size blocks which I like to call "tables." The first table (megalo_objects) can be found at offset 0x2DEBC in the file. Each table will always be at the same offset in every file and has a header that is 0x54 bytes large. Tables which have known formats will be documented below. In addition, the entry count and entry size will be the same in every save file. Entry sizes also cannot vary within a table. To compensate for this, extra data may be stored at the end of a table. The format of each table is as follows: 00 asciiz Table name, always 32 bytes large (including the null terminator) 20 uint32 Size of each table entry 24 uint32 Magic number ('[email protected]@') 28 uint32 Number of entries 2C uint16 Unknown 2E uint16 Unknown 30 uint32 Some sort of function pointer 34 uint32 Unknown 38 uint32 Unknown 3C uint32 Unknown 40 uint32 Unknown 44 uint32 Entry list start memory address 48 uint32 Entry list end memory address 4C uint32 Size of this header (always 0x54) 50 uint32 Size of this header and all entries following it Datum Indices So now that we know how tables work, how do we identify entries within a table? Datum indices! Each table entry in a save file can be identified through a unique unsigned 32-bit value known as a "datum index." Datum indices have the following format: 00 uint16 Salted index1 02 uint16 Table index2 or more simply: 0000 uint32 Datum index 1. The purpose of the salted index is to make the datum index unique, because there is more than one table in a save file. This value can usually be found at the beginning of a table entry, so you can sometimes search with a hex editor to determine which table a datum index belongs to. 2. The table index is a zero-based index into one of the tables in a save file. I don't know of any way yet to programatically determine which table an index belongs to by simply looking at the salt (unless you read every index in every table), so I will specify the owner table name unless it's extremely obvious (e.g. in the case of object indices). Note that datum indices cannot have a salt value of 0, so if a table entry states that its salt value is 0 then you should skip over the entry because it means that the entry is invalid. Also, if a datum index is ever said to be 0xFFFFFFFF, then it means that the value does not point to anything (null). Table: players The "players" table contains information about players in the game. It always will have 16 entries, but only the first will ever be used by the game because co-op mode does not save. It is the only reliable and quick way to find which bipd belongs to the player. The table header is located at offset 0x67F074 in mmiof.bmf. Therefore, the first entry would be at 0x67F0C8. There should be 16 entries, and each entry should be 0x578 bytes large. They have the following format: 0000 uint16 Datum index salt value 0028 datum_index Bipd object 0034 datum_index Bipd object 005C datum_index Primary weapon1 0060 datum_index Secondary weapon1 0064 datum_index Third weapon1 0068 datum_index Fourth weapon1 00B0 utf16z Gamertag 00D9 byte Primary armor color 00DA byte Secondary armor color 00E0 byte Emblem foreground image index 00E1 byte Emblem background image index 00E2 byte Emblem flags 00E3 byte Secondary emblem color 00E4 byte Primary emblem color 00E5 byte Secondary armor color? 00E6 byte Primary armor color? 00F4 utf16z Service tag 0168 utf16z Gamertag 0198 utf16z Gamertag 01C1 byte Primary armor color 01C2 byte Secondary armor color 01C8 byte Emblem foreground image index 01C9 byte Emblem background image index 01CA byte Emblem flags 01CB byte Secondary emblem color 01CC byte Primary emblem color 01CD byte Secondary armor color? 01CE byte Primary armor color? 0250 utf16z Gamertag 1. It would be more accurate to read weapons from the bipd object, because the game doesn't seem to use the values here. Table: object The "object" table contains information about the offset and type of every object in the save file. Its primary use is for translating datum indices into offsets into the object pool (see below). Every object datum index points to an entry in this table. The table header is located at offset 0x7602F8 in mmiof.bmf. Therefore, the first entry would be at 0x76034C. In the table header, all 3 (?) table-specific values store the number of active objects. There should be 2048 entries, and each entry should be 16 bytes large. They have the following format: 0000 uint16 Datum index salt value 0002 uint16 Flags? * 0x22 = Deleted object? 0004 byte Tag group * 0 = Bipd * 1 = Vehi * 2 = Weap * 3 = Eqip * 4 = Term * 5 = Proj * 6 = Scen * 7 = Mach * 8 = Ctrl * 9 = Ssce * 10 = Bloc * 11 = Crea * 13 = Efsc 0005 byte Unknown 0006 uint16 Object type? 0008 uint32 Object data's offset from start of object pool1 000C uint32 Memory address? (0 if object does not exist) 1. The object pool is always located at offset 0x76844C. So, to find the absolute position of an object's data, simply add 0x76844C to the offset given in the table entry. Note that this offset points to the start of the object's actual data and not its pool link data (see below for more info). The Object Pool The object pool is what actually contains all of the object data. Every piece of data related to an object is stored here - position, rotation, properties, etc. Although I haven't investigated the pool header much, it is 0x54 bytes large. It is located at offset 0x76844C and utilizes a doubly-linked list because object data sizes can vary. The basic layout of the object pool is this: 0000 uint32 Magic ('pool') 0008 asciiz Pool type ("objects") For each object, starting at relative offset 0x54: 0000 uint32 Size of this object's data, including the 16-byte link data 0004 datum_index This object's datum index 0008 uint32 Next object's link data's offset from start of pool (0 if none) 000C uint32 Previous object's link data's offset from start of pool (0 if none) 0010 Object data1 1. The object data layout varies from object to object. You must look at the object's tag group (see the object table above) in order to know which layout you need to read. Generic Object Layout The following data will be found in any object regardless of which tag group it belongs to: 0000 uint32 .map ID 0004 uint32 Object flags? * 0x80 = Not carried? * 0x20000000 = Active? 0008 uint32 BSP Zone? (0xFFFF0000 for N/A) 000C datum_index Next object carried by parent 0010 datum_index First object carried by this 0014 datum_index Parent (carrier) object 0020 float Bounding box X1?1 0024 float Bounding box Y1?1 0028 float Bounding box Z1?1 0030 float Bounding box X2?1 0034 float Bounding box Y2?1 0038 float Bounding box Z2?1 0044 float X position1 0048 float Y position1 004C float Z position1 00DC uint32 Physics flags? * 0x100 = Simulate physics for this object? Also attach to carrier?2 * 0x8000000 = Activated? 1. Liberty sets all of the bounding box values to the position value. According to Xerax this is necessary or else the game won't always move the object. Also, some objects appear to have position data stored elsewhere or are somehow tied to the .map file, and changing these coordinates will have no effect on them. 2. Disable this bit on the player biped for noclip Hlmt-Based Object Layout The following data applies to objects that have HLMT data with them. There is no way to tell from the save file (as far as I know) whether or not an object has this data, so you just have to check based off of the tag group. 0110 float Health modifier? (0 = N/A, 0xFFFFFFFF = invincible) 0114 float Shield modifier? (0 = N/A, 0xFFFFFFFF = invincible) Weapon-Using Object Layout The following data applies to objects that can carry and use weapons. I only know of bipd's and vehi's having this data, although there may be more tag groups. As with hlmt-based objects, you have to just check the tag group to see if this data is supported. 0348 datum_index Primary weapon 034C datum_index Secondary weapon 0350 datum_index Third weapon 0354 datum_index Fourth weapon Bipd Object Layout The following data applies only to bipd objects: 01BC datum_index AI actor (belongs to the "actor" table) 01CC datum_index Player index 032E int16 Vehicle seat number? (-1 = none) 036C datum_index Armor ability/equipment 0378 sbyte Frag grenades 0379 sbyte Plasma grenades 0A00 datum_index Current vehicle? 0A04 datum_index Vehicle this bipd is controlling? Weap Object Layout The following data applies only to weap objects: 01A8 uint32 Weapon flags? * 0x3010000 = In use1 * 0x4000000 = Not in use 01B4 datum_index Object using this?2 01B8 datum_index Object using this?2 02C6 int16 Ammo 02CA int16 Clip ammo 1. This is probably a combination of flags, but I haven't had time to look into what each bit does. If anybody would be willing to research this further, it would be much appreciated. 2. It is actually possible for a bipd to be using a weapon even if it is not carrying it. This happens during the beginning cutscene in Winter Contingency and probably in other places as well. Eqip Object Layout The following data applies only to eqip objects: 00F0 datum_index Player using this 01B4 datum_index Object using this? 01B8 datum_index Object using this? 01EC float Timer? Vehi Object Layout The following data applies only to vehi objects: 0388 datum_index Driver object? 038C datum_index Controller object? That's All! Well, that's all. Hopefully this made some sense to you. If you have any questions or think that you can contribute something to this documentation, please let me know.
  24. File Name: Halo: Reach Gravity Modifier File Submitter: Xerax File Submitted: 13 Oct 2011 File Category: Programs Virus Scan: Click Here Quickly mod SP Gravity Quickly mod MP Gravity Quickly mod FF Gravity (value is shared with SP physics constant) Versions; One version has checks to check the xex is; valid, halo reach, decompressed. If you are getting an error, try the no checks version. It has no checks at all. So it may crash/exception/BSoD/Unk Error. This is your only warning. Click here to download this file
  25. im looking for more people to try and help me with this. however even though having the files im unsure on how to properly use them. as they arent used in the main game. however due to the discovery of snipestyle where their names are in the mainmenu it may assist me to finding out some things on how to use these and if it is possible to make them work with custom maps by us. although im unsure how these work. it make make it possible to put a usermap into a patch of a map so when you are on the mainmenu loading up a .map mod from someone else you can see their usermap for the mod as well. from what i can tell from these mvar files is they may use the same format for items as the normal usermaps so if we get them to work it doesnt mean we can load any ident like we could in halo 3. so far all i can tell from these files without much looking atm is: 0x0 - Map header 5F626C660000003000010002FFFE000000000000000000000000000000000000000000000000000000000000000000006D7661720000 _blf...0........................................mvar.. 0x54 - Map Description 0x1A7 - Map for the variant?. 0x46 long last 815 bytes appears to be the footer. other than that not too much can be told from them. 00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 ................................................................................................................................................................................................................................................................ heres the mvar files if you wish to look yourself to find anything http://www.megaupload.com/?d=TZH8Q86K