[PSX/PC] Save Editor - Black Chocobo (v1.16)

  • Thread starter Thread starter sithlord48
  • Start date Start date
Status
Not open for further replies.
the sync has to be complete. to ensure it is complete wait for continue to go white the hit continue. instead of picking a save hit the windows key to get to black chocobo. edit your save, go back to ff7. it should load
 
if you have the 2012 version you should use the 1.9.7 prerelease version.
 
I tried to find that, but couldn't find on sourceforge. Ill look specifically for that one though.
 
I tried to find that, but couldn't find on sourceforge. Ill look specifically for that one though.
you will not find it on sourceforge yet since 1.9.7 is not finished. you can however try the prerelease of 1.9.7 the link is a few replies above this one
this is only the windows version.[Removed 1.9.7 Released]
 
Last edited:
Is there a way to edit a psp eboot save file without the cwcheat workaround? I cant get cwcheat to work on my current cfw so im kinda hoping someone here could help me out aha.
Thankyou

Jake.
 
Edit: nvm, was just glancing though Hyne, the FF8 editor, seem my way edit the ps3 save without JB'ing it had already been discovered. Would have saved me a bit of time had i known that... Oh well
 
Last edited:
The stats and hp/mp  gain in 1.9.6 doesn’t work as expected.

1) stats grow over 100 (stats are capped at 100)
2) Changing a few levels in one direction is broken. Level up results in impossible high growth rate with overflow, while level down results with stats stucked.


My educated guess is, that maybe stat_amount in Save.cpp is not updated, when a level is changed.
 
Leveling up works much smoother in 1.9.7
stats are not capped at 100 in black chocobo and im aware of this i just never felt the need to cap them since you only should really reach 100+ in a stat at high level and with only some characters.  its well known that leveling down cause strange stat issues.
 
Ah okay, I didn’t know that the too fast growth rate was already fixed. Nice, good stuff.

For levelling down, I guess a reverse stat gain could help (even it is not really necessary).

                          Difference   Stat Gain
                             0- 3          3
                             4- 6          2
                             7- 9          1
                            10-11        0
 
Last edited:
it's actually possible to disable stats being capped at 100
I do this in my mod.
I have the PM from NFITC somewhere about this...
 
this is already done the but its just not as smooth when you level down

Code: [Select]
Code:
 void CharEditor::level_up(int pre_level){    if(pre_level < data.level)    {//level up        for(int i=pre_level;i<data.level;i++)        {// for stat_gain stat guide, 0=str; 1=vit;2=mag;3=spr;4=dex;5=lck;6=basehp;7basemp also use id incase of mods that could move a char.            sb_str->setValue(data.strength + Chars.stat_gain(data.id,0,data.strength,i+1));            sb_vit->setValue(data.vitality + Chars.stat_gain(data.id,1,data.vitality,i+1));            sb_mag->setValue(data.magic + Chars.stat_gain(data.id,2,data.magic,i+1));            sb_spi->setValue(data.spirit + Chars.stat_gain(data.id,3,data.spirit,i+1));            sb_dex->setValue(data.dexterity + Chars.stat_gain(data.id,4,data.dexterity,i+1));            sb_lck->setValue(data.luck + Chars.stat_gain(data.id,5,data.luck,i+1));            sb_base_hp->setValue(data.baseHP + Chars.stat_gain(data.id,6,data.baseHP,i+1));            sb_base_mp->setValue(data.baseMP + Chars.stat_gain(data.id,7,data.baseMP,i+1));         }    }    else if(pre_level > data.level)    {//level down        for(int i=pre_level;i>data.level;i--)        {// for stat_gain stat guide, 0=str; 1=vit;2=mag;3=spr;4=dex;5=lck;6=basehp;7basemp            sb_str->setValue(data.strength - Chars.stat_gain(data.id,0,data.strength,i));            sb_vit->setValue(data.vitality - Chars.stat_gain(data.id,1,data.vitality,i));            sb_mag->setValue(data.magic - Chars.stat_gain(data.id,2,data.magic,i));            sb_spi->setValue(data.spirit - Chars.stat_gain(data.id,3,data.spirit,i));            sb_dex->setValue(data.dexterity - Chars.stat_gain(data.id,4,data.dexterity,i));            sb_lck->setValue(data.luck - Chars.stat_gain(data.id,5,data.luck,i));            sb_base_hp->setValue(data.baseHP - Chars.stat_gain(data.id,6,data.baseHP,i));            sb_base_mp->setValue(data.baseMP - Chars.stat_gain(data.id,7,data.baseMP,i));        }    } //little broken when going down..    calc_stats();}
stat gain returns a number between 0 and 3.
 
Hmm, I’m a bit unsure if we mean the same thing. :) So I’m going to clarify my point, even you may already understood.

With »reverse« I mean to switch the order of the stat gain:

Level up:            Difference   Stat Gain
                             0- 3          0
                             4- 6          1
                             7- 9          2
                            10-11        3

Level down:       Difference   Stat Gain
                             0- 3          3
                             4- 6          2
                             7- 9          1
                            10-11        0


The idea behind is, that at a level down the baseline decreases and thus the diff decreases, resulting in a different stat gain/lose need.


Stat Difference = Rnd(1..8) + Baseline - Current Stat

Let’s assume rnd = 4, baseline = 40 and current stat = 30.
When levelling up, the current stat needs to catch up the baseline, thus the difference of 14 needs a high stat gain.
When levelling down, the baseline needs to catch up the current stat, thus the difference of 14 needs a low stat gain/lose.
That’s why reversing.
 
Not sure if anyone else has had this or if there's already a fix for it, but I edited the limit gauge for cloud and now it just doesnt go up any higher. Also I made my characters' HP 9999 and for some reason when they level up it goes down by about 200 each time haha. Any help would be appreciated.
 
Hmm, I’m a bit unsure if we mean the same thing. :) So I’m going to clarify my point, even you may already understood.

With »reverse« I mean to switch the order of the stat gain:

Level up:            Difference   Stat Gain
                             0- 3          0
                             4- 6          1
                             7- 9          2
                            10-11        3

Level down:       Difference   Stat Gain
                             0- 3          3
                             4- 6          2
                             7- 9          1
                            10-11        0


The idea behind is, that at a level down the baseline decreases and thus the diff decreases, resulting in a different stat gain/lose need.


Stat Difference = Rnd(1..8) + Baseline - Current Stat

Let’s assume rnd = 4, baseline = 40 and current stat = 30.
When levelling up, the current stat needs to catch up the baseline, thus the difference of 14 needs a high stat gain.
When levelling down, the baseline needs to catch up the current stat, thus the difference of 14 needs a low stat gain/lose.
That’s why reversing.
That is a good approach. But instead of reverse the stat table, Baseline and Current Stat must be inverted generating a new Stat Difference formula.

I encourage you to test the last svn build:

Black Chocobo v1.9.7 Pre-Release:
Removed at sithlord48's request, as 1.9.7 is now released. ~Covarr (UPDATED: 2012-09-17)



Metadata support is already implemented in Black Chocobo v1.9.7 Pre-Release. We use the Qt unixtimestamp generator.

Black Chocobo Users: Please take a few minutes of your life to read thread's posts before asking something that is already answered, thanks!
 
Last edited:
That is a good approach. But instead of reverse the stat table, Baseline and Current Stat must be inverted generating a new Stat Difference formula.[…]
Your idea is the better one and it should work good enough. Can’t test though (Linux).
 
Your idea is the better one and it should work good enough. Can’t test though (Linux).
it should be easy enuff for you to install qtcreator and build the program from source, or just tell me 32 or 64 bit and i will make you an Executable for you system type. (you will have to have the qt libaries installed , and you do if your using black chocobo 1.9.6 ) Us Penguins need to look out for eachother ;)
 
Qtcreator works like a charm.

Could it be, that the save slots are starting with slot 2 instead of slot 1?


For the save map:

z_6

#1 --> StepID 09C540 (psx ntsc and BrutalAl’s notion, Terence called it Seed)
#2 --> Offset 09AD2C

These values are used for field encounter timing:
https://www.ff7catalog.com/threads/3933/
 
Last edited:
z_6

#1 --> StepID 09C540 (psx ntsc and BrutalAl’s notion, Terence called it Seed)
#2 --> Offset 09AD2C
Interesting... those memory address's represent exactly what save map bytes?

please use the save map address's:

0x0BA0    4 bytes    z_6 Unknown


0x0BA0    1 Byte     z_6[0]
0x0BA1    1 Byte     z_6[1]
0x0BA2    1 Byte     z_6[2]
0x0BA3    1 Byte     z_6[3]

Thanks!
 
Status
Not open for further replies.
Back
Top