/// <summary> /// Patch app file to map D-Pad directions. This assumes the app file is decompressed. /// </summary> /// <param name="config">D-Pad configuration</param> /// <param name="VCDir">VC directory</param> private static void PatchApp1(DPadConfig config, string VCDir) { using (var app1 = new BeBinaryWriter(File.OpenWrite(Path.Combine(VCDir, "00000001.app")))) { var used = config.InUse; var buttons = new VCControllerButton[] { VCControllerButton.DPadUp, VCControllerButton.DPadDown, VCControllerButton.DPadLeft, VCControllerButton.DPadRight, }; // Fix array for ordering of the fields in app file: Up, Down, Left, Right used = new bool[] { used[0], used[2], used[3], used[1] }; for (int i = 0; i < used.Length; i++) { int offset = DPAD_MAPPING_OFFSET + (i * 4); app1.Seek(offset, SeekOrigin.Begin); if (used[i]) { // If using this D-Pad direction, write its button flag app1.WriteUInt32((uint)buttons[i]); } else { // Otherwise write the button flag for the L button app1.WriteUInt32((uint)VCControllerButton.L); } } } }
public DPadForm(DPadPreset[] presets, DPadItem[] items, DPadConfig config) { _presets = presets; _items = items; _custom = config.Pad.Values; InitializeComponent(); Initialize(config); }
/// <summary> /// Initialize. /// </summary> /// <param name="config">Configuration</param> private void Initialize(DPadConfig config) { // Initialize presets foreach (var preset in _presets) { PresetComboBox.Items.Add(preset); } PresetComboBox.Items.Add("Custom"); // Initialize items foreach (var combo in ItemComboBoxes) { foreach (var item in _items) { combo.Items.Add(item); } } // Try to infer which preset to select based on current values var inferred = InferPreset(); if (inferred != null) { PresetComboBox.SelectedItem = inferred; } else { PresetComboBox.SelectedItem = "Custom"; } // Set enabled/disabled based on current state if (config.State == DPadState.Enabled) { EnabledCheckBox.Checked = true; } else { EnabledCheckBox.Checked = false; } // Initialize the display groupbox if (config.Display != DPadDisplay.Right) { DPadDisplayLeftRadioButton.Checked = true; } else { DPadDisplayRightRadioButton.Checked = true; } DPadHideCheckBox.Checked = (config.Display == DPadDisplay.None); UpdatePresetComboBox(); UpdateItemComboBoxes(); UpdateDisplayGroupBox(); }
public static void BuildVC(byte[] ROM, DPadConfig dpadConfig, string VCDir, string FileName) { ROM = AddVCHeader(ROM); GetApp5(ROM, VCDir); PatchApp1(dpadConfig, VCDir); ProcessStartInfo p = new ProcessStartInfo { FileName = "wadpacker", Arguments = "mm.tik mm.tmd mm.cert \"" + FileName + "\" -i NMRE", WorkingDirectory = VCDir, UseShellExecute = true, }; Process.Start(p); }
/// <summary> /// Initialize. /// </summary> /// <param name="config">Configuration</param> private void Initialize(DPadConfig config) { // Initialize presets foreach (var preset in _presets) { PresetComboBox.Items.Add(preset); } PresetComboBox.Items.Add("Custom"); // Initialize items foreach (var combo in ItemComboBoxes) { foreach (var item in _items) { combo.Items.Add(item); } } // Try to infer which preset to select based on current values var inferred = InferPreset(); if (inferred != null) { PresetComboBox.SelectedItem = inferred; } else { PresetComboBox.SelectedItem = "Custom"; } // Set enabled/disabled based on current state if (config.State == DPadState.Enabled) { EnabledCheckBox.Checked = true; } else { EnabledCheckBox.Checked = false; } UpdatePresetComboBox(); UpdateItemComboBoxes(); }