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.


Adding Built-In Gametypes To The Main Menu

1 post in this topic

Adding built-in game variants is something that I've always wanted to do since I saw Zedd's post on replacing built-in maps. I recently figured out how to do it so I figured I'd share with the community. The process is very similar to replacing or adding built-in map variants, with a few small changes. For my example, I'll be using Gun Game.
What You'll Need

  • A copy of
  • "variant" file extracted from your gametype
  • Hex Editor (You can grab HxD free here if you don't have one.)
  • Notepad
  • Assembly
  • Hex calculator (Alt+3 on Windows Calculator!)

Step One: Getting the Data from MPVR
Open the variant file in your hex editor. Scroll down until you find the string "mpvr". From this point, move ahead 0x24 bytes, and we'll find the size we need to copy.
Move your caret right past the value that tells us the size (at 0x28 from mpvr), and copy the size you just got. Paste this into Notepad. To keep things less confusing, I like to delete all spaces. To do this, you can press ctrl+H (replace), and put a space in "Find" and keep "Replace" blank, and press "Replace All". You should see something like this:
Now, in order to get this to the format the main menu will take as a built in, we have to make a small modification. Delete the "2" at the beginning of the file, and add a "0" to the end. Now, copy this data, and paste it into a new document in your hex editor. Save it.
Now we need to get the raw header. Jump to 0x8 in this new file. It should start with something like "700007F2". We need to copy to the end of what the description is, but it's not plain text in this format, so we'll have to go about different means to do that. So, there should be a pattern here, generally a 0x00 or 0x01 every other byte. This is the name and description in this area. At the end of this "pattern", there will be two 0x00 bytes, followed by a break in the pattern.
So, we need to copy from 0x8 bytes from the file's start, to the byte after the two 0x00 bytes.
Paste this in a new document. In this new document, subtract 0x02 from the last byte. Save.

Step Two: Adding the Entry
Expand the map, move the "Megalo" reflexive in VTGL, and add a chunk so you can reference your new built-in gametype. To make it easier, I copied the data from the last chunk to my new chunk. I'm not going to go over that in this tutorial. There is plenty information out there, I'd begin looking here or here if you're not sure, or you can ask in the comments. Anyways, copy and paste the raw header and the raw mpvr into the free space you have in your file, making sure there is enough space between the end of the reflexive data and where you paste this data. Make note of the offsets you pasted these to, and add the tag address mask (map magic) so we can reference this offset. Also, note the sizes of your header and raw files. In the chunk we added to the "Megalo" reflexive in VTGL, we're now going to reference these values. So right click "Raw Header", and choose "View Value As". Copy the Meta Offset and go to that offset in your hex editor.
Here, you'll see:
Size of MPVR Header data
Offset of MPVR Header data
Size of Raw MPVR data
Offset of Raw MPVR data
Edit these values to reflect the size and memory offset of the data you pasted. Save.
Open back up in Assembly to make sure everything looks good. You can also change the filename in Assembly too, if you wish.
If everything worked correctly, you should have your new built-in gametype after you transfer the map to your xbox. Congratulations!
I hope you were successful in your attempts with this. When I was writing this tut, and all was done, I found the game crashed when I tried to open the gametype selection in-game. It turned out the gametype I was using at first was corrupt, so it's a good idea to double check before you start.


This can also be done in Halo: Reach; it's practically the exact same process. In the next update for my Main Menu mod for Reach, I will have more built-in gametypes added.
Lord Zedd for the tutorial on changing built-in map variants
The Assembly team for making the best Halo modding tool out there



Of course, if you find any issues or need clarification, please don't hesitate to comment or PM me.

Thunder, AMD, Lord Zedd and 2 others like 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