diff options
| author | lizzie <lizzie@eden-emu.dev> | 2026-09-08 20:39:55 +0200 |
|---|---|---|
| committer | crueter <crueter@eden-emu.dev> | 2026-09-08 20:39:55 +0200 |
| commit | 87e5d0b6e490d56fbbe4e770a80e2fbd31aff2ae (patch) | |
| tree | 3274ca98337fbad75c0386dbcd2cae70431e1dad /src/core/hle/service/i2c/i2c.cpp | |
| parent | fdd8d4252c60b055cac2d792b414ba15046d484d (diff) | |
[hle] VirtualBoy classics fixes, QLaunch IPC fixes, implement extra ams SVCInfo (#4343)
Signed-off-by: lizzie <lizzie@eden-emu.dev>
- [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions).
- [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md)
- [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability.
-------------------
`OpenSystemApplicationProxy`
`OpenSystemApplicationProxy`
ALSO yes those cmds DO NOT take an attribute
Implemented SVC infos to match Atmosphere's values
Implement more stub I2C session cmds
stub CMD2103 for rhythm groove
better error handling on svc get info to match ams (see ams svc info)
Virtual Boy classic fix adept from https://git.ryujinx.app/projects/Kenji-NX/commit/2288084b531b185f5840a696b23265014f07e2f2 by @Mythrax
acc:u1 was missing the *Deprecated cmd
Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4343
Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Reviewed-by: Maufeat <sahyno1996@gmail.com>
Diffstat (limited to 'src/core/hle/service/i2c/i2c.cpp')
| -rw-r--r-- | src/core/hle/service/i2c/i2c.cpp | 32 |
1 files changed, 25 insertions, 7 deletions
diff --git a/src/core/hle/service/i2c/i2c.cpp b/src/core/hle/service/i2c/i2c.cpp index d000487246..0b242768c2 100644 --- a/src/core/hle/service/i2c/i2c.cpp +++ b/src/core/hle/service/i2c/i2c.cpp @@ -32,7 +32,6 @@ public: RegisterHandlers(functions); } ~I2CSession() override = default; - Result Send(InBuffer<BufferAttr_HipcMapAlias> in_data, u32 transaction_option) { LOG_WARNING(Service, "(stubbed) topt={}", transaction_option); R_THROW(ResultUnknown); @@ -50,21 +49,40 @@ public: : ServiceFramework{system_, "i2c"} { static const FunctionInfo functions[] = { - {0, nullptr, "OpenSessionForDev"}, + {0, C<&I2C::OpenSessionForDev>, "OpenSessionForDev"}, {1, C<&I2C::OpenSession>, "OpenSession"}, - {2, nullptr, "HasDevice"}, - {3, nullptr, "HasDeviceForDev"}, - {4, nullptr, "OpenSession2"}, + {2, C<&I2C::HasDevice>, "HasDevice"}, + {3, C<&I2C::HasDeviceForDev>, "HasDeviceForDev"}, + {4, C<&I2C::OpenSession2>, "OpenSession2"}, }; RegisterHandlers(functions); } ~I2C() override = default; - - Result OpenSession(I2CDevice device, OutInterface<I2CSession> out_session) { + Result OpenSessionForDev(OutInterface<I2CSession> out_session, s32 bus_idx, u32 slave_address, u32 addressing_mode, u32 speed_mode) { + LOG_DEBUG(Service, "(stubbed)"); + *out_session = std::make_shared<I2CSession>(system); + R_SUCCEED(); + } + Result OpenSession(OutInterface<I2CSession> out_session, I2CDevice device) { LOG_DEBUG(Service, "(stubbed)"); *out_session = std::make_shared<I2CSession>(system); R_SUCCEED(); } + Result HasDevice(Out<bool> out_has_device, I2CDevice device) { + LOG_DEBUG(Service, "(stubbed)"); + *out_has_device = false; + R_SUCCEED(); + } + Result HasDeviceForDev(Out<bool> out_has_device, I2CDevice device) { + LOG_DEBUG(Service, "(stubbed)"); + *out_has_device = false; + R_SUCCEED(); + } + Result OpenSession2(OutInterface<I2CSession> out_session, u32 device_code) { + LOG_DEBUG(Service, "(stubbed) device_code={}", device_code); + *out_session = std::make_shared<I2CSession>(system); + R_SUCCEED(); + } }; void LoopProcess(Core::System& system) { |
