From 606584f37610b82ba891fff3f91e0e5051339d11 Mon Sep 17 00:00:00 2001 From: Kelebek1 Date: Fri, 17 Jul 2020 09:26:45 +0100 Subject: [PATCH] PR 1 --- spec | 4 + src/overlays/actors/ovl_En_GirlA/z_en_girla.c | 663 +++++++++--------- src/overlays/actors/ovl_En_GirlA/z_en_girla.h | 14 +- 3 files changed, 364 insertions(+), 317 deletions(-) diff --git a/spec b/spec index 215ece301f..473401f852 100644 --- a/spec +++ b/spec @@ -2556,7 +2556,11 @@ endseg beginseg name "ovl_En_GirlA" 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" +#endif endseg beginseg diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c index 60fbd8335e..210d34bb57 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.c +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.c @@ -9,6 +9,60 @@ void EnGirlA_Init(Actor* this, GlobalContext* globalCtx); void EnGirlA_Destroy(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 = { ACTOR_EN_GIRLA, ACTORTYPE_PROP, @@ -21,67 +75,21 @@ const ActorInit En_GirlA_InitVars = { NULL, }; -char* D_80A3C590[] = { - "デクの実×5 ", - "矢×30 ", - "矢×50 ", - "爆弾×5 ", - "デクの実×10 ", - "デクの棒 ", - "爆弾×10 ", - "さかな ", - "赤クスリ ", - "緑クスリ ", - "青クスリ ", - "巨人のナイフ ", - "ハイリアの盾 ", - "デクの盾 ", - "ゴロンの服 ", - "ゾ─ラの服 ", - "回復のハート ", - "ロンロン牛乳 ", - "鶏の卵 ", - "インゴー牛乳 ", - "インゴー卵 ", - "もだえ石 ", - "大人の財布 ", - "ハートの欠片 ", - "ボムチュウ ", - "ボムチュウ ", - "ボムチュウ ", - "ボムチュウ ", - "ボムチュウ ", - "デクのタネ ", - "キータンのお面", - "こわそなお面 ", - "ドクロのお面 ", - "ウサギずきん ", - "まことの仮面 ", - "ゾーラのお面 ", - "ゴロンのお面 ", - "ゲルドのお面 ", - "SOLDOUT", - "炎 ", - "虫 ", - "チョウチョ ", - "ポウ ", - "妖精の魂 ", - "矢×10 ", - "爆弾×20 ", - "爆弾×30 ", - "爆弾×5 ", - "赤クスリ ", - "赤クスリ ", +static char* D_80A3C590[] = { + "デクの実×5 ", "矢×30 ", "矢×50 ", "爆弾×5 ", "デクの実×10 ", "デクの棒 ", + "爆弾×10 ", "さかな ", "赤クスリ ", "緑クスリ ", "青クスリ ", "巨人のナイフ ", + "ハイリアの盾 ", "デクの盾 ", "ゴロンの服 ", "ゾ─ラの服 ", "回復のハート ", "ロンロン牛乳 ", + "鶏の卵 ", "インゴー牛乳 ", "インゴー卵 ", "もだえ石 ", "大人の財布 ", "ハートの欠片 ", + "ボムチュウ ", "ボムチュウ ", "ボムチュウ ", "ボムチュウ ", "ボムチュウ ", "デクのタネ ", + "キータンのお面", "こわそなお面 ", "ドクロのお面 ", "ウサギずきん ", "まことの仮面 ", "ゾーラのお面 ", + "ゴロンのお面 ", "ゲルドのお面 ", "SOLDOUT", "炎 ", "虫 ", "チョウチョ ", + "ポウ ", "妖精の魂 ", "矢×10 ", "爆弾×20 ", "爆弾×30 ", "爆弾×5 ", + "赤クスリ ", "赤クスリ ", }; -s16 D_80A3C658[8] = { - 0x0024, 0x0026, 0x0025, 0x0027, - 0x002B, 0x0029, 0x0028, 0x002A -}; +s16 D_80A3C658[8] = { 0x0024, 0x0026, 0x0025, 0x0027, 0x002B, 0x0029, 0x0028, 0x002A }; -u16 D_80A3C668[5] = { - 0x70B6, 0x70B5, 0x70B4, 0x70B7, 0x70BB -}; +u16 D_80A3C668[5] = { 0x70B6, 0x70B5, 0x70B4, 0x70B7, 0x70BB }; typedef struct { /* 0x00 */ s16 objID; @@ -97,163 +105,199 @@ typedef struct { /* 0x1C */ void (*unk_1C)(GlobalContext*, EnGirlA*); } 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[] = { - {0x00BB, 0x0011, func_8002ED80, 0x000F, 0x0005, 0x00B2, 0x007F, 0x00000063, func_80A3ABF8, func_80A3B714, func_80A3BB6C}, - {0x00D8, 0x0025, func_8002EBCC, 0x003C, 0x001E, 0x00C1, 0x009B, 0x0000004A, func_80A3AAA8, func_80A3B634, func_80A3BB6C}, - {0x00D8, 0x0026, func_8002EBCC, 0x005A, 0x0032, 0x00B0, 0x007D, 0x0000004B, func_80A3AAA8, func_80A3B634, func_80A3BB6C}, - {0x00CE, 0x001F, func_8002EBCC, 0x0019, 0x0005, 0x00A3, 0x008B, 0x00000001, func_80A3AB58, func_80A3B678, func_80A3BB6C}, - {0x00BB, 0x0011, func_8002ED80, 0x001E, 0x000A, 0x00A2, 0x0087, 0x00000064, func_80A3ABF8, func_80A3B714, func_80A3BB6C}, - {0x00C7, 0x001A, 0x00000000, 0x000A, 0x0001, 0x00A1, 0x0088, 0x00000007, func_80A3ACAC, func_80A3B780, func_80A3BB6C}, - {0x00CE, 0x001F, func_8002EBCC, 0x0032, 0x000A, 0x00B1, 0x007C, 0x00000066, func_80A3AB58, func_80A3B678, func_80A3BB6C}, - {0x00F4, 0x003E, func_8002ED80, 0x00C8, 0x0001, 0x00B3, 0x007E, 0x0000006C, func_80A3AD60, 0x00000000, func_80A3BB6C}, - {0x00EB, 0x0037, func_8002EBCC, 0x001E, 0x0001, 0x00A5, 0x008E, 0x00000010, func_80A3ADD4, func_80A3BA40, func_80A3BB6C}, - {0x00EB, 0x0036, func_8002EBCC, 0x001E, 0x0001, 0x00A6, 0x008F, 0x00000011, func_80A3AE48, func_80A3BA40, func_80A3BB6C}, - {0x00EB, 0x0038, func_8002EBCC, 0x003C, 0x0001, 0x00A7, 0x0090, 0x00000012, func_80A3AEBC, func_80A3BA40, func_80A3BB6C}, - {0x00F8, 0x0042, func_8002EBCC, 0x03E8, 0x0001, 0x00A8, 0x0091, 0x00000028, func_80A3AF30, func_80A3B7BC, func_80A3BB6C}, - {0x00DC, 0x002B, func_8002EBCC, 0x0050, 0x0001, 0x00A9, 0x0092, 0x0000002A, func_80A3AFC4, func_80A3B800, func_80A3BB6C}, - {0x00CB, 0x001C, func_8002EBCC, 0x0028, 0x0001, 0x009F, 0x0089, 0x00000029, func_80A3B040, func_80A3B83C, func_80A3BB6C}, - {0x00F2, 0x003B, 0x00000000, 0x00C8, 0x0001, 0x00AA, 0x0093, 0x0000002C, func_80A3B0BC, func_80A3B878, func_80A3BC0C}, - {0x00F2, 0x003C, 0x00000000, 0x012C, 0x0001, 0x00AB, 0x0094, 0x0000002D, func_80A3B160, func_80A3B8B4, func_80A3BC3C}, - {0x00B7, 0x0008, 0x00000000, 0x000A, 0x0010, 0x00AC, 0x0095, 0x00000048, func_80A3B204, func_80A3B8F0, func_80A3BB6C}, - {0x00DF, 0x002F, func_80A3C498, 0x0064, 0x0001, 0x00AD, 0x0097, 0x00000014, func_80A3B250, func_80A3B92C, func_80A3BB6C}, - {0x00DA, 0x0028, func_8002EBCC, 0x0064, 0x0001, 0x00AE, 0x0099, 0x00000047, func_80A3B2AC, func_80A3B968, func_80A3BB6C}, - {0x00DF, 0x002F, func_80A3C498, 0x2710, 0x0001, 0x00B4, 0x0085, 0x00000000, func_80A3B308, func_80A3B9A4, func_80A3BB6C}, - {0x00DA, 0x0028, func_8002EBCC, 0x2710, 0x0001, 0x00B5, 0x0085, 0x00000000, func_80A3B318, func_80A3B9D4, func_80A3BB6C}, - {0x00D9, 0x0027, func_8002EBCC, 0x0064, 0x000A, 0x00BC, 0x008C, 0x00000003, func_80A3B328, 0x00000000, func_80A3BC6C}, - {0x00D9, 0x0027, func_8002EBCC, 0x00B4, 0x0014, 0x0061, 0x002A, 0x0000006B, func_80A3B328, 0x00000000, func_80A3BC6C}, - {0x00D9, 0x0027, func_8002EBCC, 0x00B4, 0x0014, 0x0061, 0x002A, 0x0000006B, func_80A3B328, 0x00000000, func_80A3BC6C}, - {0x00D9, 0x0027, func_8002EBCC, 0x0064, 0x000A, 0x00BC, 0x008C, 0x00000003, func_80A3B328, 0x00000000, func_80A3BC6C}, - {0x00D9, 0x0027, func_8002EBCC, 0x0064, 0x000A, 0x00BC, 0x008C, 0x00000003, func_80A3B328, 0x00000000, func_80A3BC6C}, - {0x00D9, 0x0027, func_8002EBCC, 0x00B4, 0x0014, 0x0061, 0x002A, 0x0000006B, func_80A3B328, 0x00000000, func_80A3BC6C}, - {0x00D9, 0x0027, func_8002EBCC, 0x00B4, 0x0014, 0x0061, 0x002A, 0x0000006B, func_80A3B328, 0x00000000, func_80A3BC6C}, - {0x00D9, 0x0027, func_8002EBCC, 0x0064, 0x000A, 0x00BC, 0x008C, 0x00000003, func_80A3B328, 0x00000000, func_80A3BC6C}, - {0x0119, 0x0047, func_8002EBCC, 0x001E, 0x001E, 0x00DF, 0x00DE, 0x00000069, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, - {0x0134, 0x0030, func_8002EBCC, 0x0000, 0x0001, 0x70B2, 0x70BE, 0x0000001A, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, - {0x0135, 0x0031, func_8002EBCC, 0x0000, 0x0001, 0x70B1, 0x70BD, 0x00000018, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, - {0x0136, 0x004E, func_8002EBCC, 0x0000, 0x0001, 0x70B0, 0x70BC, 0x00000017, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, - {0x0137, 0x004F, func_8002EBCC, 0x0000, 0x0001, 0x70B3, 0x70BF, 0x0000001B, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, - {0x0138, 0x0050, func_80A3C498, 0x0000, 0x0001, 0x70AF, 0x70C3, 0x0000001C, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, - {0x0151, 0x005B, 0x00000000, 0x0000, 0x0001, 0x70B9, 0x70C1, 0x00000052, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, - {0x0150, 0x005A, 0x00000000, 0x0000, 0x0001, 0x70B8, 0x70C0, 0x00000051, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, - {0x0152, 0x005C, 0x00000000, 0x0000, 0x0001, 0x70BA, 0x70C2, 0x00000053, func_80A3B3A8, func_80A3BA04, func_80A3BB6C}, - {0x0148, 0x0058, func_8002EBCC, 0x0000, 0x0000, 0x00BD, 0x70C2, 0x00000053, func_80A3B454, 0x00000000, 0x00000000}, - {0x0173, 0x0066, func_8002EBCC, 0x012C, 0x0001, 0x00B9, 0x00B8, 0x0000006E, func_80A3B464, func_80A3BA40, func_80A3BB6C}, - {0x0174, 0x0067, func_80A3C498, 0x0032, 0x0001, 0x00BB, 0x00BA, 0x0000006D, func_80A3B4D8, func_80A3BA40, func_80A3BB6C}, - {0x0176, 0x006F, func_80A3C498, 0x0032, 0x0001, 0x506F, 0x5070, 0x00000070, func_80A3B54C, func_80A3BA40, func_80A3BB6C}, - {0x0176, 0x0069, func_80A3C498, 0x001E, 0x0001, 0x506D, 0x506E, 0x0000006F, func_80A3B54C, func_80A3BA40, func_80A3BB6C}, - {0x0177, 0x006A, func_80A3C498, 0x0032, 0x0001, 0x00B7, 0x00B6, 0x00000013, func_80A3B5C0, func_80A3BA40, func_80A3BB6C}, - {0x00D8, 0x0024, func_8002EBCC, 0x0014, 0x000A, 0x00A0, 0x008A, 0x00000049, func_80A3AAA8, func_80A3B634, func_80A3BB6C}, - {0x00CE, 0x001F, func_8002EBCC, 0x0050, 0x0014, 0x001C, 0x0006, 0x00000067, func_80A3AB58, func_80A3B678, func_80A3BB6C}, - {0x00CE, 0x001F, func_8002EBCC, 0x0078, 0x001E, 0x001D, 0x001E, 0x00000068, func_80A3AB58, func_80A3B678, func_80A3BB6C}, - {0x00CE, 0x001F, func_8002EBCC, 0x0023, 0x0005, 0x00CB, 0x00CA, 0x00000001, func_80A3AB58, func_80A3B678, func_80A3BB6C}, - {0x00EB, 0x0037, func_8002EBCC, 0x0028, 0x0001, 0x0064, 0x0062, 0x00000010, func_80A3ADD4, func_80A3BA40, func_80A3BB6C}, - {0x00EB, 0x0037, func_8002EBCC, 0x0032, 0x0001, 0x0065, 0x0063, 0x00000010, func_80A3ADD4, func_80A3BA40, func_80A3BB6C}, -}; - -s16 D_80A3CCB4[8] = { - 0x0005, 0x000A, 0x000F, 0x0014, 0x0019, 0x001E, 0x0023, 0x0028 + { 0x00BB, 0x0011, func_8002ED80, 0x000F, 0x0005, 0x00B2, 0x007F, GI_NUTS_5_2, func_80A3ABF8, func_80A3B714, + func_80A3BB6C }, + { 0x00D8, 0x0025, func_8002EBCC, 0x003C, 0x001E, 0x00C1, 0x009B, GI_ARROWS_MEDIUM, func_80A3AAA8, func_80A3B634, + func_80A3BB6C }, + { 0x00D8, 0x0026, func_8002EBCC, 0x005A, 0x0032, 0x00B0, 0x007D, GI_ARROWS_LARGE, func_80A3AAA8, func_80A3B634, + func_80A3BB6C }, + { 0x00CE, 0x001F, func_8002EBCC, 0x0019, 0x0005, 0x00A3, 0x008B, GI_BOMBS_5, func_80A3AB58, func_80A3B678, + func_80A3BB6C }, + { 0x00BB, 0x0011, func_8002ED80, 0x001E, 0x000A, 0x00A2, 0x0087, GI_NUTS_10, func_80A3ABF8, func_80A3B714, + func_80A3BB6C }, + { 0x00C7, 0x001A, 0x00000000, 0x000A, 0x0001, 0x00A1, 0x0088, GI_STICKS_1, func_80A3ACAC, func_80A3B780, + func_80A3BB6C }, + { 0x00CE, 0x001F, func_8002EBCC, 0x0032, 0x000A, 0x00B1, 0x007C, GI_BOMBS_10, func_80A3AB58, func_80A3B678, + func_80A3BB6C }, + { 0x00F4, 0x003E, func_8002ED80, 0x00C8, 0x0001, 0x00B3, 0x007E, GI_FISH, func_80A3AD60, 0x00000000, + func_80A3BB6C }, + { 0x00EB, 0x0037, func_8002EBCC, 0x001E, 0x0001, 0x00A5, 0x008E, GI_POTION_RED, func_80A3ADD4, func_80A3BA40, + func_80A3BB6C }, + { 0x00EB, 0x0036, func_8002EBCC, 0x001E, 0x0001, 0x00A6, 0x008F, GI_POTION_GREEN, func_80A3AE48, func_80A3BA40, + func_80A3BB6C }, + { 0x00EB, 0x0038, func_8002EBCC, 0x003C, 0x0001, 0x00A7, 0x0090, GI_POTION_BLUE, func_80A3AEBC, func_80A3BA40, + func_80A3BB6C }, + { 0x00F8, 0x0042, func_8002EBCC, 0x03E8, 0x0001, 0x00A8, 0x0091, GI_SWORD_KNIFE, func_80A3AF30, func_80A3B7BC, + func_80A3BB6C }, + { 0x00DC, 0x002B, func_8002EBCC, 0x0050, 0x0001, 0x00A9, 0x0092, GI_SHIELD_HYLIAN, func_80A3AFC4, func_80A3B800, + func_80A3BB6C }, + { 0x00CB, 0x001C, func_8002EBCC, 0x0028, 0x0001, 0x009F, 0x0089, GI_SHIELD_DEKU, func_80A3B040, func_80A3B83C, + func_80A3BB6C }, + { 0x00F2, 0x003B, 0x00000000, 0x00C8, 0x0001, 0x00AA, 0x0093, GI_TUNIC_GORON, func_80A3B0BC, func_80A3B878, + func_80A3BC0C }, + { 0x00F2, 0x003C, 0x00000000, 0x012C, 0x0001, 0x00AB, 0x0094, GI_TUNIC_ZORA, func_80A3B160, func_80A3B8B4, + func_80A3BC3C }, + { 0x00B7, 0x0008, 0x00000000, 0x000A, 0x0010, 0x00AC, 0x0095, GI_HEART, func_80A3B204, func_80A3B8F0, + func_80A3BB6C }, + { 0x00DF, 0x002F, func_80A3C498, 0x0064, 0x0001, 0x00AD, 0x0097, GI_MILK_BOTTLE, func_80A3B250, func_80A3B92C, + func_80A3BB6C }, + { 0x00DA, 0x0028, func_8002EBCC, 0x0064, 0x0001, 0x00AE, 0x0099, GI_WEIRD_EGG, func_80A3B2AC, func_80A3B968, + func_80A3BB6C }, + { 0x00DF, 0x002F, func_80A3C498, 0x2710, 0x0001, 0x00B4, 0x0085, GI_INVALID, func_80A3B308, func_80A3B9A4, + func_80A3BB6C }, + { 0x00DA, 0x0028, func_8002EBCC, 0x2710, 0x0001, 0x00B5, 0x0085, GI_INVALID, func_80A3B318, func_80A3B9D4, + func_80A3BB6C }, + { 0x00D9, 0x0027, func_8002EBCC, 0x0064, 0x000A, 0x00BC, 0x008C, GI_BOMBCHUS_10, func_80A3B328, 0x00000000, + func_80A3BC6C }, + { 0x00D9, 0x0027, func_8002EBCC, 0x00B4, 0x0014, 0x0061, 0x002A, GI_BOMBCHUS_20, func_80A3B328, 0x00000000, + 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 }, + { 0x00D9, 0x0027, func_8002EBCC, 0x0064, 0x000A, 0x00BC, 0x008C, GI_BOMBCHUS_10, func_80A3B328, 0x00000000, + func_80A3BC6C }, + { 0x00D9, 0x0027, func_8002EBCC, 0x00B4, 0x0014, 0x0061, 0x002A, GI_BOMBCHUS_20, func_80A3B328, 0x00000000, + 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) { this->actionFunc = arg1; } s32 func_80A3A758(EnGirlA* this) { - switch(this->actor.params) { - case 0x11: - if (gSaveContext.itemGetInf[0] & 0x4) { - this->actor.params = 0x10; - return 1; - } - break; - case 0x18: - if (gSaveContext.itemGetInf[0] & 0x40) { - this->actor.params = 0x26; - return 1; - } - break; - case 0x19: - if (gSaveContext.itemGetInf[0] & 0x80) { - this->actor.params = 0x26; - return 1; - } - break; - case 0x1A: - if (gSaveContext.itemGetInf[0] & 0x100) { - this->actor.params = 0x26; - return 1; - } - break; - case 0x1B: - if (gSaveContext.itemGetInf[0] & 0x200) { - this->actor.params = 0x26; - return 1; - } - break; - case 0x1C: - if (gSaveContext.itemGetInf[0] & 0x400) { - this->actor.params = 0x26; - return 1; - } - break; - case 0x15: - if (gSaveContext.itemGetInf[0] & 0x8) { - this->actor.params = 0x26; - return 1; - } - break; - case 0x16: - if (gSaveContext.itemGetInf[0] & 0x10) { - this->actor.params = 0x26; - return 1; - } - break; - case 0x17: - if (gSaveContext.itemGetInf[0] & 0x20) { - this->actor.params = 0x26; - return 1; - } - break; + switch (this->actor.params) { + case 0x11: + if (gSaveContext.itemGetInf[0] & 0x4) { + this->actor.params = 0x10; + return 1; + } + break; + case 0x18: + if (gSaveContext.itemGetInf[0] & 0x40) { + this->actor.params = 0x26; + return 1; + } + break; + case 0x19: + if (gSaveContext.itemGetInf[0] & 0x80) { + this->actor.params = 0x26; + return 1; + } + break; + case 0x1A: + if (gSaveContext.itemGetInf[0] & 0x100) { + this->actor.params = 0x26; + return 1; + } + break; + case 0x1B: + if (gSaveContext.itemGetInf[0] & 0x200) { + this->actor.params = 0x26; + return 1; + } + break; + case 0x1C: + if (gSaveContext.itemGetInf[0] & 0x400) { + this->actor.params = 0x26; + return 1; + } + break; + case 0x15: + if (gSaveContext.itemGetInf[0] & 0x8) { + this->actor.params = 0x26; + return 1; + } + break; + case 0x16: + if (gSaveContext.itemGetInf[0] & 0x10) { + this->actor.params = 0x26; + return 1; + } + break; + case 0x17: + if (gSaveContext.itemGetInf[0] & 0x20) { + this->actor.params = 0x26; + return 1; + } + break; } return 0; } -void func_80A3BFE4(EnGirlA*, GlobalContext*); - #ifdef NON_MATCHING +// Weird allocations void func_80A3A8D0(EnGirlA* this, GlobalContext* globalCtx) { - //EnGirlA* this = THIS; - char* strptr = D_80A3C590[this->actor.params]; - char* strptr2 = D_80A3C590[this->actor.params]; + char** strptr = &D_80A3C590[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)) { Actor_Kill(&this->actor); - osSyncPrintf(VT_COL(RED, WHITE)); - // Bad argument! + osSyncPrintf("\x1b" + "[" + "4" + "1" + ";" + "3" + "7" + "m"); 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); return; } @@ -261,14 +305,23 @@ void func_80A3A8D0(EnGirlA* this, GlobalContext* globalCtx) { this->unk_194 = Object_GetIndex(&globalCtx->objectCtx, D_80A3C674[params].objID); if (this->unk_194 < 0) { Actor_Kill(&this->actor); - osSyncPrintf(VT_COL(RED, WHITE)); - // No bank! - osSyncPrintf("バンクが無いよ!!(%s)\n", strptr2); - osSyncPrintf(VT_RST); - if (this) {}; + osSyncPrintf("\x1b" + "[" + "4" + "1" + ";" + "3" + "7" + "m"); + osSyncPrintf("バンクが無いよ!!(%s)\n", *strptr); + osSyncPrintf("\x1b" + "[" + "" + "m"); __assert("0", "../z_en_girlA.c", 0x59A); return; } + this->actor.params = params & 0xFFFF; 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") #endif - void EnGirlA_Init(Actor* thisx, GlobalContext* globalCtx) { EnGirlA* this = THIS; + func_80A3A758(this); 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) { EnGirlA* this = THIS; + if (this->unk_19C != 0) { SkelAnime_Free(&this->skelAnime, globalCtx); } } s32 func_80A3AAA8(GlobalContext* globalCtx, EnGirlA* this) { - if (Item_CheckObtainability(3) == 0xFF) { + if (Item_CheckObtainability(ITEM_BOW) == ITEM_NONE) { 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; } if (gSaveContext.rupees < this->unk_1C8) { @@ -305,10 +359,10 @@ s32 func_80A3AAA8(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; } - 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; } 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 tmp = gUpgradeCapacities[7][(s32)(gSaveContext.upgrades & gUpgradeMasks[7]) >> gUpgradeShifts[7]]; - - if (tmp != 0) { - if (gSaveContext.ammo[gItemSlots[1]] >= tmp) { - return 2; - } + if ((CUR_CAPACITY(UPG_NUTS) != 0) && (AMMO(ITEM_NUT) >= CUR_CAPACITY(UPG_NUTS))) { + return 2; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(1) == 0xFF) { + if (Item_CheckObtainability(ITEM_NUT) == ITEM_NONE) { return 0; } return 1; } s32 func_80A3ACAC(GlobalContext* globalCtx, EnGirlA* this) { - s32 tmp = gUpgradeCapacities[6][(s32)(gSaveContext.upgrades & gUpgradeMasks[6]) >> gUpgradeShifts[6]]; - - if (tmp != 0) { - if (gSaveContext.ammo[gItemSlots[0]] >= tmp) { - return 2; - } + if ((CUR_CAPACITY(UPG_STICKS) != 0) && (AMMO(ITEM_STICK) >= CUR_CAPACITY(UPG_STICKS))) { + return 2; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0) == 0xFF) { + if (Item_CheckObtainability(ITEM_STICK) == 0xFF) { return 0; } return 1; } s32 func_80A3AD60(GlobalContext* globalCtx, EnGirlA* this) { - if (Inventory_HasEmptyBottle() == 0) { + if (!Inventory_HasEmptyBottle()) { return 3; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x19) == 0xFF) { + if (Item_CheckObtainability(ITEM_FISH) == ITEM_NONE) { return 0; } return 1; } s32 func_80A3ADD4(GlobalContext* globalCtx, EnGirlA* this) { - if (Inventory_HasEmptyBottle() == 0) { + if (!Inventory_HasEmptyBottle()) { return 3; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x15) == 0xFF) { + if (Item_CheckObtainability(ITEM_POTION_RED) == ITEM_NONE) { return 0; } return 1; } s32 func_80A3AE48(GlobalContext* globalCtx, EnGirlA* this) { - if (Inventory_HasEmptyBottle() == 0) { + if (!Inventory_HasEmptyBottle()) { return 3; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x16) == 0xFF) { + if (Item_CheckObtainability(ITEM_POTION_GREEN) == ITEM_NONE) { return 0; } return 1; } s32 func_80A3AEBC(GlobalContext* globalCtx, EnGirlA* this) { - if (Inventory_HasEmptyBottle() == 0) { + if (!Inventory_HasEmptyBottle()) { return 3; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x17) == 0xFF) { + if (Item_CheckObtainability(ITEM_POTION_BLUE) == ITEM_NONE) { return 0; } return 1; } s32 func_80A3AF30(GlobalContext* globalCtx, EnGirlA* this) { - if ((gBitFlags[2] & gSaveContext.equipment) != 0) { - if ((gBitFlags[3] & gSaveContext.equipment) == 0) { - return 2; - } + if ((gBitFlags[2] & gSaveContext.equipment) && !(gBitFlags[3] & gSaveContext.equipment)) { + return 2; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x3D) == 0xFF) { + if (Item_CheckObtainability(ITEM_SWORD_BGS) == ITEM_NONE) { return 0; } return 1; } s32 func_80A3AFC4(GlobalContext* globalCtx, EnGirlA* this) { - if ((gBitFlags[5] & gSaveContext.equipment) != 0) { + if (gBitFlags[5] & gSaveContext.equipment) { return 2; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x3F) == 0xFF) { + if (Item_CheckObtainability(ITEM_SHIELD_HYLIAN) == ITEM_NONE) { return 0; } return 1; } s32 func_80A3B040(GlobalContext* globalCtx, EnGirlA* this) { - if ((gBitFlags[4] & gSaveContext.equipment) != 0) { + if (gBitFlags[4] & gSaveContext.equipment) { return 2; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x3E) == 0xFF) { + if (Item_CheckObtainability(ITEM_SHIELD_DEKU) == ITEM_NONE) { return 0; } return 1; @@ -448,13 +492,13 @@ s32 func_80A3B0BC(GlobalContext* globalCtx, EnGirlA* this) { if (LINK_AGE_IN_YEARS == YEARS_CHILD) { return 2; } - if ((gBitFlags[9] & gSaveContext.equipment) != 0) { + if (gBitFlags[9] & gSaveContext.equipment) { return 2; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x42) == 0xFF) { + if (Item_CheckObtainability(ITEM_TUNIC_GORON) == ITEM_NONE) { return 0; } return 1; @@ -464,13 +508,13 @@ s32 func_80A3B160(GlobalContext* globalCtx, EnGirlA* this) { if (LINK_AGE_IN_YEARS == YEARS_CHILD) { return 2; } - if ((gBitFlags[10] & gSaveContext.equipment) != 0) { + if (gBitFlags[10] & gSaveContext.equipment) { return 2; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x43) == 0xFF) { + if (Item_CheckObtainability(ITEM_TUNIC_ZORA) == ITEM_NONE) { return 0; } return 1; @@ -490,7 +534,7 @@ s32 func_80A3B250(GlobalContext* globalCtx, EnGirlA* this) { if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x1A) == 0xFF) { + if (Item_CheckObtainability(ITEM_MILK_BOTTLE) == ITEM_NONE) { return 0; } return 1; @@ -500,7 +544,7 @@ s32 func_80A3B2AC(GlobalContext* globalCtx, EnGirlA* this) { if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x23) == 0xFF) { + if (Item_CheckObtainability(ITEM_LETTER_ZELDA) == ITEM_NONE) { return 0; } return 1; @@ -515,26 +559,26 @@ s32 func_80A3B318(GlobalContext* globalCtx, EnGirlA* this) { } s32 func_80A3B328(GlobalContext* globalCtx, EnGirlA* this) { - if (gSaveContext.ammo[gItemSlots[9]] >= 0x32) { + if (AMMO(ITEM_BOMBCHU) >= 50) { return 2; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(9) == 0xFF) { + if (Item_CheckObtainability(ITEM_BOMBCHU) == ITEM_NONE) { return 0; } return 1; } 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; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x58) == 0xFF) { + if (Item_CheckObtainability(ITEM_SEEDS) == ITEM_NONE) { return 0; } return 1; @@ -545,52 +589,52 @@ s32 func_80A3B454(GlobalContext* globalCtx, EnGirlA* this) { } s32 func_80A3B464(GlobalContext* globalCtx, EnGirlA* this) { - if (Inventory_HasEmptyBottle() == 0) { + if (!Inventory_HasEmptyBottle()) { return 3; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x1C) == 0xFF) { + if (Item_CheckObtainability(ITEM_BLUE_FIRE) == ITEM_NONE) { return 0; } return 1; } s32 func_80A3B4D8(GlobalContext* globalCtx, EnGirlA* this) { - if (Inventory_HasEmptyBottle() == 0) { + if (!Inventory_HasEmptyBottle()) { return 3; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x1D) == 0xFF) { + if (Item_CheckObtainability(ITEM_BUG) == ITEM_NONE) { return 0; } return 1; } s32 func_80A3B54C(GlobalContext* globalCtx, EnGirlA* this) { - if (Inventory_HasEmptyBottle() == 0) { + if (!Inventory_HasEmptyBottle()) { return 3; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x20) == 0xFF) { + if (Item_CheckObtainability(ITEM_POE) == ITEM_NONE) { return 0; } return 1; } s32 func_80A3B5C0(GlobalContext* globalCtx, EnGirlA* this) { - if (Inventory_HasEmptyBottle() == 0) { + if (!Inventory_HasEmptyBottle()) { return 3; } if (gSaveContext.rupees < this->unk_1C8) { return 4; } - if (Item_CheckObtainability(0x18) == 0xFF) { + if (Item_CheckObtainability(ITEM_FAIRY) == ITEM_NONE) { return 0; } return 1; @@ -601,33 +645,32 @@ void func_80A3B634(GlobalContext* globalCtx, EnGirlA* this) { Rupees_ChangeBy(-this->unk_1C8); } - void func_80A3B678(GlobalContext* globalCtx, EnGirlA* this) { switch (this->unk_1CA) { - case 5: - Item_Give(globalCtx, 0x8E); - break; - case 10: - Item_Give(globalCtx, 0x8F); - break; - case 20: - Item_Give(globalCtx, 0x90); - break; - case 30: - Item_Give(globalCtx, 0x91); - break; + case 5: + Item_Give(globalCtx, ITEM_BOMBS_5); + break; + case 10: + Item_Give(globalCtx, ITEM_BOMBS_10); + break; + case 20: + Item_Give(globalCtx, ITEM_BOMBS_20); + break; + case 30: + Item_Give(globalCtx, ITEM_BOMBS_30); + break; } Rupees_ChangeBy(-this->unk_1C8); } void func_80A3B714(GlobalContext* globalCtx, EnGirlA* this) { switch (this->unk_1CA) { - case 5: - Item_Give(globalCtx, 0x8C); - break; - case 10: - Item_Give(globalCtx, 0x8D); - break; + case 5: + Item_Give(globalCtx, ITEM_NUTS_5); + break; + case 10: + Item_Give(globalCtx, ITEM_NUTS_10); + break; } Rupees_ChangeBy(-this->unk_1C8); } @@ -644,22 +687,22 @@ void func_80A3B7BC(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); } void func_80A3B83C(GlobalContext* globalCtx, EnGirlA* this) { - Item_Give(globalCtx, 0x3E); + Item_Give(globalCtx, ITEM_SHIELD_DEKU); Rupees_ChangeBy(-this->unk_1C8); } void func_80A3B878(GlobalContext* globalCtx, EnGirlA* this) { - Item_Give(globalCtx, 0x42); + Item_Give(globalCtx, ITEM_TUNIC_GORON); Rupees_ChangeBy(-this->unk_1C8); } void func_80A3B8B4(GlobalContext* globalCtx, EnGirlA* this) { - Item_Give(globalCtx, 0x43); + Item_Give(globalCtx, ITEM_TUNIC_ZORA); Rupees_ChangeBy(-this->unk_1C8); } @@ -669,12 +712,12 @@ void func_80A3B8F0(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); } void func_80A3B968(GlobalContext* globalCtx, EnGirlA* this) { - Item_Give(globalCtx, 0x21); + Item_Give(globalCtx, ITEM_WEIRD_EGG); Rupees_ChangeBy(-this->unk_1C8); } @@ -687,38 +730,38 @@ void func_80A3B9D4(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); } void func_80A3BA40(GlobalContext* globalCtx, EnGirlA* this) { - switch(this->actor.params) { + switch (this->actor.params) { case 7: - Item_Give(globalCtx, 0x19); + Item_Give(globalCtx, ITEM_FISH); break; case 8: - Item_Give(globalCtx, 0x15); + Item_Give(globalCtx, ITEM_POTION_RED); break; case 9: - Item_Give(globalCtx, 0x16); + Item_Give(globalCtx, ITEM_POTION_GREEN); break; case 10: - Item_Give(globalCtx, 0x17); + Item_Give(globalCtx, ITEM_POTION_BLUE); break; case 0x27: - Item_Give(globalCtx, 0x1C); + Item_Give(globalCtx, ITEM_BLUE_FIRE); break; case 0x28: - Item_Give(globalCtx, 0x1D); + Item_Give(globalCtx, ITEM_BUG); break; case 0x29: - Item_Give(globalCtx, 0x1E); + Item_Give(globalCtx, ITEM_BIG_POE); break; case 0x2A: - Item_Give(globalCtx, 0x20); + Item_Give(globalCtx, ITEM_POE); break; case 0x2B: - Item_Give(globalCtx, 0x18); + Item_Give(globalCtx, ITEM_FAIRY); break; } Rupees_ChangeBy(-this->unk_1C8); @@ -743,7 +786,7 @@ void func_80A3BC3C(GlobalContext* globalCtx, EnGirlA* this) { } void func_80A3BC6C(GlobalContext* globalCtx, EnGirlA* this) { - switch(this->actor.params) { + switch (this->actor.params) { case 0x18: gSaveContext.itemGetInf[0] |= 0x40; break; @@ -775,16 +818,13 @@ void func_80A3BC6C(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) { GirlAThing* tmp = &D_80A3C674[this->actor.params]; s32 params = this->actor.params; s32 params2; 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; tmp3 = 0; switch (this->actor.params) { @@ -835,8 +875,10 @@ void func_80A3BEAC(GlobalContext* globalCtx, EnGirlA* this) { } #ifdef NON_MATCHING +// Small regalloc void func_80A3BEE0(GlobalContext* globalCtx, EnGirlA* this) { GirlAThing* tmp; + if (func_80A3A758(this)) { func_80A3A8D0(this, globalCtx); tmp = &D_80A3C674[this->actor.params]; @@ -851,8 +893,10 @@ void func_80A3BEE0(GlobalContext* globalCtx, EnGirlA* this) { #endif s32 func_80A3BF54(EnGirlA* this, GlobalContext* globalCtx) { - if ((this->actor.params >= 0x1E) && (this->actor.params < 0x26) ) { - s32 params = this->actor.params - 0x1E; + s32 params; + + if ((this->actor.params >= 0x1E) && (this->actor.params < 0x26)) { + params = this->actor.params - 0x1E; if (gSaveContext.items[gItemSlots[0x21]] == D_80A3C658[params]) { func_80A3BEAC(globalCtx, this); return 1; @@ -863,16 +907,12 @@ s32 func_80A3BF54(EnGirlA* this, GlobalContext* globalCtx) { return 0; } -void func_80A3C3BC(EnGirlA*, GlobalContext*); -void func_80A3BEE0(GlobalContext*, EnGirlA*); - void func_80A3BFE4(EnGirlA* this, GlobalContext* globalCtx) { - s16 params = this->actor.params; GirlAThing* tmp = &D_80A3C674[params]; if (Object_IsLoaded(&globalCtx->objectCtx, this->unk_194)) { - this->actor.flags &= 0xFFFFFFEF; + this->actor.flags &= ~0x10; this->actor.objBankIndex = this->unk_194; switch (this->actor.params - 0x1E) { case 0: @@ -884,7 +924,6 @@ void func_80A3BFE4(EnGirlA* this, GlobalContext* globalCtx) { this->unk_1A0 = tmp->unk_0E; break; case 1: - if (gSaveContext.itemGetInf[3] & 0x400) { this->actor.textId = 0x70B5; } else { @@ -907,7 +946,7 @@ void func_80A3BFE4(EnGirlA* this, GlobalContext* globalCtx) { } else { this->actor.textId = tmp->unk_0C; } - + this->unk_1A0 = tmp->unk_0E; break; case 4: @@ -920,12 +959,10 @@ void func_80A3BFE4(EnGirlA* this, GlobalContext* globalCtx) { } break; case 5: - this->actor.textId = tmp->unk_0C; this->unk_1A0 = tmp->unk_0E; break; case 6: - this->actor.textId = tmp->unk_0C; this->unk_1A0 = tmp->unk_0E; break; @@ -941,7 +978,7 @@ void func_80A3BFE4(EnGirlA* this, GlobalContext* globalCtx) { if (func_80A3BF54(this, globalCtx) == 0) { func_80A3BD8C(globalCtx, this); } - + this->unk_1AC = func_80A3BEAC; this->unk_1B0 = func_80A3BEE0; this->unk_1A4 = tmp->unk_10; @@ -953,7 +990,7 @@ void func_80A3BFE4(EnGirlA* this, GlobalContext* globalCtx) { this->unk_1D0 = tmp->unk_04; this->unk_1CC = tmp->unk_02; osSyncPrintf("%s(%2d)\n", D_80A3C590[params], params); - this->actor.flags &= 0xFFFFFFFE; + this->actor.flags &= ~1; Actor_SetScale(&this->actor, 0.25f); this->actor.shape.unk_08 = 24.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->unk_1B4 != 0) { 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) { EnGirlA* this = THIS; + this->unk_198(this, globalCtx); } @@ -997,9 +1035,10 @@ void func_80A3C498(Actor* this, GlobalContext* globalCtx, s32 flags) { void func_80A3C4D4(Actor* thisx, GlobalContext* globalCtx) { EnGirlA* this = THIS; + Matrix_RotateY(((this->unk_1B8 * 360.0f) / 65536.0f) * 0.017453292f, MTXMODE_APPLY); if (this->unk_1D0 != NULL) { this->unk_1D0(thisx, globalCtx, 0); } func_800694A0(globalCtx, this->unk_1CC); -} \ No newline at end of file +} diff --git a/src/overlays/actors/ovl_En_GirlA/z_en_girla.h b/src/overlays/actors/ovl_En_GirlA/z_en_girla.h index 0e024180c1..648823a4c0 100644 --- a/src/overlays/actors/ovl_En_GirlA/z_en_girla.h +++ b/src/overlays/actors/ovl_En_GirlA/z_en_girla.h @@ -6,22 +6,26 @@ struct EnGirlA; +typedef void (*EnGirlAActionFunc)(struct EnGirlA*, GlobalContext*); +typedef void (*EnGirlA2Func)(GlobalContext*, struct EnGirlA*); +typedef void (*EnGirlA3Func)(Actor*, GlobalContext*, s32); + typedef struct EnGirlA { /* 0x0000 */ Actor actor; /* 0x014C */ SkelAnime skelAnime; - /* 0x0190 */ void (*actionFunc)(struct EnGirlA*, GlobalContext*); + /* 0x0190 */ EnGirlAActionFunc actionFunc; /* 0x0194 */ s8 unk_194; /* 0x0195 */ s8 unk_195; /* 0x0196 */ s16 unk_196; - /* 0x0198 */ void (*unk_198)(struct EnGirlA*, GlobalContext*); + /* 0x0198 */ EnGirlAActionFunc unk_198; /* 0x019C */ s32 unk_19C; /* 0x01A0 */ s16 unk_1A0; /* 0x01A2 */ s16 unk_1A2; /* 0x01A4 */ s32 unk_1A4; /* 0x01A8 */ s16 unk_1A8; /* 0x01AA */ s16 unk_1AA; - /* 0x01AC */ void (*unk_1AC)(GlobalContext*, struct EnGirlA*); - /* 0x01B0 */ void (*unk_1B0)(GlobalContext*, struct EnGirlA*); + /* 0x01AC */ EnGirlA2Func unk_1AC; + /* 0x01B0 */ EnGirlA2Func unk_1B0; /* 0x01B4 */ s16 unk_1B4; /* 0x01B6 */ s16 unk_1B6; /* 0x01B8 */ s16 unk_1B8; @@ -33,7 +37,7 @@ typedef struct EnGirlA { /* 0x01CA */ s16 unk_1CA; /* 0x01CC */ s16 unk_1CC; /* 0x01CE */ s16 unk_1CE; - /* 0x01D0 */ void (*unk_1D0)(Actor*, GlobalContext*, s32); + /* 0x01D0 */ EnGirlA3Func unk_1D0; } EnGirlA; // size = 0x01D4 extern const ActorInit En_Girla_InitVars;