MosesofEgypt has contributed to 353 posts out of 464615 total posts
(.08%) in 1,638 days (.22 posts per day).
20 Most recent posts:
First of all, you dont move tags around(unless you know what you're doing), as that is literally THE SOLE CAUSE of dependency issues(as well as deleting tags). You can move the scenario though(including OS ones I think). As for how you actually USE the tags to make a map, I can't find a good tutorial to explain, but I'm sure someone else here can. There's a steep learning curve before you can really start doing anything significant with this engine. Also, quick note, Mozzarilla has a broken dependency scanner in its tools section. Make sure your tags directory is correct before you run it, or it will report every dependency as broken.
Secondly, I'm working on some massive changes to Refinery right now, but they'll take maybe another week or so. A few of those changes involve making all tags rippable from yelo resource maps, which includes spv3. See, spv3 ships with a bitmaps.map, sounds.map, loc.map, -bitmaps.map, -sounds.map, -loc.map. The ones with a dash are the resource maps Refinery should actually be using, as they contain all the bitmaps/sounds/strings the SPv3 maps share.
Even if they are loaded properly though, there are certain tags in the loc.map that wouldnt rip properly because I set it to assume all additional tags in the loc.map would be unicode_string_list tags, but they aren't. I'm fixing that right now.
Also, somehow, some way, whatever compiled the maps managed to screw up some of the path strings slightly, causing Refinery to choke when trying to display them in a hierarchy view. What I mean is that some of the paths had double backslashes in them like this:
That's not a valid path, so even if refinery got around to extracting it, it would probably cause issues writing it to the disk. This is fixed now.
So yeah, just be patient and you'll be able to rip the rest of the tags soon enough. Also, these aren't the only changes I've been making. Refinery can now handle multiple maps open at once and you can switch between them and you can now sort tags by their path, pointer, or tag index id.
Edited by MosesofEgypt on Sep 21, 2017 at 02:59 PM
Quote: --- Original message by: rcghalohell
Refinery for the map, jms exporter for the scene, tool for the rest
You dont use refinery? Then what did you mean by that?
So it wasn't related to Refinery? I was lurking here in case you guys found a bug for me to fix.
Guys, cut this crap out. I dont want your personal feud developing here.
Edited by MosesofEgypt on Sep 9, 2017 at 02:22 PM
v1.0.6 is out. A few ui bugs have been fixed, but more importantly you can now add sound tags directly to the playlist without having to put them in a sound_looping tag. They will be treated as the loops of a sound_looping tag. Now go have some fun playing sound\dialog\chief\deathviolent.sound on infinite loop.
Refinery has been updated again with a fix that will enable it to properly extract shader_postprocess_generic tags(visr now works when recompiling b30_evolved)
Also, the MEK installer has been upgraded, so grab the new v1.3.0 from the mek repository. I've modified refinery and the installer so now the installer can update it without you guys having to re-download it from the MEK. You'll need to grab the modified Refinery.py and Mek_Installer.py from the MEK, but after that you'll only need to run the updater to get updates to Refinery.
Edited by MosesofEgypt on Sep 6, 2017 at 07:11 PM
No, I found the source code to the codec online licensed under GPL and modified is decoder function to work how i needed it to. Just look in the source, Composer is licensed under GPLv3
Refinery and my MEK tools in general have received a few updates. Any OGG sound tags saved with mozz before this might not work properly in sapien, but will be fine ingame. This update will fix that so mozz wont partially break sounds any more. FtdSpartan and I have deduced this has affected some of CMT's sounds, such as for some of the "ready" animations. I guess this is what happens when you're working with bleeding edge technology lol. Again, this only affected ogg sounds, and they'll still work fine ingame.
There are other changes as well, and Refinery is now capable of extracting open sauce maps in a mostly bug free state. Refinery is even capable of extracting CMT's The Silent Cartographer Evolved and having tool recompile it without any noticeable bugs. The only issue I've noticed is that something in the cmt/postprocess/gameplay/visr_nv causes the game to crash if the tag isn't nulled out, so I've still got work to do with it.
If you had previously encountered sound or animation related errors after extracting with Refinery, try it again after running the mek's updater. I've made some changes to Refinery itself(not just my Halo libraries), so you will need to re-download refinery from the mek. You can grab the MEK here:
Edited by MosesofEgypt on Sep 4, 2017 at 10:15 PM
v1.0.3 is out with some bug fixes. Currently trying to get a linux setup going so I can get it compiling for android. Has anyone actually tried this out?
V1.0.2 is out. Fixes the playlist and command list not being redrawn properly when you shift items in them around.
EDIT: And 20 minutes later I discover I made another bug from my 1.0.1 fix. Decided NOT to make a 1.0.3 since it was so close to the last one and instead just updated the binary and source on the repository. If you already downloaded 1.0.2, re-download it :p
Edited by MosesofEgypt on Aug 28, 2017 at 04:48 PM
That's a bit harsh PRPTaxi. You do realize that Python is heavily used in making web based applications, scientific research tools, and used for rapidly building applications for clients? When I worked at a call center around 4 years ago, one of the tools we used was a python program that acted as a layer between all the CLI tools they needed to manage. A place looking to hire me worked primarily in Java and Python, and what they did was make custom applications for their clients that did what the client needed.
This is that company: https://frogslayer.com/about-frogslayer/
Python is replacing Perl for those people who can afford to not use Perl. Seeing python as not "a real language" is ignorant and condescending. You might have been joking with your comment, but having used Python for more than 5 years, I have developed a love for the language and want to stand up for it.
Also, there is a v1.0.1 of Composer out. I fixed a little bug.
EDIT: Seems to be another bug. This time the shift buttons aren't working as they should.... I'll let you guys know when I've got a 1.0.2 out to fix this.
Edited by MosesofEgypt on Aug 28, 2017 at 03:21 PM
I wonder how long it'll be before someone rips all the unique tracks from each map, renames the sound_looping files to have meaningful names, and uploads the collection of tags.
GUESS WHAT GUYS I MADE A PROGRAM THAT DOESN'T REQUIRE PYTHON!!!!!
In all seriousness I think you guys will like this. I've spent about a month working on this.
NOTE: The download is actually for the entire repository(only ~2MB). If you only want the program and not the source code, just extract Composer_vX.X.X.exe and the readme.txt
I'm pasting the readme in here cause I'm lazy.
██████╗ ██████╗ ███╗ ███╗██████╗ ██████╗ ███████╗███████╗██████╗
██║ ██║ ██║██╔████╔██║██████╔╝██║ ██║███████╗█████╗ ██████╔╝
██║ ██║ ██║██║╚██╔╝██║██╔═══╝ ██║ ██║╚════██║██╔══╝ ██╔══██╗
╚██████╗╚██████╔╝██║ ╚═╝ ██║██║ ╚██████╔╝███████║███████╗██║ ██║
╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═════╝ ╚══════╝╚══════╝╚═╝ ╚═╝
What is Composer:
Composer is a music player that operates exclusively on the sound
and sound_looping files used in the "Halo" game series. Composer
is currently only capable of using Halo 1 sound and sound_looping
files, but there are plans to expand this to later Halo games.
Composer is also my first C++ program(and will be my first mobile
device program thanks to JUCE when I get it compiling for Android).
Why use Composer:
Halo's CD soundtrack is pretty amazing(which I recommend you buy),
but it isn't the same thing as the dynamic music you hear ingame.
A CD soundtrack is static(always the same content and length),
whereas video game BGM is usually designed to seamlessly loop an
infinite number of times until it needs to end. Halo goes a step
further by using permutations, skip fractions, and alternate loops.
Permutations keep things from getting too repetative by virtue of
being different variants of the loop that can be played in any order.
Skip fractions specify how often a permutation will be skipped if it
is about to be selected to be played(introduces randomness).
Alternate loops are just like loops(can have their own permutations
with their own skip fractions), and usually sound pretty similar to
the loops, except the game designers control when they are activated.
These are used for when the designers want the music to keep playing,
but need to to seamlessly change its feel(change from a tense version
of a track to a heart pounding one when you get into battle).
Composer allows you to listen to all the soundtracks as they would be
heard ingame, and allows you to customize playback using "commands".
You can specify how long to play a track, when to switch to alternate
permutations, which permutations to play(ignores skip fractions), how
many times to repeat a command, whether or not to play permutations
in a "normal" way(in ascending order and using skip fractions), etc.
This is the reason for Composer's name, you compose the music yourself.
Composer operates on the sound and sound_looping game files that
are used to make a Halo map. These files are called "tags", and
are a proprietary binary file format designed to work with Halo's
development tools as well as the game itself.
Composer does NOT come with any sound or sound_looping files,
nor is it capable of producing them. If you wish to listen to
music from the Halo games you must obtain the files yourself.
I will not provide the files, nor will I explain how to rip the
sound tags from Halo maps.
1: Make a folder to store your playlists(there should be an empty
"playlists" folder that came with Composer).
2: Make or locate your tags directory and put the sound_looping
and sound tags you want to play in it.
3: Run Composer.exe, go to the "Settings" panel, set the playlists
folder to the one you just created.
4: Click "New playlist" and then set its tags directory to the one
you just created or located.
5: You are ready to add tracks to play. Click "Save playlist" after
you are done editing it. This is the only way to save edits to
the playlist. The playlist that was last open when you exit
will be automatically opened when you run Composer again.
How to use Composer:
Once Composer is setup you are able to add tracks to the current
playlist and specify how to play them. The Playlist, Commands, and
Settings tabs are where you do all of these things and more.
Here is a breakdown of each tab and their widgets:
The Playlist tab is where you manage the tracks(sound_looping files)
in the playlist. The currently playing track will have an arrow off
to the left pointing to it. The currently SELECTED track will be
highlighted in white.
Aside from the "Add' button, all controls on the playlist tab will
affect the currently SELECTED track, not the track that is playing.
Adds a new track to the end of the playlist.
Removes the currently selected track from the playlist.
* Shift up
Shifts the currently selected track up by 1.
* Shift down
Shifts the currently selected track down by 1.
Loops back to the beginning when the last track is played.
Plays the tracks in a randomized order. Clicking this will
force "Loop" to be on as the playlist wont be read linearly.
* Track playtime
Number of seconds to play the currently selected track.
If set to zero, the track will play forever.
When a track is added to the playlist, this will default to
180 seconds(3 minutes). Max time is 1 hour(3600 seconds).
NOTE: To the left of the playtime slider is the number of
seconds the currently PLAYING track has played.
The Commands tab allows you to carefully tweak how the currently
PLAYING track will play. Double click a track in the playlist and
then click "Pause". The Commands tab will now be populated.
Adds a new command to the end of the command list.
Removes the currently selected command from the command list.
* Shift up
Shifts the currently selected command up by 1.
* Shift down
Shifts the currently selected command down by 1.
Allows you to tweak how the currently SELECTED command specifies
a permutation should be chosen. Also displays the permutation
currently being played in the section's left central box.
Play the alternate loops(if available).
Randomly choose a permutation from the available ones.
Play permutations in the way Halo normally would.
- Permutation to play
If "Any" and "Normal" are not selected, you can specify which
permutation to play with the plus and minus buttons.
* Loop count
Allows you to tweak how many times the currently SELECTED command
should be repeated. Also displays the current loop iteration in
the section's left central box.
Skip over executing this command.
Used to temporarily disable commands for testing.
Execute this command endlessly until the track ends.
- Number of loops
If Endless is not selected, you can specify how many times to
execute this command before going on to the next one.
The settings tab is where you can edit some of Composer's config
settings as well as fixing a playlist's tags directory location
if you want to transfer the playlist to another device.
* New playlist
Unloads the current playlist(doesnt save) and makes a new one.
* Load playlist
Unloads the current playlist(doesnt save) and loads one from a file.
* Save playlist
Asks you where to save the current playlist to and saves it there.
* Change tags directory
Allows you to set the tags directory of the currently loaded
playlist. Used mainly for transferring playlists between devices.
* Change playlists directory
Allows you to set the default directory for loading playlists from
and saving them to.
* If a sound_looping file references a sound that doesnt exist(or
cant be loaded), playback will end and Composer will proceed to
play the next available track.
* Sounds do NOT crossfade between normal and alternate sounds, even
if the sound_looping file specifies they should. This is due to how
the system for selecting samples works(It cannot predict the next
block of samples in advance). As such, this is more of a limitation
of the program than an outright bug.
* Be on the lookout for bugs invloving filepaths. This is my first real
C++ program, so I haven't done enough research into making/using proper
universal path manipulating functions in C++. I am sure something will
break at some point, but for now it works lol.
* If Composer wont load properly(or at all) delete composer_config.cfg and
try to open Composer again.
* If Composer says a track is missing, make sure the tags directory is
correct. If it is not, set it to where it should point to, save the
playlist, and re-open it.
* If a track isn't marked as missing, but wont play, check if the sound tags
it points to are in the tags directory with it where they should be. This
will require downloading and installing the Halo Editing Kit for PC to get
an editing tool called Guerilla to open the sound_looping file. Hopefully
you never have to try fixing this issue.
* Figure out how Halo 2 sounds are structured(gonna be giving Kornman00's
blamite another look) and incorporate reading them into Composer.
Why are you guys telling him to extract with bug ridden hek+, when refinery can(as far as we can tell) extract perfectly? Sure, installation is a little annoying, but come on y'all....
Well poop, can't do anything about that. Its saying it cant load the bitmaps.map as a memory mapped file. That is an issue with your system resources, and is causing both of those errors. Kinda weird though since a memory map doesnt actually copy the file into memory, but rather treats it like a paging file(the same way halo treats a map file as a section of ram).
I can't help you other than to point you here and say to maybe ease up on your system resources?
I was able to extract all but 2 of the tags by just renaming the -sounds.map, -loc.map, and -bitmaps.map to remove the dash. Refinery will use them as the default caches, which actually works out just fine it seems lol. I doubt those resource maps will actually work properly for non-spv3 maps though. If there isnt a bitmaps.map, sounds.map, and loc.map in the folder with the map you're trying to extract, refinery will ask you to select them, which you could do instead of renaming them.
Btw, the reason refinery couldn't extract those 2 is because it uses a hard-coded mapping to determine which promotion sound each sound tag points to in the sounds resource map. since cmt uses their own resource map, this mapping is wrong. I'm gonna push out an update to refinery to address a couple bugs, so grab it in about an hour from here: https://bitbucket.org/Moses_of_Egypt/mek/downloads/
Also, grab the new installer and run it when you do, as it works now and I'll be pushing out a small tweak to the reclaimer library.
Edited by MosesofEgypt on Aug 21, 2017 at 02:47 AM
You can use 7-zip to extract all the files from the installer executable(right click and open it with 7-zip). The files you extract with an extension like ".yumi"(I can't actually remember the extension and I'm not downloading the 4.6GB again) are actually zip files. Just rename them to .zip and extract them. Idk if this will allow you to actually properly install spv3, but I do know that I was able to get the maps and load them in refinery doing this. I actually extracted that 1500x1155 A8R8G8B8 error screen bitmap in the post above just to see what it was.
Edited by MosesofEgypt on Aug 19, 2017 at 10:00 PM
Actually it wasnt a bug with python, it was me not understanding that pip cant work with egg files, and that I'd have to upload them as wheel files. It's a stupid reason I know, but that's why. Also, it's not like python is required for JUST the updates, it's required for anything in the toolkit :p
Thanks. Also, I just tried another fix to the mek installer. Its current version is 1.2.3, and it is now set to automatically ignore cached versions of my libraries, so it will always try to fetch the newest version. Hopefully this FINALLY fixes the upgrade issues.
EDIT: Or not..... Now I gotta figure out what the heck is going on...
EDIT2: SCRATCH THAT I FIGURED IT OUT FINALLY!!!111!!! God was that annoying. Apparently pip doesnt like .egg files, so I have to upload updates now as .whl files. Jesus was that an annoying and unsatisfying reason for it not working.
Edited by MosesofEgypt on Aug 19, 2017 at 12:04 AM
I found and fixed a pretty serious bug with one of my libraries. This bug would manifest if you used "duplicate" on an array of reflexives and then edited something in that reflexive that relies on some neighboring data. The bug was that the duplicates were still using their original parent nodes as parents, rather than the new a cloned parent, so internal hierarchy was broken when seeking from leaf nodes toward the root. This made it so if a child node needed to set some data in its parent(like a reflexive describing how many entries it contains) it would set it in the original parent rather than the clone.
I know the above wont make much sense to most of you, but trust me that it's a pretty serious issue. The issue wont manifest under most conditions(I can't explain it here), but it can still cause tags to become corrupted in certain cases. Unless you've encountered it corrupting a tag yourself, it's highly unlikely that you have been making corrupted tags because of it(its so stupidly unlikely they'd load if they were corrupt).
The MEK installer's upgrade function SHOULD be fixed now. Dont forget to tick the "force reinstall" button before hitting upgrade.
If it doesn't say it downloaded and installed at least supyr_struct 0.9.15, you might need to download and install it manually. I have explained why this might occur before and how to manually install, so I'm going to copy+paste that below:
Quote: This issue seems to be occurring for lots of people for some reason, so I figured it's time to tell everyone what's going on and how to manually fix this.
Python has a package manager called Pip, and the MEK_Installer calls on it to look for the packages that my library depends on. For some reason(I think it might be due to a version naming convention), Pip is using an old version of some of the libraries, even when there are new versions available. Pip's job is more or less to find those packages, download them, and install them to python's site-packages folder so python apps can find and use them.
Here are steps to manually download the newest versions and install them. It's not hard or complicated.
1: Locate your python installation folder and in it go to "Lib\site-packages\"(mine is "C:\Python35\Lib\site-packages"). If you've already run the MEK_Installer and it completed you should see at least these 4 folders in there: binilla, mozzarilla, reclaimer, supyr_struct.
2: Delete those 4 folders and any folders that look like them, but with a bunch of other crap on the end(like binilla-2017.4.17.dist-info)
3: Download the most up to date versions of each of those 4 from my Bitbucket repositories:
Supyr Struct: https://bitbucket.org/Moses_of_Egypt/supyr_struct/downloads/
4: Unzip them to the site-packages folder and make sure to rename them to binilla, mozzarilla, reclaimer, and supyr_struct.
Edited by MosesofEgypt on Aug 15, 2017 at 02:21 PM