Sign in to follow this  
Followers 0
WaeV

Mapfiles -- An Overview

12 posts in this topic

Tiddy-bits:

That, my friend, was one hell of a write up. I remember you saying something about giving a presentation about this at your school, are you still planning on posting a video of that, because that'd be pretty awesome to watch. Amazing compilation, sah, jolly good form, wot wot.

WaeV likes this

KsqHutE.png

Share this post


Link to post
Share on other sites

 I spent that last third of the presentation going over a bit of modding history, giving shoutouts, and advertising OpenCarnage.

 

Like a true patron


KsqHutE.png

Share this post


Link to post
Share on other sites

Lol, you guys like that I advertised more than the content itself :P

 

A lot of this is drawn from Grenadiac's work, btw. I just rephrased it in a way that's hopefully more accessible. Gren did make some excellent diagrams himself, though. 

 

Here's an example of reflexives:

 

Ep6lOKQ.png

 

What Gren doesn't illustrate here is that reflexives can themselves contain reflexives.

Edit: Okay, Zero2 has just clarified something for me. Here's an example of a tag's metadata which has three reflexives. Two "first order" reflexives (foo, bar), and one "second order" reflexive (baz) nested under foo.

 

By default, Halo will organize these reflexives like so: All first order reflexives, then all second order reflexives, and so forth until there are none left.

mb8rr9F.png

 

However, other layouts are valid as long as the arrays are not broken up. In fact, they can be scattered all over memory and Halo won't give a damn, as long as the pointers are valid.

NeX, Kavawuvi and Takka like this

Share this post


Link to post
Share on other sites

However, other layouts are valid as long as the arrays are not broken up. In fact, they can be scattered all over memory and Halo won't give a damn, as long as the pointers are valid.

That's right. The pointer doesn't even have to point to data inside of Halo's map. That means one could create custom reflexes without changing much of the map data, or they can point to data like your name. An example of this is my work-in-progress in-game map downloader for HaloMD, which involves allocating a 0x200 byte buffer to hold the downloading message outside of the region where Halo has its map loaded (this is the easiest way to allocate memory). I then change the pointer in the ustr string I want to change that's inside of the map data to point to this new data, instead.

To put it simple, I programmatically created a reflexive outside of the region of memory where Halo loads maps. As long as Halo has the data in memory and the pointer is correct, it's valid, regardless of if it's inside of the map or not.

Edited by 002
WaeV and NeX like this

Share this post


Link to post
Share on other sites

The presentation has already been recorded, but I expect they will be slow to upload it. I'll post the video link here once it's uploaded.

Five months later, Michael informs me that the video file of my talk has been corrupted. :|

 

Sorry, guys.

Share this post


Link to post
Share on other sites

Five months later, Michael informs me that the video file of my talk has been corrupted. :|

 

Sorry, guys.

 

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUUU

Edited by Mars
Kavawuvi likes this

KsqHutE.png

Share this post


Link to post
Share on other sites

Redo! Redo!

 

Just steal a few pictures from that "Post yourself" thread, stick them on cardboard cutouts and you'll have an audience to present to. Post video here when done.

Edited by Btcc22
Floofies, Takka, NeX and 1 other like this

Share this post


Link to post
Share on other sites
Sign in to follow this  
Followers 0
  • Recently Browsing   0 members

    No registered users viewing this page.