gyorg: extract rodata

This commit is contained in:
Ibot02
2022-01-02 11:47:00 +01:00
parent 23736e63a9
commit 3f790d80b4
13 changed files with 233 additions and 497 deletions
+35 -7
View File
@@ -1,10 +1,22 @@
#define NENT_DEPRECATED
#include "global.h"
#include "room.h"
#include "asm.h"
#include "functions.h"
#include "enemy/gyorg.h"
extern void (*const gUnk_080D1E6C[])(GyorgChildEntity*);
void sub_08048684(GyorgChildEntity*);
void sub_0804869C(GyorgChildEntity*);
void sub_080486AC(GyorgChildEntity*);
void (*const gUnk_080D1E6C[])(GyorgChildEntity*) = {
sub_08048684,
sub_0804869C,
(void (*)(GyorgChildEntity*))sub_08001324,
(void (*)(GyorgChildEntity*))sub_0804A7D4,
(void (*)(GyorgChildEntity*))sub_08001242,
sub_080486AC,
};
void GyorgChild(Entity* this) {
if (gScreenTransition.field_0x39 == 0) {
@@ -15,21 +27,35 @@ void GyorgChild(Entity* this) {
gUnk_080D1E6C[GetNextFunction(this)]((GyorgChildEntity*)this);
}
extern void (*const gUnk_080D1E84[])(GyorgChildEntity*);
void sub_080486F4(GyorgChildEntity*);
void sub_0804877C(GyorgChildEntity*);
void sub_0804882C(GyorgChildEntity*);
void sub_08048904(GyorgChildEntity*);
void sub_08048684(GyorgChildEntity* this) {
static void (*const gUnk_080D1E84[])(GyorgChildEntity*) = {
sub_080486F4,
sub_0804877C,
sub_0804882C,
sub_08048904,
};
gUnk_080D1E84[super->action](this);
}
extern void (*const gUnk_080D1E6C[])(GyorgChildEntity*);
void sub_0804869C(GyorgChildEntity* this) {
sub_0804AA30(super, gUnk_080D1E6C);
}
extern void (*const gUnk_080D1E94[])(GyorgChildEntity*);
void sub_080486D0(GyorgChildEntity*);
void sub_080486D8(GyorgChildEntity*);
void sub_080486E0(GyorgChildEntity*);
void sub_080486AC(GyorgChildEntity* this) {
static void (*const gUnk_080D1E94[])(GyorgChildEntity*) = {
sub_080486D0,
sub_080486D8,
sub_080486E0,
};
if (sub_0806F520()) {
gUnk_080D1E94[super->subAction](this);
}
@@ -49,9 +75,11 @@ void sub_080486E0(GyorgChildEntity* this) {
}
}
extern const u8 gUnk_080D1EA0[];
void sub_080486F4(GyorgChildEntity* this) {
static const s8 gUnk_080D1EA0[] = {
0x50, 0x1, 0x40, 0x1, 0x30, 0x1, 0x20, 0x1, 0x10, 0x1, 0,
0, 0x10, -0x1, 0x20, -0x1, 0x30, -0x1, 0x40, -0x1, 0x50, -0x1,
};
super->field_0x1c = 1;
super->spriteOrientation.flipY = 3;
super->spriteRendering.b3 = 3;
+105 -6
View File
@@ -13,7 +13,7 @@ extern u8 gMapDataTopSpecial[];
extern u16 gUnk_02019EE0[];
extern void sub_080197D4(u32);
extern void sub_080197D4(const void*);
extern u32 sub_08000E62(u32);
extern void RegisterTransitionManager(void*, void (*)(), void (*)());
@@ -28,17 +28,23 @@ void sub_08046668(GyorgFemaleEntity*);
void sub_08046518(void);
void sub_080467DC(GyorgFemaleEntity*);
extern void (*const gUnk_080D1A64[])(GyorgFemaleEntity*);
extern u32 gUnk_080D1A74[];
extern u8 gUpdateVisibleTiles;
extern u8 gUnk_080B3E80[];
extern u8 gUnk_080B37A0[];
extern u16 gMetatileTypesTop[];
extern const u16 gUnk_080D1A84[];
extern const u8 gUnk_080D1AF4[];
extern const u8 gUnk_080D1AF8[];
void sub_0804614C(GyorgFemaleEntity*);
void sub_0804625C(GyorgFemaleEntity*);
void sub_0804632C(GyorgFemaleEntity*);
void sub_080463E4(GyorgFemaleEntity*);
void GyorgFemale(Entity* this) {
static void (*const gUnk_080D1A64[])(GyorgFemaleEntity*) = {
sub_0804614C,
sub_0804625C,
sub_0804632C,
sub_080463E4,
};
gUnk_080D1A64[this->action]((GyorgFemaleEntity*)this);
}
@@ -211,7 +217,18 @@ void sub_08046498(GyorgFemaleEntity* this) {
}
#endif
extern const u8 gUnk_080D1A94[];
extern const u8 gUnk_080D1AAC[];
extern const u8 gUnk_080D1AC4[];
extern const u8 gUnk_080D1ADC[];
void sub_080464C0(GyorgFemaleEntity* this) {
static const void* const gUnk_080D1A74[] = {
gUnk_080D1A94,
gUnk_080D1AAC,
gUnk_080D1AC4,
gUnk_080D1ADC,
};
s32 i;
u8* src;
u8* dst;
@@ -261,6 +278,9 @@ void sub_080465C8(void) {
}
void sub_0804660C(GyorgFemaleEntity* this, u32 unk1) {
static const u16 gUnk_080D1A84[] = {
0x200, 0x258, 0x1B8, 0x210, 0x200, 0x1C8, 0x248, 0x210,
};
const u16* p;
super->animationState = unk1;
p = &gUnk_080D1A84[unk1 >> 5];
@@ -268,7 +288,85 @@ void sub_0804660C(GyorgFemaleEntity* this, u32 unk1) {
super->y.HALF.HI = p[1] + gRoomControls.roomOriginY;
}
// todo: correct type
const u8 gUnk_080D1A94[] = {
#if defined(JP) || defined(DEMO_JP)
0x7C,
#elif defined(EU)
0x50,
#else
0x08,
#endif
0x41, 0x22, 0x80, 0xE0, 0x9E, 0x01, 0x02, 0x00, 0x08, 0x00, 0x80,
#if defined(JP) || defined(DEMO_JP)
0x2C, 0xD3,
#elif defined(EU)
0x00, 0xD3,
#else
0xB8, 0xD2,
#endif
0x22, 0x00, 0x54, 0xB6, 0x00, 0x02, 0x80, 0x1F, 0x00, 0x80,
};
const u8 gUnk_080D1AAC[] = {
#if defined(JP) || defined(DEMO_JP)
0xFC,
#elif defined(EU)
0xD0,
#else
0x88,
#endif
0x3D, 0x22, 0x80, 0xE0, 0x9E, 0x01, 0x02, 0x00, 0x08, 0x00, 0x80,
#if defined(JP) || defined(DEMO_JP)
0xF8,
#elif defined(EU)
0xCC,
#else
0x84,
#endif
0xD6, 0x22, 0x00, 0x54, 0xB6, 0x00, 0x02, 0x80, 0x1F, 0x00, 0x80,
};
const u8 gUnk_080D1AC4[] = {
#if defined(JP) || defined(DEMO_JP)
0xE4,
#elif defined(EU)
0xB8,
#else
0x70,
#endif
0x36, 0x22, 0x80, 0xE0, 0x9E, 0x01, 0x02, 0x00, 0x08, 0x00, 0x80,
#if defined(JP) || defined(DEMO_JP)
0xC0,
#elif defined(EU)
0x94,
#else
0x4C,
#endif
0xDA, 0x22, 0x00, 0x54, 0xB6, 0x00, 0x02, 0x80, 0x1F, 0x00, 0x80,
};
const u8 gUnk_080D1ADC[] = {
#if defined(JP) || defined(DEMO_JP)
0x78,
#elif defined(EU)
0x4C,
#else
0x04,
#endif
0x3A, 0x22, 0x80, 0xE0, 0x9E, 0x01, 0x02, 0x00, 0x08, 0x00, 0x80,
#if defined(JP) || defined(DEMO_JP)
0x88,
#elif defined(EU)
0x5C,
#else
0x14,
#endif
0xDE, 0x22, 0x00, 0x54, 0xB6, 0x00, 0x02, 0x80, 0x1F, 0x00, 0x80,
};
void sub_08046634(GyorgFemaleEntity* this, u32 unk1) {
static const u8 gUnk_080D1AF4[] = { 2, 3, 6, 7 };
u32 tmp;
if (unk1 == 0) {
tmp = gUnk_080D1AF4[Random() & 3];
@@ -279,6 +377,7 @@ void sub_08046634(GyorgFemaleEntity* this, u32 unk1) {
}
void sub_08046668(GyorgFemaleEntity* this) {
static const u8 gUnk_080D1AF8[] = { 0x16, 0x92, 0x94, 0x86 };
if (super->health == 0) {
return;
}
+40 -17
View File
@@ -6,21 +6,27 @@
#include "functions.h"
#include "enemy/gyorg.h"
typedef struct {
Entity base;
u8 unk_68[0x20];
} GyorgFemaleEyeEntity;
void sub_080489B4(GyorgFemaleEyeEntity*);
void sub_080489CC(GyorgFemaleEyeEntity*);
extern void (*const gUnk_080D1F64[])(GyorgFemaleEyeEntity*);
extern void (*const gUnk_080D1F7C[])(GyorgFemaleEyeEntity*);
extern const u8 gUnk_080D2030[];
extern const u8 gUnk_080D2010[];
void sub_08048AF0(GyorgFemaleEyeEntity*);
void sub_08048B2C(GyorgFemaleEyeEntity*);
void sub_08048B84(GyorgFemaleEyeEntity*);
void sub_08048BB0(GyorgFemaleEyeEntity*);
void sub_08048CEC(GyorgFemaleEyeEntity*);
void sub_08048D20(GyorgFemaleEyeEntity*);
u32 sub_08048D70(GyorgFemaleEntity*);
void (*const gUnk_080D1F64[])(GyorgFemaleEyeEntity*) = {
sub_080489B4,
sub_080489CC,
(void (*)(GyorgFemaleEyeEntity*))sub_08001324,
(void (*)(GyorgFemaleEyeEntity*))sub_0804A7D4,
(void (*)(GyorgFemaleEyeEntity*))sub_08001242,
sub_080489B4,
};
void GyorgFemaleEye(Entity* this) {
if (this->parent->next == NULL) {
DeleteThisEntity();
@@ -29,9 +35,33 @@ void GyorgFemaleEye(Entity* this) {
}
void sub_080489B4(GyorgFemaleEyeEntity* this) {
static void (*const gUnk_080D1F7C[])(GyorgFemaleEyeEntity*) = {
sub_08048AF0, sub_08048B2C, sub_08048B84, sub_08048BB0, sub_08048CEC,
};
gUnk_080D1F7C[super->action](this);
}
typedef struct {
u16 x, y;
} xy;
const xy gUnk_080D1F90[] = {
{ 0x1e8, 0x1d8 }, { 0x1f8, 0x1d8 }, { 0x208, 0x1d8 }, { 0x218, 0x1d8 }, { 0x1e8, 0x1e8 }, { 0x1f8, 0x1e8 },
{ 0x208, 0x1e8 }, { 0x218, 0x1e8 }, { 0x238, 0x1f8 }, { 0x238, 0x208 }, { 0x238, 0x218 }, { 0x238, 0x228 },
{ 0x228, 0x1f8 }, { 0x228, 0x208 }, { 0x228, 0x218 }, { 0x228, 0x228 }, { 0x218, 0x248 }, { 0x208, 0x248 },
{ 0x1f8, 0x248 }, { 0x1e8, 0x248 }, { 0x218, 0x238 }, { 0x208, 0x238 }, { 0x1f8, 0x238 }, { 0x1e8, 0x238 },
{ 0x1c8, 0x228 }, { 0x1c8, 0x218 }, { 0x1c8, 0x208 }, { 0x1c8, 0x1f8 }, { 0x1d8, 0x228 }, { 0x1d8, 0x218 },
{ 0x1d8, 0x208 }, { 0x1d8, 0x1f8 },
};
const u8 gUnk_080D2010[] = {
0, 0, 1, 1, 0, 0, 1, 1, 4, 4, 5, 5, 4, 4, 5, 5, 9, 9, 8, 8, 9, 9, 8, 8, 13, 13, 12, 12, 13, 13, 12, 12,
};
const u8 gUnk_080D2030[] = {
2, 2, 3, 3, 2, 2, 3, 3, 6, 6, 7, 7, 6, 6, 7, 7, 11, 11, 10, 10, 11, 11, 10, 10, 15, 15, 14, 14, 15, 15, 14, 14,
};
void sub_080489CC(GyorgFemaleEyeEntity* this) {
GyorgFemaleEntity* parent;
if (super->health != 0xFF) {
@@ -151,13 +181,6 @@ void sub_08048CEC(GyorgFemaleEyeEntity* this) {
InitializeAnimation(super, gUnk_080D2010[(super->animationState << 3) + super->type]);
}
}
typedef struct {
u16 x, y;
} xy;
extern const xy gUnk_080D1F90[];
void sub_08048D20(GyorgFemaleEyeEntity* this) {
GyorgFemaleEntity* parent = (GyorgFemaleEntity*)super->parent;
const xy* tmp;
+27 -3
View File
@@ -4,8 +4,32 @@
#include "room.h"
#include "enemy/gyorg.h"
extern const u16 gUnk_080D28CC[];
extern Hitbox* const gUnk_080D28AC[];
extern const Hitbox gUnk_080D28DC;
extern const Hitbox gUnk_080D28E4;
extern const Hitbox gUnk_080D28EC;
extern const Hitbox gUnk_080D28F4;
extern const Hitbox gUnk_080D28FC;
extern const Hitbox gUnk_080D2904;
extern const Hitbox gUnk_080D290C;
extern const Hitbox gUnk_080D2914;
const Hitbox* const gUnk_080D28AC[] = {
&gUnk_080D28DC, &gUnk_080D28E4, &gUnk_080D28EC, &gUnk_080D28F4,
&gUnk_080D28FC, &gUnk_080D2904, &gUnk_080D290C, &gUnk_080D2914,
};
const u16 gUnk_080D28CC[] = {
0x200, 0x1C8, 0x248, 0x210, 0x200, 0x258, 0x1b8, 0x210,
};
const Hitbox gUnk_080D28DC = { 0xE0, 0xF4, { 0, 0, 0, 0 }, 0x8, 0xA };
const Hitbox gUnk_080D28E4 = { 0x20, 0xF4, { 0, 0, 0, 0 }, 0x8, 0xA };
const Hitbox gUnk_080D28EC = { 0x0C, 0xE0, { 0, 0, 0, 0 }, 0xA, 0x8 };
const Hitbox gUnk_080D28F4 = { 0x0C, 0x20, { 0, 0, 0, 0 }, 0xA, 0x8 };
const Hitbox gUnk_080D28FC = { 0xE0, 0x0C, { 0, 0, 0, 0 }, 0x8, 0xA };
const Hitbox gUnk_080D2904 = { 0x20, 0x0C, { 0, 0, 0, 0 }, 0x8, 0xA };
const Hitbox gUnk_080D290C = { 0xF4, 0xE0, { 0, 0, 0, 0 }, 0xA, 0x8 };
const Hitbox gUnk_080D2914 = { 0xF4, 0x20, { 0, 0, 0, 0 }, 0xA, 0x8 };
void GyorgFemaleMouth(Entity* this) {
u32 tmp;
@@ -38,5 +62,5 @@ void GyorgFemaleMouth(Entity* this) {
tmp++;
}
}
this->hitbox = gUnk_080D28AC[tmp];
this->hitbox = (Hitbox*)gUnk_080D28AC[tmp]; // discarding const qualifier with cast
}
+16 -3
View File
@@ -11,7 +11,6 @@
extern const ScreenTransitionData gUnk_0813ABD0;
extern u32 sub_08079F8C(void);
extern const u16 gUnk_08124EF8[];
extern s16* const gUnk_08124FF0[];
extern void sub_080A1DCC(GyorgBossObjectEntity*);
@@ -24,9 +23,22 @@ void sub_080A1FF0(GyorgBossObjectEntity*);
u32 sub_080A20B8(GyorgBossObjectEntity*, GenericEntity*);
void sub_080A1D70(GyorgBossObjectEntity*, u32);
extern void (*const gUnk_08124ED0[])(GyorgBossObjectEntity*);
void sub_080A1704(GyorgBossObjectEntity*);
void sub_080A184C(GyorgBossObjectEntity*);
void sub_080A189C(GyorgBossObjectEntity*);
void sub_080A190C(GyorgBossObjectEntity*);
void sub_080A1990(GyorgBossObjectEntity*);
void sub_080A19FC(GyorgBossObjectEntity*);
void sub_080A1A80(GyorgBossObjectEntity*);
void sub_080A1AE8(GyorgBossObjectEntity*);
void sub_080A1B4C(GyorgBossObjectEntity*);
void sub_080A1C04(GyorgBossObjectEntity*);
void GyorgBossObject(Entity* this) {
static void (*const gUnk_08124ED0[])(GyorgBossObjectEntity*) = {
sub_080A1704, sub_080A184C, sub_080A189C, sub_080A190C, sub_080A1990,
sub_080A19FC, sub_080A1A80, sub_080A1AE8, sub_080A1B4C, sub_080A1C04,
};
gUnk_08124ED0[this->action]((GyorgBossObjectEntity*)this);
sub_080A1DCC((GyorgBossObjectEntity*)this);
sub_080A1C9C((GyorgBossObjectEntity*)this);
@@ -130,7 +142,7 @@ void sub_080A190C(GyorgBossObjectEntity* this) {
}
}
void sub_080A1990(GyorgBossObjectEntity* this, u32 unk1) {
void sub_080A1990(GyorgBossObjectEntity* this) {
if (((GyorgFemaleHeap*)super->myHeap)->female->base.health == 0) {
((GyorgFemaleHeap*)super->myHeap)->male1->base.health = 0xC;
super->action = 5;
@@ -339,6 +351,7 @@ void sub_080A1E54(GyorgBossObjectEntity* this) {
}
void sub_080A1ED0(u32 unk0, u32 unk1, u32 unk2) {
static const u16 gUnk_08124EF8[] = { 0x200, 0x1C0, 0x250, 0x210, 0x200, 0x260, 0x1B0, 0x210 };
u32 i = 0;
s16* p;
u32 x, y;