Drafts for RomFs support Ad-Hoc fix: POC for Lvl 6 header
This commit is contained in:
parent
33ef6c5bf8
commit
5c0b037fa8
3 changed files with 32 additions and 22 deletions
|
@ -33,4 +33,5 @@ public class RFSFolderEntry {
|
||||||
public String toString(){
|
public String toString(){
|
||||||
return name;
|
return name;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
|
@ -25,6 +25,7 @@ import javafx.scene.layout.Region;
|
||||||
import javafx.scene.layout.VBox;
|
import javafx.scene.layout.VBox;
|
||||||
import konogonka.Controllers.ITabController;
|
import konogonka.Controllers.ITabController;
|
||||||
import konogonka.Tools.ISuperProvider;
|
import konogonka.Tools.ISuperProvider;
|
||||||
|
import konogonka.Tools.RomFs.RomFsDecryptedProvider;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
|
@ -37,6 +38,8 @@ public class RomFsController implements ITabController {
|
||||||
@FXML
|
@FXML
|
||||||
private VBox folderContentVBox;
|
private VBox folderContentVBox;
|
||||||
|
|
||||||
|
private RomFsDecryptedProvider RomFsProvider;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initialize(URL url, ResourceBundle resourceBundle) {
|
public void initialize(URL url, ResourceBundle resourceBundle) {
|
||||||
TreeItem<RFSFolderEntry> rootTest = getEmptyRoot();
|
TreeItem<RFSFolderEntry> rootTest = getEmptyRoot();
|
||||||
|
@ -54,6 +57,12 @@ public class RomFsController implements ITabController {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void analyze(File file, long offset) {
|
public void analyze(File file, long offset) {
|
||||||
|
try {
|
||||||
|
this.RomFsProvider = new RomFsDecryptedProvider(file);
|
||||||
|
}
|
||||||
|
catch (Exception e){ // TODO: FIX
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
TreeItem<RFSFolderEntry> rootItem = getEmptyRoot();
|
TreeItem<RFSFolderEntry> rootItem = getEmptyRoot();
|
||||||
|
|
||||||
filesTreeView.setRoot(rootItem);
|
filesTreeView.setRoot(rootItem);
|
||||||
|
|
|
@ -34,27 +34,21 @@ public class Level6Header {
|
||||||
private long headerFileMetadataTableLength;
|
private long headerFileMetadataTableLength;
|
||||||
private long headerFileDataOffset;
|
private long headerFileDataOffset;
|
||||||
|
|
||||||
|
private byte[] headerBytes;
|
||||||
|
private int i;
|
||||||
|
|
||||||
Level6Header(byte[] headerBytes){
|
Level6Header(byte[] headerBytes){
|
||||||
int i = 0;
|
this.headerBytes = headerBytes;
|
||||||
headerHeaderLength = LoperConverter.getLEint(headerBytes, i);
|
headerHeaderLength = getNext();
|
||||||
i += 0x8;
|
headerDirectoryHashTableOffset = getNext();
|
||||||
headerDirectoryHashTableOffset = LoperConverter.getLEint(headerBytes, i);
|
headerDirectoryHashTableLength = getNext();
|
||||||
i += 0x8;
|
headerDirectoryMetadataTableOffset = getNext();
|
||||||
headerDirectoryHashTableLength = LoperConverter.getLEint(headerBytes, i);
|
headerDirectoryMetadataTableLength = getNext();
|
||||||
i += 0x8;
|
headerFileHashTableOffset = getNext();
|
||||||
headerDirectoryMetadataTableOffset = LoperConverter.getLEint(headerBytes, i);
|
headerFileHashTableLength = getNext();
|
||||||
i += 0x8;
|
headerFileMetadataTableOffset = getNext();
|
||||||
headerDirectoryMetadataTableLength = LoperConverter.getLEint(headerBytes, i);
|
headerFileMetadataTableLength = getNext();
|
||||||
i += 0x8;
|
headerFileDataOffset = getNext();
|
||||||
headerFileHashTableOffset = LoperConverter.getLEint(headerBytes, i);
|
|
||||||
i += 0x8;
|
|
||||||
headerFileHashTableLength = LoperConverter.getLEint(headerBytes, i);
|
|
||||||
i += 0x8;
|
|
||||||
headerFileMetadataTableOffset = LoperConverter.getLEint(headerBytes, i);
|
|
||||||
i += 0x8;
|
|
||||||
headerFileMetadataTableLength = LoperConverter.getLEint(headerBytes, i);
|
|
||||||
i += 0x8;
|
|
||||||
headerFileDataOffset = LoperConverter.getLEint(headerBytes, i);
|
|
||||||
|
|
||||||
System.out.println("== Level 6 Header ==\n" +
|
System.out.println("== Level 6 Header ==\n" +
|
||||||
"Header Length (always 0x50 ?) "+ RainbowDump.formatDecHexString(headerHeaderLength)+" (size of this structure within first 0x200 block of LEVEL 6 part)\n" +
|
"Header Length (always 0x50 ?) "+ RainbowDump.formatDecHexString(headerHeaderLength)+" (size of this structure within first 0x200 block of LEVEL 6 part)\n" +
|
||||||
|
@ -71,6 +65,12 @@ public class Level6Header {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private long getNext(){
|
||||||
|
final long result = LoperConverter.getLEint(headerBytes, i);
|
||||||
|
i += 0x8;
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
public long getHeaderHeaderLength() { return headerHeaderLength; }
|
public long getHeaderHeaderLength() { return headerHeaderLength; }
|
||||||
public long getHeaderDirectoryHashTableOffset() { return headerDirectoryHashTableOffset; }
|
public long getHeaderDirectoryHashTableOffset() { return headerDirectoryHashTableOffset; }
|
||||||
public long getHeaderDirectoryHashTableLength() { return headerDirectoryHashTableLength; }
|
public long getHeaderDirectoryHashTableLength() { return headerDirectoryHashTableLength; }
|
||||||
|
|
Loading…
Reference in a new issue