diff --git a/src/main/java/nsusbloader/Controllers/PatchesController.java b/src/main/java/nsusbloader/Controllers/PatchesController.java index 471bbe0..7b0261b 100644 --- a/src/main/java/nsusbloader/Controllers/PatchesController.java +++ b/src/main/java/nsusbloader/Controllers/PatchesController.java @@ -18,6 +18,7 @@ */ package nsusbloader.Controllers; +import javafx.beans.binding.Bindings; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.input.DragEvent; @@ -74,7 +75,10 @@ public class PatchesController implements Initializable { convertRegionEs = new Region(); convertRegionEs.getStyleClass().add("regionCake"); makeEsBtn.setGraphic(convertRegionEs); - //makeFsBtn.setGraphic(convertRegionEs); + + Region cakeRegionFs = new Region(); + cakeRegionFs.getStyleClass().add("regionCake"); + makeFsBtn.setGraphic(cakeRegionFs); AppPreferences preferences = AppPreferences.getInstance(); String keysLocation = preferences.getKeysLocation(); @@ -85,8 +89,10 @@ public class PatchesController implements Initializable { } saveToLbl.setText(preferences.getPatchesSaveToLocation()); - //makeEsBtn.disableProperty().bind(Bindings.isEmpty(locationFirmwareLbl.textProperty())); + makeEsBtn.disableProperty().bind(Bindings.isEmpty(locationFirmwareLbl.textProperty())); makeEsBtn.setOnAction(actionEvent -> makeEs()); + + makeFsBtn.disableProperty().bind(Bindings.isEmpty(locationFirmwareLbl.textProperty())); makeFsBtn.setOnAction(actionEvent -> makeFs()); } @@ -215,6 +221,7 @@ public class PatchesController implements Initializable { } convertRegionEs.getStyleClass().clear(); + makeFsBtn.setVisible(! isActive); if (isActive) { MediatorControl.getInstance().getContoller().logArea.clear(); diff --git a/src/main/java/nsusbloader/Utilities/patches/BinToAsmPrinter.java b/src/main/java/nsusbloader/Utilities/patches/BinToAsmPrinter.java index 36cb41f..622d27c 100644 --- a/src/main/java/nsusbloader/Utilities/patches/BinToAsmPrinter.java +++ b/src/main/java/nsusbloader/Utilities/patches/BinToAsmPrinter.java @@ -59,7 +59,7 @@ public class BinToAsmPrinter { return printMOV(instructionExpression); case 0x62: if (((instructionExpression & 0x1f) == 0x1f)){ - return printCMN(instructionExpression, offset); + return printCMN(instructionExpression); } } @@ -123,10 +123,10 @@ public class BinToAsmPrinter { case 0xA2: return printSUBSimplified(instructionExpression, offset); case 0xE2: - case 0x1e2: + //case 0x1e2: return printCMPSimplified(instructionExpression, offset); case 0x24: - case 0x124: + //case 0x124: return printANDSimplified(instructionExpression, offset); } @@ -144,13 +144,15 @@ public class BinToAsmPrinter { return printBConditionalSimplified(instructionExpression, offset); } - switch ((instructionExpression >> 26 & 0b111111)) { + switch (instructionExpression >> 26 & 0b111111) { case 0x5: return printBSimplified(instructionExpression, offset); case 0x25: return printBLSimplified(instructionExpression, offset); } - System.out.printf("0x%x\n", (instructionExpression >> 23 & 0xff)); + + if ((instructionExpression >> 10 & 0x3FFFFF) == 0x3597c0 && ((instructionExpression & 0x1F) == 0)) + return printRetSimplified(instructionExpression, offset); return printUnknownSimplified(instructionExpression, offset); } @@ -183,7 +185,7 @@ public class BinToAsmPrinter { conditionalJumpLocation, (conditionalJumpLocation + 0x100)); } - private static String printCMN(int instructionExpression, int offset){ + private static String printCMN(int instructionExpression){ int Rn = instructionExpression >> 5 & 0x1F; int imm = instructionExpression >> 10 & 0xFFF; @@ -271,7 +273,6 @@ public class BinToAsmPrinter { int Rt = instructionExpression & 0b11111; int label = (offset + (instructionExpression >> 5 & 0x3fff) * 4) & 0xfffff; - //System.out.printf("\nInstruction: %x\n", instructionExpression); return String.format(ANSI_YELLOW + "sf == 0 && hw == 0x ? else \n" + "TBZ ,#,