366 lines
8.7 KiB
C
Executable file
366 lines
8.7 KiB
C
Executable file
#include "REL/w06Dll.h"
|
|
#include "game/audio.h"
|
|
#include "game/data.h"
|
|
#include "game/gamework_data.h"
|
|
#include "game/objsub.h"
|
|
#include "game/process.h"
|
|
#include "game/window.h"
|
|
#include "game/board/main.h"
|
|
#include "game/board/model.h"
|
|
#include "game/board/player.h"
|
|
#include "game/board/space.h"
|
|
#include "game/board/window.h"
|
|
|
|
#include "dolphin.h"
|
|
#include "math.h"
|
|
|
|
static void fn_1_6F80(void);
|
|
static void fn_1_7210(void);
|
|
static s32 fn_1_72A4(void);
|
|
static void fn_1_72CC(s32 arg0);
|
|
static void fn_1_73EC(float arg0);
|
|
static void fn_1_74BC(s32 arg0);
|
|
static void fn_1_7574(void);
|
|
static void fn_1_7674(s32 arg0);
|
|
static void fn_1_7760(s32 arg0);
|
|
static s32 fn_1_7944(s32 arg0);
|
|
|
|
static s8 lbl_1_bss_C6;
|
|
static s8 lbl_1_bss_C2[4];
|
|
static s16 lbl_1_bss_C0;
|
|
static s32 lbl_1_bss_BC;
|
|
static s32 lbl_1_bss_B8;
|
|
static u8 lbl_1_bss_94_gap[0x24];
|
|
static Process *lbl_1_bss_90;
|
|
|
|
static s32 lbl_1_data_208[8] = {
|
|
0x00000123,
|
|
0x00000163,
|
|
0x000001A3,
|
|
0x000001E3,
|
|
0x00000223,
|
|
0x00000263,
|
|
0x000002A3,
|
|
0x000002E3
|
|
};
|
|
|
|
static s8 lbl_1_data_228 = -1;
|
|
static s16 lbl_1_data_22A = -1;
|
|
static s16 lbl_1_data_22C = -1;
|
|
static s16 lbl_1_data_22E = -1;
|
|
|
|
static s32 lbl_1_data_230[] = {
|
|
MAKE_MESSID(8, 14),
|
|
MAKE_MESSID(8, 15),
|
|
MAKE_MESSID(8, 16),
|
|
MAKE_MESSID(8, 17),
|
|
MAKE_MESSID(8, 18),
|
|
MAKE_MESSID(8, 19),
|
|
MAKE_MESSID(8, 20),
|
|
MAKE_MESSID(8, 21),
|
|
MAKE_MESSID(8, 22),
|
|
MAKE_MESSID(8, 23),
|
|
MAKE_MESSID(8, 24),
|
|
MAKE_MESSID(8, 25),
|
|
MAKE_MESSID(8, 26),
|
|
MAKE_MESSID(8, 27)
|
|
};
|
|
|
|
void fn_1_6EF0(void) {
|
|
BoardDiceDigit2DShowSet(0);
|
|
lbl_1_bss_90 = HuPrcChildCreate(fn_1_6F80, 0x2003, 0x3800, 0, boardMainProc);
|
|
HuPrcDestructorSet2(lbl_1_bss_90, fn_1_7210);
|
|
while (lbl_1_bss_90) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardDiceDigit2DShowSet(1);
|
|
}
|
|
|
|
static void fn_1_6F80(void) {
|
|
s32 temp_r31;
|
|
s32 sp8;
|
|
|
|
lbl_1_bss_B8 = -1;
|
|
temp_r31 = GWSystem.player_curr;
|
|
sp8 = GWPlayer[temp_r31].space_curr;
|
|
if (BoardSpaceFlagGet(0, GWPlayer[temp_r31].space_curr) & 0x2000) {
|
|
lbl_1_bss_C6 = 0;
|
|
lbl_1_bss_C0 = lbl_1_bss_C[2];
|
|
lbl_1_bss_BC = 0x4A6;
|
|
} else {
|
|
lbl_1_bss_C6 = 1;
|
|
lbl_1_bss_C0 = lbl_1_bss_C[3];
|
|
lbl_1_bss_BC = 0x49B;
|
|
}
|
|
fn_1_72CC(temp_r31);
|
|
fn_1_7760(temp_r31);
|
|
BoardCameraMotionWait();
|
|
BoardModelMotionShiftSet(lbl_1_bss_C0, 0, 0.0f, 8.0f, 0x40000001);
|
|
HuPrcSleep(8);
|
|
while (BoardModelMotionTimeGet(lbl_1_bss_C0) < 22.0f) {
|
|
HuPrcVSleep();
|
|
}
|
|
fn_1_7674(temp_r31);
|
|
BoardModelMotionStartEndSet(lbl_1_bss_C0, 30, 60);
|
|
lbl_1_data_228 = 2;
|
|
HuPrcSleep(30);
|
|
fn_1_74BC(1);
|
|
while (!BoardModelMotionEndCheck(lbl_1_data_22C)) {
|
|
HuPrcVSleep();
|
|
}
|
|
lbl_1_data_228 = 3;
|
|
BoardModelHookReset(lbl_1_bss_C0);
|
|
if (lbl_1_bss_B8 != -1) {
|
|
HuAudFXStop(lbl_1_bss_B8);
|
|
}
|
|
BoardModelMotionShiftSet(lbl_1_bss_C0, 0, 60.0f, 8.0f, 0);
|
|
fn_1_73EC(0.0f);
|
|
fn_1_7574();
|
|
while (!BoardModelMotionEndCheck(lbl_1_bss_C0)) {
|
|
HuPrcVSleep();
|
|
}
|
|
BoardPlayerPostTurnHookSet(temp_r31, fn_1_72A4);
|
|
HuPrcEnd();
|
|
}
|
|
|
|
static void fn_1_7210(void) {
|
|
if (lbl_1_data_22C != -1) {
|
|
BoardModelKill(lbl_1_data_22C);
|
|
lbl_1_data_22C = -1;
|
|
}
|
|
if (lbl_1_data_22A != -1) {
|
|
BoardModelKill(lbl_1_data_22A);
|
|
lbl_1_data_22A = -1;
|
|
}
|
|
lbl_1_bss_90 = NULL;
|
|
}
|
|
|
|
static s32 fn_1_72A4(void) {
|
|
fn_1_74BC(0);
|
|
return 1;
|
|
}
|
|
|
|
static void fn_1_72CC(s32 arg0) {
|
|
Vec sp24;
|
|
Vec sp18;
|
|
Vec spC;
|
|
s32 var_r30;
|
|
s32 i;
|
|
|
|
if (lbl_1_bss_C6 == 0) {
|
|
var_r30 = 0x2000;
|
|
} else {
|
|
var_r30 = 0x1000;
|
|
}
|
|
BoardPlayerPosGet(arg0, &sp18);
|
|
BoardModelPosGet(lbl_1_bss_C0, &sp24);
|
|
PSVECSubtract(&sp24, &sp18, &spC);
|
|
for (i = 0; i < 4; i++) {
|
|
if (var_r30 & BoardSpaceFlagGet(0, GWPlayer[i].space_curr)) {
|
|
lbl_1_bss_C2[i] = 1;
|
|
} else {
|
|
lbl_1_bss_C2[i] = 0;
|
|
}
|
|
}
|
|
fn_1_73EC(180.0 * (atan2(spC.x, spC.z) / M_PI));
|
|
}
|
|
|
|
static void fn_1_73EC(float arg0) {
|
|
s32 var_r30;
|
|
s32 i;
|
|
|
|
for (i = 0; i < 4; i++) {
|
|
if (lbl_1_bss_C2[i] != 0) {
|
|
BoardPlayerMotBlendSet(i, arg0, 15);
|
|
}
|
|
}
|
|
do {
|
|
var_r30 = 0;
|
|
for (i = 0; i < 4; i++) {
|
|
if (lbl_1_bss_C2[i] != 0 && !BoardPlayerMotBlendCheck(i)) {
|
|
var_r30 = 1;
|
|
}
|
|
}
|
|
HuPrcVSleep();
|
|
} while (var_r30 != 0);
|
|
}
|
|
|
|
static void fn_1_74BC(s32 arg0) {
|
|
s32 i;
|
|
|
|
for (i = 0; i < 4; i++) {
|
|
if (lbl_1_bss_C2[i] == 0) {
|
|
continue;
|
|
}
|
|
if (arg0 != 0) {
|
|
omVibrate(i, 12, 4, 2);
|
|
HuAudFXPlay(lbl_1_data_208[GWPlayer[i].character]);
|
|
}
|
|
BoardPlayerCopyEyeMat(i, arg0);
|
|
}
|
|
}
|
|
|
|
static void fn_1_7574(void) {
|
|
s32 temp_r3;
|
|
s32 temp_r29;
|
|
s32 temp_r28;
|
|
s32 i;
|
|
|
|
for (i = 0; i < 4; i++) {
|
|
if (lbl_1_bss_C2[i] == 0) {
|
|
continue;
|
|
}
|
|
temp_r3 = fn_1_7944(i);
|
|
if (temp_r3 != -1) {
|
|
temp_r29 = GWPlayer[i].items[temp_r3];
|
|
BoardPlayerItemRemove(i, temp_r3);
|
|
temp_r28 = BoardPlayerGetCharMess(i);
|
|
BoardWinCreate(0, MAKE_MESSID(48, 16), -1);
|
|
BoardWinInsertMesSet(temp_r28, 0);
|
|
BoardWinInsertMesSet(lbl_1_data_230[temp_r29], 1);
|
|
BoardWinPlayerSet(i);
|
|
BoardWinWait();
|
|
BoardWinKill();
|
|
}
|
|
}
|
|
}
|
|
|
|
static void fn_1_7674(s32 arg0) {
|
|
Vec sp8;
|
|
float var_f31;
|
|
|
|
if (lbl_1_bss_C6 == 0) {
|
|
var_f31 = -90.0f;
|
|
} else {
|
|
var_f31 = 90.0f;
|
|
}
|
|
lbl_1_data_22C = BoardModelCreate(DATA_MAKE_NUM(DATADIR_W06, 15), NULL, 0);
|
|
BoardModelPosGet(lbl_1_bss_C0, &sp8);
|
|
BoardModelMotionStart(lbl_1_data_22C, 0, 0);
|
|
BoardModelHookSet(lbl_1_bss_C0, "fire", lbl_1_data_22C);
|
|
lbl_1_bss_B8 = HuAudFXPlay(lbl_1_bss_BC);
|
|
}
|
|
|
|
static void fn_1_7760(s32 arg0) {
|
|
Vec sp2C;
|
|
Vec sp20;
|
|
Vec sp14;
|
|
Vec sp8;
|
|
u32 var_r30;
|
|
u32 var_r28;
|
|
s16 var_r29;
|
|
s32 i;
|
|
|
|
if (lbl_1_bss_C6 == 0) {
|
|
var_r30 = 0x6000;
|
|
} else {
|
|
var_r30 = 0x5000;
|
|
}
|
|
for (var_r29 = i = 0; i < BoardSpaceCountGet(0); i++) {
|
|
var_r28 = BoardSpaceFlagGet(0, i + 1);
|
|
if (var_r30 == (var_r28 & var_r30)) {
|
|
var_r29 = i + 1;
|
|
break;
|
|
}
|
|
}
|
|
BoardModelPosGet(lbl_1_bss_C0, &sp20);
|
|
BoardSpacePosGet(0, var_r29, &sp2C);
|
|
PSVECSubtract(&sp2C, &sp20, &sp8);
|
|
sp8.x *= 0.4f;
|
|
sp8.y *= 0.4f;
|
|
sp8.z *= 0.4f;
|
|
PSVECAdd(&sp20, &sp8, &sp2C);
|
|
lbl_1_data_22A = BoardModelCreate(DATA_MAKE_NUM(DATADIR_BOARD, 10), NULL, 0);
|
|
BoardModelVisibilitySet(lbl_1_data_22A, 0);
|
|
BoardModelPosSetV(lbl_1_data_22A, &sp2C);
|
|
sp14.x = 0.0f;
|
|
sp14.y = 200.0f;
|
|
sp14.z = 0.0f;
|
|
BoardCameraMotionStartEx(lbl_1_data_22A, 0, &sp14, 2500.0f, -1.0f, 21);
|
|
BoardCameraMotionWait();
|
|
}
|
|
|
|
static s8 lbl_1_data_26D[] = {
|
|
0, 0, 1, 1, 0,
|
|
0, 1, 1, 1, 1,
|
|
2, 2, 2, 2
|
|
};
|
|
|
|
static s8 lbl_1_data_27B[] = { 40, 30, 20, 10 };
|
|
|
|
static s8 lbl_1_data_27F[4][2] = {
|
|
{ 35, 80 }, { 30, 70 },
|
|
{ 20, 60 }, { 10, 50 }
|
|
};
|
|
|
|
static s32 fn_1_7944(s32 arg0) {
|
|
s8 spB[3];
|
|
s8 sp8[3];
|
|
s32 var_r25;
|
|
s32 temp_r26;
|
|
s32 var_r30;
|
|
s32 temp_r27;
|
|
s32 var_r31;
|
|
s32 i;
|
|
|
|
var_r25 = BoardPlayerItemCount(arg0);
|
|
if (var_r25 == 0) {
|
|
return -1;
|
|
}
|
|
for (var_r30 = i = 0; i < 3; i++) {
|
|
temp_r26 = GWPlayer[arg0].items[i];
|
|
if (temp_r26 != -1) {
|
|
spB[var_r30] = temp_r26;
|
|
sp8[var_r30] = i;
|
|
var_r30++;
|
|
}
|
|
}
|
|
if (var_r30 == 0) {
|
|
return -1;
|
|
}
|
|
if (var_r30 == 1) {
|
|
return 0;
|
|
}
|
|
temp_r27 = BoardRandMod(100);
|
|
if (lbl_1_data_26D[spB[0]] > lbl_1_data_26D[spB[1]]) {
|
|
if (lbl_1_data_27B[GWPlayer[arg0].rank] > temp_r27) {
|
|
var_r31 = 1;
|
|
} else {
|
|
var_r31 = 0;
|
|
}
|
|
} else if (lbl_1_data_27B[GWPlayer[arg0].rank] > temp_r27) {
|
|
var_r31 = 0;
|
|
} else {
|
|
var_r31 = 1;
|
|
}
|
|
if (var_r30 == 3) {
|
|
if (lbl_1_data_26D[spB[var_r31]] > lbl_1_data_26D[spB[2]]) {
|
|
if (lbl_1_data_27F[GWPlayer[arg0].rank][1] > temp_r27) {
|
|
var_r31 = 2;
|
|
}
|
|
} else if (lbl_1_data_27F[GWPlayer[arg0].rank][1] < temp_r27) {
|
|
var_r31 = 2;
|
|
}
|
|
}
|
|
var_r31 = sp8[var_r31];
|
|
return var_r31;
|
|
}
|
|
|
|
static char *lbl_1_data_394[] = {
|
|
"01 : CHIBI KINOKO",
|
|
"02 : DEKA KINOKO",
|
|
"03 : SUPER CHIBI KINOKO",
|
|
"04 : SUPER DEKA KINOKO",
|
|
"05 : DEKACHIBI HAMMER",
|
|
"06 : WARP DOKAN",
|
|
"07 : TRADE CARD",
|
|
"08 : BIRI-Q SEAL",
|
|
"09 : TERE-YOKE LIGHT",
|
|
"10 : WAN-WAN WHISTLE",
|
|
"11 : KOOPA SUIT",
|
|
"12 : TERESA SUISYO",
|
|
"13 : MAJIN NO LAMP",
|
|
"14 : ITEM BUKURO"
|
|
};
|
|
|
|
static u8 lbl_1_data_3CC[0x4C] = { 0 };
|