Shifting to make application compatible with latest libKonogonka. Small UI enhancements: adding more colors to NCA Headers to simplify navigation.
Some checks failed
continuous-integration/drone/push Build is failing
Some checks failed
continuous-integration/drone/push Build is failing
This commit is contained in:
parent
3634a8c98d
commit
32b8b8fc90
12 changed files with 221 additions and 176 deletions
|
@ -1,6 +1,6 @@
|
|||
# konogonka
|
||||
|
||||
[![Build Status](https://ci.redrise.ru/api/badges/desu/konogonka/status.svg)](https://ci.redrise.ru/desu/konogonka)
|
||||
![License](https://img.shields.io/badge/License-GPLv3-blue.svg) [![Build Status](https://ci.redrise.ru/api/badges/desu/konogonka/status.svg)](https://ci.redrise.ru/desu/konogonka)
|
||||
|
||||
GitHub mirror. [Click here to get it from independent source code location](https://git.redrise.ru/desu/konogonka)
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@ import javafx.fxml.Initializable;
|
|||
import javafx.geometry.Insets;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.control.TitledPane;
|
||||
import javafx.scene.layout.HBox;
|
||||
import javafx.scene.layout.VBox;
|
||||
import konogonka.AppPreferences;
|
||||
|
@ -32,6 +33,7 @@ import libKonogonka.Converter;
|
|||
import konogonka.MediatorControl;
|
||||
import libKonogonka.Tools.NCA.NCAContent;
|
||||
import konogonka.Workers.DumbNCA3ContentExtractor;
|
||||
import libKonogonka.Tools.PFS0.IPFS0Provider;
|
||||
|
||||
import java.io.File;
|
||||
import java.net.URL;
|
||||
|
@ -44,25 +46,27 @@ public class NCASectionContentController implements Initializable {
|
|||
private int sectionNumber;
|
||||
|
||||
@FXML
|
||||
private Button extractRawConentBtn;
|
||||
private Button extractRawContentBtn;
|
||||
@FXML
|
||||
private NSPController SectionPFS0Controller;
|
||||
@FXML
|
||||
private RomFsController SectionRomFsController;
|
||||
@FXML
|
||||
private VBox sha256pane;
|
||||
@FXML
|
||||
private TitledPane pfs0TitledPane, RomFsTitledPane;
|
||||
|
||||
@Override
|
||||
public void initialize(URL url, ResourceBundle resourceBundle) {
|
||||
extractRawConentBtn.setDisable(true);
|
||||
extractRawConentBtn.setOnAction(event -> this.extractFiles());
|
||||
extractRawContentBtn.setDisable(true);
|
||||
extractRawContentBtn.setOnAction(event -> this.extractFiles());
|
||||
}
|
||||
|
||||
public void resetTab() {
|
||||
SectionPFS0Controller.resetTab();
|
||||
SectionRomFsController.resetTab();
|
||||
sha256pane.getChildren().clear();
|
||||
extractRawConentBtn.setDisable(true);
|
||||
extractRawContentBtn.setDisable(true);
|
||||
}
|
||||
|
||||
public void populateFields(NCAContent ncaContent, int sectionNumber) {
|
||||
|
@ -73,7 +77,7 @@ public class NCASectionContentController implements Initializable {
|
|||
|
||||
this.ncaContent = ncaContent;
|
||||
this.sectionNumber = sectionNumber;
|
||||
this.extractRawConentBtn.setDisable(false);
|
||||
this.extractRawContentBtn.setDisable(false);
|
||||
|
||||
setPFS0Content();
|
||||
setRomFsContent();
|
||||
|
@ -82,10 +86,16 @@ public class NCASectionContentController implements Initializable {
|
|||
if (ncaContent.getPfs0() != null)
|
||||
SectionPFS0Controller.setData(ncaContent.getPfs0(), null);;
|
||||
|
||||
LinkedList<byte[]> sha256hashList = ncaContent.getPfs0SHA256hashes();
|
||||
IPFS0Provider ipfs0Provider = ncaContent.getPfs0();
|
||||
|
||||
if (ipfs0Provider == null)
|
||||
return;
|
||||
|
||||
LinkedList<byte[]> sha256hashList = ipfs0Provider.getPfs0SHA256hashes();
|
||||
|
||||
if (sha256hashList == null)
|
||||
return;
|
||||
|
||||
for (int i = 0; i < sha256hashList.size(); i++){
|
||||
Label numberLblTmp = new Label(String.format("%10d", i));
|
||||
numberLblTmp.setPadding(new Insets(5.0, 5.0, 5.0, 5.0));
|
||||
|
@ -94,10 +104,13 @@ public class NCASectionContentController implements Initializable {
|
|||
|
||||
sha256pane.getChildren().add(new HBox(numberLblTmp, sha256LblTmp));
|
||||
}
|
||||
pfs0TitledPane.setExpanded(true);
|
||||
}
|
||||
private void setRomFsContent(){
|
||||
if (ncaContent.getRomfs() != null)
|
||||
if (ncaContent.getRomfs() == null)
|
||||
return;
|
||||
SectionRomFsController.setData(ncaContent.getRomfs());
|
||||
RomFsTitledPane.setExpanded(true);
|
||||
}
|
||||
|
||||
private void extractFiles(){
|
||||
|
@ -114,11 +127,11 @@ public class NCASectionContentController implements Initializable {
|
|||
if (!dir.exists())
|
||||
return;
|
||||
|
||||
extractRawConentBtn.setDisable(true);
|
||||
extractRawContentBtn.setDisable(true);
|
||||
|
||||
DumbNCA3ContentExtractor extractor = new DumbNCA3ContentExtractor(ncaContent, sectionNumber, dir.getAbsolutePath()+File.separator);
|
||||
extractor.setOnSucceeded(e->{
|
||||
extractRawConentBtn.setDisable(false);
|
||||
extractRawContentBtn.setDisable(false);
|
||||
});
|
||||
Thread workThread = new Thread(extractor);
|
||||
workThread.setDaemon(true);
|
||||
|
|
|
@ -50,10 +50,10 @@ public class RFSModelEntry implements IRowModel {
|
|||
public String getFileName() { return fileSystemEntry.getName(); }
|
||||
|
||||
@Override
|
||||
public long getFileSize() { return fileSystemEntry.getFileSize(); }
|
||||
public long getFileSize() { return fileSystemEntry.getSize(); }
|
||||
|
||||
@Override
|
||||
public long getFileOffset() { return fileSystemEntry.getFileOffset(); }
|
||||
public long getFileOffset() { return fileSystemEntry.getOffset(); }
|
||||
|
||||
@Override
|
||||
public boolean isMarkSelected() { return check; }
|
||||
|
|
|
@ -35,6 +35,8 @@ import java.net.URL;
|
|||
import java.util.List;
|
||||
import java.util.ResourceBundle;
|
||||
|
||||
import static libKonogonka.Converter.byteArrToHexString;
|
||||
|
||||
public class HFSBlockController implements Initializable {
|
||||
@FXML
|
||||
private TitledPane currentTitledPane;
|
||||
|
@ -91,13 +93,13 @@ public class HFSBlockController implements Initializable {
|
|||
public void populateTab(HFS0Provider hfs0Provider){
|
||||
if (hfs0Provider != null){
|
||||
bodySize = hfs0Provider.getRawFileDataStart();
|
||||
hfs0mainMagicNumLbl.setText(Boolean.toString(hfs0Provider.isMagicHFS0()));
|
||||
hfs0mainFileCntLbl.setText(Integer.toString(hfs0Provider.getFilesCnt()));
|
||||
hfs0mainMagicNumLbl.setText(hfs0Provider.getMagic());
|
||||
hfs0mainFileCntLbl.setText(Integer.toString(hfs0Provider.getFilesCount()));
|
||||
hfs0mainStrTblSizeLbl.setText(Integer.toString(hfs0Provider.getStringTableSize()));
|
||||
hfs0mainPaddingLbl.setText(Boolean.toString(hfs0Provider.isPaddingHfs0()));
|
||||
hfs0mainPaddingLbl.setText(byteArrToHexString(hfs0Provider.getPadding()));
|
||||
hfs0mainRawFileDataStartLbl.setText(Long.toString(hfs0Provider.getRawFileDataStart()));
|
||||
hfs0tableFilesListMainController.setContentToTable(hfs0Provider);
|
||||
if (hfs0Provider.getFilesCnt() > 0)
|
||||
if (hfs0Provider.getFilesCount() > 0)
|
||||
extractMainBtn.setDisable(false);
|
||||
}
|
||||
else {
|
||||
|
|
|
@ -215,7 +215,7 @@ public class Hfs0TableViewController implements Initializable {
|
|||
return;
|
||||
}
|
||||
// Note: 'i' in here is extra important to be stored in sequence items added.
|
||||
for (int i = 0; i < hfs0.getFilesCnt(); i++){
|
||||
for (int i = 0; i < hfs0.getFilesCount(); i++){
|
||||
rowsObsLst.add(new Hfs0RowModel(
|
||||
hfs0.getHfs0Files()[i].getName(),
|
||||
hfs0.getHfs0Files()[i].getSize(),
|
||||
|
|
|
@ -5,22 +5,17 @@ import konogonka.ModelControllers.EMsgType;
|
|||
import konogonka.ModelControllers.LogPrinter;
|
||||
import libKonogonka.Tools.NCA.NCAContent;
|
||||
|
||||
import java.io.BufferedOutputStream;
|
||||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.PipedInputStream;
|
||||
|
||||
public class DumbNCA3ContentExtractor extends Task<Void> {
|
||||
|
||||
private NCAContent ncaContent;
|
||||
private int ncaNumberInFile;
|
||||
private LogPrinter logPrinter;
|
||||
private String filesDestPath;
|
||||
private final NCAContent ncaContent;
|
||||
private final int ncaNumberInFile;
|
||||
private final LogPrinter logPrinter;
|
||||
private final String filesDestinationPath;
|
||||
|
||||
public DumbNCA3ContentExtractor(NCAContent ncaContent, int ncaNumberInFile, String filesDestPath){
|
||||
public DumbNCA3ContentExtractor(NCAContent ncaContent, int ncaNumberInFile, String filesDestinationPath){
|
||||
this.ncaContent = ncaContent;
|
||||
this.ncaNumberInFile = ncaNumberInFile;
|
||||
this.filesDestPath = filesDestPath;
|
||||
this.filesDestinationPath = filesDestinationPath;
|
||||
this.logPrinter = new LogPrinter();
|
||||
}
|
||||
|
||||
|
@ -30,42 +25,10 @@ public class DumbNCA3ContentExtractor extends Task<Void> {
|
|||
if (ncaContent.getRomfs() != null){
|
||||
lv6mark = " [lv6 "+ncaContent.getRomfs().getLevel6Offset()+"]";
|
||||
}
|
||||
logPrinter.print("\tStart dummy extracting: \n"+filesDestPath+"NCAContent_"+ncaNumberInFile+lv6mark+".bin", EMsgType.INFO);
|
||||
File contentFile = new File(filesDestPath + "NCAContent_"+ncaNumberInFile+lv6mark+".bin");
|
||||
try {
|
||||
BufferedOutputStream extractedFileBOS = new BufferedOutputStream(new FileOutputStream(contentFile));
|
||||
PipedInputStream pis = ncaContent.getRawDataContentPipedInpStream();
|
||||
|
||||
byte[] readBuf = new byte[0x200]; // 8mb NOTE: consider switching to 1mb 1048576
|
||||
int readSize;
|
||||
//*** PROGRESS BAR VARS START
|
||||
long progressHandleFSize = ncaContent.getRawDataContentSize();
|
||||
int progressHandleFRead = 0;
|
||||
//*** PROGRESS BAR VARS END
|
||||
while ((readSize = pis.read(readBuf)) > -1) {
|
||||
extractedFileBOS.write(readBuf, 0, readSize);
|
||||
readBuf = new byte[0x200];
|
||||
//*** PROGRESS BAR DECORCATIONS START
|
||||
progressHandleFRead += readSize;
|
||||
//System.out.println(readSize);
|
||||
try {
|
||||
logPrinter.updateProgress((progressHandleFRead)/(progressHandleFSize/100.0) / 100.0);
|
||||
}catch (InterruptedException ignore){}
|
||||
//*** PROGRESS BAR DECORCATIONS END
|
||||
}
|
||||
try {
|
||||
logPrinter.updateProgress(1.0);
|
||||
}
|
||||
catch (InterruptedException ignored){}
|
||||
extractedFileBOS.close();
|
||||
|
||||
} catch (Exception ioe) {
|
||||
logPrinter.print("\tExtracting dummy issue\n\t" + ioe.getMessage(), EMsgType.INFO);
|
||||
return null;
|
||||
} finally {
|
||||
logPrinter.print("\tStart dummy extracting: \n"+ filesDestinationPath +"NCAContent_"+ncaNumberInFile+lv6mark+".bin", EMsgType.INFO);
|
||||
ncaContent.exportMediaBlock(filesDestinationPath + "NCAContent_"+ncaNumberInFile+lv6mark+".bin");
|
||||
logPrinter.print("\tEnd dummy extracting", EMsgType.INFO);
|
||||
logPrinter.close();
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
|
@ -10,6 +10,7 @@ import java.io.BufferedOutputStream;
|
|||
import java.io.File;
|
||||
import java.io.FileOutputStream;
|
||||
import java.io.PipedInputStream;
|
||||
import java.nio.file.Files;
|
||||
import java.util.List;
|
||||
|
||||
public class DumbRomFsExtractor extends Task<Void> {
|
||||
|
@ -63,17 +64,17 @@ public class DumbRomFsExtractor extends Task<Void> {
|
|||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
// TODO: Update # backend and then here
|
||||
private void exportSingleFile(FileSystemEntry entry, String saveToLocation) throws Exception{
|
||||
File contentFile = new File(saveToLocation + entry.getName());
|
||||
|
||||
BufferedOutputStream extractedFileBOS = new BufferedOutputStream(new FileOutputStream(contentFile));
|
||||
BufferedOutputStream extractedFileBOS = new BufferedOutputStream(Files.newOutputStream(contentFile.toPath()));
|
||||
PipedInputStream pis = provider.getContent(entry);
|
||||
|
||||
byte[] readBuf = new byte[0x200]; // 8mb NOTE: consider switching to 1mb 1048576
|
||||
int readSize;
|
||||
//*** PROGRESS BAR VARS START
|
||||
long progressHandleFSize = entry.getFileSize();
|
||||
long progressHandleFSize = entry.getSize();
|
||||
int progressHandleFRead = 0;
|
||||
//*** PROGRESS BAR VARS END
|
||||
while ((readSize = pis.read(readBuf)) > -1) {
|
||||
|
|
|
@ -15,8 +15,8 @@
|
|||
<GridPane prefWidth="860.0" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="konogonka.Controllers.NCA.NCAFsHeaderController">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="200.0" minWidth="150.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="175.0" minWidth="160.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="850.0" minWidth="100.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
|
@ -28,7 +28,7 @@
|
|||
<RowConstraints maxHeight="30.0" minHeight="30.0" />
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" />
|
||||
<RowConstraints vgrow="SOMETIMES" />
|
||||
<RowConstraints vgrow="SOMETIMES" />
|
||||
<RowConstraints minHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints minHeight="30.0" />
|
||||
|
@ -300,11 +300,11 @@
|
|||
<font>
|
||||
<Font name="System Bold" size="13.0" />
|
||||
</font></Label>
|
||||
<TitledPane fx:id="romFsTitlePanel" animated="false" expanded="false" text="RomFS SuperBlock">
|
||||
<TitledPane fx:id="romFsTitlePanel" contentDisplay="CENTER" expanded="false" styleClass="romFsSuperblock" text="RomFS SuperBlock">
|
||||
<content>
|
||||
<VBox spacing="5.0">
|
||||
<VBox spacing="5.0" style="-fx-background-color: #aadff3;">
|
||||
<children>
|
||||
<GridPane gridLinesVisible="true">
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #ffffff;">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
|
@ -472,7 +472,7 @@
|
|||
<Font name="System Bold" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #aea6f3;">
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #b6aeff;">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
|
@ -576,7 +576,7 @@
|
|||
<Font name="System Bold" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<GridPane gridLinesVisible="true" style="romFsReservedTailLbl6: #bfb2ff;">
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #d7bdff;">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
|
@ -784,7 +784,7 @@
|
|||
<Font name="System Bold" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #d7c4ff;">
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #eddaff;">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
|
@ -888,7 +888,7 @@
|
|||
<Font name="System Bold" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #91c3f6;">
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #eaeaff;">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
|
@ -992,7 +992,7 @@
|
|||
<Font name="System Bold" size="13.0" />
|
||||
</font>
|
||||
</Label>
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #a4c8ef;">
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #ffecec;">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
|
@ -1091,7 +1091,7 @@
|
|||
<Insets />
|
||||
</opaqueInsets>
|
||||
</GridPane>
|
||||
<GridPane gridLinesVisible="true">
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #ffffff;">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
|
@ -1165,11 +1165,11 @@
|
|||
</VBox>
|
||||
</content>
|
||||
</TitledPane>
|
||||
<TitledPane fx:id="pfs0TitlePanel" expanded="false" text="PFS0 SuperBlock">
|
||||
<TitledPane fx:id="pfs0TitlePanel" styleClass="pfs0Superblock" text="PFS0 SuperBlock">
|
||||
<content>
|
||||
<VBox spacing="5.0">
|
||||
<VBox spacing="5.0" style="-fx-background-color: #ffc5c6;">
|
||||
<children>
|
||||
<GridPane gridLinesVisible="true">
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #ffffff;">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
|
@ -1299,9 +1299,6 @@
|
|||
<rowConstraints>
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
</rowConstraints>
|
||||
<children>
|
||||
<Label text="0x28">
|
||||
|
@ -1314,7 +1311,7 @@
|
|||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="Offset of hash-table. Normally zero?" GridPane.columnIndex="2">
|
||||
<Label text="Offset Hash-table (Normally zero?)" GridPane.columnIndex="2">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
|
@ -1329,57 +1326,12 @@
|
|||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="0x38" GridPane.rowIndex="2">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="0x40" GridPane.rowIndex="3">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="0x48" GridPane.rowIndex="4">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="0x8" GridPane.columnIndex="1" GridPane.rowIndex="1">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="0x8" GridPane.columnIndex="1" GridPane.rowIndex="2">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="0x8" GridPane.columnIndex="1" GridPane.rowIndex="3">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="0xb0" GridPane.columnIndex="1" GridPane.rowIndex="4">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="Size of hash-table" GridPane.columnIndex="2" GridPane.rowIndex="1">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="PFS0 header offset (relative to section-start)" GridPane.columnIndex="2" GridPane.rowIndex="2">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="PFS0 filesystem size (in bytes) relative to the PFS0 header" GridPane.columnIndex="2" GridPane.rowIndex="3">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="Normally zeros" GridPane.columnIndex="2" GridPane.rowIndex="4">
|
||||
<Label text="Size Hash-table" GridPane.columnIndex="2" GridPane.rowIndex="1">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
|
@ -1389,17 +1341,89 @@
|
|||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label fx:id="pfs0relativeToSectionStartOffsetLbl" text="-" GridPane.columnIndex="3" GridPane.rowIndex="2">
|
||||
</children>
|
||||
</GridPane>
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #d5d5d5;">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
</rowConstraints>
|
||||
<children>
|
||||
<Label text="0x38">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label fx:id="pfs0sizePfs0Lbl" text="-" GridPane.columnIndex="3" GridPane.rowIndex="3">
|
||||
<Label text="0x40" GridPane.rowIndex="1">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<TextField fx:id="pfs0zeroesTf" editable="false" text="-" GridPane.columnIndex="3" GridPane.rowIndex="4" />
|
||||
<Label text="0x8" GridPane.columnIndex="1">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="0x8" GridPane.columnIndex="1" GridPane.rowIndex="1">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="Offset PFS0 (header, relative to section-start)" GridPane.columnIndex="2">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="Size PFS0 (in bytes, relative to the PFS0 header)" GridPane.columnIndex="2" GridPane.rowIndex="1">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label fx:id="pfs0relativeToSectionStartOffsetLbl" text="-" GridPane.columnIndex="3">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label fx:id="pfs0sizePfs0Lbl" text="-" GridPane.columnIndex="3" GridPane.rowIndex="1">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
</children>
|
||||
</GridPane>
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #d5d5d5;">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="10.0" prefWidth="100.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" prefHeight="30.0" vgrow="SOMETIMES" />
|
||||
</rowConstraints>
|
||||
<children>
|
||||
<Label text="0x48">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="0xb0" GridPane.columnIndex="1">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="Normally zeros" GridPane.columnIndex="2">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<TextField fx:id="pfs0zeroesTf" editable="false" text="-" GridPane.columnIndex="3" />
|
||||
</children>
|
||||
</GridPane>
|
||||
</children>
|
||||
|
@ -1419,11 +1443,11 @@
|
|||
</Label>
|
||||
</children>
|
||||
</AnchorPane>
|
||||
<ScrollPane fitToWidth="true" style="-fx-border-color: #000000;" styleClass="customGrid" GridPane.columnIndex="2" GridPane.columnSpan="2" GridPane.rowIndex="8" GridPane.vgrow="ALWAYS">
|
||||
<ScrollPane fitToWidth="true" style="-fx-border-color: #000000; -fx-background-color: #ffee70;" styleClass="customGrid" GridPane.columnIndex="2" GridPane.columnSpan="2" GridPane.rowIndex="8" GridPane.vgrow="ALWAYS">
|
||||
<content>
|
||||
<TitledPane text="PatchInfo">
|
||||
<TitledPane expanded="false" styleClass="patchInfo" text="Patch Info">
|
||||
<content>
|
||||
<VBox spacing="5.0" style="-fx-background-color: #ffee70;">
|
||||
<VBox fillWidth="false" spacing="5.0" style="-fx-background-color: #ffee70;">
|
||||
<children>
|
||||
<Label text="Indirect Info">
|
||||
<font>
|
||||
|
@ -1435,7 +1459,7 @@
|
|||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="140.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="120.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="180.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" vgrow="SOMETIMES" />
|
||||
|
@ -1538,7 +1562,7 @@
|
|||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="140.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="120.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="180.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" vgrow="SOMETIMES" />
|
||||
|
@ -1639,7 +1663,7 @@
|
|||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="140.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="120.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="180.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" vgrow="SOMETIMES" />
|
||||
|
@ -1693,7 +1717,7 @@
|
|||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="140.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="120.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="180.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" vgrow="SOMETIMES" />
|
||||
|
@ -1787,6 +1811,9 @@
|
|||
</children>
|
||||
</VBox>
|
||||
</content>
|
||||
<padding>
|
||||
<Insets bottom="1.0" left="1.0" right="1.0" top="1.0" />
|
||||
</padding>
|
||||
</TitledPane>
|
||||
</content>
|
||||
</ScrollPane>
|
||||
|
@ -1941,16 +1968,16 @@
|
|||
</AnchorPane>
|
||||
<ScrollPane fitToWidth="true" style="-fx-border-color: #000000;" styleClass="customGrid" GridPane.columnIndex="2" GridPane.columnSpan="2" GridPane.rowIndex="11">
|
||||
<content>
|
||||
<TitledPane text="Sparse Info">
|
||||
<TitledPane expanded="false" styleClass="sparseInfo" text="Sparse Info">
|
||||
<content>
|
||||
<VBox spacing="5.0" style="-fx-background-color: #c5dbff;">
|
||||
<VBox fillWidth="false" spacing="5.0" style="-fx-background-color: #c5dbff;">
|
||||
<children>
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #ffffff;">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="140.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="120.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="180.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" vgrow="SOMETIMES" />
|
||||
|
@ -2053,7 +2080,7 @@
|
|||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="140.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="120.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="180.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" vgrow="SOMETIMES" />
|
||||
|
@ -2149,7 +2176,7 @@
|
|||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="140.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="120.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="180.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" vgrow="SOMETIMES" />
|
||||
|
@ -2222,6 +2249,9 @@
|
|||
</children>
|
||||
</VBox>
|
||||
</content>
|
||||
<padding>
|
||||
<Insets bottom="1.0" left="1.0" right="1.0" top="1.0" />
|
||||
</padding>
|
||||
</TitledPane>
|
||||
</content>
|
||||
</ScrollPane>
|
||||
|
@ -2263,16 +2293,16 @@
|
|||
</AnchorPane>
|
||||
<ScrollPane fitToWidth="true" style="-fx-border-color: #000000;" styleClass="customGrid" GridPane.columnIndex="2" GridPane.columnSpan="2" GridPane.rowIndex="12">
|
||||
<content>
|
||||
<TitledPane text="Compression Info">
|
||||
<TitledPane expanded="false" styleClass="compressionInfo" text="Compression Info">
|
||||
<content>
|
||||
<VBox spacing="5.0" style="-fx-background-color: #99ff66;">
|
||||
<VBox fillWidth="false" spacing="5.0" style="-fx-background-color: #99ff66;">
|
||||
<children>
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #ffffff;">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="140.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="120.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="180.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" vgrow="SOMETIMES" />
|
||||
|
@ -2375,7 +2405,7 @@
|
|||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="140.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="120.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="180.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" vgrow="SOMETIMES" />
|
||||
|
@ -2471,7 +2501,7 @@
|
|||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="140.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="120.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="250.0" minWidth="180.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" vgrow="SOMETIMES" />
|
||||
|
@ -2502,6 +2532,9 @@
|
|||
</children>
|
||||
</VBox>
|
||||
</content>
|
||||
<padding>
|
||||
<Insets bottom="1.0" left="1.0" right="1.0" top="1.0" />
|
||||
</padding>
|
||||
</TitledPane>
|
||||
</content>
|
||||
</ScrollPane>
|
||||
|
@ -2517,16 +2550,16 @@
|
|||
<AnchorPane style="-fx-border-color: #000000;" styleClass="customGrid" GridPane.columnIndex="3" GridPane.rowIndex="13" />
|
||||
<ScrollPane fitToWidth="true" style="-fx-border-color: #000000;" styleClass="customGrid" GridPane.columnIndex="2" GridPane.columnSpan="2" GridPane.rowIndex="13">
|
||||
<content>
|
||||
<TitledPane text="Meta Data Hash Data Info">
|
||||
<TitledPane expanded="false" styleClass="metaDataHashDataInfo" text="Meta Data Hash Data Info">
|
||||
<content>
|
||||
<VBox spacing="5.0" style="-fx-background-color: #ffb380;">
|
||||
<VBox fillWidth="false" spacing="5.0" style="-fx-background-color: #ffb380;">
|
||||
<children>
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #ffffff;">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="75.0" minWidth="60.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="140.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="150.0" minWidth="120.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="180.0" />
|
||||
</columnConstraints>
|
||||
<rowConstraints>
|
||||
<RowConstraints maxHeight="30.0" minHeight="30.0" vgrow="SOMETIMES" />
|
||||
|
@ -2623,12 +2656,12 @@
|
|||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="0x8" GridPane.rowIndex="3">
|
||||
<Label text="0x10" GridPane.rowIndex="3">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
</Label>
|
||||
<Label text="0x8" GridPane.columnIndex="1" GridPane.rowIndex="3">
|
||||
<Label text="0x20" GridPane.columnIndex="1" GridPane.rowIndex="3">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
|
@ -2648,6 +2681,9 @@
|
|||
</children>
|
||||
</VBox>
|
||||
</content>
|
||||
<padding>
|
||||
<Insets bottom="1.0" left="1.0" right="1.0" top="1.0" />
|
||||
</padding>
|
||||
</TitledPane>
|
||||
</content>
|
||||
</ScrollPane>
|
||||
|
|
|
@ -10,11 +10,11 @@
|
|||
<?import javafx.scene.shape.SVGPath?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
|
||||
<VBox spacing="5.0" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="konogonka.Controllers.NCA.NCASectionContentController">
|
||||
<VBox spacing="5.0" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="konogonka.Controllers.NCA.NCASectionContentController">
|
||||
<children>
|
||||
<HBox alignment="TOP_CENTER" spacing="5.0">
|
||||
<children>
|
||||
<Button fx:id="extractRawConentBtn" disable="true" mnemonicParsing="false" text="%btnExtract">
|
||||
<Button fx:id="extractRawContentBtn" disable="true" mnemonicParsing="false" text="%btnExtract">
|
||||
<graphic>
|
||||
<SVGPath content="M2,10.96C1.5,10.68 1.35,10.07 1.63,9.59L3.13,7C3.24,6.8 3.41,6.66 3.6,6.58L11.43,2.18C11.59,2.06 11.79,2 12,2C12.21,2 12.41,2.06 12.57,2.18L20.47,6.62C20.66,6.72 20.82,6.88 20.91,7.08L22.36,9.6C22.64,10.08 22.47,10.69 22,10.96L21,11.54V16.5C21,16.88 20.79,17.21 20.47,17.38L12.57,21.82C12.41,21.94 12.21,22 12,22C11.79,22 11.59,21.94 11.43,21.82L3.53,17.38C3.21,17.21 3,16.88 3,16.5V10.96C2.7,11.13 2.32,11.14 2,10.96M12,4.15V4.15L12,10.85V10.85L17.96,7.5L12,4.15M5,15.91L11,19.29V12.58L5,9.21V15.91M19,15.91V12.69L14,15.59C13.67,15.77 13.3,15.76 13,15.6V19.29L19,15.91M13.85,13.36L20.13,9.73L19.55,8.72L13.27,12.35L13.85,13.36Z" />
|
||||
</graphic>
|
||||
|
@ -24,7 +24,7 @@
|
|||
<Insets bottom="5.0" left="5.0" right="5.0" top="5.0" />
|
||||
</padding>
|
||||
</HBox>
|
||||
<TitledPane expanded="false" text="PFS0">
|
||||
<TitledPane fx:id="pfs0TitledPane" expanded="false" text="PFS0">
|
||||
<content>
|
||||
<VBox spacing="5.0">
|
||||
<TitledPane expanded="false" text="SHA256 hashes">
|
||||
|
@ -60,7 +60,7 @@
|
|||
<fx:include fx:id="SectionPFS0" source="../NSP/NSPTab.fxml" />
|
||||
</VBox>
|
||||
</content></TitledPane>
|
||||
<TitledPane text="'RomFS'" VBox.vgrow="ALWAYS">
|
||||
<TitledPane fx:id="RomFsTitledPane" expanded="false" text="'RomFS'" VBox.vgrow="ALWAYS">
|
||||
<content>
|
||||
<fx:include fx:id="SectionRomFs" source="../RomFS/RFSTab.fxml" />
|
||||
</content>
|
||||
|
|
|
@ -12,7 +12,7 @@
|
|||
<?import javafx.scene.layout.VBox?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
|
||||
<ScrollPane fitToWidth="true" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="konogonka.Controllers.NCA.NCAController">
|
||||
<ScrollPane fitToWidth="true" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="konogonka.Controllers.NCA.NCAController">
|
||||
<VBox spacing="5.0">
|
||||
<children>
|
||||
<TitledPane animated="false" expanded="false" text="Header">
|
||||
|
@ -22,7 +22,7 @@
|
|||
<GridPane>
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="130.0" minWidth="125.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="450.0" prefWidth="500.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" minWidth="100.0" prefWidth="100.0" />
|
||||
</columnConstraints>
|
||||
|
@ -248,7 +248,7 @@
|
|||
</AnchorPane>
|
||||
<AnchorPane styleClass="customGrid" GridPane.columnIndex="1" GridPane.rowIndex="18">
|
||||
<children>
|
||||
<Label text="0x10*0x4(0x40)" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<Label text="0x40" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
|
@ -257,7 +257,7 @@
|
|||
</AnchorPane>
|
||||
<AnchorPane styleClass="customGrid" GridPane.columnIndex="1" GridPane.rowIndex="17">
|
||||
<children>
|
||||
<Label text="0x20*0x4(0x80)" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<Label text="0x80" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
|
@ -266,7 +266,7 @@
|
|||
</AnchorPane>
|
||||
<AnchorPane styleClass="customGrid" GridPane.columnIndex="1" GridPane.rowIndex="16">
|
||||
<children>
|
||||
<Label text="0x10*0x4(0x40)" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<Label text="0x40" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
|
@ -442,7 +442,7 @@
|
|||
</AnchorPane>
|
||||
<AnchorPane styleClass="customGrid" GridPane.columnIndex="2" GridPane.rowIndex="17">
|
||||
<children>
|
||||
<Label text="Table of SHA256 hashes, over each 0x200-byte Section Header Block." AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<Label text="Table of SHA256 hashes, over each 0x200-byte Section Header Block (0x20*0x4)" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
|
@ -451,7 +451,7 @@
|
|||
</AnchorPane>
|
||||
<AnchorPane styleClass="customGrid" GridPane.columnIndex="2" GridPane.rowIndex="18">
|
||||
<children>
|
||||
<Label text="Key area" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<Label text="Key area (0x10 * 0x4)" AnchorPane.bottomAnchor="0.0" AnchorPane.leftAnchor="0.0" AnchorPane.rightAnchor="0.0" AnchorPane.topAnchor="0.0">
|
||||
<padding>
|
||||
<Insets left="5.0" right="5.0" />
|
||||
</padding>
|
||||
|
@ -592,12 +592,12 @@
|
|||
<Label text="Encrypted" />
|
||||
<TextField fx:id="keyAreaEnKey0TF" editable="false" />
|
||||
<TextField fx:id="keyAreaEnKey1TF" editable="false" />
|
||||
<TextField fx:id="keyAreaEnKey2TF" editable="false" />
|
||||
<TextField fx:id="keyAreaEnKey2TF" editable="false" style="-fx-background-color: #ffc2f2;" />
|
||||
<TextField fx:id="keyAreaEnKey3TF" editable="false" />
|
||||
<Label text="Decrypted" />
|
||||
<TextField fx:id="keyAreaDecKey0TF" editable="false" />
|
||||
<TextField fx:id="keyAreaDecKey1TF" editable="false" />
|
||||
<TextField fx:id="keyAreaDecKey2TF" editable="false" />
|
||||
<TextField fx:id="keyAreaDecKey2TF" editable="false" style="-fx-background-color: #ffc2f2;" />
|
||||
<TextField fx:id="keyAreaDecKey3TF" editable="false" />
|
||||
</children>
|
||||
</VBox>
|
||||
|
|
|
@ -8,7 +8,7 @@
|
|||
<?import javafx.scene.layout.RowConstraints?>
|
||||
<?import javafx.scene.text.Font?>
|
||||
|
||||
<GridPane gridLinesVisible="true" xmlns="http://javafx.com/javafx/8.0.141" xmlns:fx="http://javafx.com/fxml/1" fx:controller="konogonka.Controllers.NCA.NCATableController">
|
||||
<GridPane gridLinesVisible="true" style="-fx-background-color: #ffe3b4;" xmlns="http://javafx.com/javafx/18" xmlns:fx="http://javafx.com/fxml/1" fx:controller="konogonka.Controllers.NCA.NCATableController">
|
||||
<columnConstraints>
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
<ColumnConstraints hgrow="SOMETIMES" maxWidth="60.0" minWidth="55.0" />
|
||||
|
|
|
@ -384,10 +384,10 @@
|
|||
{
|
||||
-fx-background-color: #efebe6;
|
||||
-fx-background-insets: 0, 1, 2;
|
||||
-fx-background-radius: 5 5 0 0, 4 4 0 0, 3 3 0 0;
|
||||
-fx-background-radius: 2 2 2 2;
|
||||
-fx-padding: 3 11 5 11;
|
||||
-fx-border-width: 1;
|
||||
-fx-border-radius: 5 5 0 0, 4 4 0 0, 3 3 0 0;
|
||||
-fx-border-radius: 2 2 2 2;
|
||||
-fx-border-color: #c8c8c8;
|
||||
}
|
||||
|
||||
|
@ -395,10 +395,10 @@
|
|||
{
|
||||
-fx-background-color: #d5713f;
|
||||
-fx-background-insets: 0, 1, 2;
|
||||
-fx-background-radius: 5 5 0 0, 4 4 0 0, 3 3 0 0;
|
||||
-fx-background-radius: 2 2 2 2;
|
||||
-fx-padding: 3 11 5 11;
|
||||
-fx-border-width: 1;
|
||||
-fx-border-radius: 5 5 0 0, 4 4 0 0, 3 3 0 0;
|
||||
-fx-border-radius: 2 2 2 2;
|
||||
-fx-border-color: #c8c8c8;
|
||||
}
|
||||
|
||||
|
@ -428,6 +428,36 @@
|
|||
-fx-background-color: white, white;
|
||||
}
|
||||
|
||||
.patchInfo > .title
|
||||
{
|
||||
-fx-background-color: #fed850;
|
||||
}
|
||||
|
||||
.sparseInfo > .title
|
||||
{
|
||||
-fx-background-color: #a6cdff;
|
||||
}
|
||||
|
||||
.compressionInfo > .title
|
||||
{
|
||||
-fx-background-color: #8eec5e;
|
||||
}
|
||||
|
||||
.metaDataHashDataInfo > .title
|
||||
{
|
||||
-fx-background-color: #eca576;
|
||||
}
|
||||
|
||||
.romFsSuperblock > .title
|
||||
{
|
||||
-fx-background-color: #9ed0e2;
|
||||
}
|
||||
|
||||
.pfs0Superblock > .title
|
||||
{
|
||||
-fx-background-color: #f4bdbd;
|
||||
}
|
||||
|
||||
.regionFolder {
|
||||
-fx-shape: "M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z";
|
||||
-fx-background-color: #ffbf00;
|
||||
|
|
Loading…
Reference in a new issue