Show Posts

This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.


Messages - nfitc1

Pages: 1 ... 109 110 111 112 113 [114] 115 116 117 118 119 ... 121
2826
Releases / Re: FFVII Psx bug fix? Here I provide
« on: 2009-01-15 13:22:29 »
The easiest way to find out how to fix it for the PC is to figure out where the armor is being equipped and follow that logic. Only thing is, I don't even know how to use debuggers. Can anyone suggest one? I've got one called IDA, but it's confusing.

2827
Troubleshooting / Re: Who would want a New Game+?
« on: 2009-01-15 13:16:19 »
I understand the complications of putting a New Game+ directly into the game's code itself, but I was thinking of an external app that just modified a save game.....Oops. I foresee a problem with this already... Vincent and Cait Sith. Since their information isn't in the KERNEL.BIN their data is overwritten as soon as you get them. So any upgrading you might have done to them would have been lost. This includes VINCENT'S KILL COUNT which is, of course, crucial to his Death Penalty working well and probably something everyone would want in a New Game+. Consequently, since we're not loading from the KERNEL, Young Cloud would have the Cait Sith's previous stats and Sephiroth would have Vincent's previous stats. Hmm. I guess an external app won't cut it.
Dang. I guess this just isn't feasible. Sorry...

2828
Troubleshooting / I'm gonna make a New Game+ anyway
« on: 2009-01-15 04:42:31 »
It just occurs to me that this might work. I'm envisioning an application that takes an already existing save game and resets all the progression variables to NULL. That way, when the game tries to load the game it'll think it's a new game, but all the equipment will still exist. If I understand the sequence properly, when "New Game" is selected the game just dumps the contents of the fourth KERNEL.BIN piece into a more-or-less blank memory slate and begins the game.
Could this work? Has anyone tried it and I'm just out of the loop?


EDIT: I have come to the conclusion (see below) that this would probably not work properly as an external app. As a patch it would require significant recoding. Something I'm terrible at. Sorry. Pretend you never saw this. :(

2829
General Discussion / Re: FFVII Plot question
« on: 2009-01-15 04:19:36 »
I'd hardly call Last Order canon. In it, Zack and Cloud make it all the way to Midgar before dying and Cloud still hadn't come out of it. In CC and FFVII, Zack dies on a cliff outside of Midgar. An event corroborated in AC when Cloud puts the Buster Sword back in the ground at the end.

2830
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2009-01-14 18:01:24 »
Has it really been over a week since I updated? I guess so. I've been taking Akari's suggestion and running with it. Trying to create something that most people could read. I've run into a problem, however.

Ignoring the fact that this is very hard work, let's also talk about erroneous scripts.

Cloud's Physical Counter and Sephiroth's Main scripts have several instances of two consecutive 72h commands. Only one of these will be called (the first one in each instance) and the second one is completely avoided. Why, then, is it there? Some weird deal with their compiler? Who knows.

Sephiroth's Init script is contradicting TFergusson's data. The script starts out:
Code: [Select]
12 6020
10 2440
80
60 01
90
and it does that three more times with other values in the 10h command. Fergusson states in his nots on command 80h:
Quote
Absolutely *NOTHING* happens (not even popping variables off) if 'y' is a '1x'-type Var.
y is either the first or second pop, he wasn't clear on that, but it's probably the first. However, if you notice the first two commands are to pop 1X-type variables to the stack so according to him this script shouldn't do anything . . . but it does.

This particular script, to me, translates as (in very simple terms):

Code: [Select]
Self.MainScriptOverride = True
Self.Flag(200) = True   [&4029]
Self.Flag(100) = True   [&4028]
Self.Flag(400) = True   [&402A]

I'm not sure what these flags so...I guess I'm slightly stuck. I may just have to leave these in assembler (Which is easiest for me, but I know it's not good for everyone).

UPDATE: So who wants to see the decompiled Character AI Scripts? Yeah, I thought you did. ;)

Cloud.PhysicalCounter:

Code: [Select]
LocalVar:0000 <- 255
If (&BattleVar(Self).CharVar(Ally Covered) == 19)
{
LocalVar:0000 <- 80
}
ElseIf (&BattleVar(Self).CharVar(Ally Covered) == 18)
{
LocalVar:0000 <- 81
}
ElseIf (&BattleVar(Self).CharVar(Ally Covered) == 21)
{
LocalVar:0000 <- 82
}
ElseIf (&BattleVar(Self).CharVar(Ally Covered) == 17)
{
LocalVar:0000 <- 83
}
POP()
If ( (&LocalVar:0000 != 255) )
{
BattleVar(TempGlobal) <- &GlobalVar(0000)
BattleVar(2018) <- &BattleVar(TempGlobal)
BattleVar(TempGlobal) <- &BattleVar(TempGlobal) + 3
If ( (&BattleVar(TempGlobal) > 200) )
{
BattleVar(TempGlobal) <- 200
}
GlobalVar(0000) <- &BattleVar(TempGlobal))
Debug.Print: "LOVEPARA CHR:%d, %d->%d" ; &BattleVar(Self).CharVar(Ally Covered) - 16; &BattleVar(2018); &BattleVar(TempGlobal)
}

Cloud.AllyDeath

Code: [Select]
LocalVar:0020 <- 0
If ( (&LocalVar:0020 < 3) )
{
BattleVar(Target) <- FlagBit(&LocalVar:0020)
If (&BattleVar(Target).CharVar(Status))
{
LocalVar:0000 <- 255
If (&BattleVar(Target).CharVar(Formation) == 19)
{
LocalVar:0000 <- 80
}
ElseIf (&BattleVar(Target).CharVar(Formation) == 18)
{
LocalVar:0000 <- 81
}
ElseIf (&BattleVar(Target).CharVar(Formation) == 21)
{
LocalVar:0000 <- 82
}
ElseIf (&BattleVar(Target).CharVar(Formation) == 17)
{
LocalVar:0000 <- 83
}
POP()
If ( (&LocalVar:0000 != 255) )
{
BattleVar(TempGlobal) <- &GlobalVar(0000)
BattleVar(2018) <- &BattleVar(TempGlobal)
BattleVar(TempGlobal) <- &BattleVar(TempGlobal) - 5
If ( (&BattleVar(TempGlobal) < 50) )
{
BattleVar(TempGlobal) <- 50
}
GlobalVar(0000) <- &BattleVar(TempGlobal))
Debug.Print: "LOVEPARA CHR:%d, %d->%d" ; &BattleVar(Target).CharVar(Formation) - 16; &BattleVar(2018); &BattleVar(TempGlobal)
}
LocalVar:0020 <- &LocalVar:0020 + 1
GOTO: 0x0006
}

Barret.Init

Code: [Select]
Link with scripts on character: 3
Tifa.Init

Code: [Select]
Link with scripts on character: 3
Aeris.GeneralCounter

Code: [Select]
If (&BattleVar(Self).CharVar(Formation) == 19)
{
LocalVar:0080 <- 80
}
ElseIf (&BattleVar(Self).CharVar(Formation) == 18)
{
LocalVar:0080 <- 81
}
ElseIf (&BattleVar(Self).CharVar(Formation) == 21)
{
LocalVar:0080 <- 82
}
ElseIf (&BattleVar(Self).CharVar(Formation) == 17)
{
LocalVar:0080 <- 83
}
POP()
BattleVar(Target) <- &BattleVar(Self).CharVar(40D0)
BattleVar(Target) <-  (&BattleVar(Target).CharVar(Formation) == 16)
If (&BattleVar(Target))
{
LocalVar:0020 <- &BattleVar(Self).CharVar(4160)
LocalVar:0060 <- 0
If ( (&LocalVar:0020 < &LocalVar:0000) )
{
LocalVar:00A0 <- 0
LocalVar:0060 <- 2
}
ElseIf (&LocalVar:00C0)
{
If (&LocalVar:0020)
{
LocalVar:00A0 <- 1
LocalVar:0060 <- 4
}
}
ElseIf ( (&LocalVar:0020 > &LocalVar:0000) )
{
LocalVar:00A0 <- 1
LocalVar:0060 <- 2
}
If (&LocalVar:0060)
{
BattleVar(TempGlobal) <- &GlobalVar(0080)
BattleVar(2018) <- &BattleVar(TempGlobal)
If ( (&LocalVar:00A0 == 1) )
{
BattleVar(TempGlobal) <- &BattleVar(TempGlobal) + &LocalVar:0060
If ( (&BattleVar(TempGlobal) > 200) )
{
BattleVar(TempGlobal) <- 200
}
}
Else
{
BattleVar(TempGlobal) <- &BattleVar(TempGlobal) - &LocalVar:0060
If ( (&BattleVar(TempGlobal) < 50) )
{
BattleVar(TempGlobal) <- 50
}
GlobalVar(0080) <- &BattleVar(TempGlobal))
Debug.Print: "LOVEPARA CHR:%d, %d->%d" ; &BattleVar(Self).CharVar(Formation) - 16; &BattleVar(2018); &BattleVar(TempGlobal)
}

Aeris.DeathCounter

Code: [Select]
If (&BattleVar(Self).CharVar(Formation) == 19)
{
LocalVar:0080 <- 80
}
ElseIf (&BattleVar(Self).CharVar(Formation) == 18)
{
LocalVar:0080 <- 81
}
ElseIf (&BattleVar(Self).CharVar(Formation) == 21)
{
LocalVar:0080 <- 82

}
ElseIf (&BattleVar(Self).CharVar(Formation) == 17)
{
LocalVar:0080 <- 83
}
POP()
BattleVar(Target) <- &BattleVar(Self).CharVar(40D0)
BattleVar(Target) <-  (&BattleVar(Target).CharVar(Formation) == 16)
If (&BattleVar(Target))
{
BattleVar(TempGlobal) <- &GlobalVar(0080)
BattleVar(2018) <- &BattleVar(TempGlobal)
BattleVar(TempGlobal) <- &BattleVar(TempGlobal) - 4
If ( (&BattleVar(TempGlobal) < 50) )
{
BattleVar(TempGlobal) <- 50
}
GlobalVar(0080) <- &BattleVar(TempGlobal))
Debug.Print: "LOVEPARA CHR:%d, %d->%d" ; &BattleVar(Self).CharVar(Formation) - 16; &BattleVar(2018); &BattleVar(TempGlobal)
}

Aeris.PreTurn

Code: [Select]
LocalVar:0000 <- &BattleVar(Self).CharVar(4160)
LocalVar:00C0 <- &BattleVar(Self).CharVar(Status)

Yuffie.Init

Code: [Select]
Link with scripts on character: 3
Vincent.Main

Code: [Select]
LocalVar:0000 <- 98 + &BattleVar(2038) * 2
If ( (Random MOD 10 < 3) )
{
LocalVar:0000 <- &LocalVar:0000 + 1
}
BattleVar(Target) <- &BattleVar(2040)
Perform attack(&LocalVar:0000)

Sephiroth.Init

Code: [Select]
BattleVar(Self).CharVar(Flag(0:4)) <- 1
BattleVar(Self).CharVar(Flag(1:1)) <- 1
BattleVar(Self).CharVar(Flag(1:0)) <- 1
BattleVar(Self).CharVar(Flag(1:2)) <- 1

Sephiroth.Main

Code: [Select]
LocalVar:0000 <- 2
BattleVar(Target) <-  (&BattleVar(Target).CharVar(ElemWeakness) >= 5)
If (&BattleVar(Target))
{
Debug.Print: "RESIST EARTH MONSTER" ; 0
LocalVar:0040 <- 1
}
BattleVar(Target) <-  (&BattleVar(2050).CharVar(Formation) == 25)
If ( ( (&BattleVar(Target) And  (&BattleVar(Target).CharVar(Status) == 1) )  And  (Random MOD 3 == 0) ) )
{
LocalVar:0020 <- 8
}
ElseIf ( (BitCount(&BattleVar(Enemies)) == 1) )
{
BattleVar(Target) <- RandomBit(&BattleVar(Enemies))
If ( (&BattleVar(Target).CharVar(4270) >= 16) )
{
LocalVar:0020 <- 29
}
Else
{
LocalVar:0000 <- 1
}
}
Else
{
BattleVar(Target) <- &BattleVar(Enemies)
If (Random MOD 3 + &LocalVar:0040 == 0)
{
LocalVar:0020 <- 38
LocalVar:0040 <- 1

}
ElseIf (Random MOD 3 + &LocalVar:0040 == 1)
{
LocalVar:0020 <- 32
}
Else
{
LocalVar:0020 <- 35
}
Else
{
POP()
}
Perform attack(&LocalVar:0020)

This was JUST made from the WM 1.2.0 "Proving Grounds". This still isn't editable yet, but this is getting closer.
I realize this is a lot to go through just to read it all and it's probably pretty confusing. Let me point out a few details.

1. This is incomplete. There are still a lot of memory addresses that need to be accounted for. I haven't done them all, just most of the ones that show up in these scripts.
2. Look at Aeris's GeneralCounter. There's an ElseIF statement there near the middle that contains a nested IF statement. Normally this condition would just be ANDed to the ElseIf statement. This is not a mistake with my decompiler, this is the way it's written. Weird. It also needs two more close curly brackets. I'm not sure what to do about that...
3. Sephiroth's Main Script has two Elses at the end of it. This is a very strange (and unnecessary) code that makes disassembling weird. The code at script address 0xDD is "72 E000". For those keeping score, you can see why this is a completely unnecessary line. If 72h does mean go to address xxxx, then this line basically says "go to the next line". The way I keep track of Elses is by where these jump commands are. That POP() statement will just execute in that larger Else statement.

That's about all I have to report. It's taken me about 2 days (about 11 hours work) to get these results from what I had shown previously. I have no clue how to write an assembler for this so this maybe just a translator more than anything else. I will not likely write an assembler, but I might...given the proper incentive of course.


Non-WM-related update: Wondering why I haven't been doing anything WM related lately? I've been fixing the PC MDef bug.

WM-related update: I hope people are still looking at this even though it's currently on the second page. I believe I have isolated the damage calculation function and where the 0002h flag is handled. Apparently it does something with the Affect MP.
Here's what it does if that 0002h flag is active (using modified addresses):

Code: [Select]
if (not (&(99E308+6Ch) and 200h) and _   ' Is flag active?
    not (&C3F37C and (1 << arg_4)) and _         ' Not sure what argument_4 is. Often passes
    not (&(99E308+228h) and 40000h) then        ' Some flag it set? Never seen it pass.
var_34 = 1
else
var_34 = 0
end if

var_14 = var_34

var_14 then goes on to be checked with the Affect MP flag.

Code: [Select]
if (var_14 = 0 and _
          not (&(99E308+6Ch) and 100h) and _   'Affect MP?
          not (&(99E308+228h) and 1) and _     'This flag is not on
          not (&(99E308+230h) and C1h) then
     &(99E308+218h) = &(99E308+218h) or 1    'Turn this flag on
end if

If var_14 is 1 it skips several steps afterwards as well.

I don't know what any of these addresses are or what data starts at 0x99E308. Looks like data specific to the current attack since +6Ch is the special flags and something close to +60h and +64 are Camera movements. Apparently that address gets written to address 0x99CE0C almost as soon as the game starts and gets referenced in 1210 places after that! If anyone can identify these addresses let me know. They're probably off from the original 1.02 by a bit.

2831
Releases / Re: FFVII Psx bug fix? Here I provide
« on: 2009-01-12 17:00:25 »
But that's not hacking or fixing, it's cheating. :evil:

Boooo! I resent that. . . . . Actually, no I don't. You're absolutely right. :) This is a great development. Something that's been needed for a while. Can this be done for the PC version(s) as well?

2832
Archive / Re: [WIP] Final Fantasy Anime Style Avatars
« on: 2009-01-08 12:09:40 »
Not bad, they just all need to be in the same style and have an expression on their faces befitting their character.

2833
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2009-01-06 20:41:57 »
http://img522.imageshack.us/img522/7997/charaiig6.png

Just to let ya'll know I'm still thinking about ya. ;)
Not complete, of course. I'm still trying to work out a way to determine if there IS a script there or not. Right now all it does is show an asterisk by the name and section of non-empty scripts.

To tell you the truth - script totally uneditable this way. Try to replace some of standart constructs like this

I know. Disassembling is very hard to put it into something resembling the original code. I can easily see it in my head when I look at the code, but getting a computer to do it is a little harder because I'd have to make conditions for all that logic. ATM, the scripts are just read-only. If I make them editable it will be for advanced scripters only. Making it so the average person can edit it is a bit harder. It's easier to go from a high-level code down to a low level code, but even that gets tricky because I can only program what is known.

Ex:
Code: [Select]
11 0000
60 70
01 3820
60 02
32
30
90
Becomes:
&0x0000 = (&0x2038 * 2) + 0x70

That's the first "line" of Vincent's main script and the value stored at 0x0000 eventually ends up being the attack he performs when in form [&0x2038]. Changing that 0x70 changes the attacks he attempts.

Problem is. I can't get the program to display that very well.

UPDATE: I'm too busy playing through CC to have done anything with this recently. Fear not, I'm close to the end. Man, that Costly Punch makes lots of the battles a breeze.

PS - "Hey Vegeta! What's the scouter say about this thread's view count?"

2835
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2009-01-05 21:24:05 »
http://img522.imageshack.us/img522/7997/charaiig6.png

Just to let ya'll know I'm still thinking about ya. ;)
Not complete, of course. I'm still trying to work out a way to determine if there IS a script there or not. Right now all it does is show an asterisk by the name and section of non-empty scripts.

2836
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2009-01-05 14:53:13 »
Hi !

Sorry but I have a big problem with the last Wallmarket version ... T___T

I used the 0.9.0.2 version of the program before and it functioned very well. When I test to use the program, the error message according to post:

" the application; did not succeed with s' to correctly initialize (0xc0000135)… "

Help me please T___T

Your email address leads me to believe that you speak French so I will try to word this in a way that Babelfish might understand. ;)

I can not and will not support older versions of WallMarket. Many of them do not work properly. Use the most recent version (1.1.7) and take a screen shot of the error you are receiving. Even if it is in French I will be able to understand what the error is.

2837
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2009-01-04 06:05:46 »
How are you planning the interface for the curve making?

There are five steps to curve generation with WM:

1. Get the initial Stat
2. Get the curve that stat is linked to
3. Use the bases and gradients in that curve for each level
4. The curve will be generated based on TFergusson's equations mentioned in my previous post
   4a. The Max MHP will be given the +8 as a random modifier
   4b. The Min MHP will be given the +1 as a random modifier
5. Based on the resultant number in that equation will determine the bonus given to the additional MHP.

EVERY value in this process (except the constants in 4) will be alterable. All initial stats can already be modified. The stat curves will be alterable as will the bases and gradients of each curve and how much bonus is given.

The interface will look something like this, but that picture is pretty outdated now. It will now only display min and max for a certain level rather than having that entire rectangle (which I always thought looked weird).

It might be hard to find the exact formula though.

This might be my problem. I'm assuming TFergusson's formulas are 100% correct. While all my stats' mins and maxes are lining up perfectly, it's only the MHP and MMP that are different... Those have a lot of variance in them and they may not be getting calculated correctly. And let's face it, the odds of actually getting the Max or Min MHP is so low we might never really see it in the game.

2838
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2009-01-03 19:46:03 »
It's been less than two weeks and I don't see that anyone has gotten anything conclusive. I haven't been able to touch WM since my last post so there's nothing new yet. Has anyone played with MHP lately? I'm not really sure what to do at this point. I'm going to take an old save and set Cloud back to his original initial stats and see what happens. There's just so many things I'm thinking about doing with this last section I can't remember them all...

2839
Archive / Re: FF7 Saving Problem
« on: 2009-01-03 19:11:00 »
Sorry for leaving you on the edge, but does that third screen happen when you select a save data file or when you select a save slot? Also, can you tell me what the AppPath is in your registry (Start->Run->regedit->HKEY_LOCAL_MACHINE\SOFTWARE\Square Soft, Inc.\Final Fantasy VII)? It should be whatever directory your game is installed at. Also make sure that the "save" directory exists and that it's not read-only and that you have more than 64K free space on that drive. Just to be sure, try running the game in Administrator mode. If that doesn't help I'm not sure what else to tell you.

2840
Archive / Re: FF7 Saving Problem
« on: 2009-01-01 17:48:18 »
By chance, are you possibly playing this from a read-only media? If you're playing directly off a DVD or something it won't let you save there.

The first and second screens look fine. No Save files are highlighted when there aren't files. The third one makes me think that whatever media you're trying to play this from is either read-only or has less than 64K free space on it.

2841
Gameplay / Re: BETA - 9999 Limit Breaking support thread
« on: 2008-12-27 05:13:56 »
The bytes determining HP and MHP are signed. What does this mean :?,  I don't really know, but I do know that it allows negative values and that it stops them going above 32 767, so that's the limit and that's why you aren't having any success :-(

Allow me to elaborate on this train of thought.

WARNING: High-level tech talk approaching!!
HP and MP are both stored as 16-bit (16 binary digits) whole numbers. This gives them a range of 65536 (or 2^16) values to represent. However, when the most significant bit it set (bit number 16), then the value becomes negative. It's not a negative sign, but it does indicate a negative number. If that bit is set and the number is stored as a signed value then 2^(number of bits) is subtracted from the value of the other bits.
Example (in binary):
Code: [Select]
Binary Value;      Signed Decimal Equivalent; Unsigned Decimal Equivalent
0110111001010110   28246                      28246
1000101101011101   35677-65536= -29859        35677

The basic formula for this calculation is:
Code: [Select]
SignedValue = (StoredValue AND (2^(Sizeinbits - 1) - 1)) - (2^(Sizeinbits) * (StoredValue >> (Sizeinbits - 1)))This probably looks disorienting to someone who doesn't understand bit-wise operations. If this is your case then either look up a bit-wise AND and binary operation >> or just ignore this all together. :)
End High-level tech talk

Mechanics aside, healing is calculated as negative damage so attacks are calculated as a signed value. If your characters' damage weren't capped to be within range of this signed value then they'd basically just screw up and heal instead of cause damage.

2842
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2008-12-23 04:27:51 »
T Fergusson was WRONG!? :-o Hmmm, he calculated 40% of the maximum gain rather than 40% of the gradient.

If this is true.... I honestly dare not claim myself more accurate than T Fergusson. If his equations are right then his math is wrong. THAT I could live with (I am a Computer Engineer AND Math major after all ;) ). What I need now is some hard data. I'm going to start a new game and see if I can get Cloud/Barret to have a higher MHP than T Fergusson's Highest MHP or have a lower MHP than my calculated lowest MHP. Unfortunately, I won't be able to do this until next week (this week containing Christmas and all). If anyone would like to help I'd be happy to see the results.

What to do:
1. Start a game where you aren't cheating or use a un-cheated save game (or at least one where the kernel.bin and the save game's MHPs are unaltered)
2. Get Hojo to increase the EXP a nearby enemy (all nearby enemies) to give, like, 3,000,000 Exp. (they'll have to level up naturally for this to work)
3. Load game with save and get players up to level 99.
4. Record MHPs and do step 3 again IF it falls within both mine and T Fergusson's ranges
5. If one is higher than T Fergusson's Highest MHP then mine are probably right; If one is lower than my lowest MHP, then he's probably right and I have to re-think my calculations

If you get a result please email me the save game. The address is beneath my avatar. Development on WallMarket v1.2.0 is on hold until this is resolved (it would be pointless to release without accurate results).

2843
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2008-12-22 20:07:32 »
What are the min/max HP values for each ten levels? It might help if we could see whether there is a sudden jump or a steady progression in extra HP. And does your program round down (sorry if the answer to that is obvious)?

Heh you may regret that ;)

Code: [Select]
Char Level H MHP L MHP

Cloud: 7 334 323
Cloud: 12 474 441
Cloud: 22 955 892
Cloud: 32 1753 1658
Cloud: 42 2806 2639
Cloud: 52 4069 3826
Cloud: 62 5435 5123
Cloud: 82 7834 7381
Cloud: 99 9554 9007

Barret: 2 246 233
Barret: 12 513 486
Barret: 22 1051 988
Barret: 32 1938 1831
Barret: 42 3179 2988
Barret: 52 4623 4358
Barret: 62 6039 5673
Barret: 82 8338 7830
Barret: 99 9999 9481

Tifa: 2 239 228
Tifa: 12 460 432
Tifa: 22 898 841
Tifa: 32 1570 1475
Tifa: 42 2567 2422
Tifa: 52 3824 3590
Tifa: 62 5133 4832
Tifa: 82 7457 7027
Tifa: 99 9075 8561

Aeris: 2 195 185
Aeris: 12 403 382
Aeris: 22 858 812
Aeris: 32 1573 1484
Aeris: 42 2553 2405
Aeris: 52 3714 3496
Aeris: 62 4961 4665
Aeris: 82 7210 6797
Aeris: 99 8854 8348

Red XIII: 2 244 231
Red XIII: 12 502 475
Red XIII: 22 1023 957
Red XIII: 32 1834 1726
Red XIII: 42 2937 2763
Red XIII: 52 4229 3992
Red XIII: 62 5567 5247
Red XIII: 82 7936 7475
Red XIII: 99 9585 9024

Yuffie: 2 127 127
Yuffie: 12 425 425
Yuffie: 22 852 802
Yuffie: 32 1531 1447
Yuffie: 42 2492 2345
Yuffie: 52 3663 3446
Yuffie: 62 4938 4645
Yuffie: 82 7333 6886
Yuffie: 99 9037 8516

Cait Sith: 2 250 236
Cait Sith: 12 544 506
Cait Sith: 22 1117 1061
Cait Sith: 32 1997 1874
Cait Sith: 42 3162 2978
Cait Sith: 52 4610 4340
Cait Sith: 62 5951 5601
Cait Sith: 82 7911 7444
Cait Sith: 99 9177 8652

Vincent: 2 197 187
Vincent: 12 421 392
Vincent: 22 885 828
Vincent: 32 1591 1497
Vincent: 42 2502 2365
Vincent: 52 3637 3421
Vincent: 62 4864 4571
Vincent: 82 7236 6789
Vincent: 99 8800 8253

Cid: 2 248 234
Cid: 12 492 459
Cid: 22 972 913
Cid: 32 1796 1677
Cid: 42 2906 2732
Cid: 52 4172 3934
Cid: 62 5460 5133
Cid: 82 7738 7281
Cid: 99 9319 8722

That's my calculated upper and lower MHP for each of the 8 brackets and the final level. Yes, it is rounding down and here is the basic way I'm calculating it:

Code: [Select]
BaseDifference = 40 * CurveBase + (level - 1) * CurveGradient  [CurveBase is between -128 - 127 inclusive]
Difference = (1 .. 8) + (100 * BaseDifference / CurrentMHP) - 100   [capped between 0 and 11; L MHP uses 1 and H MHP uses 8]
NewMHP = CurrentMHP + Floor(RandomBonus(Difference) * CurveGradient)

The actual code is significantly different from that, but that's the functional equlivalent. :)

EDIT: I also just found an error in his example:
Quote
The minimum for him in that level bracket would, of course, be 40% of 98, or 58 (remember to round down).
40% of 98 is not 58, it's 39. 58 is ~60% of 98

2844
Archive / Re: ff8 - no ingame music - help!
« on: 2008-12-22 17:37:23 »
What happens when you try to configure sound using the FF8Config? Your DirectMusic port may be wrong.

PS - Your English is better than most people's at this forum. ;)

2845
Archive / Re: FFVII MUSIC REMASTERED!!!!
« on: 2008-12-22 17:01:05 »
Prelude - Very nice here. Bad Synth out Harp in. This wins.
Hurry - The ticking was a little too loud and made the off-beat melody sound more off-beat than usual
AVALANCHE Theme - Good job. Sounds like the original with better instruments :D
Tifa's Theme - Too soft. I don't mean the volume. The original was some synth flute and you made it a violin with flowing notes. Make the notes more harsh or change it back to a flute.
Battle theme - Missing the mechanical edge in the background. Notes need to be more defined I would assume
Turks theme - Sounded good until the Bass came in. Alternating the left/right audio channels hurt my ears when I was wearing headphones
Boss battle theme - This was my least favorite. I don't mind the orchestral sounds, but this really does require a metal guitar as the melody
I can't remember the names of the next two, but I liked what you did with them. :)
ShinRa Corp theme - I like the power this suddenly gave the theme. This is good too.
Overworld - I love even the original of this and almost all remixes end up the same, but still very nice.

I really like what I hear. I can't wait to hear the rest.

2846
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2008-12-22 16:11:55 »
I'm still a bit off in generating the HP values for each level. This is what T. Fergusson says they are:

Code: [Select]
  Cloud  8960-9511
 Barret  9435-9999
   Tifa  8513-9037
  Aeris  8304-8816
    Red  8980-9556
 Yuffie  8471-8993
   Cait  8608-9135
Vincent  8211-8779
    Cid  8682-9284

This is what my test stat prog says:
Code: [Select]
  Cloud  9007-9554
 Barret  9481-9999
   Tifa  8561-9075
  Aeris  8348-8854
    Red  9024-9585
 Yuffie  8516-9037
   Cait  8650-9177
Vincent  8253-8801
    Cid  8727-9318

They're all a little bit high as if they're going half-a-level beyond max (like lvl 99.5). Anyone have any insights on calculating these?

2847
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2008-12-19 19:02:39 »
I don't think that it is either of those: they would both require the character to lose more HP before a limit break than they actually do. T Fergusson says this in his "party mechanics FAQ":

. . .

This is backed up by my experience; my Cloud (I may have modded this, I have lost track of the number of mods I have made), has a lv1 divisor of d2; using T Fergusson's formula he would need to lose 83 HP at the start of the game (with a MHP of 302) before getting a limit break. I haven't checked this, but that is approximately the amount of HP he loses before getting a limit break.

Ha. Well I certainly won't argue against Terence. It was mostly a guess on my part anyway with little to no observational data. ;)

Also, how do you change the attacking texture of a limit. For example, if i want to change the chain of machine gun shots in barret's ungarmax into a chain of grand spark, how do i do that?

No clue. Limit data isn't stored in the KERNEL.BIN so you'll have to look elsewhere for that info. The limit's name is stored in the KERNEL so you can use/change that at least.

Also, when i swap the limit between cloud and vincent, i got this level overflow glitch (although the battle animations are fine). Any help here?

What do you mean swap the limit? Are you editing the Growth data manually? At least that picture tells me needed exp is an unsigned Int32 value instead of a signed one. :)

2848
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2008-12-19 14:39:53 »
Quote from: Me
An unhandled exception occurs when I open my modded scene.bin; the program seems to work, but doesn't open any of the scenes from EA onwards. It doesn't happen when I open my unmodded backup, so it may be a problem at my end; I'm going to do a bit more experimenting.

But this still happens; it's a "System.ArgumentNullException: Buffer cannot be null" error.

This has been fixed. Now that it's not forcing there to be no more or less than 33 scene blocks it works fine. :D I recreated LKM's scene.bin perfectly but modified the original one slightly. It's the same size as it's always been so I'm not real concerned. Heidegger now works to my intent and satisfaction. I'll fix errors/bugs, but I won't add any new features to it. It has been updated on the first post.

I think I need to take a brief moment and explain that last picture I hastily posted yesterday. Obviously there are six tabs there. These are representing all the information in the KERNEL.BIN2 file.

Character Growth:
This is where you can set the curves and limit info of the character in the List box in the upper left. The graph shows the possible range of stats for each level and the sliders cannot go outside those bars. Switching the buttons in the lower left will change the graph for the characters' stats. Changing the numbers to the right of those buttons will cause the characters to use a different curve. The graph uses initial data from KERNEL.BIN3 to get starting values so Yuffie's graphs all start at level 1 with stat 0. This will change if you modify the starting values in the Initial Character Data tab under Initial Data. Cait Sith's and Vincent's Initial Data is not contained in the KERNEL.BIN at all so their starting stats have been hard coded into the data.
Let me also add a disclaimer that the graphs assume that the stat increases are sequential in the bonuses and none are lower than the previous increases. If this is broken, the graph will be inaccurate.
You can also see frames for limits. The drop-downs there will be populated with attack names taken from KERNEL.BIN18 so as those change, these will be updated. To the right of limits X-1 and X-2 (sans level 4) there is a Uses required. This is the number of times that limit must be used to get to the next one. The game will ignore this if the next limit is empty or use count is NULL (FFFFh). The HP Divisor at the bottom right of these frames indicates....something. It's a calculation to do with MHP, but I'm not exactly sure how it calculates it. Either MHP / (Divisor / 100) damage raises the limit bar 1 point (what I suspect) or MHP * (Divisor / 100) is amount of damage required to get the limit bar to full. Regardless, the lower the number, the easier it is to "break limit" or whatever you want to call that action. :)

Curves:
The curves themselves can be edited here. Changing them will be reflected on the graph too and you can make some pretty funky curves. It might even be possible to break the program and stuff. :D On here will also be the stat bonus. The process of calculating that is basically described on the wiki and in Terence's Party Mechanics FAQ. So you can get your characters to have stats at level 100 within one level or never have any gain if you so choose. The bonuses are universal, but the curves are there to allow you to change the characters as you wish. :)

Character AI:
Admittedly this is currently blank. It will eventually have Character AI data so you can make characters automated or have them perform some action at the beginning of the battles. This will take the longest time to decode. Sorry, be patient. :(

Random Numbers:
This is just crazy stuff. It's all the numbers 0 - 255 inclusive all jumbled up. When the game wants a random number it randomly picks one of these bytes and uses that as the random number..... Crazy, I know. But you can use this to your advantage. If you set them all to the same number then your chances of really rare things happening becomes 100% (this,of course, assumes that you know the right number to change it to ;) ).

Scene look-up:
This is one of those things I'm going to classify as "use at your own risk". I'm only allowing editing of this because it's there in the KERNEL.BIN2 file. Hojo and Heidegger should be able to change these on their own, but you can set them however you want. The results could very well be disastrous so use with great care. More detail on the structure of this is in the wiki link above.

Spell Order:
This is also described on the wiki link above so I won't bother describing it further.

Have fun speculating on how great this will be. ;)

2849
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2008-12-18 21:59:43 »
NFITC1 would you like to be a moderator for the game section of my forum?

No. I don't want to take the time to be a moderator to anything.

Just thought I'd leave you all with this. It's incomplete (obviously), but I'm pretty happy with it so far. Just don't ask how long it took go get that graph to work. :P

2850
FF7 Tools / Wall Market, FFVII KERNEL.BIN editor
« on: 2008-12-18 18:29:53 »
I know you're gonna hate me and my demands even more after this (lol), but could Heidegger list the scene files from 1 to 256, instead of from 0 to 255 ?  :-P

No. And this time I mean it. It is referenced in the KERNEL.BIN as a 0-based index so that's how it's going to stay in Heidegger. Sorry.

Wow, that's very cool. So, for example, with this, one could remove all stat growth at level up, huh... I previously had the idea of eliminating stat growth and make enemies drop sources with a chance of 100% - so the player would tightly control everyone's evolution over the course of the game (think FFX) . That could be interesting.

Yup. Totally possible when this addition is made. That actually sounds fun. :D

Pages: 1 ... 109 110 111 112 113 [114] 115 116 117 118 119 ... 121