sparky has contributed to 1975 posts out of 467537 total posts
(.42%) in 3,379 days (.58 posts per day).
20 Most recent posts:
One last huzzah as I run for the hills. Keep in touch with me on my discord server if you want (https://discord.gg/mcEzrrv).
Tag definitions ripped from guerilla.exe.
Kornman said he did something like this for his Prometheus application. I see evidence of such in its source files.
Enjoy. All work done by myself, no one else helped, I figured it out on my own and did it on my own without any miscellaneous consultation among the community; evidence that I can proceed "on my own", as I intend to do. Included is the C source code for the extracthalotagdefs program, which takes one parameter -- a file path to guerilla.exe -- and prints out some pseudo-code definitions. You can modify extracthalotagdefs if you can decipher it and make it work to print out the definitions in any other format you desire.
Note that this is not a magic bullet; as I mention towards the top of the printout, these definitions do not represent on-disk or in-memory file structures. They do represent most or all of the relevant data available within the guerilla.exe bytes.
For continued updates on my other works, you'll have to join my discord. (If you can't, or if you were banned, get my work from someone else or do it yourself.)
Program source code (in C): https://pastebin.com/aS5pfGfx
And finally, one last video message to "the community": https://www.youtube.com/watch?v=AAIdsU41vdU
Good luck to you all. Be well. Sparky out.
Such a feature would be inappropriately complicated for the time it takes to change static pointers and overwrite apparently unused bytes in the .exe. And there would be no guarantee some random other thing wouldn't break in the attempt. In fact, I was just thinking about this on my own in my discord server. Since I don't use this wonderful forum anymore, I invite to you my less-wonderful discord server: https://discord.gg/mcEzrrv hope to see you there.
Your eternal destiny does not impact your current lack of access to files I manage.
I see that posting useful content here starts a flame war. Why? I'm not feeling very appreciated for my work. I'm not seeing the value of continuing to post useful content.
All I see is people trying to crucify me and infantile maturity levels. Perhaps I should do what the local police said and maybe stop using this web site. Never tell the truth to a pervert: they will do whatever they can to destroy you, your work, and all they think you might care about.
There is one thing that has been made clear to me in all of this time typing words onto this forum. No one here has the capability to know what that one thing is, and I am not going to tell you what it is.
Good for you. If that's how you roll, then go write a book. Maybe someone will buy it. Maybe it won't be highly specific to how you did it and maybe it will be easily updatable. Maybe it won't be horrible to search through and maybe it will be good if you want a quick answer and detailed documentation.
Maybe you like OpenGL Reference Manual, Fourth Edition, Addison Wesley.
Maybe you won't waste too much time before understanding that approach and medium are not equivalent. Maybe you will spend thousands of dollars to hear a professor from an expensive college tell you what I just said. But hey, if that's how you roll, good for you. Whatever your personal taste is, I'm sure you'll find just what the result of your taste can be, for better or worse. Maybe you won't look back and regret what you ignored. Maybe you will be happy with yourself before your life is demanded from you.
Maybe. Let's talk about personal preference and "maybe", all day long. Or I can leave the discussion table and go do what I do and leave all this behind because I see it for what it is: wasted time. Then you can benefit from, and criticize, both me and my work, and keep talking about your personal preferences to make more fodder for controversy and speculation and emotional imagination. I choose to ignore foofaraw. It's typically hard to search through and not good if you just want quick answers and detailed documentation. But then, I guess you're not a fan of such banter, either.
Interesting to see that someone has interpreted parts of the guerilla.exe in their own way.
I'm in the process of writing a console program to parse the tag definitions out of guerilla.exe and print them into source code. It's only for my use, and for the use of some people who asked to use it who are in my Discord server. I already did the work, it's a matter of comparing and checking against what is in guerilla.exe.
#define MEMREGION 0x400000 // subtract this from all pointer values to obtain file data offset
#define GUERILLA_DEFS_INDEX 0x5b8d88 // the actual file data offset start for mode tag
What you posted regards offset GUERILLA_DEFS_INDEX into guerilla.exe.
It is interesting how this web site and forum has rules against reverse-engineering, and yet all of the content was made in whole or part through some amount of reverse-engineering. It is literally breaking the EULA to modify a byte in the guerilla.exe file, so I guess the majority of this forum and web site contents should be deleted.
It's like making a rule to burn books. Papieren bitte!
enum datatypes type;
enum datatypes type;
enum datatypes type;
enum datatypes type;
uint32_t is_deep; // (has sub-arrays, sub-data, or dependencies)
uint32_t max_bytes; // with tag class, excludes 64 bytes of header
void* extra; // pointer to some extra data
struct entry_array* data_start;
Quote: "What shall I do, then, with Jesus who is called Christ?" Pilate asked.
They all answered, "Crucify him!"
"Why? What crime has he committed?" asked Pilate.
But they shouted all the louder, "Crucify him!"
Should I wait for the day when the members of this forum no longer consist of cowards? Or should I just say that those who sought to crush me underfoot will become dust under my feet, and they will be washed off as such? Perhaps I should point out the fact that you are more irresponsible and careless with few words than I am with many words, that "whoever can be trusted with very little can also be trusted with much; whoever is dishonest with little will also be dishonest with much," and so that this is all a poor investment of my words? Perhaps I should simply make software to use all by myself and share nothing with people who care only about boosting their own ego as inconsiderate, foolish, cruel narcissists. After all, it is people like this who cause the end of the world. And as a person who values justice, I find that very provocative.
My modified version of Guerilla, unlocks all fields, fixes bug with .weapon tag's magazine object block being max of 8 instead of 2, and adds a text box to script source files block in .scenario tag. No other changes.
You can compare the .exe file binary data in a file comparison tool to see what changes I made.
Note that I did not yet fix the issues with Guerilla crashing when you try to make an abstract tag type like .device, or when you type more than 8191 characters in a multi-line text field.
Enjoy. Let me know if there are any bug fixes or improvements I did not mention which you want me to apply.
Guerilla.exe runs on Mac using Wine Staging. You simply install Wine Staging and then you can open Guerilla.exe like on Windows and it works just fine.
Added more text blocks to interesting fields, enabled more interface elements, and changed the .spheroid tag to use a float value instead of 4 bytes of skipped/ignored padding. Other changes too, but I was unable to get certain tags like widget tags and tag_collection tags to enable their fields, and I didn't fix any interface problems like max text block size of 8191 characters and crashing when trying to make an inherited tag class like object, device, item, unit, and shader.
Edited by sparky on Aug 3, 2018 at 04:41 PM
I'm going to use this time to browse the executable's bytes. I'll do a video tutorial on how to read the structures. I want to take the time to go ahead and take all the tag file definitions directly from guerilla.exe to compare them to what I've already done.
This should help anyone with prospects of doing the same:
1) Guerilla.exe (and Kornman's version of Guerilla) both load Read/Write/Execute starting at address 0x400000 by default. If you open it in Cheat Engine and look at the Memory Regions window, you'll see that. Pointer addresses in the assembly are all going to take into account the fact that the .exe is in memory starting at 0x400000 (by default). So subtract 0x400000 from all pointers when looking at guerilla.exe in a hex editor and converting from pointer to file data offset. You don't have to do this if you are simply viewing the virtual memory of the application in Cheat Engine.
2) Make a new tag in Guerilla and search for a label string. Then search for a pointer to that string. That will take you to the metadata (struct element) definition for that entry. Here is a struct for metadata entries:
enum datatypes type;
int32_t array_size; // size of array of bytes, or 0
where "enum datatypes" is something like, according to my observations and as shown in guerilla's data:
3) There are also block definitions and data definitions, somewhat similar in structure. Here is what a block definition struct looks like:
bool is_extended; // whether it contains sub-arrays, sub-data, or dependencies
A data definition struct is similar, except that where you had "maximum_chunks" in the above, you have the maximum bytes number.
You can find a chunk definition address by making a tag in Guerilla and saving it to disk, then looking at the structure address therein. It will be something around 0x9C0000. For example, the actv .actor_variant colors block definition is at address 0x9c944c.
That should get you started with looking through the guerilla.exe data.
edited for spelling mistakes :B
Edited by sparky on Aug 3, 2018 at 02:37 AM
Add text fields to Guerilla:
Edited by sparky on Aug 3, 2018 at 02:45 PM
To "unlock" all the values like Kornman did with his version, all you have to do is look for the block strings that end with an asterisk (*) and replace the asterisk (0x2A) with a zero terminator byte (0x00). The simplest approach for doing this in bulk is to search the particular memory region for 0x2A00 and replace it with 0x0000.
I'm also working on fixing Guerilla to not crash with comment strings less than max length in its comment block in .scenario tag types. Kornman didn't fix that problem with his version.
All these improvements warrant my simply releasing a fixed version of Guerilla, which I'll see about doing once I've got them all applied on my end.
(for those of you who are not in my Discord server and didn't get the message there)
As you may know, Guerilla lets you add more than two magazines->magazines blocks in the .weapon tag type, which, if you inadvertently mis-click or make a mistake, can make you lose your work.
Here's how to fix that.
1) Open Guerilla.exe in a hex editor.
2) Go to offset 0x5D35D8.
3) Change from 0x08 to 0x02.
Result: Maximum of 2 magazines->magazines blocks, instead of 8. Adding more than 2 blocks crashes Guerilla.
Note that Kornman's version of Guerilla obfuscates the .exe data, so nothing on fixing that yet...
Later, I'll tell you how to "unlock" all the blocks, like Kornman did with his modified version of Guerilla.
@MosesofEgypt et al.
For more technical discussions, join my Discord server. (Why haven't you done this yet?)
How it looks when using the structures feature in Cheat Engine:
Edited by sparky on Aug 2, 2018 at 09:32 AM
bool is_extended; // whether it contains sub-arrays, sub-data, or dependencies
Edited by sparky on Aug 2, 2018 at 10:02 AM
Edited by sparky on Aug 2, 2018 at 10:46 AM
So lines 220-223 of https://bitbucket.org/Moses_of_Egypt/reclaimer/src/eb8ec9d238b688ef2c53644d947aaaf08f0b2cfd/hek/defs/coll.py?at=default&fileviewer=file-view-default should reflect the fact that the chunk size is 52, even though Guerilla doesn't let you see any chunks.
Edited by sparky on Aug 2, 2018 at 08:23 PM
Even Prometheus keeps track of that info ;) https://github.com/KornnerStudios/Prometheus/blob/master/Halo/Tags/Classes/model_collision_geometry.cs#L880
Edited by sparky on Aug 2, 2018 at 08:27 PM
Changing the number of chunks that Guerilla allows for that block from 0 to 1:
Edited by sparky on Aug 2, 2018 at 08:39 PM
This is why you should join my Discord server. Or if not, then look at the last post in this pinned topic on the Halo Maps Forum web site: http://forum.halomaps.org/index.cfm?page=topic&topicID=8579.
Halo Modding Complete Tutorial Series https://www.youtube.com/playlist?list=PLOLhzsHlG3Qr8R5AgI67kKB9HisblIkZS
How to Loop Music and Get It in Halo in 30 Minutes https://www.youtube.com/watch?v=Ssu6ohLSNLg&t=0s&index=161&list=PLOLhzsHlG3Qr8R5AgI67kKB9HisblIkZS
Extract sounds with Gravemind https://www.youtube.com/watch?v=HF39b-PZWwQ&index=83&list=PLOLhzsHlG3Qr8R5AgI67kKB9HisblIkZS&t=0s
5Misc.1 How to Convert Xbox ADPCM and WAV Sounds https://www.youtube.com/watch?v=29wjziL2Axg&index=80&list=PLOLhzsHlG3Qr8R5AgI67kKB9HisblIkZS&t=0s
Long Custom Sounds Tutorial (Halo: CE) https://www.youtube.com/watch?v=lOGvN85yuxk&index=22&list=PLOLhzsHlG3Qr8R5AgI67kKB9HisblIkZS&t=0s
Halo Sound Tutorial https://www.youtube.com/watch?v=zYfr21szEAw&index=21&list=PLOLhzsHlG3Qr8R5AgI67kKB9HisblIkZS&t=0s
1HEK.4 Halo Sound Conversion Tutorial https://www.youtube.com/watch?v=3D48ewWrk80&index=20&list=PLOLhzsHlG3Qr8R5AgI67kKB9HisblIkZS&t=0s
If you had used any of these links, you would have found what to do.
Edited by sparky on Aug 2, 2018 at 05:57 AM
I have spent about $20,000 USD on server hosting expenses, not to mention decades of my life, day and night. That's money, time, effort, creative thought, expertise, and so on, in the pursuit of doing nice things for the Halo communities, most people of whom have openly expressed hatred of me and have rejected me and verbally and emotionally and spiritually abused me. It has been all expense and no gain or reward, not even recognition, but only more mockery and disdain towards me. Perhaps my life would be so much better had I never tried to help or do anything good for the members of the Halo communities. And my simply asking that people be kind to each other is ignored like everything else I say to try to improve the community. I have been unemployed without income all this time. I could have used this time focusing on other things, like finding a job, getting some financial support for my future, socializing or making friends with the people around me, or any other "mature adult" activity, but no, I have foregone my 20's and some of my 30's to play an old computer game and relentlessly pursue a seemingly pointless agenda, all to help people who are mostly unfaithful and have long ago branded me rejected. Would you have what it takes to do and to continue doing the same?
I can't win approval either way. As if I cared about approval from a hypercritical narcissist. I post a paragraph, I get abused. I post a mere link to my hard work, I get abused. And this is my fault how? Yes. Blame the victim of your abusiveness. You have proven the reason why I stopped posting here. I gave warning of my leave and called for understanding. You slammed the door behind me. In short, you won't accept anything I write, unless you can steal it and claim it as your own. That's a problem with you, not with me. Get out of my face, follower. Lick my dust.
There is nothing wrong with making correct statements about Jesus Christ. If you want to know God, then listen to Jesus Christ.
You are filled with evil, and that is the diarrhea you vomit onto this web site. If you were not such a narcissist, maybe you could repent and gain understanding. As it is now, you hate the truth, and that is why I have nothing to say to you all, because you also hate me because I tell the truth. You are enslaved to arrogance, folly, and other kinds of evil. I am free from those things. This is the comparison between us that you want so much, but it is not in your favor, narcissist. Humble yourself and repent of your cruelty and wickedness, then maybe you can do something correct.
Do you remember what it feels like to rejoice at the success of others? It feels better than gloating at the ruin to which you led them. If you actually wanted to know the truth, you would gain education to know rather than give instigation to hate.
Quote: --- Original message by: R93_Sniper
Its sparky. He either goes on a rant about jesus or says nothing at all. If you were expecting helpful, you went to the wrong person
I will judge you by your own words, hypocrite. Your reply was a rant and unhelpful comment about me. Who gave you the right to be so abusive to others? You are a weed, and you do what your father of weeds does: abuse the good plants. Some day, you will be pulled up and thrown into the fire. If only you loved God more than yourself... but then, we would be on the same playing field. The reason I pray for your improvement is because God is good and you are evil. It's just that simple. You and your words are untrustworthy and cause grief, not progress.
The topic title is the description, il Duce. If you are interested, then download it and read its read-me file. If you are not interested, then do not download it nor read its read-me file. This is expected and obvious and the matter is self-explanatory... you can perceive this, yes? It's a dedicated server installation package. That means that you have the files and information necessary for hosting a Halo dedicated server. I posted the link here because there are people who requested it for Halo Custom Edition after I already made an equivalent item for Halo PC / HaloMD. If you want more information, that indicates that you are interested. So then download it and read its read-me file. If you do not want more information, then you are not interested, so go ahead and calmly move along.
I am not stopping you from hating me. Go ahead and hate me with all you've got. What is that to me? Stop sinning.
This message is for all of you who have treated others so badly over the years. The sooner you stop abusing each other, the sooner progress can begin. Your cold rudeness and disdain for good things is an impasse. You need help to get by this problem. You know who gives the help for all problems. Ease over the speed bump and be improved. Until then, you will leech and ruin instead of innovate and build. That's how the term "leechers" came about: people saw that both they and their work was being abused by brutal people who did not deserve what they took. Those kinds of people are quarantined into prisons. It is not enough to say "get along". You have had decades to "get along" and all you do is point fingers like Hitler pointed fingers at "the Jews". If you had known and adhered to God's Command, "do not cast blame; do not be angry with your brother in your heart; in your hearts do not think evil of each other," then you would not be in such a bad situation inside your heart. "The good man brings good things out of the good stored in his heart, and the evil man brings evil things out of the evil stored in his heart. Out of the overflow of the heart, the mouth speaks." But understanding of improvement is taken away from you by Satan, so that you will not believe and live forever. You have called friends enemies and enemies friends. That is why you destroy everything you touch and are ruled over by misery. Halo Maps Forum is not a community of saints, but if you want to know the truth of all reality and existence, and know what God wants you to know of all that is, listen to Jesus Christ. There is a saying that "That sound you hear is God laughing while you make plans." God does not "laugh" at the plans, because he says, "I do not delight in the death of anyone. Why should you die? Shouldn't you rather repent and live?" God's response is more like this:
...because you don't listen to him.
This is not preaching but a call to improvement so that this community can improve with you still a part of it. What do you want me to do, reject you like every other hypocrite rejects their fellow man? If you want to be banned, why do you still post here? If you wanted to be banned, you would have simply stopped posting here and moved on long ago. If you want good things, accept facts.
This is my final statement to you on this matter: be improved or go away. "Unless I wash you, you have no part in me."
Edited by sparky on Jul 25, 2018 at 01:19 PM
Since I was addressed and my reply apparently criticized before actually posting a reply, I'm going to actually reply to the first post. Otherwise, I would have merely sent you a private message, ghost901.
If you want "specifications", then you want projects like those upon which I have been working. But you asked specifically about Kornman's published work regarding SBSP tags. Here are some of his publications:
But I think that the interesting coding he's done is in the implementations, not the file format definitions.
File format definitions are what you're asking about, and that's my bag. If you want something like C structs, contact me via Discord and I'll maybe share some of my work with you privately. Nobody on these Halo forums wants to hear about my projects, so talk to me privately if you want to talk to me at all. Halo Maps Forum is not the place to share *actual* work, just to ask random "why isn't the game working" questions and post "complement me on my fancy proof-of-concept picture" topics. You won't find technically-minded critical thinkers here who are able and willing to knowledgeably engage in technical matters. It's not Wikipedia or an informational repository, it's a small forum of gamers, most of whom would sooner open their mouths to offload their narcissism than open their minds to intake understanding. The sieve is weak here, for weak minds. If you want useful things, talk to people who give useful information. Halo Maps Forum and other Halo forums are mere networking platforms, not information repositories. If you want food, look in the kitchen, not the front lawn. Looking for food there will only disappoint and the closest thing you'll find for food is maybe some grass and dead animals. I think I've made my point. Don't ask for something the addressee does not have. It's only going to trigger their narcissism and make them think you're being rude. All this to say that if I post a code block here with the info you want, from my own work, eyes will roll and it would be as obtuse as posting any other Halo-related source code here. It's simply not the place for it. But by all means, do post a finished work of whatever you're doing here as soon as it's "playable". The audience here wants to be entertained, not understand software design or computer programming. Because of this fact, I don't use this forum except to occasionally glance through what some Halo enthusiasts have chosen to do in their spare time. Another resource for that kind of information is halo.bungie.org's front page news. Now that I have clarified that point...
I use a halo_definitions.h file, which is based upon my retribution.h file, basically years of work. And I'm currently pursuing rendering of .scenario_structure_bsp data using OpenGL. I did a video and pics if you're interested. Here's a sample of wireframe view of the warthog run from "The Maw" (d40.map), the last level of Halo:
So you can see that I'm into the technical details of things, so send me a DM on Discord: sparky#0343.
But I think the best you'll get off of this forum is links to where you can actually find some information (which you already got by now) and maybe one or two offers to chat privately (one of which you now got). Answers to your questions, and actual source code (usable or otherwise), are found elsewhere. But don't assume that Kornman is the only person who has looked at guerilla.exe in a hex editor or disassembler and knows what a quaternion is.
Good luck with your unspecified project. I prefer doing things in C, and if you know C, then it would be possible for you to use my work. In other words, we can communicate in source code rather than an abundance of verbosity. And I think source code is exactly what you have asked for here.
Quote: --- Original message by: MosesofEgypt
(courtesy of sparky)
I did not make that image, but I thank you for whatever other credit you recognized.
Quote: --- Original message by: Halo Noob Modder117
Guys seriously, are all my Halo models broken?!
...My new question is though, why the hell are the default models that broken? How on Earth were these even put into the game in the first place?!
Edited by Halo Noob Modder117 on Jun 9, 2018 at 09:24 PM
I think the answer to all these questions is that the models are probably imported incorrectly by the model importation script you are using. GBX Model Importer is not necessarily perfect.
Nice, and right around the time when I was playing through Marathon again!
I already did the sounds a long time ago. You can use the tags if you want. Contact me on discord if you are interested.