Welcome, Guest!

Here are some links you may find helpful

Fixing Halo Mega Bloks

Cashmint

Member
Original poster
Community Contributor
Dec 1, 2019
5
45
13
  • All Milestones Download Link - https://drive.google.com/file/d/1vCAk0iLJ9D4EmIb5gFKk8TgbfNhsDarw/view?usp=drivesdk
  • Zombie Haggar Download Link - https://drive.google.com/file/d/1dHbZblZJlXYGiquxmmW6vIwgeWJXsm12/view?usp=drivesdk
  • The Problem - With many hours spent looking into UE3-STL2, I have found the problem that is responsible for breaking everything. To preface the following analysis, I am surprised I hadn't noticed it early considering I've played around with the file in question before and had even been witness to crashes stemming from missing functions in said file. But what file am I referring to? Well, for some reason, the game never decides to check for nor load the MegaHaloGame.XXX file. This is evident by the games ability to boot to the exact same point without failure without the file being present in the CookedXbox360 folder. Additionally, when removing the same file from a working build, one would quickly be met with an error specifying the games inability to locate MegaHaloGame.XXX. So, what kind of information does MegaHaloGame.XXX contain? Pretty much everything needed for spawning playerpawns, assigning playerreplicationinfo, passing the correct camera to the player, controlling NPC's, and most importantly, assigning proper control/input. This explains a ton in terms of why the build hasn't work in any form from a game play perspective. I will be pursuing this lead in order to try and figure out which file is responsible for the check since it doesn't appear to be an xex problem since placing an xex from a working build still doesn't check for the file in question. The checking and loading of the file is done by Coalesced_INT.BIN.
  • Introduction - Before delving into the patches and fixes, it’s important take a look at the vanilla xex released by Lehvak. As all of you may know, the release xex started off in a state of brokenness. This was evident by the instant crash that’d occur once it was booted. Personally, I was looking forward to playing the infamous canceled N-Space project known as Haggar. So, when this crash occurred, I decided to look into it further, and the first place anyone looking to fix crashes should go is Visual Studio 2010; the version provided to a user once the installation of neighborhood has wrapped up. This version contains a very handy feature that lets you debug Xbox 360 games by remotely attaching the studio to your dev kit. From there, it’s all about finding the break points and formulating fixes in IDA which should then be transferred to the xex via HxD. As a side note, be sure to decrypt the xex using xextool before applying changes. Once changes have been applied, encrypt the xex and put it back onto the Xbox 360 for testing. With that out of way, lets take a look at the first error Visual Studio was outputting to us. The error is an assertion failure that seems to stem from the fact that the game had it out for spawning due to a presumably bad cook of the engine file. Anyways, the error did not signal the end of getting this thing booted; in fact, it was only just the beginning. As for the fix itself, to get rid of this annoying error all we had to do was NOP the following two addresses in the decrypted xex: 82AB4134 and 82AB4148. Finally, the first milestone had been reached in repairing this very broken build. The pictures below showcase the errors in IDA which helped me formulate the fix to get around the assertion failure:
  • error1-png.6503
    error1-2.png
  • Milestone 1 - The first sign of progress came in once I was able to bypass the incredibly annoying aforementioned assertion failure. Sadly, the xex still wouldnt boot, at least not to any significant point. Once again, I analyzed what Visual Studio was spitting out, plugged the address into IDA, and fixed the error by simply changing the value of the integer that the register is compared to which caused the function to branch to another location instead of failing the function and crashing at the next line. The picture highlights the address of failure and the zero I had to change in order to get around this crash:error2.pngerror2-2.png
  • Milestone 2/all loading screen hang ups – This is where the first sign of life becomes visible. I am of course referring to the loading icon in the bottom right hand corner of the screen. Sadly, this icon only moves for a few seconds before the game decides to crash again. Thankfully, this crash can be fixed by once again NOP’ing the addresses given to us by Visual Studio. Repeat this process about 2 more times and we will have reached milestone 3:
  • error3.png
  • Milestone 3 – Finally, the game loads all the way and introduces us to a nice mission startup screen. Additionally, once we press A, a black screen with only a HUD appears. Sadly, if we attempt to press a button on the Xbox 360 controller, or even attempt to use a keyboard, the game crashes:
  • error4.jpg
  • Milestone 4 - 6 – These basically just make the game more stable and remove any crashes that’ll happen if you press a button, attempt to use a keyboard, or input certain commands. As for specifics, M4 fixes the controller crashes, M5 makes it more likely to load into the main menu upon entering “open main_menu”, and M6 increases the time before an unfixable crash occurs when trying to go to magicmoments via the “re <enterremoteevent>" command:
  • error244.png
  • Milestone 7– M7 fixes the crash that’d occur in the event you press a keyboard button outside of the console. It is the latest patch and will not crash randomly. Moreover, it’s the most stable version of the xex and includes all fixes thus far.
    • Moving around in Milestone 7 – After pressing A, you’ll probably be surprised to realize that the screen is still black and not like the pictures I’ve been posting. Well, to fix this simply type “freezeat <coordinates> “ and then type “FOV <fov>”. This will reveal the place you froze at. If you want a good starting point, type “freezeat here” in order to be frozen at the spawn point. Then, type the fov command in order to reveal the scene. Remember, you only need to type the FOV command once and you’ll be able to jump around via coordinates without needing to constantly change the FOV.
    • Spawning enemies, objects, and being able to see them – To spawn enemies, type the command “re spawnreturnencounter_beforebridgeleft”. Then, to see your newly spawned encounter, type “freezeat -119153 -100000 600 0 -500 0”. Remember to do the FOV command if you hadn’t done it already. To spawn objects, type “re cpload_b1_starttounsc_base”. This will load in the bloks and all the other intractable objects in the first area. On a final note, in order to unfreeze the scene with out going back into the black screen, type "rendertimefrozen 0" in the console. Congratulations, you are all caught up on the repairing of Halo Mega Bloks. Now, lets see if we can get it to spawn!
  • Milestone 8 - Fixing Cheats, Restoring ClassInput, and Giving Playerpawncontroller a Camera- The 8th milestone comes in the form of console commands that restore important features to the build. First, re-enabling cheats. For this, all you have to do is enter "set playercontroller cheatclass Halocheatmanager" into the command line. Then, simply type, "enablecheats". Just like that, cheats are restored! As for noteworthy cheats that cause crashes, "avatar <enterclassname>" does not function at the moment. This is the command for possessing NPC's and as you can imagine, I was pretty upset when I was made aware of the its decision not to work properly. Following this update, I will be investigating the crash around that command in an attempt to repair it. Another important feature I've managed to fix is the inputclass which used to consistently fail on trying to pass a class to the player. If one were to have Visual Studio or even XBWatson open whilst running any of the milestones posted above, they'd be met a constant barrage of "ScriptWarning: Script call stack: Function Engine.PlayerController:InitInputSystem" messages. Thankfully, by simply entering "set playercontroller inputclass utplayerinput", the problem goes away. The final command to enter gives the playercontroller an actual camera. In order to do this, simply type, "set playercontroller cameraclass camera". To demonstrate what these commands can do, try typing in "re playintrocinematicfull" once you've entered all of them in to see the intro cut scene playout! Using the freezeat method, this wasn't possible. Finally, viewing the perspective of spawned NPCs is possible by entering in all of the bold commands previously mentioned, spawning an encounter via "re spawnencounter", and then entering "viewclass <classname>". That is all for now, be sure to respond in the event you discover something new.
    • Internal Enemy AI Class Names for viewclass command:
      • HaloAIJackalPawn
      • HaloAIGruntPawn_Ultra
      • HaloAIGruntPawn_Kamikaze
      • HaloAIElitePawn
      • HaloAIElitePawn_Veteran
      • HaloAIJackalPawn
  • p44.png
  • Zombie Haggar- Zombie Haggar is a frankenbuild considering it is made up of UE3-STL2 files and UE3-MegaHalo-Relase files; these are both Halo Mega Bloks builds. Sadly, it does crash incredibly quickly and works only after a certain condition is met. Keep in mind, this doesn't work 100% of the time, but it does tend to increase the chances. Once you run the xex, just spam the A button and you should get through to witness the first area without encountering a crash. Before the crash, you can jump, move, shoot, look around, and even open the console. On a final note, the error that occurs once you've moved around a bit reads as follows:
    • Warning, Detected data corruption [header] trying to read 8192 bytes at offset 198060 from '..\..\MegaHaloGame\CookedXbox360\Textures.tfc'. Please delete file and recook.
      C:\projects\Halo\Development\Src\Core\Src\UnAsyncLoading.cpp(1058): Assertion failed: 0
  • Pictures:
p099.png
p777.pngp544.png
p786.png
p87.jpgp67.jpgp49.jpg
p48.jpg
p47.jpg
p46.jpg
p45.jpg
p11.pngp4.pngp122.png
 

Attachments

  • error1.png
    error1.png
    33.8 KB · Views: 0
  • p7.png
    p7.png
    783.2 KB · Views: 0
  • p8.png
    p8.png
    791.2 KB · Views: 0
  • p11.png
    p11.png
    813.5 KB · Views: 0
  • p45.jpg
    p45.jpg
    1.2 MB · Views: 0
  • p786.png
    p786.png
    862.3 KB · Views: 0
Last edited:

Anthem01

New member
Aug 1, 2021
1
0
1
hello I am from the year 2021, and after lementing over the fact that I may have begged my parents to buy me 233 doller HM stuff when I was 7 I rememberd this game.
anyway I there a way that I can get this working on a Xbox 360 emulator?
 

onza120

Member
Registered
Jun 30, 2019
12
4
3
AGName
onza120
AG Join Date
Apr 24, 2013
Amazing work can’t wait to try.
 

Make a donation