Qhimm.com Forums

Miscellaneous Forums => General Discussion => Topic started by: EvilStar on 2011-02-08 06:13:49

Title: increasing exp FF7
Post by: EvilStar on 2011-02-08 06:13:49
i haven't seen anything that has to do with this i was wanting to increase the exp gain to like x5 nothing major just make the game a lil more enjoyable to me is it possible if so how can i do this?
Title: Re: increasing exp FF7
Post by: nfitc1 on 2011-02-08 12:17:02
You could figure out where the Exp Plus Materia writes its data to and figure out where that's populated in the first place. That would be the only thing I think you could do to the engine of the game. Otherwise you would just have to go through each enemy and increase the exp they give.
Title: Re: increasing exp FF7
Post by: Furzball on 2011-02-08 17:32:32
As NFITC1 said. This also depends on the version of the game you're using. PS version is simple with a gameshark. However in the PC version, if I remember correctly the effects system works across weapons, armor, accessories, spells, enemy attacks, etc. If you can find Exp+ and tie it into weapons, armor, and accessories. Or you can go into enemy data and just 5x the amount of experience they are supposed to give you. It'll be similar with AP, gil and items. Lemme see. what was that program to edit enemy data?
Title: Re: increasing exp FF7
Post by: Tenko Kuugen on 2011-02-08 18:17:11
As NFITC1 said. This also depends on the version of the game you're using. PS version is simple with a gameshark. However in the PC version, if I remember correctly the effects system works across weapons, armor, accessories, spells, enemy attacks, etc. If you can find Exp+ and tie it into weapons, armor, and accessories. Or you can go into enemy data and just 5x the amount of experience they are supposed to give you. It'll be similar with AP, gil and items. Lemme see. what was that program to edit enemy data?

Hojo
Title: Re: increasing exp FF7
Post by: Bosola on 2011-02-08 19:56:36
You could figure out where the Exp Plus Materia writes its data to and figure out where that's populated in the first place. That would be the only thing I think you could do to the engine of the game. Otherwise you would just have to go through each enemy and increase the exp they give.

For the PSX NTSC version,

Code: [Select]
800694f8 [][]          Init with 0. Add materia exp modifier (Exp Plus) (0x18 0x20). Limit to 0x64. Limit to 0x20.
As you know, a Level 2 Exp Plus materia grants a +100% experience boost. 0x64 is about three times 0x20, so if your code writes 0x64 to address 800694FB, you should be able to roughly quadruple Experience gain.

An easier way, though, would be to just quarter the Exp. requirements for each level by playing with the character 'Exp needed' curves in WallMarket.
Title: Re: increasing exp FF7
Post by: nfitc1 on 2011-02-08 20:25:37
As NFITC1 said. This also depends on the version of the game you're using. PS version is simple with a gameshark. However in the PC version, if I remember correctly the effects system works across weapons, armor, accessories, spells, enemy attacks, etc. If you can find Exp+ and tie it into weapons, armor, and accessories. Or you can go into enemy data and just 5x the amount of experience they are supposed to give you. It'll be similar with AP, gil and items. Lemme see. what was that program to edit enemy data?

Hojo

When I'm done with it, PrC will too. ;)

You could figure out where the Exp Plus Materia writes its data to and figure out where that's populated in the first place. That would be the only thing I think you could do to the engine of the game. Otherwise you would just have to go through each enemy and increase the exp they give.

For the PSX NTSC version,

Code: [Select]
800694f8 [][]          Init with 0. Add materia exp modifier (Exp Plus) (0x18 0x20). Limit to 0x64. Limit to 0x20.
As you know, a Level 2 Exp Plus materia grants a +100% experience boost. 0x64 is about three times 0x20, so if your code writes 0x64 to address 800694FB, you should be able to roughly quadruple Experience gain.

An easier way, though, would be to just quarter the Exp. requirements for each level by playing with the character 'Exp needed' curves in WallMarket.

For the PC version, the address that Exp Plus modifies is 0xC068AC. The value there is capped at 64h (which can be increased if the right bytes are manipulated). Base at 20h, a level 1 Exp Plus adds 18h to that which is 150%. Then it adds 20h for 200% exp so 64h would be 325% exp (Do exp pluses stack?). But it only takes effect when equipping materia. Then some address somewhere gets modified in the active character data I'm not sure WHERE in the active data this goes to. It looks like it goes to the first byte, but that doesn't reflect the rest of my information. It's odd and I'm still looking into it.

Playing with the exp curves would certainly make every exp worth a lot more. You could theoretically get to level 99 on as little as 31851 exp! At that range though, Cloud would achieve level 27 after the battle with the two MPs.  :-o
Title: Re: increasing exp FF7
Post by: Bosola on 2011-02-08 20:54:18
It only takes effect when equipping materia.

Ah. This explains a lot; playing in these areas (specifically, trying to draft a GS code that enables auto-phoenix), I find I still need certain materia equipped to establish the functionality I want.

Quote
Then some address somewhere gets modified in the active character data I'm not sure WHERE in the active data this goes to.

Wait, an address in the character data is changed to the first byte of the character data?

Strange...
Title: Re: increasing exp FF7
Post by: nfitc1 on 2011-02-08 21:38:16
Wait, an address in the character data is changed to the first byte of the character data?

Strange...

No. The Active Character Data I'm talking about spans 1088 bytes. Somewhere in those 1088 bytes is an experience multiplier. It LOOKS like it's the first byte of the character data, but I don't think that's the case since that should be the character ID.

EDIT:
OK, I found out what happens here in the PC code. There's a memory address at 0x99E2C0 where the collective exp of all enemies goes into. Starting at 0x43170A the pseudo-code goes a little like this:
(per_character)
Code: [Select]
[0x99E2C0] * {CharData[0]} >> 16 = Exp_gained
So the value at CharData[0]/16 is the amount of exp bonus that char gets.
The multiplier code is at:

Code: [Select]
0x431781    imul    ecx, eax
So if this is changed to

Code: [Select]
0x431781    imul    ecx, {some constant}
then that would guarantee a static multiplier for all characters. I think this is all it would take to multiply it permanently. I believe that's a change at
0x030B81 (in the ff7.exe) from
0F AF C8
to
6B C9 {constant}
Someone feel free to give this a try. I would, but I don't have the video drivers working on my new Win7 system.
Title: Re: increasing exp FF7
Post by: EvilStar on 2011-02-09 03:10:51
thanks for everyone's interest in this topic and NFITC1 that's great work thanks ill test it tomarrow
Title: Re: increasing exp FF7
Post by: nfitc1 on 2011-02-09 15:31:32
thanks for everyone's interest in this topic and NFITC1 that's great work thanks ill test it tomarrow

Don't thank me until it works. I tried something similar about removing the stat capping and it behaved unpredictably. I'm not sure if this is the only place that this will work.

Also, remember that that constant times the battle exp is going to get bit shifted 4 to the right (divided by 16) so it won't do any good to make the constant higher than F0h. This will also override any Exp Plus Materia you have.