Wednesday, August 25, 2010

So sorry...

I'll admit it. I've been bad. I've received two donations and delivered several promises about the impending new version and I haven't released anything in nearly five months. Well, I'm tired of that. I'm tired of going to sleep at night knowing that I'm keeping people waiting. Let me try to explain where I'm at since it's been over a month since my last post.

First of all, my job has gotten a bit more demanding. That's where I've done most of my developing of this. It's hard to code for a while on these projects then have to do some more code on a job-related project. I get paid to work so that takes priority over almost everything else. Unless someone's willing to donate more than my monthly salary for this (which is HIGHLY unlikely) then that's the way things are going to stay.

Secondly, I'm still frustrated that I can't get the models to display correctly. I've got someone who would be willing to help me find out how to perform the vector transformations. However, I will probably just put this aside and save it for the update AFTER the one I'm trying to get out.

Thirdly, The disassembly looks different and wrong in the in-progress edition of PrC. I've got to fix it before I release this or it won't work for most people's purposes. It also allows stat editing that Hojo does AND the formation AI that T.Fergusson brought up a while back will be editable too. I hope to have it working completely soon. Things have also moved around. The buttons for Edit AI and Animations have been removed and placed on menu items. I thought the buttons looked tacky anyway.

That's what I got. During my down time I have been taking a break from this, but now I feel ready to get into it again. Hopefully, this will be ready by WM's second B-Day. Oh, WM is done and ready for the most part. There's not much change to it though.

Wednesday, July 14, 2010

What's holding this back....

So I've dropped hints along the way that the next versions of WM and PrC are going to be better than they are right now. This is true. They will. ;) But what's holding them back?

Well, I want to release them at the same time. WM isn't having any significant change other than it will let you choose the damage equation more easily. PrC is going to see a wealth of change, but it's going through some testing right now. All I have to do is make this become this and it's smooth sailing the rest of the way. For those that don't know, that first picture is probably the hardest part. Everything else is positioning and rotating.
It can already display the battle backgrounds fairly well too since they (at least most) don't really have any animations. Textures' transparencies aren't being handled correctly, but I think that's a known flaw in the way DX9 handles textures and transparencies. There's also some gradient blurring effects going on that I'm not going to mess with. I just want to be able to produce correct-looking models for the battle preview.

That and the disassembly of AI is taking a new turn and not looking right. I still have some work to do on that. That's probably going to be a cake-walk compared to getting these models to display correctly.

Friday, June 18, 2010

Forgot to Publish this post.....

Whoops. I started to write this yesterday but forgot to hit the "Publish Post" button. It's important too because I need some feedback.

In the spirit of my last post I've started allowing enemy stats to be edited. Problem is, enemies already have a window devoted to attacks and animations and the like. In order for it to be as editable as possible, I'd like to have it all enemy-related data be on one window. Problem is that's a LARGE window for all that. :( These have been important features of PrC for a while too so I don't want to bury them deeper. Re-arranging these things the way I REALLY want them to be would be a nightmare. It can be done, but that means changing almost EVERY layout and making everything larger. I may do something like that in the future since I need some MDI practice, but let's focus on the present for now.

I did away with the "Edit AI" and "Animation/Formation" buttons. They were always an eyesore to me. Instead I made new menu options that contain them. Now it'll take two clicks to get to each of these instead of one, but I don't see that as being a horrible thing.

So the feedback I need is this: should I try to combine the animations page with the stat page or just make links to them both from the other?

Also, for item drops/steals/morphs I have it ready to open a KERNEL.BIN/kernel2.bin file to read the item names. I don't want to use the stock names (especially in English) so I suppose I have to load these. Should I make it mandatory? If I do that, why not copy the attack data from the KERNEL.BIN attacks and make those static within the scenes that contain them?

Monday, June 14, 2010

Enemy editing....

So long ago I decided that I didn't want to make too many tools obsolete with WM/PrC. So far, with the additions I've made I've done just that to no fewer than five existing tools.

  • Scenester

  • Scene Reader

  • SceneEdit

  • Teioh (though some people find this has an easier interface to use for simple edits)

  • ff7dec (a KERNEL.BIN separation tool)



There are at least three different authors to these, but I don't remember who made ff7dec so it may be four. Anyway, I didn't want to take any fame/glory from anyone else so PrC doesn't edit the enemy stats like Hojo does. Well, it feels a little foolish now to allow editing of 7256/7808 bytes even though the remaining 552 bytes are known. So I think I'm going to have to byte the bullet and just say I'm going to allow editing of these now. That feature is still in progress so it might take some time to get it to look good.

I'm also still working on being able to copy/paste whole enemies between scenes. I'm getting closer. Still some errors occurring, but it's getting closer to working.

Friday, May 28, 2010

Another random update

Since I'm leaving town for the weekend I won't be able to touch any of these. Let me tell you how things are going now.

WM/PrC:
These are looking good. I made an enemy copy/paste option at the request of Armorvil. I THINK it's working correctly. The only thing it doesn't do is add that enemy to the formations. That's a dangerous thing to do anyway so I may not do it even though I was considering replacing them with the enemies you copy over (but imagine copying Diamond Weapon and pasting it over Grangalan Jr.Jr. INCLUDING it's formations! )% ). That wouldn't work because of Grangalan (& Jr.)'s AI. They are the ones that call out the invisible, untargetable Jr Jrs at a certain point. Also for this reason it's dangerous to just blank out enemy formations. This kind of stuff is also just as dangerous with the Chocobos. Trying to copy them or replace them is dangerous. Well, copying them isn't that bad, you'd just need to change the AI dramatically. :)
Another note is that I found a simple one-line function to replace a two line function I've been using since Sept '08 when I started using this. Go figure, right? ;) I'm constantly reminded how little I really know about what I'm doing. :D

Tiny Bronco:
If you remember me mentioning this you deserve a cookie. I've been tinkering with this prog for a while, but I don't want to say too much about it since I'm not sure it's going anywhere. However, I've recently decided to look at it again. It's a mess. I haven't done anything with it in so long I've forgotten how it all works. It looks sloppy too.

FF7.exe:
I was playing around with the Item properties trying to see how some of them work when lo and behold, I found the Enemy AI data in the memory! The game does something really strange with it. It seems to write to it, make a pointer to it, then ignore it. I didn't find where that pointer went so it's a little worthless at the moment. Still, it's a step in the right direction of figuring out what the ASM does with different values. I believe Akari already knows where this is handled, but it's exciting to have found this by myself too. :)

Other:
So I was playing around with a TIM viewer of my own design when sl1982 (Head of Team Avalanche) requests a TEX dumper. Because of the work I've done on Tiny Bronco I suggested that I could throw one together real quick combining the two. So I did. :) He's happy with the result and I'm now apparently the Head Programmer of Team Avalanche. :D So far that's all I've contributed. That's apparently enough at the moment, but I'm sort of on retainer for any other extracting app they might need. Those won't likely be released because they're real specific need things. Oh well.

Can't think of anything else right now. Have a good weekend! Happy Memorial Day to those whom it applies!

Thursday, May 20, 2010

Sad news (but not TOO sad)

I'm not giving up on these projects. I still have several pending ideas for it. Now that I've laid those fears to rest. :)

I've just been digging through the executable trying to find the data the game uses to manage the in-menu/out-of-battle item usage. Turns out it's all hard-coded. Not just the data, but the functions are hard-coded into the executable. D: This makes it nigh impossible to just edit to achieve a particular result such as healing only a certain percentages of HP/MP.

HOWEVER, I did find that it's possible to remove functions from items entirely! This can be done in one of two ways: Changing the item's function location to what I call "Item Use Complete" which is just a series of jumps to the end of the over-all "use item" function. Or just disabling their use in the menu via WallMarket.

Here's how menu item usage works:

When you select an item the "use item" function will search through a list to see what function that particular item has. It's just a list based off the items' index. There are 13 functions. Then one of THOSE functions are called and things happen. If the item happened to be a source then it goes through another list of functions based on the source index. Here's some pseudocode on using a Hyper:

Item Index is 0D
ItemFunction(0D) is 8
do function 8

function 8:
if character does have fury
play "incorrect" sound
else
if character has sadness
cure sadness
else
inflict fury
end if
play "item use" sound
decrease item quantity
end if

The phoenix down is kind of odd. Since the death flag doesn't carry over out of battle it checks if the character's HP are 0. The only conclusion for the game to make if that is true is that the character is dead (this is how the battle engine decides if a character is dead at the beginning). Then it heals the character by it's maxHP bit shifted right by two (1/4 MHP).

In case you're curious and want to explore more, the address of the item functions can be found at 0x7175E2.

Tuesday, April 27, 2010

Progress is being made....

I'm struggling with getting this new feature to work. I didn't pre-write it this time because I need real data to test with. This requires replacing one form object with another and sort of "gimmicking" my way through getting them to work together. Most of the code I wrote originally was with the understanding that it would read data directly from the grid that you enter data on. Now it's going to be storing data in a different way and I have to re-write whole sections of code. That means not only do I have to write 200+ lines of code to handle a different data type, but I have to do it in a way that takes data from a new data structure. It's currently mostly lame as it is and I'm likely going to re-write it to be more processor friendly. *sigh* The work of genius is never complete. :(

EDIT: I'm making better progress now. Currently when you want to change something in, say, Eligor's Main script, you have to wait over 5 seconds for the changes to happen. This is because it's changing all the jump addresses for you (albeit, not very efficiently)
Now, because of the new structure I'm using it took a grand total of .765 seconds! That's going through the entire script about 160 times replacing jump addresses.