// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!! #include #include #include extern "C" { undefined FUN_00401270(void); // 00401270 // FUN_00401270 // cdecl undefined FUN_0047bb20(undefined4 param_1); // 0047bb20 // FUN_0047bb20 // cdecl HANDLE r3_getDrawSemaphore(void); // 004013f0 // r3_getDrawSemaphore // cdecl undefined FUN_0047bb10(void); // 0047bb10 // FUN_0047bb10 // cdecl void r3_validateBinkVideoQuality( byte videoBpp, byte wantedVideoQuality); // 00442090 // r3_validateBinkVideoQuality // // stdcall BOOL GLD_bGetViewportAttributes( short param_1, short combinedWindowHandle, GLD_ViewportAttributes *out); // 0046f240 // GLD_bGetViewportAttributes // cdecl int IPT_fn_hGetEntryActionHandle( const char *param_1); // 00506510 // IPT_fn_hGetEntryActionHandle // cdecl undefined FUN_0046f680(undefined param_1, undefined4 param_2); // 0046f680 // FUN_0046f680 // cdecl undefined FUN_00441f30(void); // 00441f30 // FUN_00441f30 // cdecl undefined FUN_00470f20(void); // 00470f20 // FUN_00470f20 // cdecl undefined FUN_0047bfe0(undefined4 param_1); // 0047bfe0 // FUN_0047bfe0 // cdecl undefined FUN_00485320(undefined4* outPtr, undefined4 param_2, undefined4 param_3, undefined4 unused); // 00485320 // FUN_00485320 // cdecl undefined SND_fn_vKillAllObjectSound( void); // 0040a220 // SND_fn_vKillAllObjectSound // cdecl undefined *getMoviePath(void); // 0055aa00 // getMoviePath // cdecl undefined FUN_004420f0(undefined4 param_1); // 004420f0 // FUN_004420f0 // cdecl undefined r3_binkLoop(void); // 004427a0 // r3_binkLoop // cdecl undefined FUN_00485400(undefined4 param_1); // 00485400 // FUN_00485400 // cdecl undefined FUN_004422c0(undefined4 param_1); // 004422c0 // FUN_004422c0 // cdecl undefined FUN_00444810(void); // 00444810 // FUN_00444810 // cdecl HBINK r3_binkOpen(char *movieFilename, ulong flags); // 00442240 // r3_binkOpen // cdecl void Erm_fn_v_UpdateLastError( ushort uwStartOfWarningsId, byte ucModuleId, ulong ulChannelId, ushort uwErrNum, long lDebugData, uchar ucOpenInfoWindow, uchar ucStopForDebug, char *szPersonalMsg); // 0043e410 // Erm_fn_v_UpdateLastError // stdcall undefined FUN_0046f410(uint unused0, uint unused1); // 0046f410 // FUN_0046f410 // cdecl void r3_checkMovieDisc( char *movieName); // 00445a10 // r3_checkMovieDisc // stdcall undefined FUN_0046ed40(undefined param_1, undefined param_2, undefined2 param_3); // 0046ed40 // FUN_0046ed40 // cdecl uint32_t r3_doesMovieHaveSoundtrack( char *param_1); // 00442130 // r3_doesMovieHaveSoundtrack // cdecl // 00442330 /* WARNING: Inlined function: FUN_00485390 */ void r3_BNK_playMovie(char *param_1, char param_2, int param_3) { uint uVar1; byte bVar2; undefined *puVar3; char *puVar4; int haveSoundtrack; longlong lVar5; longlong lVar6; float fVar5; float extraout_ST0; undefined4 uVar7; char auStack_1b4[65]; undefined1 auStack_b0[64]; GLD_ViewportAttributes GStack_70; bVar2 = BYTE_007a2c54; g_currentBinkMovie.drawSemaphore = (HANDLE)r3_getDrawSemaphore(); DAT_007a2e01 = FUN_0047bb10(); g_StopVideoActionHandle = IPT_fn_hGetEntryActionHandle(s_StopVideo_005bd740); uVar1 = (uint)bVar2; DWORD_005bd62c = uVar1; if (param_2 != '\0') { SND_fn_vKillAllObjectSound(); } r3_validateBinkVideoQuality(g_bink_videoBpp, g_bink_realVideoQuality); haveSoundtrack = FUN_00444810(); BinkSetSoundTrack(haveSoundtrack + 1); if (param_1 == 0) { r3_checkMovieDisc(*(char **)(DAT_007a2c4c + 4 + uVar1 * 8)); uVar7 = *(undefined4 *)(DAT_007a2c4c + 4 + uVar1 * 8); /* maybe, not initialized yet */ puVar3 = getMoviePath(); sprintf((char *)auStack_1b4, s_percent_s_path_2, puVar3, uVar7); puVar4 = strlwr(auStack_1b4); haveSoundtrack = r3_doesMovieHaveSoundtrack(puVar4); if (haveSoundtrack == 0) { /* BINKIOSIZE | BINKNOSKIP | BINKSNDTRACK */ uVar7 = 0x1084000; } else { /* BINKIOSIZE | BINKNOSKIP */ uVar7 = 0x1080000; } g_binkHandle = (HBINK)r3_binkOpen(auStack_1b4, uVar7); if (g_binkHandle != (HBINK)0x0) goto LAB_00442549; uVar7 = *(undefined4 *)(DAT_007a2c4c + 4 + uVar1 * 8); puVar3 = getMoviePath(); sprintf((char *)auStack_1b4, s_percent_s_path_3, 0x5d26a8, puVar3, uVar7); puVar4 = strlwr((char *)*(uint **)(DAT_007a2c4c + 4 + uVar1 * 8)); haveSoundtrack = r3_doesMovieHaveSoundtrack(puVar4); if (haveSoundtrack == 0) { /* BINKNOSKIP | BINKSNDTRACK | BINKPRELOADALL */ uVar7 = 0x86000; } else { /* BINKNOSKIP | BINKPRELOADALL */ uVar7 = 0x82000; } } else { /* Similar logic to above */ r3_checkMovieDisc((char *)param_1); sprintf((char *)auStack_1b4, s_percent_s_path_2, s_Videos_005bd72c, param_1); puVar4 = strlwr(auStack_1b4); haveSoundtrack = r3_doesMovieHaveSoundtrack(puVar4); if (haveSoundtrack == 0) { /* BINKIOSIZE | BINKNOSKIP | BINKSNDTRACK */ uVar7 = 0x1084000; } else { /* BINKIOSIZE | BINKNOSKIP */ uVar7 = 0x1080000; } g_binkHandle = (HBINK)r3_binkOpen(auStack_1b4, uVar7); if ((g_binkHandle != (HBINK)0x0) || (g_currentBinkMovie.movieName[0] == '\0')) goto LAB_00442549; /* g_currentBinkMovie.movieName */ sprintf((char *)auStack_1b4, s_percent_s_path_3, g_currentBinkMovie.movieName, s_Videos_005bd72c, param_1); puVar4 = strlwr(param_1); haveSoundtrack = r3_doesMovieHaveSoundtrack(puVar4); if (haveSoundtrack == 0) { uVar7 = 0x86000; } else { uVar7 = 0x82000; } } g_binkHandle = (HBINK)r3_binkOpen(auStack_1b4, uVar7); if (g_binkHandle == (HBINK)0x0) { return; } LAB_00442549: g_binkMovieEnded = 0; DAT_007a2dbc = 0; DAT_007a2dc0 = 0; DAT_007a2da8 = 0; DAT_007a2dac = 0; DAT_007a2db0 = 0; DAT_007a2db8 = 0; DAT_007a2e14 = 1; if (g_binkHandle == (HBINK)0x0) { Erm_fn_v_UpdateLastError(6, g_BNK_moduleId, 0, 7, -1, 0xff, 0xff, (char *)auStack_1b4); } else { DAT_007a2dd4 = g_binkHandle->Width; FLOAT_007a2dd8 = (float)g_binkHandle->Height; g_bink_videoBpp = FUN_00485320(&g_binkDestStorage, g_binkHandle->Width, g_binkHandle->Height, 0); haveSoundtrack = g_binkDestStorage; if (g_binkDestStorage != 0) { r3_validateBinkVideoQuality(g_bink_videoBpp, g_bink_realVideoQuality); FUN_00485400(haveSoundtrack, 0); FUN_004420f0(0); uVar7 = FUN_00401270(0, 0); FUN_0046f680(uVar7, 0); FUN_0046ed40(0, 0, 1); FUN_0046f410(0, 0xff); FUN_0046ed40(0, 0, 1); GLD_bGetViewportAttributes(0, 0, &GStack_70); fVar5 = (float)DAT_007a2dd4 * ((float)GStack_70.dwWidth / (float)(DAT_007a2dd4 * 2)); extraout_ST0 = (float)(fVar5 + fVar5); lVar5 = r3_ftol(extraout_ST0); lVar6 = r3_ftol((float)((float)(uint)FLOAT_007a2dd8 * extraout_ST0)); DAT_007a2ddc = (GStack_70.dwHeight - (int)lVar6) >> 1; DAT_007a2de0 = DAT_007a2ddc + (int)lVar6; DAT_007a2de4 = (GStack_70.dwWidth - (int)lVar5) >> 1; DAT_007a2de8 = DAT_007a2de4 + (int)lVar5; BinkSetSoundOnOff(g_binkHandle, 1); if (param_3 == -1) { param_3 = DAT_007a2dd0; } BinkSetVolume(g_binkHandle, param_3); FUN_0047bfe0(4); FUN_00470f20(); r3_binkLoop(); g_binkDestStorage = 0; BinkSetSoundOnOff(g_binkHandle, 0); FUN_004422c0(g_binkHandle); g_binkHandle = (HBINK)0x0; FUN_00441f30(); FUN_0047bb20(4); uVar7 = FUN_00401270(0, 0); FUN_0046f680(uVar7); FUN_0046ed40(0, 0, 3); FUN_0046f410(0, 0xff); FUN_0046ed40(0, 0, 3); return; } } return; } }