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.

Zone

.MAP
Duplicating Blocks/Adding Chunks

2 posts in this topic

This tutorial was derived from the tag duplication tutorial made by Lord Zedd. This tutorial is for people that want to just move a reflexive, without adding new tags. For this tutorial, I’ll be adding campaign.map to the external cache references in [play]. This tutorial can be applied to any reflexive for which you want to add chunks to.
 
What you’ll need!

Step 1

Make a folder to hold what we'll be working on. Copy the map for which you want to duplicate reflexives into the folder. I’ll be using Forge World for the example. Also, copy mapexpand to the folder. Open cmd and drag mapexpand into it, then use this command line:
 
Mapexpand (insert the map you want to expand) 1
 
Example: mapexpand forge_halo.map 1
 
You can add as many pages as you want. I’ll be using 1 because 0x10000 bytes is more than enough…  
 
Now get the Offset (highlighted in green) and the memory offset (highlighted in red) mapexpand gave you and keep note of it somewhere for safekeeping.
 

Tutorialpart1_zpsdb3f8441.png

 

Step 2
Open Injection Assembly and go to the tag that has the reflexive you want to expand. Go to the reflexive you want to copy. Click Information, and note down the count and entry size. For the example, we have a count of 2 and a entry size of 264. On the first value in the first chunk, right click and choose "View Value As..." at the top of the popup box. For the example; we'll do this with Map Path, which gives the value 0x5D01010.
 
2_zps347c9be1.png

 

695a6e4b-6b1e-40c6-ac81-a0b52d5114e6_zps

 

Step 3
Now open your map in your Hex editor. Hit control + G (goto) and put the offset you got in the last step (make sure you erase 0x and just put in 5D01010). With your calculator, in decimal mode, multiply the count by the entry size. Then tick hex to get the hex equivalent. So 264 (entry size) * 2 (count) = 528, 528 to hex is 210 bam we need to go to 0x210.

dasfef_zps286dad7e.jpg

 

Using calculator to find the hexadecimal of a decimal

Spoiler

First, open calculator. click view and pick Programmer.

28c599a0-f94c-4895-8e2c-63aaaabe5c00_zps

Tick Dec and put the size of the reflexive your copying.

 

537e9215-57ed-4892-bbb7-9d86c1220a47_zps

Now tick hex. The hexadecimal 108, is amount you need to copy in your preferred hex editor.

 

32d74fef-4eeb-4d3e-9f36-0ff66abf15c4_zps


 
Since things are packed tight in a map, we need to copy the reflexive to the area of the map we injected free space into. So, copy the length of 0x210 starting from the offset Assembly gave you. Paste that in a new document for safekeeping. Now go to the file offset mapexpand gave you. Paste the data you just copied here, and save.

 

 

262b84c3-417b-4ad7-b318-b0690cfcd5f5_zps

 

Now press Control + G again and type the file offset that mapexpand gave you (my offset is 5CF1000) paste the data you just copied here.

 

0e6d4887-5cc4-44ab-a8d4-7f883bccfa70_zps

 

save.

 

7e9a7170-b41e-4fb0-b74b-0930895e4d5f_zps

 

Step 4
In Assembly, put the memory offset (the one in red) mapexpand gave you in the External Cache’s address and add 1 to the count. Now, you will see that there will be 3 chunks instead of 2 chunks, or what ever you wanted.

 

Special thanks!

 

Orangemohawk for revising the tutorial and helping out with other stuff.

Edited by Lehvak

Share this post


Link to post
Share on other sites

For those of you on the Experimental update channel for Assembly, I just added a new feature which can automate this entire process for you. If you click on the plus sign next to the index selector for a tag block,

JLSCr0c.png

then it will pop up a dialog which lets you "reallocate" the block:

mpdSU8V.png

Simply enter the new entry count you want and press the "Reallocate" button. Assembly will then take care of the dirty work of finding a new space for the block and expanding the map. You can also click the "Quick Add" button to quickly add a large number of entries to the count.

This is also useful for getting rid of a block you don't need anymore (set count to 0 and then the space can be reused by something else) or adding entries to a block which doesn't have any to begin with.

If you aren't on the Experimental update channel and would like to switch to it, open the Settings page in Assembly, change "Update Channel" to "Experimental," and check for updates (Help -> Check for Updates).

Hopefully this will make things a lot easier for everyone. Not sure why I didn't add this sooner.

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