From 81d021a43830acb1dcbbaf342aa3d115827d9af2 Mon Sep 17 00:00:00 2001 From: gamemasterplc Date: Mon, 10 Jun 2024 20:30:02 -0500 Subject: [PATCH] Decompile w02dll/roulette.c --- config/GMPE01_00/rels/w02Dll/symbols.txt | 124 ++--- configure.py | 2 +- include/REL/w02Dll.h | 2 +- src/REL/w02Dll/roulette.c | 580 ++++++++++++++++------- 4 files changed, 469 insertions(+), 239 deletions(-) diff --git a/config/GMPE01_00/rels/w02Dll/symbols.txt b/config/GMPE01_00/rels/w02Dll/symbols.txt index 5d690fdf..bc6f7e5e 100644 --- a/config/GMPE01_00/rels/w02Dll/symbols.txt +++ b/config/GMPE01_00/rels/w02Dll/symbols.txt @@ -302,67 +302,67 @@ lbl_1_rodata_3F8 = .rodata:0x000003F8; // type:object size:0x4 data:float lbl_1_rodata_3FC = .rodata:0x000003FC; // type:object size:0x4 data:float lbl_1_rodata_400 = .rodata:0x00000400; // type:object size:0x4 data:float lbl_1_rodata_404 = .rodata:0x00000404; // type:object size:0x4 data:float -lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 data:float -lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 data:float -lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 data:float -lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 data:float -lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 data:float -lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 data:float -lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 data:float -lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 data:float -lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 data:float -lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 data:float -lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 data:float -lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 data:float -lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 data:float -lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:float -lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 data:float -lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 data:float -lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 data:float -lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 data:double -lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 data:double -lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 data:float -lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 data:float -lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 data:float -lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 data:float -lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 data:float -lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 data:float -lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 data:float -lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 data:float -lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x8 data:double -lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 data:double -lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 data:float -lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 data:float -lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 data:double -lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 data:double -lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 data:float -lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 data:float -lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 data:float -lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 data:double -lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 data:float -lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 data:float -lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 data:float -lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 data:float -lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x8 data:double -lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 data:float -lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 data:float -lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0xC data:4byte -lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 data:float -lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 data:float -lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 data:float -lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 data:float -lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 data:float -lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 data:float -lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 data:float -lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 data:float -lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 data:float -lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 data:float -lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 data:float -lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x8 data:double -lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 data:float -lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 data:float -lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 data:float -lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 data:float +lbl_1_rodata_408 = .rodata:0x00000408; // type:object size:0x4 scope:local data:float +lbl_1_rodata_40C = .rodata:0x0000040C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_410 = .rodata:0x00000410; // type:object size:0x4 scope:local data:float +lbl_1_rodata_414 = .rodata:0x00000414; // type:object size:0x4 scope:local data:float +lbl_1_rodata_418 = .rodata:0x00000418; // type:object size:0x4 scope:local data:float +lbl_1_rodata_41C = .rodata:0x0000041C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_420 = .rodata:0x00000420; // type:object size:0x4 scope:local data:float +lbl_1_rodata_424 = .rodata:0x00000424; // type:object size:0x4 scope:local data:float +lbl_1_rodata_428 = .rodata:0x00000428; // type:object size:0x4 scope:local data:float +lbl_1_rodata_42C = .rodata:0x0000042C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_430 = .rodata:0x00000430; // type:object size:0x4 scope:local data:float +lbl_1_rodata_434 = .rodata:0x00000434; // type:object size:0x4 scope:local data:float +lbl_1_rodata_438 = .rodata:0x00000438; // type:object size:0x4 scope:local data:float +lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x4 scope:local data:float +lbl_1_rodata_444 = .rodata:0x00000444; // type:object size:0x4 scope:local data:float +lbl_1_rodata_448 = .rodata:0x00000448; // type:object size:0x4 scope:local data:float +lbl_1_rodata_450 = .rodata:0x00000450; // type:object size:0x8 scope:local data:double +lbl_1_rodata_458 = .rodata:0x00000458; // type:object size:0x8 scope:local data:double +lbl_1_rodata_460 = .rodata:0x00000460; // type:object size:0x4 scope:local data:float +lbl_1_rodata_464 = .rodata:0x00000464; // type:object size:0x4 scope:local data:float +lbl_1_rodata_468 = .rodata:0x00000468; // type:object size:0x4 scope:local data:float +lbl_1_rodata_46C = .rodata:0x0000046C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_470 = .rodata:0x00000470; // type:object size:0x4 scope:local data:float +lbl_1_rodata_474 = .rodata:0x00000474; // type:object size:0x4 scope:local data:float +lbl_1_rodata_478 = .rodata:0x00000478; // type:object size:0x4 scope:local data:float +lbl_1_rodata_47C = .rodata:0x0000047C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_480 = .rodata:0x00000480; // type:object size:0x8 scope:local data:double +lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x8 scope:local data:double +lbl_1_rodata_490 = .rodata:0x00000490; // type:object size:0x4 scope:local data:float +lbl_1_rodata_494 = .rodata:0x00000494; // type:object size:0x4 scope:local data:float +lbl_1_rodata_498 = .rodata:0x00000498; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A0 = .rodata:0x000004A0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4A8 = .rodata:0x000004A8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4AC = .rodata:0x000004AC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B0 = .rodata:0x000004B0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4B8 = .rodata:0x000004B8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4C0 = .rodata:0x000004C0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C4 = .rodata:0x000004C4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C8 = .rodata:0x000004C8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4CC = .rodata:0x000004CC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4D0 = .rodata:0x000004D0; // type:object size:0x8 scope:local data:double +lbl_1_rodata_4D8 = .rodata:0x000004D8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4DC = .rodata:0x000004DC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4E0 = .rodata:0x000004E0; // type:object size:0xC scope:local data:4byte +lbl_1_rodata_4EC = .rodata:0x000004EC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F0 = .rodata:0x000004F0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F4 = .rodata:0x000004F4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4F8 = .rodata:0x000004F8; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4FC = .rodata:0x000004FC; // type:object size:0x4 scope:local data:float +lbl_1_rodata_500 = .rodata:0x00000500; // type:object size:0x4 scope:local data:float +lbl_1_rodata_504 = .rodata:0x00000504; // type:object size:0x4 scope:local data:float +lbl_1_rodata_508 = .rodata:0x00000508; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50C = .rodata:0x0000050C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_510 = .rodata:0x00000510; // type:object size:0x4 scope:local data:float +lbl_1_rodata_514 = .rodata:0x00000514; // type:object size:0x4 scope:local data:float +lbl_1_rodata_518 = .rodata:0x00000518; // type:object size:0x8 scope:local data:double +lbl_1_rodata_520 = .rodata:0x00000520; // type:object size:0x4 scope:local data:float +lbl_1_rodata_524 = .rodata:0x00000524; // type:object size:0x4 scope:local data:float +lbl_1_rodata_528 = .rodata:0x00000528; // type:object size:0x4 scope:local data:float +lbl_1_rodata_52C = .rodata:0x0000052C; // type:object size:0x4 scope:local data:float lbl_1_data_0 = .data:0x00000000; // type:object size:0x280 scope:local lbl_1_data_280 = .data:0x00000280; // type:object size:0x2 data:2byte lbl_1_data_282 = .data:0x00000282; // type:object size:0x2 data:2byte @@ -393,7 +393,7 @@ lbl_1_data_480 = .data:0x00000480; // type:object size:0x10 lbl_1_data_490 = .data:0x00000490; // type:object size:0x20 lbl_1_data_4B0 = .data:0x000004B0; // type:object size:0x20 lbl_1_data_4D0 = .data:0x000004D0; // type:object size:0x40 -lbl_1_data_510 = .data:0x00000510; // type:object size:0x14 data:string +lbl_1_data_510 = .data:0x00000510; // type:object size:0x14 scope:local 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:0x8 data:2byte diff --git a/configure.py b/configure.py index a34c2ad8..fd82e277 100644 --- a/configure.py +++ b/configure.py @@ -1489,7 +1489,7 @@ config.libs = [ Object(NonMatching, "REL/w02Dll/mg_coin.c"), Object(NonMatching, "REL/w02Dll/mg_item.c"), Object(NonMatching, "REL/w02Dll/shuffleboard.c"), - Object(NonMatching, "REL/w02Dll/roulette.c"), + Object(Matching, "REL/w02Dll/roulette.c"), }, ), Rel( diff --git a/include/REL/w02Dll.h b/include/REL/w02Dll.h index 52567979..4a09e43f 100644 --- a/include/REL/w02Dll.h +++ b/include/REL/w02Dll.h @@ -80,6 +80,6 @@ extern void fn_1_BC1C(); extern s32 fn_1_BE88(); extern s32 fn_1_C108(s32); extern void fn_1_CD04(s32); -extern void fn_1_E41C(); +void fn_1_E41C(void); #endif //W02DLL \ No newline at end of file diff --git a/src/REL/w02Dll/roulette.c b/src/REL/w02Dll/roulette.c index eb273ffc..dda61fc4 100644 --- a/src/REL/w02Dll/roulette.c +++ b/src/REL/w02Dll/roulette.c @@ -1,80 +1,30 @@ #include "REL/w02Dll.h" #include "game/audio.h" +#include "game/frand.h" +#include "game/chrman.h" +#include "game/pad.h" -#define ROULETTE_CHOICE_YES 0 -#define ROULETTE_CHOICE_NO 1 -#define ROULETTE_CHOICE_MAP 2 - -#define BRIBE_CHOICE_20 0 -#define BRIBE_CHOICE_10 1 -#define BRIBE_CHOICE_5 2 -#define BRIBE_CHOICE_NVM 3 -#define BRIBE_CHOICE_INVALID -1 +#include "ext_math.h" -/* RODATA */ -extern f32 lbl_1_rodata_408; -extern f32 lbl_1_rodata_40C; -extern f32 lbl_1_rodata_410; -extern f32 lbl_1_rodata_414; -extern f32 lbl_1_rodata_418; -extern f32 lbl_1_rodata_41C; -extern f32 lbl_1_rodata_420; -extern f32 lbl_1_rodata_424; -extern f32 lbl_1_rodata_428; -extern f32 lbl_1_rodata_42C; -extern f32 lbl_1_rodata_430; -extern f32 lbl_1_rodata_434; -extern f32 lbl_1_rodata_438; -extern f32 lbl_1_rodata_43C; -extern f32 lbl_1_rodata_440; -extern f32 lbl_1_rodata_444; -extern f32 lbl_1_rodata_448; -extern f64 lbl_1_rodata_450; -extern f64 lbl_1_rodata_458; -extern f32 lbl_1_rodata_460; -extern f32 lbl_1_rodata_464; -extern f32 lbl_1_rodata_468; -extern f32 lbl_1_rodata_46C; -extern f32 lbl_1_rodata_470; -extern f32 lbl_1_rodata_474; -extern f32 lbl_1_rodata_478; -extern f32 lbl_1_rodata_47C; -extern f64 lbl_1_rodata_480; -extern f64 lbl_1_rodata_488; -extern f32 lbl_1_rodata_490; -extern f32 lbl_1_rodata_494; -extern f64 lbl_1_rodata_498; -extern f64 lbl_1_rodata_4A0; -extern f32 lbl_1_rodata_4A8; -extern f32 lbl_1_rodata_4AC; -extern f32 lbl_1_rodata_4B0; -extern f32 lbl_1_rodata_4B8; -extern f32 lbl_1_rodata_4C0; -extern f32 lbl_1_rodata_4C4; -extern f32 lbl_1_rodata_4C8; -extern f32 lbl_1_rodata_4CC; -extern f64 lbl_1_rodata_4D0; -extern f32 lbl_1_rodata_4D8; -extern f32 lbl_1_rodata_4DC; /* DATA */ -extern s32 lbl_1_data_4D0[]; +s32 lbl_1_data_4D0[] = { + -1, 2, 2, 2, + -1, 1, 1, 1, + -1, 0, 0, 0, + -1, 3, 3, 3 +}; -/* BSS */ -extern s32 lbl_1_bss_38C; -extern s16 lbl_1_bss_388; -extern s32 lbl_1_bss_384; -extern f32 lbl_1_bss_380; - -//Function Externs -extern s16 BoardBowserSuitModelGet(); -extern s16 BoardBowserSuitPlayerModelGet(); -extern void BoardComKeySetDown(); -extern void BoardComKeySetUp(); -extern void omVibrate(s16 player, s16 duration, s16 off, s16 on); -extern u32 frand(); +Process *lbl_1_bss_38C; +s16 lbl_1_bss_388; +s32 lbl_1_bss_384; +float lbl_1_bss_380; //Local Functions +void fn_1_D3AC(void); +s32 fn_1_D8C4(void); +void fn_1_DF48(void); + s32 fn_1_E2AC(void); void fn_1_E310(f32); @@ -90,13 +40,13 @@ void fn_1_BC1C(void) { Point3d sp8; BoardModelPosGet(lbl_1_bss_30[15], &sp8); - sp8.z -= lbl_1_rodata_408; - sp8.y += lbl_1_rodata_40C; + sp8.z -= 90.0f; + sp8.y += 50.0f; BoardModelPosSetV(lbl_1_bss_30[6], &sp8); BoardModelAttrSet(lbl_1_bss_30[5], 0x40000002); - BoardModelMotionTimeSet(lbl_1_bss_30[5], lbl_1_rodata_410); + BoardModelMotionTimeSet(lbl_1_bss_30[5], 0.0f); BoardModelRotGet(lbl_1_bss_30[15], &sp8); - sp8.y = lbl_1_rodata_410; + sp8.y = 0.0f; BoardModelRotSetV(lbl_1_bss_30[15], &sp8); } @@ -111,14 +61,14 @@ void fn_1_BCFC(void) { while (GWPlayer[lbl_1_bss_388].moving) { HuPrcVSleep(); } - BoardRotateDiceNumbers((s32) lbl_1_bss_388); + BoardPlayerIdleSet(lbl_1_bss_388); BoardCameraViewSet(2); BoardCameraMotionWait(); BoardPlayerMotBlendSet((s32) lbl_1_bss_388, 0x5A, 0xF); while (BoardPlayerMotBlendCheck((s32) lbl_1_bss_388) == 0) { HuPrcVSleep(); } - BoardModelRotYSet(lbl_1_bss_30[15], lbl_1_rodata_414); + BoardModelRotYSet(lbl_1_bss_30[15], -90.0f); fn_1_121C(0x130000); HuAudFXPlay(0x44); temp_r29 = fn_1_BE88(); @@ -160,7 +110,7 @@ s32 fn_1_BE88(void) { BoardWinCreateChoice(2, 0x13001DU, 4, 0); /* COM has 50% to bribe goomba */ if (GWPlayer[lbl_1_bss_388].com) { - if (frand() & 1) { + if (frandBool()) { BoardComKeySetRight(); } else { BoardComKeySetLeft(); @@ -170,7 +120,7 @@ s32 fn_1_BE88(void) { BoardWinKill(); rouletteChoice = BoardWinChoiceGet(); // If chose to play roulette - if (rouletteChoice == ROULETTE_CHOICE_YES) { + if (rouletteChoice == 0) { BoardWinCreateChoice(1, 0x130003U, 4, 0); playerCoinRegion = 3; if (coinAmount < 0x14) { @@ -186,7 +136,7 @@ s32 fn_1_BE88(void) { if (GWPlayer[lbl_1_bss_388].com) { if (playerCoinRegion < 2) { BoardComKeySetUp(); - } else if (frand() & 1) { + } else if (frandBool()) { BoardComKeySetUp(); } else { BoardComKeySetDown(); @@ -195,24 +145,24 @@ s32 fn_1_BE88(void) { BoardWinWait(); BoardWinKill(); bribeChoice = BoardWinChoiceGet(); - if (bribeChoice == BRIBE_CHOICE_INVALID || - bribeChoice == BRIBE_CHOICE_NVM) { + if (bribeChoice == -1 || + bribeChoice == 3) { continue; } // Coin amount is now the bribe amount in coins switch (bribeChoice) { - case BRIBE_CHOICE_20: + case 0: mesg = 0x130004; coinAmount = 0x14; var_r30 = 0x5A; // 90% break; - case BRIBE_CHOICE_10: + case 1: mesg = 0x130005; coinAmount = 0xA; var_r30 = 0x3C; // 60% break; - case BRIBE_CHOICE_5: + case 2: mesg = 0x130006; coinAmount = 5; var_r30 = 0x1E; // 30% @@ -228,22 +178,21 @@ s32 fn_1_BE88(void) { } HuAudFXPlay(0xF); // If chose to view map - } else if (rouletteChoice == ROULETTE_CHOICE_MAP) { + } else if (rouletteChoice == 2) { BoardViewMapExec(lbl_1_bss_388); } - } while (rouletteChoice == ROULETTE_CHOICE_MAP); // While viewing map + } while (rouletteChoice == 2); // While viewing map if (var_r30 == -1) { fn_1_121C(0x130007); } return var_r30; } -// https://decomp.me/scratch/rctvo s32 fn_1_C108(s32 arg0) { Vec sp34; Vec sp28; Vec sp1C; - UnkPoint spC; + Vec sp10; f32 var_f27; @@ -273,7 +222,7 @@ s32 fn_1_C108(s32 arg0) { var_r29 = frandmod(0x10U); var_r27 = frandmod(4U); } - BoardModelPosGet(lbl_1_bss_30[4], &spC.point); + BoardModelPosGet(lbl_1_bss_30[4], &sp10); BoardCameraViewSet(1); BoardCameraMotionWait(); var_r26 = BoardSpaceFlagSearch(0, 0x800U); @@ -282,32 +231,32 @@ s32 fn_1_C108(s32 arg0) { BoardModelRotGet(lbl_1_bss_30[15], &sp34); for (i = 0; i < 0xF; i++) { - sp34.y -= lbl_1_rodata_418; + sp34.y -= 6.0f; BoardModelRotSetV(lbl_1_bss_30[15], &sp34); HuPrcVSleep(); } - sp34.y = lbl_1_rodata_41C; + sp34.y = 180.0f; BoardModelRotSetV(lbl_1_bss_30[15], &sp34); BoardCameraMotionWait(); lbl_1_bss_384 = HuAudFXPlay(0x41D); var_r28 = -0x1FFF; - var_f29 = lbl_1_rodata_410; + var_f29 = 0.0f; for (i = 0; i < 0x3C; i++) { - var_f29 -= lbl_1_rodata_420; + var_f29 -= 0.375f; fn_1_E310(var_f29); - var_r28 = (s16) ((f32) (s16) var_r28 + lbl_1_rodata_424); + var_r28 += 136.51666f; HuAudFXPitchSet(lbl_1_bss_384, var_r28); HuPrcVSleep(); } - var_f29 = lbl_1_rodata_428; + var_f29 = -22.5f; HuAudFXPitchSet(lbl_1_bss_384, 0); BoardModelMotionStart(lbl_1_bss_30[15], 2, 0x40000001); BoardModelPosGet(lbl_1_bss_30[15], &sp34); for (i = 0; i < 0x1E; i++) { - sp34.z += lbl_1_rodata_42C; + sp34.z += 2.1f; BoardModelPosSetV(lbl_1_bss_30[15], &sp34); fn_1_E310(var_f29); HuPrcVSleep(); @@ -319,69 +268,57 @@ s32 fn_1_C108(s32 arg0) { var_r29 -= 1; } BoardModelMotionStart(lbl_1_bss_30[15], 3, 0x40000001); - BoardModelMotionSpeedSet(lbl_1_bss_30[15], lbl_1_rodata_430); + BoardModelMotionSpeedSet(lbl_1_bss_30[15], 4.0f); for (i = 0; i < 0xA; i++) { - sp34.z -= lbl_1_rodata_434; + sp34.z -= 6.2999997f; BoardModelPosSetV(lbl_1_bss_30[15], &sp34); fn_1_E310(var_f29); HuPrcVSleep(); } BoardModelMotionStart(lbl_1_bss_30[15], 1, 0x40000001); - BoardModelMotionSpeedSet(lbl_1_bss_30[15], lbl_1_rodata_438); + BoardModelMotionSpeedSet(lbl_1_bss_30[15], 1.0f); HuAudFXPlay(0x41F); HuAudFXPlay(0x42D); omVibrate(lbl_1_bss_388, 0xC, 6, 6); - var_f31 = lbl_1_rodata_410; - var_f27 = lbl_1_rodata_43C; - sp1C.x = lbl_1_rodata_410; - sp1C.z = lbl_1_rodata_440; + var_f31 = 0.0f; + var_f27 = 16.0f; + sp1C.x = 0.0f; + sp1C.z = -50.0f; // Roulette motion and ball ? while(TRUE) { - sp1C.y = var_f27 - (lbl_1_rodata_444 * (lbl_1_rodata_448 * (var_f31 * var_f31))); - var_f31 += lbl_1_rodata_438; + sp1C.y = var_f27 - (0.55833334f * (0.25f * (var_f31 * var_f31))); + var_f31 += 1.0f; BoardModelPosGet(lbl_1_bss_30[6], &sp28); PSVECAdd(&sp28, &sp1C, &sp28); - var_f28 = (sp28.x - spC.point.x) * (sp28.x - spC.point.x) + ((sp28.z - spC.point.z) * (sp28.z - spC.point.z)); - if (var_f28 > lbl_1_rodata_410) { - var_f30 = __frsqrte(var_f28); - var_f30 = lbl_1_rodata_450 * var_f30 * (lbl_1_rodata_458 - ((f64) var_f28 * (var_f30 * var_f30))); - var_f30 = lbl_1_rodata_450 * var_f30 * (lbl_1_rodata_458 - ((f64) var_f28 * (var_f30 * var_f30))); - var_f30 = (lbl_1_rodata_450 * var_f30 * (lbl_1_rodata_458 - (var_f28 * (var_f30 * var_f30)))); - spC.unk00 = (var_f28 * var_f30); - var_f26 = spC.unk00; - } else { - var_f26 = var_f28; - } - - var_f25 = var_f26; - if (var_f25 >= lbl_1_rodata_460) { - if (sp28.y <= (lbl_1_rodata_464 + spC.point.y)) { - PSVECSubtract(&sp28, &spC.point, (Vec* ) &sp1C); + var_f25 = VECDistanceXZ(&sp28, &sp10); + if (var_f25 >= 430.0f) { + if (sp28.y <= (55.0f + sp10.y)) { + PSVECSubtract(&sp28, &sp10, (Vec* ) &sp1C); PSVECNormalize((Vec* ) &sp1C, (Vec* ) &sp1C); - sp1C.y = lbl_1_rodata_410; - PSVECScale((Vec* ) &sp1C, (Vec* ) &sp1C, lbl_1_rodata_468); - PSVECAdd((Vec* ) &sp1C, &spC.point, (Vec* ) &sp1C); + sp1C.y = 0.0f; + PSVECScale((Vec* ) &sp1C, (Vec* ) &sp1C, 429.0f); + PSVECAdd((Vec* ) &sp1C, &sp10, (Vec* ) &sp1C); sp28.x = sp1C.x; sp28.z = sp1C.z; - sp1C.x = lbl_1_rodata_46C; - sp1C.z = lbl_1_rodata_470; + sp1C.x = -5.0f; + sp1C.z = 10.0f; } } - if (sp28.y < spC.point.y) { - sp28.y = spC.point.y; + if (sp28.y < sp10.y) { + sp28.y = sp10.y; if (var_r27 >= 3) { break; } - //var_f31 = (lbl_1_rodata_474 * (lbl_1_rodata_418 * (s32) (u8) frand())); - var_f27 = lbl_1_rodata_418 + (lbl_1_rodata_474 * (lbl_1_rodata_418 * (s32) (u8) frand())); - var_f31 = lbl_1_rodata_438; + //var_f31 = ((1.0f/255.0f) * (6.0f * frand8())); + var_f27 = 6.0f + ((1.0f/255.0f) * (6.0f * frand8())); + var_f31 = 1.0f; var_r27 += 1; - //var_f31 = (lbl_1_rodata_474 * (lbl_1_rodata_47C * (s32) (u8) frand())); - sp1C.x = lbl_1_rodata_478 + (lbl_1_rodata_474 * (lbl_1_rodata_47C * (s32) (u8) frand())); - sp1C.z = lbl_1_rodata_478 + (lbl_1_rodata_474 * (lbl_1_rodata_47C * (s32) (u8) frand())); + //var_f31 = ((1.0f/255.0f) * (5.0f * frand8())); + sp1C.x = 15.0f + ((1.0f/255.0f) * (5.0f * frand8())); + sp1C.z = 15.0f + ((1.0f/255.0f) * (5.0f * frand8())); HuAudFXPlay(0x41E); } @@ -391,58 +328,58 @@ s32 fn_1_C108(s32 arg0) { } HuAudFXPlay(0x41E); - PSVECSubtract(&sp28, &spC.point, (Vec* ) &sp1C); + PSVECSubtract(&sp28, &sp10, (Vec* ) &sp1C); PSVECNormalize((Vec* ) &sp1C, (Vec* ) &sp1C); - var_f31 = (f32) (lbl_1_rodata_480 * (atan2((f64) -sp1C.z, (f64) sp1C.x) / lbl_1_rodata_488)); + var_f31 = atan2d(-sp1C.z, sp1C.x); BoardModelRotGet(lbl_1_bss_30[4], &sp34); var_f31 = var_f31 - sp34.y; - if (var_f31 < lbl_1_rodata_410) { - var_f31 += lbl_1_rodata_490; + if (var_f31 < 0.0f) { + var_f31 += 360.0f; } - var_r30 = (s32) (var_f31 / lbl_1_rodata_494); - if (fmod(var_f31, lbl_1_rodata_498) > lbl_1_rodata_4A0) { + var_r30 = (s32) (var_f31 / 22.5f); + if (fmod(var_f31, 22.5) > 11.25) { var_r30 += 1; } if (var_r30 >= 0x10) { var_r30 -= 0x10; } - sp1C.y = lbl_1_rodata_410; + sp1C.y = 0.0f; while(TRUE) { fn_1_E310(var_f29); BoardModelRotGet(lbl_1_bss_30[4], &sp34); - var_f31 = (lbl_1_rodata_494 * var_r30) + sp34.y; // TODO: Update rodata for asm change - sp1C.x= cos((lbl_1_rodata_488 * var_f31) / lbl_1_rodata_480); - sp1C.z = -sin((lbl_1_rodata_488 * var_f31) / lbl_1_rodata_480); - PSVECScale(&sp1C, &sp1C, lbl_1_rodata_468); - PSVECAdd(&sp1C, &spC.point, &sp1C); + var_f31 = (22.5f * var_r30) + sp34.y; // TODO: Update rodata for asm change + sp1C.x = cosd(var_f31); + sp1C.z = -sind(var_f31); + PSVECScale(&sp1C, &sp1C, 429.0f); + PSVECAdd(&sp1C, &sp10, &sp1C); sp28.x = sp1C.x; sp28.z = sp1C.z; BoardModelPosSetV(lbl_1_bss_30[6], &sp28); - if (sp34.y >= lbl_1_rodata_4A8 && - sp34.y < lbl_1_rodata_4AC) { + if (sp34.y >= 292.5f && + sp34.y < 315.0f) { break; } HuPrcVSleep(); } for (i = 0; i < 0x3C; i++) { - var_f29 += lbl_1_rodata_420; + var_f29 += 0.375f; fn_1_E310(var_f29); BoardModelRotGet(lbl_1_bss_30[4], &sp34); - var_f31 = (lbl_1_rodata_494 * (f32) var_r30) + sp34.y; // TODO: Update rodata for asm change - sp1C.x = (f32) cos((lbl_1_rodata_488 * (f64) var_f31) / lbl_1_rodata_480); - sp1C.z = (f32) -sin((lbl_1_rodata_488 * (f64) var_f31) / lbl_1_rodata_480); - PSVECScale(&sp1C, &sp1C, lbl_1_rodata_468); - PSVECAdd((Vec* ) &sp1C, &spC.point, (Vec* ) &sp1C); + var_f31 = (22.5f * (f32) var_r30) + sp34.y; + sp1C.x = cosd(var_f31); + sp1C.z = -sind(var_f31); + PSVECScale(&sp1C, &sp1C, 429.0f); + PSVECAdd((Vec* ) &sp1C, &sp10, (Vec* ) &sp1C); sp28.x = sp1C.x; sp28.z = sp1C.z; BoardModelPosSetV(lbl_1_bss_30[6], (Vec* ) &sp28); - var_r28 = var_r28 + lbl_1_rodata_4B0; // TODO: Weird extra rodata + var_r28 += -136.51666f; HuAudFXPitchSet(lbl_1_bss_384, var_r28); HuPrcVSleep(); } - BoardModelRotYSet(lbl_1_bss_30[4], lbl_1_rodata_410); + BoardModelRotYSet(lbl_1_bss_30[4], 0.0f); HuAudFXStop(lbl_1_bss_384); return lbl_1_data_4D0[var_r30]; } @@ -482,25 +419,25 @@ void fn_1_CD04(s32 arg0) { BoardModelAttrReset(lbl_1_bss_30[5], 0x40000002); HuAudFXPlay(0x420); if (BoardPlayerSizeGet(lbl_1_bss_388) == 2) { - while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_4C0) { + while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < 25.0f) { HuPrcVSleep(); } BoardPlayerScaleGet(lbl_1_bss_388, &spC); - while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_4C4) { - spC.x -= lbl_1_rodata_448; - spC.y -= lbl_1_rodata_448; + while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < 30.0f) { + spC.x -= 0.25f; + spC.y -= 0.25f; //temp_f1 = spC.z; - spC.z = spC.z - lbl_1_rodata_448; + spC.z = spC.z - 0.25f; BoardPlayerScaleSetV(lbl_1_bss_388, &spC); HuPrcVSleep(); } - spC.x = spC.y = spC.z = lbl_1_rodata_4C8; + spC.x = spC.y = spC.z = 1.25f; BoardPlayerScaleSetV(lbl_1_bss_388, &spC); } - while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_4C4) { + while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < 30.0f) { HuPrcVSleep(); } if (GWPlayer[lbl_1_bss_388].bowser_suit) { @@ -512,18 +449,18 @@ void fn_1_CD04(s32 arg0) { HuAudFXPlay(0x421); omVibrate(lbl_1_bss_388, 0xC, 4, 2); - while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_4CC) { + while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < 60.0f) { HuPrcVSleep(); } BoardModelPosGet(lbl_1_bss_30[5], &sp18); - temp_f30 = (f32) ((lbl_1_rodata_480 * (atan2(sp24.x - sp18.x, sp24.z - sp18.z) / lbl_1_rodata_488)) / lbl_1_rodata_4D0); + temp_f30 = atan2d(sp24.x - sp18.x, sp24.z - sp18.z)/30; - while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < lbl_1_rodata_408) { + while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < 90.0f) { BoardModelRotYSet(lbl_1_bss_30[5], temp_f30 + BoardModelRotYGet(lbl_1_bss_30[5])); HuPrcVSleep(); } - BoardModelRotYSet(lbl_1_bss_30[5], (f32) (lbl_1_rodata_480 * (atan2(sp24.x - sp18.x, sp24.z - sp18.z) / lbl_1_rodata_488))); + BoardModelRotYSet(lbl_1_bss_30[5], atan2d(sp24.x - sp18.x, sp24.z - sp18.z)); omVibrate(lbl_1_bss_388, 0xC, 4, 2); if (GWPlayer[lbl_1_bss_388].bowser_suit) { @@ -544,15 +481,15 @@ void fn_1_CD04(s32 arg0) { if (var_r30 != (s32) temp_r31->link_cnt) { BoardSpacePosGet(0, temp_r31->link[var_r30], &sp18); - BoardPlayerRotYSet(lbl_1_bss_388, (f32) (lbl_1_rodata_480 * (atan2(sp18.x - sp24.x, sp18.z - sp24.z) / lbl_1_rodata_488))); + BoardPlayerRotYSet(lbl_1_bss_388, atan2d(sp18.x - sp24.x, sp18.z - sp24.z)); } if (BoardPlayerSizeGet(lbl_1_bss_388) == 2) { var_f31 = spC.x; - while (var_f31 < lbl_1_rodata_4DC) { - var_f31 += lbl_1_rodata_4D8; - if (var_f31 > lbl_1_rodata_4DC) { - var_f31 = lbl_1_rodata_4DC; + while (var_f31 < 2.5f) { + var_f31 += 0.104166664f; + if (var_f31 > 2.5f) { + var_f31 = 2.5f; } spC.z = var_f31; spC.y = var_f31; @@ -565,20 +502,313 @@ void fn_1_CD04(s32 arg0) { while (BoardModelMotionTimeGet(lbl_1_bss_30[5]) < BoardModelMotionMaxTimeGet(lbl_1_bss_30[5])) { HuPrcVSleep(); } - HuPrcCreate(&fn_1_DF48, 0x2004, 0x1000, 0); + HuPrcCreate(fn_1_DF48, 0x2004, 0x1000, 0); +} + +void fn_1_D3AC(void) +{ + float temp_f31; + float temp_f30; + s32 temp_r31; + s32 temp_r30; + s16 sp38[20]; + Vec sp2C; + Vec sp20; + Vec sp14; + float sp8[3] = { 1.0f, 0.3f, 2.5f }; + fn_1_121C(0x130008); + BoardStatusShowSetAll(1); + BoardPlayerMotBlendSet(lbl_1_bss_388, 0, 15); + BoardPlayerPosGet(lbl_1_bss_388, &sp14); + for(temp_r31=0; temp_r31<20; temp_r31++) { + sp38[temp_r31] = BoardModelCreate(0x7000A, NULL, 1); + sp2C.x = (sp14.x-25.0f)+((1.0f/255.0f)*(frand8()*50.0f)); + sp2C.y = (sp14.y+1200.0f)+(temp_r31*130.0f)+((1.0f/255.0f)*(frand8()*60.0f)); + sp2C.z = (sp14.z-25.0f)+((1.0f/255.0f)*(frand8()*50.0f)); + BoardModelPosSetV(sp38[temp_r31], &sp2C); + sp20.x = sp20.z = 0; + sp20.y = (1.0f/255.0f)*(frand8()*360.0f); + BoardModelRotSetV(sp38[temp_r31], &sp20); + } + temp_f31 = -4; + temp_r30 = 0; + temp_f30 = sp8[BoardPlayerSizeGet(lbl_1_bss_388)]; + while(1) { + for(temp_r31=0; temp_r31<20; temp_r31++) { + if(temp_r31 < temp_r30) { + continue; + } + BoardModelPosGet(sp38[temp_r31], &sp2C); + BoardModelRotGet(sp38[temp_r31], &sp20); + sp2C.y += temp_f31; + sp20.y += 45.0f; + BoardModelPosSetV(sp38[temp_r31], &sp2C); + BoardModelRotSetV(sp38[temp_r31], &sp20); + if(sp2C.y <= sp14.y+(180.0f*temp_f30)) { + CharModelCoinEffectCreate(1, &sp2C); + BoardModelVisibilitySet(sp38[temp_r31], 0); + temp_r30++; + BoardPlayerCoinsAdd(lbl_1_bss_388, 1); + HuAudFXPlay(7); + omVibrate(lbl_1_bss_388, 12, 6, 6); + + } + } + temp_f31 *= 1.05f; + if(temp_f31 < -40.0f) { + temp_f31 = -40.0f; + } + if(temp_r30 == 20) { + BoardPlayerMotionShiftSet(lbl_1_bss_388, 7, 0, 10, 0); + break; + } + HuPrcVSleep(); + } + while(!BoardPlayerMotionEndCheck(lbl_1_bss_388)) { + HuPrcVSleep(); + } + for(temp_r31=0; temp_r31<20; temp_r31++) { + BoardModelKill(sp38[temp_r31]); + } + HuPrcSleep(60); + BoardPlayerMotBlendSet(lbl_1_bss_388, 180, 15); + BoardStatusShowSetAll(0); + while(!BoardPlayerMotBlendCheck(lbl_1_bss_388)) { + HuPrcVSleep(); + } +} + +s32 fn_1_D8C4(void) +{ + Vec sp40; + Vec sp34; + Vec sp28; + Vec sp1C; + s16 sp14[4]; + float spC[2]; + s32 sp8; + + float temp_f31; + float temp_f30; + + s32 temp_r31; + s16 temp_r30; + BoardSpace *temp_r29; + s32 temp_r28; + s16 temp_r27; + s16 temp_r26; + s32 temp_r25; + s16 temp_r24; + s16 temp_r23; + s16 temp_r22; + + u32 temp_r21; + fn_1_121C(0x130009); + temp_r29 = BoardSpaceGet(0, BoardSpaceFlagSearch(0, 0x800)); + BoardModelPosGet(lbl_1_bss_30[3], &sp40); + for(temp_r31=0; temp_r31<4; temp_r31++) { + sp14[temp_r31] = BoardModelCreate(0x70000, NULL, 1); + BoardModelLayerSet(sp14[temp_r31], 2); + for(temp_r28=0; temp_r28link_cnt; temp_r28++) { + temp_r21 = (BoardSpaceFlagGet(0, temp_r29->link[temp_r28]) & 0xE) >> 1; + if(temp_r21 == temp_r31+2) { + break; + } + } + sp8 = BoardSpacePosGet(0, temp_r29->link[temp_r28], &sp28); + VECSubtract(&sp28, &sp40, &sp34); + BoardModelRotYSet(sp14[temp_r31], atan2d(sp34.x, sp34.z)); + VECNormalize(&sp34, &sp34); + VECScale(&sp34, &sp34, 400); + VECAdd(&sp34, &sp40, &sp34); + sp34.y += 300.0f; + BoardModelPosSetV(sp14[temp_r31], &sp34); + sp1C.x = sp1C.y = sp1C.z = 3; + BoardModelScaleSetV(sp14[temp_r31], &sp1C); + } + temp_r25 = fn_1_E2AC(); + HuWinMesMaxSizeGet(1, spC, 0x13001E); + temp_r30 = HuWinCreate(-10000, 356, spC[0], spC[1], 0); + HuWinMesSet(temp_r30, 0x13001E); + HuWinBGTPLvlSet(temp_r30, 0); + HuWinMesSpeedSet(temp_r30, 0); + temp_r23 = GWPlayer[lbl_1_bss_388].port; + temp_f30 = 0; + temp_r22 = frandmod(20)+20; + restart: + while(1) { + if(GWPlayer[lbl_1_bss_388].com) { + temp_r27 = 0; + temp_r26 = 0; + if(temp_r22) { + temp_r22--; + temp_r24 = 0; + } else { + temp_r24 = PAD_BUTTON_A; + } + break; + } + temp_r24 = HuPadBtnDown[temp_r23]; + temp_r27 = HuPadStkX[temp_r23]; + temp_r26 = HuPadStkY[temp_r23]; + if(!(temp_r24 & PAD_TRIGGER_Z)) { + break; + } + HuAudFXPlay(1); + for(temp_r31=0; temp_r31<4; temp_r31++) { + BoardModelVisibilitySet(sp14[temp_r31], 0); + } + HuWinDispOff(temp_r30); + BoardViewMapExec(lbl_1_bss_388); + HuWinDispOn(temp_r30); + for(temp_r31=0; temp_r31<4; temp_r31++) { + BoardModelVisibilitySet(sp14[temp_r31], 1); + } + } + if(!(temp_r24 & PAD_BUTTON_A)) { + if(abs(temp_r27) < 10) { + temp_r27 = 0; + } + if(abs(temp_r26) < 10) { + temp_r26 = 0; + } + if(temp_r27 != 0 || temp_r26 != 0) { + temp_f31 = atan2d(-temp_r27, -temp_r26); + if(temp_f31 < 0.0f) { + temp_f31 += 360.0f; + } + temp_r31 = temp_f31/90.0f; + temp_f31 = fmod(temp_f31, 90.0); + if(temp_r31 != temp_r25 && temp_f31 >= 20.0f && temp_f31 <= 70.0f){ + temp_f30 = 0; + temp_r25 = temp_r31; + HuAudFXPlay(0); + } + + } + for(temp_r31=0; temp_r31<4; temp_r31++) { + if(temp_r31 == temp_r25) { + sp1C.x = sp1C.y = sp1C.z = sind(temp_f30)+3.0; + temp_f30 += 8.0f; + if(temp_f30 > 180.0f) { + temp_f30 -= 180.0f; + } + } else { + sp1C.x = sp1C.y = sp1C.z = 3.0f; + } + + + BoardModelScaleSetV(sp14[temp_r31], &sp1C); + } + HuPrcVSleep(); + goto restart; + } else { + HuAudFXPlay(2); + for(temp_r31=0; temp_r31<4; temp_r31++) { + BoardModelKill(sp14[temp_r31]); + } + HuWinKill(temp_r30); + return temp_r25; + } +} + +void fn_1_DF48(void) +{ + Vec sp14; + Vec sp8; + s32 temp_r31; + float temp_f31; + float temp_f30; + float temp_f29; + float temp_f28; + BoardModelMotionTimeSet(lbl_1_bss_30[5], 0); + BoardModelAttrSet(lbl_1_bss_30[5], 0x40000002); + temp_f31 = BoardModelRotYGet(lbl_1_bss_30[5]); + temp_f29 = -temp_f31/20.0f; + temp_f30 = BoardModelRotYGet(lbl_1_bss_30[15]); + temp_f28 = -temp_f30/20.0f; + BoardModelScaleGet(lbl_1_bss_30[6], &sp14); + for(temp_r31=0; temp_r31<10; temp_r31++) { + sp14.x = sp14.y = sp14.z = 1.0f-(temp_r31*0.1f); + if(sp14.x < 0.0f) { + sp14.x = sp14.y = sp14.z = 0.0f; + } + BoardModelScaleSetV(lbl_1_bss_30[6], &sp14); + temp_f31 += temp_f29; + BoardModelRotYSet(lbl_1_bss_30[5], temp_f31); + temp_f30 += temp_f28; + BoardModelRotYSet(lbl_1_bss_30[15], temp_f30); + HuPrcVSleep(); + } + BoardModelPosGet(lbl_1_bss_30[15], &sp8); + sp8.z -= 90.0f; + sp8.y += 50.0f; + BoardModelPosSetV(lbl_1_bss_30[6], &sp8); + for(temp_r31=0; temp_r31<10; temp_r31++) { + sp14.x = sp14.y = sp14.z = temp_r31*0.1f; + if(sp14.x > 1.0f) { + sp14.x = sp14.y = sp14.z = 1.0f; + } + BoardModelScaleSetV(lbl_1_bss_30[6], &sp14); + temp_f31 += temp_f29; + BoardModelRotYSet(lbl_1_bss_30[5], temp_f31); + temp_f30 += temp_f28; + BoardModelRotYSet(lbl_1_bss_30[15], temp_f30); + HuPrcVSleep(); + } + sp14.x = sp14.y = sp14.z = 1.0f; + BoardModelScaleSetV(lbl_1_bss_30[6], &sp14); + BoardModelRotYSet(lbl_1_bss_30[5], 0); + BoardModelRotYSet(lbl_1_bss_30[15], 0); + HuPrcEnd(); +} + +s32 fn_1_E2AC(void) +{ + switch(GWSystem.star_pos) { + case 0: + return 3; + + case 1: + case 2: + return 0; + + case 3: + case 4: + return 1; + + case 5: + case 6: + case 7: + return 2; + + default: + return -1; + } } /* Rotate (yaw) of model 4 */ void fn_1_E310(f32 degrees) { Point3d spC; lbl_1_bss_380 += degrees; - if (lbl_1_bss_380 >= lbl_1_rodata_490) { - lbl_1_bss_380 -= lbl_1_rodata_490; + if (lbl_1_bss_380 >= 360.0f) { + lbl_1_bss_380 -= 360.0f; } - if (lbl_1_bss_380 < lbl_1_rodata_410) { - lbl_1_bss_380 += lbl_1_rodata_490; + if (lbl_1_bss_380 < 0.0f) { + lbl_1_bss_380 += 360.0f; } BoardModelRotGet(lbl_1_bss_30[4], &spC); spC.y = lbl_1_bss_380; BoardModelRotSetV(lbl_1_bss_30[4], &spC); } + +void fn_1_E41C(void) +{ + lbl_1_bss_388 = GWSystem.player_curr; + OSReport("Roulette Player %d\n", lbl_1_bss_388); + lbl_1_bss_38C = HuPrcChildCreate(fn_1_BCFC, 8195, 8192, 0, boardMainProc); + HuPrcDestructorSet2(lbl_1_bss_38C, (void *)fn_1_BE74); //fn_1_BE74 requires implicit return + while(lbl_1_bss_38C) { + HuPrcVSleep(); + } +} \ No newline at end of file