|
Post by TinyTerror on Mar 26, 2006 18:59:13 GMT -5
Ok, I'll do a test release with the sound and shared pages libraries enabled. I need to do a bit of testing on those first.
|
|
|
Post by snoopie on Mar 27, 2006 6:36:31 GMT -5
good man
|
|
|
Post by Jimmytime on Mar 28, 2006 19:58:49 GMT -5
I'd be up for an update w/o graphics included, i'm looking forward to developing again :^) btw, either way you decide, much appreciated man
|
|
nebula
Junior Member
fear.
Posts: 59
|
Post by nebula on Apr 4, 2006 6:04:45 GMT -5
heh, i haven't played ffxi in awhile, its good to see things are still moving over here <3 tiny
|
|
|
Post by TinyTerror on Apr 4, 2006 7:14:39 GMT -5
Sigh, still working on it. I just have no time.
|
|
|
Post by me3you2 on Apr 4, 2006 13:01:13 GMT -5
Take your time. The Expansion comes out soon. It might put you back at square one.
|
|
|
Post by TinyTerror on Apr 4, 2006 17:36:43 GMT -5
Yeah, thats sort of a problem. Starhawk is expecting it to mess up 50 to 75 percent of the memlocs. None of the other features should be impacted though. If anything, it would give me more time to test and polish the new code. Half the problems with the last version were related to rough edges that people didn't know how to deal with, or impropper installation. I want to sit down and make a setup program to ease the install, as the new version has a few extras that need to go in various system dirs for lunar to work right.
|
|
|
Post by snoopie on Apr 4, 2006 19:01:24 GMT -5
ok, im a programmer and im one semester away from a bachelors in computer science, but im gonna act like a total noob and ask what is a memloc and why would a new update from ffxi mess that up?
|
|
|
Post by X-Drop on Apr 4, 2006 21:29:24 GMT -5
ok, im a programmer and im one semester away from a bachelors in computer science, but im gonna act like a total noob and ask what is a memloc and why would a new update from ffxi mess that up? I'm an electrician, not a programmer... My understanding is that a memloc (memory location) is the address which a particular piece of data is stored. The concern with every FFXI update is that any number of addresses have the potential to change their location. I know this is Starhawk's specialty and completely over my head, but I thought Starhawk rewrote the ffxiread.dll to be more robust and dynamic when dealing with new patches?
|
|
|
Post by TinyTerror on Apr 4, 2006 23:12:57 GMT -5
Ok, I'll try to make this simple.
When you start ffxi (or any program), it loads into memory. The memory is subdivided into 4 byte words, with each one assigned a memory location. Most the memory occupied by ffxi as it runs is unusable garbage, like textures, models, or sound data. In the context of lunar, a memloc is a memory location that contains useful data. Memlocs come in the form of offsets. An offset is the number of words of memory away from the start of ffxi's memory block a specific piece of memory is. Say for example you have a memloc 0x4F (this is only an 8 bit memloc, real ones are 32 or 64 bits). This memloc points to a place in memory 79 words from the start of ffxi's memory. Using the memloc as a sort of bookmark, you can look at the memory in at the address and extract the data from it. There are various tools used to find these memlocs. Its a bit of an art form.
The problems start when SE releases patches. The memory we do most of the reading from is in ffximain.dll. Different versions of ffximain.dll are very similar, with the only differences being a few thousand words of memory added in different places in the file. Now think about what happens to a memloc when SE adds lets say 758 words of memory at some point in memory before your memloc. If you continue to use the same old memloc, you get garbage data. In lunar we see this when game data functions return zeros. In order to fix the memloc, you have to shift it back into the right address for the data we want. All thats needed is to add 758 to the memloc and you are good to go! Easy right?
Suuuuurre.
SE doesn't release info on the differences in new versions of ffximain.dll. Not only do we have shifts in the addresses, but changes in memory structures as well. It takes a LOT of work to find the new locs. Fortunately starhawk and some others have come up with slick little memloc libraries that adapt to patches on the fly, allowing 75% of the memlocs to keep working insted of 20% or 30% after a patch. The system is far from perfect and still requires alot of manual tweaking to get it back up to 100%. In some severe cases, a memloc can be lost all together. This mostly happens when SE changes something major in the code, making it impossible to find a lock again.
Currently the dev version of lunar can see about 90% of the memlocs I am shooting for. Starhawk is working hard to find the rest.
|
|
|
Post by TinyTerror on Apr 4, 2006 23:22:03 GMT -5
So yeah, the sound code isn't working. I think this has something to do with FFXI getting exclusive locks on directsound for its process. This is the same root cause of the problems with getting keyboard input. FFXI was coded by a bunch of retards. Nothing works like it should. Trying to get lunar to play nice with FFXI is like getting kicked in the crotch once every 5 minutes for a week and a half. I have a plan though, and a mighty plan indeed. If ffxi is going to prevent me from grabbing input or messing with sound from within the lunar plugin, I will make a small seperate program that runs alongside of lunar and feeds it input data as well as playing sounds. It would be super easy to write, and would allow for a whole lot of really awsome features. The only problem is that it will require a slight architecture change in lunar. No biggie. Network programming is what I do.
I know you guys are ready for a new release, and I know I have been telling you its comming. I might have to make a release with all of the features of the previous version, but with fixed memlocs and better stability. The new features might have to wait. I will beat ffxi to within an inch of its life with the nail bat that is lunar this weekend. If I am lucky, I will be able to give you something to play with.
|
|
unzzi
New Member
Posts: 5
|
Post by unzzi on Apr 5, 2006 8:40:55 GMT -5
I might have to make a release with all of the features of the previous version, but with fixed memlocs and better stability. That's everything I ever hoped for. New features can wait I'd just want to be able to play around with lunar without pol crashing so frequently especially when reading chat. Thanks for all the hard work you have put into this already and hope you can put out a stable version soon .
|
|
|
Post by TinyTerror on Apr 5, 2006 9:52:46 GMT -5
As far as I know the new version is more stable. The chat stuff is all recoded and dethreaded. I also redid the semaphore code for all the libraries to make them more stable as well. Getting a functional stripped version out shouldn't be a problem at all. I might even be able to do it before the weekend if I can find a few free hours after work where I am not extremely tired or otherwise occupied. Starhawk gave me some prototype memory code last night, so everything is in place for an update.
|
|
|
Post by snoopie on Apr 5, 2006 14:09:44 GMT -5
ok, only because ive done some ASM, and some TCP programming (I HATE bit manipulation!!!), i now know exactly what ur talking about with the memloc and offset (i just didnt know memloc meant memory location). what i dont know is how u found the memloc in the first place, and how u refind it after an update.
|
|
|
Post by TinyTerror on Apr 5, 2006 15:10:45 GMT -5
I didn't find anything. Memloc code is all starhawk's department. I use his code soe I dont have to write my own for lunar.
|
|