complete w05Dll/mg_item.c

This commit is contained in:
CreateSource 2024-04-24 10:30:52 -04:00
parent c66a4d8669
commit 74e1c14c39
3 changed files with 853 additions and 50 deletions

View file

@ -171,48 +171,48 @@ lbl_1_rodata_190 = .rodata:0x00000190; // type:object size:0x8 scope:local data:
lbl_1_rodata_198 = .rodata:0x00000198; // type:object size:0x8 scope:local data:4byte
lbl_1_rodata_1A0 = .rodata:0x000001A0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1A4 = .rodata:0x000001A4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 data:float
lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 data:float
lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 data:float
lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 data:float
lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 data:float
lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 data:float
lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 data:float
lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 data:float
lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 data:float
lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 data:float
lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 data:float
lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 data:float
lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 data:float
lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 data:double
lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 data:double
lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 data:float
lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 data:float
lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 data:float
lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 data:float
lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 data:float
lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 data:float
lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 data:double
lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 data:float
lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 data:float
lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 data:float
lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 data:float
lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 data:float
lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 data:double
lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 data:float
lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 data:float
lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 data:float
lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 data:float
lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 data:float
lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 data:float
lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 data:float
lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 data:float
lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 data:float
lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 data:float
lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 data:float
lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 data:float
lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 data:float
lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 data:float
lbl_1_rodata_1A8 = .rodata:0x000001A8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1AC = .rodata:0x000001AC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1B0 = .rodata:0x000001B0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1B4 = .rodata:0x000001B4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1B8 = .rodata:0x000001B8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1BC = .rodata:0x000001BC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C0 = .rodata:0x000001C0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C4 = .rodata:0x000001C4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1C8 = .rodata:0x000001C8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1CC = .rodata:0x000001CC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1D0 = .rodata:0x000001D0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1D4 = .rodata:0x000001D4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1D8 = .rodata:0x000001D8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1E0 = .rodata:0x000001E0; // type:object size:0x8 scope:local data:double
lbl_1_rodata_1E8 = .rodata:0x000001E8; // type:object size:0x8 scope:local data:double
lbl_1_rodata_1F0 = .rodata:0x000001F0; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1F4 = .rodata:0x000001F4; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1F8 = .rodata:0x000001F8; // type:object size:0x4 scope:local data:float
lbl_1_rodata_1FC = .rodata:0x000001FC; // type:object size:0x4 scope:local data:float
lbl_1_rodata_200 = .rodata:0x00000200; // type:object size:0x4 scope:local data:float
lbl_1_rodata_204 = .rodata:0x00000204; // type:object size:0x4 scope:local data:float
lbl_1_rodata_208 = .rodata:0x00000208; // type:object size:0x8 scope:local data:double
lbl_1_rodata_210 = .rodata:0x00000210; // type:object size:0x4 scope:local data:float
lbl_1_rodata_214 = .rodata:0x00000214; // type:object size:0x4 scope:local data:float
lbl_1_rodata_218 = .rodata:0x00000218; // type:object size:0x4 scope:local data:float
lbl_1_rodata_21C = .rodata:0x0000021C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_220 = .rodata:0x00000220; // type:object size:0x4 scope:local data:float
lbl_1_rodata_228 = .rodata:0x00000228; // type:object size:0x8 scope:local data:double
lbl_1_rodata_230 = .rodata:0x00000230; // type:object size:0x4 scope:local data:float
lbl_1_rodata_234 = .rodata:0x00000234; // type:object size:0x4 scope:local data:float
lbl_1_rodata_238 = .rodata:0x00000238; // type:object size:0x4 scope:local data:float
lbl_1_rodata_23C = .rodata:0x0000023C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_240 = .rodata:0x00000240; // type:object size:0x4 scope:local data:float
lbl_1_rodata_244 = .rodata:0x00000244; // type:object size:0x4 scope:local data:float
lbl_1_rodata_248 = .rodata:0x00000248; // type:object size:0x4 scope:local data:float
lbl_1_rodata_24C = .rodata:0x0000024C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_250 = .rodata:0x00000250; // type:object size:0x4 scope:local data:float
lbl_1_rodata_254 = .rodata:0x00000254; // type:object size:0x4 scope:local data:float
lbl_1_rodata_258 = .rodata:0x00000258; // type:object size:0x4 scope:local data:float
lbl_1_rodata_25C = .rodata:0x0000025C; // type:object size:0x4 scope:local data:float
lbl_1_rodata_260 = .rodata:0x00000260; // type:object size:0x4 scope:local data:float
lbl_1_rodata_264 = .rodata:0x00000264; // type:object size:0x4 scope:local data:float
lbl_1_rodata_268 = .rodata:0x00000268; // type:object size:0x4 data:float
lbl_1_rodata_26C = .rodata:0x0000026C; // type:object size:0x4 data:float
lbl_1_rodata_270 = .rodata:0x00000270; // type:object size:0x4 data:float
@ -285,12 +285,12 @@ lbl_1_data_2A4 = .data:0x000002A4; // type:object size:0x48
lbl_1_data_2EC = .data:0x000002EC; // type:object size:0x8
lbl_1_data_2F4 = .data:0x000002F4; // type:object size:0x18
lbl_1_data_310 = .data:0x00000310; // type:object size:0x8
lbl_1_data_318 = .data:0x00000318; // type:object size:0x7 data:string
lbl_1_data_31F = .data:0x0000031F; // type:object size:0x7 data:string
lbl_1_data_326 = .data:0x00000326; // type:object size:0xA
lbl_1_data_318 = .data:0x00000318; // type:object size:0x7 scope:local data:string
lbl_1_data_31F = .data:0x0000031F; // type:object size:0x7 scope:local data:string
lbl_1_data_326 = .data:0x00000326; // type:object size:0xA scope:local data:string
lbl_1_data_330 = .data:0x00000330; // type:object size:0xC
lbl_1_data_33C = .data:0x0000033C; // type:object size:0x7 data:string
lbl_1_data_343 = .data:0x00000343; // type:object size:0xD data:string
lbl_1_data_33C = .data:0x0000033C; // type:object size:0x7 scope:local data:string
lbl_1_data_343 = .data:0x00000343; // type:object size:0xD scope:local data:string
lbl_1_data_350 = .data:0x00000350; // type:object size:0x38
lbl_1_data_388 = .data:0x00000388; // type:object size:0xB8
lbl_1_data_440 = .data:0x00000440; // type:object size:0xC
@ -335,7 +335,7 @@ lbl_1_bss_90 = .bss:0x00000090; // type:object size:0x4 data:4byte
lbl_1_bss_94 = .bss:0x00000094; // type:object size:0x4 data:4byte
lbl_1_bss_98 = .bss:0x00000098; // type:object size:0x4 data:4byte
lbl_1_bss_9C = .bss:0x0000009C; // type:object size:0x2 data:2byte
lbl_1_bss_9E = .bss:0x0000009E; // type:object size:0x2 data:2byte
lbl_1_bss_9E = .bss:0x0000009E; // type:object size:0x4 data:2byte
lbl_1_bss_A2 = .bss:0x000000A2; // type:object size:0x2 data:2byte
lbl_1_bss_A4 = .bss:0x000000A4; // type:object size:0x6
lbl_1_bss_AA = .bss:0x000000AA; // type:object size:0x6

View file

@ -1414,7 +1414,7 @@ config.libs = [
Object(Matching, "REL/w05Dll/hotel.c"),
Object(Matching, "REL/w05Dll/monkey.c"),
Object(Matching, "REL/w05Dll/dolphin.c"),
Object(NonMatching, "REL/w05Dll/mg_item.c"),
Object(Matching, "REL/w05Dll/mg_item.c"),
Object(NonMatching, "REL/w05Dll/mg_coin.c"),
}
),

View file

@ -5,6 +5,7 @@
#include "game/objsub.h"
#include "game/frand.h"
#include "game/chrman.h"
#include "game/pad.h"
#include "game/minigame_seq.h"
#include "game/board/model.h"
@ -12,5 +13,807 @@
#include "game/board/window.h"
#include "game/board/audio.h"
typedef struct UnkStruct {
s16 unk_00;
s16 unk_02;
s16 unk_04;
s16 unk_06;
s16 unk_08;
s16 unk_0A[3];
s16 unk_10;
s16 unk_12;
} unkStruct;
// data
s32 lbl_1_data_310[2] = { 0x79, 0x7A };
char *lbl_1_data_330[3] = { "suika1", "suika2", "suika3" };
char *lbl_1_data_330[3] = { "suika1", "suika2", "suika3" };
// bss
s16 lbl_1_bss_B6;
s16 lbl_1_bss_B0[3];
s16 lbl_1_bss_AA[3];
s16 lbl_1_bss_A4[3];
s16 lbl_1_bss_A2;
s16 lbl_1_bss_9E[2];
s16 lbl_1_bss_9C;
Process* lbl_1_bss_98;
omObjData* lbl_1_bss_94;
omObjData* lbl_1_bss_90;
omObjData* lbl_1_bss_8C;
s32 lbl_1_bss_88;
s32 lbl_1_bss_7C[3];
AnimData* lbl_1_bss_78;
// prototypes
void fn_1_7284(omObjData*);
void fn_1_7314(void);
void fn_1_73C0(void);
void fn_1_77B0(void);
void fn_1_78A0(omObjData*);
void fn_1_799C(void);
void fn_1_7E4C(omObjData*);
void fn_1_7F04(omObjData*);
void fn_1_80D8(omObjData*);
void fn_1_8410(omObjData*);
void fn_1_850C(omObjData*);
void fn_1_8668(omObjData*);
void fn_1_8798(unkStruct*, s32*, s32*, s32*);
void fn_1_88B8(void);
void fn_1_896C(void);
void fn_1_91DC(void);
void fn_1_9268(ModelData*, ParticleData*, f32[3][4]);
void fn_1_6B28(void) {
BoardModelAttrSet(*lbl_1_bss_14, 0x40000002U);
lbl_1_bss_98 = NULL;
lbl_1_bss_78 = NULL;
}
void fn_1_6B7C(void) {
Vec sp1C;
Vec sp10;
s32 spC;
s32 var_r31;
lbl_1_bss_B6 = GWSystem.player_curr;
spC = GWPlayer[lbl_1_bss_B6].character;
for (var_r31 = 0; var_r31 < 2; var_r31++) {
lbl_1_bss_9E[var_r31] = BoardPlayerMotionCreate(lbl_1_bss_B6, lbl_1_data_310[var_r31] | lbl_1_data_124[GWPlayer[lbl_1_bss_B6].character]);
}
lbl_1_bss_A2 = BoardModelCreate(0x790013, NULL, 0);
BoardModelVisibilitySet(lbl_1_bss_A2, 0);
sp1C.x = sp1C.y = sp1C.z = 3.33333f;
BoardModelScaleSetV(lbl_1_bss_A2, &sp1C);
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[0]), "chara1", &sp1C);
BoardPlayerPosGet(lbl_1_bss_B6, &sp10);
BoardPlayerPosLerpStart(lbl_1_bss_B6, &sp10, &sp1C, 0x1E);
while (GWPlayer[lbl_1_bss_B6].moving != 0) {
HuPrcVSleep();
}
BoardPlayerMotBlendSet(lbl_1_bss_B6, 0, 0xF);
while (BoardPlayerMotBlendCheck(lbl_1_bss_B6) == 0) {
HuPrcVSleep();
}
HuPrcSleep(0x3C);
BoardAudSeqPause(0, 1, 0x3E8);
HuAudFXPlay(0x30D);
fn_1_88B8();
HuAudFXPlay(0x491);
omVibrate(lbl_1_bss_B6, 0x7FFF, 6, 6);
BoardModelHookSet(lbl_1_bss_14[0], "chara1", BoardPlayerModelGet(lbl_1_bss_B6));
BoardModelMotionStartEndSet(lbl_1_bss_14[0], 0x1E, 0x5A);
BoardModelAttrReset(lbl_1_bss_14[0], 0x40000002);
BoardMusStart(1, 0x22, 0x7F, 0);
BoardPlayerMotionShiftSet(lbl_1_bss_B6, lbl_1_bss_9E[0], 0.0f, 30.0f, 0x40000001);
HuPrcSleep(0x1E);
BoardModelVisibilitySet(lbl_1_bss_A2, 1);
BoardModelHookSet(BoardPlayerModelGet(lbl_1_bss_B6), "a-itemhook-r", lbl_1_bss_A2);
Hu3DModelObjPosGet(BoardModelIDGet(*lbl_1_bss_14), "chara1", &sp10);
Hu3DModelObjPosGet(BoardModelIDGet(BoardPlayerModelGet(lbl_1_bss_B6)), "a-itemhook-r", &sp1C);
PSVECAdd(&sp1C, &sp10, &sp1C);
sp1C.y += 25.0f;
CharModelLayerSetAll(7);
CharModelEffectCreate(-1, &sp1C);
HuPadRumbleStop(GWPlayer[lbl_1_bss_B6].port);
BoardModelAttrSet(lbl_1_bss_14[0], 0x40000002);
HuPrcSleep(0x1E);
BoardModelAttrReset(lbl_1_bss_14[0], 0x40000002);
omVibrate(lbl_1_bss_B6, 0x7FFF, 6, 6);
HuAudFXPlay(0x492);
while (BoardModelMotionTimeGet(lbl_1_bss_14[0]) < 90.0f) {
HuPrcVSleep();
}
BoardModelMotionTimeSet(lbl_1_bss_14[0], 90.0f);
HuPadRumbleStop(GWPlayer[lbl_1_bss_B6].port);
BoardModelHookReset(lbl_1_bss_14[0]);
for (var_r31 = 0; var_r31 < 3; var_r31++) {
BoardModelHookSet(lbl_1_bss_14[0], lbl_1_data_330[var_r31], lbl_1_bss_AA[var_r31]);
}
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[0]), "chara1", &sp10);
BoardPlayerPosSetV(lbl_1_bss_B6, &sp10);
HuPrcSleep(0x3C);
lbl_1_bss_94 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_7284);
lbl_1_bss_8C = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, fn_1_78A0);
lbl_1_bss_90 = omAddObjEx(boardObjMan, 0x101, 0, 0, -1, NULL);
lbl_1_bss_90->data = HuMemDirectMallocNum(HEAP_SYSTEM, 0x14, 0x10000000U);
if (lbl_1_bss_78 == NULL) {
lbl_1_bss_78 = HuSprAnimRead(HuDataSelHeapReadNum(0x120000, 0x10000000, HEAP_DATA));
HuSprAnimLock(lbl_1_bss_78);
}
lbl_1_bss_9C = 0;
}
void fn_1_7284(omObjData* arg0) {
if ((lbl_1_bss_9C != 0) && (BoardMGDoneFlagGet() == 1)) {
fn_1_77B0();
fn_1_7314();
fn_1_73C0();
omDelObjEx(boardObjMan, arg0);
}
}
void fn_1_72E4(void) {
lbl_1_bss_9C = 1;
BoardMGExit();
}
void fn_1_7314(void) {
s32 var_r31;
BoardModelHookReset(lbl_1_bss_14[0]);
for (var_r31 = 0; var_r31 < 3; var_r31++) {
BoardModelKill(lbl_1_bss_A4[var_r31]);
BoardModelKill(lbl_1_bss_AA[var_r31]);
}
if (lbl_1_bss_78 != 0) {
HuSprAnimKill(lbl_1_bss_78);
lbl_1_bss_78 = NULL;
}
}
void fn_1_73C0(void) {
omDelObjEx(boardObjMan, lbl_1_bss_90);
BoardMGDoneFlagSet(0);
}
void fn_1_7400(void) {
while (BoardModelMotionTimeGet(lbl_1_bss_14[0]) < 30.0f) {
HuPrcVSleep();
}
BoardModelAttrSet(lbl_1_bss_14[0], 0x40000002U);
BoardModelMotionTimeSet(lbl_1_bss_14[0], 30.0f);
lbl_1_bss_98 = HuPrcCreate(fn_1_896C, 0x2004, 0x1000, 0);
HuPrcDestructorSet2(lbl_1_bss_98, fn_1_91DC);
lbl_1_bss_98->user_data = (void* )7;
HuPrcEnd();
}
s32 lbl_1_data_350[14] = {
0x0007006D, 0x0007006E, 0x0007006F, 0x00070070,
0x00070071, 0x00070072, 0x00070073, 0x00070074,
0x00070076, 0x00070077, 0x00070078, 0x00070079,
0x0007007A, 0x0007007B
};
s16 lbl_1_data_388[92] = {
0, 1, -1, 2, 0, -1, 1, 2,
0, -1, 2, 1, 0, 2, -1, 1,
0, 2, 1, -1, 1, 2, -1, 0,
1, 2, 0, -1, 1, -1, 0, 2,
1, -1, 2, 0, 1, 0, 2, -1,
1, 0, -1, 2, 2, -1, 0, 1,
2, -1, 1, 0, 2, 0, 1, -1,
2, 0, -1, 1, 2, 1, -1, 0,
2, 1, 0, -1, -1, 0, 1, 2,
-1, 0, 2, 1, -1, 1, 2, 0,
-1, 1, 0, 2, -1, 2, 0, 1,
-1, 2, 1, 0
};
f32 lbl_1_data_440[3] = {-90.0f, 0.0f, 90.0f};
void fn_1_74D0(s16 arg0[3]) {
f32 temp_f31;
s32 var_r31;
for (var_r31 = 0; var_r31 < 3; var_r31++) {
lbl_1_bss_B0[var_r31] = arg0[var_r31];
}
for (var_r31 = 0; var_r31 < 3; var_r31++) {
lbl_1_bss_A4[var_r31] = BoardModelCreate(lbl_1_data_350[lbl_1_bss_B0[var_r31]], NULL, 0);
if (lbl_1_bss_B0[var_r31] == 0xB) {
BoardModelAttrSet(lbl_1_bss_A4[var_r31], 0x40000001U);
}
if (lbl_1_bss_B0[var_r31] == 5) {
temp_f31 = -50.0f;
Hu3DData[BoardModelIDGet(lbl_1_bss_A4[var_r31])].unk_F0[1][3] = temp_f31;
}
if (lbl_1_bss_B0[var_r31] == 4) {
BoardModelMotionSpeedSet(lbl_1_bss_A4[var_r31], 0.0f);
}
BoardModelVisibilitySet(lbl_1_bss_A4[var_r31], 0);
}
for (var_r31 = 0; var_r31 < 3; var_r31++) {
lbl_1_bss_AA[var_r31] = BoardModelCreate(0x790012, NULL, 1);
BoardModelHookSet(lbl_1_bss_14[0], lbl_1_data_330[var_r31], lbl_1_bss_AA[var_r31]);
BoardModelAttrSet(lbl_1_bss_AA[var_r31], 0x40000002);
BoardModelMotionTimeSet(lbl_1_bss_AA[var_r31], 10.0f);
}
HuAudFXPlay(0x488);
BoardModelMotionTimeSet(lbl_1_bss_14[0], 0.0f);
BoardModelMotionStartEndSet(lbl_1_bss_14[0], 0, 0x1E);
BoardModelAttrReset(lbl_1_bss_14[0], 0x40000002);
HuPrcCreate(fn_1_7400, 0x2004, 0x1000, 0);
}
void fn_1_77B0(void) {
HuAudFXPlay(0x489);
BoardModelMotionStartEndSet(lbl_1_bss_14[0], 0x5A, 0x78);
BoardModelMotionTimeSet(lbl_1_bss_14[0], 90.0f);
BoardModelAttrReset(lbl_1_bss_14[0], 0x40000002);
while (BoardModelMotionEndCheck(lbl_1_bss_14[0]) == 0) {
fn_1_1208(lbl_1_bss_14[6], 0.0f, 6.0f);
HuPrcVSleep();
}
while (fn_1_1208(lbl_1_bss_14[6], 0.0f, 6.0f) == 0) {
HuPrcVSleep();
}
}
void fn_1_78A0(omObjData* arg0) {
if (arg0->work[0] == 0) {
arg0->work[0] = MGSeqCreate(3, 0);
return;
}
if (MGSeqStatGet(arg0->work[0]) == 0) {
arg0->func = NULL;
lbl_1_bss_90->func = fn_1_7F04;
}
}
void fn_1_7928(omObjData* arg0) {
Process *temp;
if (((u32)lbl_1_bss_98->user_data & 0x10) != 0) {
temp = HuPrcCreate(fn_1_799C, 0x2004, 0x1800, 0);
temp->user_data = arg0;
arg0->func = NULL;
}
}
void fn_1_799C(void) {
Vec sp2C;
Vec sp20;
Vec sp14;
Vec sp8;
f32 temp_f29;
f32 temp_f30;
f32 var_f31;
s32 temp_r27;
s32 temp_r31;
s32 var_r28;
s32 var_r29;
omObjData* temp_r30;
temp_r30 = HuPrcCurrentGet()->user_data;
BoardPlayerPosGet(lbl_1_bss_B6, &sp2C);
temp_r31 = temp_r30->work[0];
BoardModelPosGet(lbl_1_bss_A4[temp_r31], &sp20);
sp2C.y = sp20.y = 0.0f;
PSVECSubtract(&sp2C, &sp20, &sp14);
temp_f30 = PSVECMag(&sp14);
PSVECScale(&sp14, &sp14, 0.016666668);
for (var_r29 = 0; var_r29 < 0x3C; var_r29++) {
BoardModelPosGet(lbl_1_bss_A4[temp_r31], &sp20);
PSVECAdd(&sp20, &sp14, &sp20);
BoardModelPosSetV(lbl_1_bss_A4[temp_r31], &sp20);
HuPrcVSleep();
}
BoardModelPosGet(lbl_1_bss_A4[temp_r31], &sp20);
sp20.x = sp2C.x;
sp20.z = sp2C.z;
BoardModelPosSetV(lbl_1_bss_A4[temp_r31], &sp20);
BoardPlayerMotBlendSet(lbl_1_bss_B6, 0, 0xF);
while (BoardPlayerMotBlendCheck(lbl_1_bss_B6) == 0) {
fn_1_1208(lbl_1_bss_14[6], 90.0f, 6.0f);
HuPrcVSleep();
}
while (fn_1_1208(lbl_1_bss_14[6], 90.0f, 6.0f) == 0) {
HuPrcVSleep();
}
BoardWinCreate(2, 0x27000C, 7);
BoardWinInsertMesSet(lbl_1_bss_B0[temp_r31] + 0x80000, 0);
BoardWinWait();
BoardWinKill();
HuPrcKill(lbl_1_bss_98);
lbl_1_bss_98 = NULL;
HuPrcVSleep();
HuAudFXPlay(0x30D);
BoardModelPosGet(lbl_1_bss_A4[temp_r31], &sp20);
BoardModelScaleGet(lbl_1_bss_A4[temp_r31], &sp8);
var_f31 = sp8.x;
temp_f29 = -0.075f;
temp_f30 = (sp2C.y - sp20.y) / 30.0f;
var_r28 = 0;
HuAudFXFadeOut(lbl_1_bss_88, 0x1F3);
while (var_r28 == 0) {
sp20.y += temp_f30;
var_f31 += temp_f29;
if (var_f31 < 0.0f) {
var_f31 = 0.0f;
var_r28 = 1;
}
sp8.x = sp8.y = sp8.z = var_f31;
BoardModelPosSetV(lbl_1_bss_A4[temp_r31], &sp20);
BoardModelScaleSetV(lbl_1_bss_A4[temp_r31], &sp8);
HuPrcVSleep();
}
HuAudFXStop(lbl_1_bss_88);
BoardModelVisibilitySet(lbl_1_bss_A4[temp_r31], 0);
BoardPlayerItemAdd(lbl_1_bss_B6, lbl_1_bss_B0[temp_r31]);
omVibrate(lbl_1_bss_B6, 0xC, 6, 6);
temp_r27 = HuAudSStreamPlay(2);
BoardPlayerMotionShiftSet(lbl_1_bss_B6, 7, 0.0f, 5.0f, 0);
while (BoardPlayerMotionEndCheck(lbl_1_bss_B6) == 0) {
HuPrcVSleep();
}
HuPrcSleep(0x1E);
while (HuAudSStreamStatGet(temp_r27) != 0) {
HuPrcVSleep();
}
BoardAudSeqPause(0, 0, 0x3E8);
BoardWinCreate(2, 0x27000D, 7);
BoardWinWait();
BoardWinKill();
temp_r30->func = &fn_1_7E4C;
HuPrcEnd();
}
void fn_1_7E4C(omObjData* arg0) {
lbl_1_bss_9C = 1;
BoardMGExit();
omDelObjEx(boardObjMan, arg0);
}
void fn_1_7E94(unkStruct* arg0) {
if (--arg0->unk_02 == 0) {
arg0->unk_02 = 0x3C;
if (--arg0->unk_00 >= 0) {
MGSeqParamSet(arg0->unk_04, 1, arg0->unk_00);
}
}
}
void fn_1_7F04(omObjData* arg0) {
f32 spC;
f32 sp8;
s32 var_r30;
s32 var_r28;
unkStruct* temp_r31;
temp_r31 = arg0->data;
temp_r31->unk_00 = 5;
temp_r31->unk_02 = 0x3C;
temp_r31->unk_04 = MGSeqCreate(1, temp_r31->unk_00, 0x120, 0x40);
HuWinMesMaxSizeGet(1, &sp8, 0x27000E);
temp_r31->unk_06 = HuWinCreate(-10000.0f, 344.0f, sp8, spC, 0);
HuWinMesSet(temp_r31->unk_06, 0x27000E);
HuWinBGTPLvlSet(temp_r31->unk_06, 0.0f);
HuWinMesSpeedSet(temp_r31->unk_06, 0);
temp_r31->unk_08 = 1;
for (var_r30 = 0; var_r30 < 3; var_r30++) {
temp_r31->unk_0A[var_r30] = -1;
}
for (var_r30 = 0; var_r30 < 2; var_r30++) {
do {
var_r28 = frandmod(3);
} while (temp_r31->unk_0A[var_r28] != -1);
temp_r31->unk_0A[var_r28] = var_r30;
}
for (var_r30 = 0; var_r30 < 3; var_r30++) {
if (temp_r31->unk_0A[var_r30] == -1) {
temp_r31->unk_0A[var_r30] = 2;
}
}
temp_r31->unk_12 = frandmod(5);
temp_r31->unk_10 = (frandmod(0x1E) + 0xF);
arg0->func = fn_1_80D8;
}
void fn_1_80D8(omObjData* arg0) {
s32 sp10;
s32 spC;
s32 sp8;
f32 var_f31;
s32 temp_r30;
s32 var_r29;
unkStruct* temp_r31;
temp_r31 = arg0->data;
fn_1_7E94(temp_r31);
temp_r30 = GWPlayer[lbl_1_bss_B6].port;
if (GWPlayer[lbl_1_bss_B6].com != 0) {
fn_1_8798(temp_r31, &sp10, &spC, &sp8);
} else {
sp10 = HuPadStkX[temp_r30];
spC = HuPadStkY[temp_r30];
sp8 = HuPadBtnDown[temp_r30];
}
if (((sp8 & 0x100) != 0) || (temp_r31->unk_00 < 0)) {
MGSeqParamSet(temp_r31->unk_04, 2, -1);
HuWinKill(temp_r31->unk_06);
BoardPlayerMotionStart(lbl_1_bss_B6, lbl_1_bss_9E[1], 0);
arg0->func = fn_1_8410;
return;
}
if ((spC != 0) || (sp10 != 0)) {
var_r29 = -1;
var_f31 = (180.0 * (atan2(spC, sp10) / M_PI));
if (var_f31 < 0.0f) {
var_f31 += 360.0f;
}
if ((var_f31 > 170.0f) && (var_f31 < 190.0f)) {
var_r29 = 0;
} else if ((var_f31 > 260.0f) && (var_f31 < 280.0f)) {
var_r29 = 1;
} else if ((var_f31 < 10.0f) || (var_f31 > 350.0f)) {
var_r29 = 2;
}
if (var_r29 != -1) {
temp_r31->unk_08 = temp_r31->unk_0A[var_r29];
BoardPlayerRotYSet(lbl_1_bss_B6, lbl_1_data_440[temp_r31->unk_08]);
}
}
}
void fn_1_8410(omObjData* arg0) {
s32 temp_r30;
unkStruct* temp_r31;
temp_r31 = arg0->data;
if (BoardPlayerMotionTimeGet(lbl_1_bss_B6) >= 30.0f) {
BoardAudSeqFadeOut(1, 0x64);
HuAudFXPlay(0x486);
HuAudFXPlay(0x487);
temp_r30 = (1 << temp_r31->unk_08);
temp_r30 |= 0x1C0;
lbl_1_bss_98 = HuPrcCreate(fn_1_896C, 0x2004, 0x4000, 0);
HuPrcDestructorSet2(lbl_1_bss_98, fn_1_91DC);
lbl_1_bss_98->user_data = (void*)temp_r30;
lbl_1_bss_8C->work[0] = temp_r31->unk_08;
arg0->func = fn_1_850C;
}
}
void fn_1_850C(omObjData* arg0) {
Vec sp14;
Vec sp8;
f32 temp_f31;
temp_f31 = BoardPlayerMotionMaxTimeGet(lbl_1_bss_B6);
if (BoardPlayerMotionTimeGet(lbl_1_bss_B6) >= temp_f31) {
BoardPlayerMotionStart(lbl_1_bss_B6, lbl_1_bss_9E[0], 0x40000001);
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[0]), "chara1", &sp8);
Hu3DModelObjPosGet(BoardModelIDGet(BoardPlayerModelGet(lbl_1_bss_B6)), "a-itemhook-r", &sp14);
PSVECAdd(&sp14, &sp8, &sp14);
sp14.y += 25.0f;
CharModelLayerSetAll(7);
CharModelEffectCreate(-1, &sp14);
arg0->work[0] = 0xA;
arg0->func = fn_1_8668;
}
}
void fn_1_8668(omObjData* arg0) {
s32 var_r30;
if (arg0->work[0] == 0) {
BoardModelHookReset(BoardPlayerModelGet(lbl_1_bss_B6));
BoardPlayerMotionShiftSet(lbl_1_bss_B6, 1, 0.0f, 5.0f, 0x40000001);
arg0->func = NULL;
lbl_1_bss_8C->func = fn_1_7928;
BoardModelKill(lbl_1_bss_A2);
for (var_r30 = 0; var_r30 < 2; var_r30++) {
BoardPlayerMotionKill(lbl_1_bss_B6, lbl_1_bss_9E[var_r30]);
}
return;
}
arg0->work[0] -= 1;
}
void fn_1_8798(unkStruct* arg0, s32* arg1, s32* arg2, s32* arg3) {
*arg1 = *arg2 = *arg3 = 0;
if (arg0->unk_10 != 0) {
arg0->unk_10 -= 1;
return;
}
arg0->unk_10 = frandmod(0xF) + 10;
if (arg0->unk_12 == 0) {
*arg3 = 0x100;
return;
}
arg0->unk_12 -= 1;
if (((s32)frand() & 1) != 0) {
*arg1 = ((frand() & 1) * 0x8C) - 0x46;
return;
}
*arg2 = ((frand() & 1) * 0x8C) - 0x46;
}
void* fn_1_8884(void) {
if (lbl_1_bss_98 == NULL) {
return NULL;
}
return lbl_1_bss_98->user_data;
}
void fn_1_88B8(void) {
s32 userData = (s32)lbl_1_bss_98->user_data;
userData |= 8;
lbl_1_bss_98->user_data = (void* ) (userData);
while (((u32)fn_1_8884() & 0x20) == 0) {
HuPrcVSleep();
}
HuPrcKill(lbl_1_bss_98);
lbl_1_bss_98 = NULL;
}
void fn_1_896C(void) {
Vec sp18;
Vec spC;
f32 sp8;
f32 temp_f29;
f32 var_f30;
f32 var_f31;
u32 temp_r30;
s32 var_r28;
s32 var_r31;
s32 var_r29;
ParticleData *var_r27;
temp_r30 = (u32)HuPrcCurrentGet()->user_data;
for (var_r31 = 0; var_r31 < 3; var_r31++) {
var_r29 = (1 << var_r31);
if ((temp_r30 & var_r29) != 0) {
BoardModelAttrReset(lbl_1_bss_AA[var_r31], 0x40000002);
if ((temp_r30 & 0x80) != 0) {
BoardModelMotionStartEndSet(lbl_1_bss_AA[var_r31], 0, 0x28);
BoardModelMotionTimeSet(lbl_1_bss_AA[var_r31], 0.0f);
} else {
BoardModelMotionStartEndSet(lbl_1_bss_AA[var_r31], 0xA, 0x28);
BoardModelMotionTimeSet(lbl_1_bss_AA[var_r31], 10.0f);
}
}
}
if ((temp_r30 & 0x80) != 0) {
HuPrcSleep(0x19);
} else {
HuPrcSleep(0xF);
}
spC.x = spC.y = spC.z = 0.0f;
for (var_r31 = 0; var_r31 < 3; var_r31++) {
var_r29 = (1 << var_r31);
if ((temp_r30 & var_r29) != 0) {
BoardModelVisibilitySet(lbl_1_bss_A4[var_r31], 1);
BoardModelScaleSetV(lbl_1_bss_A4[var_r31], &spC);
Hu3DModelObjPosGet(BoardModelIDGet(lbl_1_bss_14[0]), lbl_1_data_330[var_r31], &sp18);
BoardModelPosSetV(lbl_1_bss_A4[var_r31], &sp18);
if ((temp_r30 & 0x40) != 0) {
lbl_1_bss_7C[var_r31] = Hu3DParticleCreate(lbl_1_bss_78, 0x64);
var_r27 = Hu3DData[lbl_1_bss_7C[var_r31]].unk_120;
var_r27->unk_02 = lbl_1_bss_A4[var_r31];
Hu3DParticleHookSet(lbl_1_bss_7C[var_r31], fn_1_9268);
Hu3DParticleColSet(lbl_1_bss_7C[var_r31], 0xFF, 0xFF, 0);
Hu3DModelPosSet(lbl_1_bss_7C[var_r31], 0.0f, 0.0f, 0.0f);
Hu3DParticleBlendModeSet(lbl_1_bss_7C[var_r31], 1);
Hu3DModelLayerSet(lbl_1_bss_7C[var_r31], 2);
}
if ((temp_r30 & 0x100) != 0) {
lbl_1_bss_88 = HuAudFXPlay(0x35F);
HuAudFXPlay(0x310);
} else {
HuAudFXPlay(0x362);
}
}
}
temp_f29 = 150.0f + sp18.y;
sp8 = 0.0f;
var_f31 = 12.0f;
loop_20:
for (var_r28 = 0, var_r31 = 0; var_r31 < 3; var_r31++) {
var_r29 = (1 << var_r31);
if ((temp_r30 & var_r29) != 0) {
var_r28++;
sp8 += 0.1f;
if (sp8 > 1.0f) {
sp8 = 1.0f;
}
spC.x = spC.y = spC.z = sp8;
BoardModelScaleSetV(lbl_1_bss_A4[var_r31], (Vec* ) &sp8); //!
BoardModelPosGet(lbl_1_bss_A4[var_r31], &sp18);
sp18.y += var_f31;
if (sp18.y >= temp_f29) {
sp18.y = temp_f29;
var_r28 -= 1;
}
BoardModelPosSetV(lbl_1_bss_A4[var_r31], &sp18);
}
}
var_f31 *= 0.95f;
if (var_r28 > 0) {
HuPrcVSleep();
goto loop_20;
}
spC.x = spC.y = spC.z = 1.0f;
for (var_r31 = 0; var_r31 < 3; var_r31++) {
var_r29 = (1 << var_r31);
if ((temp_r30 & var_r29) != 0) {
BoardModelScaleSetV(lbl_1_bss_A4[var_r31], &spC);
}
}
temp_r30 = (u32) HuPrcCurrentGet()->user_data | 0x10;
HuPrcCurrentGet()->user_data = (void*)temp_r30;
var_f30 = 0.0f;
loop_37:
temp_r30 = (u32) HuPrcCurrentGet()->user_data;
if ((temp_r30 & 8) == 0) {
for (var_r31 = 0; var_r31 < 3; var_r31++) {
var_r29 = (1 << var_r31);
if ((temp_r30 & var_r29) != 0) {
BoardModelPosGet(lbl_1_bss_A4[var_r31], &sp18);
sp18.y = (sp18.y + (0.25 * sin((M_PI * var_f30) / 180.0)));
BoardModelPosSetV(lbl_1_bss_A4[var_r31], &sp18);
}
}
var_f30 += 5.0f;
if (var_f30 >= 360.0f) {
var_f30 -= 360.0f;
}
HuPrcVSleep();
goto loop_37;
}
for (var_r31 = 0; var_r31 < 3; var_r31++) {
BoardModelMotionStartEndSet(lbl_1_bss_AA[var_r31], 0x28, 0x46);
}
HuPrcSleep(0xD);
var_f31 = -8.0f;
loop_50:
for (var_r28 = 0, var_r31 = 0; var_r31 < 3; var_r31++) {
var_r29 = (1 << var_r31);
if ((temp_r30 & var_r29) != 0) {
var_r28++;
sp8 -= 0.02f;
if (sp8 < 0.0f) {
sp8 = 0.0f;
}
spC.x = spC.y = spC.z = sp8;
BoardModelScaleSetV(lbl_1_bss_A4[var_r31], (Vec* ) &sp8); //!
BoardModelPosGet(lbl_1_bss_A4[var_r31], &sp18);
sp18.y += var_f31;
if (sp18.y <= (temp_f29 - 150.0f)) {
sp18.y = temp_f29 - 150.0f;
}
if (BoardModelMotionTimeGet(lbl_1_bss_AA[var_r31]) >= 70.0f) {
var_r28--;
}
BoardModelPosSetV(lbl_1_bss_A4[var_r31], &sp18);
}
}
var_f31 *= 0.98f;
if (var_r28 > 0) {
HuPrcVSleep();
goto loop_50;
}
for (var_r31 = 0; var_r31 < 3; var_r31++) {
var_r29 = (1 << var_r31);
if ((temp_r30 & var_r29) != 0) {
spC.x = spC.y = spC.z = 1.0f;
BoardModelScaleSetV(lbl_1_bss_A4[var_r31], &spC);
BoardModelVisibilitySet(lbl_1_bss_A4[var_r31], 0);
}
}
temp_r30 = (u32)HuPrcCurrentGet()->user_data;
temp_r30 |= 0x20;
HuPrcCurrentGet()->user_data = (void*)temp_r30;
while (1) {
HuPrcVSleep();
}
}
void fn_1_91DC(void) {
u32 temp_r30;
s32 var_r29;
s32 var_r31;
temp_r30 = (u32)HuPrcCurrentGet()->user_data;
if ((temp_r30 & 0x40) != 0) {
for (var_r31 = 0; var_r31 < 3; var_r31++) {
var_r29 = (1 << var_r31);
if ((temp_r30 & var_r29) != 0) {
Hu3DModelKill(lbl_1_bss_7C[var_r31]);
}
}
}
}
void fn_1_9268(ModelData* model, ParticleData* particle, f32 (*matrix)[4]) {
Vec sp8;
HsfanimStruct01* var_r31;
f32 temp_f30;
f32 temp_f29;
f32 temp_f31;
s32 var_r28;
s32 var_r29;
if (particle->unk_34 == 0) {
var_r31 = particle->unk_48;
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
var_r31->unk40.a = 0;
var_r31->unk2C = 0.0f;
}
particle->unk_00 = 0;
}
BoardModelScaleGet(particle->unk_02, &sp8);
temp_f31 = sp8.x;
BoardModelPosGet(particle->unk_02, &sp8);
for (var_r29 = 0; var_r29 < 0x16; var_r29++) {
var_r31 = particle->unk_48;
for (var_r28 = 0; var_r28 < particle->unk_30; var_r28++, var_r31++) {
if (var_r31->unk2C == 0.0f) break;
}
if (var_r28 != particle->unk_30) {
temp_f30 = 360.0f * (0.003921569f * (s32)(frand() & 0xFF));
temp_f29 = temp_f31 * (20.0f + (60.0f * (0.003921569f * (s32)(frand() & 0xFF))));
var_r31->unk34.x = sp8.x + (temp_f29 * sin((M_PI * temp_f30) / 180.0));
var_r31->unk34.z = sp8.z + (temp_f29 * cos((M_PI * temp_f30) / 180.0));
var_r31->unk34.y = sp8.y + (temp_f31 * (-30.0f + (40.0f * (0.003921569f * (s32)(frand() & 0xFF)))));
var_r31->unk08.x = 0.5f + (3.0f * (0.003921569f * (s32)(frand() & 0xFF)));
var_r31->unk08.y = 0.3f + (2.0f * (0.003921569f * (s32)(frand() & 0xFF)));
var_r31->unk40.a = 0xB4;
var_r31->unk2C = 15.0f * temp_f31;
}
}
var_r31 = particle->unk_48;
for (var_r29 = 0; var_r29 < particle->unk_30; var_r29++, var_r31++) {
if (0.0f != var_r31->unk2C) {
var_r31->unk34.y -= var_r31->unk08.x;
var_r31->unk2C -= var_r31->unk08.y;
if (var_r31->unk2C <= 0.0f) {
var_r31->unk2C = 0.0f;
}
}
}
}