Пример #1
0
 static Bitmap GetFrameBufferBitmap(int frameBuffer)
 {
     byte[] pixelData = Zpr.ReadRam(frameBuffer, BUFFER_SIZE);
     //pixelData.Reverse32();
     frameBuffer &= 0xFFFFFF;
     return(DrawRGB5A1(pixelData, 320, 240));
 }
Пример #2
0
        private List <ModelViewerDlist> GetDlistBranches(N64Ptr topDlist)
        {
            List <ModelViewerDlist> result = new List <ModelViewerDlist>();

            var data = Zpr.ReadRam(0, 0x400000);

            //bool foundProjection = false;

            List <(N64Ptr ptr, bool check)> stack = new List <(N64Ptr, bool)>();

            List <int> endDlists = gfxDList.Select(x => (int)x.StartPtr).ToList();

            using (BinaryReader br = new BinaryReader(new MemoryStream(data)))
            {
                foreach (var item in MicrocodeParser.DeepTrace(br, (int)topDlist))
                {
                    //if (item.Item2.Name == G_.G_MTX)
                    //{
                    //    if ((item.Item2.EncodingHigh & 0x4) > 0)
                    //        foundProjection = true;
                    //}

                    //if (!foundProjection)
                    //    continue;

                    if (item.gbi.Name == G_.G_DL)
                    {
                        if (endDlists.Contains((int)item.gbi.EncodingLow))
                        {
                            break;
                        }
                        bool check = (item.gbi.EncodingLow >> 24) != 0x80;

                        var list = stack.Where(x => x.check == check).Select(y => y.ptr).ToList();

                        if (check)
                        {
                            result.Add(new ModelViewerDlist(item.ptr, list));
                        }
                        stack.Add((item.ptr, check));
                    }
                    if (item.gbi.Name == G_.G_ENDDL)
                    {
                        var remove = stack.Count - 1;
                        if (remove >= 0)
                        {
                            stack.RemoveAt(remove);
                        }
                    }
                }
            }
            return(result);
        }
Пример #3
0
        public static List <OvlActor> GetActorFiles()
        {
            List <OvlActor> actorFiles = new List <OvlActor>();
            OvlActor        working;

            byte[] actorTbl;
            byte[] actorFileData = new byte[LENGTH];

            actorTbl = Zpr.ReadRam(OVL_TABLE_ADDR, TOTAL_ACTORS * LENGTH);

            for (int i = 0; i < TOTAL_ACTORS; i++)
            {
                Array.Copy(actorTbl, i * LENGTH, actorFileData, 0, LENGTH);
                working = new OvlActor(i, actorFileData);
                if (working.IsFileLoaded)
                {
                    actorFiles.Add(working);
                }
            }
            return(actorFiles);
        }
Пример #4
0
        public static List <OvlParticle> GetFiles()
        {
            List <OvlParticle> particleFiles = new List <OvlParticle>();
            OvlParticle        working;

            byte[] particleOvlTable;
            byte[] particleFileData = new byte[LENGTH];

            particleOvlTable = Zpr.ReadRam(OVL_TABLE_ADDR, TOTAL_PARTICLE_EFFECTS * LENGTH);
            particleOvlTable.Reverse32();
            for (int i = 0; i < TOTAL_PARTICLE_EFFECTS; i++)
            {
                Array.Copy(particleOvlTable, i * LENGTH, particleFileData, 0, LENGTH);
                Endian.Reverse32(particleFileData);
                working = new OvlParticle(i, particleFileData);
                if (working.IsFileLoaded)
                {
                    particleFiles.Add(working);
                }
            }
            return(particleFiles);
        }
Пример #5
0
 static Bitmap GetBufferBitmap(TextureFormat format, N64Ptr start, int width, int height)
 {
     byte[] pixelData = Zpr.ReadRam(start, GetSizeInBytes(format, width, height));
     return(formatInfo[format].CreateBitmap(pixelData, width, height));
 }
Пример #6
0
 static Bitmap GetFrameBufferBitmap(N64Ptr framebuffer)
 {
     byte[] pixelData = Zpr.ReadRam(framebuffer, BUFFER_SIZE);
     return(DrawRGB5A1(pixelData, 320, 240));
 }