开放模拟器核心帧序号
This commit is contained in:
parent
11d7f681b0
commit
edc84fc3cf
@ -99,7 +99,7 @@ namespace AxibugEmuOnline.Client
|
|||||||
}
|
}
|
||||||
|
|
||||||
uint LastTestInput = 0;
|
uint LastTestInput = 0;
|
||||||
public void SampleInput()
|
public void SampleInput(uint frameIndex)
|
||||||
{
|
{
|
||||||
if (InGameUI.Instance.IsNetPlay)
|
if (InGameUI.Instance.IsNetPlay)
|
||||||
{
|
{
|
||||||
|
@ -84,17 +84,25 @@ namespace AxibugEmuOnline.Client
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ControllerState lastState;
|
||||||
private bool PushEmulatorFrame()
|
private bool PushEmulatorFrame()
|
||||||
{
|
{
|
||||||
Supporter.SampleInput();
|
Supporter.SampleInput(NesCore.FrameCount);
|
||||||
var controlState = Supporter.GetControllerState();
|
var controlState = Supporter.GetControllerState();
|
||||||
|
|
||||||
//如果未收到Input数据,核心帧不推进
|
//如果未收到Input数据,核心帧不推进
|
||||||
if (!controlState.valid) return false;
|
if (!controlState.valid) return false;
|
||||||
|
|
||||||
|
if (controlState != lastState)
|
||||||
|
{
|
||||||
|
App.log.Info($"[LOCALDEBUG]{NesCore.FrameCount}-->{controlState}");
|
||||||
|
}
|
||||||
|
|
||||||
NesCore.pad.Sync(controlState);
|
NesCore.pad.Sync(controlState);
|
||||||
NesCore.EmulateFrame(true);
|
NesCore.EmulateFrame(true);
|
||||||
|
|
||||||
|
lastState = controlState;
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -459,11 +459,9 @@ namespace VirtualNes.Core
|
|||||||
m_CheatCode.Clear();
|
m_CheatCode.Clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
private int FrameCount = 0;
|
public uint FrameCount { get; private set; }
|
||||||
public void EmulateFrame(bool bDraw)
|
public void EmulateFrame(bool bDraw)
|
||||||
{
|
{
|
||||||
FrameCount++;
|
|
||||||
|
|
||||||
int scanline = 0;
|
int scanline = 0;
|
||||||
if (rom.IsNSF())
|
if (rom.IsNSF())
|
||||||
{
|
{
|
||||||
@ -772,6 +770,8 @@ namespace VirtualNes.Core
|
|||||||
{
|
{
|
||||||
DrawPad();
|
DrawPad();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FrameCount++;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void DrawPad()
|
private void DrawPad()
|
||||||
@ -1901,6 +1901,7 @@ namespace VirtualNes.Core
|
|||||||
|
|
||||||
public void LoadState(State state)
|
public void LoadState(State state)
|
||||||
{
|
{
|
||||||
|
FrameCount = 0;
|
||||||
//HEADER
|
//HEADER
|
||||||
{
|
{
|
||||||
state.HEADER.ID = "VirtuaNES ST";
|
state.HEADER.ID = "VirtuaNES ST";
|
||||||
|
@ -24,6 +24,25 @@ namespace VirtualNes.Core
|
|||||||
valid = true;
|
valid = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool operator ==(ControllerState left, ControllerState right)
|
||||||
|
{
|
||||||
|
return
|
||||||
|
left.raw0 == right.raw0 &&
|
||||||
|
left.raw1 == right.raw1 &&
|
||||||
|
left.raw2 == right.raw2 &&
|
||||||
|
left.raw3 == right.raw3;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool operator !=(ControllerState left, ControllerState right)
|
||||||
|
{
|
||||||
|
return !(left == right);
|
||||||
|
}
|
||||||
|
|
||||||
|
public override string ToString()
|
||||||
|
{
|
||||||
|
return $"{raw0}|{raw1}|{raw2}|{raw3}";
|
||||||
|
}
|
||||||
|
|
||||||
public bool HasButton(int player, EnumButtonType button)
|
public bool HasButton(int player, EnumButtonType button)
|
||||||
{
|
{
|
||||||
uint raw = 0;
|
uint raw = 0;
|
||||||
|
@ -59,9 +59,9 @@ namespace VirtualNes.Core
|
|||||||
return s_support.GetControllerState();
|
return s_support.GetControllerState();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void SampleInput()
|
public static void SampleInput(uint frameCount)
|
||||||
{
|
{
|
||||||
s_support.SampleInput();
|
s_support.SampleInput(frameCount);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static EmulatorConfig Config => s_support.Config;
|
public static EmulatorConfig Config => s_support.Config;
|
||||||
@ -81,6 +81,6 @@ namespace VirtualNes.Core
|
|||||||
Stream OpenFile(string directPath, string fileName);
|
Stream OpenFile(string directPath, string fileName);
|
||||||
bool TryGetMapperNo(ROM rom, out int mapperNo);
|
bool TryGetMapperNo(ROM rom, out int mapperNo);
|
||||||
ControllerState GetControllerState();
|
ControllerState GetControllerState();
|
||||||
void SampleInput();
|
void SampleInput(uint frameCount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user