Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

xivapp.com X64 offsets #74

Open
EmperorArthur opened this issue Jan 6, 2017 · 4 comments
Open

xivapp.com X64 offsets #74

EmperorArthur opened this issue Jan 6, 2017 · 4 comments

Comments

@EmperorArthur
Copy link

EmperorArthur commented Jan 6, 2017

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 EmperorArthur changed the title xivapp.com xivapp.com X64 offsets Jan 6, 2017
@Icehunter
Copy link
Member

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.

@ghost
Copy link

ghost commented Jan 8, 2017

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 😢

@EmperorArthur
Copy link
Author

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.

@ghost
Copy link

ghost commented Jan 28, 2017

@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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants