This commit is contained in:
alyosha-tas 2020-04-30 10:19:08 -04:00
commit 67a832d79a
24 changed files with 77 additions and 170 deletions

11
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,11 @@
blank_issues_enabled: true
contact_links:
- name: "BEFORE OPENING AN ISSUE: Search for duplicates"
url: "https://github.com/TASVideos/BizHawk/issues?q=is:issue+<search+terms>"
about: "Opens the issue tracker here on GitHub. Use `is:issue <search terms>` to find open or closed issues that might be similar to your problem."
- name: "Report issues with the Linux port"
url: "https://github.com/TASVideos/BizHawk/issues/1430"
about: "Linux users: please comment here on #1430 instead of opening a new issue."
- name: "Chat with us on IRC"
url: "https://webchat.freenode.net/#bizhawk"
about: "Joins #bizhawk on freenode with your browser. Please be patient as there isn't always somebody online."

View File

@ -45,5 +45,4 @@
<Compile Update="movie/tasproj/TasMovie.Editing.cs" DependentUpon="TasMovie.cs" />
<Compile Update="movie/tasproj/TasMovie.IO.cs" DependentUpon="TasMovie.cs" />
</ItemGroup>
<Import Project="$(SolutionDir)NamespaceAliasHack.targets" />
</Project>

View File

@ -87,7 +87,7 @@ namespace BizHawk.Client.EmuHawk
TasView.AllColumns.Clear();
StartNewTasMovie();
SetUpColumns();
RefreshTasView();
TasView.Refresh();
}
else
{

View File

@ -424,10 +424,8 @@ namespace BizHawk.Client.EmuHawk
private void TasView_ColumnRightClick(object sender, InputRoll.ColumnClickEventArgs e)
{
e.Column.Emphasis ^= true;
UpdateAutoFire(e.Column.Name, e.Column.Emphasis);
RefreshTasView();
TasView.Refresh();
}
private void UpdateAutoFire()
@ -565,7 +563,7 @@ namespace BizHawk.Client.EmuHawk
{
_extraAxisRows.Clear();
AxisEditRow = -1;
RefreshTasView();
SetTasViewRowCount();
}
else
{
@ -573,7 +571,7 @@ namespace BizHawk.Client.EmuHawk
{
_extraAxisRows.Clear();
AxisEditRow = frame;
RefreshTasView();
SetTasViewRowCount();
}
_axisEditYPos = e.Y;
@ -820,7 +818,7 @@ namespace BizHawk.Client.EmuHawk
// if a loaded branch log is shorter than selection, keep selection until you attempt to call context menu
// you might need it when you load again the branch where this frame exists
TasView.DeselectAll();
RefreshTasView();
SetTasViewRowCount();
}
else
{
@ -1176,7 +1174,7 @@ namespace BizHawk.Client.EmuHawk
TasView.MakeIndexVisible(TasView.CurrentCell.RowIndex.Value); // todo: limit scrolling speed
}
RefreshTasView();
SetTasViewRowCount();
}
private void TasView_MouseMove(object sender, MouseEventArgs e)

View File

@ -388,13 +388,13 @@ namespace BizHawk.Client.EmuHawk
private void DeselectMenuItem_Click(object sender, EventArgs e)
{
TasView.DeselectAll();
RefreshTasView();
TasView.Refresh();
}
private void SelectAllMenuItem_Click(object sender, EventArgs e)
{
TasView.SelectAll();
RefreshTasView();
TasView.Refresh();
}
private void SelectBetweenMarkersMenuItem_Click(object sender, EventArgs e)
@ -413,7 +413,7 @@ namespace BizHawk.Client.EmuHawk
}
SetSplicer();
RefreshTasView();
TasView.Refresh();
}
}
@ -426,7 +426,7 @@ namespace BizHawk.Client.EmuHawk
}
SetSplicer();
RefreshTasView();
TasView.Refresh();
}
private void CopyMenuItem_Click(object sender, EventArgs e)
@ -492,7 +492,7 @@ namespace BizHawk.Client.EmuHawk
}
else
{
RefreshDialog();
FullRefresh();
}
}
}
@ -535,7 +535,7 @@ namespace BizHawk.Client.EmuHawk
}
else
{
RefreshDialog();
FullRefresh();
}
}
}
@ -578,7 +578,7 @@ namespace BizHawk.Client.EmuHawk
}
else
{
RefreshDialog();
FullRefresh();
}
}
}
@ -606,7 +606,7 @@ namespace BizHawk.Client.EmuHawk
}
else
{
RefreshDialog();
FullRefresh();
}
}
}
@ -620,7 +620,7 @@ namespace BizHawk.Client.EmuHawk
if (rollBackFrame >= CurrentTasMovie.InputLogLength)
{
// Cannot delete non-existent frames
RefreshDialog();
FullRefresh();
return;
}
@ -634,7 +634,7 @@ namespace BizHawk.Client.EmuHawk
}
else
{
RefreshDialog();
FullRefresh();
}
}
}
@ -660,7 +660,7 @@ namespace BizHawk.Client.EmuHawk
}
else
{
RefreshDialog();
FullRefresh();
}
}
}
@ -681,7 +681,7 @@ namespace BizHawk.Client.EmuHawk
}
else
{
RefreshDialog();
FullRefresh();
}
}
}
@ -716,7 +716,7 @@ namespace BizHawk.Client.EmuHawk
}
else
{
RefreshDialog();
FullRefresh();
}
}
}
@ -1303,7 +1303,7 @@ namespace BizHawk.Client.EmuHawk
CurrentTasMovie.FlagChanges();
TasView.AllColumns.ColumnsChanged();
RefreshTasView();
TasView.Refresh();
};
ColumnsSubMenu.DropDownItems.Add(item);
@ -1317,7 +1317,7 @@ namespace BizHawk.Client.EmuHawk
var item = new ToolStripMenuItem($"Show Player {i}")
{
CheckOnClick = true,
Checked = true
Checked = playerMenus[i].DropDownItems.OfType<ToolStripMenuItem>().Any(mi => mi.Checked)
};
ToolStripMenuItem dummyObject = playerMenus[i];
@ -1330,7 +1330,7 @@ namespace BizHawk.Client.EmuHawk
CurrentTasMovie.FlagChanges();
TasView.AllColumns.ColumnsChanged();
RefreshTasView();
TasView.Refresh();
};
ColumnsSubMenu.DropDownItems.Add(item);
@ -1345,9 +1345,9 @@ namespace BizHawk.Client.EmuHawk
private void RestoreDefaults()
{
TasView.AllColumns.Clear();
SetUpColumns();
RefreshTasView();
CurrentTasMovie.FlagChanges();
SetUpColumns();
TasView.Refresh();
CurrentTasMovie.FlagChanges();
MainVertialSplit.SplitterDistance = _defaultMainSplitDistance;
BranchesMarkersSplit.SplitterDistance = _defaultBranchMarkerSplitDistance;
@ -1402,7 +1402,7 @@ namespace BizHawk.Client.EmuHawk
private void CancelSeekContextMenuItem_Click(object sender, EventArgs e)
{
MainForm.PauseOnFrame = null;
RefreshTasView();
TasView.Refresh();
}
private void BranchContextMenuItem_Click(object sender, EventArgs e)

View File

@ -151,12 +151,9 @@ namespace BizHawk.Client.EmuHawk
if (!Engage())
{
Close();
DialogResult = DialogResult.Cancel;
return;
}
SetColumnsFromCurrentStickies();
if (TasView.Rotatable)
{
RightClickMenu.Items.AddRange(TasView.GenerateContextMenuItems()
@ -427,7 +424,7 @@ namespace BizHawk.Client.EmuHawk
int digits;
if (ControllerType.AxisControls.Contains(kvp.Key))
{
ControllerDefinition.AxisRange range = ControllerType.AxisRanges
var range = ControllerType.AxisRanges
[ControllerType.AxisControls.IndexOf(kvp.Key)];
type = ColumnType.Float;
digits = Math.Max(kvp.Value.Length, range.MaxDigits);
@ -474,8 +471,15 @@ namespace BizHawk.Client.EmuHawk
column.Visible = false;
}
TasView.AllColumns.ColumnsChanged();
foreach (var column in TasView.VisibleColumns)
{
if (Global.InputManager.StickyXorAdapter.IsSticky(column.Name))
{
column.Emphasis = true;
}
}
TasView.AllColumns.ColumnsChanged();
SetupBoolPatterns();
}
@ -776,17 +780,6 @@ namespace BizHawk.Client.EmuHawk
loadZone.PlaceZone(CurrentTasMovie);
}
private void SetColumnsFromCurrentStickies()
{
foreach (var column in TasView.VisibleColumns)
{
if (Global.InputManager.StickyXorAdapter.IsSticky(column.Name))
{
column.Emphasis = true;
}
}
}
#endregion
private void TastudioPlayMode()
@ -919,6 +912,20 @@ namespace BizHawk.Client.EmuHawk
public IEnumerable<int> GetSelection() => TasView.SelectedRows;
// Slow but guarantees the entire dialog refreshes
private void FullRefresh()
{
SetTasViewRowCount();
TasView.Refresh(); // An extra refresh potentially but we need to guarantee
MarkerControl.UpdateValues();
BookMarkControl.UpdateValues();
if (_undoForm != null && !_undoForm.IsDisposed)
{
_undoForm.UpdateValues();
}
}
public void RefreshDialog(bool refreshTasView = true, bool refreshBranches = true)
{
if (_exiting)
@ -928,7 +935,7 @@ namespace BizHawk.Client.EmuHawk
if (refreshTasView)
{
RefreshTasView();
SetTasViewRowCount();
}
MarkerControl?.UpdateValues();
@ -944,7 +951,7 @@ namespace BizHawk.Client.EmuHawk
}
}
private void RefreshTasView()
private void SetTasViewRowCount()
{
TasView.RowCount = CurrentTasMovie.InputLogLength + 1;
_lastRefresh = Emulator.Frame;

View File

@ -68,5 +68,4 @@
<Compile Update="Consoles/Sony/PSX/Octoshock.*.cs" DependentUpon="Octoshock.cs" />
<Compile Update="Consoles/WonderSwan/WonderSwan.*.cs" DependentUpon="WonderSwan.cs" />
</ItemGroup>
<Import Project="$(SolutionDir)NamespaceAliasHack.targets" />
</Project>

View File

@ -20,11 +20,9 @@ namespace BizHawk.Emulation.Cores.Components.CP1610
public TraceInfo CP1610State(bool disassemble = true)
{
int notused;
return new TraceInfo
{
Disassembly = $"{RegisterPC - 1:X4}: {opcode:X2} {(disassemble ? Disassemble((ushort)(RegisterPC - 1), out notused) : "---")} ".PadRight(26),
Disassembly = $"{RegisterPC - 1:X4}: {opcode:X2} {(disassemble ? Disassemble((ushort)(RegisterPC - 1), out _) : "---")} ".PadRight(26),
RegisterInfo = string.Join(" ",
new[]
{

View File

@ -372,11 +372,9 @@ namespace BizHawk.Emulation.Cores.Components.H6280
public TraceInfo State()
{
int notused;
return new TraceInfo
{
Disassembly = $"{MPR[PC >> 13]:X2}:{PC:X4}: {ReadMemory(PC):X2} {Disassemble(PC, out notused)} ".PadRight(30),
Disassembly = $"{MPR[PC >> 13]:X2}:{PC:X4}: {ReadMemory(PC):X2} {Disassemble(PC, out _)} ".PadRight(30),
RegisterInfo = string.Join(" ",
$"A:{A:X2}",
$"X:{X:X2}",

View File

@ -522,11 +522,9 @@ namespace BizHawk.Emulation.Cores.Components.I8048
public TraceInfo State(bool disassemble = true)
{
ushort notused;
return new TraceInfo
{
Disassembly = $"{(disassemble ? Disassemble(Regs[PC], ReadMemory, out notused) : "---")} ".PadRight(50),
Disassembly = $"{(disassemble ? Disassemble(Regs[PC], ReadMemory, out _) : "---")} ".PadRight(50),
RegisterInfo = string.Format(
"A:{0:X2} R0:{1:X2} R1:{2:X2} R2:{3:X2} R3:{4:X2} R4:{5:X2} R5:{6:X2} R6:{7:X2} R7:{8:X2} PSW:{9:X4} Cy:{10} LY:{11} {12}{13}{14}{15}{16}{17}{18}{19}{20}{21}{22}",
Regs[A],

View File

@ -641,11 +641,9 @@ namespace BizHawk.Emulation.Cores.Components.LR35902
public TraceInfo State(bool disassemble = true)
{
ushort notused;
return new TraceInfo
{
Disassembly = $"{(disassemble ? Disassemble(RegPC, ReadMemory, out notused) : "---")} ".PadRight(40),
Disassembly = $"{(disassemble ? Disassemble(RegPC, ReadMemory, out _) : "---")} ".PadRight(40),
RegisterInfo = string.Join(" ",
$"A:{Regs[A]:X2}",
$"F:{Regs[F]:X2}",

View File

@ -502,11 +502,9 @@ namespace BizHawk.Emulation.Cores.Components.MC6800
public TraceInfo State(bool disassemble = true)
{
ushort notused;
return new TraceInfo
{
Disassembly = $"{(disassemble ? Disassemble(Regs[PC], ReadMemory, out notused) : "---")} ".PadRight(50),
Disassembly = $"{(disassemble ? Disassemble(Regs[PC], ReadMemory, out _) : "---")} ".PadRight(50),
RegisterInfo = string.Format(
"A:{0:X2} B:{1:X2} X:{2:X4} SP:{3:X4} CC:{4:X2} Cy:{5} {6}{7}{8}{9}{10}{11}",
Regs[A],

View File

@ -640,11 +640,9 @@ namespace BizHawk.Emulation.Cores.Components.MC6809
public TraceInfo State(bool disassemble = true)
{
ushort notused;
return new TraceInfo
{
Disassembly = $"{(disassemble ? Disassemble(Regs[PC], ReadMemory, out notused) : "---")} ".PadRight(50),
Disassembly = $"{(disassemble ? Disassemble(Regs[PC], ReadMemory, out _) : "---")} ".PadRight(50),
RegisterInfo = string.Format(
"A:{0:X2} B:{1:X2} X:{2:X4} Y:{3:X4} US:{4:X4} SP:{5:X4} DP:{6:X2} CC:{7:X2} Cy:{8} {9}{10}{11}{12}{13}{14}{15}{16}",
Regs[A],

View File

@ -6,13 +6,6 @@ namespace BizHawk.Emulation.Cores.Components.M6502
{
public partial class MOS6502X<TLink> : IDisassemblable
{
private static ushort peeker_word(ushort address, Func<ushort, byte> peeker)
{
byte l = peeker(address);
byte h = peeker(++address);
return (ushort)((h << 8) | l);
}
public string Disassemble(ushort pc, out int bytesToAdvance)
{
return MOS6502X.Disassemble(pc, out bytesToAdvance, _link.PeekMemory);

View File

@ -1,6 +1,5 @@
using System;
using System.Collections.Generic;
using System.IO;
using BizHawk.Common;
using BizHawk.Emulation.Common;
@ -20,7 +19,6 @@ namespace BizHawk.Emulation.Cores.Components.M6502
public bool BCD_Enabled = true;
public bool debug = false;
public bool throw_unhandled;
public void Reset()
{
@ -150,12 +148,6 @@ namespace BizHawk.Emulation.Cores.Components.M6502
public const ushort BRKVector = 0xFFFE;
public const ushort IRQVector = 0xFFFE;
enum ExceptionType
{
BRK, NMI, IRQ
}
// ==== CPU State ====
public byte A;
@ -199,9 +191,6 @@ namespace BizHawk.Emulation.Cores.Components.M6502
ser.EndSection();
}
public void SaveStateBinary(BinaryWriter writer) { SyncState(Serializer.CreateBinaryWriter(writer)); }
public void LoadStateBinary(BinaryReader reader) { SyncState(Serializer.CreateBinaryReader(reader)); }
// ==== End State ====
/// <summary>Carry Flag</summary>
@ -262,34 +251,6 @@ namespace BizHawk.Emulation.Cores.Components.M6502
public long TotalExecutedCycles;
public ushort ReadWord(ushort address)
{
byte l = _link.ReadMemory(address);
byte h = _link.ReadMemory(++address);
return (ushort)((h << 8) | l);
}
public ushort PeekWord(ushort address)
{
byte l = _link.PeekMemory(address);
byte h = _link.PeekMemory(++address);
return (ushort)((h << 8) | l);
}
private void WriteWord(ushort address, ushort value)
{
byte l = (byte)(value & 0xFF);
byte h = (byte)(value >> 8);
_link.WriteMemory(address, l);
_link.WriteMemory(++address, h);
}
private ushort ReadWordPageWrap(ushort address)
{
ushort highAddress = (ushort)((address & 0xFF00) + ((address + 1) & 0xFF));
return (ushort)(_link.ReadMemory(address) | (_link.ReadMemory(highAddress) << 8));
}
// SO pin
public void SetOverflow()
{

View File

@ -22,15 +22,10 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
public bool NonMaskableInterrupt
{
get => nonMaskableInterrupt;
set { if (value && !nonMaskableInterrupt) NonMaskableInterruptPending = true; nonMaskableInterrupt = value; }
set { if (value && !nonMaskableInterrupt) nonMaskableInterruptPending = true; nonMaskableInterrupt = value; }
}
private bool nonMaskableInterruptPending;
public bool NonMaskableInterruptPending
{
get => nonMaskableInterruptPending;
set => nonMaskableInterruptPending = value;
}
private int interruptMode;
public int InterruptMode
@ -144,7 +139,7 @@ namespace BizHawk.Emulation.Cores.Components.Z80A
IFF1 = false;
IFF2 = false;
NonMaskableInterrupt = false;
NonMaskableInterruptPending = false;
nonMaskableInterruptPending = false;
FlagI = false;
InterruptMode = 1;
}

View File

@ -329,6 +329,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
}
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal byte ReadControls1(bool peek)
{
InputCallbacks.Call();
@ -343,6 +344,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
return value;
}
[MethodImpl(MethodImplOptions.AggressiveInlining)]
internal byte ReadControls2(bool peek)
{
InputCallbacks.Call();

View File

@ -208,7 +208,7 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
{
PrescalerCount--;
if ((PrescalerCount == 0) || Overflowed)
if (PrescalerCount == 0 || Overflowed)
{
Value--;

View File

@ -74,17 +74,6 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
return result;
}
public void Resp_check()
{
if (_draw_signaled)
{
if (_startSignal < 161)
{
_startSignal -= _startSignal - 156;
}
}
}
public void SyncState(Serializer ser)
{
ser.BeginSection("Ball");

View File

@ -93,31 +93,6 @@ namespace BizHawk.Emulation.Cores.Atari.Atari2600
return result;
}
public void Resp_check()
{
if (_draw_signaled)
{
if (_startSignal < 17)
{
_startSignal -= _startSignal - 12;
}
else if (_startSignal < 33)
{
_startSignal -= _startSignal - 28;
}
else if (_startSignal < 65)
{
_startSignal -= _startSignal - 60;
}
else if (_startSignal < 161)
{
_startSignal -= _startSignal - 156;
}
}
}
public void SyncState(Serializer ser)
{
ser.BeginSection("Missile");

View File

@ -80,7 +80,7 @@ namespace BizHawk.Emulation.Cores.ColecoVision
VdpAddress &= 0x3FFF;
}
void WriteRegister(int reg, byte data)
private void WriteRegister(int reg, byte data)
{
if (reg >= 8) return;
@ -106,7 +106,7 @@ namespace BizHawk.Emulation.Cores.ColecoVision
case 5: // Sprite Attribute Table Base Address
TmsSpriteAttributeBase = (Registers[5] << 7) & 0x3F80;
break;
case 6: // Sprite Pattern Generator Base Adderss
case 6: // Sprite Pattern Generator Base Address
SpritePatternGeneratorBase = (Registers[6] << 11) & 0x3800;
break;
}

View File

@ -33,7 +33,7 @@ namespace BizHawk.Emulation.Cores.Consoles.Nintendo.NDS
public PutSettingsDirtyBits PutSettings(MelonSettings o)
{
bool screenChanged = false;
if (_settings != null)
if (o != null)
{
screenChanged |= _settings.ScaleFactor != o.ScaleFactor;
screenChanged |= _settings.ScreenGap != o.ScreenGap;

View File

@ -396,6 +396,7 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=Mainform/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=mainmemory/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=mame/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Maskable/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Matroska/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=Medna/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=mednadisc/@EntryIndexedValue">True</s:Boolean>

View File

@ -1,11 +0,0 @@
<Project>
<!-- Prevents name collision by aliasing transient dependency's global namespace (exposed as linqbridge::System.Action instead of duplicate global::System.Action).
Credit to @gertjvr on GitHub in this comment: https://github.com/NuGet/Home/issues/4989#issuecomment-310565840 -->
<Target Name="NamespaceAliasHack" BeforeTargets="FindReferenceAssembliesForReferences;ResolveReferences">
<ItemGroup>
<ReferencePath Condition=" '%(FileName)' == 'LinqBridge' ">
<Aliases>linqbridge</Aliases>
</ReferencePath>
</ItemGroup>
</Target>
</Project>