Changes
From Final Fantasy Inside
Section 5 of field files is a stored walkmesh. A walkmesh is a mesh of polygons on which characters move, telling the engine for example how high it is, and using this the character can, for example, cross bridges with the real feeling that in the middle he is at a higher place than on the sides. It has very simple structure.
{| border="0" cellspacing="1" cellpadding="3" style="background: rgb(0,0,0)" align="center"
! style="background:rgb(0,255,0)" align="center" | Offset
! style="background:rgb(0,255,0)" align="center" | Name
! style="background:rgb(0,255,0)" align="center" | Data Type
! style="background:rgb(0,255,0)" align="center" | Description
|-
|style="background:rgb(0,255,0)" | 0x0000
|style="background:rgb(0,255,0)" | NoS
|style="background:rgb(0,255,0)" | DWORD [0x04]
|style="background:rgb(0,255,0)" | Number of Sectors
|-
|style="background:rgb(0,255,0)" | 0x0004
|style="background:rgb(0,255,0)" | Sector Pool (SP)
|style="background:rgb(0,255,0)" | WORD [3][4] * NoS
|style="background:rgb(0,255,0)" | The data pool of Secots
|-
|style="background:rgb(0,255,0)" | 0x0004 + 24 * NoS
|style="background:rgb(0,255,0)" | Sector Access Pool (SAP)
|style="background:rgb(0,255,0)" | WORD [3] * NoS
|style="background:rgb(0,255,0)" | Gate movement across Mesh Edges
|}
==== Section 5 Header ====
Startofs 0x00 Length 0x04
The walkmesh information is preceeded by a DWORD (4 bytes) unsigned int, named '''NoS''' (, short for the Number of Sectors)in the walkmesh.
==== Sector pool ====
typedef struct {
short x,z,y,res; // short is a 2 bytes long byte signed integer } vertex_3s; // 3s == 3 shortalthough there are 4 this is for 32 bit data alignment in PSX
typedef struct {
==== Access pool ====
}
acces1 is for line from vertex 0 to 1
acces3 is for line from vertex 2 to 0
If acces1/2/3 the edge value is FFFF then you are not allowed to cross 0xFFFF, than this lineedge cannot be crossed (it's blocked). Acces The access pool and sector pool are have the same size (NoT)number of entries, so thus you will just use the same index value for both poolsof data to access the data for the same triangle. If The access don't translate you, it just says, you data merely informs one that if the PC object crosses this line the object should be here, in the indentified triangle. FF7 will halt running if you are not, then there is a problem. If you design polymesh where you cross line and in the '''access tells you that you should be in poly 12, but you are god know where then FF7 stops''' specified triangle.