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.


Topics - Vehek

Pages: [1]
1
Graphical / Need some help testing FF8 models
« on: 2013-11-29 22:17:35 »
I'm not quite sure if this belongs here... (Is this a general discussion thing, reverse engineering though I've done most of the reverse engineering already?)
In order to investigate modding possibilities, I've run various tests with FF8's field models.
The way I see it, at the moment, the only way to get super hires models without support from Aali's driver would be to up the texture count of the models.
So I ran tests with a simple cube, with each side having a different texture. At least two types of glitches have shown up.
The first, involves the PMP files, the particle data.
(IMAGE REMOVED)

Here's another type of error.
(IMAGE REMOVED)
These errors crop up when the amount of model textures loaded goes beyond a certain amount. But my system's graphics suck, so I'm not sure whether they're universal.

Several-texture model testcase

To install the test:
1. Extract the main_chr.fs archive files from field.fs
2. Replace d000.mch, d001.mch in main_chr.fs with the included model file
3. Put the modded main_chr.fs archive files back into field.fs

2020 edit: images removed due to Photobucket terms of use change.

2
Note: These are things like the mobile gardens, cars, those Disc 4 gateways. No towns in here. They are distinct from the models in world.fs's chara.one, which use the field model format.
These exist identically in both wmset.obj and wmsetus.obj. They appear to be solid meshes without skeletons. There are a total of 33 models.
In wmsetus.obj, the models are at 0x3BB4, and the texture section is at 0x64AD0. Both sections start with pointers to their entries. Each model corresponds to a texture in the texture section. That is, the first model loads the first texture in the texture section, the second model loads the second texture, and so on. I think that's only into whatever is used for FF8's VRAM though. Texture page and CLUT IDs are part of the model data, and must match up with the TIM.



Code: [Select]
struct
{
u16 triangle_count;
u16 quad_count;
u16 texture_page;
u16 vertex_count;
triangle triangleData[triangle_count];
quad quadData[quad_count];
vertex verticeData[vertex_count];
}model

Code: [Select]
struct
{
u8 vertexIndices[3];
u8 semitransp; //Sets semitransparency if bit 0x01 is set
u8 texcoords1[2];
u8 texcoords2[2];
u8 texcoords3[2];
u16 CLUT_ID;
} triangle

Code: [Select]
struct
{
u8 vertexIndices[4];
u8 texcoords1[2];
u8 texcoords2[2];
u8 texcoords3[2];
u8 texcoords4[2];
u16 CLUT_ID;
u8 semitransp;//Sets semitransparency if bit 0x01 is set
u8 unknown
} quad

Code: [Select]
struct
{
s16 coordinates[3];
u16 unknown;
}vertex

I'm not sure what order I should list for the coordinate axes. When importing into Blender, using XYZ produces models lying on their sides.

3
General Discussion / FF7PC(1998): Who ported it?
« on: 2012-08-25 22:13:40 »
I've often heard that Eidos did the FFVII PC (1998) port, especially since the news of the re-release, but is there any proof for that? I know vaguely that Eidos hosted the 1.02 patch and generally handled technical support for FF7PC. I don't know, but don't a lot of publishers do that for the games they release?
What information I've gathered so far suggests SquareSoft was responsible.

Press release
http://www.ff7citadel.com/press/pr_pc.shtml
(Emphasis below mine)
Quote
One of the summer's premiere blockbuster titles, Final Fantasy VII for the PC is published by Eidos Interactive, known for its mega-hit cross-platform Tomb Raider games, and developed by Square Co., Ltd., known in the gaming industry for creating the legendary Final Fantasy franchise. SquareSoft, Inc., a subsidiary of Square Co., Ltd. has recreated the game for the PC.

FF7PC Game Credits
I can't find any software programmers listed under either 'Eidos' section in the credits.

"Square Soft Inc.", however, has 'Senior Software Engineers' and 'Software Engineers' listed.
Quote
Senior Software Engineers
   Anthony Ignacio
   Son Ton

Software Engineers
   "William" Feng chen
   Scott Conventon
   Jay Fong
   Kazumasa Fusya
   Akintunde Omitowoju
   Rajiv Patel
   Yoshinori "Goro" Uenishi


FF8 PC Interview
http://pc.ign.com/articles/070/070923p1.html
This is an interview about FF8PC, but the software engineer interviewed, Jay Fong, is also listed as a software engineer in FF7PC's credits.
Quote from: Jay Fong
However because of the experience we gained while working on the Final Fantasy VII port, work on the PC version of Final Fantasy VIII has gone very smoothly.
Quote
YM: Squaresoft game programmers did all the necessary work. They learned a lot from FF7 project though they have to do even more to port FF8 to the PC because FF8 added more new features on FF7.
These quotes mention the team learning from the work done for FF7, which to me implies firsthand experience rather than secondhand experience.



FF8PC Credits
Quote
Senior Software Engineers
   Jay Fong
   Anthony Ignacio
Software Engineers
   Kevin Christensen
   Scott Coventon
   Kazumasa Fuseya
   Davide Pasca
   Yoshinori "Goro" Uenishi

Now, compare it to the list of software engineers for FF7PC. Out of the 7 software engineers who worked on FF8PC, 6 of them were also listed as software engineers for FF7PC.

4
This is what I've learned about the FF8 MCH format, to add on to the information already collected.
Model header
Offset   Length   Description
0x1C   0x02   Triangle count
0x1E   0x02   Quad count


Undescribed data between vertices and faces
This appears to be texture-animations e.g. eye blinks. Its entry in the first part of the model header appears to be the length of the section, rather than the count.
Guess at structure. My names are rather rough.
Code: [Select]
struct
{
byte unknown
byte total_textures?
byte unknown
byte uSize
byte vSize
byte replacement_section_count
UV_pair original_area_coords
byte unknown[2]
UV_pair replacement_coords[replacement_section_count]
}

Face data
Offset   Length   Description
0x08   0x02   When bit 0x04 set, face has semi-transparency
0x36   0x02   Texture index


Undescribed data between faces and skin-objects
Seems to split up the skin-objects, triangles, and quads.
(A guess)
Code: [Select]
struct
{
uint16 start_skinobject_index
uint16 skinobject_count
byte unknown[12]
uint16 start_triangle_index
uint16 triangle_count
uint16 start_quad_index
uint16 quad_count
byte unknown2[8]
}

Some models (d049, d053, d075, and p019) have two of this data type.


Animations
The first 6 bytes of each animation frame are the coordinates shift (3 signed 16-bit numbers). I am only sure of the last one being the Z-shift.

Player models actually do have animation data after all, just in a different form than the one I documented in the field chara.one files. They use a simple six bytes per bone.


--
Edit: updated texture animation info

Pages: [1]