konogonka/src/main/java/konogonka/Controllers/NCA/NCASectionHeaderBlockContro...

263 lines
12 KiB
Java

package konogonka.Controllers.NCA;
import javafx.fxml.FXML;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.control.TitledPane;
import konogonka.Tools.NCA.NCASectionTableBlock.NCASectionBlock;
import static konogonka.LoperConverter.byteArrToHexString;
public class NCASectionHeaderBlockController {
@FXML
private Label
versionLbl,
fsTypeLbl,
hashTypeLbl,
cryptoTypeLbl,
paddingLbl;
@FXML
private TextField
BKTRHeaderTf;
@FXML
private TitledPane
romFsTitlePanel,
pfs0TitlePanel;
// PFS0Provider
@FXML
private Label
pfs0blockSizeLbl,
pfs0unknownNumberTwoLbl,
pfs0hashTableOffsetLbl,
pfs0hashTableSizeLbl,
pfs0relativeToSectionStartOffsetLbl,
pfs0sizePfs0Lbl;
@FXML
private TextField
pfs0SHA256hashTf,
pfs0zeroesTf;
// RomFS (IVFC)
@FXML
private Label
romFsMagicLbl,
romFsMagicNumberLbl,
romFsMasterHashSizeLbl,
romFsTotalNumberOfLevelsLbl,
romFsLvl1OffsetLbl,
romFsLvl1SizeLbl,
romFsLvl1SBlockSizeLbl,
romFsReserved1Lbl,
romFsLvl2OffsetLbl,
romFsLvl2SizeLbl,
romFsLvl2SBlockSizeLbl,
romFsReserved2Lbl,
romFsLvl3OffsetLbl,
romFsLvl3SizeLbl,
romFsLvl3SBlockSizeLbl,
romFsReserved3Lbl,
romFsLvl4OffsetLbl,
romFsLvl4SizeLbl,
romFsLvl4SBlockSizeLbl,
romFsReserved4Lbl,
romFsLvl5OffsetLbl,
romFsLvl5SizeLbl,
romFsLvl5SBlockSizeLbl,
romFsReserved5Lbl,
romFsLvl6OffsetLbl,
romFsLvl6SizeLbl,
romFsLvl6SBlockSizeLbl,
romFsReserved6Lbl;
@FXML
private TextField
romFsUnknownTf,
romFsHashTf;
@FXML
private Label
BKTRoffsetSection1Lbl,
BKTRsizeSection1Lbl,
BKTRmagicSection1Lbl,
BKTRu32Section1Lbl,
BKTRs32Section1Lbl,
BKTRunknownSection1Lbl,
BKTRoffsetSection2Lbl,
BKTRsizeSection2Lbl,
BKTRmagicSection2Lbl,
BKTRu32Section2Lbl,
BKTRs32Section2Lbl,
BKTRunknownSection2Lbl,
BKTRunknown1Lbl,
BKTRunknown2Lbl;
public void resetTab() {
versionLbl.setText("-");
fsTypeLbl.setText("-");
hashTypeLbl.setText("-");
cryptoTypeLbl.setText("-");
paddingLbl.setText("-");
romFsTitlePanel.setDisable(false);
romFsTitlePanel.setExpanded(false);
pfs0TitlePanel.setDisable(false);
pfs0TitlePanel.setExpanded(false);
//RomFS
romFsMagicLbl.setText("-");
romFsMagicNumberLbl.setText("-");
romFsMasterHashSizeLbl.setText("-");
romFsTotalNumberOfLevelsLbl.setText("-");
romFsLvl1OffsetLbl.setText("-");
romFsLvl1SizeLbl.setText("-");
romFsLvl1SBlockSizeLbl.setText("-");
romFsReserved1Lbl.setText("-");
romFsLvl2OffsetLbl.setText("-");
romFsLvl2SizeLbl.setText("-");
romFsLvl2SBlockSizeLbl.setText("-");
romFsReserved2Lbl.setText("-");
romFsLvl3OffsetLbl.setText("-");
romFsLvl3SizeLbl.setText("-");
romFsLvl3SBlockSizeLbl.setText("-");
romFsReserved3Lbl.setText("-");
romFsLvl4OffsetLbl.setText("-");
romFsLvl4SizeLbl.setText("-");
romFsLvl4SBlockSizeLbl.setText("-");
romFsReserved4Lbl.setText("-");
romFsLvl5OffsetLbl.setText("-");
romFsLvl5SizeLbl.setText("-");
romFsLvl5SBlockSizeLbl.setText("-");
romFsReserved5Lbl.setText("-");
romFsLvl6OffsetLbl.setText("-");
romFsLvl6SizeLbl.setText("-");
romFsLvl6SBlockSizeLbl.setText("-");
romFsReserved6Lbl.setText("-");
romFsUnknownTf.setText("-");
romFsHashTf.setText("-");
// PFS0Provider
pfs0SHA256hashTf.setText("-");
pfs0blockSizeLbl.setText("-");
pfs0unknownNumberTwoLbl.setText("-");
pfs0hashTableOffsetLbl.setText("-");
pfs0hashTableSizeLbl.setText("-");
pfs0relativeToSectionStartOffsetLbl.setText("-");
pfs0sizePfs0Lbl.setText("-");
pfs0zeroesTf.setText("-");
BKTRHeaderTf.setText("-");
BKTRoffsetSection1Lbl.setText("-");
BKTRsizeSection1Lbl.setText("-");
BKTRmagicSection1Lbl.setText("-");
BKTRu32Section1Lbl.setText("-");
BKTRs32Section1Lbl.setText("-");
BKTRunknownSection1Lbl.setText("-");
BKTRoffsetSection2Lbl.setText("-");
BKTRsizeSection2Lbl.setText("-");
BKTRmagicSection2Lbl.setText("-");
BKTRu32Section2Lbl.setText("-");
BKTRs32Section2Lbl.setText("-");
BKTRunknownSection2Lbl.setText("-");
BKTRunknown1Lbl.setText("-");
BKTRunknown2Lbl.setText("-");
}
public void populateTab(NCASectionBlock ncaSectionBlock){
versionLbl.setText(byteArrToHexString(ncaSectionBlock.getVersion()));
StringBuilder sb = new StringBuilder();
sb.append(String.format("%02x ", ncaSectionBlock.getFsType()));
if (ncaSectionBlock.getFsType() == 0)
sb.append("(RomFS)");
else if (ncaSectionBlock.getFsType() == 1)
sb.append("(PFS0)");
fsTypeLbl.setText(sb.toString());
sb = new StringBuilder();
sb.append(String.format("%02x ", ncaSectionBlock.getHashType()));
if (ncaSectionBlock.getHashType() == 0x3)
sb.append("(RomFS)");
else if (ncaSectionBlock.getHashType() == 0x2)
sb.append("(PFS0)");
hashTypeLbl.setText(sb.toString());
cryptoTypeLbl.setText(String.format("%02x ", ncaSectionBlock.getCryptoType()));
paddingLbl.setText(String.format("%02x ", ncaSectionBlock.getPadding()));
if ((ncaSectionBlock.getFsType() == 0) && (ncaSectionBlock.getHashType() == 0x3)){
romFsMagicLbl.setText(ncaSectionBlock.getSuperBlockIVFC().getMagic());
romFsMagicNumberLbl.setText(ncaSectionBlock.getSuperBlockIVFC().getMagicNumber()
+(ncaSectionBlock.getSuperBlockIVFC().getMagicNumber() == 0x20000? " (OK)":" (wrong magic number)"));
romFsMasterHashSizeLbl.setText(Integer.toString(ncaSectionBlock.getSuperBlockIVFC().getMasterHashSize()));
romFsTotalNumberOfLevelsLbl.setText(Integer.toString(ncaSectionBlock.getSuperBlockIVFC().getTotalNumberOfLevels()));
romFsLvl1OffsetLbl.setText(Long.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl1Offset()));
romFsLvl1SizeLbl.setText(Long.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl1Size()));
romFsLvl1SBlockSizeLbl.setText(Integer.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl1SBlockSize()));
romFsReserved1Lbl.setText(byteArrToHexString(ncaSectionBlock.getSuperBlockIVFC().getReserved1()));
romFsLvl2OffsetLbl.setText(Long.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl2Offset()));
romFsLvl2SizeLbl.setText(Long.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl2Size()));
romFsLvl2SBlockSizeLbl.setText(Integer.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl2SBlockSize()));
romFsReserved2Lbl.setText(byteArrToHexString(ncaSectionBlock.getSuperBlockIVFC().getReserved2()));
romFsLvl3OffsetLbl.setText(Long.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl3Offset()));
romFsLvl3SizeLbl.setText(Long.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl3Size()));
romFsLvl3SBlockSizeLbl.setText(Integer.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl3SBlockSize()));
romFsReserved3Lbl.setText(byteArrToHexString(ncaSectionBlock.getSuperBlockIVFC().getReserved3()));
romFsLvl4OffsetLbl.setText(Long.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl4Offset()));
romFsLvl4SizeLbl.setText(Long.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl4Size()));
romFsLvl4SBlockSizeLbl.setText(Integer.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl4SBlockSize()));
romFsReserved4Lbl.setText(byteArrToHexString(ncaSectionBlock.getSuperBlockIVFC().getReserved4()));
romFsLvl5OffsetLbl.setText(Long.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl5Offset()));
romFsLvl5SizeLbl.setText(Long.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl5Size()));
romFsLvl5SBlockSizeLbl.setText(Integer.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl5SBlockSize()));
romFsReserved5Lbl.setText(byteArrToHexString(ncaSectionBlock.getSuperBlockIVFC().getReserved5()));
romFsLvl6OffsetLbl.setText(Long.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl6Offset()));
romFsLvl6SizeLbl.setText(Long.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl6Size()));
romFsLvl6SBlockSizeLbl.setText(Integer.toString(ncaSectionBlock.getSuperBlockIVFC().getLvl6SBlockSize()));
romFsReserved6Lbl.setText(byteArrToHexString(ncaSectionBlock.getSuperBlockIVFC().getReserved6()));
romFsUnknownTf.setText(byteArrToHexString(ncaSectionBlock.getSuperBlockIVFC().getUnknown()));
romFsHashTf.setText(byteArrToHexString(ncaSectionBlock.getSuperBlockIVFC().getHash()));
pfs0TitlePanel.setDisable(true);
}
else if ((ncaSectionBlock.getFsType() == 0x1) && (ncaSectionBlock.getHashType() == 0x2)){
pfs0SHA256hashTf.setText(byteArrToHexString(ncaSectionBlock.getSuperBlockPFS0().getSHA256hash()));
pfs0blockSizeLbl.setText(Integer.toString(ncaSectionBlock.getSuperBlockPFS0().getBlockSize()));
pfs0unknownNumberTwoLbl.setText(Integer.toString(ncaSectionBlock.getSuperBlockPFS0().getUnknownNumberTwo()));
pfs0hashTableOffsetLbl.setText(Long.toString(ncaSectionBlock.getSuperBlockPFS0().getHashTableOffset()));
pfs0hashTableSizeLbl.setText(Long.toString(ncaSectionBlock.getSuperBlockPFS0().getHashTableSize()));
pfs0relativeToSectionStartOffsetLbl.setText(Long.toString(ncaSectionBlock.getSuperBlockPFS0().getPfs0offset()));
pfs0sizePfs0Lbl.setText(Long.toString(ncaSectionBlock.getSuperBlockPFS0().getPfs0size()));
pfs0zeroesTf.setText(byteArrToHexString(ncaSectionBlock.getSuperBlockPFS0().getZeroes()));
romFsTitlePanel.setDisable(true);
}
else {
pfs0TitlePanel.setDisable(true);
romFsTitlePanel.setDisable(true);
}
BKTRHeaderTf.setText(byteArrToHexString(ncaSectionBlock.getBKTRfullHeader()));
BKTRoffsetSection1Lbl.setText(Long.toString(ncaSectionBlock.getBKTRoffsetSection1()));
BKTRsizeSection1Lbl.setText(Long.toString(ncaSectionBlock.getBKTRsizeSection1()));
BKTRmagicSection1Lbl.setText(ncaSectionBlock.getBKTRmagicSection1());
BKTRu32Section1Lbl.setText(Integer.toString(ncaSectionBlock.getBKTRu32Section1()));
BKTRs32Section1Lbl.setText(Integer.toString(ncaSectionBlock.getBKTRs32Section1()));
BKTRunknownSection1Lbl.setText(byteArrToHexString(ncaSectionBlock.getBKTRunknownSection1()));
BKTRoffsetSection2Lbl.setText(Long.toString(ncaSectionBlock.getBKTRoffsetSection2()));
BKTRsizeSection2Lbl.setText(Long.toString(ncaSectionBlock.getBKTRsizeSection2()));
BKTRmagicSection2Lbl.setText(ncaSectionBlock.getBKTRmagicSection2());
BKTRu32Section2Lbl.setText(Integer.toString(ncaSectionBlock.getBKTRu32Section2()));
BKTRs32Section2Lbl.setText(Integer.toString(ncaSectionBlock.getBKTRs32Section2()));
BKTRunknownSection2Lbl.setText(byteArrToHexString(ncaSectionBlock.getBKTRunknownSection2()));
BKTRunknown1Lbl.setText(byteArrToHexString(ncaSectionBlock.getBKTRunknown1()));
BKTRunknown2Lbl.setText(byteArrToHexString(ncaSectionBlock.getBKTRunknown2()));
}
}