210 lines
7.8 KiB
C++
210 lines
7.8 KiB
C++
// AUTO-GENERATED FILE, MOVE TO 'gh_fix' FOLDER PREVENT OVERWRITING!!!!!
|
|
|
|
#include <r3/binders/auto.h>
|
|
#include <gh_global.h>
|
|
#include <bink.h>
|
|
|
|
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();
|
|
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;
|
|
}
|
|
}
|