mirror of
				https://git.suyu.dev/suyu/suyu.git
				synced 2025-11-01 07:16:42 +08:00 
			
		
		
		
	service: nfp: Allow to load with a different amiibo id
This commit is contained in:
		
							parent
							
								
									7944f271dc
								
							
						
					
					
						commit
						1968cc7b10
					
				| @ -535,6 +535,8 @@ struct Values { | ||||
|     Setting<bool> enable_ir_sensor{false, "enable_ir_sensor"}; | ||||
|     Setting<std::string> ir_sensor_device{"auto", "ir_sensor_device"}; | ||||
| 
 | ||||
|     Setting<bool> random_amiibo_id{false, "random_amiibo_id"}; | ||||
| 
 | ||||
|     // Data Storage
 | ||||
|     Setting<bool> use_virtual_sd{true, "use_virtual_sd"}; | ||||
|     Setting<bool> gamecard_inserted{false, "gamecard_inserted"}; | ||||
|  | ||||
| @ -227,11 +227,20 @@ Result NfcDevice::GetTagInfo(NFP::TagInfo& tag_info, bool is_mifare) const { | ||||
|         return ResultWrongDeviceState; | ||||
|     } | ||||
| 
 | ||||
|     UniqueSerialNumber uuid = encrypted_tag_data.uuid.uid; | ||||
| 
 | ||||
|     // Generate random UUID to bypass amiibo load limits
 | ||||
|     if (Settings::values.random_amiibo_id) { | ||||
|         Common::TinyMT rng{}; | ||||
|         rng.GenerateRandomBytes(uuid.data(), sizeof(UniqueSerialNumber)); | ||||
|         uuid[3] = 0x88 ^ uuid[0] ^ uuid[1] ^ uuid[2]; | ||||
|     } | ||||
| 
 | ||||
|     if (is_mifare) { | ||||
|         tag_info = { | ||||
|             .uuid = encrypted_tag_data.uuid.uid, | ||||
|             .uuid = uuid, | ||||
|             .uuid_extension = {}, | ||||
|             .uuid_length = static_cast<u8>(encrypted_tag_data.uuid.uid.size()), | ||||
|             .uuid_length = static_cast<u8>(uuid.size()), | ||||
|             .protocol = NfcProtocol::TypeA, | ||||
|             .tag_type = TagType::Type4, | ||||
|         }; | ||||
| @ -240,9 +249,9 @@ Result NfcDevice::GetTagInfo(NFP::TagInfo& tag_info, bool is_mifare) const { | ||||
| 
 | ||||
|     // Protocol and tag type may change here
 | ||||
|     tag_info = { | ||||
|         .uuid = encrypted_tag_data.uuid.uid, | ||||
|         .uuid = uuid, | ||||
|         .uuid_extension = {}, | ||||
|         .uuid_length = static_cast<u8>(encrypted_tag_data.uuid.uid.size()), | ||||
|         .uuid_length = static_cast<u8>(uuid.size()), | ||||
|         .protocol = NfcProtocol::TypeA, | ||||
|         .tag_type = TagType::Type2, | ||||
|     }; | ||||
|  | ||||
| @ -443,6 +443,7 @@ void Config::ReadControlValues() { | ||||
|     ReadBasicSetting(Settings::values.mouse_panning_sensitivity); | ||||
|     ReadBasicSetting(Settings::values.enable_joycon_driver); | ||||
|     ReadBasicSetting(Settings::values.enable_procon_driver); | ||||
|     ReadBasicSetting(Settings::values.random_amiibo_id); | ||||
| 
 | ||||
|     ReadBasicSetting(Settings::values.tas_enable); | ||||
|     ReadBasicSetting(Settings::values.tas_loop); | ||||
| @ -1150,6 +1151,7 @@ void Config::SaveControlValues() { | ||||
|     WriteBasicSetting(Settings::values.enable_raw_input); | ||||
|     WriteBasicSetting(Settings::values.enable_joycon_driver); | ||||
|     WriteBasicSetting(Settings::values.enable_procon_driver); | ||||
|     WriteBasicSetting(Settings::values.random_amiibo_id); | ||||
|     WriteBasicSetting(Settings::values.keyboard_enabled); | ||||
|     WriteBasicSetting(Settings::values.emulate_analog_keyboard); | ||||
|     WriteBasicSetting(Settings::values.mouse_panning_sensitivity); | ||||
|  | ||||
| @ -140,6 +140,7 @@ void ConfigureInputAdvanced::ApplyConfiguration() { | ||||
|     Settings::values.enable_ir_sensor = ui->enable_ir_sensor->isChecked(); | ||||
|     Settings::values.enable_joycon_driver = ui->enable_joycon_driver->isChecked(); | ||||
|     Settings::values.enable_procon_driver = ui->enable_procon_driver->isChecked(); | ||||
|     Settings::values.random_amiibo_id = ui->random_amiibo_id->isChecked(); | ||||
| } | ||||
| 
 | ||||
| void ConfigureInputAdvanced::LoadConfiguration() { | ||||
| @ -176,6 +177,7 @@ void ConfigureInputAdvanced::LoadConfiguration() { | ||||
|     ui->enable_ir_sensor->setChecked(Settings::values.enable_ir_sensor.GetValue()); | ||||
|     ui->enable_joycon_driver->setChecked(Settings::values.enable_joycon_driver.GetValue()); | ||||
|     ui->enable_procon_driver->setChecked(Settings::values.enable_procon_driver.GetValue()); | ||||
|     ui->random_amiibo_id->setChecked(Settings::values.random_amiibo_id.GetValue()); | ||||
| 
 | ||||
|     UpdateUIEnabled(); | ||||
| } | ||||
|  | ||||
| @ -2728,6 +2728,22 @@ | ||||
|                      </widget> | ||||
|                    </item> | ||||
|                    <item row="7" column="0"> | ||||
|                      <widget class="QCheckBox" name="random_amiibo_id"> | ||||
|                        <property name="toolTip"> | ||||
|                          <string>Allows unlimited uses of the same Amiibo in games that would otherwise limit you to one use.</string> | ||||
|                        </property> | ||||
|                        <property name="minimumSize"> | ||||
|                          <size> | ||||
|                            <width>0</width> | ||||
|                            <height>23</height> | ||||
|                          </size> | ||||
|                        </property> | ||||
|                        <property name="text"> | ||||
|                          <string>Use random Amiibo ID</string> | ||||
|                        </property> | ||||
|                      </widget> | ||||
|                    </item> | ||||
|                    <item row="8" column="0"> | ||||
|                      <widget class="QCheckBox" name="mouse_panning"> | ||||
|                        <property name="minimumSize"> | ||||
|                          <size> | ||||
| @ -2740,7 +2756,7 @@ | ||||
|                        </property> | ||||
|                      </widget> | ||||
|                    </item> | ||||
|                    <item row="7" column="2"> | ||||
|                    <item row="8" column="2"> | ||||
|                      <widget class="QSpinBox" name="mouse_panning_sensitivity"> | ||||
|                        <property name="toolTip"> | ||||
|                          <string>Mouse sensitivity</string> | ||||
| @ -2762,14 +2778,14 @@ | ||||
|                        </property> | ||||
|                      </widget> | ||||
|                    </item> | ||||
|                    <item row="8" column="0"> | ||||
|                    <item row="9" column="0"> | ||||
|                      <widget class="QLabel" name="motion_touch"> | ||||
|                        <property name="text"> | ||||
|                          <string>Motion / Touch</string> | ||||
|                        </property> | ||||
|                      </widget> | ||||
|                    </item> | ||||
|                    <item row="8" column="2"> | ||||
|                    <item row="9" column="2"> | ||||
|                      <widget class="QPushButton" name="buttonMotionTouch"> | ||||
|                        <property name="text"> | ||||
|                          <string>Configure</string> | ||||
|  | ||||
| @ -169,6 +169,7 @@ void Config::ReadValues() { | ||||
|     ReadSetting("ControlsGeneral", Settings::values.enable_raw_input); | ||||
|     ReadSetting("ControlsGeneral", Settings::values.enable_joycon_driver); | ||||
|     ReadSetting("ControlsGeneral", Settings::values.enable_procon_driver); | ||||
|     ReadSetting("ControlsGeneral", Settings::values.random_amiibo_id); | ||||
|     ReadSetting("ControlsGeneral", Settings::values.emulate_analog_keyboard); | ||||
|     ReadSetting("ControlsGeneral", Settings::values.vibration_enabled); | ||||
|     ReadSetting("ControlsGeneral", Settings::values.enable_accurate_vibrations); | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user