diff --git a/config/GMPE01_00/rels/w06Dll/symbols.txt b/config/GMPE01_00/rels/w06Dll/symbols.txt index 6cea2169..d4839302 100644 --- a/config/GMPE01_00/rels/w06Dll/symbols.txt +++ b/config/GMPE01_00/rels/w06Dll/symbols.txt @@ -3,14 +3,14 @@ _prolog = .text:0x00000030; // type:function size:0x64 scope:global _epilog = .text:0x00000094; // type:function size:0x4C scope:global BoardCreate = .text:0x000000E0; // type:function size:0x4C4 BoardDestroy = .text:0x000005A4; // type:function size:0x18C -fn_1_730 = .text:0x00000730; // type:function size:0x6C -fn_1_79C = .text:0x0000079C; // type:function size:0x20 -fn_1_7BC = .text:0x000007BC; // type:function size:0x144 -fn_1_900 = .text:0x00000900; // type:function size:0x84 -fn_1_984 = .text:0x00000984; // type:function size:0x3C -fn_1_9C0 = .text:0x000009C0; // type:function size:0x168 -fn_1_B28 = .text:0x00000B28; // type:function size:0x34 -fn_1_B5C = .text:0x00000B5C; // type:function size:0x214 +fn_1_730 = .text:0x00000730; // type:function size:0x6C scope:local +fn_1_79C = .text:0x0000079C; // type:function size:0x20 scope:local +fn_1_7BC = .text:0x000007BC; // type:function size:0x144 scope:local +fn_1_900 = .text:0x00000900; // type:function size:0x84 scope:local +fn_1_984 = .text:0x00000984; // type:function size:0x3C scope:local +fn_1_9C0 = .text:0x000009C0; // type:function size:0x168 scope:local +fn_1_B28 = .text:0x00000B28; // type:function size:0x34 scope:local +fn_1_B5C = .text:0x00000B5C; // type:function size:0x214 scope:local fn_1_D70 = .text:0x00000D70; // type:function size:0x1FC fn_1_F6C = .text:0x00000F6C; // type:function size:0xE8 fn_1_1054 = .text:0x00001054; // type:function size:0x90 @@ -121,16 +121,16 @@ fn_1_CC90 = .text:0x0000CC90; // type:function size:0x7C fn_1_CD0C = .text:0x0000CD0C; // type:function size:0x398 _ctors = .ctors:0x00000000; // type:label scope:global data:4byte _dtors = .dtors:0x00000000; // type:label scope:global data:4byte -lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 data:float -lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 data:float -lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 data:float -lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 data:float -lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 data:4byte -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 data:4byte -lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 data:float -lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 data:float -lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 data:float -lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 data:float +lbl_1_rodata_10 = .rodata:0x00000010; // type:object size:0x4 scope:local data:float +lbl_1_rodata_14 = .rodata:0x00000014; // type:object size:0x4 scope:local data:float +lbl_1_rodata_18 = .rodata:0x00000018; // type:object size:0x4 scope:local data:float +lbl_1_rodata_1C = .rodata:0x0000001C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_20 = .rodata:0x00000020; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x8 scope:local data:4byte +lbl_1_rodata_30 = .rodata:0x00000030; // type:object size:0x4 scope:local data:float +lbl_1_rodata_34 = .rodata:0x00000034; // type:object size:0x4 scope:local data:float +lbl_1_rodata_38 = .rodata:0x00000038; // type:object size:0x4 scope:local data:float +lbl_1_rodata_3C = .rodata:0x0000003C; // type:object size:0x4 scope:local data:float lbl_1_rodata_40 = .rodata:0x00000040; // type:object size:0x4 data:float lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 data:float lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 data:float @@ -268,14 +268,14 @@ lbl_1_rodata_2C4 = .rodata:0x000002C4; // type:object size:0x4 data:float lbl_1_rodata_2C8 = .rodata:0x000002C8; // type:object size:0x8 data:double lbl_1_rodata_2D0 = .rodata:0x000002D0; // type:object size:0x4 data:float lbl_1_rodata_2D4 = .rodata:0x000002D4; // type:object size:0x4 data:float -lbl_1_data_0 = .data:0x00000000; // type:object size:0xF0 -lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x2 data:2byte -lbl_1_data_F2 = .data:0x000000F2; // type:object size:0x2 data:2byte -lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x2 data:2byte -lbl_1_data_F6 = .data:0x000000F6; // type:object size:0x2 data:2byte -lbl_1_data_F8 = .data:0x000000F8; // type:object size:0x8 -lbl_1_data_100 = .data:0x00000100; // type:object size:0x8 -lbl_1_data_108 = .data:0x00000108; // type:object size:0xA0 +lbl_1_data_0 = .data:0x00000000; // type:object size:0xF0 scope:local +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x2 scope:local data:2byte +lbl_1_data_F2 = .data:0x000000F2; // type:object size:0x2 scope:local data:2byte +lbl_1_data_F4 = .data:0x000000F4; // type:object size:0x2 scope:local data:2byte +lbl_1_data_F6 = .data:0x000000F6; // type:object size:0x2 scope:local data:2byte +lbl_1_data_F8 = .data:0x000000F8; // type:object size:0x8 scope:local +lbl_1_data_100 = .data:0x00000100; // type:object size:0x8 scope:local +lbl_1_data_108 = .data:0x00000108; // type:object size:0xA0 scope:local lbl_1_data_1A8 = .data:0x000001A8; // type:object size:0x2 data:2byte lbl_1_data_1AA = .data:0x000001AA; // type:object size:0x1 data:byte lbl_1_data_1AD = .data:0x000001AD; // type:object size:0x3 @@ -333,8 +333,8 @@ lbl_1_data_510 = .data:0x00000510; // type:object size:0x20 lbl_1_data_530 = .data:0x00000530; // type:object size:0x6 data:string lbl_1_data_536 = .data:0x00000536; // type:object size:0xB data:string lbl_1_bss_0 = .bss:0x00000000; // type:object size:0x4 data:4byte -lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte -lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 data:4byte +lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 scope:local data:4byte +lbl_1_bss_8 = .bss:0x00000008; // type:object size:0x4 scope:local data:4byte lbl_1_bss_C = .bss:0x0000000C; // type:object size:0xC data:2byte lbl_1_bss_18 = .bss:0x00000018; // type:object size:0x4 data:4byte lbl_1_bss_1C = .bss:0x0000001C; // type:object size:0x1 data:byte diff --git a/config/GMPE01_00/rels/w10Dll/symbols.txt b/config/GMPE01_00/rels/w10Dll/symbols.txt index ef3391a9..b263cb2d 100644 --- a/config/GMPE01_00/rels/w10Dll/symbols.txt +++ b/config/GMPE01_00/rels/w10Dll/symbols.txt @@ -107,7 +107,7 @@ boardWork = .bss:0x00000000; // type:object size:0x4 data:4byte lbl_1_bss_4 = .bss:0x00000004; // type:object size:0x4 data:4byte motTbl = .bss:0x00000008; // type:object size:0x4 scope:local data:4byte tutorialDoneF = .bss:0x0000000C; // type:object size:0x2 data:2byte -w10ExitWin = .bss:0x0000000E; // type:object size:0x2 data:2byte +tutorialExitWin = .bss:0x0000000E; // type:object size:0x2 data:2byte lbl_1_bss_10 = .bss:0x00000010; // type:object size:0x8 data:2byte hostProc = .bss:0x00000018; // type:object size:0x4 scope:local data:4byte hostPos = .bss:0x0000001C; // type:object size:0x2 scope:local data:2byte diff --git a/configure.py b/configure.py index 6ca637cb..b134b594 100644 --- a/configure.py +++ b/configure.py @@ -1135,10 +1135,10 @@ config.libs = [ Object(NonMatching, "REL/w05Dll/mg_coin.c"), } ), - Rel('w05Dll', + Rel('w06Dll', objects = { Object(Matching, "REL/board_executor.c"), - Object(NonMatching, "REL/w06Dll/main.c"), + Object(Matching, "REL/w06Dll/main.c"), Object(NonMatching, "REL/w06Dll/mg_item.c"), Object(NonMatching, "REL/w06Dll/mg_coin.c"), Object(NonMatching, "REL/w06Dll/fire.c"), diff --git a/include/REL/w01Dll.h b/include/REL/w01Dll.h index c4b99ff0..f3e1e5d6 100755 --- a/include/REL/w01Dll.h +++ b/include/REL/w01Dll.h @@ -4,7 +4,7 @@ #include "dolphin/types.h" enum { - MAPOBJ_MAX = 33 + MAPOBJ_MAX = 33 }; typedef struct { diff --git a/include/REL/w06Dll.h b/include/REL/w06Dll.h new file mode 100755 index 00000000..ed13f799 --- /dev/null +++ b/include/REL/w06Dll.h @@ -0,0 +1,36 @@ +#ifndef REL_W06_H +#define REL_W06_H + +#include "dolphin/types.h" + +enum { + MAPOBJ_MAX = 6 +}; + +extern void fn_1_D70(void); +extern void fn_1_F6C(void); +extern void fn_1_1054(void); // return s32? + +extern void fn_1_4878(void); +extern void fn_1_4A10(void); +extern void fn_1_4A60(void); // return s32? + +extern void fn_1_6EF0(void); // return s32? + +extern void fn_1_7BB0(void); +extern void fn_1_7F3C(void); +extern void fn_1_8264(s32 arg0, s16 arg1); + +extern void fn_1_8F20(void); +extern void fn_1_91D8(void); +extern void fn_1_9294(s32 arg0, s32 arg1); +extern s32 fn_1_92D8(s32 arg0, s32 arg1); +extern void fn_1_C108(s32 arg0); +extern void fn_1_C2B4(void); +extern void fn_1_CC90(void); +extern void fn_1_CD0C(void); + +extern s16 lbl_1_bss_C[MAPOBJ_MAX]; +extern void *lbl_1_bss_0; + +#endif diff --git a/src/REL/w06Dll/main.c b/src/REL/w06Dll/main.c new file mode 100755 index 00000000..ed7eb0a7 --- /dev/null +++ b/src/REL/w06Dll/main.c @@ -0,0 +1,325 @@ +#include "REL/w06Dll.h" +#include "REL/board_executor.h" +#include "game/audio.h" +#include "game/data.h" +#include "game/flag.h" +#include "game/hsfman.h" +#include "game/object.h" +#include "game/process.h" +#include "game/board/boo_house.h" +#include "game/board/lottery.h" +#include "game/board/main.h" +#include "game/board/map_object.h" +#include "game/board/model.h" +#include "game/board/player.h" +#include "game/board/shop.h" +#include "game/board/space.h" +#include "game/board/star.h" + +#include "dolphin.h" + +typedef struct { + struct { + u8 unk00_field0 : 1; + }; + s8 unk01[10]; +} Bss8Work; + +typedef struct { + /* 0x00 */ s32 unk00; + /* 0x04 */ Vec unk04; +} Data108Struct; // Size 0x10 + +static void fn_1_730(void); +static void fn_1_79C(void); +static s32 fn_1_7BC(void); +static s32 fn_1_900(void); +static s32 fn_1_984(void); +static void fn_1_9C0(void); +static void fn_1_B28(void); +static void fn_1_B5C(omObjData *arg0); + +s16 lbl_1_bss_C[MAPOBJ_MAX]; + +static BoardMapObject lbl_1_data_0[MAPOBJ_MAX] = { + { { 450.0f, 200.0f, -2950.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 6) }, + { { -1650.0f, 0.0f, 2100.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 8) }, + { { 2700.0f, 100.0f, -1950.0f }, { 0.0f, -89.999985f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 5) }, + { { -3000.0f, 0.0f, 2550.0f }, { 0.0f, 89.999985f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_W06, 5) }, + { { -1800.0f, 0.0f, 2250.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 33) }, + { { 300.0f, 200.0f, -2850.0f }, { 0.0f, 0.0f, 0.0f }, { 1.0f, 1.0f, 1.0f }, DATA_MAKE_NUM(DATADIR_BGUEST, 33) } +}; + +static omObjData *lbl_1_bss_8; +static s32 lbl_1_bss_4; +void *lbl_1_bss_0; + +static s16 lbl_1_data_F0 = -1; +static s16 lbl_1_data_F2 = -1; +static s16 lbl_1_data_F4 = -1; +static s16 lbl_1_data_F6 = -1; + +static s32 lbl_1_data_F8[] = { + DATA_MAKE_NUM(DATADIR_W06, 18), + -1 +}; + +static s32 lbl_1_data_100[] = { + DATA_MAKE_NUM(DATADIR_BGUEST, 34), + -1 +}; + +static Data108Struct lbl_1_data_108[] = { + 0x00000002, { -3359.9998f, 170.0f, -3559.9998f }, + 0x0000002A, { 3540.0002f, 170.0f, 1320.0f }, + 0x00000052, { -710.0f, 170.0f, -4580.0f }, + 0x0000007A, { -3670.0f, 170.0f, 1020.0f }, + 0x000000A2, { 1970.0001f, 170.0f, -3840.0002f }, + 0x000000CA, { -3160.0f, 170.0f, -3770.0f }, + 0x000000F2, { -3500.0f, 170.0f, -2340.0f }, + 0x0000011A, { -3700.0f, 170.0f, -810.00005f }, + 0x00000142, { 100.0f, 170.0f, -4100.0f }, + 0x0000016A, { 3290.0002f, 170.0f, -340.0f } +}; + +void BoardCreate(void) { + BoardMapObject *temp_r30; + s32 *var_r29; + s32 i; + + lbl_1_bss_0 = GWSystem.board_data; + BoardSpaceInit(DATA_MAKE_NUM(DATADIR_W06, 0)); + lbl_1_data_F0 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 1), NULL, 0); + fn_8006DDE8(lbl_1_data_F0, -1.0f); + BoardModelMotionStart(lbl_1_data_F0, 0, 0x40000001); + lbl_1_data_F2 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 2), NULL, 0); + fn_8006DDE8(lbl_1_data_F2, -1.0f); + BoardModelPosSet(lbl_1_data_F2, 0.0f, 0.0f, 0.0f); + BoardModelMotionStart(lbl_1_data_F2, 0, 0x40000001); + lbl_1_data_F4 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 17), lbl_1_data_F8, 0); + BoardModelPosSet(lbl_1_data_F4, 0.0f, 0.0f, 0.0f); + BoardModelMotionStart(lbl_1_data_F4, 1, 0x40000001); + lbl_1_data_F6 = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BGUEST, 33), lbl_1_data_100, 0); + BoardModelPosSet(lbl_1_data_F6, 0.0f, 0.0f, 0.0f); + BoardModelMotionStart(lbl_1_data_F6, 1, 0x40000001); + for (i = 0; i < MAPOBJ_MAX; i++) { + temp_r30 = &lbl_1_data_0[i]; + if (temp_r30->data_num != -1) { + if (i == 4 || i == 5) { + var_r29 = lbl_1_data_100; + } else { + var_r29 = NULL; + } + lbl_1_bss_C[i] = BoardModelCreate(temp_r30->data_num, var_r29, 0); + BoardModelPosSetV(lbl_1_bss_C[i], &temp_r30->pos); + BoardModelRotSetV(lbl_1_bss_C[i], &temp_r30->rot); + BoardModelScaleSetV(lbl_1_bss_C[i], &temp_r30->scale); + BoardModelVisibilitySet(lbl_1_bss_C[i], 1); + } + } + BoardModelMotionStart(lbl_1_bss_C[4], 1, 0x40000001); + BoardModelMotionStart(lbl_1_bss_C[5], 1, 0x40000001); + BoardModelMotionStart(lbl_1_bss_C[2], 0, 0); + BoardModelMotionSpeedSet(lbl_1_bss_C[2], 0.0f); + BoardModelLayerSet(lbl_1_bss_C[2], 1); + BoardModelMotionStart(lbl_1_bss_C[3], 0, 0); + BoardModelMotionSpeedSet(lbl_1_bss_C[3], 0.0f); + BoardModelLayerSet(lbl_1_bss_C[3], 1); + fn_1_D70(); + fn_1_4878(); + fn_1_7BB0(); + fn_1_8F20(); + BoardLightHookSet(fn_1_730, fn_1_79C); + BoardSpaceWalkEventFuncSet(fn_1_7BC); + BoardSpaceWalkMiniEventFuncSet(fn_1_900); + BoardSpaceLandEventFuncSet(fn_1_984); + BoardStarHostSet(lbl_1_data_F4); + BoardBooHouseHostSet(lbl_1_data_F6); + BoardLotteryHostSet(lbl_1_data_F6); + BoardShopHostSet(lbl_1_data_F6); + BoardJunctionMaskSet(0x3000); + boardTurnFunc = fn_1_C2B4; + boardStarShowNextHook = fn_1_CD0C; + boardTurnStartFunc = fn_1_9294; + boardStarGiveHook = fn_1_CC90; + boardBowserHook = fn_1_C108; + fn_1_9C0(); +} + +void BoardDestroy(void) { + s32 i; + + fn_1_B28(); + boardTurnFunc + = (void*) boardStarShowNextHook + = (void*) boardTurnStartFunc + = (void*) boardStarGiveHook + = (void*) boardBowserHook = NULL; + fn_1_91D8(); + fn_1_7F3C(); + fn_1_F6C(); + fn_1_4A10(); + for (i = 0; i < MAPOBJ_MAX; i++) { + BoardModelKill(lbl_1_bss_C[i]); + lbl_1_bss_C[i] = -1; + } + if (lbl_1_data_F6 != -1) { + BoardModelKill(lbl_1_data_F6); + lbl_1_data_F6 = -1; + } + if (lbl_1_data_F4 != -1) { + BoardModelKill(lbl_1_data_F4); + lbl_1_data_F4 = -1; + } + if (lbl_1_data_F0 != -1) { + BoardModelKill(lbl_1_data_F0); + lbl_1_data_F0 = -1; + } + if (lbl_1_data_F2 != -1) { + BoardModelKill(lbl_1_data_F2); + lbl_1_data_F2 = -1; + } +} + +static void fn_1_730(void) { + s16 var_r31; + + var_r31 = BoardModelIDGet(lbl_1_data_F0); + Hu3DModelLightInfoSet(var_r31, 1); + Hu3DFogSet(4200.0f, 30000.0f, 0xF8, 0x30, 0); +} + +static void fn_1_79C(void) { + Hu3DFogClear(); +} + +static s32 fn_1_7BC(void) { + s32 sp10[] = { 0, 1 }; + s32 sp8[] = { 0x300, 0xC0 }; + BoardSpace *temp_r31; + s16 temp_r28; + s32 temp_r27; + s32 i; + s32 j; + + temp_r27 = GWSystem.player_curr; + temp_r28 = GWPlayer[temp_r27].space_curr; + if (fn_1_92D8(temp_r27, temp_r28) != 0) { + return 1; + } + for (i = 0; i < 2; i++) { + if (BoardSpaceLinkFlagSearch(0, temp_r28, sp8[i]) == -1) { + continue; + } + temp_r31 = BoardSpaceGet(0, temp_r28); + for (j = 0; j < temp_r31->link_cnt; j++) { + if ((BoardSpaceFlagGet(0, temp_r31->link[j]) & 0x04000000) == 0) { + fn_1_8264(sp10[i], temp_r31->link[j]); + return 1; + } + } + } + return 0; +} + +static s32 fn_1_900(void) { + s16 var_r30; + s32 temp_r31; + + var_r30 = GWPlayer[GWSystem.player_curr].space_curr; + temp_r31 = BoardSpaceFlagGet(0, var_r30) & 0x600000; + if (temp_r31 == 0x200000) { + fn_1_1054(); // TODO: return? + } else if (temp_r31 == 0x400000) { + fn_1_4A60(); // TODO: return? + } +} + +static s32 fn_1_984(void) { + if (BoardPlayerSizeGet(GWSystem.player_curr) != 2) { + fn_1_6EF0(); // TODO: return? + } +} + +static void fn_1_9C0(void) { + Vec sp14; + Vec sp8; + omObjData *temp_r3; + Bss8Work *temp_r30; + s32 i; + + temp_r3 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_B5C); + lbl_1_bss_8 = temp_r3; + temp_r30 = OM_GET_WORK_PTR(temp_r3, Bss8Work); + temp_r30->unk00_field0 = 0; + BoardCameraPosGet(&sp14); + BoardCameraDirGet(&sp8); + HuAudFXListnerSetEX(&sp14, &sp8, 6600.0f, 36000.0f, 0.0f, 1650.0f, 1650.0f); + for (i = 0; i < 10; i++) { + temp_r30->unk01[i] = 0; + } + if (!_CheckFlag(0x10010)) { + if (lbl_1_bss_4 == 0) { + HuAudFXPauseAll(1); + lbl_1_bss_4 = 1; + } + } else if (lbl_1_bss_4 != 0) { + HuAudFXPauseAll(0); + lbl_1_bss_4 = 0; + } +} + +static void fn_1_B28(void) { + if (lbl_1_bss_8) { + OM_GET_WORK_PTR(lbl_1_bss_8, Bss8Work)->unk00_field0 = 1; + } +} + +static void fn_1_B5C(omObjData *arg0) { + Bss8Work *temp_r30; + Vec sp14; + Vec sp8; + s16 temp_r28; + s16 var_r29; + s16 i; + + temp_r30 = OM_GET_WORK_PTR(arg0, Bss8Work); + if (temp_r30->unk00_field0 != 0 || BoardIsKill()) { + HuAudFXListnerKill(); + lbl_1_bss_8 = NULL; + omDelObjEx(HuPrcCurrentGet(), arg0); + return; + } + temp_r28 = BoardModelMotionTimeGet(lbl_1_data_F0); + BoardCameraDirGet(&sp8); + BoardCameraTargetGet(&sp14); + sp14.y += 2000.0f; + if (!_CheckFlag(0x10010)) { + if (lbl_1_bss_4 == 0) { + HuAudFXPauseAll(1); + lbl_1_bss_4 = 1; + } + } else if (lbl_1_bss_4 != 0) { + HuAudFXPauseAll(0); + lbl_1_bss_4 = 0; + } + if (!_CheckFlag(0x1001C)) { + for (var_r29 = i = 0; i < 10; i++) { + if (temp_r30->unk01[i] != 0) { + var_r29++; + } else if (temp_r28 == lbl_1_data_108[i].unk00) { + HuAudFXEmiterPlay(0x4A1, &lbl_1_data_108[i].unk04); + temp_r30->unk01[i] = 1; + goto block_20; + } + } + if (var_r29 < 10) { + return; + } + for (i = 0; i < 10; i++) { + temp_r30->unk01[i] = 0; + } + } +block_20: + HuAudFXListnerUpdate(&sp14, &sp8); +}