As cautiously hoped for, fixing the gcc inline assembly in updatereflects has fixed the kv6s. Check the temp branch on my github shortly. no_asm will not benefit because the C is still broke, and that branch contains no assembly as its name states.
Also, running the game from share to load the test map works again. (it didn't for time being). That means the game crashing when you shoot something appears to be the last major bug.
Porting Voxlap
-
Sonarpulse
Coder
- Posts: 443
- Joined: Thu Dec 13, 2012 7:18 pm
Phew, it's finally holidays next week! I'll have plenty of time to finish that function map. To be honest, I'm hardly through the file related functions xD
It's a Christmas miracle!
-
Sonarpulse
Coder
- Posts: 443
- Joined: Thu Dec 13, 2012 7:18 pm
Oh cool! I forgot you were working on that, Vlad. With luck, Conservative will compile by then too.
I just spent two hours tracing all the function calls for loadnul() and all of it's subfunctions... I'm not done yet.... Here's my progress: http://www.lucidchart.com/invitations/a ... 100a005798
I had to create an entire new documnet just to contain the function map of this single function...
Why Ken Silverman? WHYYY did you have to make Voxlap this complicated!?!?!
I had to create an entire new documnet just to contain the function map of this single function...
Why Ken Silverman? WHYYY did you have to make Voxlap this complicated!?!?!
It's a Christmas miracle!
-
Sonarpulse
Coder
- Posts: 443
- Joined: Thu Dec 13, 2012 7:18 pm
Cool work! Yeah voxlap is over the top. It's all in the name of optomization, though with compilers these days I am not sure how much of that still applies. Also have you heard of http://www.gnu.org/software/cflow/manual/cflow.html ? I may not understand what you are doing correctly, but this might automate it to a certain extent.
Heeyyy, I didn't think of making an application that automates this for me... thanks Sonar, I'll look into it
It's a Christmas miracle!
-
Cajun Style
Deuced Up - Posts: 145
- Joined: Fri Dec 07, 2012 11:04 am
GJ Sonar and Vlad. I have been slacking off >_>;
Interesting to see white models were introduced with removal of assembly. It isn't farfetched that all original C alternatives were untested... I had assumed Sonar rewrote the C uptil now >,< Oh, fail is me. Hopefully you can translate the assembly in question... oh wait, it works >_<
BTW I did a rebase, because it seemed I had some funky manual merges in my tree. Also I discovered git merge-base <3
Interesting to see white models were introduced with removal of assembly. It isn't farfetched that all original C alternatives were untested... I had assumed Sonar rewrote the C uptil now >,< Oh, fail is me. Hopefully you can translate the assembly in question... oh wait, it works >_<
BTW I did a rebase, because it seemed I had some funky manual merges in my tree. Also I discovered git merge-base <3
Maps planned: Z-Fighting, Hallway Lite, Chaos Redux, Random Maze, FHQ Infiltration, Greece Push, Dracula's Castle, New York.
-
Sonarpulse
Coder
- Posts: 443
- Joined: Thu Dec 13, 2012 7:18 pm
VladVP: I doubt i can handle function pointers in the general case, but voxlap does have too many of those, so it should do a decent job.
Cajun: Don't worry, we all were for a while there. Yeah I would of assumed ken made the C first to test the assembly against it, but evidentally that is not the case. Alternatively there was a time when the C did work but some change elsewhere broke that. I wonder of he made any tests at all, as those would be extremely usefull for finishing this.
I can see that Vlad has updated to my latest version. I guess you haven't pushed to github yet, Cajun. Also, if either if you could see what I've done to fix the assembly in the last couple commits on conservative and repeat the process on the remaining blocks, that would be MUCH appreciated. It's a very mechanical process, I just have a busy week.
Cajun: Don't worry, we all were for a while there. Yeah I would of assumed ken made the C first to test the assembly against it, but evidentally that is not the case. Alternatively there was a time when the C did work but some change elsewhere broke that. I wonder of he made any tests at all, as those would be extremely usefull for finishing this.
I can see that Vlad has updated to my latest version. I guess you haven't pushed to github yet, Cajun. Also, if either if you could see what I've done to fix the assembly in the last couple commits on conservative and repeat the process on the remaining blocks, that would be MUCH appreciated. It's a very mechanical process, I just have a busy week.
-
Sonarpulse
Coder
- Posts: 443
- Joined: Thu Dec 13, 2012 7:18 pm
-
Cajun Style
Deuced Up - Posts: 145
- Joined: Fri Dec 07, 2012 11:04 am
I have just pushed.
Here's a little callgraph I wrote while plowing through the functions. It is exhaustive for the top/parent functions listed.
That program looks very promising, and might deprecate all manual efforts though.
Just to be sure, this is the kind of changes you meant, Sonar?
git diff 680ea132 a2307944
That looks like an Intel to AT&T conversion...which I thought wasn't necessary???
Here's a little callgraph I wrote while plowing through the functions. It is exhaustive for the top/parent functions listed.
Spoiler:
Just to be sure, this is the kind of changes you meant, Sonar?
git diff 680ea132 a2307944
Spoiler:
Maps planned: Z-Fighting, Hallway Lite, Chaos Redux, Random Maze, FHQ Infiltration, Greece Push, Dracula's Castle, New York.
-
Sonarpulse
Coder
- Posts: 443
- Joined: Thu Dec 13, 2012 7:18 pm
Fetched you changes. I still need to look through all of them but thanks. Cajun_no_asm is merged and not rebased but I guess that is fine for now. You haven't done anything with conservative or normal no_asm so you might as well reset those to where mine are however.
Functions like hrendzsse, hrendnozsse, etc are much bigger so it's probably too much effort to do that, at least initially. If you look hrendzsse or expandbit256, you can see I only needed to change the lines which had something to do with an array or variable accessed by it's symbol (constant address after linking). gcc doesn't mangle those symbols for you, so I had to make [p] constraints (constant resolved at link time) for each symbol/address used like that, and convert those lines, but only those lines, to gcc inline assembly.
So if it's shorter, try your hand and converting the whole thing too gcc syntax with no fixed registers (most efficient), but just initially to get conservative to build, just converting the lines with symbols will suffice. Again, expandbit256 is probably the best example of that.
Cajun Style wrote:That looks like an Intel to AT&T conversion...which I thought wasn't necessary???Yeah that's it all right. Here's the thing: the lines that have that use constraints (like %[asdf_name] ) need to be converted to GCC syntax. I could have left fixed registers like "mmx1", but instead I converted them all to constraints, so just about every line needed to be made to gcc syntax.
Functions like hrendzsse, hrendnozsse, etc are much bigger so it's probably too much effort to do that, at least initially. If you look hrendzsse or expandbit256, you can see I only needed to change the lines which had something to do with an array or variable accessed by it's symbol (constant address after linking). gcc doesn't mangle those symbols for you, so I had to make [p] constraints (constant resolved at link time) for each symbol/address used like that, and convert those lines, but only those lines, to gcc inline assembly.
So if it's shorter, try your hand and converting the whole thing too gcc syntax with no fixed registers (most efficient), but just initially to get conservative to build, just converting the lines with symbols will suffice. Again, expandbit256 is probably the best example of that.
-
Cajun Style
Deuced Up - Posts: 145
- Joined: Fri Dec 07, 2012 11:04 am
I'm sorry but it seems those things that need converting are the hardest to understand. I couldn't find a tutorial or reference as to what "constraints" mean exactly in this context. (Or what the syntax is exactly.) I hope Vlad understands. Otherwise a script, teaching us, or doing it yourself are the options.
Maps planned: Z-Fighting, Hallway Lite, Chaos Redux, Random Maze, FHQ Infiltration, Greece Push, Dracula's Castle, New York.
-
Sonarpulse
Coder
- Posts: 443
- Joined: Thu Dec 13, 2012 7:18 pm
If you look through the thread I describe it in pretty good detail a couple times, but I'll admit searching for that is annoying. I mean I would probably get to it within the next mouth, but if you and vlad take a stab at and it can get done sooner. If you make an attempt I'll certainly comment on it, that's probably the fastest way to learn.
Who is online
Users browsing this forum: No registered users and 16 guests