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 - JWP

Pages: [1] 2 3 ... 7
Gameplay Modding / Re: [FFVIII-PCSteam] Enemy AI?
« on: 2018-08-10 17:11:27 »
There's a beta version of Ifrit that has been modified to make it possible to view/edit AI but note that it is pretty buggy at present.
see here

Heh, I really need to get around to fixing it but the whole AI section really needs a rewrite =/.

I believe the names are also in kernel.bin but you need a different tool to edit them:

Already learned abilities are stored in the save data and there is a file in partial save game format that is initially loaded when you start a new game (init.out), you would need to edit this file to change it for new games (see this thread) and your current save if is for an existing game (using Hyne for example).
Shuffling the abilities up (so the 2 last ones are blank instead) may fix the odd black skill problem but that's just a guess.

It could also be to do with the constant array of files embedded in the exe:

Should be easy enough to do if you know how to work with ff8.

The following patches in memory would do it for the English Steam version for stats other than hit or eva:

Code: [Select]
Address: 0x004966E5
From:    8A 14 4D F9 E0 CF 01
To:      8A 54 24 1C 90 90 90

Code: [Select]
Address: 0x00496788
From:    8A 14 4D F9 E0 CF 01
To:      8A 54 24 1C 90 90 90

Code: [Select]
Address: 0x004963CB
From:    8A 1C 45 F9 E0 CF 01
To:      8A 5C 24 14 90 90 90

The way this works is that the following functions:
Code: [Select]
0x496310: GetCharacterHP (int lvl, int char_id)
0x496440: GetCharacterStat (int lvl, int char_id, int stat)

are called with the character level as a parameter and it's easy to pull this off the stack when it tries to get the value for the junctioned magic amount.

Hit and Eva are calculated in the following functions:
Code: [Select]
0x4967C0: GetCharacterHit (int char_id)
0x4968A0: GetCharacterEva (int char_id, int unk1)

it's probably possible to change these too but it's more work than I'm willing to do.

Gameplay Modding / Re: FF VIII How to MOD?
« on: 2017-10-29 19:29:45 »
I updated the file without changing the filename or version numbers.

Gameplay Modding / Re: FF VIII How to MOD?
« on: 2017-10-29 18:28:24 »
Are you using the fixed version of Ifrit above?

Gameplay Modding / Re: FF VIII How to MOD?
« on: 2017-10-23 21:43:12 »
that particular error was because it was gfStolen, rather than gfstolen.

Gameplay Modding / Re: FF VIII How to MOD?
« on: 2017-10-23 08:46:25 »
Use the latest version of Ifrit. It should fix that issue.

Gameplay Modding / Re: FF VIII How to MOD?
« on: 2017-10-15 19:07:30 »
I've run a test compilation on all of the files that can be parsed and I've determined the following:
these if statements are compiled incorrectly:
Code: [Select]
I'm guessing they also need a parameter for the slot/id and it's more like "friendly(id).hp" which could be self with a certain id.
The line "self.var60 = 0" appears in c0m071.dat, this seems more like a coding error to me as self vars are in the range DC-E3.

Gameplay Modding / Re: FF VIII How to MOD?
« on: 2017-10-15 11:32:47 »
After recompiling c0m085.dat without any changes to the code, I get some changes to the file.
The offsets all change but this should be fine as it's related to a different number of 00's at the end of the code (the first one hit causes a return, so the count doesn't matter)
However there is a concerning difference:
Code: [Select]
if (self.hp < 5)
changes from:
02 00 00 01 05 00 0E 00
02 00 C8 01 05 00 0E 00

I'll have to do some more investigating to see the impact of this change.
In addition to this, I'll code a test to recompile all the AI and check they come out the same to remove any other issues like this.

Gameplay Modding / Re: FF VIII How to MOD?
« on: 2017-10-14 23:14:28 »
I'll do some investigating. It'd be a huge help if you could find the smallest change that causes the issue so that I can isolate the problem quicker.

Gameplay Modding / Re: FF VIII How to MOD?
« on: 2017-10-14 20:14:38 »
What I mean is that the magic is numbered 0-15, not 1-16.
In other words, the first magic line is id 0 - getting this incorrect would cause you to reference the wrong magic.

Which dat file?
Did you recompile and insert back into the archive?
What specific changes have you made?

Gameplay Modding / Re: FF VIII How to MOD?
« on: 2017-10-14 19:10:10 »
The init code is targeting himself and casting vampire. Also I thought the magic was indexed at 0.

Gameplay Modding / Re: FF VIII How to MOD?
« on: 2017-10-13 23:38:50 »
Fixed and updated the link, let me know if you still get any issues.

Gameplay Modding / Re: FF VIII How to MOD?
« on: 2017-10-13 22:05:42 »
Well I think I may have found the root of the problem, it looks like if any if statement is > 255 bytes, the offset doesn't get patched correctly.
I'll see if I can find the old code somewhere to patch since the version I'm working on is a bit of a mess atm.

Edit: I've patched the issue and updated the link here

I'm not sure if it will fix the issue that is causing the problem but it does fix a very major issue - it completely screws the logic up but it doesn't show in the code because the decompiler ignores the offset.
To fix any file, you should be able to adjust the textbox to get the compile button and a compile + save should fix it.

Gameplay Modding / Re: FF VIII How to MOD?
« on: 2017-10-11 22:36:56 »
The reason that they are only hitting a single target is because of the parameter to the target function, see here
more specifically:
Code: [Select]
Target & Attack
04 ... is the simple way to target something.
   00->07 : Squall -> Edea (it should work up to Laguna, Kiros and Ward as well but I haven't check those)
       00 : Squall 
       01 : Zell
       02 : Irvine
       03 : Quistis
       04 : Linoa
       05 : Selphie
       06 : Seifer
       07 : Edea
        c8 :  self
        c9 :  random enemy
        cc :  all enemies
        cd :  all allies
        cf :  random ally
note that you would need to convert these to decimal values.

As Girl next door says, the AI is editable but I would run through the changes with a hex editor to check that nothing weird has happened, there are some weird issues at the moment and I'm not 100% sure what's causing them.
Also I'd like to clarify that gjoerulv wrote most of Ifrit since I don't like taking credit for the work of other people, I only wrote the part that deals with the AI.

Gameplay Modding / Re: FF VIII How to MOD?
« on: 2017-10-05 20:44:28 »
Technically yes but it would require editing the exe file.
In the English steam version you could change:
memory address 0xB683DA from 0x7D to 0xEB
memory address 0xB683F7 from 0x7D to 0xEB

no idea if can actually write those values properly but that removes the check for it.

Gameplay Modding / Re: FF VIII How to MOD?
« on: 2017-10-05 20:06:29 »
There's a slightly more complete list here

I'm guessing that it might be either due to the way the if statements are encoded or due to an issue with how the offsets are adjusted.
I'm working on a newer version but I'm rewriting a lot of the code because it's a hacky mess.

If you're trying to mod it in the actual game, no.
The curve in CharEXP.cs is just a copy of how the game calculates EXP, it wouldn't change how the game calculates it.

Looking here for the formula and the function that calculates this is at 0x4941F0 in the English Steam version.
For representation, I'd suggest using the expected value of the RandomMod, which would be ~287.5 and treat crisis level 4 using that RandomMod as 50% and 8+ as 100%.
This would mean that you would calculate the value of (StatusBonus + DeathBonus - HPMod) and treat it as a scale of 0 - 2300.

Gameplay Modding / Re: FF VIII How to MOD?
« on: 2017-09-22 19:03:32 »
The tool you would probably want to use to edit enemies is Ifrit.
see here.

If you want to do more complicated things, you might want to use a beta mod for Ifrit that I made here.

I still need to finish the mod off at some point but the code is a mess and I've rewritten a lot of it =/.

It's hardcoded in the exe, if the item id is <32 (iirc it was something like this), it treats it as a battle item and uses a different section of the kernel to get names and data.
In addition to this, the sections before the text in the kernel are hardcoded in size, so it's not possible to add anything to the sections - the exe uses hardcoded offsets to pull the data from the kernel and doesn't use the offsets present at the beginning.

Pages: [1] 2 3 ... 7