ffxivapp icon indicating copy to clipboard operation
ffxivapp copied to clipboard

xivapp.com X64 offsets

Open EmperorArthur opened this issue 7 years ago • 4 comments

Hi,

I'm the developer behind the FFXIV mumbe positional audio plugin.

I don't know if your affiliated with xivapp.com, but since this application uses the api for everything I hope so.

I've been working on some decoding of the X64 offsets, though am not done yet. I thought I'd share my research with you, and whoever else is interested.

Here's a straight copy paste from my internal notes:

Camera Offsets (x86):
	X?:             64
	first_person:   256     (0 is in first person, 1 is free camera)
	Zoom:           264
	Heading:        288     (is oposite of char heading, unless in first person mode)
	elevation		292?		(-pi to pi)
	X?:             400

Camera Offsets (x64):
	X?              80
	first_person    272     (0 is in first person, 1 is free camera)
	Zoom:           280
	Heading:        304     (-pi to pi, is oposite of char heading, unless in first person mode)
	elevation		308		(-pi to pi)
	X?:             416


Calculated Offsets (x64):
"ActorEntity": {
	"Name":         48,     //(68 characters)
	"id":           116,    //I think this is correct
	
	"x":            176,
	"z":            180,
	"y":            184,
	???:            188,
	"Heading":      192,    //(-pi to pi)
	"Elevation":    376,    //(-pi to pi, 0 while standing) (NOT IN ORIGINAL x86 DATA)
	"CurrentPose":  434,    //(NOT IN ORIGINAL x86 DATA) (might be "ActionStatus")
	"HPCurrent":    5344,
	"HPMax":        5348,
	"MPCurrent":    5352,
	"MPMax":        5356,
	"TPCurrent":    5360,    //Short, not int
	"GPCurrent":    5364,    //Short, not int
	"GPMax":        5368,    //Short, not int
	"CPCurrent":    5372,    //Short, not int
	"CPMax":        5376,    //Short, not int

EmperorArthur avatar Jan 06 '17 21:01 EmperorArthur

I am the author of all that stuff yup :) I made a new github organization for it; I can't decide yet if I'm moving all the repo's over there.

Thank you!

I have some of the offsets as well; but I've been bogged down with RL work lately. I have them on my windows PC but I found a nice little way to set them up.

I'll paste them here later tonight so everyone can see as well.

Icehunter avatar Jan 07 '17 01:01 Icehunter

You might want to wait since Patch 3.5 will be released in about 9 days which will mess around with the signatures anyways. I'd really like to see the 64bit signatures for the next patch though if you happen to find the time - it is quite sad to go back to D9 and 32bit to use 3rd party tools 😢

ghost avatar Jan 08 '17 00:01 ghost

Signatures are different from offsets. You'll note that X, Y, and Z are all still 4 bytes and are all still next to each other. While they may change some structures, the most likely way is to add and remove things. Blocks of items may be shifted up and down, but it's not that hard to do.

EmperorArthur avatar Jan 08 '17 06:01 EmperorArthur

@EmperorArthur Today I have experimented a bit since I want to draw custom nameplates and project them as if they were part of the 3d world thus I need data about the camera. For compatibility I started working on 32bit. In the static memory at ffxiv.exe+0x1081D30 I have the pointer to the camera struct. Thus your own pointers, especially this one, is off by a good amount. The offsets I saved thus far are the following:

Offset Type Description
+0x40 float [UNSURE] X value of world coordinates of the camera.
+0x44 float [UNSURE] Z value of world coordinates of the camera.
+0x48 float [UNSURE] Y value of world coordinates of the camera.
+0x100 Int8 Boolean value indicating whether free camera mode (not first person mode) is enabled.
+0x108 float Distance of the camera. Value between 1.5 and 20 in steps of 0.25.
+0x124 float Azimuth of the camera. Can confirm that zero is north and facing south.
+0x128 float Elevation of the camera. Above the ground it is negative and caps at -pi/2 + epsilon. Below the ground it caps exactly at +pi/4.

ghost avatar Jan 28 '17 13:01 ghost