public int sceUmdRegisterUMDCallBack(int CallbackId) { var Callback = HleState.CallbackManager.Callbacks.Get(CallbackId); RegisteredCallbacks[CallbackId] = HleCallback.Create( "sceUmdRegisterUMDCallBack", Callback.Function, 1, (int)(PspUmdState.PSP_UMD_READABLE | PspUmdState.PSP_UMD_READY | PspUmdState.PSP_UMD_PRESENT), Callback.Arguments[0] ); HleState.CallbackManager.ScheduleCallback(RegisteredCallbacks[CallbackId]); return(0); //throw(new NotImplementedException()); /* * //logWarning("Not implemented: sceUmdRegisterUMDCallBack"); * unimplemented_notice(); * * umdPspCallback = uniqueIdFactory.get!PspCallback(cbid); * * hleEmulatorState.callbacksHandler.register(CallbacksHandler.Type.Umd, umdPspCallback); * umdPspCallbackId = cbid; * triggerUmdStatusChange(); * * return 0; */ }
public void Trigger() { if (HleInterruptManager.Enabled) { foreach (var Handler in SubinterruptHandlers.Where(Handler => Handler.Enabled)) { HleInterruptManager.Queue(HleCallback.Create("InterruptTrigger", Handler.Address, Handler.Index, Handler.Argument)); } } //Console.Error.WriteLine("Trigger: " + PspInterrupt); }
//[HlePspNotImplemented] public int scePowerRegisterCallback(int SlotIndex, int CallbackId) { CheckSlotIndex(SlotIndex, AllowMinusOne: true); // TODO: If cbId is invalid return PSP_POWER_ERROR_INVALID_CB. if (CallbackId == 0) { throw new SceKernelException(SceKernelErrors.PSP_POWER_ERROR_INVALID_CB); } if (SlotIndex == -1) { try { SlotIndex = Callbacks.First(Slot => Slot.CallbackId == 0).Index; } catch (InvalidOperationException) { throw new SceKernelException(SceKernelErrors.PSP_POWER_ERROR_SLOTS_FULL); } } if (Callbacks[SlotIndex].CallbackId != 0) { throw new SceKernelException(SceKernelErrors.PSP_POWER_ERROR_TAKEN_SLOT); } Callbacks[SlotIndex].CallbackId = CallbackId; var Callback = CallbackManager.Callbacks.Get(CallbackId); var RegisteredCallback = HleCallback.Create( "scePowerRegisterCallback", Callback.Function, SlotIndex + 1, (int)GetPowerCallbackFlags(), Callback.Arguments[0] ); CallbackManager.ScheduleCallback(RegisteredCallback); //throw (new NotImplementedException()); return(SlotIndex); }
public int sceKernelCreateCallback(string Name, SceKernelCallbackFunction Function, uint Argument) { return(CallbackManager.Callbacks.Create( HleCallback.Create(Name, (uint)Function, Argument) )); }