private void loadOvTable(String dirName, int id, Directory parent, File table, out OverlayFile[] arr) { Directory dir = new Directory(this, parent, true, dirName, id); addDir(dir); parent.childrenDirs.Add(dir); ByteArrayInputStream tbl = new ByteArrayInputStream(table.getContents()); arr = new OverlayFile[tbl.available / 32]; int i = 0; while (tbl.lengthAvailable(32)) { uint ovId = tbl.readUInt(); uint ramAddr = tbl.readUInt(); uint ramSize = tbl.readUInt(); uint bssSize = tbl.readUInt(); uint staticInitStart = tbl.readUInt(); uint staticInitEnd = tbl.readUInt(); ushort fileID = tbl.readUShort(); tbl.skip(6); //unused 0's OverlayFile f = loadOvFile(fileID, dir, table, tbl.getPos() - 0x20); f.isSystemFile = true; arr[i] = f; i++; } }
protected OverlayFile loadOvFile(int fileID, Directory parent, File ovTableFile, uint ovTblOffs) { int beginOffs = fileID * 8; int endOffs = fileID * 8 + 4; OverlayFile f = new OverlayFile(this, parent, fileID, fatFile, beginOffs, endOffs,ovTableFile, ovTblOffs); parent.childrenFiles.Add(f); addFile(f); return f; }