93 lines
1.7 KiB
C#
93 lines
1.7 KiB
C#
using System;
|
|
|
|
using BizHawk.Common;
|
|
|
|
namespace BizHawk.Emulation.Cores.Libretro
|
|
{
|
|
unsafe partial class LibretroApi
|
|
{
|
|
void WaitForCMD()
|
|
{
|
|
for (; ; )
|
|
{
|
|
if (comm->status == eStatus.eStatus_Idle)
|
|
break;
|
|
if (Handle_SIG(comm->reason)) continue;
|
|
if (Handle_BRK(comm->reason)) continue;
|
|
}
|
|
}
|
|
|
|
public void CMD_Run()
|
|
{
|
|
Message(eMessage.CMD_Run);
|
|
WaitForCMD();
|
|
}
|
|
|
|
public void CMD_SetEnvironment()
|
|
{
|
|
Message(eMessage.CMD_SetEnvironment);
|
|
WaitForCMD();
|
|
}
|
|
|
|
public bool CMD_LoadNoGame()
|
|
{
|
|
Message(eMessage.CMD_LoadNoGame);
|
|
WaitForCMD();
|
|
return true;
|
|
}
|
|
|
|
public bool CMD_LoadPath(string path)
|
|
{
|
|
SetAscii(BufId.Param0, path, ()=> {
|
|
Message(eMessage.CMD_LoadPath);
|
|
WaitForCMD();
|
|
});
|
|
return true;
|
|
}
|
|
|
|
public bool CMD_LoadData(byte[] data, string id)
|
|
{
|
|
SetAscii(BufId.Param0, id, () =>
|
|
{
|
|
SetBytes(BufId.Param1, data, () =>
|
|
{
|
|
Message(eMessage.CMD_LoadData);
|
|
WaitForCMD();
|
|
});
|
|
});
|
|
return true;
|
|
}
|
|
|
|
public uint CMD_UpdateSerializeSize()
|
|
{
|
|
Message(eMessage.CMD_UpdateSerializeSize);
|
|
WaitForCMD();
|
|
return (uint)comm->env.retro_serialize_size;
|
|
}
|
|
|
|
public bool CMD_Serialize(byte[] data)
|
|
{
|
|
bool ret = false;
|
|
SetBytes(BufId.Param0, data, () =>
|
|
{
|
|
Message(eMessage.CMD_Serialize);
|
|
WaitForCMD();
|
|
ret = comm->GetBoolValue();
|
|
});
|
|
return ret;
|
|
}
|
|
|
|
public bool CMD_Unserialize(byte[] data)
|
|
{
|
|
bool ret = false;
|
|
SetBytes(BufId.Param0, data, () =>
|
|
{
|
|
Message(eMessage.CMD_Unserialize);
|
|
WaitForCMD();
|
|
ret = comm->GetBoolValue();
|
|
});
|
|
return ret;
|
|
}
|
|
|
|
}
|
|
} |