More minor bugfixes (vbl wait might be what causes hang on startup!)
This commit is contained in:
parent
4031aecfc7
commit
d73ebd5765
|
@ -8,14 +8,12 @@ import java.util.logging.Logger;
|
|||
import jace.apple2e.MOS65C02;
|
||||
import jace.apple2e.RAM128k;
|
||||
import jace.apple2e.VideoNTSC;
|
||||
import jace.cheat.Cheats.Cheat;
|
||||
import jace.config.Configuration;
|
||||
import jace.core.Computer;
|
||||
import jace.core.RAMEvent;
|
||||
import jace.core.RAMListener;
|
||||
import jace.core.Utility;
|
||||
import jace.hardware.Cards;
|
||||
import jace.hardware.VideoImpls;
|
||||
import jace.lawless.LawlessComputer;
|
||||
import jace.lawless.LawlessImageTool;
|
||||
import jace.ui.MetacheatUI;
|
||||
|
@ -126,6 +124,16 @@ public class LawlessLegends extends Application {
|
|||
return cheatController;
|
||||
}
|
||||
|
||||
public void closeMetacheat() {
|
||||
if (cheatStage != null) {
|
||||
cheatStage.close();
|
||||
}
|
||||
if (cheatController != null) {
|
||||
cheatController.detach();
|
||||
cheatController = null;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param args the command line arguments
|
||||
*/
|
||||
|
@ -150,6 +158,7 @@ public class LawlessLegends extends Application {
|
|||
romStarted.set(false);
|
||||
c.coldStart();
|
||||
try {
|
||||
// Logger.getLogger(getClass().getName()).log(Level.WARNING, "Watchdog: waiting " + watchdogDelay + "ms for boot to start.");
|
||||
Thread.sleep(watchdogDelay);
|
||||
watchdogDelay = 500;
|
||||
if (!romStarted.get() || !c.isRunning() || c.getCpu().getProgramCounter() == MOS65C02.FASTBOOT || c.getCpu().getProgramCounter() == 0) {
|
||||
|
@ -185,16 +194,13 @@ public class LawlessLegends extends Application {
|
|||
c.joy2enabled = false;
|
||||
c.enableStateManager = false;
|
||||
c.ramCard.setValue(RAM128k.RamCards.CardRamworks);
|
||||
c.videoRenderer.setValue(VideoImpls.Lawless);
|
||||
if (c.PRODUCTION_MODE) {
|
||||
c.card7.setValue(Cards.MassStorage);
|
||||
c.card6.setValue(Cards.DiskIIDrive);
|
||||
c.card5.setValue(Cards.RamFactor);
|
||||
c.card4.setValue(null);
|
||||
c.card2.setValue(null);
|
||||
c.getMemory().writeWord(0x03f0, 0x0c700, false, false);
|
||||
}
|
||||
c.cheatEngine.setValue(Cheat.LawlessHacks);
|
||||
Configuration.buildTree();
|
||||
c.reconfigure();
|
||||
VideoNTSC.setVideoMode(VideoNTSC.VideoMode.TextFriendly, false);
|
||||
|
|
|
@ -83,7 +83,7 @@ public class Apple2e extends Computer {
|
|||
@ConfigurableField(name = "Helpful hints", shortName = "hints")
|
||||
public boolean enableHints = true;
|
||||
@ConfigurableField(name = "Renderer", shortName = "video", description = "Video rendering implementation")
|
||||
public DeviceSelection<VideoImpls> videoRenderer = new DeviceSelection<>(VideoImpls.class, VideoImpls.Lawless, false);
|
||||
public DeviceSelection<VideoImpls> videoRenderer = new DeviceSelection<>(VideoImpls.class, PRODUCTION_MODE ? VideoImpls.Lawless : VideoImpls.NTSC, false);
|
||||
@ConfigurableField(name = "Aux Ram", shortName = "ram", description = "Aux ram card")
|
||||
public DeviceSelection<RAM128k.RamCards> ramCard = new DeviceSelection<>(RAM128k.RamCards.class, RAM128k.RamCards.CardRamworks, false);
|
||||
@ConfigurableField(name = "Joystick 1 Enabled", shortName = "joy1", description = "If unchecked, then there is no joystick support.", enablesDevice = true)
|
||||
|
@ -324,19 +324,15 @@ public class Apple2e extends Computer {
|
|||
activeCheatEngine = null;
|
||||
}
|
||||
} else {
|
||||
boolean startCheats = true;
|
||||
if (activeCheatEngine != null) {
|
||||
if (cheatEngine.getValue().isInstance(activeCheatEngine)) {
|
||||
startCheats = false;
|
||||
newDeviceSet.add(activeCheatEngine);
|
||||
} else {
|
||||
activeCheatEngine.detach();
|
||||
activeCheatEngine.suspend();
|
||||
activeCheatEngine = null;
|
||||
}
|
||||
if (activeCheatEngine != null && !cheatEngine.getValue().isInstance(activeCheatEngine)) {
|
||||
activeCheatEngine.detach();
|
||||
activeCheatEngine.suspend();
|
||||
activeCheatEngine = null;
|
||||
}
|
||||
if (startCheats && cheatEngine.getValue() != null) {
|
||||
if (activeCheatEngine == null && cheatEngine.getValue() != null) {
|
||||
activeCheatEngine = cheatEngine.getValue().create();
|
||||
}
|
||||
if (activeCheatEngine != null) {
|
||||
newDeviceSet.add(activeCheatEngine);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -63,7 +63,10 @@ public abstract class Cheats extends Device {
|
|||
|
||||
@Override
|
||||
public boolean isInstance(Cheats cheat) {
|
||||
return clazz.isInstance(cheat);
|
||||
if (cheat == null) {
|
||||
return false;
|
||||
}
|
||||
return clazz == cheat.getClass();
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -158,7 +158,7 @@ public class MetaCheat extends Cheats {
|
|||
@Override
|
||||
public void detach() {
|
||||
super.detach();
|
||||
ui.detach();
|
||||
LawlessLegends.getApplication().closeMetacheat();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -396,9 +396,9 @@ public class Utility {
|
|||
String osName = System.getProperty("os.name").toLowerCase();
|
||||
if (osName.contains("windows")) {
|
||||
return OS.Windows;
|
||||
} else if (osName.contains("Linux")) {
|
||||
} else if (osName.contains("linux")) {
|
||||
return OS.Linux;
|
||||
} else if (osName.contains("Mac")) {
|
||||
} else if (osName.contains("mac")) {
|
||||
return OS.Mac;
|
||||
} else {
|
||||
System.out.println("Unknown %s".formatted(osName));
|
||||
|
|
|
@ -38,8 +38,6 @@ public class LawlessComputer extends Apple2e {
|
|||
if (PRODUCTION_MODE) {
|
||||
this.cheatEngine.setValue(Cheats.Cheat.LawlessHacks);
|
||||
}
|
||||
// this.activeCheatEngine = new LawlessHacks(this);
|
||||
// this.activeCheatEngine.attach();
|
||||
blankTextPage1();
|
||||
reconfigure();
|
||||
}
|
||||
|
@ -161,7 +159,7 @@ public class LawlessComputer extends Apple2e {
|
|||
}
|
||||
|
||||
public void waitForVBL(int count) throws InterruptedException {
|
||||
if (getVideo() == null || !getVideo().isRunning()) {
|
||||
if (getVideo() == null || !getVideo().isRunning() || !getMotherboard().isRunning()) {
|
||||
return;
|
||||
}
|
||||
Semaphore s = new Semaphore(0);
|
||||
|
|
|
@ -47,9 +47,7 @@ public class LawlessHacks extends Cheats {
|
|||
// Observe graphics changes
|
||||
addCheat("Lawless Text Speedup", RAMEvent.TYPE.EXECUTE, this::fastText, 0x0ee00, 0x0ee00 + 0x0f00);
|
||||
addCheat("Lawless Text Enhancement", RAMEvent.TYPE.WRITE, this::enhanceText, 0x02000, 0x03fff);
|
||||
addCheat("Lawless Legends Music Commands", RAMEvent.TYPE.WRITE, (e) -> {
|
||||
playSound(e.getNewValue());
|
||||
}, SFX_TRIGGER);
|
||||
addCheat("Lawless Legends Music Commands", RAMEvent.TYPE.WRITE, (e) -> playSound(e.getNewValue()), SFX_TRIGGER);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -61,6 +59,13 @@ public class LawlessHacks extends Cheats {
|
|||
public void tick() {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void detach() {
|
||||
super.detach();
|
||||
stopMusic();
|
||||
Emulator.withComputer((c->c.getMotherboard().cancelSpeedRequest(this)));
|
||||
}
|
||||
|
||||
// Speed up text rendering
|
||||
private void fastText(RAMEvent e) {
|
||||
if (e.isMainMemory() && e.getOldValue() != 0x060) {
|
||||
|
|
|
@ -527,8 +527,10 @@ public class MetacheatUI {
|
|||
searchValueField.textProperty().unbind();
|
||||
searchChangeByField.textProperty().unbind();
|
||||
memoryWatchTooltip.hide();
|
||||
animationTimer.shutdown();
|
||||
animationTimer = null;
|
||||
if (animationTimer != null) {
|
||||
animationTimer.shutdown();
|
||||
animationTimer = null;
|
||||
}
|
||||
cheatEngine = null;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue