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 Mods / 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 Mods / Re: FF VIII How to MOD?
« on: 2017-10-29 18:28:24 »
Are you using the fixed version of Ifrit above?

Gameplay Mods / 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 Mods / 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 Mods / 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 Mods / 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 Mods / 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 Mods / 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 Mods / 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 Mods / 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 Mods / 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 Mods / 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 Mods / 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 Mods / 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 Mods / 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.

see section 9.7

I nooped the function and the only difference between the 2 log traces was the texture used, so the change is either in a texture or a value not explicitly stated e.g. matrices or stuff in the buffers.
I think the texture changes are more likely to be animations though e.g. sea/eyes.

If it helps, here's what a frame rendering looks like in ff7 when using Aali's opengl driver:

(I'm using a modified version of glintercept to add FF7 related data)
and the shaders that were in memory at the time:
Code: [Select]


//   Vertex Shader 2

#version 110

uniform int vertextype;
uniform bool fb_texture;
uniform int blend_mode;

uniform mat4 d3dprojection_matrix;
uniform mat4 d3dviewport_matrix;

void main()
vec4 pos = gl_Vertex;

gl_FrontColor.rgba = gl_Color.bgra;

if(vertextype == 3)
pos.w = 1.0 / pos.w; *= pos.w;
pos = gl_ProjectionMatrix * pos;
pos = d3dviewport_matrix * d3dprojection_matrix * gl_ModelViewMatrix * pos;

if(gl_FrontColor.a > 0.5) gl_FrontColor.a = 0.5;

if(blend_mode == 4) gl_FrontColor.a = 1.0;
// BLEND_25P
else if(blend_mode == 3) gl_FrontColor.a = 0.25;

gl_TexCoord[0] = gl_MultiTexCoord0;

if(fb_texture) gl_TexCoord[0].t = 1.0 - gl_TexCoord[0].t;

gl_Position = pos;

//   Fragment Shader 3

#version 110

uniform int vertextype;

uniform sampler2D tex;
uniform bool texture;
uniform bool fb_texture;
uniform bool modulate_alpha;

void main()
vec4 color = gl_Color;
vec4 texture_color;

texture_color = texture2D(tex, gl_TexCoord[0].st);

if(fb_texture && texture_color.rgb == vec3(0.0, 0.0, 0.0)) discard;

if(texture_color.a == 0.0) discard;

color *= texture_color;

if(!modulate_alpha) color.a = texture_color.a;

gl_FragColor = color;

interestingly, I can't see any calls to the lighting functions in opengl, so I wonder if the lighting calcs are just done with the shader.

oh god, I forgot it's that old xD.
All the DirectDraw/D3D init stuff starts at 0x00678079, no idea what the functions calls for the ancient versions look like though.
I'd guess you'd need the directx 5 SDK since I doubt there's much information around the internet still.

For Direct3D, I guess you'd want to hook onto the IDirect3D9::CreateDevice method and edit the parameter passed into the D3DPRESENT_PARAMETERS struct, see:

I did have the offsets for the creation somewhere but I have no idea where they are at the moment.
As for the software rendering, I don't really know without looking at it.

Scripting and Reverse Engineering / Re: [FF8] Angel wings
« on: 2016-12-07 14:19:46 »
see this post

for a multiplier of x3 you would change 8D34B6 to 8D3476
and for x2 you would change 8D34B6 to 8D3436 (you could change this to a shift instruction but there's not that much point)

note that the addresses given in the post will be different for different exe versions, the ones given are for the English Steam release.

Pages: [1] 2 3 ... 7