diff --git a/include/services/y2r.hpp b/include/services/y2r.hpp index 963199fc..fc21fc12 100644 --- a/include/services/y2r.hpp +++ b/include/services/y2r.hpp @@ -75,6 +75,7 @@ class Y2RService { void setInputLineWidth(u32 messagePointer); void setInputLines(u32 messagePointer); void setOutputFormat(u32 messagePointer); + void setPackageParameter(u32 messagePointer); void setReceiving(u32 messagePointer); void setRotation(u32 messagePointer); void setSendingY(u32 messagePointer); diff --git a/src/core/services/y2r.cpp b/src/core/services/y2r.cpp index 44b7c6ea..7d6e4c41 100644 --- a/src/core/services/y2r.cpp +++ b/src/core/services/y2r.cpp @@ -23,6 +23,7 @@ namespace Y2RCommands { StartConversion = 0x00260000, StopConversion = 0x00270000, IsBusyConversion = 0x00280000, + SetPackageParameter = 0x002901C0, PingProcess = 0x002A0000, DriverInitialize = 0x002B0000, DriverFinalize = 0x002C0000 @@ -60,6 +61,7 @@ void Y2RService::handleSyncRequest(u32 messagePointer) { case Y2RCommands::SetInputLineWidth: setInputLineWidth(messagePointer); break; case Y2RCommands::SetInputLines: setInputLines(messagePointer); break; case Y2RCommands::SetOutputFormat: setOutputFormat(messagePointer); break; + case Y2RCommands::SetPackageParameter: setPackageParameter(messagePointer); break; case Y2RCommands::SetReceiving: setReceiving(messagePointer); break; case Y2RCommands::SetRotation: setRotation(messagePointer); break; case Y2RCommands::SetSendingY: setSendingY(messagePointer); break; @@ -176,6 +178,17 @@ void Y2RService::setOutputFormat(u32 messagePointer) { mem.write32(messagePointer + 4, Result::Success); } +void Y2RService::setPackageParameter(u32 messagePointer) { + // Package parameter is 3 words + const u32 word1 = mem.read32(messagePointer + 4); + const u32 word2 = mem.read32(messagePointer + 8); + const u32 word3 = mem.read32(messagePointer + 12); + Helpers::warn("Y2R::SetPackageParameter\n"); + + mem.write32(messagePointer, IPC::responseHeader(0x29, 1, 0)); + mem.write32(messagePointer + 4, Result::Success); +} + void Y2RService::setRotation(u32 messagePointer) { const u32 rot = mem.read32(messagePointer + 4); log("Y2R::SetRotation (format = %d)\n", rot); diff --git a/src/host_shaders/opengl_fragment_shader.frag b/src/host_shaders/opengl_fragment_shader.frag index 5b6e6830..3f1a256b 100644 --- a/src/host_shaders/opengl_fragment_shader.frag +++ b/src/host_shaders/opengl_fragment_shader.frag @@ -232,8 +232,8 @@ void calcLighting(out vec4 primary_color, out vec4 secondary_color) { // Positional Light if (bitfieldExtract(GPUREG_LIGHTi_CONFIG, 0, 1) == 0) { - error_unimpl = true; - // half_vector = normalize(normalize(light_vector + v_view) + view); + // error_unimpl = true; + half_vector = normalize(normalize(light_vector + v_view) + view); } // Directional light @@ -328,7 +328,7 @@ void calcLighting(out vec4 primary_color, out vec4 secondary_color) { if (fresnel_output2 == 1u) secondary_color.a = d[FR_LUT]; if (error_unimpl) { - secondary_color = primary_color = vec4(1.0, 0., 1.0, 1.0); + // secondary_color = primary_color = vec4(1.0, 0., 1.0, 1.0); } }