Page 2 of 2

Re: Kengo 3 PS2

Posted: Fri May 23, 2014 3:58 pm
by JohnHudeski
There is the possibility that the first bone (body) is the root object and has no animation keys as it is moved during the game by the ending (Very common standard of that era)

Re: Kengo 3 PS2

Posted: Fri May 23, 2014 10:58 pm
by shakotay2
JohnHudeski wrote:I just have one question about Face data needing to skip so many bytes (for example 36 in the previous examples).
Is that not some what wasteful? or is other data naturally stored in between the indices.
As for the animation file: there are floats stored in this space. But it's not clear whether it's a mesh with face indices at file's end. That was just a suggestion.
Lastly just based on general experience do you know of any file formats that has a bunch of float mostly 1's (00 00 80 3F)
It's not uncommon. Just search any given model for them. You'll find lots of 1's being contained.

Re: Kengo 3 PS2

Posted: Thu Jun 19, 2014 2:35 pm
by JohnHudeski
After reviewing the 360 release for this game i found out that the files i mistakened for animation files were not animations
The were called .ref and just seem to be skeleton files.

I found the animation files .key (key for keyframe) and was able to decipher their structure

Code: Select all

#region support structures
//I don't understand the need for the constant value after the key when key could have just been made an integer
//I don't understand why there are 2 floating values either
public struct KeyFrame
{
	public ushort key;
	public ushort const0; //548 = 24 02h
	public float f0;
	public float f1;
}

public struct Channel
{
	public ushort frameCount; //number of frames
	public ushort unkn0; //260,261,262.... for 6ers: first batch 256,257,258
	public List<KeyFrame> frame; // [frameCount]
}

public struct Node //Probably bones
{
	public ushort ID;
	public ushort channelCount; //0, 3, 6
	public uint addr;
	public List<Channel> channels;
}

public struct KeyFile
{
	public uint id;
	public float one;
	public float unkn0; //coincides with max frame count
	public float sixty;
	public uint nCount; //Node Count
	public List<Node> node;
}
#endregion
The problem now is trying to map the node.ID to an actual bone from the .ref file

PS: 0x00000008h is the same as float 0. I see this hex sometimes when I expect a floating point value. Is it wrong to read this as a float?

Re: Kengo 3 PS2

Posted: Mon Dec 08, 2014 7:16 pm
by JohnHudeski
Resurrection

Re: Kengo 3 PS2

Posted: Mon Dec 08, 2014 9:27 pm
by JohnHudeski
I haven't slept since last night
I believe I am so close to cracking this thing
Just a bit nervous now (Cos If I am wrong I wont even know what to do).

Re: Kengo 3 PS2

Posted: Tue Dec 09, 2014 11:53 pm
by JohnHudeski
fully extracted skeleton with accurate orientation etc

Re: Kengo 3 PS2

Posted: Wed Dec 10, 2014 6:37 pm
by JohnHudeski
OMG lol
So I managed to read all the relevant files and all.....
Most of t time the game actually imports and animates a rig runtime
not the actual bones

Now I have to figure out how to connect the rigs to the bones (FML)