This reverts commit adc41bff70.
fixes jackbox, potentially some others
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/3239
Reviewed-by: MaranBr <maranbr@eden-emu.dev>
This commit is contained in:
parent
8d31484f64
commit
fb1600b7d1
|
|
@ -1,5 +1,5 @@
|
||||||
let
|
let
|
||||||
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-25.11";
|
nixpkgs = fetchTarball "https://github.com/NixOS/nixpkgs/tarball/nixos-24.05";
|
||||||
pkgs = import nixpkgs { config = {}; overlays = []; };
|
pkgs = import nixpkgs { config = {}; overlays = []; };
|
||||||
in
|
in
|
||||||
pkgs.mkShellNoCC {
|
pkgs.mkShellNoCC {
|
||||||
|
|
|
||||||
|
|
@ -88,13 +88,12 @@ IApplicationFunctions::IApplicationFunctions(Core::System& system_, std::shared_
|
||||||
{181, nullptr, "UpgradeLaunchRequiredVersion"},
|
{181, nullptr, "UpgradeLaunchRequiredVersion"},
|
||||||
{190, nullptr, "SendServerMaintenanceOverlayNotification"},
|
{190, nullptr, "SendServerMaintenanceOverlayNotification"},
|
||||||
{200, nullptr, "GetLastApplicationExitReason"},
|
{200, nullptr, "GetLastApplicationExitReason"},
|
||||||
{210, D<&IApplicationFunctions::GetLaunchRequiredVersionUpgrade>, "GetLaunchRequiredVersionUpgrade"}, //20.0.0+
|
{210, D<&IApplicationFunctions::GetUnknownEvent210>, "Unknown210"},
|
||||||
{211, nullptr, "GetLaunchRequiredVersionUpgradeStatus"}, //20.0.0+
|
{220, nullptr, "Unknown220"}, // [20.0.0+]
|
||||||
{220, nullptr, "Unknown220"}, //20.0.0+
|
{300, nullptr, "Unknown300"}, // [20.0.0+]
|
||||||
{300, nullptr, "CreateMovieWriter"}, //20.0.0+
|
{310, nullptr, "Unknown310"}, // [20.0.0+]
|
||||||
{310, nullptr, "Unknown310"}, //20.0.0+
|
{320, nullptr, "Unknown320"}, // [20.0.0+]
|
||||||
{320, nullptr, "Unknown320"}, //20.0.0+
|
{330, nullptr, "Unknown330"}, // [20.0.0+]
|
||||||
{330, nullptr, "Unknown330"}, //20.0.0+
|
|
||||||
{500, nullptr, "StartContinuousRecordingFlushForDebug"},
|
{500, nullptr, "StartContinuousRecordingFlushForDebug"},
|
||||||
{1000, nullptr, "CreateMovieMaker"},
|
{1000, nullptr, "CreateMovieMaker"},
|
||||||
{1001, D<&IApplicationFunctions::PrepareForJit>, "PrepareForJit"},
|
{1001, D<&IApplicationFunctions::PrepareForJit>, "PrepareForJit"},
|
||||||
|
|
@ -497,10 +496,10 @@ Result IApplicationFunctions::GetHealthWarningDisappearedSystemEvent(
|
||||||
R_SUCCEED();
|
R_SUCCEED();
|
||||||
}
|
}
|
||||||
|
|
||||||
Result IApplicationFunctions::GetLaunchRequiredVersionUpgrade(
|
Result IApplicationFunctions::GetUnknownEvent210(
|
||||||
OutCopyHandle<Kernel::KReadableEvent> out_event) {
|
OutCopyHandle<Kernel::KReadableEvent> out_event) {
|
||||||
LOG_WARNING(Service_AM, "(STUBBED) called");
|
LOG_DEBUG(Service_AM, "called");
|
||||||
*out_event = m_applet->state_changed_event.GetHandle();
|
*out_event = m_applet->unknown_event.GetHandle();
|
||||||
R_SUCCEED();
|
R_SUCCEED();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -79,7 +79,7 @@ private:
|
||||||
Result TryPopFromFriendInvitationStorageChannel(Out<SharedPointer<IStorage>> out_storage);
|
Result TryPopFromFriendInvitationStorageChannel(Out<SharedPointer<IStorage>> out_storage);
|
||||||
Result GetNotificationStorageChannelEvent(OutCopyHandle<Kernel::KReadableEvent> out_event);
|
Result GetNotificationStorageChannelEvent(OutCopyHandle<Kernel::KReadableEvent> out_event);
|
||||||
Result GetHealthWarningDisappearedSystemEvent(OutCopyHandle<Kernel::KReadableEvent> out_event);
|
Result GetHealthWarningDisappearedSystemEvent(OutCopyHandle<Kernel::KReadableEvent> out_event);
|
||||||
Result GetLaunchRequiredVersionUpgrade(OutCopyHandle<Kernel::KReadableEvent> out_event);
|
Result GetUnknownEvent210(OutCopyHandle<Kernel::KReadableEvent> out_event);
|
||||||
Result PrepareForJit();
|
Result PrepareForJit();
|
||||||
|
|
||||||
const std::shared_ptr<Applet> m_applet;
|
const std::shared_ptr<Applet> m_applet;
|
||||||
|
|
|
||||||
|
|
@ -312,7 +312,7 @@ void BSD::Listen(HLERequestContext& ctx) {
|
||||||
void BSD::Fcntl(HLERequestContext& ctx) {
|
void BSD::Fcntl(HLERequestContext& ctx) {
|
||||||
IPC::RequestParser rp{ctx};
|
IPC::RequestParser rp{ctx};
|
||||||
const s32 fd = rp.Pop<s32>();
|
const s32 fd = rp.Pop<s32>();
|
||||||
const u32 cmd = rp.Pop<u32>();
|
const s32 cmd = rp.Pop<s32>();
|
||||||
const s32 arg = rp.Pop<s32>();
|
const s32 arg = rp.Pop<s32>();
|
||||||
|
|
||||||
LOG_DEBUG(Service, "called. fd={} cmd={} arg={}", fd, cmd, arg);
|
LOG_DEBUG(Service, "called. fd={} cmd={} arg={}", fd, cmd, arg);
|
||||||
|
|
@ -627,45 +627,23 @@ std::pair<s32, Errno> BSD::AcceptImpl(s32 fd, std::vector<u8>& write_buffer) {
|
||||||
|
|
||||||
Errno BSD::BindImpl(s32 fd, std::span<const u8> addr) {
|
Errno BSD::BindImpl(s32 fd, std::span<const u8> addr) {
|
||||||
if (!IsFileDescriptorValid(fd)) {
|
if (!IsFileDescriptorValid(fd)) {
|
||||||
LOG_ERROR(Service, "Bind failed: Invalid fd={}", fd);
|
|
||||||
return Errno::BADF;
|
return Errno::BADF;
|
||||||
}
|
}
|
||||||
ASSERT(addr.size() == sizeof(SockAddrIn));
|
ASSERT(addr.size() == sizeof(SockAddrIn));
|
||||||
auto addr_in = GetValue<SockAddrIn>(addr);
|
auto addr_in = GetValue<SockAddrIn>(addr);
|
||||||
|
|
||||||
LOG_INFO(Service, "Bind fd={} to {}:{}", fd, Network::IPv4AddressToString(addr_in.ip),
|
return Translate(file_descriptors[fd]->socket->Bind(Translate(addr_in)));
|
||||||
addr_in.portno);
|
|
||||||
|
|
||||||
const auto result = Translate(file_descriptors[fd]->socket->Bind(Translate(addr_in)));
|
|
||||||
if (result != Errno::SUCCESS) {
|
|
||||||
LOG_ERROR(Service, "Bind fd={} failed with errno={}", fd, static_cast<int>(result));
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Errno BSD::ConnectImpl(s32 fd, std::span<const u8> addr) {
|
Errno BSD::ConnectImpl(s32 fd, std::span<const u8> addr) {
|
||||||
if (!IsFileDescriptorValid(fd)) {
|
if (!IsFileDescriptorValid(fd)) {
|
||||||
LOG_ERROR(Service, "Connect failed: Invalid fd={}", fd);
|
|
||||||
return Errno::BADF;
|
return Errno::BADF;
|
||||||
}
|
}
|
||||||
|
|
||||||
UNIMPLEMENTED_IF(addr.size() != sizeof(SockAddrIn));
|
UNIMPLEMENTED_IF(addr.size() != sizeof(SockAddrIn));
|
||||||
auto addr_in = GetValue<SockAddrIn>(addr);
|
auto addr_in = GetValue<SockAddrIn>(addr);
|
||||||
|
|
||||||
LOG_INFO(Service, "Connect fd={} to {}:{}", fd, Network::IPv4AddressToString(addr_in.ip),
|
return Translate(file_descriptors[fd]->socket->Connect(Translate(addr_in)));
|
||||||
addr_in.portno);
|
|
||||||
|
|
||||||
const auto result = Translate(file_descriptors[fd]->socket->Connect(Translate(addr_in)));
|
|
||||||
if (result != Errno::SUCCESS) {
|
|
||||||
if (result == Errno::INPROGRESS || result == Errno::AGAIN) {
|
|
||||||
LOG_DEBUG(Service, "Connect fd={} in progress (non-blocking), errno={}", fd, static_cast<int>(result));
|
|
||||||
} else {
|
|
||||||
LOG_ERROR(Service, "Connect fd={} failed with errno={}", fd, static_cast<int>(result));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
LOG_INFO(Service, "Connect fd={} succeeded", fd);
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Errno BSD::GetPeerNameImpl(s32 fd, std::vector<u8>& write_buffer) {
|
Errno BSD::GetPeerNameImpl(s32 fd, std::vector<u8>& write_buffer) {
|
||||||
|
|
@ -741,8 +719,8 @@ Errno BSD::GetSockOptImpl(s32 fd, u32 level, OptName optname, std::vector<u8>& o
|
||||||
}
|
}
|
||||||
|
|
||||||
if (level != static_cast<u32>(SocketLevel::SOCKET)) {
|
if (level != static_cast<u32>(SocketLevel::SOCKET)) {
|
||||||
LOG_WARNING(Service, "(STUBBED) Unknown getsockopt level={}, returning INVAL", level);
|
UNIMPLEMENTED_MSG("Unknown getsockopt level");
|
||||||
return Errno::INVAL;
|
return Errno::SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
Network::SocketBase* const socket = file_descriptors[fd]->socket.get();
|
Network::SocketBase* const socket = file_descriptors[fd]->socket.get();
|
||||||
|
|
@ -772,52 +750,32 @@ Errno BSD::SetSockOptImpl(s32 fd, u32 level, OptName optname, std::span<const u8
|
||||||
}
|
}
|
||||||
|
|
||||||
if (level != static_cast<u32>(SocketLevel::SOCKET)) {
|
if (level != static_cast<u32>(SocketLevel::SOCKET)) {
|
||||||
LOG_WARNING(Service, "(STUBBED) Unknown setsockopt level={}, returning INVAL", level);
|
UNIMPLEMENTED_MSG("Unknown setsockopt level");
|
||||||
return Errno::INVAL;
|
return Errno::SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
||||||
Network::SocketBase* const socket = file_descriptors[fd]->socket.get();
|
Network::SocketBase* const socket = file_descriptors[fd]->socket.get();
|
||||||
|
|
||||||
if (optname == OptName::LINGER) {
|
if (optname == OptName::LINGER) {
|
||||||
if (optval.size() != sizeof(Linger)) {
|
ASSERT(optval.size() == sizeof(Linger));
|
||||||
LOG_WARNING(Service, "LINGER optval size mismatch: expected {}, got {}", sizeof(Linger),
|
|
||||||
optval.size());
|
|
||||||
return Errno::INVAL;
|
|
||||||
}
|
|
||||||
auto linger = GetValue<Linger>(optval);
|
auto linger = GetValue<Linger>(optval);
|
||||||
if (linger.onoff != 0 && linger.onoff != 1) {
|
ASSERT(linger.onoff == 0 || linger.onoff == 1);
|
||||||
LOG_WARNING(Service, "Invalid LINGER onoff value: {}", linger.onoff);
|
|
||||||
return Errno::INVAL;
|
|
||||||
}
|
|
||||||
|
|
||||||
return Translate(socket->SetLinger(linger.onoff != 0, linger.linger));
|
return Translate(socket->SetLinger(linger.onoff != 0, linger.linger));
|
||||||
}
|
}
|
||||||
|
|
||||||
if (optval.size() != sizeof(u32)) {
|
ASSERT(optval.size() == sizeof(u32));
|
||||||
LOG_WARNING(Service, "optval size mismatch: expected {}, got {} for optname={}", sizeof(u32),
|
|
||||||
optval.size(), static_cast<u32>(optname));
|
|
||||||
return Errno::INVAL;
|
|
||||||
}
|
|
||||||
auto value = GetValue<u32>(optval);
|
auto value = GetValue<u32>(optval);
|
||||||
|
|
||||||
switch (optname) {
|
switch (optname) {
|
||||||
case OptName::REUSEADDR:
|
case OptName::REUSEADDR:
|
||||||
if (value != 0 && value != 1) {
|
ASSERT(value == 0 || value == 1);
|
||||||
LOG_WARNING(Service, "Invalid REUSEADDR value: {}", value);
|
|
||||||
return Errno::INVAL;
|
|
||||||
}
|
|
||||||
return Translate(socket->SetReuseAddr(value != 0));
|
return Translate(socket->SetReuseAddr(value != 0));
|
||||||
case OptName::KEEPALIVE:
|
case OptName::KEEPALIVE:
|
||||||
if (value != 0 && value != 1) {
|
ASSERT(value == 0 || value == 1);
|
||||||
LOG_WARNING(Service, "Invalid KEEPALIVE value: {}", value);
|
|
||||||
return Errno::INVAL;
|
|
||||||
}
|
|
||||||
return Translate(socket->SetKeepAlive(value != 0));
|
return Translate(socket->SetKeepAlive(value != 0));
|
||||||
case OptName::BROADCAST:
|
case OptName::BROADCAST:
|
||||||
if (value != 0 && value != 1) {
|
ASSERT(value == 0 || value == 1);
|
||||||
LOG_WARNING(Service, "Invalid BROADCAST value: {}", value);
|
|
||||||
return Errno::INVAL;
|
|
||||||
}
|
|
||||||
return Translate(socket->SetBroadcast(value != 0));
|
return Translate(socket->SetBroadcast(value != 0));
|
||||||
case OptName::SNDBUF:
|
case OptName::SNDBUF:
|
||||||
return Translate(socket->SetSndBuf(value));
|
return Translate(socket->SetSndBuf(value));
|
||||||
|
|
@ -831,9 +789,8 @@ Errno BSD::SetSockOptImpl(s32 fd, u32 level, OptName optname, std::span<const u8
|
||||||
LOG_WARNING(Service, "(STUBBED) setting NOSIGPIPE to {}", value);
|
LOG_WARNING(Service, "(STUBBED) setting NOSIGPIPE to {}", value);
|
||||||
return Errno::SUCCESS;
|
return Errno::SUCCESS;
|
||||||
default:
|
default:
|
||||||
LOG_WARNING(Service, "(STUBBED) Unimplemented optname={} (0x{:x}), returning INVAL",
|
UNIMPLEMENTED_MSG("Unimplemented optname={}", optname);
|
||||||
static_cast<u32>(optname), static_cast<u32>(optname));
|
return Errno::SUCCESS;
|
||||||
return Errno::INVAL;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -66,9 +66,7 @@ void Fermi2D::Blit() {
|
||||||
UNIMPLEMENTED_IF_MSG(regs.operation != Operation::SrcCopy, "Operation is not copy");
|
UNIMPLEMENTED_IF_MSG(regs.operation != Operation::SrcCopy, "Operation is not copy");
|
||||||
UNIMPLEMENTED_IF_MSG(regs.src.layer != 0, "Source layer is not zero");
|
UNIMPLEMENTED_IF_MSG(regs.src.layer != 0, "Source layer is not zero");
|
||||||
UNIMPLEMENTED_IF_MSG(regs.dst.layer != 0, "Destination layer is not zero");
|
UNIMPLEMENTED_IF_MSG(regs.dst.layer != 0, "Destination layer is not zero");
|
||||||
if (regs.src.depth != 1) {
|
UNIMPLEMENTED_IF_MSG(regs.src.depth != 1, "Source depth is not one");
|
||||||
LOG_DEBUG(HW_GPU, "Source depth is {}, expected 1 - using first layer", regs.src.depth);
|
|
||||||
}
|
|
||||||
UNIMPLEMENTED_IF_MSG(regs.clip_enable != 0, "Clipped blit enabled");
|
UNIMPLEMENTED_IF_MSG(regs.clip_enable != 0, "Clipped blit enabled");
|
||||||
|
|
||||||
const auto& args = regs.pixels_from_memory;
|
const auto& args = regs.pixels_from_memory;
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue