#include #include #include using SVertexData = SWA::Sequence::Utility::CPlayMovieWrapper::CRender::SVertexData; // Update movie player aspect ratio. PPC_FUNC_IMPL(__imp__sub_82AE30D8); PPC_FUNC(sub_82AE30D8) { auto pViewportWidth = (be*)g_memory.Translate(ctx.r4.u32 + 0x14); auto pViewportHeight = (be*)g_memory.Translate(ctx.r4.u32 + 0x18); auto pTopLeft = (SVertexData*)g_memory.Translate(ctx.r4.u32 + 0x6C); auto pTopRight = (SVertexData*)g_memory.Translate(ctx.r4.u32 + 0x6C + sizeof(SVertexData)); auto pBottomRight = (SVertexData*)g_memory.Translate(ctx.r4.u32 + 0x6C + sizeof(SVertexData) * 2); auto pBottomLeft = (SVertexData*)g_memory.Translate(ctx.r4.u32 + 0x6C + sizeof(SVertexData) * 3); auto quadWidth = std::fabs(pTopRight->X - pTopLeft->X) * ((float)*pViewportWidth / 2); auto quadHeight = std::fabs(pTopLeft->Y - pBottomLeft->Y) * ((float)*pViewportHeight / 2); auto movieAspectRatio = quadWidth / quadHeight; auto windowAspectRatio = (float)GameWindow::s_width / (float)GameWindow::s_height; auto a = -1.00078f; auto b = 1.00139f; auto scaleU = 1.0f; auto scaleV = 1.0f; auto centreV = (pTopLeft->V + pBottomRight->V) / 2.0f; if (windowAspectRatio > movieAspectRatio) { scaleU = movieAspectRatio / windowAspectRatio; } else { scaleV = windowAspectRatio / movieAspectRatio; } pTopLeft->X = a; pTopLeft->Y = b; pTopLeft->U = (pTopLeft->U - centreV) / scaleU + centreV; pTopLeft->V = (pTopLeft->V - centreV) / scaleV + centreV; pTopRight->X = b; pTopRight->Y = b; pTopRight->U = (pTopRight->U - centreV) / scaleU + centreV; pTopRight->V = (pTopRight->V - centreV) / scaleV + centreV; pBottomLeft->X = a; pBottomLeft->Y = a; pBottomLeft->U = (pBottomLeft->U - centreV) / scaleU + centreV; pBottomLeft->V = (pBottomLeft->V - centreV) / scaleV + centreV; pBottomRight->X = b; pBottomRight->Y = a; pBottomRight->U = (pBottomRight->U - centreV) / scaleU + centreV; pBottomRight->V = (pBottomRight->V - centreV) / scaleV + centreV; __imp__sub_82AE30D8(ctx, base); } void RemoveMoviePlayerLetterboxMidAsmHook() {} bool MotionBlurMidAsmHook() { return Config::MotionBlur != EMotionBlur::Off; }