static Bitmap GetFrameBufferBitmap(int frameBuffer) { byte[] pixelData = Zpr.ReadRam(frameBuffer, BUFFER_SIZE); //pixelData.Reverse32(); frameBuffer &= 0xFFFFFF; return(DrawRGB5A1(pixelData, 320, 240)); }
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); }
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); }
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); }
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)); }
static Bitmap GetFrameBufferBitmap(N64Ptr framebuffer) { byte[] pixelData = Zpr.ReadRam(framebuffer, BUFFER_SIZE); return(DrawRGB5A1(pixelData, 320, 240)); }