Ejemplo n.º 1
0
        protected void ExtraV2Mangle(byte *buffer1, byte codeExtra)
        {
            var gDataTmp = new byte[20 + 0xA0];

            fixed(byte *buffer2 = gDataTmp)  // aligned
            {
                PointerUtils.Memcpy(buffer2 + 20, buffer1, 0xA0);
                var pl2 = (uint *)buffer2;

                pl2[0] = 5;
                pl2[1] = pl2[2] = 0;
                pl2[3] = codeExtra;
                pl2[4] = 0xA0;

                var ret = _kirk.HleUtilsBufferCopyWithRange(
                    buffer2,
                    20 + 0xA0,
                    buffer2,
                    20 + 0xA0,
                    Kirk.CommandEnum.PspKirkCmdDecrypt
                    );

                if (ret != 0)
                {
                    throw new Exception($"extra de-mangle returns {ret}, ");
                }
                // copy result back
                PointerUtils.Memcpy(buffer1, buffer2, 0xA0);
            }
        }
Ejemplo n.º 2
0
        private void pointersUpdatedHandler(object sender, PointerEventArgs pointerEventArgs)
        {
            var over  = pointers.Count;
            var p     = pointerEventArgs.Pointers;
            var count = p.Count;

            for (var i = 0; i < count; i++)
            {
                var pointer = p[i];
                if ((pointer.Buttons & Pointer.PointerButtonState.AnyButtonPressed) != 0)
                {
                    continue;                                                                       // we ignore pressed pointers
                }
                if (PointerUtils.IsPointerOnTarget(pointer, transform))
                {
                    pointers.Add(pointer.Id);
                }
                else
                {
                    pointers.Remove(pointer.Id);
                }
            }

            if (over == 0 && pointers.Count > 0)
            {
                dispatchOver();
            }
            else if (over > 0 && pointers.Count == 0)
            {
                dispatchOut();
            }
        }
Ejemplo n.º 3
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="key"></param>
        /// <param name="input"></param>
        /// <param name="output"></param>
        /// <param name="size"></param>
        public static void DecryptAes(byte[] key, byte *input, byte *output, int size)
        {
            var inputArray  = PointerUtils.PointerToByteArray(input, size);
            var outputArray = DecryptAes(inputArray, key);

            PointerUtils.ByteArrayToPointer(outputArray, output);
        }
        private IEnumerator TestRaysWorker()
        {
            PointerStateContainer lineOn = new PointerStateContainer()
            {
                GazePointerEnabled   = false,
                GGVPointerEnabled    = null,
                PokePointerEnabled   = false,
                SpherePointerEnabled = false,
                LinePointerEnabled   = true
            };

            TestHand rightHand = new TestHand(Handedness.Right);
            TestHand leftHand  = new TestHand(Handedness.Left);

            yield return(rightHand.Show(Vector3.zero));

            yield return(leftHand.Show(Vector3.zero));

            TestContext.Out.WriteLine("Show both hands");
            EnsurePointerStates(Handedness.Right, lineOn);
            EnsurePointerStates(Handedness.Left, lineOn);

            TestContext.Out.WriteLine("Turn off ray pointer both hands");
            PointerUtils.SetHandRayPointerBehavior(PointerBehavior.AlwaysOff);
            yield return(null);

            PointerStateContainer lineOff = new PointerStateContainer()
            {
                GazePointerEnabled   = false,
                GGVPointerEnabled    = null,
                PokePointerEnabled   = false,
                SpherePointerEnabled = false,
                LinePointerEnabled   = false
            };

            EnsurePointerStates(Handedness.Right, lineOff);
            EnsurePointerStates(Handedness.Left, lineOff);

            TestContext.Out.WriteLine("Turn on ray right hand.");
            PointerUtils.SetHandRayPointerBehavior(PointerBehavior.AlwaysOn, Handedness.Right);
            yield return(null);

            EnsurePointerStates(Handedness.Right, lineOn);
            EnsurePointerStates(Handedness.Left, lineOff);

            TestContext.Out.WriteLine("Turn on ray (default behavior) right hand.");
            PointerUtils.SetHandRayPointerBehavior(PointerBehavior.Default, Handedness.Right);
            yield return(null);

            EnsurePointerStates(Handedness.Right, lineOn);
            EnsurePointerStates(Handedness.Left, lineOff);

            TestContext.Out.WriteLine("Turn on ray (default behavior) left hand.");
            PointerUtils.SetHandRayPointerBehavior(PointerBehavior.Default, Handedness.Left);
            yield return(null);

            EnsurePointerStates(Handedness.Right, lineOn);
            EnsurePointerStates(Handedness.Left, lineOn);
        }
Ejemplo n.º 5
0
        public static T SafeRead <T>(Pointer <T> ptr, int elemOfs = 0)
        {
            T      t    = default;
            IntPtr addr = PointerUtils.Offset <T>(ptr.Address, elemOfs);

            if (Assertion.Throws <NullReferenceException>(delegate { t = CSUnsafe.Read <T>(addr.ToPointer()); }))
            {
                return(default);
        /// <summary>
        /// ハンドレイをOffにする
        /// </summary>
        public void HandRayOff()
        {
            // Turn off all hand rays
            PointerUtils.SetHandRayPointerBehavior(PointerBehavior.AlwaysOff);

            // Turn off hand rays for the right hand only
            //PointerUtils.SetHandRayPointerBehavior(PointerBehavior.AlwaysOff, Handedness.Right);
        }
Ejemplo n.º 7
0
        public int sceMpegQueryStreamSize(byte *pmfHeader, out uint size)
        {
            var pmf = new Pmf().Load(new MemoryStream(PointerUtils.PointerToByteArray(pmfHeader, 2048)));

            size = pmf.Header.StreamSize;
            //*Size = 0;
            return(0);
        }
Ejemplo n.º 8
0
 public static string StringFromAddress(CpuThreadState CpuThreadState, uint Address)
 {
     if (Address == 0)
     {
         return(null);
     }
     return(PointerUtils.PtrToString((byte *)CpuThreadState.GetMemoryPtr(Address), Encoding.UTF8));
 }
Ejemplo n.º 9
0
 public int sceMp3NotifyAddStreamData(Mp3Stream Mp3Stream, int Size)
 {
     Mp3Stream.AddStreamData(
         PointerUtils.PointerToByteArray(
             (byte *)Mp3Stream.Mp3Arguments->Mp3BufferPointer.GetPointer(Memory, Size), Size)
         );
     return(0);
 }
Ejemplo n.º 10
0
        public int sceNetAdhocMatchingGetHelloOpt(Matching Matching, ref int DataLength, byte *DataPointer)
        {
            var Data = Matching.GetHelloOpt();

            DataLength = Math.Min(Data.Length, DataLength);
            PointerUtils.Memcpy(DataPointer, Data, DataLength);
            return(0);
        }
Ejemplo n.º 11
0
 /// <summary>
 /// Sets pointer behavior to mimic HoloLens 2
 /// PokePointer will be Default
 /// GrabPointer will be Default
 /// HandRayPointer will be Default
 /// MotionControllerRayPointer will be off
 /// GazePointer will be Off
 /// </summary>
 public void SetHoloLens2()
 {
     PointerUtils.SetHandPokePointerBehavior(PointerBehavior.Default, Handedness.Any);
     PointerUtils.SetHandGrabPointerBehavior(PointerBehavior.Default, Handedness.Any);
     PointerUtils.SetHandRayPointerBehavior(PointerBehavior.Default, Handedness.Any);
     PointerUtils.SetMotionControllerRayPointerBehavior(PointerBehavior.AlwaysOff, Handedness.Any);
     PointerUtils.SetGazePointerBehavior(PointerBehavior.AlwaysOff);
 }
Ejemplo n.º 12
0
        public void FindLargestMatchByte1()
        {
            var A = new byte[] { 1, 0, 2, 2, 2 };

            fixed(byte *_A = A)
            {
                Assert.AreEqual(1, PointerUtils.FindLargestMatchByte(_A, (byte)1, A.Length - 3));
            }
        }
Ejemplo n.º 13
0
        public int sceNetInetRecv(int SocketId, void *BufferPointer, int BufferLength, SocketFlags Flags)
        {
            var Socket     = Sockets.Get(SocketId);
            var RecvBuffer = new byte[BufferLength];
            int Received   = Socket.Receive(RecvBuffer, Flags);

            PointerUtils.Memcpy((byte *)BufferPointer, RecvBuffer, Received);
            return(Received);
        }
Ejemplo n.º 14
0
        public void FindLargestMatchByte13()
        {
            var A = new byte[] { 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2 };

            fixed(byte *_A = A)
            {
                Assert.Equal(13, PointerUtils.FindLargestMatchByte(_A, (byte)1, A.Length));
            }
        }
Ejemplo n.º 15
0
 public int sceKernelUtilsSha1Digest(byte *Data, uint Size, byte *Digest)
 {
     PointerUtils.Memcpy(
         Digest,
         SHA1.Create().ComputeHash(PointerUtils.PointerToByteArray(Data, (int)Size)),
         20
         );
     return(0);
 }
Ejemplo n.º 16
0
        public void FindLargestMatchByte3()
        {
            var A = new byte[] { 3, 3, 3 };

            fixed(byte *_A = A)
            {
                Assert.Equal(3, PointerUtils.FindLargestMatchByte(_A, (byte)3, A.Length));
            }
        }
Ejemplo n.º 17
0
        public unsafe int IoRead(HleIoDrvFileArg HleIoDrvFileArg, byte *OutputPointer, int OutputLength)
        {
            var IsoFileArgument = ((IsoFileArgument)HleIoDrvFileArg.FileArgument);
            var OutputData      = new byte[OutputLength];
            int Readed          = IsoFileArgument.Stream.Read(OutputData, 0, OutputLength);

            PointerUtils.Memcpy(OutputPointer, OutputData, OutputLength);
            return(Readed);
            //throw new NotImplementedException();
        }
Ejemplo n.º 18
0
            public unsafe void ChainingValue(uint *result)
            {
                var full = new uint[16];

                fixed(uint *ptrFull = full)
                {
                    Compress(ptrFull);
                    PointerUtils.MemMove(&result[0], ptrFull, 8 * sizeof(uint));
                }
            }
        public Font sceFontOpenUserMemory(FontLibrary FontLibrary, byte *MemoryFontAddress, int MemoryFontLength,
                                          uint *ErrorCode)
        {
            var MemoryFont = PointerUtils.PointerToByteArray(MemoryFontAddress, MemoryFontLength);
            var PGF        = new Pgf().Load(new MemoryStream(MemoryFont));
            var Font       = new Font(FontLibrary, PGF);

            *ErrorCode = 0;
            return(Font);
        }
Ejemplo n.º 20
0
        public void TestMemset()
        {
            var Data = new byte[131];

            PointerUtils.Memset(Data, 0x3E, Data.Length);

            Assert.Equal(
                ((byte)0x3E).Repeat(Data.Length),
                Data
                );
        }
 private void SetToggleHelper <T>(Interactable toggle, string toggleName, InputSourceType inputType) where T : class, IMixedRealityPointer
 {
     if (toggle == null)
     {
         Debug.LogWarning($"Button {toggleName} is null on GameObject {gameObject.name}. Did you forget to set it?");
     }
     else
     {
         toggle.IsToggled = PointerUtils.GetPointerBehavior <T>(Handedness.Any, inputType) != PointerBehavior.AlwaysOff;
     }
 }
Ejemplo n.º 22
0
        private static void UnswizzleInline(void *data, int rowWidth, int textureHeight)
        {
            var temp = new byte[rowWidth * textureHeight];

            fixed(void *tempPointer = temp)
            {
                Unswizzle(data, tempPointer, rowWidth, textureHeight);
            }

            PointerUtils.Memcpy((byte *)data, temp, rowWidth * textureHeight);
        }
Ejemplo n.º 23
0
 public uint sceKernelMemset(uint PspPointer, int Data, int Size)
 {
     try
     {
         PointerUtils.Memset((byte *)Memory.PspAddressToPointerSafe(PspPointer, Size), (byte)Data, Size);
     }
     catch
     {
     }
     return(PspPointer);
 }
Ejemplo n.º 24
0
        public void FindLargestMatch5()
        {
            var A = new byte[] { 1, 2, 3, 4, 5, 0, 7 };
            var B = new byte[] { 1, 2, 3, 4, 5, 6, 7 };

            fixed(byte *_A = A)
            fixed(byte *_B = B)
            {
                Assert.Equal(5, PointerUtils.FindLargestMatch(_A, _B, A.Length));
            }
        }
Ejemplo n.º 25
0
        public void FindLargestMatch0()
        {
            var A = new byte[] { 0, 2, 3, 4, 5, 6, 7 };
            var B = new byte[] { 1, 2, 3, 4, 5, 6, 7 };

            fixed(byte *_A = A)
            fixed(byte *_B = B)
            {
                Assert.Equal(0, PointerUtils.FindLargestMatch(_A, _B, 5));
            }
        }
Ejemplo n.º 26
0
        public void FastHash()
        {
            var A = new byte[] { 1, 2, 3 };
            var B = new byte[] { 1, 2, 4 };

            fixed(byte *_A = A)
            fixed(byte *_B = B)
            {
                Assert.NotEqual(PointerUtils.FastHash(_A, 3), PointerUtils.FastHash(_B, 3));
            }
        }
Ejemplo n.º 27
0
        public int sceMpegCreate(SceMpegPointer *sceMpegPointer, void *mpegData, int mpegSize,
                                 SceMpegRingbuffer *sceMpegRingbuffer, int frameWidth, int mode, int ddrTop)
        {
            //return -1;

            var mpeg = GetMpeg(sceMpegPointer);

            if (mpegSize < sceMpegQueryMemSize(0))
            {
                throw (new SceKernelException(SceKernelErrors.ERROR_MPEG_NO_MEMORY));
            }

            // Update the ring buffer struct.
            if (sceMpegRingbuffer->PacketSize == 0)
            {
                sceMpegRingbuffer->PacketsAvailable = 0;
            }
            else
            {
                sceMpegRingbuffer->PacketsAvailable =
                    (int)((sceMpegRingbuffer->DataEnd.Address - sceMpegRingbuffer->Data.Address) /
                          sceMpegRingbuffer->PacketSize);
            }

            sceMpegRingbuffer->SceMpeg = Memory.PointerToPspPointer(sceMpegPointer);

            SceMpeg *sceMpegData = (SceMpeg *)(((byte *)mpegData) + 0x30);

            sceMpegPointer->SceMpeg = Memory.PointerToPspPointer(sceMpegData);

            PointerUtils.StoreStringOnPtr("LIBMPEG", Encoding.UTF8, sceMpegData->MagicBytes);
            PointerUtils.StoreStringOnPtr("001", Encoding.UTF8, sceMpegData->VersionBytes);
            sceMpegData->Pad = -1;
            sceMpegData->RingBufferAddress          = Memory.PointerToPspPointer(sceMpegRingbuffer);
            sceMpegData->RingBufferAddressDataUpper = sceMpegRingbuffer->DataEnd;
            sceMpegData->FrameWidth                 = frameWidth;
            sceMpegData->SceMpegAvcMode.Mode        = -1;
            sceMpegData->SceMpegAvcMode.PixelFormat = GuPixelFormats.Rgba8888;
            sceMpegData->VideoFrameCount            = 0;
            sceMpegData->AudioFrameCount            = 0;

            sceMpegRingbuffer->PacketsTotal = 0;

            mpeg.ReadPackets = numPackets => (int)HleInterop.ExecuteFunctionNow(sceMpegRingbuffer->Callback,
                                                                                sceMpegRingbuffer->Data,
                                                                                numPackets, sceMpegRingbuffer->CallbackParameter);

            mpeg._Mpeg = sceMpegPointer;
            mpeg.Data  = sceMpegData;
            mpeg.Create();

            return(0);
        }
        public IEnumerator TestGrab()
        {
            var cube = GameObject.CreatePrimitive(PrimitiveType.Cube);

            cube.AddComponent <NearInteractionGrabbable>();
            cube.transform.position = Vector3.forward;
            TestUtilities.PlayspaceToOriginLookingForward();

            TestHand rightHand = new TestHand(Handedness.Right);
            TestHand leftHand  = new TestHand(Handedness.Left);

            TestContext.Out.WriteLine("Show both hands near grabbable cube");
            yield return(rightHand.Show(cube.transform.position));

            yield return(leftHand.Show(cube.transform.position));

            yield return(PlayModeTestUtilities.WaitForInputSystemUpdate());

            PointerStateContainer grabOn = new PointerStateContainer()
            {
                GazePointerEnabled   = false,
                GGVPointerEnabled    = null,
                PokePointerEnabled   = false,
                SpherePointerEnabled = true,
                LinePointerEnabled   = false
            };

            EnsurePointerStates(Handedness.Right, grabOn);
            EnsurePointerStates(Handedness.Left, grabOn);

            TestContext.Out.WriteLine("Turn off grab pointer right hand");
            PointerUtils.SetHandGrabPointerBehavior(PointerBehavior.AlwaysOff, Handedness.Right);
            yield return(null);

            PointerStateContainer grabOff = new PointerStateContainer()
            {
                GazePointerEnabled   = false,
                GGVPointerEnabled    = null,
                PokePointerEnabled   = false,
                SpherePointerEnabled = false,
                LinePointerEnabled   = true
            };

            EnsurePointerStates(Handedness.Right, grabOff);
            EnsurePointerStates(Handedness.Left, grabOn);

            TestContext.Out.WriteLine("Turn off grab pointer both hands");
            PointerUtils.SetHandGrabPointerBehavior(PointerBehavior.AlwaysOff);
            yield return(null);

            EnsurePointerStates(Handedness.Right, grabOff);
            EnsurePointerStates(Handedness.Left, grabOff);
        }
Ejemplo n.º 29
0
        private static unsafe byte[] GetInitialHashLong(byte[] initialHash, byte[] appendix)
        {
            var result = new byte[ARGON2_PREHASH_SEED_LENGTH];

            fixed(byte *initialHashPtr = initialHash, resultPtr = result, appendixPtr = appendix)
            {
                PointerUtils.MemMove(resultPtr, initialHashPtr, ARGON2_PREHASH_DIGEST_LENGTH);
                PointerUtils.MemMove(resultPtr + ARGON2_PREHASH_DIGEST_LENGTH, appendixPtr, 4);
            }

            return(result);
        }
Ejemplo n.º 30
0
        public void TestMemcpyOverlapping()
        {
            var _Data    = new byte[] { 1, 0, 0, 0, 0, 0 };
            var Expected = new byte[] { 1, 1, 1, 1, 1, 1 };

            fixed(byte *Data = _Data)
            {
                PointerUtils.Memcpy(&Data[1], &Data[0], 5);
            }

            Assert.Equal(Expected, _Data);
        }