mirror of
https://github.com/badvision/jace.git
synced 2024-12-29 17:30:03 +00:00
Implemented way to hold values from the watch widget
This commit is contained in:
parent
a069f57a30
commit
2d9ef8b30d
@ -40,33 +40,39 @@ public abstract class Cheats extends Device {
|
|||||||
super(computer);
|
super(computer);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void bypassCode(int address, int addressEnd) {
|
public RAMListener bypassCode(int address, int addressEnd) {
|
||||||
int noOperation = MOS65C02.COMMAND.NOP.ordinal();
|
int noOperation = MOS65C02.COMMAND.NOP.ordinal();
|
||||||
addCheat(RAMEvent.TYPE.READ, (e) -> {e.setNewValue(noOperation);}, address, addressEnd);
|
return addCheat(RAMEvent.TYPE.READ, (e) -> e.setNewValue(noOperation), address, addressEnd);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void forceValue(int value, int... address) {
|
public RAMListener forceValue(int value, int... address) {
|
||||||
addCheat(RAMEvent.TYPE.READ, (e) -> {e.setNewValue(value);}, address);
|
return addCheat(RAMEvent.TYPE.ANY, (e) -> e.setNewValue(value), address);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void forceValue(int value, boolean auxFlag, int... address) {
|
|
||||||
addCheat(RAMEvent.TYPE.READ, auxFlag, (e) -> {e.setNewValue(value);}, address);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addCheat(RAMEvent.TYPE type, RAMEvent.RAMEventHandler handler, int... address) {
|
public RAMListener forceValue(int value, boolean auxFlag, int... address) {
|
||||||
if (address.length == 1) {
|
return addCheat(RAMEvent.TYPE.ANY, auxFlag, (e) -> e.setNewValue(value), address);
|
||||||
listeners.add(computer.getMemory().observe(type, address[0], handler));
|
|
||||||
} else {
|
|
||||||
listeners.add(computer.getMemory().observe(type, address[0], address[1], handler));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addCheat(RAMEvent.TYPE type, boolean auxFlag, RAMEvent.RAMEventHandler handler, int... address) {
|
public RAMListener addCheat(RAMEvent.TYPE type, RAMEvent.RAMEventHandler handler, int... address) {
|
||||||
|
RAMListener listener;
|
||||||
if (address.length == 1) {
|
if (address.length == 1) {
|
||||||
listeners.add(computer.getMemory().observe(type, address[0], auxFlag, handler));
|
listener = computer.getMemory().observe(type, address[0], handler);
|
||||||
} else {
|
} else {
|
||||||
listeners.add(computer.getMemory().observe(type, address[0], address[1], auxFlag, handler));
|
listener = computer.getMemory().observe(type, address[0], address[1], handler);
|
||||||
}
|
}
|
||||||
|
listeners.add(listener);
|
||||||
|
return listener;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RAMListener addCheat(RAMEvent.TYPE type, boolean auxFlag, RAMEvent.RAMEventHandler handler, int... address) {
|
||||||
|
RAMListener listener;
|
||||||
|
if (address.length == 1) {
|
||||||
|
listener = computer.getMemory().observe(type, address[0], auxFlag, handler);
|
||||||
|
} else {
|
||||||
|
listener = computer.getMemory().observe(type, address[0], address[1], auxFlag, handler);
|
||||||
|
}
|
||||||
|
listeners.add(listener);
|
||||||
|
return listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -93,7 +99,7 @@ public abstract class Cheats extends Device {
|
|||||||
computer.getMemory().removeListener(l);
|
computer.getMemory().removeListener(l);
|
||||||
listeners.remove(l);
|
listeners.remove(l);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reconfigure() {
|
public void reconfigure() {
|
||||||
unregisterListeners();
|
unregisterListeners();
|
||||||
|
@ -298,8 +298,14 @@ public class MetacheatUI {
|
|||||||
StackPane pane = new StackPane();
|
StackPane pane = new StackPane();
|
||||||
|
|
||||||
Tooltip memoryWatchTooltip = new Tooltip();
|
Tooltip memoryWatchTooltip = new Tooltip();
|
||||||
|
|
||||||
private void memoryViewClicked(MouseEvent e) {
|
private void memoryViewClicked(MouseEvent e) {
|
||||||
if (cheatEngine != null) {
|
if (cheatEngine != null) {
|
||||||
|
Watch currentWatch = (Watch) memoryWatchTooltip.getGraphic();
|
||||||
|
if (currentWatch != null) {
|
||||||
|
currentWatch.disconnect();
|
||||||
|
}
|
||||||
|
|
||||||
double x = e.getX();
|
double x = e.getX();
|
||||||
double y = e.getY();
|
double y = e.getY();
|
||||||
int col = (int) (x / MEMORY_BOX_TOTAL_SIZE);
|
int col = (int) (x / MEMORY_BOX_TOTAL_SIZE);
|
||||||
@ -307,12 +313,7 @@ public class MetacheatUI {
|
|||||||
int addr = cheatEngine.getStartAddress() + row * memoryViewColumns + col;
|
int addr = cheatEngine.getStartAddress() + row * memoryViewColumns + col;
|
||||||
Watch watch = new Watch(addr);
|
Watch watch = new Watch(addr);
|
||||||
memoryWatchTooltip.setStyle("-fx-background-color:NAVY");
|
memoryWatchTooltip.setStyle("-fx-background-color:NAVY");
|
||||||
|
|
||||||
memoryWatchTooltip.onHidingProperty().addListener((prop, oldVal, newVal) -> {
|
memoryWatchTooltip.onHidingProperty().addListener((prop, oldVal, newVal) -> {
|
||||||
Watch currentWatch = (Watch) memoryWatchTooltip.getGraphic();
|
|
||||||
if (currentWatch != null) {
|
|
||||||
currentWatch.disconnect();
|
|
||||||
}
|
|
||||||
watch.disconnect();
|
watch.disconnect();
|
||||||
memoryWatchTooltip.setGraphic(null);
|
memoryWatchTooltip.setGraphic(null);
|
||||||
});
|
});
|
||||||
@ -352,7 +353,7 @@ public class MetacheatUI {
|
|||||||
if (animationTimer == null) {
|
if (animationTimer == null) {
|
||||||
animationTimer = new ScheduledThreadPoolExecutor(10);
|
animationTimer = new ScheduledThreadPoolExecutor(10);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (animationFuture != null) {
|
if (animationFuture != null) {
|
||||||
animationFuture.cancel(false);
|
animationFuture.cancel(false);
|
||||||
}
|
}
|
||||||
@ -440,6 +441,10 @@ public class MetacheatUI {
|
|||||||
graph = new Canvas(GRAPH_WIDTH, GRAPH_HEIGHT);
|
graph = new Canvas(GRAPH_WIDTH, GRAPH_HEIGHT);
|
||||||
getChildren().add(addrLabel);
|
getChildren().add(addrLabel);
|
||||||
getChildren().add(graph);
|
getChildren().add(graph);
|
||||||
|
|
||||||
|
CheckBox hold = new CheckBox("Hold");
|
||||||
|
hold.selectedProperty().addListener((prop, oldVal, newVal) -> this.hold(newVal));
|
||||||
|
getChildren().add(hold);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void redraw() {
|
public void redraw() {
|
||||||
@ -470,7 +475,22 @@ public class MetacheatUI {
|
|||||||
g.strokeText(String.valueOf(val), GRAPH_WIDTH - 25, GRAPH_HEIGHT - 5);
|
g.strokeText(String.valueOf(val), GRAPH_WIDTH - 25, GRAPH_HEIGHT - 5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
RAMListener holdListener;
|
||||||
|
|
||||||
|
private void hold(boolean state) {
|
||||||
|
if (!state) {
|
||||||
|
cheatEngine.removeListener(holdListener);
|
||||||
|
holdListener = null;
|
||||||
|
} else {
|
||||||
|
int val = cheatEngine.getMemoryCell(address).value.get() & 0x0ff;
|
||||||
|
holdListener = cheatEngine.forceValue(val, address);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void disconnect() {
|
public void disconnect() {
|
||||||
|
if (holdListener != null) {
|
||||||
|
cheatEngine.removeListener(holdListener);
|
||||||
|
}
|
||||||
redraw.cancel(false);
|
redraw.cancel(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user