public unsafe int IoDevctl(HleIoDrvFileArg HleIoDrvFileArg, string DeviceName, uint Command, byte* InputPointer, int InputLength, byte* OutputPointer, int OutputLength)
{
switch (DeviceName)
{
case "emulator:": break;
case "kemulator:": break;
default: throw (new InvalidOperationException());
}
//Console.Error.WriteLine(" {0}", (EmulatorDevclEnum)Command);
switch ((EmulatorDevclEnum)Command)
{
case EmulatorDevclEnum.GetHasDisplay:
*((int*)OutputPointer) = DisplayConfig.Enabled ? 1 : 0;
break;
case EmulatorDevclEnum.SendOutput:
var OutputString = new String((sbyte*)InputPointer, 0, InputLength, Encoding.ASCII);
this.HleOutputHandler.Output(OutputString);
//Console.Error.WriteLine("{0}", OutputString);
break;
case EmulatorDevclEnum.IsEmulator:
return 0;
case EmulatorDevclEnum.EmitScreenshot:
if (PspHleRunningConfig.FileNameBase == null || PspHleRunningConfig.FileNameBase == "") throw (new Exception("PspHleRunningConfig.FileNameBase is empty"));
this.PspDisplay.TakeScreenshot().Save(String.Format("{0}.lastoutput.{1}.png", PspHleRunningConfig.FileNameBase, ScreenShotCount++), ImageFormat.Png);
break;
default:
Console.Error.WriteLine("Unknown emulator command '{0}':0x{1:X} <- {2}", DeviceName, Command, (EmulatorDevclEnum)Command);
return -1;
}
return -1;
}