Changes

Jump to navigation Jump to search

FF8/FileFormat X

2,216 bytes added, 20:42, 9 October 2015
Info
== Info ==
.X file is uncompressed 3D stage model with texture embedeed. The file contains basic unused info (currently unknown, probably for editor?not used by FF8 engine), camera data, movement, translations and geometry data.  Battle stages '''DOES NOT''' contain pointers to next sections. All pointers are '''HARDCODED''' in FF8.EXE. [[FF8/BattleStage/Pointers|Click me for battle stage pointer list]]
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
! style="background:rgb(204,204,204)" | Description
|-
| Info/ScriptUnused data
| E8 FF BD 27 01 00 02
| Currently unknown. Probably header + info, that This data is not needed in game itself. Can be null'ied and nothing will happen ingame. unused by FF8 Engine
|-
| Camera data + movement
| 02 00 08 00 20 00 (usually 0x5d4/8)
| Camera animations, movement (pre-keyed)
|-
| Contains one .TIM texture
|}
 
'''How is this file handled by the engine?'''
 
FF8 loads specific file and reads it from hardcoded (written in FF8 code) position. This hardcoded position points to camera data. Camera data has size uint16, which is calculated and relative jump is made. Just after camera, a typical section based file handling is made.
 
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
! style="background:rgb(204,204,204)" | Offset
! style="background:rgb(204,204,204)" | Length
! style="background:rgb(204,204,204)" | Description
|-
| 0
| uint32
| Number of sections
|-
| 4
| uint32
| Objects group #1 (NULL?)
|-
| 8
| uint32
| Objects group #2
|-
| 12
| uint32
| Objects group #3
|-
| 16
| uint32
| Objects group #4
|-
| 20
| uint32
| Texture
|-
| 24
| uint32
| Texture (Double texture available?)
|-
| 28
| uint32
| Relative to EOF
|}
 
'''Objects group:'''
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
! style="background:rgb(204,204,204)" | Offset
! style="background:rgb(204,204,204)" | Length
! style="background:rgb(204,204,204)" | Description
|-
| 0
| uint32
| Number of sections
|-
| 4
| uint32
| UNKNOWN
|-
| 8
| uint32
| ObjectsList
|-
| 12
| uint32
| Object group settings?
|-
| 16
| uint32
| Relative to end_of_group
|}
 
'''Objects list:'''
{| border="1" cellspacing="1" cellpadding="3" align="center" style="border: 1px solid black; border-collapse: collapse;"
! style="background:rgb(204,204,204)" | Offset
! style="background:rgb(204,204,204)" | Length
! style="background:rgb(204,204,204)" | Description
|-
| 0
| uint32
| Number of objects
|-
| Num_of_obj*4
| uint32
| Relative pointer to segment (one .obj file) [01 00 01 00]
|}
 
This might look difficult, but it's like multi-pointer file that starts at different location given by executable. See list at the beginning of this wiki to see which stages camera starts at which position (where FF8.exe really starts to read file as BattleStage) [FF8 stores whole file, even with useless data before camera]
If this still makes trouble, see this video: TODO
====
== Info/Script ==
Anonymous user

Navigation menu