early-access version 1615

This commit is contained in:
pineappleEA 2021-04-20 12:40:19 +02:00
parent 68c7a73ce2
commit 242b6f6b49
8 changed files with 24 additions and 16 deletions

View file

@ -1,7 +1,7 @@
yuzu emulator early access yuzu emulator early access
============= =============
This is the source code for early-access 1612. This is the source code for early-access 1615.
## Legal Notice ## Legal Notice

View file

@ -157,9 +157,9 @@ class IRegistrar final : public ServiceFramework<IRegistrar> {
friend class ARP_W; friend class ARP_W;
public: public:
explicit IRegistrar( using IssuerFn = std::function<ResultCode(u64, ApplicationLaunchProperty, std::vector<u8>)>;
Core::System& system_,
std::function<ResultCode(u64, ApplicationLaunchProperty, std::vector<u8>)> issuer) explicit IRegistrar(Core::System& system_, IssuerFn&& issuer)
: ServiceFramework{system_, "IRegistrar"}, issue_process_id{std::move(issuer)} { : ServiceFramework{system_, "IRegistrar"}, issue_process_id{std::move(issuer)} {
// clang-format off // clang-format off
static const FunctionInfo functions[] = { static const FunctionInfo functions[] = {
@ -238,9 +238,9 @@ private:
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
} }
std::function<ResultCode(u64, ApplicationLaunchProperty, std::vector<u8>)> issue_process_id; IssuerFn issue_process_id;
bool issued = false; bool issued = false;
ApplicationLaunchProperty launch; ApplicationLaunchProperty launch{};
std::vector<u8> control; std::vector<u8> control;
}; };

View file

@ -147,7 +147,7 @@ bool Controller_NPad::IsDeviceHandleValid(const DeviceHandle& device_handle) {
device_handle.device_index < DeviceIndex::MaxDeviceIndex; device_handle.device_index < DeviceIndex::MaxDeviceIndex;
} }
Controller_NPad::Controller_NPad(Core::System& system) : ControllerBase(system), system(system) { Controller_NPad::Controller_NPad(Core::System& system) : ControllerBase(system) {
latest_vibration_values.fill({DEFAULT_VIBRATION_VALUE, DEFAULT_VIBRATION_VALUE}); latest_vibration_values.fill({DEFAULT_VIBRATION_VALUE, DEFAULT_VIBRATION_VALUE});
} }

View file

@ -587,6 +587,5 @@ private:
std::array<ControllerPad, 10> npad_pad_states{}; std::array<ControllerPad, 10> npad_pad_states{};
std::array<TriggerState, 10> npad_trigger_states{}; std::array<TriggerState, 10> npad_trigger_states{};
bool is_in_lr_assignment_mode{false}; bool is_in_lr_assignment_mode{false};
Core::System& system;
}; };
} // namespace Service::HID } // namespace Service::HID

View file

@ -104,9 +104,10 @@ void GetKeyCodeMapImpl(Kernel::HLERequestContext& ctx) {
layout = key_code->second; layout = key_code->second;
} }
ctx.WriteBuffer(layout);
IPC::ResponseBuilder rb{ctx, 2}; IPC::ResponseBuilder rb{ctx, 2};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
ctx.WriteBuffer(layout);
} }
} // Anonymous namespace } // Anonymous namespace

View file

@ -294,16 +294,17 @@ void Module::Interface::GetClockSnapshot(Kernel::HLERequestContext& ctx) {
return; return;
} }
ctx.WriteBuffer(clock_snapshot);
IPC::ResponseBuilder rb{ctx, 2}; IPC::ResponseBuilder rb{ctx, 2};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
ctx.WriteBuffer(clock_snapshot);
} }
void Module::Interface::GetClockSnapshotFromSystemClockContext(Kernel::HLERequestContext& ctx) { void Module::Interface::GetClockSnapshotFromSystemClockContext(Kernel::HLERequestContext& ctx) {
IPC::RequestParser rp{ctx}; IPC::RequestParser rp{ctx};
const auto type{rp.PopEnum<Clock::TimeType>()}; const auto type{rp.PopEnum<Clock::TimeType>()};
rp.AlignWithPadding(); rp.Skip(1, false);
const Clock::SystemClockContext user_context{rp.PopRaw<Clock::SystemClockContext>()}; const Clock::SystemClockContext user_context{rp.PopRaw<Clock::SystemClockContext>()};
const Clock::SystemClockContext network_context{rp.PopRaw<Clock::SystemClockContext>()}; const Clock::SystemClockContext network_context{rp.PopRaw<Clock::SystemClockContext>()};
@ -319,9 +320,10 @@ void Module::Interface::GetClockSnapshotFromSystemClockContext(Kernel::HLEReques
return; return;
} }
ctx.WriteBuffer(clock_snapshot);
IPC::ResponseBuilder rb{ctx, 2}; IPC::ResponseBuilder rb{ctx, 2};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
ctx.WriteBuffer(clock_snapshot);
} }
void Module::Interface::CalculateStandardUserSystemClockDifferenceByUser( void Module::Interface::CalculateStandardUserSystemClockDifferenceByUser(

View file

@ -140,11 +140,12 @@ void ITimeZoneService::ToPosixTime(Kernel::HLERequestContext& ctx) {
return; return;
} }
ctx.WriteBuffer(posix_time);
// TODO(bunnei): Handle multiple times // TODO(bunnei): Handle multiple times
IPC::ResponseBuilder rb{ctx, 3}; IPC::ResponseBuilder rb{ctx, 3};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
rb.PushRaw<u32>(1); // Number of times we're returning rb.PushRaw<u32>(1); // Number of times we're returning
ctx.WriteBuffer(posix_time);
} }
void ITimeZoneService::ToPosixTimeWithMyRule(Kernel::HLERequestContext& ctx) { void ITimeZoneService::ToPosixTimeWithMyRule(Kernel::HLERequestContext& ctx) {
@ -163,10 +164,11 @@ void ITimeZoneService::ToPosixTimeWithMyRule(Kernel::HLERequestContext& ctx) {
return; return;
} }
ctx.WriteBuffer(posix_time);
IPC::ResponseBuilder rb{ctx, 3}; IPC::ResponseBuilder rb{ctx, 3};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
rb.PushRaw<u32>(1); // Number of times we're returning rb.PushRaw<u32>(1); // Number of times we're returning
ctx.WriteBuffer(posix_time);
} }
} // namespace Service::Time } // namespace Service::Time

View file

@ -1129,9 +1129,11 @@ private:
} }
NativeWindow native_window{*buffer_queue_id}; NativeWindow native_window{*buffer_queue_id};
const auto buffer_size = ctx.WriteBuffer(native_window.Serialize());
IPC::ResponseBuilder rb{ctx, 4}; IPC::ResponseBuilder rb{ctx, 4};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
rb.Push<u64>(ctx.WriteBuffer(native_window.Serialize())); rb.Push<u64>(buffer_size);
} }
void CloseLayer(Kernel::HLERequestContext& ctx) { void CloseLayer(Kernel::HLERequestContext& ctx) {
@ -1173,10 +1175,12 @@ private:
} }
NativeWindow native_window{*buffer_queue_id}; NativeWindow native_window{*buffer_queue_id};
const auto buffer_size = ctx.WriteBuffer(native_window.Serialize());
IPC::ResponseBuilder rb{ctx, 6}; IPC::ResponseBuilder rb{ctx, 6};
rb.Push(RESULT_SUCCESS); rb.Push(RESULT_SUCCESS);
rb.Push(*layer_id); rb.Push(*layer_id);
rb.Push<u64>(ctx.WriteBuffer(native_window.Serialize())); rb.Push<u64>(buffer_size);
} }
void DestroyStrayLayer(Kernel::HLERequestContext& ctx) { void DestroyStrayLayer(Kernel::HLERequestContext& ctx) {