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.

Sign in to follow this  
Followers 0
Cashmint

Fixing Halo Mega Bloks

2 posts in this topic

  • All Milestones Download Link - https://drive.google.com/file/d/1vCAk0iLJ9D4EmIb5gFKk8TgbfNhsDarw/view?usp=drivesdk
  • 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:
  • ?hash=ec7ffad52ed7aec4ff5490a9c4b76b20
    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.png
    error2-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
  • Pictures:
p49.jpg
p67.jpg
p48.jpg
 
p47.jpg
 
p46.jpg
 
p45.jpg
 
p1.png
p2.png
p11.png
p4.png
p5.png
p6.png
p7.png
p8.png
p9.png
p10.png
p122.png
p13.png
 
UncookedMoa, Endpoint and ReteroX like this

Share this post


Link to post
Share on other sites

Holy moly, this is beautiful. I will admit, it's a little outside of my scope; I had trouble running the Assembly build in VS.

I would hand over cash for this game, no questions asked... Such a shame things went the way they did. 

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
Sign in to follow this  
Followers 0