forked from eden-emu/eden
		
	hid: Implement Get/SetNpadHandheldActivationMode
- Used in Clubhouse Games: 51 Worldwide Classics
This commit is contained in:
		
							parent
							
								
									7b536a07f2
								
							
						
					
					
						commit
						505ce79b9d
					
				
					 3 changed files with 28 additions and 5 deletions
				
			
		|  | @ -495,6 +495,14 @@ Controller_NPad::NpadHoldType Controller_NPad::GetHoldType() const { | |||
|     return hold_type; | ||||
| } | ||||
| 
 | ||||
| void Controller_NPad::SetNpadHandheldActivationMode(NpadHandheldActivationMode activation_mode) { | ||||
|     handheld_activation_mode = activation_mode; | ||||
| } | ||||
| 
 | ||||
| Controller_NPad::NpadHandheldActivationMode Controller_NPad::GetNpadHandheldActivationMode() const { | ||||
|     return handheld_activation_mode; | ||||
| } | ||||
| 
 | ||||
| void Controller_NPad::SetNpadMode(u32 npad_id, NPadAssignments assignment_mode) { | ||||
|     const std::size_t npad_index = NPadIdToIndex(npad_id); | ||||
|     ASSERT(npad_index < shared_memory_entries.size()); | ||||
|  |  | |||
|  | @ -74,6 +74,12 @@ public: | |||
|         Single = 1, | ||||
|     }; | ||||
| 
 | ||||
|     enum class NpadHandheldActivationMode : u64 { | ||||
|         Dual = 0, | ||||
|         Single = 1, | ||||
|         None = 2, | ||||
|     }; | ||||
| 
 | ||||
|     enum class NPadControllerType { | ||||
|         None, | ||||
|         ProController, | ||||
|  | @ -110,6 +116,9 @@ public: | |||
|     void SetHoldType(NpadHoldType joy_hold_type); | ||||
|     NpadHoldType GetHoldType() const; | ||||
| 
 | ||||
|     void SetNpadHandheldActivationMode(NpadHandheldActivationMode activation_mode); | ||||
|     NpadHandheldActivationMode GetNpadHandheldActivationMode() const; | ||||
| 
 | ||||
|     void SetNpadMode(u32 npad_id, NPadAssignments assignment_mode); | ||||
| 
 | ||||
|     void VibrateController(const std::vector<u32>& controller_ids, | ||||
|  | @ -335,6 +344,7 @@ private: | |||
|         sticks; | ||||
|     std::vector<u32> supported_npad_id_types{}; | ||||
|     NpadHoldType hold_type{NpadHoldType::Vertical}; | ||||
|     NpadHandheldActivationMode handheld_activation_mode{NpadHandheldActivationMode::Dual}; | ||||
|     // Each controller should have their own styleset changed event
 | ||||
|     std::array<Kernel::EventPair, 10> styleset_changed_events; | ||||
|     Vibration last_processed_vibration{}; | ||||
|  |  | |||
|  | @ -714,8 +714,11 @@ void Hid::SetNpadHandheldActivationMode(Kernel::HLERequestContext& ctx) { | |||
|     const auto applet_resource_user_id{rp.Pop<u64>()}; | ||||
|     const auto mode{rp.Pop<u64>()}; | ||||
| 
 | ||||
|     LOG_WARNING(Service_HID, "(STUBBED) called, applet_resource_user_id={}, mode={}", | ||||
|                 applet_resource_user_id, mode); | ||||
|     LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}, mode={}", applet_resource_user_id, | ||||
|               mode); | ||||
| 
 | ||||
|     applet_resource->GetController<Controller_NPad>(HidController::NPad) | ||||
|         .SetNpadHandheldActivationMode(Controller_NPad::NpadHandheldActivationMode{mode}); | ||||
| 
 | ||||
|     IPC::ResponseBuilder rb{ctx, 2}; | ||||
|     rb.Push(RESULT_SUCCESS); | ||||
|  | @ -725,11 +728,13 @@ void Hid::GetNpadHandheldActivationMode(Kernel::HLERequestContext& ctx) { | |||
|     IPC::RequestParser rp{ctx}; | ||||
|     const auto applet_resource_user_id{rp.Pop<u64>()}; | ||||
| 
 | ||||
|     LOG_WARNING(Service_HID, "(STUBBED) called, applet_resource_user_id={}", | ||||
|                 applet_resource_user_id); | ||||
|     LOG_DEBUG(Service_HID, "called, applet_resource_user_id={}", applet_resource_user_id); | ||||
| 
 | ||||
|     IPC::ResponseBuilder rb{ctx, 2}; | ||||
|     IPC::ResponseBuilder rb{ctx, 4}; | ||||
|     rb.Push(RESULT_SUCCESS); | ||||
|     rb.Push<u64>( | ||||
|         static_cast<u64>(applet_resource->GetController<Controller_NPad>(HidController::NPad) | ||||
|                              .GetNpadHandheldActivationMode())); | ||||
| } | ||||
| 
 | ||||
| void Hid::SwapNpadAssignment(Kernel::HLERequestContext& ctx) { | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Morph
						Morph