Update structs.h because Ghidra can handle bitfields now

This commit is contained in:
rozlette
2019-11-13 22:14:03 -06:00
parent b4b98af631
commit b1938991fa
10 changed files with 47 additions and 60 deletions
+12 -13
View File
@@ -7,7 +7,6 @@
#include <guint.h>
#include <unk.h>
#include <structs.h>
#include <structs_bitfields.h>
#include <stdlib.h>
#include <xstdio.h>
@@ -1836,18 +1835,18 @@ UNK_RET Lib_PushAwayXZVec3f(z_Vector3f* a0, z_Vector3f* a1, f32 a2); // func_800
f32 Lib_DistanceYVec3f(z_Vector3f* a0, z_Vector3f* a1); // func_800FFA4C
UNK_TYPE Lib_YawVec3f(z_Vector3f* a0, z_Vector3f* a1); // func_800FFA60
UNK_TYPE Lib_PitchVec3f(z_Vector3f* a0, z_Vector3f* a1); // func_800FFA94
void Lib_ApplyActorInitVars(z_Actor*, z_ActorCompInitEntry*); // func_800FFADC
UNK_RET Lib_ApplyActorInitVarByte1(u8* a0, z_ActorCompInitEntry* a1); // func_800FFB54
UNK_RET Lib_ApplyActorInitVarByte2(u8* a0, z_ActorCompInitEntry* a1); // func_800FFB70
UNK_RET Lib_ApplyActorInitVarShort1(u8* a0, z_ActorCompInitEntry* a1); // func_800FFB8C
UNK_RET Lib_ApplyActorInitVarShort2(u8* a0, z_ActorCompInitEntry* a1); // func_800FFBA8
UNK_RET Lib_ApplyActorInitVarWord1(u8* a0, z_ActorCompInitEntry* a1); // func_800FFBC4
UNK_RET Lib_ApplyActorInitVarWord2(u8* a0, z_ActorCompInitEntry* a1); // func_800FFBE0
UNK_RET Lib_ApplyActorInitVarFloat(u8* a0, z_ActorCompInitEntry* a1); // func_800FFBFC
UNK_RET Lib_ApplyActorInitVarFloat1000th(u8* a0, z_ActorCompInitEntry* a1); // func_800FFC20
UNK_RET Lib_ApplyActorInitVarVector3f(u8* a0, z_ActorCompInitEntry* a1); // func_800FFC50
UNK_RET Lib_ApplyActorInitVarVector3f1000th(u8* a0, z_ActorCompInitEntry* a1); // func_800FFC7C
UNK_RET Lib_ApplyActorInitVarVector3s(u8* a0, z_ActorCompInitEntry* a1); // func_800FFCB4
void Lib_ApplyActorInitVars(z_Actor*, z_ActorInitVar*); // func_800FFADC
UNK_RET Lib_ApplyActorInitVarByte1(u8* a0, z_ActorInitVar* a1); // func_800FFB54
UNK_RET Lib_ApplyActorInitVarByte2(u8* a0, z_ActorInitVar* a1); // func_800FFB70
UNK_RET Lib_ApplyActorInitVarShort1(u8* a0, z_ActorInitVar* a1); // func_800FFB8C
UNK_RET Lib_ApplyActorInitVarShort2(u8* a0, z_ActorInitVar* a1); // func_800FFBA8
UNK_RET Lib_ApplyActorInitVarWord1(u8* a0, z_ActorInitVar* a1); // func_800FFBC4
UNK_RET Lib_ApplyActorInitVarWord2(u8* a0, z_ActorInitVar* a1); // func_800FFBE0
UNK_RET Lib_ApplyActorInitVarFloat(u8* a0, z_ActorInitVar* a1); // func_800FFBFC
UNK_RET Lib_ApplyActorInitVarFloat1000th(u8* a0, z_ActorInitVar* a1); // func_800FFC20
UNK_RET Lib_ApplyActorInitVarVector3f(u8* a0, z_ActorInitVar* a1); // func_800FFC50
UNK_RET Lib_ApplyActorInitVarVector3f1000th(u8* a0, z_ActorInitVar* a1); // func_800FFC7C
UNK_RET Lib_ApplyActorInitVarVector3s(u8* a0, z_ActorInitVar* a1); // func_800FFCB4
f32 func_800FFCD8(f32*, f32, f32, f32, f32); // func_800FFCD8
UNK_RET Lib_ScaleMax_f(f32* a0, f32 a1, f32 a2, f32 a3); // func_800FFDF8
UNK_RET Lib_Scale_f(f32* a0, f32 a1, f32 a2); // func_800FFE68
+4 -2
View File
@@ -178,8 +178,10 @@ typedef struct {
} z_ActorEnTest20C;
typedef struct {
/* 0x0 */ u16 info; // bitfield: 0-10: offset, 11-14: type, 15: more
/* 0x2 */ s16 value;
/* 0x0 */ u32 cont : 1;
/* 0x0 */ u32 type : 4;
/* 0x0 */ u32 offset : 11;
/* 0x2 */ s32 value : 16;
} z_ActorInitVar;
typedef struct {
-13
View File
@@ -1,13 +0,0 @@
#ifndef _STRUCTS_BITFIELDS_H_
#define _STRUCTS_BITFIELDS_H_
#include <PR/ultratypes.h>
typedef struct {
u32 cont : 1;
u32 type : 4;
u32 offset : 11;
s32 value : 16;
} z_ActorCompInitEntry;
#endif
+2 -3
View File
@@ -7,7 +7,6 @@
#include <guint.h>
#include <unk.h>
#include <structs.h>
#include <structs_bitfields.h>
#include <stdlib.h>
#include <xstdio.h>
@@ -16027,7 +16026,7 @@ extern f32 D_80ACB650; // D_80ACB650
//extern UNK_TYPE D_80BD52FC;
extern z_ActorInitData bgIkanaRayInitVar; // D_80BD55D0
extern UNK_TYPE D_80BD55F0; // D_80BD55F0
extern z_ActorCompInitEntry bgIkanaRayCompInit[]; // D_80BD561C
extern z_ActorInitVar bgIkanaRayCompInit[]; // D_80BD561C
extern UNK_TYPE D_80BD562C; // D_80BD562C
//extern UNK_TYPE D_80BD5CF0;
//extern UNK_TYPE D_80BD5D10;
@@ -16839,6 +16838,6 @@ extern UNK_PTR D_800980D0_;
extern UNK_TYPE D_80099AD0_;
extern UNK_TYPE D_8009A670_;
extern UNK_TYPE D_8009B140_;
extern (*D_801BE960[12])(u8*, z_ActorCompInitEntry*);
extern (*D_801BE960[12])(u8*, z_ActorInitVar*);
#endif
@@ -48,7 +48,7 @@ glabel D_80BD55F0
)
// TODO macro
z_ActorCompInitEntry bgIkanaRayCompInit[] = {
z_ActorInitVar bgIkanaRayCompInit[] = {
{1, 6, 0x0FC, 4000},
{1, 6, 0x100, 1000},
{1, 6, 0x104, 1000},
+1 -1
View File
@@ -9,7 +9,7 @@ UNK_RET EnAObj_Init(void* a0, UNK_TYPE a1) {
z_ActorEnAObj* s0 = (z_ActorEnAObj*)a0;
s0->base.textId = ((s0->base.variable >> 8) & 0xFF) | 0x300;
s0->base.variable = (s0->base.variable & 0xFF) - 9;
Lib_ApplyActorInitVars((z_Actor*)s0, (z_ActorCompInitEntry*)&D_801ADEAC);
Lib_ApplyActorInitVars((z_Actor*)s0, (z_ActorInitVar*)&D_801ADEAC);
func_800B3BA4(&s0->base.unkBC, 0, (UNK_PTR)&func_800B3FC0, 12);
Collision_InitCylinder(a1, &s0->collision, (z_Actor*)s0, &D_801ADE80);
Collision_CylinderMoveToActor((z_Actor*)s0, &s0->collision);
+12 -12
View File
@@ -419,45 +419,45 @@ UNK_TYPE Lib_PitchVec3f(z_Vector3f* a0, z_Vector3f* a1) {
return atans_flip(Lib_DistanceXZVec3f(a0, a1), a0->y - a1->y);
}
void Lib_ApplyActorInitVars(z_Actor* a0, z_ActorCompInitEntry* a1) {
void Lib_ApplyActorInitVars(z_Actor* a0, z_ActorInitVar* a1) {
do {
D_801BE960[a1->type]((u8*)a0, a1);
} while ((a1++)->cont);
}
UNK_RET Lib_ApplyActorInitVarByte1(u8* a0, z_ActorCompInitEntry* a1) {
UNK_RET Lib_ApplyActorInitVarByte1(u8* a0, z_ActorInitVar* a1) {
*(u8*)(a0 + a1->offset) = (u8)(a1->value);
}
UNK_RET Lib_ApplyActorInitVarByte2(u8* a0, z_ActorCompInitEntry* a1) {
UNK_RET Lib_ApplyActorInitVarByte2(u8* a0, z_ActorInitVar* a1) {
*(u8*)(a0 + a1->offset) = (u8)(a1->value);
}
UNK_RET Lib_ApplyActorInitVarShort1(u8* a0, z_ActorCompInitEntry* a1) {
UNK_RET Lib_ApplyActorInitVarShort1(u8* a0, z_ActorInitVar* a1) {
*(u16*)(a0 + a1->offset) = (u16)(a1->value);
}
UNK_RET Lib_ApplyActorInitVarShort2(u8* a0, z_ActorCompInitEntry* a1) {
UNK_RET Lib_ApplyActorInitVarShort2(u8* a0, z_ActorInitVar* a1) {
*(u16*)(a0 + a1->offset) = (u16)(a1->value);
}
UNK_RET Lib_ApplyActorInitVarWord1(u8* a0, z_ActorCompInitEntry* a1) {
UNK_RET Lib_ApplyActorInitVarWord1(u8* a0, z_ActorInitVar* a1) {
*(u32*)(a0 + a1->offset) = (u32)(a1->value);
}
UNK_RET Lib_ApplyActorInitVarWord2(u8* a0, z_ActorCompInitEntry* a1) {
UNK_RET Lib_ApplyActorInitVarWord2(u8* a0, z_ActorInitVar* a1) {
*(u32*)(a0 + a1->offset) = (u32)(a1->value);
}
UNK_RET Lib_ApplyActorInitVarFloat(u8* a0, z_ActorCompInitEntry* a1) {
UNK_RET Lib_ApplyActorInitVarFloat(u8* a0, z_ActorInitVar* a1) {
*(f32*)(a0 + a1->offset) = (f32)(a1->value);
}
UNK_RET Lib_ApplyActorInitVarFloat1000th(u8* a0, z_ActorCompInitEntry* a1) {
UNK_RET Lib_ApplyActorInitVarFloat1000th(u8* a0, z_ActorInitVar* a1) {
*(f32*)(a0 + a1->offset) = (f32)(a1->value) / 1000;
}
UNK_RET Lib_ApplyActorInitVarVector3f(u8* a0, z_ActorCompInitEntry* a1) {
UNK_RET Lib_ApplyActorInitVarVector3f(u8* a0, z_ActorInitVar* a1) {
z_Vector3f* v0 = (z_Vector3f*)(a0 + a1->offset);
f32 f0 = (f32)(a1->value);
@@ -466,7 +466,7 @@ UNK_RET Lib_ApplyActorInitVarVector3f(u8* a0, z_ActorCompInitEntry* a1) {
v0->x = f0;
}
UNK_RET Lib_ApplyActorInitVarVector3f1000th(u8* a0, z_ActorCompInitEntry* a1) {
UNK_RET Lib_ApplyActorInitVarVector3f1000th(u8* a0, z_ActorInitVar* a1) {
z_Vector3f* v0 = (z_Vector3f*)(a0 + a1->offset);
f32 f0 = (f32)(a1->value) / 1000;
@@ -475,7 +475,7 @@ UNK_RET Lib_ApplyActorInitVarVector3f1000th(u8* a0, z_ActorCompInitEntry* a1) {
v0->x = f0;
}
UNK_RET Lib_ApplyActorInitVarVector3s(u8* a0, z_ActorCompInitEntry* a1) {
UNK_RET Lib_ApplyActorInitVarVector3s(u8* a0, z_ActorInitVar* a1) {
z_Vector3s* v0 = (z_Vector3s*)(a0 + a1->offset);
s16 v1 = (s16)(a1->value);
+12 -12
View File
@@ -1825,18 +1825,18 @@
0x800FFA4C:("Lib_DistanceYVec3f","f32","z_Vector3f* a0, z_Vector3f* a1"),
0x800FFA60:("Lib_YawVec3f","UNK_TYPE","z_Vector3f* a0, z_Vector3f* a1"),
0x800FFA94:("Lib_PitchVec3f","UNK_TYPE","z_Vector3f* a0, z_Vector3f* a1"),
0x800FFADC:("Lib_ApplyActorInitVars","void","z_Actor*, z_ActorCompInitEntry*"),
0x800FFB54:("Lib_ApplyActorInitVarByte1","UNK_RET","u8* a0, z_ActorCompInitEntry* a1"),
0x800FFB70:("Lib_ApplyActorInitVarByte2","UNK_RET","u8* a0, z_ActorCompInitEntry* a1"),
0x800FFB8C:("Lib_ApplyActorInitVarShort1","UNK_RET","u8* a0, z_ActorCompInitEntry* a1"),
0x800FFBA8:("Lib_ApplyActorInitVarShort2","UNK_RET","u8* a0, z_ActorCompInitEntry* a1"),
0x800FFBC4:("Lib_ApplyActorInitVarWord1","UNK_RET","u8* a0, z_ActorCompInitEntry* a1"),
0x800FFBE0:("Lib_ApplyActorInitVarWord2","UNK_RET","u8* a0, z_ActorCompInitEntry* a1"),
0x800FFBFC:("Lib_ApplyActorInitVarFloat","UNK_RET","u8* a0, z_ActorCompInitEntry* a1"),
0x800FFC20:("Lib_ApplyActorInitVarFloat1000th","UNK_RET","u8* a0, z_ActorCompInitEntry* a1"),
0x800FFC50:("Lib_ApplyActorInitVarVector3f","UNK_RET","u8* a0, z_ActorCompInitEntry* a1"),
0x800FFC7C:("Lib_ApplyActorInitVarVector3f1000th","UNK_RET","u8* a0, z_ActorCompInitEntry* a1"),
0x800FFCB4:("Lib_ApplyActorInitVarVector3s","UNK_RET","u8* a0, z_ActorCompInitEntry* a1"),
0x800FFADC:("Lib_ApplyActorInitVars","void","z_Actor*, z_ActorInitVar*"),
0x800FFB54:("Lib_ApplyActorInitVarByte1","UNK_RET","u8* a0, z_ActorInitVar* a1"),
0x800FFB70:("Lib_ApplyActorInitVarByte2","UNK_RET","u8* a0, z_ActorInitVar* a1"),
0x800FFB8C:("Lib_ApplyActorInitVarShort1","UNK_RET","u8* a0, z_ActorInitVar* a1"),
0x800FFBA8:("Lib_ApplyActorInitVarShort2","UNK_RET","u8* a0, z_ActorInitVar* a1"),
0x800FFBC4:("Lib_ApplyActorInitVarWord1","UNK_RET","u8* a0, z_ActorInitVar* a1"),
0x800FFBE0:("Lib_ApplyActorInitVarWord2","UNK_RET","u8* a0, z_ActorInitVar* a1"),
0x800FFBFC:("Lib_ApplyActorInitVarFloat","UNK_RET","u8* a0, z_ActorInitVar* a1"),
0x800FFC20:("Lib_ApplyActorInitVarFloat1000th","UNK_RET","u8* a0, z_ActorInitVar* a1"),
0x800FFC50:("Lib_ApplyActorInitVarVector3f","UNK_RET","u8* a0, z_ActorInitVar* a1"),
0x800FFC7C:("Lib_ApplyActorInitVarVector3f1000th","UNK_RET","u8* a0, z_ActorInitVar* a1"),
0x800FFCB4:("Lib_ApplyActorInitVarVector3s","UNK_RET","u8* a0, z_ActorInitVar* a1"),
0x800FFCD8:("func_800FFCD8","f32","f32*, f32, f32, f32, f32"),
0x800FFDF8:("Lib_ScaleMax_f","UNK_RET","f32* a0, f32 a1, f32 a2, f32 a3"),
0x800FFE68:("Lib_Scale_f","UNK_RET","f32* a0, f32 a1, f32 a2"),
+1 -1
View File
@@ -213,6 +213,6 @@
0x80ACB650:("","f32",False),
0x80BD55D0:("bgIkanaRayInitVar","z_ActorInitData",False),
0x80BD55F0:("","UNK_TYPE",False),
0x80BD561C:("bgIkanaRayCompInit","z_ActorCompInitEntry",True),
0x80BD561C:("bgIkanaRayCompInit","z_ActorInitVar",True),
0x80BD562C:("","UNK_TYPE",False)
}
+2 -2
View File
@@ -642,7 +642,7 @@ class Disassembler:
with open(path + "/functions.h", 'w', newline='\n') as f:
f.write("#ifndef _FUNCTIONS_H_\n#define _FUNCTIONS_H_\n\n");
f.write('#include <PR/ultratypes.h>\n#include <osint.h>\n#include <viint.h>\n#include <guint.h>\n#include <unk.h>\n#include <structs.h>\n#include <structs_bitfields.h>\n#include <stdlib.h>\n#include <xstdio.h>\n\n');
f.write('#include <PR/ultratypes.h>\n#include <osint.h>\n#include <viint.h>\n#include <guint.h>\n#include <unk.h>\n#include <structs.h>\n#include <stdlib.h>\n#include <xstdio.h>\n\n');
for addr in sorted(self.functions):
if addr in known_funcs:
@@ -655,7 +655,7 @@ class Disassembler:
with open(path + "/variables.h", 'w', newline='\n') as f:
f.write("#ifndef _VARIABLES_H_\n#define _VARIABLES_H_\n\n");
f.write('#include <PR/ultratypes.h>\n#include <osint.h>\n#include <viint.h>\n#include <guint.h>\n#include <unk.h>\n#include <structs.h>\n#include <structs_bitfields.h>\n#include <stdlib.h>\n#include <xstdio.h>\n\n');
f.write('#include <PR/ultratypes.h>\n#include <osint.h>\n#include <viint.h>\n#include <guint.h>\n#include <unk.h>\n#include <structs.h>\n#include <stdlib.h>\n#include <xstdio.h>\n\n');
for addr in sorted(self.vars):
if addr in known_vars: