//[HlePspNotImplemented]
        public int sceDisplaySetFrameBuf(uint Address, int BufferWidth, GuPixelFormats PixelFormat,
                                         PspDisplay.SyncMode Sync)
        {
            Action UpdateInfo = () =>
            {
                PspDisplay.CurrentInfo.Enabled = (Address != 0);
                if (PspDisplay.CurrentInfo.Enabled)
                {
                    PspDisplay.CurrentInfo.FrameAddress = Address;
                    PspDisplay.CurrentInfo.BufferWidth  = BufferWidth;
                    PspDisplay.CurrentInfo.PixelFormat  = PixelFormat;
                }
            };

            switch (Sync)
            {
            case PspDisplay.SyncMode.Immediate:
                UpdateInfo();
                break;

            case PspDisplay.SyncMode.NextFrame:
                ThreadManager.Current.SetWaitAndPrepareWakeUp(HleThread.WaitType.Display, "sceDisplaySetFrameBuf",
                                                              null, (WakeUp) =>
                {
                    PspDisplay.VBlankCallbackOnce(() =>
                    {
                        UpdateInfo();
                        WakeUp();
                    });
                }, HandleCallbacks: false);
                break;

            default:
                throw(new NotImplementedException("Not implemented " + Sync));
            }
            return(0);
        }
Exemple #2
0
 public int sceDisplaySetFrameBuf(uint Address, int BufferWidth, GuPixelFormats PixelFormat, PspDisplay.SyncMode Sync)
 {
     //Console.WriteLine("sceDisplay.sceDisplaySetFrameBuf {0:X},{1},{2},{3}", Address, BufferWidth, PixelFormat, Sync);
     PspDisplay.CurrentInfo.Address     = Address;
     PspDisplay.CurrentInfo.BufferWidth = BufferWidth;
     PspDisplay.CurrentInfo.PixelFormat = PixelFormat;
     PspDisplay.CurrentInfo.Sync        = Sync;
     return(0);
 }