From 0409f3aab1f06f12265757e4675773ce8fd933b4 Mon Sep 17 00:00:00 2001 From: ParantezTech <12572227+par274@users.noreply.github.com> Date: Tue, 22 Sep 2026 03:06:22 +0300 Subject: [PATCH] [Usbd] more stubs --- src/SharpEmu.Libs/Usbd/UsbdExports.cs | 52 +++++++++++++++++++++++++++ 1 file changed, 52 insertions(+) diff --git a/src/SharpEmu.Libs/Usbd/UsbdExports.cs b/src/SharpEmu.Libs/Usbd/UsbdExports.cs index b6c4a68..58090b4 100644 --- a/src/SharpEmu.Libs/Usbd/UsbdExports.cs +++ b/src/SharpEmu.Libs/Usbd/UsbdExports.cs @@ -9,6 +9,58 @@ public static class UsbdExports { private const int SceUsbdErrorInvalidParam = unchecked((int)0x80240002); + [SysAbiExport( + Nid = "TOhg7P6kTH4", + ExportName = "sceUsbdInit", + Target = Generation.Gen4 | Generation.Gen5, + LibraryName = "libSceUsbd")] + public static int UsbdInit(CpuContext ctx) + { + // SharpEmu does not expose host USB devices yet. Initializing an empty + // backend still succeeds, allowing games to probe optional peripherals + // and fall back to their normal controller path. + return ctx.SetReturn(OrbisGen2Result.ORBIS_GEN2_OK); + } + + [SysAbiExport( + Nid = "Fq6+0Fm55xU", + ExportName = "sceUsbdExit", + Target = Generation.Gen4 | Generation.Gen5, + LibraryName = "libSceUsbd")] + public static int UsbdExit(CpuContext ctx) + { + return ctx.SetReturn(OrbisGen2Result.ORBIS_GEN2_OK); + } + + [SysAbiExport( + Nid = "8qB9Ar4P5nc", + ExportName = "sceUsbdGetDeviceList", + Target = Generation.Gen4 | Generation.Gen5, + LibraryName = "libSceUsbd")] + public static int UsbdGetDeviceList(CpuContext ctx) + { + var listAddress = ctx[CpuRegister.Rdi]; + if (listAddress == 0 || !ctx.TryWriteUInt64(listAddress, 0)) + { + return ctx.SetReturn(SceUsbdErrorInvalidParam); + } + + // libusb_get_device_list returns a non-negative device count. Report an + // empty list until a USB backend exists so wheel probing remains + // optional instead of receiving an unresolved-import error sentinel. + return ctx.SetReturn(0); + } + + [SysAbiExport( + Nid = "EQ6SCLMqzkM", + ExportName = "sceUsbdFreeDeviceList", + Target = Generation.Gen4 | Generation.Gen5, + LibraryName = "libSceUsbd")] + public static int UsbdFreeDeviceList(CpuContext ctx) + { + return ctx.SetReturn(OrbisGen2Result.ORBIS_GEN2_OK); + } + [SysAbiExport( Nid = "+wU6CGuZcWk", ExportName = "sceUsbdHandleEventsTimeout",