diff --git a/rpcs3/Emu/Cell/Modules/cellAvconfExt.cpp b/rpcs3/Emu/Cell/Modules/cellAvconfExt.cpp index 6157bcc29e..7cf8be34a8 100644 --- a/rpcs3/Emu/Cell/Modules/cellAvconfExt.cpp +++ b/rpcs3/Emu/Cell/Modules/cellAvconfExt.cpp @@ -1,6 +1,8 @@ #include "stdafx.h" #include "Emu/System.h" #include "Emu/Cell/PPUModule.h" +#include "Emu/IdManager.h" +#include "Emu/RSX/rsx_utils.h" #include "cellAudioIn.h" #include "cellAudioOut.h" @@ -9,8 +11,6 @@ logs::channel cellAvconfExt("cellAvconfExt"); -vm::gvar g_gamma; // TODO - s32 cellAudioOutUnregisterDevice(u32 deviceNumber) { cellAvconfExt.todo("cellAudioOutUnregisterDevice(deviceNumber=0x%x)", deviceNumber); @@ -56,7 +56,8 @@ s32 cellVideoOutGetGamma(u32 videoOut, vm::ptr gamma) return CELL_VIDEO_OUT_ERROR_UNSUPPORTED_VIDEO_OUT; } - *gamma = *g_gamma; + auto conf = fxm::get_always(); + *gamma = conf->gamma; return CELL_OK; } @@ -87,7 +88,8 @@ s32 cellVideoOutSetGamma(u32 videoOut, f32 gamma) return CELL_VIDEO_OUT_ERROR_ILLEGAL_PARAMETER; } - *g_gamma = gamma; + auto conf = fxm::get_always(); + conf->gamma = gamma; return CELL_OK; } @@ -152,12 +154,6 @@ s32 cellVideoOutSetCopyControl(u32 videoOut, u32 control) DECLARE(ppu_module_manager::cellAvconfExt)("cellSysutilAvconfExt", []() { - REG_VAR(cellSysutilAvconfExt, g_gamma).flag(MFF_HIDDEN).init = [] - { - // Test - *g_gamma = 1.0f; - }; - REG_FUNC(cellSysutilAvconfExt, cellAudioOutUnregisterDevice); REG_FUNC(cellSysutilAvconfExt, cellAudioOutGetDeviceInfo2); REG_FUNC(cellSysutilAvconfExt, cellVideoOutSetXVColor); diff --git a/rpcs3/Emu/Cell/Modules/cellVideoOut.cpp b/rpcs3/Emu/Cell/Modules/cellVideoOut.cpp index e8bc92547e..9626200085 100644 --- a/rpcs3/Emu/Cell/Modules/cellVideoOut.cpp +++ b/rpcs3/Emu/Cell/Modules/cellVideoOut.cpp @@ -1,6 +1,8 @@ #include "stdafx.h" #include "Emu/System.h" #include "Emu/Cell/PPUModule.h" +#include "Emu/IdManager.h" +#include "Emu/RSX/rsx_utils.h" #include "cellVideoOut.h" @@ -145,6 +147,11 @@ error_code cellVideoOutConfigure(u32 videoOut, vm::ptr(); + conf->aspect = config->aspect; + conf->format = config->format; + conf->scanline_pitch = config->pitch; + return CELL_OK; } diff --git a/rpcs3/Emu/RSX/rsx_utils.h b/rpcs3/Emu/RSX/rsx_utils.h index 300384c3a9..ed700b7dc4 100644 --- a/rpcs3/Emu/RSX/rsx_utils.h +++ b/rpcs3/Emu/RSX/rsx_utils.h @@ -52,6 +52,14 @@ namespace rsx {} }; + struct avconf + { + u8 format = 0; //XRGB + u8 aspect = 0; //AUTO + u32 scanline_pitch = 0; //PACKED + f32 gamma = 1.f; //NO GAMMA CORRECTION + }; + template void pad_texture(void* input_pixels, void* output_pixels, u16 input_width, u16 input_height, u16 output_width, u16 output_height) {