Author Topic: FF7 field/battle/world map models - conversion between PSX and PC?  (Read 4121 times)

Lazy Bastard

  • *
  • Posts: 290
  • I may be lazy, but I can...zzzZZZzzzZZZzzz...
    • View Profile
    • GameHacking.org
Now that I've reverse-engineered PSX world map models, and extrapolated the existing work on PSX field and battle models, I'm interested in a few tools I've come across on the forums that handle FF7 PC field/battle/world map models (HRC resize, field<>battle converter, etc). However, PC and PSX use different formats.

I've only skimmed the wiki pages concerning PC model formats, but I'm curious to hear the thoughts of those experienced in the matter: how feasible would it be to create a conversion utility that could take either PC or PSX models as input, and output the opposite format? If this were accomplished, all work done for either platform would be universal...aside from graphical prowess not possible on the PSX.

Thoughts?

myst6re

  • *
  • Posts: 641
  • Light King of the Savegame - Field Master - FF8.fr
    • View Profile
    • FF8.fr
It's feasible for field models, I think, or maybe not, I have some difficulties with textures.

Differences between PSX and PC field model:

Skeleton: on PS we need to translate to bone size before the animation rotation. On PC we need to translate after the animation rotation. In fact the bone structure is just shifted, a tiny example:
Code: [Select]
PS:
root
|
- 0 (size = 0, parent = root)
|   |
|   - 3 (size = 0, parent = 0)
|        |
|        - 4 (size = -9.19355, parent = 3)
|
- 1 (size = 0 parent = 0)
    |
    - 2 (size = -6.45161, parent = 1)

PC:
root
|   |
|   - 2 (size = -9.35878, parent = root)
|        |
|        - 3 (size = -8.8098, parent = 2)
|
- 0 (size = -6.5589, parent = root)
    |
    - 1 (size = -10.3193, parent = 0)
The size values are not exactly the same, but in fact PC_bone_size = PS_bone_size / 31.0f approximately.

Parts: On PC version there are only triangles, on PS version there are quads too, but it's possible to convert with some algo I think. Like skeleton data, the position values are different between PC and PS, but you can found equivalent values with the same formula as above: PC_pos = PS_pos / 31.0f.
For the texture coords, you need to divide them by the texture width and height to obtain the same values as in PC version.

Animations: On PC there are a root translation and a list of rotations, on PS this is approximately the same mechanism.

Textures: This is different here, the textures are loaded into the vram in the PS version, I have not yet fully understand the system, so I can not talk too much.

Light values and scale: The colors for light are in the model loader in the PC version, and in the BSX file for the PS version.

If I'm not clear, tell me.

Lazy Bastard

  • *
  • Posts: 290
  • I may be lazy, but I can...zzzZZZzzzZZZzzz...
    • View Profile
    • GameHacking.org
That's great info; thanks.

I wonder how battle and world map models would behave...

syntax error

  • *
  • Posts: 147
    • View Profile
The main problem on PSX is RAM limits size affecting textures and models and the slow CD drive.
For performance you could tweak the decompression code and model loader to be faster and fit better into CPU cache.

Lazy Bastard

  • *
  • Posts: 290
  • I may be lazy, but I can...zzzZZZzzzZZZzzz...
    • View Profile
    • GameHacking.org
Right, but I'm not so much interested in using PC model mods on the PSX as I am converting PSX models to PC format so that I can take advantage of all the great tools in existence for working with PC models. After using said tools, I'd simply convert these models back to PSX format, modifications intact. Also, any custom models made for PSX could be easily converted for use with the PC version, although that would be less common.