PDA

View Full Version : [APP] OpenSauce Halo CE SDK Update #2 (RC)



Pages : 1 [2] 3

Rambo
January 8th, 2010, 07:31 PM
OK, OK... I thought ya meant home from work or something.

ShadowSpartan
January 8th, 2010, 07:38 PM
For example, if on BSP 0 I have 64 Lightmaps as well as on BSP 1, I want to be able to say to the program, "OK check what BSP it's on from the BSP Sets and then switch the Lightmap to such-and-such Lightmap." That's it. I also want to switch BSP when necessary from the BSP Sets without affecting the main BSPs in the .scenario tag.
As I've said before, and you have seemed to ignore, what makes you think changing the lightmap tag reference in real time will automatically update the lightmaps on the bsp? I fail to see why that tag reference would be monitored by the engine for changes, so I highly doubt it is as simple as changing that tag reference.

If you would have bothered to look above at FireScythe and Kornman's posts, you would see that there is apparently something wrong with the script functions in this OS release. That means this might not be possible even if you do figure out how to swap the lightmaps out in real time and find a competent programmer (read: not dwood).

One last thing, not trying to be a backseat moderator, but shouldn't your conversation between each other be kept to private messages rather than cluttering up this thread with useless posts.


In the coming months I'll be updating the Kornner website with publications and works that I've been meaning to put up. Some of which will be related to this and/or Halo. Other stuff will just be generic to the Xbox platforms or other engineering stuff. Some people may find the works interesting.

Goal is to have the site at v3.0 at the end of May/start of June. As things get posted there I'll be sure to update threads here if they relate.
Looking forward to it. :)

Rambo
January 12th, 2010, 12:10 AM
OK so Dwood sent me a test version of the lightmap thing. No matter what I compile in OS_Sapien, it crashes. Can someone tell me what the progress is on the fix for this issue and how close we are to an RC2 that works?

Dwood
January 13th, 2010, 06:53 AM
Just wait until Korn fixes the script problem.

Rambo
January 13th, 2010, 06:02 PM
ok. I hope that happens fairly soon because i really wanna make something beautiful with the new Open Sauce that isn't over-bloated.

il Duce Primo
January 13th, 2010, 08:47 PM
How do you plan on fitting atleast 100mb of bitmaps holding that lightmap data into a multiplayer map. Does open sauce allow to get through that map size limit?

Rambo
January 15th, 2010, 06:56 PM
I'm not 100% sure, but if you build with the build-cache-file-ext thing it might.

Dwood
January 15th, 2010, 07:06 PM
OS increases all(?) max limits by 50%... Not sure if that means we have to use the build-cache-file-ex exclusively or if build-cache-file will work... ergo if you go over the max you may have to have OS to play... But then again, 32 bsps works in Halo when compiled by OS tools but without the OS .dll

Dwood
January 15th, 2010, 10:53 PM
Oh btw in appetizer korn you forgot to include gamestate.hpp

Kornman00
January 16th, 2010, 08:03 AM
struct s_game_options
{
UNKNOWN_TYPE(int16);
UNKNOWN_TYPE(int16); // ?, not sure about this field
UNKNOWN_TYPE(int16); // ?, not sure about this field
_enum difficulty_level;
int32 random_seed;
char map_name[0x7F+1];
byte unknown[0x7F+1]; // pretty sure this is just an unused string
}; BOOST_STATIC_ASSERT( sizeof(s_game_options) == 0x10C );

struct s_game_globals
{
bool map_loaded;
bool active;
bool players_are_double_speed;
UNKNOWN_TYPE(bool);
UNKNOWN_TYPE(real);
s_game_options options;
}; BOOST_STATIC_ASSERT( sizeof(s_game_globals) == 0x114 );
s_game_globals* GameGlobals();

Kornman00
January 16th, 2010, 12:08 PM
If sapien is trying to run your scripts which have OS-based additions, then of course it's going to crash; there are no functionality definitions to them. Turn "run_game_scripts" or w/e the global is called to false.

Have no means of testing any updates to OS_Sapien right now, I don't know when the final release will be.

Dwood
January 16th, 2010, 06:15 PM
I know you can't test an update like this but-

Would you be willing to do a quick update to bring OS_Toolbeta and OS_Sapienbeta's maximum global limit up to Open Sauce's default max...?

Kornman00
January 16th, 2010, 06:50 PM
The tools and the engine module both use the same shared memory upgrades header, so they're both in sync. The tools wouldn't be telling you to increase the maximum globals when they're added via cheape...

Dwood
January 16th, 2010, 08:16 PM
Sorry i read the debug wrong, number of tagfieldtypes is giving an exception. typing this on my phone but here goes: fields[field_index].type>=0 && fields[field_index].type<NUMBER_OF_TAG_FIELD_TYPES

CodeBrain
January 16th, 2010, 11:16 PM
I know this seems obvious, and forgive me for saying this (to all programmers), but I think I can explain the error.

fields, which is a specific type, has an index, field_index that is greater than or equal to 0. And the above is also less than the number of tag field types.

From my perspective, it sounds like you have altered the field_index, but have not changed the number of tag field types to accommodate the new field_index.

If this is wrong, please forgive me, I am a "computing noob" at this XD

Dwood
January 16th, 2010, 11:32 PM
Im just adding globals via xml in che Ape... I havent modified the tools at all. And also i know this is small but ive managed to properly add my own timer option to the os menu! doesnt do any timing... yet, however. :P

CodeBrain
January 17th, 2010, 03:32 AM
IIRC adding globals changes the field_index because globals are counted as fields...

What I mean is like "global boolean test" has a value of 1 or 0, which makes it a field type.

Unless that is not the case, I believe that is the problem then.

Kornman00
January 17th, 2010, 07:54 AM
Sorry i read the debug wrong, number of tagfieldtypes is giving an exception. typing this on my phone but here goes: fields[field_index].type>=0 && fields[field_index].type<NUMBER_OF_TAG_FIELD_TYPES
You need to debug the tag groups you've added via cheape. One of them it would seem has a fucked up field type. This isn't anything related to scripting at all, hence the words "TAG_FIELD".

just remove all non-stock tag groups from your cheape built tag_groups.map file and continue with your scripting additions

Dwood
January 17th, 2010, 03:34 PM
Apparently scythe is having a problem, too. check my profile page as im still posting from my phone.

Dwood
January 18th, 2010, 09:25 PM
Yes i know this is nub but i feel it necessary to announce that i have managed successfully to add my own menu independent of the stock menu... makes me happy because now i understand more key cpp concepts, datatypes, and how enums work. Thats some strong coding there, korn... now i understand why you coded the way you did... kinda lol.

arbiter901
January 18th, 2010, 10:53 PM
Yes i know this is nub but i feel it necessary to announce that i have managed successfully to add my own menu independent of the stock menu... makes me happy because now i understand more key cpp concepts, datatypes, and how enums work. Thats some strong coding there, korn... now i understand why you coded the way you did... kinda lol.

http://www.xandar.net/images/HarveyBirdman-BearClap.gif

Dwood
January 21st, 2010, 10:30 PM
Yeah korn there is def something wrong in os sapien and tool etc because there is nothing wrong with my xml and it wont accept more than 15 globals.

Kornman00
January 22nd, 2010, 12:46 AM
Yeah there is one part of the hs initializing process which I forgot to fix-up it would seem...

but I remember noting that I needed to fix said area. heh, guess it wasn't a good note.

For the time being I guess you'll just have to really ask yourself if each of those globals are really needed. There are the globals f0 to f5 in the engine already after all.

Dwood
January 22nd, 2010, 09:20 AM
Lol. :P I can make do for now.

Kornman00
January 22nd, 2010, 10:11 AM
Yeah, sorry about that :x. Thankfully this is just a RC right, heh. Then there is that goddamn issue with script functions...

WTF

I really wish I could test new builds :|. Actually, I really wish I didn't have a laptop as a main development machine...

Dwood
January 22nd, 2010, 11:41 AM
LOL. yeah there may also be another problem with the globals but i need to confirm it.

Kornman00
January 30th, 2010, 12:10 AM
I've added code to address the limited custom hs globals problem. I'll try to get someone to test it between now and monday


Keep in mind that globals\functions added via CheApe are STUBS. They can't do anything in the tools besides satisfy the compiler. No one should actually be trying to run scripts with their custom globals\functions

Kornman00
January 30th, 2010, 12:25 AM
Oh and I also think I know what's wrong with Halo1_CE's script function shit.

In 'InitializeCreateScriptFunction' I set the function table pointer in the template code to the engine's function table, not OS's upgraded table.

Changing the following code to:


static uint32 hs_function_table_address = //CAST_PTR(uint32, hs_function_table);
CAST_PTR(uint32, &_upgrade_globals.functions.table[0]);


should possibly make it work finally

e:
and be sure the following code is changed too:


void InitializeLibrary()
{
//GET_HS_FUNCTION(null).evaluate = (hs_evaluate_proc)GET_FUNC_VPTR(HS_NULL_EVALUTE);
//////////////////////////////////////////////////////////////////////////
MemoryUpgradesInitialize();
InitializeCreateScriptFunction();
//////////////////////////////////////////////////////////////////////////
// Come back later please...under construction

FireScythe
January 30th, 2010, 09:38 AM
Looks like you've hit the nail on the head there :neckbeard:. I've had 4 functions playing together nicely. Did notice that when getting arguments the variables are aligned to 4 bytes so some padding is needed after variables that are less than that.

Kornman00
January 30th, 2010, 09:47 AM
Yeah, thinking back now I remember testing the CreateScriptFunction back when I was still replacing existing script functions, not actually upgrading the memory. heh ;x.

Yeah, the way it works is that I pass the arguments list pointer from the hs_thread's stack to the evalution function. It's all 32-bit aligned.


void* example_evalute(void** arguments)
{
struct s_arguments {
cstring str;
int32 i;
bool b;
PAD24;
}* args = CAST_PTR(s_arguments*, arguments);

return NULL;
}

Dwood
January 30th, 2010, 10:30 AM
This is awesome Korn. Now I'll need to find out how to switch the lightmap references to bsps that are loaded in memory.

Edit: For some reason when pressing tab in console or typing in a command and pressing enter, Halo exceptions. This has never happened before.... I'm testing to be sure 100% these are those changes but I think it's the PP not playing well with non-pp versions...

E: yeah korn your fix makes Halo Crash when pressing tab in console or pressing enter. I'll double check with scythe first tho

Ok my problem was that I was calling the same two functions in Halo twice.

Rambo
January 31st, 2010, 07:58 PM
Thanks so much for looking into the Lightmaps thing, Dwood. I wish ya luck. Any progress? Either E-Mail or PM me or...you can announce it here too.

Choking Victim
February 1st, 2010, 10:14 AM
I don't know if anyone's said this yet, but I found an issue with one of your block maxcount increases Korn. When trying to compile more than 256 animations, tool simply ignores anything over the 256 limit. In retrospect, this makes the block increase useless. I had the same problem when fiddling with the tools.

Kornman00
February 1st, 2010, 10:40 AM
importing animations or building a cache with said animation?

Hunter
February 1st, 2010, 10:56 AM
This is a long thread and it has been asked before, but I don't want to read all the pages. And you have said before Kon that it wont be added.

But, have you allowed bump maps to be applied to objects apart from level geometry? I am hoping you have but doubt it.

Choking Victim
February 1st, 2010, 11:25 AM
importing animations or building a cache with said animation?
importing animations.

Dwood
February 1st, 2010, 11:35 AM
This is a long thread and it has been asked before, but I don't want to read all the pages. And you have said before Kon that it wont be added.

But, have you allowed bump maps to be applied to objects apart from level geometry? I am hoping you have but doubt it.

I can tell you it wont happen without the source of halo.

Rambo
February 1st, 2010, 11:48 AM
Hey Dwood. Do ya have anything in game with the lightmap switching command yet? I know we may not be able to compile scripts with the functions, but if we can get it working successfully, I can film it working and maybe convince Korn to fix Sapien.

ShadowSpartan
February 1st, 2010, 12:13 PM
Hey Dwood. Do ya have anything in game with the lightmap switching command yet?
I'm tempted to do a quick memory change just to prove to you it's not as simple as you are thinking it is.


I know we may not be able to compile scripts with the functions, but if we can get it working successfully, I can film it working and maybe convince Korn to fix Sapien.
What is wrong with Sapien?

Rambo
February 1st, 2010, 01:22 PM
How can you be so oblivious? people have stated why in posts prior to this, but I'll state it again.

Whenever compiling script functions in Sapien (not globals), it crashes if you use Open Sauced functions, even if the XML code is properly coded and compiled into a tag_groups.map file! Kornman is now becoming more and more aware of the causal source of the troubles; however, he needs a testing platform for his updated builds of the closed-source Open Sauce Sapien if we are to proceed with a poroper update to the HEK side of OS.

I am offering him right now a chance to use me as a betatester for this, as I will be using the script functions in conjunction with Dwood's work on Lightmap switching, as a testing grounds for fixing this nasty bug.

Kornman00, if you're up for it, either PM me or reply here if you wish to use me as a betatester for OS upgrades to the internal HEK parts. I'm here to help and I script often enough to want to try new things with the HEK. I want to help provide a PC for you to test builds on so you don't have to complain anymore about not having a suitable environment to test on. I have Halo CE and the HEK installed.

ShadowSpartan
February 1st, 2010, 01:34 PM
How can you be so oblivious? people have stated why in posts prior to this, but I'll state it again.

Whenever compiling script functions in Sapien (not globals), it crashes if you use Open Sauced functions, even if the XML code is properly coded and compiled into a tag_groups.map file! Kornman is now becoming more and more aware of the causal source of the troubles; however, he needs a testing platform for his updated builds of the closed-source Open Sauce Sapien if we are to proceed with a poroper update to the HEK side of OS.
Excuse me, but you are the one who obviously cannot pay attention to the thread. Go read this post (http://www.modacity.net/forums/showpost.php?p=512807&postcount=277). There is nothing wrong with Sapien, you should not be running the custom script functions. They are only displayed in Sapien so that you can actually compile the custom script functions/globals into the map with no problems, not actually run them. They are stubs, so they have no code associated with them, and therefore cannot be run within Sapien and makes the application crash.


I am offering him right now a chance to use me as a betatester for this, as I will be using the script functions in conjunction with Dwood's work on Lightmap switching, as a testing grounds for fixing this nasty bug.
Not a bug.


Kornman00, if you're up for it, either PM me or reply here if you wish to use me as a betatester for OS upgrades to the internal HEK parts. I'm here to help and I script often enough to want to try new things with the HEK. I want to help provide a PC for you to test builds on so you don't have to complain anymore about not having a suitable environment to test on. I have Halo CE and the HEK installed.
I'm sure he has people already that can help him test OS builds.

Dwood
February 1st, 2010, 01:51 PM
That's because, Rambo, as Korn said, the scripts in Sapien are stubs and are only there to make it compile. Just adding the scripts via xml tell Tool and Sapien that it passes the/a syntax test.

@Spartan, I have an idea for a way of doing it that requires 2 bsps so the problem is a non-issue. (switch the lightmap reference on the unloaded bsp)

E: My problem is figuring out the rest of it because I'm nub lol.

Choking Victim
February 1st, 2010, 02:54 PM
I am offering him right now a chance to use me as a betatester for this
For only 3 easy payments of $19.95.

You aren't doing him any favors by asking to beta. You say it like it's a privilege.

Rambo
February 1st, 2010, 03:01 PM
First of all, I never said i was trying to run scripts in Sapien. I merely stated I was trying to compile them when Sapien would crash during the compilation process.

Secondly, I merely offered my services. I was, in no way, shape, or form, trying to butt in on Korn's affairs. He said he lacked testing equipment, well here's an offer to supply some at a remote site. All i wanna do is help, that's it, and you guys jump down my throat like I'm the bad guy.

Hunter
February 1st, 2010, 04:21 PM
I can tell you it wont happen without the source of halo.

http://www.modacity.net/forums/styles/smilies/extra/smithicide.gif

Rambo
February 2nd, 2010, 10:23 AM
Now I have a big problem. When I go to run OS_Sapienbeta or OS_Guerilla beta, it waits for a few seconds as it usually does, but then, rather than opening like it aught to, it crashes saying the program stopped running.

I am running Windows vista and had no trouble prior to installing Windows Live Essentials. Some stuff got installed that i didn't want installed and some of it I cannot remove now (Windows sync Framework) and stuff like that.

I uninstalled Windows Security Essentials, thinking that was the culpret, then uninstalled Windows Live Essentials. Basically, without doing a full system restore back to a week ago or so, I did a "quick" rollback by removing programs I used recently, and it still crashe! Any help or suggestions on a quick fix?

FireScythe
February 2nd, 2010, 10:50 AM
Sounds like your tag_groups.map is messed up. If your creating it yourself with cheApe, check your XML is kosher and create a new one. You should also check debug.log (not txt) for cheApe errors that may indicate a problem with your XML.

Kalub
February 2nd, 2010, 10:53 AM
Hey Rambo, guess what... lightmap switching won't work like you think it will.

Rambo
February 2nd, 2010, 11:00 AM
Sounds like your tag_groups.map is messed up. If your creating it yourself with cheApe, check your XML is kosher and create a new one. You should also check debug.log (not txt) for cheApe errors that may indicate a problem with your XML.
Nope, that wasn't it, FireScythe. I did a system restore back to 1/31/2010 and that fixed the problem. Also, I know for a fact it's not my tag_groups.map because I deleted it, which makes OS run like regular Guerilla, and it still bombed.

Musta' been something the system ate when I installed Live.

Also, regarding Lightmaps, do you have proof that it won't work, as in a video showing an attempt to make it happen and it failing? If not, then I'm not too concerned until something comes up.

Kornman00
February 2nd, 2010, 11:15 AM
What about OS_tool? Does it bomb too?

If the OS side of the tools aren't loading (due to tag_groups.map not being present) then it's more than likely due to a program install or a system change (probably stemming from said program being installed). All program clashes I've ever seen with the packaging tools I use (which I used with the OS HEK) were just DLL conflicts, not actual crashes.

Just post the Exception details, that's the only method of debugging

In other news, my room mate is blowing up the bathroom. Good thing I have a gas mask...

Rambo
February 2nd, 2010, 01:52 PM
Wish i could. There is no exception data to post, unless ya mean the debug.log file. The program used to crash until I did a system restore. I even got rid of CE and reinstalled it, thinking that would help fix it, so it's working fine now. It was definitely something that Live Essentials installed.

I saw stuff like Visual Studio Runtime files, Sync Runtime, and a bunch of other crap that was installed.

Edit: No, OS_Tool didn't exception. It ran just fine.

Kornman00
February 2nd, 2010, 02:54 PM
Wish i could. There is no exception data to post, unless ya mean the debug.log file.
Vista has a "Errors and Reports" section (or something to that name) in the control panel. If there was a problem inside the tools themselves, they would have entries in that. Unless the restore cleared the data.

Rambo
February 2nd, 2010, 03:04 PM
Yeah it probably did clear it.

I'm not worried about it now like I was.

The only reason I'm still thinking of it is just a curiosity factor. Does your thing use Visual C++ 2005/2008 runtimes? If it uses C++ then perhaps Live Essentials screwed it up by installing conflicting C++ runtimes with the latet.

Kornman00
February 2nd, 2010, 03:33 PM
Yeah, the HEK uses the 2003 and my extensions use the 2008 runtimes. However, unless LE fuged the actual DLL code I don't think the runtimes were the problems. But it's over now

Kornman00
February 3rd, 2010, 05:20 PM
Fire/Rambo will you be available for contact on the 12th thru the 15th?

FireScythe
February 3rd, 2010, 06:31 PM
I should be, yes. 14th possibly not.

Dwood
February 3rd, 2010, 07:16 PM
If you need, i can help too.

Rambo
February 3rd, 2010, 07:17 PM
Absolutely!

FireScythe
February 4th, 2010, 08:43 AM
Might have a small cheApe bug here, the version field doesn't get set to its intended value by guerilla when a new tag is created. For instance my shader collection tag has this:

<TagGroup name="shader_post_process_collection" groupTag="shpc" version="1">
<field type="ShortInteger" name="version" locked="true" />
<field type="Pad" definition="2" />...and always has version 1 when created by guerilla. But the os bitmap tag:

<TagGroup name="os_bitmap" groupTag="osbm" version="1">
<field type="ShortInteger" name="version" locked="true" />
<field type="Pad" definition="2" />...has version 0.
Also, whats the field type name for real argb color? I've tried a number of variations but can't find the right one :saddowns:.

Kornman00
February 4th, 2010, 10:06 AM
I actually had to write code to fill the version fields in the tags included in the OS SDK, it's not a "feature". This was just to make sure that versioning information is stored even when building a cache file.

It is probably RealRgbaColor. Or RealArgbColor. I don't have access to the source ATM

SMASH
February 4th, 2010, 10:15 AM
I hate to say it but I'm basically 2 classes through with C++ (into to and OOP) and I'm still having trouble making heads or tails of most code. You sir, are very advanced.

Kornman00
February 4th, 2010, 10:23 AM
Don't always assume that what looks advance and magic super sauce...


...is magic super sauce :P. Some of it may be, but the code base could really do with some refractoring and some changes so everything is following a set standard (ie, naming conventions; I've broken this in a few areas). Thanks for the complement though :)

SMASH
February 4th, 2010, 11:27 AM
No prob. I'd really like to learn how you figured out how to do most of this and how it works. I have a pretty solid C++ foundation but I'm not really experienced in reverse engineering. Any books, or ebooks you'd recommend?

CrAsHOvErRide
February 4th, 2010, 12:30 PM
No prob. I'd really like to learn how you figured out how to do most of this and how it works. I have a pretty solid C++ foundation but I'm not really experienced in reverse engineering. Any books, or ebooks you'd recommend?

Go crack some stuff..it's the best way to get into reverse engineering (motivation etc).

I'll PM you a vid tut

Dwood
February 4th, 2010, 01:44 PM
Don't always assume that what looks advance and magic super sauce...


...is magic super sauce :P. Some of it may be, but the code base could really do with some refractoring and some changes so everything is following a set standard (ie, naming conventions; I've broken this in a few areas). Thanks for the complement though :)

Abstraction layer go! -I think that if you had organized OS by the 'levels' of code, it would be more understandable.

Rambo
February 4th, 2010, 02:00 PM
Um, Korn... If you're working on the OS HEK side still, I found a nasty bug that can get very annoying left over from your Kornman00 v2.0 build.

Whenever I do shortcuts, such as CREL+C or CTRL+V or even delete a file with the DEL key, OS_Sapien and even OS_Guerilla crashes saying an exception occurred and the program has to shut down. This can be very annoying for people that want to do so much as clean up a folder by deleting files. We have to use regular Sapien to do this or Guerilla, or go in manually visa Windows Explorer and delete old files.

It's kind of bothersome and I'd like to see it fixed. Any idea what the causal source of the crash might be?

EDIT: This (http://www.totallytechstuff.net/pmmf/videos/debug/opensauce/OS_Crash_01.wmv) is a bug report video i created to demonstrate exactly what Open Sauce HEK is complaining about. Please download and watch and, if necessary, keep for archival purposes until you fix the bug.

Choking Victim
February 4th, 2010, 03:26 PM
^ Doesn't happen to me.

You're saying if you copy/paste a file/folder in the open file dialog in guerilla and sapien, they exception?

CrAsHOvErRide
February 4th, 2010, 03:42 PM
Nero is causing the problem I guess. It's farked.

Rambo
February 4th, 2010, 03:47 PM
Or maybe it's a dependency. Let me try and remove it and see what happens.

Kornman00
February 4th, 2010, 05:16 PM
Can't download the video ATM, will try when I have access to my computer


Abstraction layer go! -I think that if you had organized OS by the 'levels' of code, it would be more understandable.
While in most cases I would agree with that assessment, when it comes to "hacks" such as this, I don't try to go too far beyond what the engine already provides.

1) Debugging is a PitA since you have to launch black box software which provides you with no debug data on crashes besides generic exception data.

2) Introducing more complex and tricky code breaks away from the model I use when creating these hacks: deterministic compilation. A model I made up, basically any code that I create doesn't or shouldn't result in behind-the-scenes constructs such as at-startup or at-exit procedures created by the compiler. It's also needed when building pure assembly interfaces with engine code. I need to know exactly how my code will compile.

3) Almost every component deals directly with a 1:1 engine system. These systems themselves have their own abstractions however there is very little access to them besides what I've uncovered and documented in EngineFunctions.cpp. In order to make sure there aren't any conflicting designs or functionality, I kept with structures and interfaces which the game code itself has, just as if I was extending the actual source. Of course this requires a mixture of low level access and constructs. These are unavoidable

4) Footprint. I didn't want this game extension putting any sort of extra footprint on the game. Thus, most additions result in O(1) operations since everything is predetermined and preallocated, with no extra information being tracked and handled besides what the game already gives you (or rather, what you take).

Different problems call for different solutions. Not always will you use an OO framework for something. You could end up with a procedural construct instead for whatever problem. If I had actual engine source this codebase would be FAR different in implementation. However, the overall code layout/design would stay the same.

Kornman00
February 4th, 2010, 06:24 PM
RealArgbColor
this is the field type name, to answer your question

FireScythe
February 4th, 2010, 08:23 PM
Yeah, forgot to post that that one worked. I was being foiled by capitalisation :gonk:.

Rambo
February 8th, 2010, 01:42 PM
In order to make Lightmaps work fully, we need to force Halo CE to bypass the structure_bsp tag embedded in the .scenario tag, as well as the sky tag. In order to use the BSP Sets, we must trick or force OS_Toolbeta into recognizing the project_yellow tag as a scenario_structure_bsp tag. When compiling with no BSP, i got this exception.


Microsoft Windows [Version 6.0.6002]
Copyright (c) 2006 Microsoft Corporation. All rights reserved.

C:\Program Files\Microsoft Games\Halo Custom Edition>os_toolbeta build-cache-fil
e levels\test\blood_creek_campus\blood_creek_campus
Couldn't read map file './toolbeta.map'
WARNING: 16 clusters in structure_bsp levels\test\blood_creek_campus\blood_creek
_campus have no background sound or sound environment.
EAX: 0xE1740000
EBX: 0x006C8F01
ECX: 0x106BD24B
EDX: 0x006CF740
EDI: 0x00129E30
ESI: 0x00000000
EBP: 0x00129D08
ESP: 0x00129CF8
EIP: 0x776D5E74, C3 8D A4 24 ?????
EXCEPTION halt in \halopc\haloce\source\tag_files\tag_groups.c,#265: tag_get(0xe
1750001) expected group 'scenario_structure_bsp' but got group 'project_yellow'

C:\Program Files\Microsoft Games\Halo Custom Edition>As you can see, it DOES recognize that there is a BSP; however, it halts upon detecting that it's coming from the project_yellow tag. I say this because of the fact that it senses my unused clusters, which i set up as a test to deliberately create an error warning that would let me know when a BSP is being used.

Please help fix this so we can utilize Lightmaps fully.

Dwood
February 8th, 2010, 02:31 PM
I explained to you how it would work Rambo. You're just going to have to wait until I figure out how to do it myself because no one else is going to do it.

Rambo
February 8th, 2010, 02:58 PM
I understand. It's just, how are we going to reroute the BSP information from the scenario to the project_yellow tag, forcing an ignore of the data in the .scenario structure hierarchy, including BSP and Skies. As of now, Sapien utilizes the data from the .scenario tag, ignoring the project_yellow information. We would have to encode something into the tag_groups.map, which is the equivalent of the d3d9.dll for Halo CE, which Sapien cannot run but the tag_groups.map it does recognize. Somehow, we have to route scenario functions to the project_yellow side of the equation before we can utilize new cript commands.

That's where Kornman00 comes in, because he can address the HEK issues, not the SDK ones that we can. We don't have his code for the HEK; he does.

Nevertheless, I do understand where you're coming from, Dwood. I agree totally. Yes I do have to wait. Any suggestions on a fix?

BTW: Thanks so much for stepping up to the plate and helping. I know it seems like i may not be appreciative, but I am quite the opposite. I do appreciate the help because without a programmer, my DTS would suck.

Dwood
February 8th, 2010, 03:41 PM
Dun worry about any of the hek issuez. When I figure this whole adding tags to Open Sauce I'll add it- I'm not 100% sure if I'll be using that section of the Yelo Tag, however, until I understand all that goes on in that area of OS. I may just be adding my own tag, or use a tag_list (hek not handy).

You're going to have to wait, a while, however. (ie probably at least 3 weeks mang) My priority list has been reshuffled. quite a bit.

Rambo
February 8th, 2010, 04:26 PM
Hey I've waited this long I can wait longer.

Dwood
February 8th, 2010, 04:48 PM
Run lightmaps in the meantime lol.

Kornman00
February 8th, 2010, 09:41 PM
1) You got that error because you tried building an OS enabled scenario using the stock build-cache-file command. You can't do that (I'm pretty sure I stated this somewhere). You have to remove the reference to the yellow tag, then you may have to hex edit the scenario tag to change the tag reference field to a 'sbsp' instead of 'yelo'.

2) There's tag data already avaiable in the project yellow tag for filling out lightmap data...just use that. It's just manual work. That's as much support you're going to get from me on this multiple lightmap issue.

Rambo
February 9th, 2010, 10:19 AM
where do you hex edit it? At the BSP side or the Yelo side? I mean... Up top at the bottom?

Kornman00
February 9th, 2010, 11:08 AM
it's the first field in the tag so at the top of the scenario tag file

Rambo
February 9th, 2010, 11:40 AM
is there any way to create a branch in OS_Tool where if you have a Yelo tag referenced, it will use that to pull its data, or if you have a BSP tag it'll use that, but not both? That way when you compile it won't exception anymore?

Also, I tried build-cache-file-ex and it still bombs. The weird thing about both scenarioes (build-cache-file and build-cache-file-ex) is that it DOES recognize the BSP tags, because i see it starting to go and reporting errors in the clusters not containing both sound environment and background sound data. Then, the compiler senses the Yelo tag and exceptions, exploding like a bomb.

Hex editing can be a pain in the butt, especially for complete n00bs to hex editors and the likes, such as myself. If we could have a branch in the new tool command where both build-cache-file and build-cache-file-ex detect one or the other but not both, then it would save us all a ton of time.

Furthermore, We'd like to use script functions because they're more versatile, but then there's that stupid crashing error in Sapien with all OS script functions, regardless of their programming. What's going on with that and a possible fix?

Dwood, I know I should wait. I am. I'm just wondering what's up and experimenting with stuff on the side to see what our options are; that's all. I'm also reporting my finds of bugs to Kornman00.

BTW: I'm afraid that if I edit the .scrnario file that it will do the following.


Not open in either editor

And / Or...


Bring down the entire HEK when trying to compile in OS_Tool because it's considered foreign and not stock

That's why i'm hesitant to do this.

Kornman00
February 9th, 2010, 12:31 PM
In order to keep existing scenario tags savvy with OS I had to replace an existing tag field. The "DON'T USE" field which in normal cases expects a structure_bsp reference. Hence, if you try to open the scenario tag in a stock program or use a stock command it's not going to work. Ergo, you'd have to clear the field of the reference name plus IIRC, hex edit the group tag stored in the binary data to be 'sbsp' instead of 'yelo' (again, because in stock tools it expects it to be a structure bsp reference). It's a simple edit of 4 bytes.

Hex editing requires some work yes, but since it's the very first field and at the start of the tag file I really didn't see it as much of a mine field because 1) people shouldn't be mixing their OS enabled scenario tags with a stock pipeline and 2) it is assumed an end user has some level of degree of higher knowledge in these subjects if they're trying to implement something with OS. A hacked-in extension of black box software will almost always require some level of overhead from the end user.

ShadowSpartan
February 10th, 2010, 01:07 AM
I understand. It's just, how are we going to reroute the BSP information from the scenario to the project_yellow tag, forcing an ignore of the data in the .scenario structure hierarchy, including BSP and Skies. As of now, Sapien utilizes the data from the .scenario tag, ignoring the project_yellow information. We would have to encode something into the tag_groups.map, which is the equivalent of the d3d9.dll for Halo CE, which Sapien cannot run but the tag_groups.map it does recognize. Somehow, we have to route scenario functions to the project_yellow side of the equation before we can utilize new cript commands.
You are making this a lot more complicated than it needs to be, and it doesn't help that you have little to none programming/reverse engineering experience. I did a little testing because I was beginning to get annoyed with you constantly posting about it, and I found it was pretty easy to do this. It took me less than an hour total.

http://www.youtube.com/watch?v=WTfy4hJainc

http://www.youtube.com/watch?v=BlpS6a_7KdI

I don't want to use the YouTube tags and clutter up this thread even more than it already is. Thanks to Siliconmaster for the test bsp.

StankBacon
February 10th, 2010, 01:09 AM
whoa that's awesome.

Siliconmaster
February 10th, 2010, 04:01 AM
You are making this a lot more complicated than it needs to be, and it doesn't help that you have little to none programming/reverse engineering experience. I did a little testing because I was beginning to get annoyed with you constantly posting about it, and I found it was pretty easy to do this. It took me less than an hour total.

http://www.youtube.com/watch?v=WTfy4hJainc

http://www.youtube.com/watch?v=BlpS6a_7KdI

Thanks to Siliconmaster for the test bsp.

Oh, so that's what you were using that for. And yeah, as soon as I saw the 3 color versions, I envisioned a rave. Needs techno looping music.

Dwood
February 10th, 2010, 06:54 AM
Well ShadoSpartan you beat me to it, even though that shouldn't surprise me, or you. Did you end up using the method I wanted to use for the switching of lightmaps or did you use another way?

Rambo
February 10th, 2010, 11:33 AM
ShadowSpartan, how in the HELL did you get that working? What the ****!!!!!!!!!!!!!!!!!

PLEASE, can I have the tag_groups.map and d3d9.dll? I owe you man.

PM me for E-Mail or Xfire info.

EDIT: I think I know how you did it. You referenced an explicit tag path (i.e. bitmap path) and set that to be the lightmap reference. Does this change sky also? If it doesn't, can you also make a switch_sky command that references a sky so that people can change those along-side the lightmap data? Just wondering. I'm asking nicely; not trying to be annoying.

Again, I want to thank you personally for doing what you did. This means that, on the current BSP, we can use as many lightmaps as we need, never having to switch BSPs.

EDIT 2: I heard from Dwood that the source code and project is about to be released. Any idea when? I would love to get started on working with it so i can script and be out of your hair for quite a long time. I've got a lot of programming and setting up to do for a test day-night system.

Could you at least please E-Mail me the d3d9.dll and the tag_groups.map file, ShadowSpartan? I'm so excited and bored at the same time, it feels like a five-year-old waiting for Christmas. I know the thing works; question is, is it ready for release?

Kornman00
February 11th, 2010, 05:22 PM
I need the exception data (from the problems and reports page and debug.txt) from sapien when it crashes when trying to compile custom functions.

Be sure you're setting "run_game_scripts" to false before you compile.

ShadowSpartan
February 11th, 2010, 05:48 PM
I need the exception data (from the problems and reports page and debug.txt) from sapien when it crashes when trying to compile custom functions.
OS_Sapien is not showing up on the problems and reports page. Here is the debug.txt entry from when I try to compile.


02.11.10 16:42:45 sapien pc 01.00.08.0616 ----------------------------------------------
02.11.10 16:42:45 reference function: _write_to_error_file
02.11.10 16:42:45 reference address: 401b13
02.11.10 16:42:45 Couldn't read map file './sapienbeta.map'
02.11.10 16:42:45 CreateDevice succeeded with refresh rate = 0
02.11.10 16:42:46 Sound card doesn't meet minimum hardware requirements. Disabling hardware option.
02.11.10 16:42:46 Increasing sound decompression buffer size to 1048576 bytes
02.11.10 16:42:47 WARNING: 1 clusters in structure_bsp levels\test\boxtest\boxtest_blue have no background sound or sound environment.
02.11.10 16:42:47 local player 0, weapon (0x0), deleted unexpectedly
02.11.10 16:43:21 EAX: 0x00000000
02.11.10 16:43:21 EBX: 0x00000040
02.11.10 16:43:21 ECX: 0xFFFFFFFF
02.11.10 16:43:21 EDX: 0x00000000
02.11.10 16:43:21 EDI: 0x0012E4E0
02.11.10 16:43:21 ESI: 0x0012EA0C
02.11.10 16:43:21 EBP: 0x0012E8B8
02.11.10 16:43:21 ESP: 0x0012E4C4
02.11.10 16:43:21 EIP: 0x00417E20, 8B 01 8B 96 ?????
02.11.10 16:43:21 0012FF94 ?????
02.11.10 16:43:21 004053C0 ?????
02.11.10 16:43:21 7FF89EB8 ?????
02.11.10 16:43:21 7FF514CE ?????
02.11.10 16:43:21 7FF5152C ?????
02.11.10 16:43:21 7FF528A2 ?????
02.11.10 16:43:21 00751B18 ?????
02.11.10 16:43:21 004F8200 ?????
02.11.10 16:43:21 EXCEPTION_ACCESS_VIOLATION


EDIT 2: I heard from Dwood that the source code and project is about to be released. Any idea when? I would love to get started on working with it so i can script and be out of your hair for quite a long time. I've got a lot of programming and setting up to do for a test day-night system.
Apparently Dwood can't understand simple English, sending PM so I'm not cluttering this topic.

Edit: I don't know why you thought changing a bitmap would also change the sky tag, but that is not the case at all. The skies block has a maximum element count of 8, and in order to make the transition seamlessly you would need more than that. Looks like you won't be able to do this, oh well.

Rambo
February 12th, 2010, 09:23 AM
OK. Shadow helped me out. Now I need some help from FireScythe.

Fire, can you contact me on Xfire or AIM? I'll send you a PM with my contact information.

Dwood
March 5th, 2010, 04:17 PM
I don't know if you're aware of this Korn but Open Sauce doesn't let people modify globals that are in the maps.

Kornman00
March 6th, 2010, 04:07 AM
1) And you tried this also in a stock engine setting?
2) And you tried this in a stock OS SDK build?
3) And you verified your spelling?
4) Define "doesn't let"

Dwood
March 6th, 2010, 10:30 AM
NVM for some reason its gone now, it must have been a problem with my scripts.

Kornman00
March 13th, 2010, 05:22 PM
OpenSauce Vidoc Demo (http://www.modacity.net/forums/showthread.php?t=20808)

Kornner Studios brings you Vidocs! The future of OpenSauce documentation

Kornman00
March 18th, 2010, 03:58 PM
I've start work on the first official Vidoc this weekend (albeit, not to read as if it will also be done this weekend). While it won't give any one specific focus to a subject it'll give (or should at least) people the right mindsets when thinking OpenSauce.

DarkHalo003
March 27th, 2010, 10:49 PM
A ViDoc? Wow, I'll be impressed when this is done. Is it mainly just basics of opensauce into the CE game, or is it also some advanced stuff that takes more practice in the codings of OpenSauce? (codings is used as an analogy)

Kornman00
March 29th, 2010, 12:52 AM
I'm sure one or two will be made to give light some more advance topics. However, before I even go there I want to make sure people are in the right mind set about OpenSauce

Kornman00
April 2nd, 2010, 08:15 AM
After reviewing the draft material for the first Vidoc earlier I realized that I'd probably be better of breaking it up into a power-point and perhaps a short video recording to accompany it. While a Vidoc doesn't really have to be a video, it's the format everyone is use to. Should answer some of the basics for modders who take the time and review it.

Dwood
April 2nd, 2010, 08:58 AM
What specific content are you going over so I may be able to give a suggestion?

Kornman00
April 2nd, 2010, 09:48 AM
No specific content but an overview of OpenSauce and what it is (and isn't). It seems like people never really caught on or felt the urge to automatically assume it was too advance for them, so I figured breaking it down and applying examples to their current modder state of mind would work the best. Without a Primer, going into specific topics would be fruitless. An internet thread can only deliver information in so few ways and lacks acceptable persistance methods (fuck HTML files) for offline viewing.

Dwood
April 2nd, 2010, 10:39 AM
Ok. As an example, I think it would help a lot of the people who want to do things with open sauce if you did an example tag and showed how to add it into Open Sauce. Something simple... like a custom tag for text strings perhaps, just to show how to access them from OS?

Choking Victim
April 2nd, 2010, 10:40 AM
Check out how he did the yelo_globals tags, he has sample code for those and it's fairly straightforward.

Kornman00
April 8th, 2010, 09:26 AM
I'm going to need the assistance of some beta testers tomorrow/saturday for some things. You think you'll be able to assist Fire?

Choking, will you be able to test the animation importer?

Choking Victim
April 8th, 2010, 09:36 AM
Yea, I should be around. I'd be happy to test.

Dwood
April 8th, 2010, 02:59 PM
For the next update in OS, are you changing the Project_Yellow Tags at all? I'm designing my tag set up and want to know if you were going to make adding custom tags to the project_yellow stuff more version compliant, ie more places to add tag refs than the scenario and the global explicit references.

Kornman00
April 8th, 2010, 06:01 PM
tag_collection. It solves any problems you just mentioned and both py tags support them.

The project_yellow tags are already as version compliant as the Halo1 engine allows them to be. No one should be changing the py tag structures except for me. If you're going to require new fields to support your code, make your own project's special tag. PY tags are for the operation of official OpenSauce releases.

Dwood
April 8th, 2010, 06:06 PM
Oh I know, i'm not trying to modify the original tags and all, and am going to make my own tags. I mean I just wanted to know if you were adding any other explicit references... (like the bsp and lightmap section of the tag)

Also, I don't know where you got the idea of me editing them....

Kornman00
April 8th, 2010, 06:25 PM
If any new tag fields were to be added, they would be for a feature or something I was looking to stub or implement.

I was just saying in general: no one should ever change those tags or at least release anything which changes in them. That would be breaking versioning and they're not on the standards itty bitty titty committee for OpenSauce's core.

FireScythe
April 8th, 2010, 06:35 PM
I'll be available from around 6:00 pm GMT tomorrow and over the weekend.

Kornman00
April 8th, 2010, 06:39 PM
Good, was hoping you could test the new codebase, want to make sure I didn't find a way to break scripting support again ;p

Dwood
April 8th, 2010, 06:40 PM
If any new tag fields were to be added, they would be for a feature or something I was looking to stub or implement.

I was just saying in general: no one should ever change those tags or at least release anything which changes in them. That would be breaking versioning and they're not on the standards itty bitty titty committee for OpenSauce's core.

Perhaps you could edit the tag (or include it in the ViDoc/Future SDK Documentation) so it's more obvious that people should be using tag_collection tags, because I see that area being a point of failure for those who just want to make maps, say... with Scythe's PostProcessing, or CV's animation permutations (not sure how you set it up man, just assuming you used that)

I'll be sure to include a little diagram of what the setup for custom tags should be for devs and mappers in another explorial if I ever do make one.

Kornman00
April 10th, 2010, 07:56 PM
Just like to let everyone know that the internal beta testing has been going great. We've already quashed some pretty annoying bugs and resolved some issues like the max animations limit override not fulling working for importing. Halo 1 looks to be right on schedule!

Dwood
April 21st, 2010, 08:00 PM
Has anyone managed to return a string in the new hs funcs? im trying to but so far it only returns gobbledy gook.

FireScythe
April 22nd, 2010, 08:04 AM
Yes, you have to return a char* that is cast as a void*. Which reminds me, when you return a char* does Halo delete the memory allocated there, or should it be a global pointer that the component handles completely?

Kornman00
April 22nd, 2010, 08:19 AM
Halo's scripting runtime won't manage that value you return to it. All up to you

Kornman00
May 17th, 2010, 01:18 AM
Chances are the next update for this will be using VS2010 for its solution and project files. Just a heads up

willfullcookie
June 26th, 2010, 10:44 PM
Anyone Know if theres a tutorial on compiling this, i have the required things(boost C++ and Directx SDK) with Visual Studio 2010 and have had compiles errors every time

ShadowSpartan
June 26th, 2010, 10:50 PM
Anyone Know if theres a tutorial on compiling this, i have the required things(boost C++ and Directx SDK) with Visual Studio 2010 and have had compiles errors every time
I have never been able to get it to compile in VS2010, use VS2008 instead and it should work fine.

willfullcookie
June 26th, 2010, 11:09 PM
thanks for the info. (woo, here i come large download!)
Edit~ after a overly large download of visual studio 2008 i installed it and reinstalled the others(just in case) however the compile still failed, i suppose i should mention that im on a 64bit computer..

famer
June 28th, 2010, 08:37 PM
someone can tell me how to install this!

"I have little knowledge of 3D, and if I can serve, just let me know.
Also if anyone can teach me a little of what they know, i would be happy to learn "


PD: I speak Spanish

PD2: I do what can to understand what they say.

u.u

Kornman00
July 1st, 2010, 01:38 AM
So I lied when I said the next release's source would be for VS2010. While I want to move to the latest and greatest VS, I figure that not everyone else may feel the same or their only option for 2010 may be the Express versions (but not for 2008). So yeah, the next codebase release will still be VS2008.

I'm also working on making the .NET tools that accompany the OpenSauce SDK compliant with x64 targets. Whether or not the tools will see any speed improvements is questionable (I'm not spending any time to gather profiling metrics). Obviously, I can't make the Yelo component of OpenSauce x64 compliant as the Halo engine and its tools are all x86 based. Also, I think Express versions of VS don't have x64 tools so you'll still be stuck with compiling for x86 targets.

There's been some...delays you could say. Moving has fucked with development but I can still work on parts of OpenSauce again and hey, I can even run HaloCE again :party:.

Kornman00
July 7th, 2010, 03:33 PM
I was hoping to put out a new update about OS in the spirit of Bungie Day but I've been up since yesterday and blah blah blah, life, etc etc, tired as fuck, etc etc, school, etc etc. So instead the official update will have to wait some odd amount of days.

Just to give you an idea of what's going on though, I've started integrating (part of the reason I've been up all night, the other being 7 seasons of TPB (http://en.wikipedia.org/wiki/Trailer_Park_Boys)) what I hope will be the final reversion of the Postprocessing system. FS sent me his codebase the other day and I've been reviewing it all, making sure it adheres to to a few standards (OS and Halo standards). We've also got some stuff in the process of being researched and developed that I think will really just add some fucking major pizazz to maps of anyone who uses who uses what we're baking. However, I don't want to go into any explicit details until we're positive that we know we can execute it right and without consuming too many resources. So I'll just leave you with that little tease for now!

Plenty of other surprises to watch (http://code.google.com/p/open-sauce/) out for too; HaloCE isn't the only boat being sailed these days. So yeah, I think I'll be nice and let Bungie have the spotlight for today while I try to catchup on some missed sleep. That and I don't want to jinx myself for a third time...

Dwood
July 8th, 2010, 07:33 PM
There's no spotlight for you unless you made the new networking work. :P

Kornman00
July 15th, 2010, 11:24 PM
Anyone who is working on OS related code modifications needs to contact me ASAP if they wish to have their changes considered for inclusion in the official OS2.5 release. Anyone who can't have their changes done and tested by August need not apply.

Dwood
July 16th, 2010, 12:45 PM
I just added light-map switching (works) and exposed the isKeyDown function to halo script. want to include that?

Kornman00
July 16th, 2010, 02:17 PM
I've had "structure_bsp_lightmap_reset" and "structure_bsp_lightmap_set_change" implemented for a while now, but haven't had a chance to test that they actually work. If someone can provide the sample data (test lightmaps, yelo tags, etc) using tutorial then I can make sure it is changing the lightmap/sky based on what the tag data specifies. Note that the "skies" block must match what the scenario's "skies" block exactly (every reference, in the same order) in order for sky switching to work with your lightmap set changes.

Kornman00
July 17th, 2010, 12:31 AM
I just added light-map switching (works)
I had shadow test with tutorial and lightmap-set switching functions I wrote work (lightmap and sky changes)

plus many other things.

wouldn't be right of me to not tease about magical mystery features that are in and working ;p.

Dwood
July 17th, 2010, 01:09 AM
I had shadow test with tutorial and lightmap-set switching functions I wrote work (lightmap and sky changes)

plus many other things.

wouldn't be right of me to not tease about magical mystery features that are in and working ;p.

Those are the wrong things to tease about! :P

CrAsHOvErRide
July 17th, 2010, 07:45 PM
Any way to check if someone is in a vehicle? First Seat and not being in a vehicle share TStructGetPtrImpl(int16, VehicleSeatIndex, 0x2A) being '0'.

Also, how can I check if someone is still in a server? I don't think I found an implementation for this in OS but I thought this was the right thread for asking :v:

Kornman00
July 17th, 2010, 08:12 PM
You'd have to check if the player's slave unit has a null parent-object-index or not.

By iterating over the player_data you can interface with all active players. The data iterator skips any datum which is invalid (read: not allocated for use).

I thought you were done with Halo?

CrAsHOvErRide
July 17th, 2010, 09:08 PM
Using your OS as a info sauce. Trying to incorporate some of my math ideas into a bot (...which I will not release). Halo is a good sex slave for doing this kind of stuff.

CrAsHOvErRide
July 25th, 2010, 12:57 PM
Also, it would require a bit of work but implementing a signature system to get the offsets right on every version would help a lot don't you think? Halo Sausage would work on every version then (afaik). I could help you with that.

Kornman00
July 25th, 2010, 01:26 PM
The codebase isn't setup to use dynamic addresses and I really don't see anymore updates past 1.09, at least not anytime soon. Not only that but some function hooks are done at the very end of the function they're hooking. This is a problem because some of the patches done to the client\dedi have caused the padding bytes between functions to fall under 5 unused bytes (and you need at least 5 to perform relative branches). This would still leave version specific junk in the code. Then you'd have to test for each build of the game to make sure this theoretical signature system doesn't give false positives to function and data memory addresses.

I'm not here to support egg heads who are still running around on 1.00. They're all pirates to me and I don't support people who feel they can't shell out less than 10$ or whatever to play a 7 year old game that they still enjoy.

If someone wants to develop and prototype the implementation into OS on their own then fine. But I'm not taking part in it.

Skarma
July 25th, 2010, 04:11 PM
@Pat
Even though Kornman00 gave me crap about it too I still worked on it lol. I tried modifying the ENGINE_PTR/FUNC_PTR macros with a sig scan routine but of course it doesn't work because they are macros and ran through the pre processor first. It would've made everything really really easy that way. You would have to scrap those macros and edit each function pointer to run through the scan routine, which I didn't even want to get started on. I have a signature generator and scanner that won't give false positives he was mentioning. Of course the longer the signature the more unique it is. The other butt hurt part is going to be data pointers, to scan for them you have to reference from code, but to save time you can write a routine to search for them and generate a signature too. I'll contact you later

Skarma
September 4th, 2010, 04:22 PM
Does Engine::Objects::GetLocation() return screen coordinates of the object position? And GetOrigin() returns the object position? And GetCameraPosition() returns the position of the camera that is attached to the specified object? Merr?

I made a final decision to use OS to build Forge CE. I doubted myself before and even though I am a hobbyist programmer, it wasn't until recent that I realized how omnipotent OS is. Thanks for this.

Kornman00
September 4th, 2010, 07:43 PM
GetLocation is actually mis-documented. It copies the object's scenario location. A scenario location houses the bsp leaf and cluster index that the object is currently located by (this will be fixed in the next release, don't worry).

GetOrigin gets the position of object in the game world. If its a child object, it uses the parent object to calculate its world position.

GetCameraPosition is for unit based objects only and it calculates the view position based on the unit's 'head' if it has one. If not, it will estimate the sight position based on the object's origin.

Skarma
September 4th, 2010, 11:03 PM
Awesome thanks. Also what would happen if I passed an object datum_index to one of these functions that is actually to an invalid / non-existent object? Will it pass a null pointer or will it just crash? I guess I could test for myself.

Oh yea, I wanted to shorten my code by using the - operator to subtract two real_point3d variables that equal a real_vector3d, because I use Magnitude() on the result -- but it says the - operator is ambiguous and won't let me. Is there a way I can do this without initializing each member individually? For now I'm using Set(), but vect = point - point would be super!

Because of OS, my development time is tenfold!!

Kornman00
September 4th, 2010, 11:59 PM
In OS2 RC, if the engine function code doesn't have a null handle check then it will crash. If you're passing a handle which is to a datum that is no longer active then it will more than likely crash too. However, as long as you're using the game state's memory for data handles you should be fine. If you're not keeping your handles up to date then it's on you for having crashes from inactive datum accesses.

real_point has operator overrides for casting to real_vector and D3DXVECTOR types. So just cast the real_point to a vector then you can use the vector's manipulators.

Skarma
September 5th, 2010, 04:28 PM
I haven't yet tried type casting, I will get to that later. Right now GetOrigin is crashing Halo for some unknown reason. I used YELO_DEBUG_FORMAT to print out the object handle and object address before calling it. All the other printed data is fine and working great. I don't see anything wrong, but maybe you might? Thanks

http://www.pastebin.com/Kjg2hB6H

Debug output of my last test:

Sun Sep 05 16:45:21 2010

16:45:21 Object Handle: 0xE2700001
Object Address: 0x4005673C

Edit: Fixed a few things, updated but still crashing.

Kornman00
September 5th, 2010, 04:48 PM
The way a data_array was iterated in the original release was incorrect. In the next release, data iteration has been corrected (and it now uses the actual data iterator mechanism)

Skarma
September 8th, 2010, 02:56 PM
I have got some things working now, including moving objects in game with OS but of course there are bugs. :saddowns: In the end of the video, I demonstrate moving of objects, click-n-drag style. The problem is some objects don't render when moved in certain positions and based on where you are standing. I think it has to do with the portal it is in, but if anyone knows as to why let me know.

The main problem I am having is with mouse button states. In the following first minute of the video I am holding down left mouse button the entire time, sometimes the gun fires and sometimes it doesn't. It only does when you change your x or y angle about 45 degrees or more. If you are looking straight forward, it doesn't fire which is what I want since I am hijacking the mouse.

I guess a way to solve this would be to just remap the mouse button control settings to unused. This code is inside the Input hooked update function. I check for mouse button state and set it to zero. My question is why are weapons still firing at certain angles even though I set the mouse button states to null?


void Update()
{
Objects::object_data *object;

if(Forge::IsForgeOn)
{
if(IsInGame() && !IsInMenu() && !IsInChat())
{
object = Forge::GetClosestObject();

if(!object)
return;

if(GetKeyState(Enums::_KeyLShift))
Forge::selected = object;

if(GetMouseButtonState(Enums::_MouseButton1))
{
Forge::MoveObjXY(Forge::selected);
SetMouseButtonState(Enums::_MouseButton1, 0);

}
if(GetMouseButtonState(Enums::_MouseButton3))
{
Forge::MoveObjFront(Forge::selected);
SetMouseButtonState(Enums::_MouseButton3, 0);
}
else if(!GetMouseButtonState(Enums::_MouseButton3))
{
//Forge::holding = false;
}

if(GetKeyState(Enums::_Key0))
Forge::HoldDistance += 0.03f;
if(GetKeyState(Enums::_KeyDown))
Forge::HoldDistance -= 0.03f;

}
}
}Jl9k3aitoIY

GetKeyState() with certain keys seems to not be working. It could be my code, but everything seems right. I also noticed the key indexes are custom, they aren't the same as Windows virtual key codes. :saddowns: sad face

Just something cool I figured out since Halo doesn't use SetTransform(), through vertex shaders I can project 3d vectors from object space into 2d screen space for even custom objects. The WorldToScreen I wrote is very buggy. I can't wait to implement this in OS!

CrAsHOvErRide
September 8th, 2010, 03:11 PM
if (GetAsyncKeyState(0x47) & 1)
This works 100%. What keys are you trying to use?

Skarma
September 8th, 2010, 03:23 PM
Yes, that does work, but it's really not reliable. I rather check key states that Halo has updated for me instead of calling an API. Seems redundant and hacky. I'm going to be using lots of OS functions and this stuff can help make OS better and fix bugs that have been missed before the new update. As well as help other developers with their programs. :)

Kornman00
September 8th, 2010, 03:24 PM
I'm not sure what you're doing wrong exactly. For starters, you shouldn't put your forge code directly in the input update function.

Second, you need to filter what sorts of objects you can select. Projectiles should NOT be in this filter. Back when we had the gravity gun I once held on to a rocket I shot, then let it go. When it collided, the game would crash.

Third, whenever you move a object you need to disconnect it from the bsp, then when you're finished you have to reconnect it. The next release will have the required functions needed perform said operations. Internally, the object-set-position function that is also declared in EngineFunctions calls the bsp connection code, so if you were using the engine function you wouldn't have to worry about it. However, you're directly modifying the object's world data so you wouldn't be calling the object-set-position and thus would have to explicitly call the connection code.

I don't think we used any of the mouse buttons for the gravity gun (Internally is was referred to as the ObjectInterface, but kept the name used in gary's mod so users would get the idea) except for Button3 plus the scroller if it has one. For selection toggling we used a key binding.

Skarma
September 8th, 2010, 03:40 PM
Thank you for that info! The reason I put the code in there, is because I wanted to catch the button / key states before Halo checks them and does its thing. I didn't want random things happening, like my weapon firing while moving objects at the same time. I guess remapping the mouse buttons while forge is on will work better. Then I don't need to run code in the update function. How should I run forge code? In it's own thread maybe?

Also thanks for the bsp tip, I was using SetPosition, but I took out all the engine functions because it was crashing and I have no idea why. I will revert back to them and figure it out. Also with SetPosition engine function, are physics still working as I move it, kind of like a rag doll effect? A demostration of gravity gun would be sweet and give me some ideas for coding this.


Second, you need to filter what sorts of objects you can select. Projectiles should NOT be in this filter. Back when we had the gravity gun I once held on to a rocket I shot, then let it go. When it collided, the game would crash. And LOL, this exact same thing happened to me too! haha it's super fun though, especially tossing other players around the map and grenades you can grab out of the air and toss back at them! hahaha

Edit: Another question, at the end of object data structs, there is an array of structs that have floats. The number of these structs seems to match the model node / marker count. I had them defined as so from research long ago:

struct ModelNode
{
float Scale;
float Transform[3][3];
float World[3];
};I named it a transform matrix because I didn't know what else to call it. They're unit vectors. Do you know what these are and will you be adding them into the new update?

CrAsHOvErRide
September 8th, 2010, 04:12 PM
For my Grav Gun I used the middle mouse button and it worked quite well. Thanks for the disconnect info though...would have helped a lot back then :P

Kornman00
September 8th, 2010, 05:15 PM
I mean that you shouldn't be placing the forge code directly in the Input Update. Instead, you should be calling Forge's update function from there. Then it decides if and what it can update depending on the game state.

I forget if they're on youtube or not, but I have videos of the old grav gun here (kornnersoftware.com/yelo/halo1/ce/GravGun.wmv) and here (kornnersoftware.com/yelo/halo1/ce/GravGunFromClient.wmv).

I forget if this is in the last OS's code release, but in the current I have the object's node matrix (the real numbers you're seeing) documented. They're an array of real_matrix4x3.

Skarma
September 11th, 2010, 04:56 AM
Halo no longer renders anything with OS.

I updated my graphics card driver for my laptop (Mobile Intel® 4 Series Express Chipset Family) from the Intel website today. I am running Windows 7 64 bit. After I installed it everything was ok. Later on during the night I did some more testing on Forge and the background of the main menu (the Halo Ring) was not rendering and was completely black, although I could see the menu options. When I go into a game, the world isn't rendering(its all white), but the HUD renders.

When I delete d3d9 from my Halo folder, Halo works and renders fine.

I reinstalled Halo, still didn't work.

Next, I uninstalled the driver from the device manager and then with my laptops recovery manager, I installed the original driver. Same effect.

Next, I downloaded a fresh copy of OpenSauce, compiled without any added code, and didn't work.

Just out of curiosity, I downloaded and tried your pre-compiled dll, instead of compiling it myself. It worked.

What the hell is going on? I have changed nothing in my compiler, code, settings or anything. A fresh source compile did not even work.

FireScythe
September 11th, 2010, 05:01 AM
That sounds like the FOV bug that was present in the original releases. Try going into a game and changing your FOV using the F7 menu, and don't use vidmode, I think that was causing a FOV issue aswell.

Skarma
September 11th, 2010, 05:17 AM
You're right about that. Changing FOV did fix it. I deleted the Yelo settings files which didn't help like I thought the fov setting was messed up. I don't understand why this is randomly just happening now. =[

Oh well, just have to deal with it

Kornman00
September 11th, 2010, 06:15 AM
Make sure you get the Appetizer.rar (in the first post) too. I think that might have had the fix for the FOV crap in it.

Skarma
September 11th, 2010, 11:33 AM
Oh I did, it did not have any effect.

Dwood
September 11th, 2010, 04:49 PM
Oh I did, it did not have any effect.

I had this problem a while ago - fixed it by simply commenting out the fov functions in the main.cpp... then one day I un-commented it and it worked again... LOL.

Skarma
September 18th, 2010, 06:12 PM
I am building some tag definitions using your OS object and device definitions as examples. I was just wondering, when should you use a TAG_FIELD and when to not use it? I have been using it for only variables that have tooltips and other text next to the edit box in guerilla. Also what kinds of variable arguments are accepted in tag fields and in what order? Thank you

E: I am assuming the variable argument in TAG_FIELD does nothing currently.

Do you have the tag definitions already mapped out into c structures? If so, would you be so kind to release them with or without the next OS build? Just asking in case I am being redundant and should just wait until then. I have reversed most of them, but not into standard halo/os format. And hey, if not I can send them to you to put into the next build if I get them done in time.

This is for Forge by the way. I haven't yet looked through all your map/tag code -- there is SO much I have yet to explore it's ridiculous lol. Right now I am just working on editing existing tags, but I eventually wanted to be able to create new objects and delete existing objects. I saw a script command object_create and was thinking of making use of that to temporarily spawn an object but I am unsure. I guess I would need to update all the pointers in the map file if I wanted to save changes for adding and deleting tags. Can you help me sometime?

Skarma
October 2nd, 2010, 10:09 AM
I found a bug in yo code, yo.

Keithstone.cpp:
All the calls in the engine functions are pointers to the function address not the actual function address.
Example: static uint32 TEMP_CALL_ADDR = GET_FUNC_PTR(KS_GETWINDOW); returns 0x6BD0C0

Also, you should add the remaining keystone functions to the next update. :downs:

I thought it would be an appropriate time for this lol...
kLStB-0K-jQ

Kornman00
October 5th, 2010, 10:18 PM
I haven't messed with that area of the code in a long time. I believe I used the address of the engine-owned function pointers which the engine itself loads via GetProcAddress (since they're in a DLL). I never ended up really using them aside from some UI fix-ups (which are currently deprecated) so they didn't get tested.

lol @ stone

Goldkilla
October 17th, 2010, 03:06 PM
This sounds so cool! :D How do you use opensauce btw? I downloaded it on HM.org but I did not know what to do with it.

Con
October 18th, 2010, 02:23 AM
This sounds so cool! :D How do you use opensauce btw? I downloaded it on HM.org but I did not know what to do with it.
I'm sure Kornman can give you a better answer than me, but basically OS allows programmers to create extensions for Halo. OS, which is loaded as a part of the game itself, exposes a lot of the game's internals to the programmers for use in their extensions. Where previously app developers had to make use of memory hacking and tricks to accomplish their goals, OS allows them to work directly with the game as a part of the game.

If you downloaded the SDK, then you probably won't be doing much with it unless you're trying to develop one of these extensions. If you downloaded something that someone made using the SDK, then you put the .dll in your Halo Custom Edition folder and follow the instructions for whatever it is you have.

Kornman00
November 15th, 2010, 02:40 AM
I started looking into GTA4 mods since I got the game on Steam too now. They also have their own game hook (http://www.gtagaming.com/downloads/gta-iv/tools/2942) that allows people to modify the game with C++ code. Difference is that their hook seems to be solely based around the game's scripting system.

Also noticed that they have a .NET interface (http://www.gtagaming.com/downloads/gta-iv/tools/2941) for game hooking. Sadly, it looks like both the native game hook and the .NET interface's internal code are closed-source. If they were open, I'd look at seeing how they did things and seeing if a .NET interface was possible for OpenSauce in some way.

Con
November 15th, 2010, 03:39 AM
Maybe you could contact them about it. A .NET side to OS would go nicely with BlamLib.

aZn9ja37
December 6th, 2010, 07:37 PM
Hi. Im totally new to this open sauce thing. Wanted to know about the open sauce thing a bit more. Could some give me a more elaborate description of the Open Sauce HEK and how to use it?

Kornman00
December 8th, 2010, 09:22 PM
What's your game modding background?

That is to say, what other games have you modded? Are you a programmer or just a general game modder (ie, you use data editors to manipulate game data values)

aZn9ja37
December 9th, 2010, 04:47 PM
Im am just a general game modder curious about how OS HEK works?

Kornman00
December 9th, 2010, 06:35 PM
At its core, OS is an SDK for Halo (in this case, Custom Edition). It allows game/editor extensions to be written. One example of an extension for the editors is the ability to add new tag groups (which are defined by programmers who use the SDK. 'biped' is an example of a tag group). Then modders instance those new tag groups like they would any other by a tag definition (eg, grunt.biped is a tag definition).

OS offers a couple new tag groups of the of the box. One is called "project_yellow". It's what your scenario references for custom OS data. For example, the project_yellow tag has a field for overriding what globals tag is used. This way, you can use another globals definition besides the default "globals\globals.globals".

Cortexian
December 27th, 2010, 07:08 PM
While using the "d3d.dll" attached in the OP and a clean install of 1.09 with the 1.08 "haloce.exe" and "Strings.dll" the F7 menu only flashes in-game when I press "F7". I see all the options but the menu doesn't stay open.

Help!

Kornman00
January 3rd, 2011, 09:33 PM
Blame Canada?


So I've got some ideas on how to better some of the existing networking...however, part of the changes would make OS invalid with connecting to or from stock game builds. I'd like to at least try testing the changes in a full server this or next month just to see if such a change is worth it. The changes assume everyone is running on broadband connections...which should have been the assumption by MS from the get-go, but I digress.

I could also probably make it so that you can toggle the networking enhancements on and off, to allow you to connect to stock client/servers. However, I'd have to assume the end-user isn't a complete twat to know how to work the console to execute a script function...which is almost asking a lot, so the default would probably have to be off :ugh:.

Dwood
January 3rd, 2011, 11:55 PM
OS exclusive servers? Sounds all right to me...

jcap
January 4th, 2011, 12:23 AM
If it can prove to reduce the leading, I'm sure you'd get people to use it. That would fix the number one biggest issue we've always had.

Kornman00
January 7th, 2011, 12:30 AM
I pushed some code changes to OS's repo on google code which includes a debug-only test function which enables the possible fixes (if anyone wants to try it themselves, you'll need VS2008 to compiler a build). I'll try getting a test conducted later this month or next.

d4rfnader
January 7th, 2011, 08:27 PM
Hey, sorry for the noob question here, but, does anybody happen to know of a thread or tutorial on using the shader_post_process tags? Again sorry for the noob question, im new to open sauce.

Patssj6
January 8th, 2011, 08:53 PM
So I've got some ideas on how to better some of the existing networking...however, part of the changes would make OS invalid with connecting to or from stock game builds. I'd like to at least try testing the changes in a full server this or next month just to see if such a change is worth it. The changes assume everyone is running on broadband connections...which should have been the assumption by MS from the get-go, but I digress.

I could also probably make it so that you can toggle the networking enhancements on and off, to allow you to connect to stock client/servers. However, I'd have to assume the end-user isn't a complete twat to know how to work the console to execute a script function...which is almost asking a lot, so the default would probably have to be off :ugh:.

Just wanted to drop my 5 cents here:

I think the original approach to OpenSauce was not really a good one and for the next step you should rethink some options.

My suggestion is that you make a exclusive dedicated client and server specifically for running OS. I don't know how far your network changes go but I think a loader would be good here.

Server sided: When starting the server a loader loads the haloded file and injects your DLL. Hooking the init parsing function you can include custom parameters which enable OS features like Multi-Team vehicles or the network enhancements inside the init.txt. Upon someone entering the server you do a handshake with the client and send requested features to be enabled on the client as well (Multi-Team Vehicles). If no callback because OS was not loaded, the connection is refused.

Client sided: You can start the loader which injects the client version of OS. In the game browser window only OS-Enabled-Severs will be shown...this could be done via a custom prefix in the server display name along the lines of a signature byte like 0x20 followed by [OS] (the server does this by changing sv_name). Upon entering once again the handshake, checking of OS versions etc.

CodeBrain
January 8th, 2011, 09:03 PM
Apparently even OS Guerilla can be affected (aka automatically shutdown) by certain dll files.

http://codebrainshideout.net/too_awesome_for_pb/os_guerilla_office2010_dll_error.png

Office 2010 (which is where GROOVEEX.DLL comes from [C:\Program Files (x86)\Microsoft Office\Office14]) isn't even open at the time, but OS Guerilla insists that this file is required.

Ive seen this "error" happen on older versions of Guerilla (most of the time i think it was TortoiseSVN back then), what is it that exactly causes this error Kornman?

Additionally info is that this error only appeared then the "Open Dialog" box was trying to come up, after I clicked "Open file" in the Files tab.

Also I am not going to uninstall Office 2010 because I use it most of the time nowadays.

Kornman00
January 8th, 2011, 09:28 PM
Except the basis of OpenSauce is extending what's already there, not completely changing or replacing (thus breaking stock-compatibility). Some of the enhancements that OS does makes it so that it has to be loaded before the majority of program has started initialization. Using a loader would only complicate the runtime chain and add yet another level of detail to deployments. I'd rather have simple drag&drop support in OS which anyone can muster than maintaining a loader along with the DLL which then end users have to go out of their way to use.

OS can target both servers and clients. There is very little dedicated server specific code so I don't run tests for it unless it's for a major release, but the support is there in the codebase.

OS uses non-intrusive XML configurations. It wouldn't make sense to put OS specific config info into init.txt when that file is for stock Halo. Also with XML, the library doesn't have to worry about using custom parsing or writing code, it can use a third party library.

The server list operates by displaying all servers that have a matching version number as the client who is performing the query. If I cared about only showing OS specific servers, all that would need to be done is change the version number to one that would never be used by an offical game update (eg, "2.00.01.16").

The only network packet changes that I was ever going to support in OS was adding new message deltas. I had no interest in changing the lower level data packets that are communicated. When clients get unknown or invalid data from the server, their connection is automatically refused anyway. Nor do I have any interest in using custom networking solutions (a la MultiTheftAuto) that are specific to OS as that would only further complicate the codebase and go against "extending" present game features.

The networking changes I came up with for theoretically increasing online performance are done by changing what's already there in the game, nothing is added. It's a mix of what Delagginator did plus a few other configuration changes.

HaloCE is already plagued by too many versions. The point with OS was building on top of existing game features that wouldn't completely break stock games so there wouldn't need to be yet another level of versioning in CE. This enables people to continue to use OS-enabled games in stock game servers. It also keeps the codebase less complicated.


E @ Codebrain: the stuff in the initial post of this thread is pretty outdated compared to what is in the source repo now. I no longer use pre-built EXEs, but use OpenSauceIDE to "apply" OS HEK changes. This enables users to perform whatever changes they want to whichever HEK EXE (eg, sapien) then "apply" the OS features to a copy of that EXE and also completely removes the issues of those DLL errors seen in past versions of the modified Guerilla.

Patssj6
January 8th, 2011, 09:56 PM
I didn't know that if you send a custom version number to GameSpy that they would accept it. My idea still would move more people to use OS though when they see a growning numbers of servers using OS.

Well I see where you are going but I don't know if you have realized that not many people are using OS right now even though many people would love its capabilities. Even I myself have problems seeing through how everything is suppose to work. Right now it is not really that clear how one is suppose to extend Halo with OS.

Now sure why you are talking about low level packet manipulations. Not talking about modifying the existing Handshake but making a custom one.

But now that you said that said your network improvements are all inline there is really no need for OS anyway. I still stand at my point though that OS right now if far to obscure for the general public. A simple all-in-one download package would OS for Client and OS for Server would have been a far better option. Just supporting 1.09, anti-cheat measurements, maybe remove the CD Key check and one could unite all players on one version.

CodeBrain
January 8th, 2011, 10:30 PM
I didn't know that if you send a custom version number to GameSpy that they would accept it. My idea still would move more people to use OS though when they see a growning numbers of servers using OS.

Well I see where you are going but I don't know if you have realized that not many people are using OS right now even though many people would love its capabilities. Even I myself have problems seeing through how everything is suppose to work. Right now it is not really that clear how one is suppose to extend Halo with OS.

Now sure why you are talking about low level packet manipulations. Not talking about modifying the existing Handshake but making a custom one.

But now that you said that said your network improvements are all inline there is really no need for OS anyway. I still stand at my point though that OS right now if far to obscure for the general public. A simple all-in-one download package would OS for Client and OS for Server would have been a far better option. Just supporting 1.09, anti-cheat measurements, maybe remove the CD Key check and one could unite all players on one version.

Well OpenSauce is really meant for programmers, its how new tags can be made (I mean actually programming what the tag is, not using OpenSauceIDE to actually make the tag be seen by Guerilla/Sapien)

@Kornman, is this source repo available to us (users)? If so, is there a link to said repo?

Kornman00
January 8th, 2011, 10:36 PM
Seeing as how OS 2 is still currently in development, I don't expect many people to be using it right now. Just like how there are two sides to HaloCE, the game and the editor, there are two sides to OS for HaloCE. Most people are only concerned about the side which has to deal mainly with the game (eg, what Battery did).

Below the game's message delta system, sits a data packet system (and below that, the engine's actual networking interface) that was also used for the Xbox days (the message delta system was developed to support the more distributed nature of the PC gaming). It is here where most of the low level (relative to the engine) networking is done in the engine's code. I wasn't talking about manipulating physical packets. The handshakes are defined though the data packet system so any changes or additions would need to be done there, and as I said earlier, I was only interested in building off the message delta system.

FS developed an installer for OS for CE a while back (the WiX project for it is in the source repo too). When an official release is produced, it will use the installer.

OS already supports 1.09. I don't have the time to develop an anti-cheat component for OS on top of everything else I'm working on (nor do I consider it worth my time). I will never remove the cd key check (1.09 doesn't even require you to have the CD in). I'm not interested in "uniting" pirates into the latest game version.

E @ Codebrain: It's been on Google Code (http://code.google.com/p/open-sauce/) for a while now. Thought I posted that in this thread earlier (guess it was in one of the more recent individual update threads).

CodeBrain
January 8th, 2011, 10:59 PM
E @ Codebrain: It's been on Google Code (http://code.google.com/p/open-sauce/) for a while now. Thought I posted that in this thread earlier (guess it was in one of the more recent individual update threads).

Sorry to keep on asking, but how exactly would I download this source code using TortoiseSVN/whatever you use?

Kornman00
January 9th, 2011, 12:13 AM
We use Mercurial (http://mercurial.selenic.com/downloads/) and VisualHG (http://mercurial.selenic.com/wiki/OtherTools#IDE_and_editor_integration), so you'd need TortoiseHg.

Dwood
January 13th, 2011, 03:30 AM
In my code I'm just messing around with the values in tag defintions. Can anyone see what's wrong? I'm using scenery.hpp, generated by scythe's os_tool.

Quick rundown: The idea is for people to call the script by the name of the object, so I go to the name list, to get the index of the name, then go to the sceneries, and iterate through them, checking their scenery type, and checking the name index number to see if they're the same.

Then, using that, and getting the scenery type, I should be able to iterate through the list of scenery in the scenario tag, getting to the scenery in there.

After that, the idea is to iterate through the list, and getting a pointer to the desired scenario object. Guess it's not that simple. Or, I'm just overcomplicating it. Anyways, if I can't figure this out, I'm just going to stuff it and make my own tag for these kinds of things.


cstring changeBitmapByObjName(cstring ObjName, cstring nextBMP) {
//objname in the name list of scenario
//nextBMP is more filler than anything right now
bool found_object = false;
int16 index = NULL;

for (int i = 0; i < Scenarion->object_names.Count; i++) {
if (strcmp (Scenarion->object_names[i].name, ObjName) == 0){
found_object = true;
index = i;
continue;
}
}

if (found_object) {
for (int i = 0; i < Scenarion->scenery.Count; i++) {
if (Scenarion->scenery[i].name == index){
return getShaderPathScenery(Scenarion->scenery_palette[i].name.name);
//it's always: players/cyborg/cyborg or whatever. NOT a scenery tag path like we want


}
}
}
cstring untrue = "false";
return untrue;
}

cstring getShaderPathScenery (cstring tagName) {

cstring string;
int x = 0;
for (x = 0; x < Yelo::TagGroups::Index()->count; x++)
{
if(Yelo::TagGroups::Instances()[x].group_tag == 0x7363656E) //Scenery
string = tagName;
//if (strcmp (string, tagName) == 0)
// return "true"; If It were working, the two if staments would be combined....

}
return string;
}

Dwood
January 13th, 2011, 05:32 PM
Turns out the problem was on this line:

return getShaderPathScenery(Scenarion->scenery_palette[i].name.name);

Instead of [i] I should have used [index]. Just needed to sleep on the issue. I spent about two hours trying to fix it last night. Found it in less than 5 minutes of turning on my computer. eff.

Kornman00
January 27th, 2011, 08:36 AM
Well, while I was neck deep in some gamespy code, I stumbled upon a way to load OS *without* using a dx9 hook (so you could use whatever dx9 hook that exists, no more having to do the d3d9_proxy.dll workaround) or an external loader. It'd still be in DLL form though of course, and I think I can set it up so that you can specify the DLL name via a command line argument, eg, "-os:OS.dll". The DLLs could then be placed in the HaloCE user directory (under the OpenSauce folder) too (I'd more than likely wouldn't use this setup for the OS HEK dlls however).

Patrickssj6
January 27th, 2011, 08:46 AM
No technical information on what you found? :P

Kornman00
January 28th, 2011, 09:47 PM
Who framed Roger wrabbit?

Patrickssj6
January 28th, 2011, 09:56 PM
You just watched that movie because of the hentai women.

Kornman00
February 19th, 2011, 09:03 PM
While this isn't strictly HaloCE related, I figured out a few things in H2Guerilla that are kind of interesting. The internal builds (as far as I can tell) had what was basically a "create restore point" hotkey for tags you have opened.

For instance, say I have a biped opened and was about to do some changes but the changes were just some new ideas and would affect multiple fields and block elements, potentially causing some problems. I'd hit this "restore point" hotkey and then that tag would have it's own restore point I can later go back and revert to. Each tag that is left open while running H2Guerilla will keep their restore points (so if you close the tag or H2G, the restore point will be lost). What's neat is that you can save the tag (eg, this theoretical biped tag) back to disk then say "oh ffffffffffffffffffffffffuck, I just borked the change colors block! oh ffffffffffffffffffffffffuck, and I've already saved the tag!" then be reminded that you hit the "create restore point" hotkey and be rest assured that the shit you just borked can be reverted. So you hit the revert hotkey and blam, the change colors block and all other fields are back to the same exact values as when you first created the restore point.

I also was able to get H2G's tag importer utilities to run; there's two, an auto pilot reimporter and a visual tool interface (as shown in the attached image). However, I haven't actually tested these to see if they properly run yet without further modifications (eg, it passes everything to h2tool and does a dance), but everything looks in order. In fact, it would even be possible to write custom re/importers for tags too using CheApe with the H2EK (with some elbow grease; 1-2-3-not it!).

I'd have to modify some of the program resources to actually make these features usable (for testing purposes I hacked in some ways to execute these utilities). Hopefully will be able to include at least the restore point feature in the H2EK OpenSauce builds (whenever they may be) however, it would require me to redistribute the H2Guerilla.exe since I'd be adding data, not just replacing (unless I used some 3rd party diff tools, but that still complicates things). Not sure I'm savvy with that (the current OS installer auto applies the CheApe extensions, no need to redist the HEK exes).

1996

sevlag
February 20th, 2011, 12:16 AM
would there be any way to do something like this for CE? this would be VERY useful when editing in CE

Kornman00
February 20th, 2011, 08:06 AM
Sure, if someone wanted to do it. I'm not that someone.

Kornman00
March 1st, 2011, 09:22 PM
For those not in the know, GameSpy released their SDKs to indie devs a while ago. I used the opportunity to update the structures documented in OpenSauce (http://code.google.com/p/open-sauce/source/browse/OpenSauce/Halo1/Halo1_CE/Networking/GameSpyApi.hpp?spec=svne41bd48d84f790efe55c3730834 ab0b6d0f59851&r=e41bd48d84f790efe55c3730834ab0b6d0f59851).

This release is a pretty big deal as it basically drops the pants on the GS systems. Albeit, the structures and some of the core code aren't exactly the same from 2003 (when HPC came out) as I saw when updating my engine documentation with the new SDK's information.

Part of Patrick's code for making the dedis report to multiple game versions is actually a mod of the function "qr2_check_send_heartbeat" (in qr2/qr2.c). I had fun going through this fountain of new information. I like having my code on point with correct or almost-correct names of whatever program I've RE'd.

Potentially, new gamespy features could be added to Halo...but don't look at me, I'm just saying potentially. At the same time, no one really has to fear about gamespy taking down the master server for HaloCE...someone could use the info in the GS SDK to create an emulator.

Patrickssj6
March 1st, 2011, 11:05 PM
So that's where you got your reserved spaces from :P

Something cool would be a WHOIS so the server shows its server location (country) based on IP? But for that you don't really need to occupy the reserved spaces in the GS communication thingy...

I cannot think of anything besides a flag that shows if the server is running OpenSauce.

Patrickssj6
March 4th, 2011, 09:16 AM
Double Pene

So your version changing actually works correctly now? Is there a way I could fix it in my exe in the mean time before OS gets released?

Dwood
March 4th, 2011, 11:33 AM
I'd like to know if in BlamLib there's a way to check if a map is protected before opening them. I just added a test class for cache extraction, and am seeing what can be done about that particular thing.

Edit: Also, I'm interested in FP animations... does anyone know if there's a way to find out what animation is playing?

Kornman00
March 4th, 2011, 03:10 PM
So your version changing actually works correctly now? Is there a way I could fix it in my exe in the mean time before OS gets released?
I haven't integrated the rolling-version-changer stuff into production code yet. I'd recommend writing a simple C# app that applies the changes you make so you're not releasing dedi.exe after dedi.exe...(and that allows you to change the app's build info too, so people know when it's old or new)

I'd like to know if in BlamLib there's a way to check if a map is protected before opening them. I just added a test class for cache extraction, and am seeing what can be done about that particular thing.
I've never dealt with protected maps using BlamLib (other than Reach) so there's no support for it in Halo1. I know I asked Steelix to make the first tag instance's (so, the scenario) group tag to be 'prot' but that was only for OS's sake. If he flags the map as protected somewhere in the cache header then I can see about adding support for them. If the only "flag" is that 'prot' thing I asked for way-back, then it will take some tweaking/hacking to the tag header/instances loading code.

CodeBrain
March 4th, 2011, 05:31 PM
I just compiled the Guerilla portion of the OpenSauce HEK project, and I have the dll file that Visual Studio built, but I can't seem to find a way to build the CheApe program (That or find it at all in the OpenSauce directory or the Halo CE directory)

How would I get CheApe?

Dwood
March 4th, 2011, 05:46 PM
I just compiled the Guerilla portion of the OpenSauce HEK project, and I have the dll file that Visual Studio built, but I can't seem to find a way to build the CheApe program (That or find it at all in the OpenSauce directory or the Halo CE directory)

How would I get CheApe?

use OpenSauce IDE

Kornman00
March 4th, 2011, 06:15 PM
CheApe is basically the codename for the editing kit modifications, just like how Yelo is for the game engine modifications. There's the native CheApe dlls (which you built) which are loaded by OS "enabled" HEK programs. Then there's the CheApe interfaces in OpenSauceIDE. The thing you want is "CheApe Applier" under the Tools menu. Click it, select Halo1_CE as the engine in the popup dialog, then specify all the paths. It will then apply the changes needed to copies of the selected source HEK exes (eg, tool and/or guerilla and/or sapien) then output the results to the specified directory.

Note: Just think of the native CheApe dlls as the CheApe runtime and the interfaces provided by the OpenSauceIDE as the CheApe SDK (tools).

From there you can use the main CheApe interface in OpenSauceIDE to build tag_groups.map cache files. You'd again select Halo1_CE as the engine in the popup dialog then use the CheApe project editor to build your additional editor data that will be used by the CheApe runtime proper.

To give some history on CheApe: It initially began (around this same time, back in 2006) as a Guerilla-only modification as sort of a proof-of-concept for allowing designers to document tag definitions. I started off with only allowing new tag groups to be defined (instead of overriding existing ones, which is what a designer would need the ability to do in order to markup the tags with their own comments and such) and went from there (never really did work on allowing it to override existing tag groups since it was no longer a PoC project). Eventually I added tool and sapien support and eventually added support for things besides custom tag groups (eg, custom scripting definitions and HEK EXE fixups). I kept the tag_groups.map name just for legacy's sake, though I probably could have gone with "CheApeCache.map" or whatever instead.

Dwood
March 4th, 2011, 06:45 PM
He can't compile LowLevel.dll, his boost set up is borked or something.

Kornman00
March 4th, 2011, 07:08 PM
http://www.boostpro.com/download/

Patrickssj6
March 4th, 2011, 08:57 PM
I haven't integrated the rolling-version-changer stuff into production code yet. I'd recommend writing a simple C# app that applies the changes you make so you're not releasing dedi.exe after dedi.exe...(and that allows you to change the app's build info too, so people know when it's old or new).
I could certainly write a patcher but my question was really, do you have any idea how I could fix this problem we are having?

CodeBrain
March 5th, 2011, 08:38 PM
After applying the changes to the regular HEK exe's using OpenSauceIDE, the following occurs:

1. OS_Guerilla fails to load. It opens for one second before automatically closing. debug.txt shows the following:


03.05.11 20:30:56 guerilla pc 01.00.09.0620 ----------------------------------------------
03.05.11 20:30:56 reference function: _write_to_error_file
03.05.11 20:30:56 reference address: 4011a4
03.05.11 20:30:56 EAX: 0x004E121A
03.05.11 20:30:56 EBX: 0x77656101
03.05.11 20:30:56 ECX: 0x00000000
03.05.11 20:30:56 EDX: 0x00000000
03.05.11 20:30:56 EDI: 0x0018F1F8
03.05.11 20:30:56 ESI: 0x00000000
03.05.11 20:30:56 EBP: 0x0018F0D0
03.05.11 20:30:56 ESP: 0x0018F0C0
03.05.11 20:30:56 EIP: 0x77B50BD2, 83 C4 04 C2 ?????
03.05.11 20:30:56 EXCEPTION halt in \halopc\haloce\source\memory\data.c,#544: data2. OS_Sapien has no problems. Works as intended.

3. When called upon by Command Prompt, OS_Tool shows commands up to "import-device-defaults" before spitting out an error:


EAX: 0x00000000
EBX: 0x0060F601
ECX: 0x00000000
EDX: 0x00000000
EDI: 0x0018FB40
ESI: 0x00000000
EBP: 0x0018FA18
ESP: 0x0018FA08
EIP: 0x77B50BD2, 83 C4 04 C2 ?????
EXCEPTION halt in \halopc\haloce\source\cseries\debug_memory.c,#160: Attempted an operation with pointer at 0x6e2cf0 when no pointers have been allocated. (\halopc\haloce\source\tag_files\tag_groups.c:2637 )Any idea on what this would mean?



Edit: Dwood helped me with this problem, you need the CheApe dll files in the Halo CE root Directory as well as OpenSauceIDE's files as well

Rainbow Dash
March 18th, 2011, 10:41 AM
Since it's not listed anywhere as far as I can tell in the first post, where do I extract these fucking files?

Kornman00
March 20th, 2011, 04:31 PM
Just pushed some changes to the code repo that largely relate to CacheView in OpenSauceIDE. Opens all supported engine's cache files and displays their information. Haven't finished adding the UI code for tag extraction yet, however.

Kornman00
March 22nd, 2011, 07:56 PM
Just pushed some WIP changes, mostly relating to CacheView's tag extraction. Haven't done any specific testing yet for the extraction UI logic, but it's based mostly off the old H2GuerillaRadio code and the current BlamLib.Test's tag extraction unit tests. The most code hacks I've done in a long time, but I'm just doing this to finally have a UI over the extraction APIs that I can use. End users beware.

2028

Goldkilla
March 25th, 2011, 09:11 PM
03.25.11 21:01:41 file_open('tags\i've got a lovely bunch of corncobs.project_yellow') error 0x00000002 'The system cannot find the file specified. '
03.25.11 21:01:41 couldn't open project_yellow tag 'i've got a lovely bunch of corncobs.project_yellow'.
03.25.11 21:01:41 failed to load scenario tag 'levels\test\tutorial\bkup\tutorial'
03.25.11 21:01:41 Increasing sound decompression buffer size to 1048576 bytes
03.25.11 21:01:41 file_open('tags\i've got a lovely bunch of corncobs.project_yellow') error 0x00000002 'The system cannot find the file specified. '
03.25.11 21:01:41 couldn't open project_yellow tag 'i've got a lovely bunch of corncobs.project_yellow'.
03.25.11 21:01:41 failed to load scenario tag 'levels\test\tutorial\bkup\tutorial'
03.25.11 21:01:41 need to get the following tags:
03.25.11 21:01:41 i've got a lovely bunch of corncobs.project_yellow
03.25.11 21:01:41
03.25.11 21:01:41 game_load() failed.


:L

Kornman00
March 25th, 2011, 09:45 PM
The files hosted on the first page are outdated and thus no longer supported. Since OS is still in development, the only supported builds are current builds based on the most recent codebase (http://code.google.com/p/open-sauce/). Right now, only people who know their way around visual studio can compile a build since, like say, it's still in development.

Dwood
March 25th, 2011, 10:25 PM
Why don't you just remove those downloads from the front page already? :P

Kornman00
March 25th, 2011, 11:23 PM
Punishment for those who don't read :p. I really hate when people don't read or BTFW (browse the fucking web). Sometimes I hate myself, but that's beside the point.

And I have a firm belief in that, when it comes to the internet, nothing should ever be removed, only appended. When the next version of OS is ready, this thread will get locked (since I can still lock my own threads) with a last post pointing to the new OS thread.

Goldkilla
March 25th, 2011, 11:40 PM
Can you make it compatible for V1.9 please? I really want to see what OS can do, but it's hard with that error...

Dwood
March 26th, 2011, 12:14 AM
Can you make it compatible for V1.9 please? I really want to see what OS can do, but it's hard with that error...

If you tried it right now you'd be underwhelmed. Better to get a build of halo 1.08, and OS postprocessing because the features on that version are readily apparent.

Kornman00
March 26th, 2011, 02:38 AM
The current codebase is compatible with 1.09

Dwood
March 26th, 2011, 02:49 AM
The current codebase is compatible with 1.09

Yeah, but until scythe (re) publishes his postprocessing and shader replacement format//a way to compile the new versions that's compatible with current builds... I modified like 30 shaders via the replacement, I am vry sad to see them go :(

Patrickssj6
March 26th, 2011, 12:37 PM
Is that GUI written in C++? Then balls to you sir. :v:

Kornman00
March 26th, 2011, 03:36 PM
It's .NET

Goldkilla
March 27th, 2011, 01:16 AM
If you tried it right now you'd be underwhelmed. Better to get a build of halo 1.08, and OS postprocessing because the features on that version are readily apparent.

I how can I switch without using that crappy Version Changer? I want to change my version back to 1.07. I hate 08-09.

Kornman00
March 27th, 2011, 01:44 AM
I don't know what your options are right now (so I can't help you right now), but we plan on supporting an in-game version changer in the next OS release (via a script function, which you can execute through the console).

Goldkilla
March 27th, 2011, 02:18 AM
Can you at least open the damn thing with OS enabled on 1.09? You can't change your version with console if you can't even open Halo. ;)

Cortexian
March 27th, 2011, 08:48 PM
Version Changer is the best solution out there, not to mention extremely easy to use and install. If you can't use it why are you even concerned about Open Sauce? It's way beyond you.

Kornman00
March 28th, 2011, 11:57 AM
Our compatibility systems are starting to come online. For instance, I've got it setup to where OS now uses ".yelo" files for OS-enabled maps. It's pretty transparent to the end user, as they still see the same map name in-game. However, the retail game will never touch the .yelo files and will thus never crash from OS shenanigans.

There is one caveat to the system, however. If there's a "bloodgulch.map" and a "bloodgulch.yelo", the game will always pick the .map version. I didn't want to take 3 characters away from modders and their map names by placing an 'OS_' prefix. It will be up to them to do that. Or think of more clever names.

Next on the list is seeing if we can incorporate an extra gamespy query field that basically says "we're running OS lulz!". If it causes stock clients to fail when browsing the server list, I may nix the idea. It's better than forcing all OS users to a custom server list. We want to give users wings, not funnel them into a prison cell.

Dwood
March 28th, 2011, 09:25 PM
Is there a way for gamespy to use a secondary password or something? Then we can have an Open Sauce password that stops them from getting into the game without opensauce or something like that.

Kornman00
March 28th, 2011, 10:59 PM
no

Patrickssj6
March 29th, 2011, 09:55 AM
Everyone trying to enter the server without OpenSauce will be OSOD'd.

Jelly
March 30th, 2011, 01:04 AM
I've been messing with the preview dll in the OP; positioning weapons, adjusting FOV etc, but every time i left click to save the game freezes and sound loops. Tabbing out gives me an exception window.

Windows 7 32bit, directX up to date.

Exception details:


Source
Halo

Summary
Stopped working

Date
*30/*03/*2011 06:00

Status
Report sent

Description
Faulting Application Path: C:\Users\alex\AppData\Local\Halo Custom Edition\haloce.exe

Problem signature
Problem Event Name: APPCRASH
Application Name: haloce.exe
Application Version: 1.0.8.616
Application Timestamp: 489a3b7e
Fault Module Name: d3d9.dll
Fault Module Version: 2.0.0.1
Fault Module Timestamp: 4a984fec
Exception Code: c000001d
Exception Offset: 0000781e
OS Version: 6.1.7601.2.1.0.768.3
Locale ID: 2057

Extra information about the problem
Bucket ID: 2375969051

nuttyyayap
March 31st, 2011, 06:08 AM
Quick question, could you re-enable shader_transparent_genric with OS in any way, or is that completley dead for CE?

Kornman00
March 31st, 2011, 04:51 PM
I wasn't aware that is "disabled"

Wholfe
April 9th, 2011, 08:02 PM
^apparently its not supported anymore in the pc version, the shader transparent generic was in the xbox and was used to create the shield effects for covie equipment. very simplified way of getting the shield flash effect.

Dwood
April 14th, 2011, 12:21 PM
System.Reflection.TargetParameterCountException: Parameter count mismatch.
at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture, Boolean skipVisibilityChecks)
at System.Delegate.DynamicInvokeImpl(Object[] args)
at System.Windows.Forms.Control.InvokeMarshaledCallba ckDo(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallba ckHelper(Object obj)
at System.Threading.ExecutionContext.runTryCode(Objec t userData)
at System.Runtime.CompilerServices.RuntimeHelpers.Exe cuteCodeWithGuaranteedCleanup(TryCode code, CleanupCode backoutCode, Object userData)
at System.Threading.ExecutionContext.RunInternal(Exec utionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ExecutionContext.Run(ExecutionCon text executionContext, ContextCallback callback, Object state)
at System.Windows.Forms.Control.InvokeMarshaledCallba ck(ThreadMethodEntry tme)
at System.Windows.Forms.Control.InvokeMarshaledCallba cks()

Attempting to extract a globals.globals tag with OpenSauce IDE extractor into folder with dependents

Kornman00
April 14th, 2011, 03:31 PM
CacheViewer has been WIP for a while. At first I just did a port of GuerillaRadio's logic with some async operation support. Then I started moving that to work with BackgroundWorker systems. The later code got accidentally committed when I was pushing some changes for something else (and I haven't pushed new changes for it yet since it's not finished).

If you're going to work with code from the repo, you need to know how to debug or at least know how to evaluate problems. None of that information even remotely helps me, especially since it's a stack dump of MS code (with no link to my own).

Dwood
April 14th, 2011, 10:07 PM
CacheViewer has been WIP for a while. At first I just did a port of GuerillaRadio's logic with some async operation support. Then I started moving that to work with BackgroundWorker systems. The later code got accidentally committed when I was pushing some changes for something else (and I haven't pushed new changes for it yet since it's not finished).

If you're going to work with code from the repo, you need to know how to debug or at least know how to evaluate problems. None of that information even remotely helps me, especially since it's a stack dump of MS code (with no link to my own).

Linking it to the debugger doesn't work. can you replicate the problem?

Goldkilla
April 16th, 2011, 11:13 PM
Can you make it so the OS Sapien won't bitch to you about how your AI/Biped has a dialog tag but no mouth data (Mouth Animations)? It lags the whole fucken thing and get pretty damn annoying after awhile.

Kornman00
May 3rd, 2011, 10:28 PM
This will probably be my last post in this thread. Couldn't hold this back any longer (http://carnage.bungie.org/haloforum/halo.forum.pl?read=1069342).

Siliconmaster
May 4th, 2011, 10:35 AM
Epic. And detail maps? Holy crap.

FireScythe
May 4th, 2011, 11:45 AM
To be specific, 1 base normal map, 2 detail normal maps (masked by the base normals alpha channel) and 1 specular colour map :).

Siliconmaster
May 4th, 2011, 11:47 AM
Well hot damn. Beautiful work.

Rainbow Dash
May 4th, 2011, 12:12 PM
Very nice.

Disaster
May 4th, 2011, 05:32 PM
:o

Ifafudafi
May 4th, 2011, 06:53 PM
To be specific, 1 base normal map, 2 detail normal maps (masked by the base normals alpha channel) and 1 specular colour map :).

WHY DO YOU DO THESE THINGS AFTER 90% OF THE COMPETENT USERBASE HAS RETIRED

goddamn I would've loved to have normal maps in ASCM, if you guys end up releasing something even bigger I won't be able to keep myself from updating the bloody thing

stop now

The_Cereal_Killer
May 4th, 2011, 07:11 PM
Wow, and here I've been still using "a hobo" and "kornman00" all this time, wish I'd seen this sooner!

Dwood
May 5th, 2011, 08:58 AM
, if you guys end up releasing something even bigger I won't be able to keep myself from updating the bloody thing

You can write your own shaders and compile them in the map and any os thing will work with it... what more do you want?

Rainbow Dash
May 5th, 2011, 09:07 AM
This needs more documentation.

Or an FAQ or something.

first off can these new tags be compiled into a normal halo map file and run on clients without a bunch of extensions, or whatever?

Dwood
May 5th, 2011, 09:57 AM
first off can these new tags be compiled into a normal halo map file and run on clients without a bunch of extensions, or whatever?

Yes. All they would need is that specific OpenSauce dll. The maps won't break if people load the map without the OS dll, either. They just won't be able to use those normal maps

Kornman00
May 5th, 2011, 10:48 AM
The only thing which would cause your map to be incompatible with the stock game would be if you used OS's memory upgrades (eg, more tag memory, new script functions, etc). When you build a map using the new build-cache-file-ex, it uses a ".yelo" extension instead, which a stock game will never use. However, we currently don't perform checks when you use the regular build-cache-file, to see if you're using any of the new script functions/globals exposed by OS (you're expected to use build-cache-file-ex).

Of course, if you're not running OS, none of the new tags will be used, so none of your detail maps will be rendered, and you'll be back to the old days.

As far as a FAQ goes, it's the reason why I don't respond to anyone over IM with individual questions. You got something to ask, ask it in an active thread so everyone can learn from the response. I don't have time right now to produce a detailed FAQ when I'm developing the OS codebase (which has more to it than some HaloCE related stuff), working on halomods, working on other code, and working in real life.

The_Cereal_Killer
May 5th, 2011, 11:00 AM
Most likely this has already been asked, but what's the issue with the d3d9.dll message saying one of the programs tried to access it but it is only compatible with Halo CE? I downloaded the new one from the attachments in the OP and renamed it to the original one, and it still gives the same error.

Kornman00
May 5th, 2011, 11:13 AM
The build in the first post is insanely old, and unsupported (and doesn't have all the features found in that vid). As far as that message, we have checks in place to make sure that Halo is trying to load it, and if the app isn't Halo, it will throw up that warning. The current codebase will silently ignore cases where say Sapien or Tool tries to load the local d3d9.dll.

The_Cereal_Killer
May 5th, 2011, 11:24 AM
Considering there are 50 pages to look through, could you give me a link to download the newest version? :P

Kornman00
May 5th, 2011, 12:23 PM
The next RC hasn't been released yet.

FireScythe
May 5th, 2011, 12:25 PM
You can write your own shaders and compile them in the map and any os thing will work with it... what more do you want?

So that people don't get the wrong idea, you can compile post process shaders into tags that get added to the map cache, but you cannot create your own model pixel/vertex shaders.



This needs more documentation.

Or an FAQ or something.

first off can these new tags be compiled into a normal halo map file and run on clients without a bunch of extensions, or whatever?

I've written documentation for my post processing and shader extensions which i'll make available when/shortly after OS is released.

As Korn said, adding post processing tags and/or the shader extensions on their own won't cause non-OS clients to exception. However, using the post processing script functions would, unless they were avoided using conditionals.

A caveat to this in the shader extension is that using a specular colour map results in the parallel and perpendicular colours being used to tint the specular colour map by multiplying it. So if you don't want those values to tint the specular colour map you would set them to white, and that would make the specular reflections on vanilla CE white as well. It would look bad, but wouldn't exception :).


Yes. All they would need is that specific OpenSauce dll. The maps won't break if people load the map without the OS dll, either. They just won't be able to use those normal maps

OpenSauce isn't a lone DLL dropped into your HCE folder, it has resources files that it depends upon, all of which will be neatly packaged into an MSI installer.

Rainbow Dash
May 5th, 2011, 01:06 PM
ty fs <3

The_Cereal_Killer
May 5th, 2011, 01:06 PM
The next RC hasn't been released yet.
Ah, I thought you were implying you had posted it somewhere else within the topic. Well, looking forward to its fruition!

Kornman00
May 5th, 2011, 01:41 PM
Oh, no, sorry not yet. With the release of Halomods and some personal problems, our OS schedule kind got shook up. We're currently targeting the next RC for very soon. Then once we know that all systems are green, we'll settle on a final release sometime after that.

The_Cereal_Killer
May 5th, 2011, 02:10 PM
I just found the video you mentioned (and once again, apologies for any repeated questions) but I was wondering - you said the implementation of those effects were done via script, are they new commands added to the engine which will be included in the next build (along with a list of them, I'd hope, haha) or did you unlock the dozens of rasterizer commands which have previously only been available in Sapien, not in-game?

PS I registered at Halomods.