diff --git a/config/GMPE01_00/rels/m434Dll/symbols.txt b/config/GMPE01_00/rels/m434Dll/symbols.txt index 642a9fa9..3bd117eb 100644 --- a/config/GMPE01_00/rels/m434Dll/symbols.txt +++ b/config/GMPE01_00/rels/m434Dll/symbols.txt @@ -82,40 +82,40 @@ fn_1_8F3C = .text:0x00008F3C; // type:function size:0x64 fn_1_8FA0 = .text:0x00008FA0; // type:function size:0x1EC _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:0x4 data:float -lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 data:float -lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 data:float -lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 data:float -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_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 -lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 data:float -lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 data:float -lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 data:float -lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 data:float -lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 data:float -lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 data:float -lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 data:float -lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 data:float -lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 data:double -lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 data:double -lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 data:float -lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 data:float -lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 data:double -lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 data:double -lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 data:double -lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 data:float -lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 data:float -lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 data:double -lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 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:0x4 scope:local data:float +lbl_1_rodata_24 = .rodata:0x00000024; // type:object size:0x4 scope:local data:float +lbl_1_rodata_28 = .rodata:0x00000028; // type:object size:0x4 scope:local data:float +lbl_1_rodata_2C = .rodata:0x0000002C; // type:object size:0x4 scope:local data:float +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 scope:local data:float +lbl_1_rodata_44 = .rodata:0x00000044; // type:object size:0x4 scope:local data:float +lbl_1_rodata_48 = .rodata:0x00000048; // type:object size:0x4 scope:local data:float +lbl_1_rodata_4C = .rodata:0x0000004C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_50 = .rodata:0x00000050; // type:object size:0x4 scope:local data:float +lbl_1_rodata_54 = .rodata:0x00000054; // type:object size:0x4 scope:local data:float +lbl_1_rodata_58 = .rodata:0x00000058; // type:object size:0x4 scope:local data:float +lbl_1_rodata_5C = .rodata:0x0000005C; // type:object size:0x4 scope:local data:float +lbl_1_rodata_60 = .rodata:0x00000060; // type:object size:0x4 scope:local data:float +lbl_1_rodata_64 = .rodata:0x00000064; // type:object size:0x4 scope:local data:float +lbl_1_rodata_68 = .rodata:0x00000068; // type:object size:0x4 scope:local data:float +lbl_1_rodata_70 = .rodata:0x00000070; // type:object size:0x8 scope:local data:double +lbl_1_rodata_78 = .rodata:0x00000078; // type:object size:0x8 scope:local data:double +lbl_1_rodata_80 = .rodata:0x00000080; // type:object size:0x4 scope:local data:float +lbl_1_rodata_84 = .rodata:0x00000084; // type:object size:0x4 scope:local data:float +lbl_1_rodata_88 = .rodata:0x00000088; // type:object size:0x8 scope:local data:double +lbl_1_rodata_90 = .rodata:0x00000090; // type:object size:0x8 scope:local data:double +lbl_1_rodata_98 = .rodata:0x00000098; // type:object size:0x8 scope:local data:double +lbl_1_rodata_A0 = .rodata:0x000000A0; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A4 = .rodata:0x000000A4; // type:object size:0x4 scope:local data:float +lbl_1_rodata_A8 = .rodata:0x000000A8; // type:object size:0x8 scope:local data:double +lbl_1_rodata_B0 = .rodata:0x000000B0; // type:object size:0x8 scope:local data:float lbl_1_rodata_B8 = .rodata:0x000000B8; // type:object size:0x4 data:float lbl_1_rodata_BC = .rodata:0x000000BC; // type:object size:0x4 data:float lbl_1_rodata_C0 = .rodata:0x000000C0; // type:object size:0x4 data:float @@ -270,17 +270,21 @@ lbl_1_rodata_43C = .rodata:0x0000043C; // type:object size:0x4 data:4byte lbl_1_rodata_440 = .rodata:0x00000440; // type:object size:0x48 lbl_1_rodata_488 = .rodata:0x00000488; // type:object size:0x48 lbl_1_data_0 = .data:0x00000000; // type:object size:0xC data:float -lbl_1_data_C = .data:0x0000000C; // type:object size:0x18 data:float -lbl_1_data_24 = .data:0x00000024; // type:object size:0x28 -lbl_1_data_4C = .data:0x0000004C; // type:object size:0x23 data:string +lbl_1_data_C = .data:0x0000000C; // type:object size:0xC data:float +lbl_1_data_18 = .data:0x00000018; // type:object size:0xC data:float +lbl_1_data_24 = .data:0x00000024; // type:object size:0x4 +lbl_1_data_28 = .data:0x00000028; // type:object size:0xC data:float +lbl_1_data_34 = .data:0x00000034; // type:object size:0xC data:float +lbl_1_data_40 = .data:0x00000040; // type:object size:0xC data:float +lbl_1_data_4C = .data:0x0000004C; // type:object size:0x23 scope:local data:string lbl_1_data_70 = .data:0x00000070; // type:object size:0x4 data:4byte -lbl_1_data_74 = .data:0x00000074; // type:object size:0x12 data:string -lbl_1_data_86 = .data:0x00000086; // type:object size:0x1C data:string +lbl_1_data_74 = .data:0x00000074; // type:object size:0x12 scope:local data:string +lbl_1_data_86 = .data:0x00000086; // type:object size:0x1C scope:local data:string lbl_1_data_A4 = .data:0x000000A4; // type:object size:0x8 lbl_1_data_AC = .data:0x000000AC; // type:object size:0x8 lbl_1_data_B4 = .data:0x000000B4; // type:object size:0xC -lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x30 -lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x10 +lbl_1_data_C0 = .data:0x000000C0; // type:object size:0x30 data:float +lbl_1_data_F0 = .data:0x000000F0; // type:object size:0x10 data:float lbl_1_data_100 = .data:0x00000100; // type:object size:0x34 lbl_1_data_134 = .data:0x00000134; // type:object size:0x5 data:string lbl_1_data_139 = .data:0x00000139; // type:object size:0x4 data:byte @@ -312,13 +316,15 @@ lbl_1_bss_39C = .bss:0x0000039C; // type:object size:0x4 data:4byte lbl_1_bss_3A0 = .bss:0x000003A0; // type:object size:0x8 lbl_1_bss_3A8 = .bss:0x000003A8; // type:object size:0x2 data:2byte lbl_1_bss_3AA = .bss:0x000003AA; // type:object size:0x2 data:2byte -lbl_1_bss_3AC = .bss:0x000003AC; // type:object size:0x2 data:2byte -lbl_1_bss_3B0 = .bss:0x000003B0; // type:object size:0x8 data:2byte +lbl_1_bss_3AC = .bss:0x000003AC; // type:object size:0x4 data:2byte +lbl_1_bss_3B0 = .bss:0x000003B0; // type:object size:0x2 data:2byte +lbl_1_bss_3B2 = .bss:0x000003B2; // type:object size:0x6 data:2byte lbl_1_bss_3B8 = .bss:0x000003B8; // type:object size:0x4 data:4byte lbl_1_bss_3BC = .bss:0x000003BC; // type:object size:0x4 data:4byte lbl_1_bss_3C0 = .bss:0x000003C0; // type:object size:0x2 data:2byte lbl_1_bss_3C2 = .bss:0x000003C2; // type:object size:0x2 data:2byte -lbl_1_bss_3C4 = .bss:0x000003C4; // type:object size:0x8 data:4byte +lbl_1_bss_3C4 = .bss:0x000003C4; // type:object size:0x4 data:4byte +lbl_1_bss_3C8 = .bss:0x000003C8; // type:object size:0x4 data:4byte lbl_1_bss_3CC = .bss:0x000003CC; // type:object size:0x4 data:4byte lbl_1_bss_3D0 = .bss:0x000003D0; // type:object size:0x4 data:4byte lbl_1_bss_3D4 = .bss:0x000003D4; // type:object size:0x4 data:4byte diff --git a/config/GMPE01_00/splits.txt b/config/GMPE01_00/splits.txt index 94bf7283..47bd92ab 100644 --- a/config/GMPE01_00/splits.txt +++ b/config/GMPE01_00/splits.txt @@ -958,9 +958,11 @@ Runtime.PPCEABI.H/NMWException.cp: extab start:0x80005650 end:0x80005670 extabindex start:0x80005718 end:0x80005748 .text start:0x800E2108 end:0x800E23CC + .sdata start:0x801D39A8 end:0x801D39B0 + +Runtime.PPCEABI.H/runtime.c: .text start:0x800E23CC end:0x800E2AA8 .rodata start:0x8011E4F0 end:0x8011E508 - .sdata start:0x801D39A8 end:0x801D39B0 Runtime.PPCEABI.H/__init_cpp_exceptions.cpp: .text start:0x800E2AA8 end:0x800E2B24 diff --git a/configure.py b/configure.py index ca93e8ba..515938b4 100644 --- a/configure.py +++ b/configure.py @@ -602,6 +602,7 @@ config.libs = [ Object(NonMatching, "Runtime.PPCEABI.H/New.cp"), Object(NonMatching, "Runtime.PPCEABI.H/NewMore.cp"), Object(NonMatching, "Runtime.PPCEABI.H/NMWException.cp"), + Object(NonMatching, "Runtime.PPCEABI.H/runtime.c"), Object(Matching, "Runtime.PPCEABI.H/__init_cpp_exceptions.cpp"), Object(NonMatching, "Runtime.PPCEABI.H/Gecko_ExceptionPPC.cp"), Object(NonMatching, "Runtime.PPCEABI.H/GCN_mem_alloc.c"), @@ -1093,7 +1094,7 @@ config.libs = [ "m434Dll", objects={ Object(Matching, "REL/executor.c"), - Object(NonMatching, "REL/m434Dll/main.c"), + Object(Matching, "REL/m434Dll/main.c"), Object(NonMatching, "REL/m434Dll/map.c"), Object(NonMatching, "REL/m434Dll/player.c"), Object(NonMatching, "REL/m434Dll/fish.c"), diff --git a/include/REL/m434Dll.h b/include/REL/m434Dll.h new file mode 100644 index 00000000..5ea5f4ea --- /dev/null +++ b/include/REL/m434Dll.h @@ -0,0 +1,23 @@ +#ifndef M434DLL_H +#define M434DLL_H + +#include "game/object.h" + +void fn_1_1C44(s32 arg0, s32 arg1); +s32 fn_1_1C88(s32 arg0); +s32 fn_1_1CB8(void); +s32 fn_1_1D54(void); +void fn_1_1D64(s32 arg0); +s32 fn_1_1D74(s32 arg0); + +void fn_1_1DB0(Process *objman); +void fn_1_1E44(void); +void fn_1_43AC(Vec *arg0); +void fn_1_47EC(Vec *arg0); +void fn_1_4854(Process *objman); +void fn_1_4964(void); +void fn_1_6860(Process *objman); +void fn_1_6A84(void); + + +#endif diff --git a/include/game/audio.h b/include/game/audio.h index 0aa2d3af..ef1ca3a9 100644 --- a/include/game/audio.h +++ b/include/game/audio.h @@ -17,7 +17,7 @@ s32 HuAudStreamPlay(char *name, s32 arg1); void HuAudStreamVolSet(s16 vol); void HuAudStreamPauseOn(void); void HuAudStreamPauseOff(void); -void HuAudStreamFadeOut(void); +void HuAudStreamFadeOut(s32 arg0); void HuAudAllStop(void); void HuAudFadeOut(s32 arg0); s32 HuAudFXPlay(s32 arg0); diff --git a/src/REL/m434Dll/main.c b/src/REL/m434Dll/main.c new file mode 100644 index 00000000..bbd39128 --- /dev/null +++ b/src/REL/m434Dll/main.c @@ -0,0 +1,621 @@ +#include "game/object.h" +#include "game/objsub.h" +#include "game/hsfman.h" +#include "game/hsfmotion.h" +#include "game/audio.h" +#include "game/wipe.h" + +#include "game/minigame_seq.h" +#include "game/gamework_data.h" +#include "REL/m434Dll.h" +#include "math.h" +#include "ext_math.h" + +#include "rel_sqrt_consts.h" + + +typedef struct camera_view { + float zoom; + Vec pos; + Vec rot; +} CameraView; + +Vec lbl_1_data_0 = { -700, 2500, -700 }; +Vec lbl_1_data_C = { 0.3, -0.8, 0.3 }; +Vec lbl_1_data_18 = { 34.75, -24.75, 3500 }; +GXColor lbl_1_data_24 = { 255, 255, 255, 255 }; +Vec lbl_1_data_28 = { -700, 2500, 700 }; +Vec lbl_1_data_34 = { 0, 1, 0 }; +Vec lbl_1_data_40 = { 0, 0, 0 }; + + +omObjData *lbl_1_bss_3D4; +omObjData *lbl_1_bss_3D0; +omObjData *lbl_1_bss_3CC; +omObjData *lbl_1_bss_3C8; +omObjData *lbl_1_bss_3C4; +s16 lbl_1_bss_3C2; +s16 lbl_1_bss_3C0; +s32 lbl_1_bss_3BC; +s32 lbl_1_bss_3B8; +s16 lbl_1_bss_3B2[3]; +s16 lbl_1_bss_3B0; +s16 lbl_1_bss_3AC[2]; +s16 lbl_1_bss_3AA; +s16 lbl_1_bss_3A8; +s16 lbl_1_bss_3A0[4]; +s32 lbl_1_bss_39C; +CameraView lbl_1_bss_1C[32]; +s32 lbl_1_bss_18; +s32 lbl_1_bss_10[2]; +s32 lbl_1_bss_8[2]; +s32 lbl_1_bss_4; +float lbl_1_bss_0; + +void fn_1_4FC(omObjData *object); +void fn_1_CC8(omObjData *object); +s32 fn_1_10F4(void); +void fn_1_1104(Process *objman); +void fn_1_1684(void); +void fn_1_16B4(void); + +void ModuleProlog(void) +{ + s32 i; + Process *objman; + OSReport("******* M434ObjectSetup *********\n"); + objman = omInitObjMan(50, 8192); + omGameSysInit(objman); + CZoom = 2097.6f; + Center.x = 0; + Center.y = 172; + Center.z = 361; + CRot.x = -32; + CRot.y = 0; + CRot.z = 0; + for(i=0; i<4; i++) { + CZoomM[i] = CZoom; + CenterM[i] = Center; + CRotM[i] = CRot; + } + fn_1_16B4(); + Hu3DCameraCreate(15); + Hu3DCameraPerspectiveSet(2, 30, 20, 25000, 1.2f); + Hu3DCameraViewportSet(2, 0, 0, 320, 240, 0, 1); + Hu3DCameraPerspectiveSet(13, 30, 20, 25000, 1.2f); + Hu3DCameraViewportSet(13, 0, 0, 640, 480, 0, 1); + lbl_1_bss_3CC = omAddObjEx(objman, 32730, 0, 0, -1, omOutViewMulti); + lbl_1_bss_3CC->work[0] = 4; + HuAudSndGrpSet(59); + lbl_1_data_C.x = -lbl_1_data_0.x; + lbl_1_data_C.y = -lbl_1_data_0.y; + lbl_1_data_C.z = -lbl_1_data_0.z; + VECNormalize(&lbl_1_data_C, &lbl_1_data_C); + lbl_1_bss_3B0 = Hu3DGLightCreateV(&lbl_1_data_0, &lbl_1_data_C, &lbl_1_data_24); + Hu3DGLightInfinitytSet(lbl_1_bss_3B0); + Hu3DGLightStaticSet(lbl_1_bss_3B0, 1); + for(i=0; i<4; i++) { + lbl_1_bss_3A0[i] = GWPlayerCfg[i].group; + } + lbl_1_bss_3D4 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_4FC); + lbl_1_bss_3D0 = omAddObjEx(objman, 0, 1, 0, -1, fn_1_CC8); + fn_1_1DB0(objman); + fn_1_4854(objman); + fn_1_6860(objman); + fn_1_1104(objman); +} + +void fn_1_558(omObjData *object); + +void fn_1_4FC(omObjData *object) +{ + fn_1_1D64(0); + lbl_1_bss_3AA = 0; + lbl_1_bss_3A8 = 0; + object->func = fn_1_558; +} + +s32 lbl_1_data_70 = -1; + +void fn_1_C64(omObjData *object); +void fn_1_1638(s32 arg0); + +void fn_1_558(omObjData *object) +{ + s32 temp_r31; + s32 temp_r29; + s32 sp10[2][4]; + s32 sp8[2]; + + switch(fn_1_1D54()) { + case 0: + lbl_1_bss_3C2 = 60; + lbl_1_bss_3C0 = 60; + fn_1_1D64(1); + lbl_1_bss_10[1] = 60; + WipeCreate(WIPE_MODE_IN, WIPE_TYPE_NORMAL, 60); + HuAudFXPlay(1736); + break; + + case 1: + if(fn_1_10F4() == 2) { + if(lbl_1_bss_10[1] != 0) { + if(--lbl_1_bss_10[1] == 0) { + lbl_1_bss_3BC = MGSeqStartCreate(); + HuAudStreamPlay("sound/mu_047a.adp", 1); + } + } else { + if(MGSeqStatGet(lbl_1_bss_3BC) == 0) { + fn_1_1D64(2); + HuAudFXPlay(1738); + lbl_1_bss_3B8 = MGSeqTimerCreate(60); + fn_1_1638(1); + } + if(lbl_1_data_70 < 0 && (MGSeqStatGet(lbl_1_bss_3BC) & 0x10)) { + lbl_1_data_70 = HuAudSeqPlay(67); + } + } + } + break; + + case 2: + if(--lbl_1_bss_3C0 == 0) { + lbl_1_bss_3C2--; + MGSeqParamSet(lbl_1_bss_3B8, 1, lbl_1_bss_3C2); + lbl_1_bss_3C0 = 60; + } + if(!lbl_1_bss_3C2 || lbl_1_bss_3A8 == 1) { + fn_1_1D64(3); + lbl_1_bss_10[1] = 60; + lbl_1_bss_3BC = MGSeqFinishCreate(); + HuAudStreamFadeOut(30); + HuAudSeqFadeOut(lbl_1_data_70, 100); + } + break; + + case 3: + if(lbl_1_bss_3B8 >= 0) { + MGSeqParamSet(lbl_1_bss_3B8, 2, -1); + lbl_1_bss_3B8 = -1; + } + if(MGSeqStatGet(lbl_1_bss_3BC) == 0) { + fn_1_1D64(4); + lbl_1_bss_10[1] = 60; + } + break; + + case 4: + if(--lbl_1_bss_10[1] == 0) { + sp8[0] = sp8[1] = 0; + for(temp_r31=0; temp_r31<4; temp_r31++) { + temp_r29 = fn_1_1D74(temp_r31); + sp10[temp_r29][sp8[temp_r29]++] = temp_r31; + } + lbl_1_bss_3AA = fn_1_1CB8(); + switch(lbl_1_bss_3AA) { + case -1: + lbl_1_bss_3AC[0] = GWPlayerCfg[sp10[0][0]].character; + lbl_1_bss_3AC[1] = GWPlayerCfg[sp10[0][1]].character; + MGSeqWinCreate(lbl_1_bss_3AC[0], lbl_1_bss_3AC[1], -1, -1); + GWPlayerCoinWinSet(sp10[0][0], 10); + GWPlayerCoinWinSet(sp10[0][1], 10); + HuAudSStreamPlay(1); + break; + + case 0: + MGSeqDrawCreate(); + HuAudSStreamPlay(4); + break; + + case 1: + lbl_1_bss_3AC[0] = GWPlayerCfg[sp10[1][0]].character; + lbl_1_bss_3AC[1] = GWPlayerCfg[sp10[1][1]].character; + MGSeqWinCreate(lbl_1_bss_3AC[0], lbl_1_bss_3AC[1], -1, -1); + GWPlayerCoinWinSet(sp10[1][0], 10); + GWPlayerCoinWinSet(sp10[1][1], 10); + HuAudSStreamPlay(1); + break; + } + fn_1_1D64(5); + lbl_1_bss_10[1] = 210; + } + break; + + case 5: + if(--lbl_1_bss_10[1] == 0) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_C64; + } + + break; + } + for(temp_r31=0; temp_r31<4; temp_r31++) { + CZoomM[temp_r31] = CZoom; + CRotM[temp_r31] = CRot; + CenterM[temp_r31] = Center; + + } + if(omSysExitReq && !WipeStatGet()) { + WipeCreate(WIPE_MODE_OUT, WIPE_TYPE_NORMAL, 60); + object->func = fn_1_C64; + } +} + +void fn_1_C64(omObjData *object) +{ + if(WipeStatGet()) { + return; + } + fn_1_1E44(); + fn_1_4964(); + fn_1_6A84(); + fn_1_1684(); + MGSeqKillAll(); + HuAudFadeOut(1); + omOvlReturnEx(1, 1); + OSReport("******* M434Exit *********\n"); +} + +void fn_1_E44(omObjData *object); +void fn_1_16D8(void); +void fn_1_1950(float arg0, float arg1, float arg2, float arg3, float arg4, float arg5, float arg6); +void fn_1_1A00(s32 arg0); +void fn_1_1A10(float arg0); + +void fn_1_CC8(omObjData *object) +{ + lbl_1_bss_8[0] = 0; + lbl_1_bss_8[1] = 140; + fn_1_16D8(); + fn_1_1950(302, 0, 125, -188, -24, 28, 0); + fn_1_1A00(1); + object->func = fn_1_E44; + omSetStatBit(object, 0x100); + object->model[0] = Hu3DModelCreateFile(0x410007); + Hu3DModelCameraSet(object->model[0], 4); + Hu3DModelLayerSet(object->model[0], 4); + Hu3DModelPosSet(object->model[0], -50, -40, -540); + Hu3DMotionSpeedSet(object->model[0], 1); + Hu3DModelRotSet(object->model[0], 0, 70, 0); + +} + +s32 lbl_1_data_A4[] = { 74, 98 }; +float lbl_1_data_AC[] = { -120, -267.9 }; + +void fn_1_10BC(omObjData *object); + +void fn_1_E44(omObjData *object) +{ + ModelData *temp_r31; + s32 temp_r30; + Vec sp8; + switch(lbl_1_bss_8[0]) { + case 0: + if(--lbl_1_bss_8[1] == 0) { + Hu3DModelAttrSet(object->model[0], 1); + lbl_1_bss_8[0] = 1; + } + for(temp_r30=0; temp_r30<2u; temp_r30++) { + if(lbl_1_bss_4 == lbl_1_data_A4[temp_r30]) { + temp_r31 = &Hu3DData[object->model[0]]; + sp8.x = temp_r31->pos.x+(lbl_1_data_AC[temp_r30]*cosd(temp_r31->rot.y)); + sp8.y = -15.000001f; + sp8.z = temp_r31->pos.z-(lbl_1_data_AC[temp_r30]*sind(temp_r31->rot.y)); + if(temp_r30 == 0) { + fn_1_47EC(&sp8); + HuAudFXPlay(1731); + } else { + fn_1_43AC(&sp8); + HuAudFXPlay(1739); + } + } + } + lbl_1_bss_4++; + break; + + case 1: + lbl_1_bss_0 += 0.02f; + if(lbl_1_bss_0 >= 1.0f) { + lbl_1_bss_8[0] = 2; + lbl_1_bss_0 = 1.0f; + object->func = fn_1_10BC; + } + fn_1_1A10(lbl_1_bss_0); + break; + } +} + +void fn_1_1788(void); + +void fn_1_10BC(omObjData *object) +{ + fn_1_1788(); + fn_1_1788(); + object->func = NULL; +} + +s32 fn_1_10F4(void) +{ + return lbl_1_bss_8[0]; +} + +void fn_1_1150(omObjData *object); + +u16 lbl_1_data_B4[6] = { + 0, 1, 2, 3, 4, 4 +}; + +float lbl_1_data_C0[6][2] = { + 0,0, + 0,0, + -33,-2, + -9,-2, + 11,-2, + 31,-2 +}; + +float lbl_1_data_F0[2][2] = { + 104, 56, + 472, 56 +}; + +typedef struct work_1150 { + s32 unk0; + s16 unk4; + s16 unk6[6]; + u16 unk12; +} Work1150; + +void fn_1_1104(Process *objman) +{ + lbl_1_bss_3C4 = omAddObjEx(objman, 0, 0, 0, -1, fn_1_1150); +} + +void fn_1_1470(omObjData *object); + +void fn_1_1150(omObjData *object) +{ + Work1150 *temp_r31; + u32 temp_r30; + s32 temp_r29; + temp_r31 = HuMemDirectMallocNum(HEAP_SYSTEM, 2*sizeof(Work1150), MEMORY_DEFAULT_NUM); + object->data = temp_r31; + memset(object->data, 0, 2*sizeof(Work1150)); + for(temp_r29=0; temp_r29<2; temp_r31++, temp_r29++) { + for(temp_r30=0; temp_r30<6; temp_r30++) { + switch(lbl_1_data_B4[temp_r30]) { + case 0: + temp_r31->unk6[temp_r30] = espEntry(0x61001D, 1, 0); + espPriSet(temp_r31->unk6[temp_r30], 256); + espColorSet(temp_r31->unk6[temp_r30], 0, 0, 0); + espTPLvlSet(temp_r31->unk6[temp_r30], 0.5); + break; + + case 1: + temp_r31->unk6[temp_r30] = espEntry((temp_r29 == 0) ? 0x61001B : 0x61001C, 1, 0); + espPriSet(temp_r31->unk6[temp_r30], 256); + break; + + case 2: + temp_r31->unk6[temp_r30] = espEntry(0x41000C, 1, 0); + espPriSet(temp_r31->unk6[temp_r30], 256); + espScaleSet(temp_r31->unk6[temp_r30], 0.75, 0.75); + break; + + case 3: + temp_r31->unk6[temp_r30] = espEntry(0x41000D, 1, 0); + espPriSet(temp_r31->unk6[temp_r30], 256); + break; + + case 4: + temp_r31->unk6[temp_r30] = espEntry(0x610033, 1, 0); + espPriSet(temp_r31->unk6[temp_r30], 255); + break; + } + espDispOff(temp_r31->unk6[temp_r30]); + espDrawNoSet(temp_r31->unk6[temp_r30], 0); + espAttrSet(temp_r31->unk6[temp_r30], 1); + espPosSet(temp_r31->unk6[temp_r30], lbl_1_data_F0[temp_r29][0]+lbl_1_data_C0[temp_r30][0], lbl_1_data_F0[temp_r29][1]+lbl_1_data_C0[temp_r30][1]); + } + temp_r31->unk0 = -1; + } + HuDataDirClose(0x610000); + object->func = fn_1_1470; +} + +void fn_1_1470(omObjData *object) +{ + float temp_f31; + Work1150 *temp_r31; + s32 temp_r30; + s32 temp_r29; + temp_r31 = object->data; + for(temp_r29=0; temp_r29<2; temp_r29++, temp_r31++) { + if(temp_r31->unk0 >= 0) { + if(temp_r31->unk0 == 0) { + for(temp_r30=0; temp_r30<6; temp_r30++) { + espDispOn(temp_r31->unk6[temp_r30]); + } + temp_r31->unk0++; + } + if(temp_r31->unk12) { + temp_r31->unk12--; + temp_f31 = (0.5*sind((180.0f*temp_r31->unk12)/16.0f))+1.0; + espScaleSet(temp_r31->unk6[4], temp_f31, temp_f31); + espScaleSet(temp_r31->unk6[5], temp_f31, temp_f31); + } + espBankSet(temp_r31->unk6[4], temp_r31->unk4/10); + espBankSet(temp_r31->unk6[5], temp_r31->unk4%10); + } + } +} + +void fn_1_1638(s32 arg0) +{ + Work1150 *temp_r31; + s32 temp_r30; + temp_r31 = lbl_1_bss_3C4->data; + for(temp_r30=0; temp_r30<2; temp_r30++, temp_r31++) { + temp_r31->unk0 = 0; + } +} + +void fn_1_1684(void) +{ + HuMemDirectFree(lbl_1_bss_3C4->data); +} + +void fn_1_16B4(void) +{ + lbl_1_bss_39C = 0; + lbl_1_bss_18 = 0; +} + +void fn_1_16D8(void) +{ + CameraView *temp_r31 = &lbl_1_bss_1C[lbl_1_bss_39C++]; + temp_r31->zoom = CZoom; + temp_r31->pos.x = Center.x; + temp_r31->pos.y = Center.y; + temp_r31->pos.z = Center.z; + temp_r31->rot.x = CRot.x; + temp_r31->rot.y = CRot.y; + temp_r31->rot.z = CRot.z; +} + +void fn_1_1788(void) +{ + CameraView *temp_r31 = &lbl_1_bss_1C[--lbl_1_bss_39C]; + CZoom = temp_r31->zoom; + Center.x = temp_r31->pos.x; + Center.y = temp_r31->pos.y; + Center.z = temp_r31->pos.z; + CRot.x = temp_r31->rot.x; + CRot.y = temp_r31->rot.y; + CRot.z = temp_r31->rot.z; +} + +void fn_1_1838(CameraView *arg0) +{ + CameraView *temp_r30; + CameraView sp8; + sp8 = lbl_1_bss_1C[lbl_1_bss_39C++]; + temp_r30 = &sp8; + memcpy(temp_r30, arg0, sizeof(CameraView)); + CZoom = arg0->zoom; + Center.x = arg0->pos.x; + Center.y = arg0->pos.y; + Center.z = arg0->pos.z; + CRot.x = arg0->rot.x; + CRot.y = arg0->rot.y; + CRot.z = arg0->rot.z; +} + +void fn_1_1950(float arg0, float arg1, float arg2, float arg3, float arg4, float arg5, float arg6) +{ + CameraView *temp_r31 = &lbl_1_bss_1C[lbl_1_bss_39C++]; + temp_r31->zoom = CZoom = arg0; + temp_r31->pos.x = Center.x = arg1; + temp_r31->pos.y = Center.y = arg2; + temp_r31->pos.z = Center.z = arg3; + temp_r31->rot.x = CRot.x = arg4; + temp_r31->rot.y = CRot.y = arg5; + temp_r31->rot.z = CRot.z = arg6; +} + +void fn_1_1A00(s32 arg0) +{ + lbl_1_bss_18 = arg0; +} + +#define LERP_PARAM(view1, view2, field, weight) ((view1)->field+) + +void fn_1_1A10(float arg0) +{ + float weight; + CameraView *view1 = &lbl_1_bss_1C[lbl_1_bss_39C-1]; + CameraView *view2 = view1-1; + if(lbl_1_bss_39C < 2) { + return; + } + switch(lbl_1_bss_18) { + case 0: + weight = arg0; + break; + + case 1: + weight = sind(90.0f*arg0); + break; + + case 2: + weight = sind(90.0f*arg0); + weight *= weight; + break; + } + + CZoom = view1->zoom+(weight*(view2->zoom-view1->zoom)); + Center.x = view1->pos.x+(weight*(view2->pos.x-view1->pos.x)); + Center.y = view1->pos.y+(weight*(view2->pos.y-view1->pos.y)); + Center.z = view1->pos.z+(weight*(view2->pos.z-view1->pos.z)); + CRot.x = view1->rot.x+(weight*(view2->rot.x-view1->rot.x)); + CRot.y = view1->rot.y+(weight*(view2->rot.y-view1->rot.y)); + CRot.z = view1->rot.z+(weight*(view2->rot.z-view1->rot.z)); +} + +void fn_1_1C44(s32 arg0, s32 arg1) +{ + Work1150 *temp_r31 = &((Work1150 *)lbl_1_bss_3C4->data)[arg0]; + temp_r31->unk4 += arg1; + temp_r31->unk12 = 16; +} + +s32 fn_1_1C88(s32 arg0) +{ + Work1150 *temp_r31 = &((Work1150 *)lbl_1_bss_3C4->data)[arg0]; + return temp_r31->unk4; +} + +s32 fn_1_1CB8(void) +{ + s32 temp_r31 = fn_1_1C88(0); + s32 temp_r30 = fn_1_1C88(1); + if(temp_r31 == temp_r30) { + return 0; + } + if(temp_r31 > temp_r30) { + return -1; + } else { + return 1; + } +} + +s16 fn_1_1D44(void) +{ + return lbl_1_bss_3C2; +} + +s32 fn_1_1D54(void) +{ + return lbl_1_bss_10[0]; +} + +void fn_1_1D64(s32 arg0) +{ + lbl_1_bss_10[0] = arg0; +} + +s32 fn_1_1D74(s32 arg0) +{ + return lbl_1_bss_3A0[arg0]; +} + +s16 fn_1_1D8C(void) +{ + return lbl_1_bss_3AA; +} + +void fn_1_1D9C(void) +{ + lbl_1_bss_3A8 = 1; +} \ No newline at end of file diff --git a/src/REL/w10Dll/host.c b/src/REL/w10Dll/host.c index 8fb2d502..d183aa8c 100644 --- a/src/REL/w10Dll/host.c +++ b/src/REL/w10Dll/host.c @@ -50,7 +50,7 @@ void HostPosSet(s16 arg0) { hostPos = arg0; } -void UpdateHost(void) { +static void UpdateHost(void) { Mtx rot; Vec sp14; Vec sp8; @@ -64,7 +64,7 @@ void UpdateHost(void) { Hu3D2Dto3D(&hostPosTbl[hostPos], 1, &sp14); BoardModelPosSetV(hostMdl, &sp14); BoardCameraRotGet(&sp8); - PSMTXRotRad(rot, 'y', 0.2617994f); + MTXRotDeg(rot, 'y', 15); BoardModelMtxSet(hostMdl, &rot); BoardModelRotSet(hostMdl, sp8.x, 0.0f, 0.0f); BoardModelScaleSet(hostMdl, 0.2f, 0.2f, 0.2f); diff --git a/src/game/audio.c b/src/game/audio.c index 6d06279b..b90ac0bd 100644 --- a/src/game/audio.c +++ b/src/game/audio.c @@ -86,7 +86,7 @@ void HuAudStreamPauseOff(void) { AISetStreamPlayState(1); } -void HuAudStreamFadeOut(void) { +void HuAudStreamFadeOut(s32 arg0) { } void HuAudAllStop(void) {