1
0
Fork 0
mirror of https://github.com/zeldaret/oot.git synced 2025-02-04 19:24:28 +00:00
This commit is contained in:
Kelebek1 2020-07-17 09:26:45 +01:00
parent 3be2c03098
commit 606584f376
3 changed files with 364 additions and 317 deletions

4
spec
View file

@ -2556,7 +2556,11 @@ endseg
beginseg beginseg
name "ovl_En_GirlA" name "ovl_En_GirlA"
include "build/src/overlays/actors/ovl_En_GirlA/z_en_girla.o" include "build/src/overlays/actors/ovl_En_GirlA/z_en_girla.o"
#ifdef NON_MATCHING
include "build/src/overlays/actors/ovl_En_GirlA/ovl_En_GirlA_reloc.o"
#else
include "build/data/overlays/actors/z_en_girla.reloc.o" include "build/data/overlays/actors/z_en_girla.reloc.o"
#endif
endseg endseg
beginseg beginseg

View file

@ -9,6 +9,60 @@ void EnGirlA_Init(Actor* this, GlobalContext* globalCtx);
void EnGirlA_Destroy(Actor* this, GlobalContext* globalCtx); void EnGirlA_Destroy(Actor* this, GlobalContext* globalCtx);
void EnGirlA_Update(Actor* this, GlobalContext* globalCtx); void EnGirlA_Update(Actor* this, GlobalContext* globalCtx);
void func_80A3BEAC(GlobalContext*, EnGirlA*);
void func_80A3BEE0(GlobalContext*, EnGirlA*);
void func_80A3BFE4(EnGirlA*, GlobalContext*);
void func_80A3C3BC(EnGirlA*, GlobalContext*);
void func_80A3C498(Actor*, GlobalContext*, s32);
void func_80A3C4D4(Actor*, GlobalContext*);
s32 func_80A3AAA8(GlobalContext*, EnGirlA*);
s32 func_80A3AB58(GlobalContext*, EnGirlA*);
s32 func_80A3ABF8(GlobalContext*, EnGirlA*);
s32 func_80A3ACAC(GlobalContext*, EnGirlA*);
s32 func_80A3AD60(GlobalContext*, EnGirlA*);
s32 func_80A3ADD4(GlobalContext*, EnGirlA*);
s32 func_80A3AE48(GlobalContext*, EnGirlA*);
s32 func_80A3AEBC(GlobalContext*, EnGirlA*);
s32 func_80A3AF30(GlobalContext*, EnGirlA*);
s32 func_80A3AFC4(GlobalContext*, EnGirlA*);
s32 func_80A3B040(GlobalContext*, EnGirlA*);
s32 func_80A3B0BC(GlobalContext*, EnGirlA*);
s32 func_80A3B160(GlobalContext*, EnGirlA*);
s32 func_80A3B204(GlobalContext*, EnGirlA*);
s32 func_80A3B250(GlobalContext*, EnGirlA*);
s32 func_80A3B2AC(GlobalContext*, EnGirlA*);
s32 func_80A3B308(GlobalContext*, EnGirlA*);
s32 func_80A3B318(GlobalContext*, EnGirlA*);
s32 func_80A3B328(GlobalContext*, EnGirlA*);
s32 func_80A3B3A8(GlobalContext*, EnGirlA*);
s32 func_80A3B454(GlobalContext*, EnGirlA*);
s32 func_80A3B464(GlobalContext*, EnGirlA*);
s32 func_80A3B4D8(GlobalContext*, EnGirlA*);
s32 func_80A3B54C(GlobalContext*, EnGirlA*);
s32 func_80A3B5C0(GlobalContext*, EnGirlA*);
void func_80A3B714(GlobalContext*, EnGirlA*);
void func_80A3B634(GlobalContext*, EnGirlA*);
void func_80A3B678(GlobalContext*, EnGirlA*);
void func_80A3B780(GlobalContext*, EnGirlA*);
void func_80A3BA40(GlobalContext*, EnGirlA*);
void func_80A3B7BC(GlobalContext*, EnGirlA*);
void func_80A3B800(GlobalContext*, EnGirlA*);
void func_80A3B83C(GlobalContext*, EnGirlA*);
void func_80A3B878(GlobalContext*, EnGirlA*);
void func_80A3B8B4(GlobalContext*, EnGirlA*);
void func_80A3B8F0(GlobalContext*, EnGirlA*);
void func_80A3B92C(GlobalContext*, EnGirlA*);
void func_80A3B968(GlobalContext*, EnGirlA*);
void func_80A3B9A4(GlobalContext*, EnGirlA*);
void func_80A3B9D4(GlobalContext*, EnGirlA*);
void func_80A3BA04(GlobalContext*, EnGirlA*);
void func_80A3BB6C(GlobalContext*, EnGirlA*);
void func_80A3BC0C(GlobalContext*, EnGirlA*);
void func_80A3BC3C(GlobalContext*, EnGirlA*);
void func_80A3BC6C(GlobalContext*, EnGirlA*);
const ActorInit En_GirlA_InitVars = { const ActorInit En_GirlA_InitVars = {
ACTOR_EN_GIRLA, ACTOR_EN_GIRLA,
ACTORTYPE_PROP, ACTORTYPE_PROP,
@ -21,67 +75,21 @@ const ActorInit En_GirlA_InitVars = {
NULL, NULL,
}; };
char* D_80A3C590[] = { static char* D_80A3C590[] = {
"デクの実×5 ", "デクの実×5 ", "×30 ", "×50 ", "爆弾×5 ", "デクの実×10 ", "デクの棒 ",
"×30 ", "爆弾×10 ", "さかな ", "赤クスリ ", "緑クスリ ", "青クスリ ", "巨人のナイフ ",
"×50 ", "ハイリアの盾 ", "デクの盾 ", "ゴロンの服 ", "ゾ─ラの服 ", "回復のハート ", "ロンロン牛乳 ",
"爆弾×5 ", "鶏の卵 ", "インゴー牛乳 ", "インゴー卵 ", "もだえ石 ", "大人の財布 ", "ハートの欠片 ",
"デクの実×10 ", "ボムチュウ ", "ボムチュウ ", "ボムチュウ ", "ボムチュウ ", "ボムチュウ ", "デクのタネ ",
"デクの棒 ", "キータンのお面", "こわそなお面 ", "ドクロのお面 ", "ウサギずきん ", "まことの仮面 ", "ゾーラのお面 ",
"爆弾×10 ", "ゴロンのお面 ", "ゲルドのお面 ", "", "", "", "チョウチョ ",
"さかな ", "ポウ ", "妖精の魂 ", "×10 ", "爆弾×20 ", "爆弾×30 ", "爆弾×5 ",
"赤クスリ ", "赤クスリ ", "赤クスリ ",
"緑クスリ ",
"青クスリ ",
"巨人のナイフ ",
"ハイリアの盾 ",
"デクの盾 ",
"ゴロンの服 ",
"ゾ─ラの服 ",
"回復のハート ",
"ロンロン牛乳 ",
"鶏の卵 ",
"インゴー牛乳 ",
"インゴー卵 ",
"もだえ石 ",
"大人の財布 ",
"ハートの欠片 ",
"ボムチュウ ",
"ボムチュウ ",
"ボムチュウ ",
"ボムチュウ ",
"ボムチュウ ",
"デクのタネ ",
"キータンのお面",
"こわそなお面 ",
"ドクロのお面 ",
"ウサギずきん ",
"まことの仮面 ",
"ゾーラのお面 ",
"ゴロンのお面 ",
"ゲルドのお面 ",
"",
"",
"",
"チョウチョ ",
"ポウ ",
"妖精の魂 ",
"×10 ",
"爆弾×20 ",
"爆弾×30 ",
"爆弾×5 ",
"赤クスリ ",
"赤クスリ ",
}; };
s16 D_80A3C658[8] = { s16 D_80A3C658[8] = { 0x0024, 0x0026, 0x0025, 0x0027, 0x002B, 0x0029, 0x0028, 0x002A };
0x0024, 0x0026, 0x0025, 0x0027,
0x002B, 0x0029, 0x0028, 0x002A
};
u16 D_80A3C668[5] = { u16 D_80A3C668[5] = { 0x70B6, 0x70B5, 0x70B4, 0x70B7, 0x70BB };
0x70B6, 0x70B5, 0x70B4, 0x70B7, 0x70BB
};
typedef struct { typedef struct {
/* 0x00 */ s16 objID; /* 0x00 */ s16 objID;
@ -97,89 +105,117 @@ typedef struct {
/* 0x1C */ void (*unk_1C)(GlobalContext*, EnGirlA*); /* 0x1C */ void (*unk_1C)(GlobalContext*, EnGirlA*);
} GirlAThing; // size = 0x20 } GirlAThing; // size = 0x20
// void func_8002ED80(EnGirlA*, GlobalContext*, s32);
// void func_8002EBCC(EnGirlA*, GlobalContext*, s32);
void func_80A3C498(Actor*, GlobalContext*, s32);
s32 func_80A3AAA8(GlobalContext*, EnGirlA*); s32 func_80A3AB58(GlobalContext*, EnGirlA*); s32 func_80A3ABF8(GlobalContext*, EnGirlA*);
s32 func_80A3ACAC(GlobalContext*, EnGirlA*); s32 func_80A3AD60(GlobalContext*, EnGirlA*);
s32 func_80A3ADD4(GlobalContext*, EnGirlA*); s32 func_80A3AE48(GlobalContext*, EnGirlA*); s32 func_80A3AEBC(GlobalContext*, EnGirlA*); s32 func_80A3AF30(GlobalContext*, EnGirlA*);
s32 func_80A3AFC4(GlobalContext*, EnGirlA*); s32 func_80A3B040(GlobalContext*, EnGirlA*); s32 func_80A3B0BC(GlobalContext*, EnGirlA*); s32 func_80A3B160(GlobalContext*, EnGirlA*);
s32 func_80A3B204(GlobalContext*, EnGirlA*); s32 func_80A3B250(GlobalContext*, EnGirlA*); s32 func_80A3B2AC(GlobalContext*, EnGirlA*); s32 func_80A3B308(GlobalContext*, EnGirlA*);
s32 func_80A3B318(GlobalContext*, EnGirlA*); s32 func_80A3B328(GlobalContext*, EnGirlA*); s32 func_80A3B3A8(GlobalContext*, EnGirlA*); s32 func_80A3B454(GlobalContext*, EnGirlA*);
s32 func_80A3B464(GlobalContext*, EnGirlA*); s32 func_80A3B4D8(GlobalContext*, EnGirlA*); s32 func_80A3B54C(GlobalContext*, EnGirlA*); s32 func_80A3B5C0(GlobalContext*, EnGirlA*);
void func_80A3B714(GlobalContext*, EnGirlA*); void func_80A3B634(GlobalContext*, EnGirlA*); void func_80A3B678(GlobalContext*, EnGirlA*); void func_80A3B780(GlobalContext*, EnGirlA*);
void func_80A3BA40(GlobalContext*, EnGirlA*); void func_80A3B7BC(GlobalContext*, EnGirlA*); void func_80A3B800(GlobalContext*, EnGirlA*); void func_80A3B83C(GlobalContext*, EnGirlA*);
void func_80A3B878(GlobalContext*, EnGirlA*); void func_80A3B8B4(GlobalContext*, EnGirlA*); void func_80A3B8F0(GlobalContext*, EnGirlA*); void func_80A3B92C(GlobalContext*, EnGirlA*);
void func_80A3B968(GlobalContext*, EnGirlA*); void func_80A3B9A4(GlobalContext*, EnGirlA*); void func_80A3B9D4(GlobalContext*, EnGirlA*); void func_80A3BA04(GlobalContext*, EnGirlA*);
void func_80A3BB6C(GlobalContext*, EnGirlA*); void func_80A3BC0C(GlobalContext*, EnGirlA*); void func_80A3BC3C(GlobalContext*, EnGirlA*); void func_80A3BC6C(GlobalContext*, EnGirlA*);
GirlAThing D_80A3C674[] = { GirlAThing D_80A3C674[] = {
{0x00BB, 0x0011, func_8002ED80, 0x000F, 0x0005, 0x00B2, 0x007F, 0x00000063, func_80A3ABF8, func_80A3B714, func_80A3BB6C}, { 0x00BB, 0x0011, func_8002ED80, 0x000F, 0x0005, 0x00B2, 0x007F, GI_NUTS_5_2, func_80A3ABF8, func_80A3B714,
{0x00D8, 0x0025, func_8002EBCC, 0x003C, 0x001E, 0x00C1, 0x009B, 0x0000004A, func_80A3AAA8, func_80A3B634, func_80A3BB6C}, func_80A3BB6C },
{0x00D8, 0x0026, func_8002EBCC, 0x005A, 0x0032, 0x00B0, 0x007D, 0x0000004B, func_80A3AAA8, func_80A3B634, func_80A3BB6C}, { 0x00D8, 0x0025, func_8002EBCC, 0x003C, 0x001E, 0x00C1, 0x009B, GI_ARROWS_MEDIUM, func_80A3AAA8, func_80A3B634,
{0x00CE, 0x001F, func_8002EBCC, 0x0019, 0x0005, 0x00A3, 0x008B, 0x00000001, func_80A3AB58, func_80A3B678, func_80A3BB6C}, func_80A3BB6C },
{0x00BB, 0x0011, func_8002ED80, 0x001E, 0x000A, 0x00A2, 0x0087, 0x00000064, func_80A3ABF8, func_80A3B714, func_80A3BB6C}, { 0x00D8, 0x0026, func_8002EBCC, 0x005A, 0x0032, 0x00B0, 0x007D, GI_ARROWS_LARGE, func_80A3AAA8, func_80A3B634,
{0x00C7, 0x001A, 0x00000000, 0x000A, 0x0001, 0x00A1, 0x0088, 0x00000007, func_80A3ACAC, func_80A3B780, func_80A3BB6C}, func_80A3BB6C },
{0x00CE, 0x001F, func_8002EBCC, 0x0032, 0x000A, 0x00B1, 0x007C, 0x00000066, func_80A3AB58, func_80A3B678, func_80A3BB6C}, { 0x00CE, 0x001F, func_8002EBCC, 0x0019, 0x0005, 0x00A3, 0x008B, GI_BOMBS_5, func_80A3AB58, func_80A3B678,
{0x00F4, 0x003E, func_8002ED80, 0x00C8, 0x0001, 0x00B3, 0x007E, 0x0000006C, func_80A3AD60, 0x00000000, func_80A3BB6C}, func_80A3BB6C },
{0x00EB, 0x0037, func_8002EBCC, 0x001E, 0x0001, 0x00A5, 0x008E, 0x00000010, func_80A3ADD4, func_80A3BA40, func_80A3BB6C}, { 0x00BB, 0x0011, func_8002ED80, 0x001E, 0x000A, 0x00A2, 0x0087, GI_NUTS_10, func_80A3ABF8, func_80A3B714,
{0x00EB, 0x0036, func_8002EBCC, 0x001E, 0x0001, 0x00A6, 0x008F, 0x00000011, func_80A3AE48, func_80A3BA40, func_80A3BB6C}, func_80A3BB6C },
{0x00EB, 0x0038, func_8002EBCC, 0x003C, 0x0001, 0x00A7, 0x0090, 0x00000012, func_80A3AEBC, func_80A3BA40, func_80A3BB6C}, { 0x00C7, 0x001A, 0x00000000, 0x000A, 0x0001, 0x00A1, 0x0088, GI_STICKS_1, func_80A3ACAC, func_80A3B780,
{0x00F8, 0x0042, func_8002EBCC, 0x03E8, 0x0001, 0x00A8, 0x0091, 0x00000028, func_80A3AF30, func_80A3B7BC, func_80A3BB6C}, func_80A3BB6C },
{0x00DC, 0x002B, func_8002EBCC, 0x0050, 0x0001, 0x00A9, 0x0092, 0x0000002A, func_80A3AFC4, func_80A3B800, func_80A3BB6C}, { 0x00CE, 0x001F, func_8002EBCC, 0x0032, 0x000A, 0x00B1, 0x007C, GI_BOMBS_10, func_80A3AB58, func_80A3B678,
{0x00CB, 0x001C, func_8002EBCC, 0x0028, 0x0001, 0x009F, 0x0089, 0x00000029, func_80A3B040, func_80A3B83C, func_80A3BB6C}, func_80A3BB6C },
{0x00F2, 0x003B, 0x00000000, 0x00C8, 0x0001, 0x00AA, 0x0093, 0x0000002C, func_80A3B0BC, func_80A3B878, func_80A3BC0C}, { 0x00F4, 0x003E, func_8002ED80, 0x00C8, 0x0001, 0x00B3, 0x007E, GI_FISH, func_80A3AD60, 0x00000000,
{0x00F2, 0x003C, 0x00000000, 0x012C, 0x0001, 0x00AB, 0x0094, 0x0000002D, func_80A3B160, func_80A3B8B4, func_80A3BC3C}, func_80A3BB6C },
{0x00B7, 0x0008, 0x00000000, 0x000A, 0x0010, 0x00AC, 0x0095, 0x00000048, func_80A3B204, func_80A3B8F0, func_80A3BB6C}, { 0x00EB, 0x0037, func_8002EBCC, 0x001E, 0x0001, 0x00A5, 0x008E, GI_POTION_RED, func_80A3ADD4, func_80A3BA40,
{0x00DF, 0x002F, func_80A3C498, 0x0064, 0x0001, 0x00AD, 0x0097, 0x00000014, func_80A3B250, func_80A3B92C, func_80A3BB6C}, func_80A3BB6C },
{0x00DA, 0x0028, func_8002EBCC, 0x0064, 0x0001, 0x00AE, 0x0099, 0x00000047, func_80A3B2AC, func_80A3B968, func_80A3BB6C}, { 0x00EB, 0x0036, func_8002EBCC, 0x001E, 0x0001, 0x00A6, 0x008F, GI_POTION_GREEN, func_80A3AE48, func_80A3BA40,
{0x00DF, 0x002F, func_80A3C498, 0x2710, 0x0001, 0x00B4, 0x0085, 0x00000000, func_80A3B308, func_80A3B9A4, func_80A3BB6C}, func_80A3BB6C },
{0x00DA, 0x0028, func_8002EBCC, 0x2710, 0x0001, 0x00B5, 0x0085, 0x00000000, func_80A3B318, func_80A3B9D4, func_80A3BB6C}, { 0x00EB, 0x0038, func_8002EBCC, 0x003C, 0x0001, 0x00A7, 0x0090, GI_POTION_BLUE, func_80A3AEBC, func_80A3BA40,
{0x00D9, 0x0027, func_8002EBCC, 0x0064, 0x000A, 0x00BC, 0x008C, 0x00000003, func_80A3B328, 0x00000000, func_80A3BC6C}, func_80A3BB6C },
{0x00D9, 0x0027, func_8002EBCC, 0x00B4, 0x0014, 0x0061, 0x002A, 0x0000006B, func_80A3B328, 0x00000000, func_80A3BC6C}, { 0x00F8, 0x0042, func_8002EBCC, 0x03E8, 0x0001, 0x00A8, 0x0091, GI_SWORD_KNIFE, func_80A3AF30, func_80A3B7BC,
{0x00D9, 0x0027, func_8002EBCC, 0x00B4, 0x0014, 0x0061, 0x002A, 0x0000006B, func_80A3B328, 0x00000000, func_80A3BC6C}, func_80A3BB6C },
{0x00D9, 0x0027, func_8002EBCC, 0x0064, 0x000A, 0x00BC, 0x008C, 0x00000003, func_80A3B328, 0x00000000, func_80A3BC6C}, { 0x00DC, 0x002B, func_8002EBCC, 0x0050, 0x0001, 0x00A9, 0x0092, GI_SHIELD_HYLIAN, func_80A3AFC4, func_80A3B800,
{0x00D9, 0x0027, func_8002EBCC, 0x0064, 0x000A, 0x00BC, 0x008C, 0x00000003, func_80A3B328, 0x00000000, func_80A3BC6C}, func_80A3BB6C },
{0x00D9, 0x0027, func_8002EBCC, 0x00B4, 0x0014, 0x0061, 0x002A, 0x0000006B, func_80A3B328, 0x00000000, func_80A3BC6C}, { 0x00CB, 0x001C, func_8002EBCC, 0x0028, 0x0001, 0x009F, 0x0089, GI_SHIELD_DEKU, func_80A3B040, func_80A3B83C,
{0x00D9, 0x0027, func_8002EBCC, 0x00B4, 0x0014, 0x0061, 0x002A, 0x0000006B, func_80A3B328, 0x00000000, func_80A3BC6C}, func_80A3BB6C },
{0x00D9, 0x0027, func_8002EBCC, 0x0064, 0x000A, 0x00BC, 0x008C, 0x00000003, func_80A3B328, 0x00000000, func_80A3BC6C}, { 0x00F2, 0x003B, 0x00000000, 0x00C8, 0x0001, 0x00AA, 0x0093, GI_TUNIC_GORON, func_80A3B0BC, func_80A3B878,
{0x0119, 0x0047, func_8002EBCC, 0x001E, 0x001E, 0x00DF, 0x00DE, 0x00000069, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, func_80A3BC0C },
{0x0134, 0x0030, func_8002EBCC, 0x0000, 0x0001, 0x70B2, 0x70BE, 0x0000001A, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, { 0x00F2, 0x003C, 0x00000000, 0x012C, 0x0001, 0x00AB, 0x0094, GI_TUNIC_ZORA, func_80A3B160, func_80A3B8B4,
{0x0135, 0x0031, func_8002EBCC, 0x0000, 0x0001, 0x70B1, 0x70BD, 0x00000018, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, func_80A3BC3C },
{0x0136, 0x004E, func_8002EBCC, 0x0000, 0x0001, 0x70B0, 0x70BC, 0x00000017, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, { 0x00B7, 0x0008, 0x00000000, 0x000A, 0x0010, 0x00AC, 0x0095, GI_HEART, func_80A3B204, func_80A3B8F0,
{0x0137, 0x004F, func_8002EBCC, 0x0000, 0x0001, 0x70B3, 0x70BF, 0x0000001B, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, func_80A3BB6C },
{0x0138, 0x0050, func_80A3C498, 0x0000, 0x0001, 0x70AF, 0x70C3, 0x0000001C, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, { 0x00DF, 0x002F, func_80A3C498, 0x0064, 0x0001, 0x00AD, 0x0097, GI_MILK_BOTTLE, func_80A3B250, func_80A3B92C,
{0x0151, 0x005B, 0x00000000, 0x0000, 0x0001, 0x70B9, 0x70C1, 0x00000052, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, func_80A3BB6C },
{0x0150, 0x005A, 0x00000000, 0x0000, 0x0001, 0x70B8, 0x70C0, 0x00000051, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, { 0x00DA, 0x0028, func_8002EBCC, 0x0064, 0x0001, 0x00AE, 0x0099, GI_WEIRD_EGG, func_80A3B2AC, func_80A3B968,
{0x0152, 0x005C, 0x00000000, 0x0000, 0x0001, 0x70BA, 0x70C2, 0x00000053, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, func_80A3BB6C },
{0x0148, 0x0058, func_8002EBCC, 0x0000, 0x0000, 0x00BD, 0x70C2, 0x00000053, func_80A3B454, 0x00000000, 0x00000000}, { 0x00DF, 0x002F, func_80A3C498, 0x2710, 0x0001, 0x00B4, 0x0085, GI_INVALID, func_80A3B308, func_80A3B9A4,
{0x0173, 0x0066, func_8002EBCC, 0x012C, 0x0001, 0x00B9, 0x00B8, 0x0000006E, func_80A3B464, func_80A3BA40, func_80A3BB6C}, func_80A3BB6C },
{0x0174, 0x0067, func_80A3C498, 0x0032, 0x0001, 0x00BB, 0x00BA, 0x0000006D, func_80A3B4D8, func_80A3BA40, func_80A3BB6C}, { 0x00DA, 0x0028, func_8002EBCC, 0x2710, 0x0001, 0x00B5, 0x0085, GI_INVALID, func_80A3B318, func_80A3B9D4,
{0x0176, 0x006F, func_80A3C498, 0x0032, 0x0001, 0x506F, 0x5070, 0x00000070, func_80A3B54C, func_80A3BA40, func_80A3BB6C}, func_80A3BB6C },
{0x0176, 0x0069, func_80A3C498, 0x001E, 0x0001, 0x506D, 0x506E, 0x0000006F, func_80A3B54C, func_80A3BA40, func_80A3BB6C}, { 0x00D9, 0x0027, func_8002EBCC, 0x0064, 0x000A, 0x00BC, 0x008C, GI_BOMBCHUS_10, func_80A3B328, 0x00000000,
{0x0177, 0x006A, func_80A3C498, 0x0032, 0x0001, 0x00B7, 0x00B6, 0x00000013, func_80A3B5C0, func_80A3BA40, func_80A3BB6C}, func_80A3BC6C },
{0x00D8, 0x0024, func_8002EBCC, 0x0014, 0x000A, 0x00A0, 0x008A, 0x00000049, func_80A3AAA8, func_80A3B634, func_80A3BB6C}, { 0x00D9, 0x0027, func_8002EBCC, 0x00B4, 0x0014, 0x0061, 0x002A, GI_BOMBCHUS_20, func_80A3B328, 0x00000000,
{0x00CE, 0x001F, func_8002EBCC, 0x0050, 0x0014, 0x001C, 0x0006, 0x00000067, func_80A3AB58, func_80A3B678, func_80A3BB6C}, func_80A3BC6C },
{0x00CE, 0x001F, func_8002EBCC, 0x0078, 0x001E, 0x001D, 0x001E, 0x00000068, func_80A3AB58, func_80A3B678, func_80A3BB6C}, { 0x00D9, 0x0027, func_8002EBCC, 0x00B4, 0x0014, 0x0061, 0x002A, GI_BOMBCHUS_20, func_80A3B328, 0x00000000,
{0x00CE, 0x001F, func_8002EBCC, 0x0023, 0x0005, 0x00CB, 0x00CA, 0x00000001, func_80A3AB58, func_80A3B678, func_80A3BB6C}, func_80A3BC6C },
{0x00EB, 0x0037, func_8002EBCC, 0x0028, 0x0001, 0x0064, 0x0062, 0x00000010, func_80A3ADD4, func_80A3BA40, func_80A3BB6C}, { 0x00D9, 0x0027, func_8002EBCC, 0x0064, 0x000A, 0x00BC, 0x008C, GI_BOMBCHUS_10, func_80A3B328, 0x00000000,
{0x00EB, 0x0037, func_8002EBCC, 0x0032, 0x0001, 0x0065, 0x0063, 0x00000010, func_80A3ADD4, func_80A3BA40, func_80A3BB6C}, func_80A3BC6C },
}; { 0x00D9, 0x0027, func_8002EBCC, 0x0064, 0x000A, 0x00BC, 0x008C, GI_BOMBCHUS_10, func_80A3B328, 0x00000000,
func_80A3BC6C },
s16 D_80A3CCB4[8] = { { 0x00D9, 0x0027, func_8002EBCC, 0x00B4, 0x0014, 0x0061, 0x002A, GI_BOMBCHUS_20, func_80A3B328, 0x00000000,
0x0005, 0x000A, 0x000F, 0x0014, 0x0019, 0x001E, 0x0023, 0x0028 func_80A3BC6C },
{ 0x00D9, 0x0027, func_8002EBCC, 0x00B4, 0x0014, 0x0061, 0x002A, GI_BOMBCHUS_20, func_80A3B328, 0x00000000,
func_80A3BC6C },
{ 0x00D9, 0x0027, func_8002EBCC, 0x0064, 0x000A, 0x00BC, 0x008C, GI_BOMBCHUS_10, func_80A3B328, 0x00000000,
func_80A3BC6C },
{ 0x0119, 0x0047, func_8002EBCC, 0x001E, 0x001E, 0x00DF, 0x00DE, GI_SEEDS_30, func_80A3B3A8, func_80A3BA04,
func_80A3BB6C },
{ 0x0134, 0x0030, func_8002EBCC, 0x0000, 0x0001, 0x70B2, 0x70BE, GI_MASK_KEATON, func_80A3B3A8, func_80A3BA04,
func_80A3BB6C },
{ 0x0135, 0x0031, func_8002EBCC, 0x0000, 0x0001, 0x70B1, 0x70BD, GI_MASK_SPOOKY, func_80A3B3A8, func_80A3BA04,
func_80A3BB6C },
{ 0x0136, 0x004E, func_8002EBCC, 0x0000, 0x0001, 0x70B0, 0x70BC, GI_MASK_SKULL, func_80A3B3A8, func_80A3BA04,
func_80A3BB6C },
{ 0x0137, 0x004F, func_8002EBCC, 0x0000, 0x0001, 0x70B3, 0x70BF, GI_MASK_BUNNY, func_80A3B3A8, func_80A3BA04,
func_80A3BB6C },
{ 0x0138, 0x0050, func_80A3C498, 0x0000, 0x0001, 0x70AF, 0x70C3, GI_MASK_TRUTH, func_80A3B3A8, func_80A3BA04,
func_80A3BB6C },
{ 0x0151, 0x005B, 0x00000000, 0x0000, 0x0001, 0x70B9, 0x70C1, GI_MASK_ZORA, func_80A3B3A8, func_80A3BA04,
func_80A3BB6C },
{ 0x0150, 0x005A, 0x00000000, 0x0000, 0x0001, 0x70B8, 0x70C0, GI_MASK_GORON, func_80A3B3A8, func_80A3BA04,
func_80A3BB6C },
{ 0x0152, 0x005C, 0x00000000, 0x0000, 0x0001, 0x70BA, 0x70C2, GI_MASK_GERUDO, func_80A3B3A8, func_80A3BA04,
func_80A3BB6C },
{ 0x0148, 0x0058, func_8002EBCC, 0x0000, 0x0000, 0x00BD, 0x70C2, GI_MASK_GERUDO, func_80A3B454, 0x00000000,
0x00000000 },
{ 0x0173, 0x0066, func_8002EBCC, 0x012C, 0x0001, 0x00B9, 0x00B8, GI_BLUE_FIRE, func_80A3B464, func_80A3BA40,
func_80A3BB6C },
{ 0x0174, 0x0067, func_80A3C498, 0x0032, 0x0001, 0x00BB, 0x00BA, GI_BUGS, func_80A3B4D8, func_80A3BA40,
func_80A3BB6C },
{ 0x0176, 0x006F, func_80A3C498, 0x0032, 0x0001, 0x506F, 0x5070, GI_BIG_POE, func_80A3B54C, func_80A3BA40,
func_80A3BB6C },
{ 0x0176, 0x0069, func_80A3C498, 0x001E, 0x0001, 0x506D, 0x506E, GI_POE, func_80A3B54C, func_80A3BA40,
func_80A3BB6C },
{ 0x0177, 0x006A, func_80A3C498, 0x0032, 0x0001, 0x00B7, 0x00B6, GI_FAIRY, func_80A3B5C0, func_80A3BA40,
func_80A3BB6C },
{ 0x00D8, 0x0024, func_8002EBCC, 0x0014, 0x000A, 0x00A0, 0x008A, GI_ARROWS_SMALL, func_80A3AAA8, func_80A3B634,
func_80A3BB6C },
{ 0x00CE, 0x001F, func_8002EBCC, 0x0050, 0x0014, 0x001C, 0x0006, GI_BOMBS_20, func_80A3AB58, func_80A3B678,
func_80A3BB6C },
{ 0x00CE, 0x001F, func_8002EBCC, 0x0078, 0x001E, 0x001D, 0x001E, GI_BOMBS_30, func_80A3AB58, func_80A3B678,
func_80A3BB6C },
{ 0x00CE, 0x001F, func_8002EBCC, 0x0023, 0x0005, 0x00CB, 0x00CA, GI_BOMBS_5, func_80A3AB58, func_80A3B678,
func_80A3BB6C },
{ 0x00EB, 0x0037, func_8002EBCC, 0x0028, 0x0001, 0x0064, 0x0062, GI_POTION_RED, func_80A3ADD4, func_80A3BA40,
func_80A3BB6C },
{ 0x00EB, 0x0037, func_8002EBCC, 0x0032, 0x0001, 0x0065, 0x0063, GI_POTION_RED, func_80A3ADD4, func_80A3BA40,
func_80A3BB6C },
}; };
s16 D_80A3CCB4[8] = { 0x0005, 0x000A, 0x000F, 0x0014, 0x0019, 0x001E, 0x0023, 0x0028 };
void func_80A3A750(EnGirlA* this, void* arg1) { void func_80A3A750(EnGirlA* this, void* arg1) {
this->actionFunc = arg1; this->actionFunc = arg1;
} }
s32 func_80A3A758(EnGirlA* this) { s32 func_80A3A758(EnGirlA* this) {
switch(this->actor.params) { switch (this->actor.params) {
case 0x11: case 0x11:
if (gSaveContext.itemGetInf[0] & 0x4) { if (gSaveContext.itemGetInf[0] & 0x4) {
this->actor.params = 0x10; this->actor.params = 0x10;
@ -238,22 +274,30 @@ s32 func_80A3A758(EnGirlA* this) {
return 0; return 0;
} }
void func_80A3BFE4(EnGirlA*, GlobalContext*);
#ifdef NON_MATCHING #ifdef NON_MATCHING
// Weird allocations
void func_80A3A8D0(EnGirlA* this, GlobalContext* globalCtx) { void func_80A3A8D0(EnGirlA* this, GlobalContext* globalCtx) {
//EnGirlA* this = THIS; char** strptr = &D_80A3C590[this->actor.params];
char* strptr = D_80A3C590[this->actor.params];
char* strptr2 = D_80A3C590[this->actor.params];
s16 params = this->actor.params; s16 params = this->actor.params;
osSyncPrintf("%s(%2d)初期設定\n", strptr, this->actor.params); if (strptr) {};
osSyncPrintf("%s(%2d)初期設定\n", *(&D_80A3C590[this->actor.params]), this->actor.params);
if ((params >= 50) && (params < 0)) { if ((params >= 50) && (params < 0)) {
Actor_Kill(&this->actor); Actor_Kill(&this->actor);
osSyncPrintf(VT_COL(RED, WHITE)); osSyncPrintf("\x1b"
// Bad argument! "["
"4"
"1"
";"
"3"
"7"
"m");
osSyncPrintf("引数がおかしいよ(arg_data=%d)\n", this->actor.params); osSyncPrintf("引数がおかしいよ(arg_data=%d)\n", this->actor.params);
osSyncPrintf(VT_RST); osSyncPrintf("\x1b"
"["
""
"m");
if (!this->actor.params) {};
__assert("0", "../z_en_girlA.c", 0x58D); __assert("0", "../z_en_girlA.c", 0x58D);
return; return;
} }
@ -261,14 +305,23 @@ void func_80A3A8D0(EnGirlA* this, GlobalContext* globalCtx) {
this->unk_194 = Object_GetIndex(&globalCtx->objectCtx, D_80A3C674[params].objID); this->unk_194 = Object_GetIndex(&globalCtx->objectCtx, D_80A3C674[params].objID);
if (this->unk_194 < 0) { if (this->unk_194 < 0) {
Actor_Kill(&this->actor); Actor_Kill(&this->actor);
osSyncPrintf(VT_COL(RED, WHITE)); osSyncPrintf("\x1b"
// No bank! "["
osSyncPrintf("バンクが無いよ!!(%s)\n", strptr2); "4"
osSyncPrintf(VT_RST); "1"
if (this) {}; ";"
"3"
"7"
"m");
osSyncPrintf("バンクが無いよ!!(%s)\n", *strptr);
osSyncPrintf("\x1b"
"["
""
"m");
__assert("0", "../z_en_girlA.c", 0x59A); __assert("0", "../z_en_girlA.c", 0x59A);
return; return;
} }
this->actor.params = params & 0xFFFF; this->actor.params = params & 0xFFFF;
this->unk_198 = func_80A3BFE4; this->unk_198 = func_80A3BFE4;
} }
@ -276,26 +329,27 @@ void func_80A3A8D0(EnGirlA* this, GlobalContext* globalCtx) {
#pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_GirlA/func_80A3A8D0.s") #pragma GLOBAL_ASM("asm/non_matchings/overlays/actors/ovl_En_GirlA/func_80A3A8D0.s")
#endif #endif
void EnGirlA_Init(Actor* thisx, GlobalContext* globalCtx) { void EnGirlA_Init(Actor* thisx, GlobalContext* globalCtx) {
EnGirlA* this = THIS; EnGirlA* this = THIS;
func_80A3A758(this); func_80A3A758(this);
func_80A3A8D0(this, globalCtx); func_80A3A8D0(this, globalCtx);
osSyncPrintf("%s(%2d)初期設定\n", D_80A3C590[thisx->params], thisx->params); osSyncPrintf("%s(%2d)初期設定\n", D_80A3C590[this->actor.params], this->actor.params);
} }
void EnGirlA_Destroy(Actor* thisx, GlobalContext* globalCtx) { void EnGirlA_Destroy(Actor* thisx, GlobalContext* globalCtx) {
EnGirlA* this = THIS; EnGirlA* this = THIS;
if (this->unk_19C != 0) { if (this->unk_19C != 0) {
SkelAnime_Free(&this->skelAnime, globalCtx); SkelAnime_Free(&this->skelAnime, globalCtx);
} }
} }
s32 func_80A3AAA8(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3AAA8(GlobalContext* globalCtx, EnGirlA* this) {
if (Item_CheckObtainability(3) == 0xFF) { if (Item_CheckObtainability(ITEM_BOW) == ITEM_NONE) {
return 5; return 5;
} }
if (gSaveContext.ammo[gItemSlots[3]] >= gUpgradeCapacities[0][(s32)(gSaveContext.upgrades & gUpgradeMasks[0]) >> gUpgradeShifts[0]]) { if (AMMO(ITEM_BOW) >= CUR_CAPACITY(UPG_QUIVER)) {
return 2; return 2;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
@ -305,10 +359,10 @@ s32 func_80A3AAA8(GlobalContext* globalCtx, EnGirlA* this) {
} }
s32 func_80A3AB58(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3AB58(GlobalContext* globalCtx, EnGirlA* this) {
if ((gBitFlags[0x13] & gSaveContext.questItems) == 0) { if (!CHECK_QUEST_ITEM(QUEST_GORON_RUBY)) {
return 2; return 2;
} }
if (gSaveContext.ammo[gItemSlots[2]] >= gUpgradeCapacities[1][(s32)(gSaveContext.upgrades & gUpgradeMasks[1]) >> gUpgradeShifts[1]]) { if (AMMO(ITEM_BOMB) >= CUR_CAPACITY(UPG_BOMB_BAG)) {
return 2; return 2;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
@ -318,127 +372,117 @@ s32 func_80A3AB58(GlobalContext* globalCtx, EnGirlA* this) {
} }
s32 func_80A3ABF8(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3ABF8(GlobalContext* globalCtx, EnGirlA* this) {
s32 tmp = gUpgradeCapacities[7][(s32)(gSaveContext.upgrades & gUpgradeMasks[7]) >> gUpgradeShifts[7]]; if ((CUR_CAPACITY(UPG_NUTS) != 0) && (AMMO(ITEM_NUT) >= CUR_CAPACITY(UPG_NUTS))) {
if (tmp != 0) {
if (gSaveContext.ammo[gItemSlots[1]] >= tmp) {
return 2; return 2;
} }
}
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(1) == 0xFF) { if (Item_CheckObtainability(ITEM_NUT) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
} }
s32 func_80A3ACAC(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3ACAC(GlobalContext* globalCtx, EnGirlA* this) {
s32 tmp = gUpgradeCapacities[6][(s32)(gSaveContext.upgrades & gUpgradeMasks[6]) >> gUpgradeShifts[6]]; if ((CUR_CAPACITY(UPG_STICKS) != 0) && (AMMO(ITEM_STICK) >= CUR_CAPACITY(UPG_STICKS))) {
if (tmp != 0) {
if (gSaveContext.ammo[gItemSlots[0]] >= tmp) {
return 2; return 2;
} }
}
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0) == 0xFF) { if (Item_CheckObtainability(ITEM_STICK) == 0xFF) {
return 0; return 0;
} }
return 1; return 1;
} }
s32 func_80A3AD60(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3AD60(GlobalContext* globalCtx, EnGirlA* this) {
if (Inventory_HasEmptyBottle() == 0) { if (!Inventory_HasEmptyBottle()) {
return 3; return 3;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x19) == 0xFF) { if (Item_CheckObtainability(ITEM_FISH) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
} }
s32 func_80A3ADD4(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3ADD4(GlobalContext* globalCtx, EnGirlA* this) {
if (Inventory_HasEmptyBottle() == 0) { if (!Inventory_HasEmptyBottle()) {
return 3; return 3;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x15) == 0xFF) { if (Item_CheckObtainability(ITEM_POTION_RED) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
} }
s32 func_80A3AE48(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3AE48(GlobalContext* globalCtx, EnGirlA* this) {
if (Inventory_HasEmptyBottle() == 0) { if (!Inventory_HasEmptyBottle()) {
return 3; return 3;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x16) == 0xFF) { if (Item_CheckObtainability(ITEM_POTION_GREEN) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
} }
s32 func_80A3AEBC(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3AEBC(GlobalContext* globalCtx, EnGirlA* this) {
if (Inventory_HasEmptyBottle() == 0) { if (!Inventory_HasEmptyBottle()) {
return 3; return 3;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x17) == 0xFF) { if (Item_CheckObtainability(ITEM_POTION_BLUE) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
} }
s32 func_80A3AF30(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3AF30(GlobalContext* globalCtx, EnGirlA* this) {
if ((gBitFlags[2] & gSaveContext.equipment) != 0) { if ((gBitFlags[2] & gSaveContext.equipment) && !(gBitFlags[3] & gSaveContext.equipment)) {
if ((gBitFlags[3] & gSaveContext.equipment) == 0) {
return 2; return 2;
} }
}
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x3D) == 0xFF) { if (Item_CheckObtainability(ITEM_SWORD_BGS) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
} }
s32 func_80A3AFC4(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3AFC4(GlobalContext* globalCtx, EnGirlA* this) {
if ((gBitFlags[5] & gSaveContext.equipment) != 0) { if (gBitFlags[5] & gSaveContext.equipment) {
return 2; return 2;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x3F) == 0xFF) { if (Item_CheckObtainability(ITEM_SHIELD_HYLIAN) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
} }
s32 func_80A3B040(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3B040(GlobalContext* globalCtx, EnGirlA* this) {
if ((gBitFlags[4] & gSaveContext.equipment) != 0) { if (gBitFlags[4] & gSaveContext.equipment) {
return 2; return 2;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x3E) == 0xFF) { if (Item_CheckObtainability(ITEM_SHIELD_DEKU) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
@ -448,13 +492,13 @@ s32 func_80A3B0BC(GlobalContext* globalCtx, EnGirlA* this) {
if (LINK_AGE_IN_YEARS == YEARS_CHILD) { if (LINK_AGE_IN_YEARS == YEARS_CHILD) {
return 2; return 2;
} }
if ((gBitFlags[9] & gSaveContext.equipment) != 0) { if (gBitFlags[9] & gSaveContext.equipment) {
return 2; return 2;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x42) == 0xFF) { if (Item_CheckObtainability(ITEM_TUNIC_GORON) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
@ -464,13 +508,13 @@ s32 func_80A3B160(GlobalContext* globalCtx, EnGirlA* this) {
if (LINK_AGE_IN_YEARS == YEARS_CHILD) { if (LINK_AGE_IN_YEARS == YEARS_CHILD) {
return 2; return 2;
} }
if ((gBitFlags[10] & gSaveContext.equipment) != 0) { if (gBitFlags[10] & gSaveContext.equipment) {
return 2; return 2;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x43) == 0xFF) { if (Item_CheckObtainability(ITEM_TUNIC_ZORA) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
@ -490,7 +534,7 @@ s32 func_80A3B250(GlobalContext* globalCtx, EnGirlA* this) {
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x1A) == 0xFF) { if (Item_CheckObtainability(ITEM_MILK_BOTTLE) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
@ -500,7 +544,7 @@ s32 func_80A3B2AC(GlobalContext* globalCtx, EnGirlA* this) {
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x23) == 0xFF) { if (Item_CheckObtainability(ITEM_LETTER_ZELDA) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
@ -515,26 +559,26 @@ s32 func_80A3B318(GlobalContext* globalCtx, EnGirlA* this) {
} }
s32 func_80A3B328(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3B328(GlobalContext* globalCtx, EnGirlA* this) {
if (gSaveContext.ammo[gItemSlots[9]] >= 0x32) { if (AMMO(ITEM_BOMBCHU) >= 50) {
return 2; return 2;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(9) == 0xFF) { if (Item_CheckObtainability(ITEM_BOMBCHU) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
} }
s32 func_80A3B3A8(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3B3A8(GlobalContext* globalCtx, EnGirlA* this) {
if (gSaveContext.ammo[gItemSlots[6]] >= gUpgradeCapacities[5][(s32)(gSaveContext.upgrades & gUpgradeMasks[5]) >> gUpgradeShifts[5]]) { if (AMMO(ITEM_SLINGSHOT) >= CUR_CAPACITY(UPG_BULLET_BAG)) {
return 2; return 2;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x58) == 0xFF) { if (Item_CheckObtainability(ITEM_SEEDS) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
@ -545,52 +589,52 @@ s32 func_80A3B454(GlobalContext* globalCtx, EnGirlA* this) {
} }
s32 func_80A3B464(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3B464(GlobalContext* globalCtx, EnGirlA* this) {
if (Inventory_HasEmptyBottle() == 0) { if (!Inventory_HasEmptyBottle()) {
return 3; return 3;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x1C) == 0xFF) { if (Item_CheckObtainability(ITEM_BLUE_FIRE) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
} }
s32 func_80A3B4D8(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3B4D8(GlobalContext* globalCtx, EnGirlA* this) {
if (Inventory_HasEmptyBottle() == 0) { if (!Inventory_HasEmptyBottle()) {
return 3; return 3;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x1D) == 0xFF) { if (Item_CheckObtainability(ITEM_BUG) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
} }
s32 func_80A3B54C(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3B54C(GlobalContext* globalCtx, EnGirlA* this) {
if (Inventory_HasEmptyBottle() == 0) { if (!Inventory_HasEmptyBottle()) {
return 3; return 3;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x20) == 0xFF) { if (Item_CheckObtainability(ITEM_POE) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
} }
s32 func_80A3B5C0(GlobalContext* globalCtx, EnGirlA* this) { s32 func_80A3B5C0(GlobalContext* globalCtx, EnGirlA* this) {
if (Inventory_HasEmptyBottle() == 0) { if (!Inventory_HasEmptyBottle()) {
return 3; return 3;
} }
if (gSaveContext.rupees < this->unk_1C8) { if (gSaveContext.rupees < this->unk_1C8) {
return 4; return 4;
} }
if (Item_CheckObtainability(0x18) == 0xFF) { if (Item_CheckObtainability(ITEM_FAIRY) == ITEM_NONE) {
return 0; return 0;
} }
return 1; return 1;
@ -601,20 +645,19 @@ void func_80A3B634(GlobalContext* globalCtx, EnGirlA* this) {
Rupees_ChangeBy(-this->unk_1C8); Rupees_ChangeBy(-this->unk_1C8);
} }
void func_80A3B678(GlobalContext* globalCtx, EnGirlA* this) { void func_80A3B678(GlobalContext* globalCtx, EnGirlA* this) {
switch (this->unk_1CA) { switch (this->unk_1CA) {
case 5: case 5:
Item_Give(globalCtx, 0x8E); Item_Give(globalCtx, ITEM_BOMBS_5);
break; break;
case 10: case 10:
Item_Give(globalCtx, 0x8F); Item_Give(globalCtx, ITEM_BOMBS_10);
break; break;
case 20: case 20:
Item_Give(globalCtx, 0x90); Item_Give(globalCtx, ITEM_BOMBS_20);
break; break;
case 30: case 30:
Item_Give(globalCtx, 0x91); Item_Give(globalCtx, ITEM_BOMBS_30);
break; break;
} }
Rupees_ChangeBy(-this->unk_1C8); Rupees_ChangeBy(-this->unk_1C8);
@ -623,10 +666,10 @@ void func_80A3B678(GlobalContext* globalCtx, EnGirlA* this) {
void func_80A3B714(GlobalContext* globalCtx, EnGirlA* this) { void func_80A3B714(GlobalContext* globalCtx, EnGirlA* this) {
switch (this->unk_1CA) { switch (this->unk_1CA) {
case 5: case 5:
Item_Give(globalCtx, 0x8C); Item_Give(globalCtx, ITEM_NUTS_5);
break; break;
case 10: case 10:
Item_Give(globalCtx, 0x8D); Item_Give(globalCtx, ITEM_NUTS_10);
break; break;
} }
Rupees_ChangeBy(-this->unk_1C8); Rupees_ChangeBy(-this->unk_1C8);
@ -644,22 +687,22 @@ void func_80A3B7BC(GlobalContext* globalCtx, EnGirlA* this) {
} }
void func_80A3B800(GlobalContext* globalCtx, EnGirlA* this) { void func_80A3B800(GlobalContext* globalCtx, EnGirlA* this) {
Item_Give(globalCtx, 0x3F); Item_Give(globalCtx, ITEM_SHIELD_HYLIAN);
Rupees_ChangeBy(-this->unk_1C8); Rupees_ChangeBy(-this->unk_1C8);
} }
void func_80A3B83C(GlobalContext* globalCtx, EnGirlA* this) { void func_80A3B83C(GlobalContext* globalCtx, EnGirlA* this) {
Item_Give(globalCtx, 0x3E); Item_Give(globalCtx, ITEM_SHIELD_DEKU);
Rupees_ChangeBy(-this->unk_1C8); Rupees_ChangeBy(-this->unk_1C8);
} }
void func_80A3B878(GlobalContext* globalCtx, EnGirlA* this) { void func_80A3B878(GlobalContext* globalCtx, EnGirlA* this) {
Item_Give(globalCtx, 0x42); Item_Give(globalCtx, ITEM_TUNIC_GORON);
Rupees_ChangeBy(-this->unk_1C8); Rupees_ChangeBy(-this->unk_1C8);
} }
void func_80A3B8B4(GlobalContext* globalCtx, EnGirlA* this) { void func_80A3B8B4(GlobalContext* globalCtx, EnGirlA* this) {
Item_Give(globalCtx, 0x43); Item_Give(globalCtx, ITEM_TUNIC_ZORA);
Rupees_ChangeBy(-this->unk_1C8); Rupees_ChangeBy(-this->unk_1C8);
} }
@ -669,12 +712,12 @@ void func_80A3B8F0(GlobalContext* globalCtx, EnGirlA* this) {
} }
void func_80A3B92C(GlobalContext* globalCtx, EnGirlA* this) { void func_80A3B92C(GlobalContext* globalCtx, EnGirlA* this) {
Item_Give(globalCtx, 0x1A); Item_Give(globalCtx, ITEM_MILK_BOTTLE);
Rupees_ChangeBy(-this->unk_1C8); Rupees_ChangeBy(-this->unk_1C8);
} }
void func_80A3B968(GlobalContext* globalCtx, EnGirlA* this) { void func_80A3B968(GlobalContext* globalCtx, EnGirlA* this) {
Item_Give(globalCtx, 0x21); Item_Give(globalCtx, ITEM_WEIRD_EGG);
Rupees_ChangeBy(-this->unk_1C8); Rupees_ChangeBy(-this->unk_1C8);
} }
@ -687,38 +730,38 @@ void func_80A3B9D4(GlobalContext* globalCtx, EnGirlA* this) {
} }
void func_80A3BA04(GlobalContext* globalCtx, EnGirlA* this) { void func_80A3BA04(GlobalContext* globalCtx, EnGirlA* this) {
Item_Give(globalCtx, 0x95); Item_Give(globalCtx, ITEM_SEEDS_30);
Rupees_ChangeBy(-this->unk_1C8); Rupees_ChangeBy(-this->unk_1C8);
} }
void func_80A3BA40(GlobalContext* globalCtx, EnGirlA* this) { void func_80A3BA40(GlobalContext* globalCtx, EnGirlA* this) {
switch(this->actor.params) { switch (this->actor.params) {
case 7: case 7:
Item_Give(globalCtx, 0x19); Item_Give(globalCtx, ITEM_FISH);
break; break;
case 8: case 8:
Item_Give(globalCtx, 0x15); Item_Give(globalCtx, ITEM_POTION_RED);
break; break;
case 9: case 9:
Item_Give(globalCtx, 0x16); Item_Give(globalCtx, ITEM_POTION_GREEN);
break; break;
case 10: case 10:
Item_Give(globalCtx, 0x17); Item_Give(globalCtx, ITEM_POTION_BLUE);
break; break;
case 0x27: case 0x27:
Item_Give(globalCtx, 0x1C); Item_Give(globalCtx, ITEM_BLUE_FIRE);
break; break;
case 0x28: case 0x28:
Item_Give(globalCtx, 0x1D); Item_Give(globalCtx, ITEM_BUG);
break; break;
case 0x29: case 0x29:
Item_Give(globalCtx, 0x1E); Item_Give(globalCtx, ITEM_BIG_POE);
break; break;
case 0x2A: case 0x2A:
Item_Give(globalCtx, 0x20); Item_Give(globalCtx, ITEM_POE);
break; break;
case 0x2B: case 0x2B:
Item_Give(globalCtx, 0x18); Item_Give(globalCtx, ITEM_FAIRY);
break; break;
} }
Rupees_ChangeBy(-this->unk_1C8); Rupees_ChangeBy(-this->unk_1C8);
@ -743,7 +786,7 @@ void func_80A3BC3C(GlobalContext* globalCtx, EnGirlA* this) {
} }
void func_80A3BC6C(GlobalContext* globalCtx, EnGirlA* this) { void func_80A3BC6C(GlobalContext* globalCtx, EnGirlA* this) {
switch(this->actor.params) { switch (this->actor.params) {
case 0x18: case 0x18:
gSaveContext.itemGetInf[0] |= 0x40; gSaveContext.itemGetInf[0] |= 0x40;
break; break;
@ -775,16 +818,13 @@ void func_80A3BC6C(GlobalContext* globalCtx, EnGirlA* this) {
void func_80A3BD80(GlobalContext* globalCtx, EnGirlA* this) { void func_80A3BD80(GlobalContext* globalCtx, EnGirlA* this) {
} }
void func_80A3C4D4(Actor*, GlobalContext*);
void func_80A3BEAC(GlobalContext*, EnGirlA*);
void func_80A3BD8C(GlobalContext* globalCtx, EnGirlA* this) { void func_80A3BD8C(GlobalContext* globalCtx, EnGirlA* this) {
GirlAThing* tmp = &D_80A3C674[this->actor.params]; GirlAThing* tmp = &D_80A3C674[this->actor.params];
s32 params = this->actor.params; s32 params = this->actor.params;
s32 params2; s32 params2;
s32 tmp3; s32 tmp3;
if ((this->actor.params >= 0x1E) && (this->actor.params < 0x23) ){ if ((this->actor.params >= 0x1E) && (this->actor.params < 0x23)) {
params2 = this->actor.params - 0x1E; params2 = this->actor.params - 0x1E;
tmp3 = 0; tmp3 = 0;
switch (this->actor.params) { switch (this->actor.params) {
@ -835,8 +875,10 @@ void func_80A3BEAC(GlobalContext* globalCtx, EnGirlA* this) {
} }
#ifdef NON_MATCHING #ifdef NON_MATCHING
// Small regalloc
void func_80A3BEE0(GlobalContext* globalCtx, EnGirlA* this) { void func_80A3BEE0(GlobalContext* globalCtx, EnGirlA* this) {
GirlAThing* tmp; GirlAThing* tmp;
if (func_80A3A758(this)) { if (func_80A3A758(this)) {
func_80A3A8D0(this, globalCtx); func_80A3A8D0(this, globalCtx);
tmp = &D_80A3C674[this->actor.params]; tmp = &D_80A3C674[this->actor.params];
@ -851,8 +893,10 @@ void func_80A3BEE0(GlobalContext* globalCtx, EnGirlA* this) {
#endif #endif
s32 func_80A3BF54(EnGirlA* this, GlobalContext* globalCtx) { s32 func_80A3BF54(EnGirlA* this, GlobalContext* globalCtx) {
if ((this->actor.params >= 0x1E) && (this->actor.params < 0x26) ) { s32 params;
s32 params = this->actor.params - 0x1E;
if ((this->actor.params >= 0x1E) && (this->actor.params < 0x26)) {
params = this->actor.params - 0x1E;
if (gSaveContext.items[gItemSlots[0x21]] == D_80A3C658[params]) { if (gSaveContext.items[gItemSlots[0x21]] == D_80A3C658[params]) {
func_80A3BEAC(globalCtx, this); func_80A3BEAC(globalCtx, this);
return 1; return 1;
@ -863,16 +907,12 @@ s32 func_80A3BF54(EnGirlA* this, GlobalContext* globalCtx) {
return 0; return 0;
} }
void func_80A3C3BC(EnGirlA*, GlobalContext*);
void func_80A3BEE0(GlobalContext*, EnGirlA*);
void func_80A3BFE4(EnGirlA* this, GlobalContext* globalCtx) { void func_80A3BFE4(EnGirlA* this, GlobalContext* globalCtx) {
s16 params = this->actor.params; s16 params = this->actor.params;
GirlAThing* tmp = &D_80A3C674[params]; GirlAThing* tmp = &D_80A3C674[params];
if (Object_IsLoaded(&globalCtx->objectCtx, this->unk_194)) { if (Object_IsLoaded(&globalCtx->objectCtx, this->unk_194)) {
this->actor.flags &= 0xFFFFFFEF; this->actor.flags &= ~0x10;
this->actor.objBankIndex = this->unk_194; this->actor.objBankIndex = this->unk_194;
switch (this->actor.params - 0x1E) { switch (this->actor.params - 0x1E) {
case 0: case 0:
@ -884,7 +924,6 @@ void func_80A3BFE4(EnGirlA* this, GlobalContext* globalCtx) {
this->unk_1A0 = tmp->unk_0E; this->unk_1A0 = tmp->unk_0E;
break; break;
case 1: case 1:
if (gSaveContext.itemGetInf[3] & 0x400) { if (gSaveContext.itemGetInf[3] & 0x400) {
this->actor.textId = 0x70B5; this->actor.textId = 0x70B5;
} else { } else {
@ -920,12 +959,10 @@ void func_80A3BFE4(EnGirlA* this, GlobalContext* globalCtx) {
} }
break; break;
case 5: case 5:
this->actor.textId = tmp->unk_0C; this->actor.textId = tmp->unk_0C;
this->unk_1A0 = tmp->unk_0E; this->unk_1A0 = tmp->unk_0E;
break; break;
case 6: case 6:
this->actor.textId = tmp->unk_0C; this->actor.textId = tmp->unk_0C;
this->unk_1A0 = tmp->unk_0E; this->unk_1A0 = tmp->unk_0E;
break; break;
@ -953,7 +990,7 @@ void func_80A3BFE4(EnGirlA* this, GlobalContext* globalCtx) {
this->unk_1D0 = tmp->unk_04; this->unk_1D0 = tmp->unk_04;
this->unk_1CC = tmp->unk_02; this->unk_1CC = tmp->unk_02;
osSyncPrintf("%s(%2d)\n", D_80A3C590[params], params); osSyncPrintf("%s(%2d)\n", D_80A3C590[params], params);
this->actor.flags &= 0xFFFFFFFE; this->actor.flags &= ~1;
Actor_SetScale(&this->actor, 0.25f); Actor_SetScale(&this->actor, 0.25f);
this->actor.shape.unk_08 = 24.0f; this->actor.shape.unk_08 = 24.0f;
this->actor.shape.unk_10 = 4.0f; this->actor.shape.unk_10 = 4.0f;
@ -979,14 +1016,15 @@ void func_80A3C3BC(EnGirlA* this, GlobalContext* globalCtx) {
if (this->actor.params != 0x26) { if (this->actor.params != 0x26) {
if (this->unk_1B4 != 0) { if (this->unk_1B4 != 0) {
this->unk_1B8 += 0x1F4; this->unk_1B8 += 0x1F4;
return; } else {
}
Math_SmoothScaleMaxMinS(&this->unk_1B8, 0, 10, 0x7D0, 0); Math_SmoothScaleMaxMinS(&this->unk_1B8, 0, 10, 0x7D0, 0);
} }
}
} }
void EnGirlA_Update(Actor* thisx, GlobalContext* globalCtx) { void EnGirlA_Update(Actor* thisx, GlobalContext* globalCtx) {
EnGirlA* this = THIS; EnGirlA* this = THIS;
this->unk_198(this, globalCtx); this->unk_198(this, globalCtx);
} }
@ -997,6 +1035,7 @@ void func_80A3C498(Actor* this, GlobalContext* globalCtx, s32 flags) {
void func_80A3C4D4(Actor* thisx, GlobalContext* globalCtx) { void func_80A3C4D4(Actor* thisx, GlobalContext* globalCtx) {
EnGirlA* this = THIS; EnGirlA* this = THIS;
Matrix_RotateY(((this->unk_1B8 * 360.0f) / 65536.0f) * 0.017453292f, MTXMODE_APPLY); Matrix_RotateY(((this->unk_1B8 * 360.0f) / 65536.0f) * 0.017453292f, MTXMODE_APPLY);
if (this->unk_1D0 != NULL) { if (this->unk_1D0 != NULL) {
this->unk_1D0(thisx, globalCtx, 0); this->unk_1D0(thisx, globalCtx, 0);

View file

@ -6,22 +6,26 @@
struct EnGirlA; struct EnGirlA;
typedef void (*EnGirlAActionFunc)(struct EnGirlA*, GlobalContext*);
typedef void (*EnGirlA2Func)(GlobalContext*, struct EnGirlA*);
typedef void (*EnGirlA3Func)(Actor*, GlobalContext*, s32);
typedef struct EnGirlA { typedef struct EnGirlA {
/* 0x0000 */ Actor actor; /* 0x0000 */ Actor actor;
/* 0x014C */ SkelAnime skelAnime; /* 0x014C */ SkelAnime skelAnime;
/* 0x0190 */ void (*actionFunc)(struct EnGirlA*, GlobalContext*); /* 0x0190 */ EnGirlAActionFunc actionFunc;
/* 0x0194 */ s8 unk_194; /* 0x0194 */ s8 unk_194;
/* 0x0195 */ s8 unk_195; /* 0x0195 */ s8 unk_195;
/* 0x0196 */ s16 unk_196; /* 0x0196 */ s16 unk_196;
/* 0x0198 */ void (*unk_198)(struct EnGirlA*, GlobalContext*); /* 0x0198 */ EnGirlAActionFunc unk_198;
/* 0x019C */ s32 unk_19C; /* 0x019C */ s32 unk_19C;
/* 0x01A0 */ s16 unk_1A0; /* 0x01A0 */ s16 unk_1A0;
/* 0x01A2 */ s16 unk_1A2; /* 0x01A2 */ s16 unk_1A2;
/* 0x01A4 */ s32 unk_1A4; /* 0x01A4 */ s32 unk_1A4;
/* 0x01A8 */ s16 unk_1A8; /* 0x01A8 */ s16 unk_1A8;
/* 0x01AA */ s16 unk_1AA; /* 0x01AA */ s16 unk_1AA;
/* 0x01AC */ void (*unk_1AC)(GlobalContext*, struct EnGirlA*); /* 0x01AC */ EnGirlA2Func unk_1AC;
/* 0x01B0 */ void (*unk_1B0)(GlobalContext*, struct EnGirlA*); /* 0x01B0 */ EnGirlA2Func unk_1B0;
/* 0x01B4 */ s16 unk_1B4; /* 0x01B4 */ s16 unk_1B4;
/* 0x01B6 */ s16 unk_1B6; /* 0x01B6 */ s16 unk_1B6;
/* 0x01B8 */ s16 unk_1B8; /* 0x01B8 */ s16 unk_1B8;
@ -33,7 +37,7 @@ typedef struct EnGirlA {
/* 0x01CA */ s16 unk_1CA; /* 0x01CA */ s16 unk_1CA;
/* 0x01CC */ s16 unk_1CC; /* 0x01CC */ s16 unk_1CC;
/* 0x01CE */ s16 unk_1CE; /* 0x01CE */ s16 unk_1CE;
/* 0x01D0 */ void (*unk_1D0)(Actor*, GlobalContext*, s32); /* 0x01D0 */ EnGirlA3Func unk_1D0;
} EnGirlA; // size = 0x01D4 } EnGirlA; // size = 0x01D4
extern const ActorInit En_Girla_InitVars; extern const ActorInit En_Girla_InitVars;