[PSX/PC] KERNEL.BIN editor - WallMarket (v1.4.5)

  • Thread starter Thread starter nfitc1
  • Start date Start date
Status
Not open for further replies.
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)?
 
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]
Code:
Char  Level H MHP L MHP   Cloud:   7 334 323Cloud:  12 474 441Cloud:  22 955 892Cloud:  32 1753 1658Cloud:  42 2806 2639Cloud:  52 4069 3826Cloud:  62 5435 5123Cloud:  82 7834 7381Cloud:  99 9554 9007   Barret:   2 246 233Barret:  12 513 486Barret:  22 1051 988Barret:  32 1938 1831Barret:  42 3179 2988Barret:  52 4623 4358Barret:  62 6039 5673Barret:  82 8338 7830Barret:  99 9999 9481   Tifa:   2 239 228Tifa:  12 460 432Tifa:  22 898 841Tifa:  32 1570 1475Tifa:  42 2567 2422Tifa:  52 3824 3590Tifa:  62 5133 4832Tifa:  82 7457 7027Tifa:  99 9075 8561   Aeris:   2 195 185Aeris:  12 403 382Aeris:  22 858 812Aeris:  32 1573 1484Aeris:  42 2553 2405Aeris:  52 3714 3496Aeris:  62 4961 4665Aeris:  82 7210 6797Aeris:  99 8854 8348   Red XIII: 2 244 231Red XIII: 12 502 475Red XIII: 22 1023 957Red XIII: 32 1834 1726Red XIII: 42 2937 2763Red XIII: 52 4229 3992Red XIII: 62 5567 5247Red XIII: 82 7936 7475Red XIII: 99 9585 9024   Yuffie:   2 127 127Yuffie:  12 425 425Yuffie:  22 852 802Yuffie:  32 1531 1447Yuffie:  42 2492 2345Yuffie:  52 3663 3446Yuffie:  62 4938 4645Yuffie:  82 7333 6886Yuffie:  99 9037 8516   Cait Sith: 2 250 236Cait Sith: 12 544 506Cait Sith: 22 1117 1061Cait Sith: 32 1997 1874Cait Sith: 42 3162 2978Cait Sith: 52 4610 4340Cait Sith: 62 5951 5601Cait Sith: 82 7911 7444Cait Sith: 99 9177 8652   Vincent: 2 197 187Vincent: 12 421 392Vincent: 22 885 828Vincent: 32 1591 1497Vincent: 42 2502 2365Vincent: 52 3637 3421Vincent: 62 4864 4571Vincent: 82 7236 6789Vincent: 99 8800 8253   Cid:  2 248 234Cid:  12 492 459Cid:  22 972 913Cid:  32 1796 1677Cid:  42 2906 2732Cid:  52 4172 3934Cid:  62 5460 5133Cid:  82 7738 7281Cid:  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]
Code:
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:
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
 
Last edited:
EDIT: I also just found an error in his example:
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
T Fergusson was WRONG!? :-o Hmmm, he calculated 40% of the maximum gain rather than 40% of the gradient.

I was hoping that it would turn out that your program was starting off a level early (giving you level 3 stats at level 2, and so on), but it doesn't look like that is happening and since I haven't done maths in any serious way since I was 16 I probably won't be of much help in a project like this. If your program is doing exactly what the FAQ says it should do (let me check: it is calculating the base and gradient of the level the character is about to gain, isn't it?), then I really don't know what to suggest. Maybe there are some miscalculations in the FAQ?
 
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).
 
I'll try that tomorrow.

EDIT: I'm trying this now; if Cloud gets more than 9130HP (of course, he has -4% MHP at the start because of his two materia), I'll report. This could take a while, however, so if anyone else wants to have a go...
 
Last edited:
I'd like to help, but since I don't have the PC version, I wouldn't be able to email the save game...
 
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...
 
I still haven't had any luck. I've been using a party of Cloud, Tifa and Aeris, and none of the have had MHPs at level 99 outside of either T Fergusson's or your program's ranges, or have even come close; Cloud, for example, has got an MHP between 9200 and 9450 every time. I'll try a few more times tonight.

Has anyone else been playing with it?
 
In my patch I made the curves based on TF's work. Then I tested my altering, and after a few tests (lvl 1 - 99) I was satisfied with all curves. The HP growth went precisely as I wanted. They never want outside the range (at each lvl 10 mark that is).

How are you planning the interface for the curve making?

One note to stat tweakers: Unless you make the base stats extremely high (100+) it's useless to alter 'em, 'cause The curve will eventually even the stats out normally. If you want starting stats 100+ the stats will not grow by level.

EDIT: oh I forgot the reason I posted. :P I see you find TF's numbers to be inaccurate. I just wanted to say that by my calculations and testing the formulas seem pretty accurate. It might be hard to find the exact formula though. As a final solution (as Hitler lol) you could just make the user type in the gradients and the bases for the curves. At least then they'll get a way to alter 'em.
I made a proggy to calculate each level HP and MP increase, and randomized the growth (if possible). This is, of course, based on TF's formulas.
 
Last edited:
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.
 
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
 
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.
 
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
Blind guess - you don't have .NET Framework installed.
 
Just want to say to the designer of this...TOTAL BRILLIANCE :) Keep up the good work
 
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

0x12 0x70 0x20 0x02 0xA0 0x20 0x82 0x90 to SetRandomOpponentToAttack()
and
                if (GetU8(script_offset + pointer + 0)  == 0x60 &&
                    GetU8(script_offset + pointer + 2)  == 0x02 &&
                    GetU8(script_offset + pointer + 5) == 0x92)
                {
                    int action   = GetU8(script_offset + pointer + 1);
                    int address1 = GetU16LE(script_offset + pointer + 3) >> 3;
                    int bits1    = GetU16LE(script_offset + pointer + 3) & 7;

                    LOGGER->Log("RunCommand(0x%02x, h[0x%04x + 0x%02x]);\n", action, address1, bits1);
                    pointer += 6;
                    continue;
                }
I think it was something like this at the beginning and was transformed to this bite code during export.
 
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]
Code:
11 000060 7001 382060 02323090Becomes:&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?"
 
Last edited:
So, do you think that your work would be able to translate into an enemy AI editor? Of course, we have stat and attack editors, but editing the AI is what makes  the best mods ;-)
 
Status
Not open for further replies.
Back
Top