A Community discussion forum for Halo Custom Edition, Halo 2 Vista, Portal and Halo Machinima

Home  Search Register  Login Member ListRecent Posts
  
 
»Forums Index »Halo Custom Edition (Bungie/Gearbox) »Halo CE General Discussion »[RELEASE] Mo's Editing Kit (MEK)

Page 1 of 2 Go to page: · [1] · 2 · Next
Author Topic: [RELEASE] Mo's Editing Kit (MEK) (47 messages, Page 1 of 2)
Moderators: Dennis

MosesofEgypt
Joined: Apr 3, 2013


Posted: Feb 23, 2017 07:08 PM    Msg. 1 of 47       
This is my collection of tools I've made for editing Halo. You guys wont find all of them useful, but many of them are. This will be updated whenever I commit changes, which means you guys can check in whenever to see if something is new. Here's a quick rundown of what each thing is as of the time of me writing this:

Convertor-Coll_to_Mod2:
Converts a directory of model_collision_geometry tags into gbxmodel tags so they can be imported into 3dsmax. The converter requires that you also provide the gbxmodel that the collision goes to, otherwise it wont be able to rig anything or position the nodes. It will try to locate a gbxmodel with the same name as the collision, but if it cant it'll ask you to select it. The converted model will have the same name as the gbxmodel, but with "_COLLISION" on the end.

For importing the model into max, it's best to use the gbxmodel importer that comes with the MEK(in the scripts folder) as it has some fixes and upgrades. Also, import the models with "attach parts within region" as unchecked. This way you wont get all the pieces lumped into one mesh. You'll need to weld together parts that use different materials in the same mesh, but that's fine.

Convertor-Mode_to_Mod2:
Converts a directory of xbox models to gbxmodels.

Convertor-Scex_to_Schi:
Converts a folder of shader_transparent_chicago_extended tags into shader_transparent_chicago tags. Doesnt have the ability to choose the directory like all the other applications, but that's mainly because this was actually my first app I ever wrote for editing Halo tags.

Halo_Animation_Fps_Changer:
Can convert a directory of animation tags from 30 fps to 60 fps, or from 60 to 30. In order to preserve the original animation, the new frame count is actually 1 less than double, so a 30 frame animation will be turned into a 59 frame one. Certain animations shouldn't have their animations changed though, such as aiming, suspension, talking, etc. There is a new flag titled "special overlay" in each animation to specify it as one of these special animations. Check that flag for each animation you do NOT want converted.

Converting an animation tag from 30 to 60 then back to 30 should give you the exact same animation, with some exceptions. There will be some miniscule floating point rounding errors from multiplying/dividing the dx/dy/dz/dyaw, and the frame indices(left/right foot, sound, loop, keyframe1, keyframe2) may be 1 less than they should be(they will never be negative though).

Currently compressed animations CAN be converted from 30 to 60, but not back to 30. This is because I don't fully understand the compressed animation structure, and my current way of converting to 60 invloves more or less doubling everything in the "frame numbers" list. That list specifies which frames of the animation are stored, so by doubling all of them I space apart when each frame is played, effectively doubling the animation length. Cool huh?

Halo_Tagset_Fps_Changer:
Can convert a directory of tags from 30 fps to 60 fps, or from 60 to 30. This differs from the above program in that this converts every tag type OTHER than animations(and scenarios, but more on that in a minute). Not all types of tags contain fps related variables though, so those that dont wont need to be converted. Any tags that dont contain any fps related fields(or those whose fps related fields are all zero) will be skipped. Scenarios contain fps related data, but most of it is stuff that has to be manually changed, such as recorded animations, scripts, and cutscenes.

My parsing libraries add a flag to the header of all tags which determines if the tag is 60fps. My tools use this flag to know if a tag needs to be converted to/from 60fps, so it is important. All my libraries will preserve that flag(and Mozzarilla will check/uncheck it based on whether or not 60fps is set in mozz when you save), but guerilla, sapien, and tool wont. This is why the "Do nothing except flag all tags as 30 or 60fps" checkbox exists. This will go through the specified directory of tags and set the flag to whatever mode the converter is set to convert to. This is so you can easily flag your manually converted tags as 60fps, or fix the flag if you accidentally opened a tag in tool/guerilla/sapien and saved it.

Halo_Bitmap_Optimizer_&_Converter:
You all know what this is. BUT you should know that I wrote accelerator modules in c, but they are distributed as source files that need to be compiled into binaries when you install the mek. If you dont have a certain version of the visual c++ compiler installed(depends on the version of python you're running) then it will default to the slow python functions. Follow these instructions to install the correct compiler if you're interested in getting that massive speed up(more than 100x faster)https://blog.ionelmc.ro/2014/12/21/compiling-python-extensions-on-windows/. After the compiler is installed, just run the upgrade.py script.

Halo_TeXource:
Capable of ripping the uncompressed source textures from a directory of tags to tga files.

Mozzarilla:
The highlight of the library, Mozzarilla is essentially a replacement Guerilla with some huge improvements. Just ask Masterz!
Here is a current list of the most prominent features of mozz:

  • Is able to switch between creating regular tags, open sauce tags, and gametypes.

  • Is able to view/edit hidden data(edit the config to enable it)

  • Is able to load corrupt tags for debugging purposes.

  • Can export/import blocks(pieces of a tag)

  • Makes backups of tags before editing.

  • Highly customizable user interface colors, widget sizes, hotkeys, etc.

  • Contains a customizable undo/redo feature.

  • Contains a hierarchy view for easily browsing a tags directory and loading tags.

  • Allows choosing any number of tags directories and switching between them at will.


Mozzarilla also contains a few special tools for aiding in modding:

  • Broken dependency scanner: For locating broken dependencies in the specified types of tags in the specified folder.

  • Dependency viewer: For easily seeing which tags a tag refers to and opening any of them.

  • Tag zipper: For making a zip folder containing a tag and every tag it depends on.



If you encounter a bug, send me the mozzarilla.log(if it creates one) and/or the startup_crash.log(if it creates one) and fully describe what

happened and what you did to cause it. We've been having some issues with it running on Windows 10(it works for R93 Sniper, but not Masterz),

but it seems to run fine on Windows 7, somewhat fine on Linux, and crashes on OSX.

Mozzarilla(console):
Same as the above, except it runs with a console window so you get a printout of errors if it crashes when starting up.

Refinery:
A new tag extractor that works for all types of Halo 1 maps and can extract open sauce tags. Read the refinery_readme.txt for more information.

Stubbs_Antr_Compiler:
Capable of compiling meta data extracted from a Stubbs the Zombie map into a working animation tag.

Stubbs_Mode_Compiler:
Capable of compiling meta data extracted from a Stubbs the Zombie map into a working model tag.

Stubbs_Soso_Compiler:
Capable of compiling meta data extracted from a Stubbs the Zombie map into a working open sauce shader_model tag.

These next ones you shouldnt even bother with for now. They're either unfinished or just little tests that I decided to keep around:

Halo_Meter_Extractor:
This is capable of extracting the bitmaps from all meter images in the tags folder to tga files. This was a test, so dont even bother with it.

Halo_Tag_Hash_Cacher:
This was to go with my tag ripper that I was working on. Dont even bother with it, it doesnt do anything right now.

Halo_Animation_Decompressor:
Decompresses compressed animations found in model_animation tags. This one isnt completely finished, as the decompression is screwy and I haven't figured out exactly what else needs to be done. Honestly, dont even bother with it.

The MEK also contains a scripts folder with any Maxscripts that I've made or modified. Currently there are Gbxmodel Importer and an Animation Importer scripts, which are both modified variants of TheGhost's scripts.

The model importer is now also capable of importing xbox models, and shader bugs found in previous versions as well as various crash related bugs have been fixed.

The animation importer can now import model_animiation_yelo tags, can use xbox models when prompted for a model, and has been fixed to work with tags containing more than 255 reflexives. This means you can finally open tags that have 256 or more animations.


DOWNLOAD
https://bitbucket.org/Moses_of_Egypt/mek/downloads/?tab=downloads

Click "Download repository" and extract the contents somewhere. Read the readme.txt for installation instructions.

Troubleshooting:

  • If the updater doesn't seem to actually update anything, then clear your pip cache. You can find it in users\app_data\pip\Cache
    See here for more information: http://stackoverflow.com/a/41111916


  • If programs wont run at all, add the version of python you installed to your PATH environment variable. Google how to do that.


  • If programs wont load or save tags then you have a permissions issue where python isnt being allowed to modify/make files in the directory you are in.

    One potential way to fix this is to locate your python installation, right click python.exe, and set it to run with administrator privileges. Do the same for pythonw.exe.

    Some users claim that this fix prevents their python programs from running at all, so if it does then undo that administrator change and change the folder permissions on the folder you are trying to edit tags in. It turns out that this is caused by certain versions of windows due to some of their security measures, like UAC.


  • If you changed config settings and now it wont load or stuff is too screwed up to use, delete the config. You can find it at PYTHON\Lib\site-packages\mozzarilla\mozzarilla.cfg where PYTHON is the location of your python installation. If you don't know where this is, you can find it in your PATH variable. If not, then go looking lol.


Edited by MosesofEgypt on May 31, 2017 at 09:57 PM
Edited by MosesofEgypt on May 31, 2017 at 09:58 PM


EmmanuelCD
Joined: Jan 7, 2015

Using fox avatar since 1893


Posted: Feb 23, 2017 08:39 PM    Msg. 2 of 47       
No Python needed?


MosesofEgypt
Joined: Apr 3, 2013


Posted: Feb 23, 2017 08:45 PM    Msg. 3 of 47       
Yes....
Edited by MosesofEgypt on Apr 18, 2017 at 02:41 PM


il Duce Primo
Joined: Apr 22, 2007

CMT Team Leader


Posted: Feb 23, 2017 08:52 PM    Msg. 4 of 47       
Quote: --- Original message by: MosesofEgypt

Stubbs_Antr_Compiler:
Capable of compiling meta data extracted from a Stubbs the Zombie map into a working animation tag.

Stubbs_Mode_Compiler:
Capable of compiling meta data extracted from a Stubbs the Zombie map into a working model tag.

Stubbs_Soso_Compiler:
Capable of compiling meta data extracted from a Stubbs the Zombie map into a working open sauce shader_model tag.

Edited by MosesofEgypt on Feb 23, 2017 at 07:16 PM


Sounds like something masterz would ask for


DaLode
Joined: Oct 4, 2014

Ho ho hooooly doodle!


Posted: Feb 24, 2017 12:52 AM    Msg. 5 of 47       
This is the year 2017 right.
Are people still hating on Masterz?

Nice tools Mo, could have been useful if I was still "active" in Halo CE mapping.


MosesofEgypt
Joined: Apr 3, 2013


Posted: Feb 24, 2017 01:13 AM    Msg. 6 of 47       
He actually did ask for them........


cippozzo
Joined: May 7, 2013

"I... I am a monument to all your sins."


Posted: Feb 26, 2017 02:57 PM    Msg. 7 of 47       
Quote: --- Original message by: MosesofEgypt
He actually did ask for them........

maybe they want NODE.JS

Moses I remember there are tools that builds native executables depe free out of python's code. A binary executable would avoid py's version related issues.


MosesofEgypt
Joined: Apr 3, 2013


Posted: Feb 26, 2017 03:02 PM    Msg. 8 of 47       
Yeah, but they're a pain to use and I don't know if they have issues going between systems. This also allows me to roll out updates easier and you're able to edit the program itself if you need to(like masterz is doing). There are more benefits to me keeping it in python than I'd get from compiling it into an executable.


not m00kz
Joined: Feb 21, 2017

are you pecking kidding me


Posted: Mar 8, 2017 05:15 PM    Msg. 9 of 47       
e: wrong thread.
Edited by not m00kz on Mar 8, 2017 at 05:17 PM


Halonimator
Joined: Dec 15, 2014

Halo5gsucks.com


Posted: Mar 8, 2017 09:27 PM    Msg. 10 of 47       
Quote: --- Original message by: not m00kz

e: wrong thread.
Edited by not m00kz on Mar 8, 2017 at 05:17 PM


Kys


Super Flanker
Joined: Oct 5, 2012

The length of your life depends on my aim.


Posted: Mar 9, 2017 03:15 PM    Msg. 11 of 47       
Quote: --- Original message by: not m00kz
Quote: --- Original message by: Halonimator
Kys


https://puu.sh/uyYbt/eee143c0c8.jpg


Why do the lamps have spines? And is that a pokemon toy on the window ledge???


not m00kz
Joined: Feb 21, 2017

are you pecking kidding me


Posted: Mar 9, 2017 10:21 PM    Msg. 12 of 47       
idk it's just some crazy British letsplayer


SOI_7
Joined: Mar 23, 2012

Tatsumaki best waifu


Posted: Mar 10, 2017 11:03 AM    Msg. 13 of 47       
Mr. Moses, you deserve money, cookies and girls


OrangeJuice
Joined: Jan 29, 2009

I laugh at people who put STUDIOS in their name.


Posted: Mar 12, 2017 12:31 PM    Msg. 14 of 47       
Doesn't work on linux xD hahahahahaaa ! !


MosesofEgypt
Joined: Apr 3, 2013


Posted: Mar 12, 2017 02:06 PM    Msg. 15 of 47       
Makes sense. The functions i wrote for working with filepaths convert to lowercase since some functions return different drive letter cases and i can't easily check if a tag has been indexed by a path if that crap occurs. Binilla should work tho, since that filepath stuff is mostly required by mozz

Edit: oh, do you mean the installer? Yeah, it prolly wont cause the install is done through supplying os commands. I dont have a linux machine to test my installer on to make sure i call the correct functions. Maybe later...
Edited by MosesofEgypt on Mar 12, 2017 at 02:09 PM


gruntfromhalo
Joined: Nov 21, 2007

actual loli


Posted: Mar 17, 2017 06:56 PM    Msg. 16 of 47       
hi where is the methyl ethyl ketone ???
:DDdD


Jesse
Joined: Jan 18, 2009

Discord: Jesse#4500


Posted: Mar 19, 2017 01:38 AM    Msg. 17 of 47       
Is DDS the only file type supported by the "Bitmap from DDS"?

I ask because DDS is generally a tricky file type for me (PS doesn't open them by default) and I like using TIF files.


SBB_Michelle
Joined: Nov 4, 2015

Dumb, sometimes..


Posted: Mar 19, 2017 01:40 AM    Msg. 18 of 47       
Download nvidia's photoshop plugin for dds compat. https://developer.nvidia.com/nvidia-texture-tools-adobe-photoshop


Super Flanker
Joined: Oct 5, 2012

The length of your life depends on my aim.


Posted: Mar 19, 2017 05:46 AM    Msg. 19 of 47       
Quote: --- Original message by: SBB_Michelle
Download nvidia's photoshop plugin for dds compat. https://developer.nvidia.com/nvidia-texture-tools-adobe-photoshop


Yay! People are learning!


Isxz
Joined: Apr 14, 2013

MrChromed


Posted: Mar 20, 2017 09:28 AM    Msg. 20 of 47       
Some textures could be in a "RAW DDS" format, and maybe the nvidia tool could not open them. In that case, you can use the "Intel Texture Works Plugin" software for Photoshop CS6

https://software.intel.com/en-us/articles/intel-texture-works-plugin

The other option could be "Noesis", a software that can open hundreds of model, image, and animation formats.

http://richwhitehouse.com/index.php?content=inc_projects.php&filemirror=noesisv425.zip


Super Flanker
Joined: Oct 5, 2012

The length of your life depends on my aim.


Posted: Mar 20, 2017 11:36 AM    Msg. 21 of 47       
Mmhm noesis is actually awesome for porting game assets to other games.

There is a HUGE list of supported plugins for importing different file types and more are constantly being made by communites to support their own respective titles. (Python is the language methinks)

It does only export to .obj which isn't a particular problem for me but idk what you guys get upto when your kleenex runs out

Anyway tldr; if you want to extract something from say source download it from mrchromed's post and you are on your way.


R93_Sniper
Joined: Feb 13, 2011

When in Doubt, RUN!


Posted: Mar 20, 2017 05:27 PM    Msg. 22 of 47       
OG DXTBMP also did the trick back in the Halo Trial / Halo PC modding days


MosesofEgypt
Joined: Apr 3, 2013


Posted: Mar 21, 2017 03:48 PM    Msg. 23 of 47       
Added a tool for converting an entire directory of animation tags into 60 fps versions. The new tags will be named with a "60fps_" prefix, so dont worry about overwrites. You can also convert a 60 fps animation tag back to a 30 fps one. If you turn a 30 to a 60 and back to a 30, the animations will be exactly the same, save for some minuscule floating point rounding errors(file size will be the same too). All animation frame index values are also modified, so you dont need to worry about those either.

You'll need to do some prep work first though, by opening the animation tags in mozz. You'll need to check a new flag for which animations to NOT convert(special overlays such as suspension positions, talking, aiming, etc) as well as a flag for whether or not the velocity of the animations final frame is important(getting out of a vehicle, jumping, running, etc). In order to get a version of the animation tag definition with those flags you'll need to update the MEK by running the update.py script.

I'm not going to write other tools to automatically convert other tags to 60 fps, but this should take care of the biggest issue.

EDIT: This video is courtesy of Michelle
https://www.youtube.com/watch?v=j_ual-1wt2c
Edited by MosesofEgypt on Mar 21, 2017 at 03:53 PM


lolslayer
Joined: Mar 21, 2015

https://www.youtube.com/watch?v=uMHbAKvPJkU


Posted: Mar 21, 2017 06:47 PM    Msg. 24 of 47       
Quote: --- Original message by: MosesofEgypt

Added a tool for converting an entire directory of animation tags into 60 fps versions. The new tags will be named with a "60fps_" prefix, so dont worry about overwrites. You can also convert a 60 fps animation tag back to a 30 fps one. If you turn a 30 to a 60 and back to a 30, the animations will be exactly the same, save for some minuscule floating point rounding errors(file size will be the same too). All animation frame index values are also modified, so you dont need to worry about those either.

You'll need to do some prep work first though, by opening the animation tags in mozz. You'll need to check a new flag for which animations to NOT convert(special overlays such as suspension positions, talking, aiming, etc) as well as a flag for whether or not the velocity of the animations final frame is important(getting out of a vehicle, jumping, running, etc). In order to get a version of the animation tag definition with those flags you'll need to update the MEK by running the update.py script.

I'm not going to write other tools to automatically convert other tags to 60 fps, but this should take care of the biggest issue.

EDIT: This video is courtesy of Michelle
https://www.youtube.com/watch?v=j_ual-1wt2c
Edited by MosesofEgypt on Mar 21, 2017 at 03:53 PM


You're amazing!


MosesofEgypt
Joined: Apr 3, 2013


Posted: Mar 30, 2017 01:27 AM    Msg. 25 of 47       
Finished adding that flag to mozz. Now you can change whether or not you are working with 30 fps or 60 fps tags. Just open the config window and go into the mozzarilla section. In every tag, any fields that would be affected by gamespeed will be changed so that what you type in(and what is displayed to you) is multiplied by a certain scale when the tag is actually saved. This scale is different for many fields, but is always either 1/4, 1/2, 2, or 4(due to either cutting time in half, doubling it, or doing either of those, but squared).

tl;dr mozz now supports allowing you to easily make 60 fps tags without having to know what fields you need to multiply or divide and by how much.


DeadHamster
Joined: Jun 8, 2014


Posted: Mar 30, 2017 07:18 PM    Msg. 26 of 47       
Does super_guerilla still do that thing, where if I use the scroll wheel while selecting a "drop-down box", it swaps through the options in that box?


Because on more than one occasion I've butchered a tag trying to scroll to the bottom of it. I use the mouse wheel to scroll downwards, at some point my mouse hovers over a dropdown box, and then I change that box by accident by continuing to scroll. Very frustrating, I now have to make certain to position the mouse off to the left so I don't break my tagset and not know where I made the mistake.

That needs to be fixed. You should only allow the value of a dropdown to be changed if that dropdown is currently selected. I click the dropdown, it highlights that I've selected it, then I scroll to select an option within it. That's how stock Guerilla handled it.

If it has been fixed cool deal man, gonna redownload.


MosesofEgypt
Joined: Apr 3, 2013


Posted: Mar 30, 2017 08:22 PM    Msg. 27 of 47       
I'm sorry to hear that, because that's something I intentionally included. I liked the ability to just scroll through something without having to click it since it requires one click to select and another to close the dropdown menu. I guess I can add a flag to the config to enable/disable that feature. Sorry it's caused issues for you.


EDIT: You guys really need to report these kinds of things to me so I can do something about them. You're the first person to tell me that this was a problem for you. I'm working on the fix right now, but idk when I'll have it ready.
Edited by MosesofEgypt on Mar 30, 2017 at 10:53 PM


DeadHamster
Joined: Jun 8, 2014


Posted: Mar 30, 2017 09:57 PM    Msg. 28 of 47       
The slight issue from having to be careful when scrolling is nothing compared to the benefits the program provides.

There's nothing to say sorry for though; If you could incorporate viewing bitmaps inside the program, I would never touch actual Guerilla again. The only time I open Guerilla now is to verify what bitmap a shader uses. That's huge, you wrote an app from the ground up that completely replaces a dev tool.


But yeah man, if you could add an option to the config it would be a huge benefit for me, even if it's only me that's had this issue.


MosesofEgypt
Joined: Apr 3, 2013


Posted: Mar 31, 2017 02:53 AM    Msg. 29 of 47       
That took way more effort than I feel it should have, but the new setting is implemented and I have actually managed to do it in a way I feel is clean. The setting "scroll_unselected_widgets" is off by default and can be found under "tag_window_flags" in the header. Due to the way tkinter works I cant make it so you can scroll a widget if you aren't hovering over it. Whether or not this setting is on is irrelevant if you aren't also hovering over the widget. I know guerilla allows you to scroll through things even if you aren't hovering over them, but I don't think I can make that work here without actually building a full fledged scrolling system(and I sure as crap aint gonna spend the time to do that).
Edited by MosesofEgypt on Apr 1, 2017 at 01:57 AM


DeadHamster
Joined: Jun 8, 2014


Posted: Mar 31, 2017 08:32 PM    Msg. 30 of 47       
Quote: --- Original message by: MosesofEgypt

That took way more effort than I feel it should have, but the new setting is implemented and I have actually managed to do it in a way I feel is clean. The setting "scroll_unselected_widgets" and is off by default, and can be found under "tag_window_flags" in the header. Due to the way tkinter works I cant make it so you can scroll a widget if you aren't hovering over it. Whether or not this setting is on is irrelevant if you aren't also hovering over the widget. I know guerilla allows you to scroll through things even if you aren't hovering over them, but I don't think I can make that work here without actually building a full fledged scrolling system(and I sure as crap aint gonna spend the time to do that).
Edited by MosesofEgypt on Mar 31, 2017 at 02:00 PM


Awesome man, that's been the only complaint I've had with it thus far.


MosesofEgypt
Joined: Apr 3, 2013


Posted: Apr 1, 2017 03:58 PM    Msg. 31 of 47       
Everyone should run the upgrade script, as I've found and fixed a decent number of bugs.

[2:58:19 PM] Moses: hotkeys not being unbound when changing them, the recent tags list
being overwritten when you close the config window, divider pane now saves its position
when closing mozz, added the ability to choose whether or not you can scroll through a
widget you aren't selecting, fixed the bug where your tags directories are shuffled when
you save the config, removed that crap where it always adds its own tags directory, etc
[2:59:52 PM] Moses: oh and i fixed some bugs with incorrect unit scales on some ijk
rotations and some struct definitions
[3:00:24 PM] Moses: like, all the object orientations in the scenario tags were in
radians, as well as the max bending angle in the antenna tag
[3:07:10 PM] Michelle: oke
[3:07:31 PM] Moses: o shi, found another bug relating to unit scales and max field values
>_>
[3:08:25 PM] Moses: if you have a field that has a max or min value(like when it's bounded
from 0 to 1) and you type something in that's outside that bounds, it's supposed to clip
to the largest or smallest allowed value
[3:08:52 PM] Moses: well it does, but what it actually puts in the box is the unscaled max
or min
[3:09:33 PM] Moses: max respawn time is 300 seconds in a gametype, but it's actually
stored in ticks. if i type 301 in it replaces it with 9000, which is the max value in
ticks >_>
[3:09:38 PM] Moses: should replace it with 300
[3:33:18 PM] Moses: okay, turns out that it's a bigger bug that just that. luckily, i
just finished fixing it
[3:33:35 PM] Moses: an exception was getting raised that i never saw....

Edited by MosesofEgypt on Apr 1, 2017 at 03:59 PM


Super Flanker
Joined: Oct 5, 2012

The length of your life depends on my aim.


Posted: Apr 1, 2017 05:57 PM    Msg. 32 of 47       
Will do! Also thanks again for putting your time and effort into this, helping out strangers you barely even know and just being keewl.


sparky
Joined: Jun 27, 2009


Posted: Apr 3, 2017 07:23 PM    Msg. 33 of 47       
Have you been wanting to do only your own reverse engineering work? We did talk about things like the tag header, and I mentioned those biped tag camera physics values, but...

...I found some problems with your reverse engineering and I suggest consulting my Zeus Retribution Library (retribution.h) file for my reverse engineering work. I would do a once-over on checking your work, however, I will leave this in your lap since it is your program and it is not open source. You have free use of my work because it is open source. (Take advantage of ZRL being free.)

The actor tag version is given as 1 but it is actually 2, resulting in this error when you open a Mozzilla-made tag in Guerilla:



Also, I do not agree with overwriting the CRC32 checksum value in the header with "Mozz" representing that a tag was edited with Mozzilla. Guerilla overwrites the entire header upon each file save, even its zero bytes. That will be overwritten, and besides, the HEK will not enjoy a tag that lacks a CRC32 checksum. My infernal framework has CRC32 generation already implemented, and you can grab it from the infernal project GitHub page. Note the credit given in its header file.

I do not know how compatible you want to make Mozzilla with the HEK.

You might also want to remove the ninth, non-existent "unknown" value towards the end of the biped tag. There are 8 metadata entries (32 bytes starting at offset 1288), and I'll give you a hint: when a biped tag is compiled, certain entries have a float value that is equal to sine 45.

Good luck, and nice work so far. (A moment ago was the first time I installed Python on Windows, and the installer didn't work with OS X because I didn't want to change the Python version link to use "python3". I think this was probably meant to run on Windows anyway...


MosesofEgypt
Joined: Apr 3, 2013


Posted: Apr 3, 2017 09:12 PM    Msg. 34 of 47       
Thanks for the heads up about the actor tag. Bugs happen though, so it's not like I don't always check my work. I have gone over my own code many MANY times, but it is constantly changing and always has the potential for bugs to be introduced. I don't have the time to do a comprehensive scan of all my libraries though. I've fixed the bug with the actor tag, and I've pushed the change. I also wrote some functions just now that recalculate the version number, blam fourCC, and the tag class fourCC when the tag is saved. This is so anyone who made an actor tag with mozz(or any other tag that I'll need to fix in the future) just has to open it in mozz again and save it to fix it.

Also, all of my work is(intended to be) open source. I forgot to include a license file with the MEK repository, but there is an MIT license in each of the libraries that the mek runs on; binilla, arbytmap, supyr_struct, reclaimer, and mozzarilla. I will be including a license with the mek from now on.

I'm well aware that all 64 bytes of the header are completely overwritten when a tag is saved with guerilla. However, I do not see the harm in overwriting the checksum. I have not seen it affect the tag being used in tool, sapien, or guerilla(nor has anyone reported it as an issue), so unless it serves some important purpose that I don't know about, I'm going to keep it like it is. It's just my way to know who made a tag with mozz.

About the biped struct, I remember us talking about it, but I never decided to research what they are. The reason there are 9 values in there is that I decided the last 2 might be SInt16's rather than a 4 byte value. I'm changing the struct definition to reflect what is in your code and putting credit to you for it in the source file. I'm also putting credit in the mozz comment, though I am also including my thoughts on the values. Let me know if I'm wrong, since I haven't tested my theory.


Thanks for taking a look at my project, and good luck with yours.

EDIT: I thought I'd show you something I discovered since I'm using some of your code; the correct algorithms needed to calculate the masses, densities, and the inertial matrices in the physics tag. I believe you should be able to figure it out from the python code here:
https://bitbucket.org/Moses_of_Egypt/reclaimer/src/default/hek/defs/objs/phys.py

I initially started using calculus to try and solve for the inertia of a point mass of radius r about an axis, but the integral was not solvable in elementary terms. Instead I decided to use dimensional reduction with experimental values typed into guerilla. Eventually I got it, and the values the algorithm spits out are the same as what guerilla does. I tried any edge and corner cases I could think of, but if you find something wrong with them I will be happy to fix it.
Edited by MosesofEgypt on Apr 4, 2017 at 12:46 AM


DeadHamster
Joined: Jun 8, 2014


Posted: Apr 4, 2017 12:56 AM    Msg. 35 of 47       
So I just downloaded the most recent version of your collection and neither the Mozzarilla app nor the MEK installer open.


Old version of Mozz is good. Any advice?

 
Page 1 of 2 Go to page: · [1] · 2 · Next

 
Previous Older Thread    Next newer Thread





Time: Wed June 28, 2017 11:55 AM 234 ms.
A Halo Maps Website