diff --git a/include/functions.h b/include/functions.h index d27a7800..d971ff3b 100644 --- a/include/functions.h +++ b/include/functions.h @@ -856,7 +856,7 @@ void func_EF0260_8018AAC4(void); // void func_i1_80193540(Object*); // void func_i1_80194398(Object*); // void func_i1_801985E4(Object*); -// void func_i1_80198968(Object*); +void func_i1_80198968(Item*); // void func_i2_8018756C(Object*); // void func_i2_80187650(Object*); // void func_i2_801877C4(Object*); diff --git a/src/main/fox_edata_1C.c b/src/main/fox_edata_1C.c index 1501ec11..ba3634c4 100644 --- a/src/main/fox_edata_1C.c +++ b/src/main/fox_edata_1C.c @@ -70,7 +70,7 @@ void func_80194398(Object*); // func_i1_801985E4 void func_801985E4(Object*); // func_i1_80198968 -void func_80198968(Object*); +void func_80198968(Item*); // func_i2_8018756C void func_8018756C(Object*); diff --git a/src/main/fox_effect.c b/src/main/fox_effect.c index 5591c98e..d0333387 100644 --- a/src/main/fox_effect.c +++ b/src/main/fox_effect.c @@ -4172,12 +4172,6 @@ void func_80083D2C(f32 posX, f32 posY, f32 posZ, f32 srcZ) { } } -// RGB Values. Used like an array of [8][3], but only matches this way. -s32 D_800D18F0[24] = { 32, 32, 255, 0, 255, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 255, 0, 255, 0 }; - -// Alpha values -s32 D_800D1950[] = { 255, 210, 180, 120, 70, 30, 0, 0 }; - void func_80083FA8(Effect* effect) { Vec3f src; Vec3f dest; @@ -4220,6 +4214,12 @@ void func_80083FA8(Effect* effect) { func_8007A774(gPlayer, effect, 100.0f); } +// RGB Values. Used like an array of [8][3], but only matches this way. +s32 D_800D18F0[24] = { 32, 32, 255, 0, 255, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, 0, 0, 255, 255, 0, 255, 0, 255, 0 }; + +// Alpha values +s32 D_800D1950[] = { 255, 210, 180, 120, 70, 30, 0, 0 }; + void func_80084194(Effect* effect) { s32 tmp; diff --git a/src/overlays/ovl_i1/E05620.c b/src/overlays/ovl_i1/E05620.c index f0c34811..e7794092 100644 --- a/src/overlays/ovl_i1/E05620.c +++ b/src/overlays/ovl_i1/E05620.c @@ -1,7 +1,58 @@ -#include "common.h" +#include "global.h" -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i1/E05620/func_i1_801988E0.s") +void func_i1_801988E0(void) { + if (D_80177E80 != 0) { + RCP_SetupDL(&gMasterDisp, 0x53); + gDPSetPrimColor(gMasterDisp++, 0, 0, 255, 255, 255, 255); + func_800869A0(250.0f, 50.0f, D_80177E80, 1.0f, 0, 999); + } +} -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i1/E05620/func_i1_80198968.s") +void func_i1_80198968(Item* item) { + f32 var_fv0; -#pragma GLOBAL_ASM("asm/us/nonmatchings/overlays/ovl_i1/E05620/D_i1_8019B640.s") + switch (item->unk_46) { + case 0: + item->obj.rot.z += 1.0f; + Math_SmoothStepToF(&item->scale, 1.0f, 1.0f, 0.05f, 0.0f); + if ((item->unk_44 == 0) && (gPlayer->unk_4DC == 0)) { + if (item->obj.rot.y == 0.0f) { + var_fv0 = 550.0f; + } else { + var_fv0 = 1000.0f; + } + if (item->obj.pos.z > (gPlayer->unk_138 + var_fv0)) { + item->unk_44 = 1; + PRINTF("♪:リング未通過音\n"); // Ring not passed sound + Audio_PlaySfx(0x4900402F, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_80177E80 = 0; + } + } + if (item->unk_4C != 0) { + item->unk_46 = 1; + item->timer_48 = 50; + item->info.unk_10 = 10000.0f; + PRINTF("♪:リング通過音\n"); // Ring passing sound + Audio_PlaySfx(0x49008025, &D_800C5D28, 4, &D_800C5D34, &D_800C5D34, &D_800C5D3C); + D_80177E80++; + if ((item->obj.rot.x != 0.0f) && (D_80177E80 >= 100)) { + func_800BA808(gMsg_ID_20330, RCID_ROB64); + } + } + break; + case 1: + item->obj.pos.x += ((gPlayer[item->unk_4E].pos.x - item->obj.pos.x) * 0.05f); + item->obj.pos.y += ((gPlayer[item->unk_4E].pos.y - item->obj.pos.y) * 0.05f); + if (gPlayer->unk_238 != 0) { + item->obj.pos.z += ((gPlayer[item->unk_4E].unk_138 - 300.0f) - item->obj.pos.z) * 0.05f; + } else { + item->obj.pos.z += ((gPlayer[item->unk_4E].unk_138 - item->obj.pos.z) * 0.05f); + } + item->obj.rot.z += 22.0f; + Math_SmoothStepToAngle(&item->obj.rot.y, Math_RadToDeg(-gPlayer[item->unk_4E].unk_058), 0.2f, 10.0f, 0.0f); + if (item->timer_48 == 0) { + Object_Kill(&item->obj, &item->sfxPos); + } + break; + } +}