Skip to content
dark-c0de edited this page Sep 16, 2015 · 3 revisions

Patch Editor

Patch Editor

Contributing Patches

If you've found a useful patch you'd like to contribute back to the community, please send a Pull Request. Please make sure that your patch works for as many versions of Halo Online as possible, we will also test your patch before merging it into the official release. If you're creating a pull request, please be sure to include a screenshot and a in-dept explanation of what your patch does.

Getting Started

When you load up DarkLoader there is a button "Patch Editor" that loads up the patch editor. When you click it, a nifty little patch editor window will show.

Patch List

The patch list keeps track of all the available patches the are loaded and saved to the DarkLoader-Patches.json. On the bottom of the "Patch List" there are three buttons.

If you make manual changes to the DarkLoader-Patches.json file, you'll want to make sure you hit "Reload" to refresh the PatchEditor. If you have an item selected in the list and you hit the minus (-) button, the editor window will prompt you if you would like to delete that patch. You can hit the plus (+) button to start a new blank patch. The save button will save any changes you have made out to the DarkLoader-Patches.json.

Pattern Scan Bytes

Pattern Scan Bytes

This is where you choose what bytes you want the scanner to look for when patching. Use cheat engine to find the bytes you want to patch, and then copy and paste them into the pattern. The "Match" is how close you want the bytes to be searched.

For example: If you search for "Halo Online Game Client" you would have the following bytes:

48 61 6C 6F 20 4F 6E 6C 69 6E 65 20 47 61 6D 65 20 43 6C 69 65 6E 74

If you want the pattern to match the entire text "Halo Online Game Client" you would simply hit the "Fill" button. The fill button is a simple way of inserting an "x" for every byte you want to match. Here's what that would look like, xxxxxxxxxxxxxxxxxxxxxxx.

Lets say instead of looking for "Halo Online Game Client" you want to search for "Halo Magic! Game Client". You can do this simply by changing the corresponding x's (x) to question marks (?).

You match would now look like this. xxxxx??????xxxxxxxxxxxx.

Sometimes when making a pattern you can't get a perfect pattern right on the address you want to patch. Instead, you'll need to make a pattern that is a little before and a little after the address you want to patch. This is what "Offset" is for. Let's take a look at how the "Hud Hide" patch works. The "Hud Hide" patch looks for the following pattern: F0 3F D9 5D 93 A8 E2 DD 83 3F 00 and has an offset of 6. This means the "Patch" will actually patch starting at E2 DD 83 3F 00 instead of the F0.

You can test if your pattern returns any results by hitting the "Test" button. If the pattern finds anything, it will show up in the "Pattern Test Results" listbox. You can click on any results to bring up a Memory Viewer.

Patch

Patch

This area is what you want the pattern scanner to patch back into the memory. If the patch needs to run on startup, click the "Run On Startup" checkbox. If the patch needs to be ran before execution, check the "Patch EXE Before Startup" Patches like changing the game to english are required to run before execution.

The "Replace All Results" will search for every pattern that matches the Pattern Scan Bytes and replace them with the "Bytes to patch." If you want to only patch the first address the scanner finds, don't check "Replace All Results." You can test out if a patch works by hitting "Test Patch." You'll need to first run a Patter Scan, and select a result from the Pattern Test Results.

Pattern Test Results

This area will display any results that are found from running a "Pattern Scan Bytes" test. You can click on them to open a Memory viewer. If you're going to run a Test Patch, you'll need to select one from this list.

Patch Info

This is an area to describe what your patch does. Give your patch a title, description, and also put your name in the Author field.