sigmmma / reclaimer Goto Github PK
View Code? Open in Web Editor NEWPython 3 library for modifying and creating Halo content based on the Supyr_Struct Library.
License: GNU General Public License v3.0
Python 3 library for modifying and creating Halo content based on the Supyr_Struct Library.
License: GNU General Public License v3.0
Guerilla is a filthy filthy tool.
It seems a few maps contain tags that have invalid values for the selected functions, likely caused by past HEK+ extraction. It just so happens these values don't cause the game to crash on Halo Custom Edition, but can crash other versions of the game. tool.exe does not check these either and will build the invalid tags into maps.
Here is an example; map [1] was used as a source for map [2], and in map [2] the tag characters/marine_armored/flashlight_marine.light
became corrupted.
[1]http://maps.halonet.net/maps/beryl.zip
[2]http://maps.halonet.net/maps/Beryl_Rescue.zip
I see no parsing of numbers anywhere in the material or compilation code. This is bad as it disallows the usage of shader permutations which can help people force different bitmap indices or have multi digit ammo counters.
I want to rework the material pipeline.
While we're on it, let's make it automatically calculate those on save.
I was not paying enough attention and merged this pull request without noticing that this except block catches every exception, including system exits and keyboard interrupts.
1300f44#diff-2623d84edf2dec38c01d5b01245f5a8bL183
This needs to be changed back to except Exception:
so keyboard interrupts and system exits still work properly.
Just a simple reminder for later:
https://github.com/nhoudelot/unlzx
Currently most(maybe all?) of the compilation pipelines will crash when trying to save a tag that was compiled from source files with non latin-1 characters in their filename. Use reclaimer.util.is_valid_ascii_name_str to determine and handle offending strings before they end up in the resulting tag. As latin-1 is an extended subset of ascii, that function will work how we need it to.
Recently we found out that the way we calculated vertex normals was incorrect. This probably means that binormals and tangents are incorrect too. We need to test our calculations against tool.
Hashing tags by their worthwhile data was intended to be a way to detect tags by their content when tag paths were destroyed. This concept was left unfinished and is made obsolete by Refinery's heuristic deprotection. Remove all traces of the hashing, such as these methods:
https://github.com/MosesofEgypt/reclaimer/blob/develop/hek/handler.py#L21
https://github.com/MosesofEgypt/reclaimer/blob/develop/hek/handler.py#L26
https://github.com/MosesofEgypt/reclaimer/blob/develop/hek/handler.py#L27
https://github.com/MosesofEgypt/reclaimer/blob/develop/hek/handler.py#L186
https://github.com/MosesofEgypt/reclaimer/blob/develop/hek/handler.py#L192
hek.handler has fps_60_related() which can't be removed until it is confirmed that nothing references it. Make it so nothing references it and get rid of it.
Implement OGG encoding using pyOGG. Make use of the example provided by Kavawuvi from his invader toolset: https://github.com/Kavawuvi/invader/blob/master/src/sound/sound_encoder_ogg_vorbis.cpp
Attempting to decompress any compressed animation will likely fail if it has scale data on high index nodes. This can be replicated by trying to decompress SPV3's cmt\characters\_shared\covenant\brute\brute_full.model_animations
tag
The issue is that the wrong value is being used for the index into the scale data. To fix it, replace this code here:
https://github.com/Sigmmma/reclaimer/blob/master/reclaimer/animation/serialization.py#L588
si += 1
scale_def = scale_def_data[ni]
with this code
scale_def = scale_def_data[si]
si += 1
I want to move a lot of this out of the map wrappers so it's more transparent to library users what gets changed. And so it's more manageable.
Check hek's HaloHandler for the get_def_id method that is used to determine the tag type.
Should be a good way to implement a full opensauce remover like os_tool has.
Sadly the one OS tool has while able to do recursive, will not accept certain tags as a starting point as the starting tag needs to have opensauce extensions. It also cannoy operate on a complete tags folder.
This should make way for a project wide change where instead of guessing the data dir based on the tags dir, or guessing the tags dir based on the data dir is abolished.
Currently model.model_compilation.compile_gbxmodel will ignore ALL errors that would make a gbxmodel have too many of certain tag blocks to properly serialize. It needs to be modified to NOT ignore errors where the number of certain tag blocks is too high to specify those by index where they need to be.
This means absolutely no more than 128 regions, 128 permutations per region, 32768 shaders/geometries, and 64 gbxmodel nodes(43 for models).
This is a small detail where if a sound tag is set to be 'not in map' the tag meta is still actually in the map, and that is what Halo uses. But the rawdata of the sounds is in the resource map.
Use Coldsnap as a test case sound\sfx\vehicles\warthog_7_engine
Expected values are on the left in the image.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.