CSPspEmu.Hle.Modules.ge.sceGe_user._sceGeListEnQueue C# (CSharp) Method

_sceGeListEnQueue() private method

private _sceGeListEnQueue ( uint InstructionAddressStart, uint InstructionAddressStall, int CallbackId, PspGeListArgs Args ) : GpuDisplayList
InstructionAddressStart uint
InstructionAddressStall uint
CallbackId int
Args CSPspEmu.Core.Gpu.PspGeListArgs
return CSPspEmu.Core.Gpu.GpuDisplayList
        private GpuDisplayList _sceGeListEnQueue(uint InstructionAddressStart, uint InstructionAddressStall, int CallbackId, PspGeListArgs* Args)
        {
            var DisplayList = GpuProcessor.DequeueFreeDisplayList();

            DisplayList.SetInstructionAddressStartAndCurrent(InstructionAddressStart);
            DisplayList.SetInstructionAddressStall(InstructionAddressStall);
            DisplayList.CallbacksId = -1;
            DisplayList.Callbacks = default(PspGeCallbackData);

            if (CallbackId != -1)
            {
                DisplayList.Callbacks = Callbacks[CallbackId];
                DisplayList.CallbacksId = CallbackId;
            }

            DisplayList.GpuStateStructPointer = null;

            if (Args != null)
            {
                DisplayList.GpuStateStructPointer = (GpuStateStruct*)CpuProcessor.Memory.PspAddressToPointerSafe(Args->GpuStateStructAddress, Marshal.SizeOf(typeof(GpuStateStruct)));
            }

            if (DisplayList.GpuStateStructPointer == null)
            {
                DisplayList.GpuStateStructPointer = GpuStateStructPointer;
            }

            return DisplayList;
        }