package com.grapeshot.halfnes.ui;
import com.grapeshot.halfnes.CPURAM;
import com.grapeshot.halfnes.NES;
import com.grapeshot.halfnes.video.RGBRenderer;
import com.grapeshot.halfnes.video.Renderer;
import java.awt.image.BufferedImage;
/**
* @author Mitchell Skaggs
*/
public class HeadlessUI implements GUIInterface {
private NES nes;
private Renderer renderer;
private boolean renderFrames;
private BufferedImage lastFrame = null;
private boolean updateImage;
private PuppetController controller1, controller2;
public HeadlessUI(String romToLoad, boolean renderFrames) {
nes = new NES(this);
this.loadROM(romToLoad);
this.renderer = new RGBRenderer();
this.controller1 = new PuppetController();
this.controller2 = new PuppetController();
nes.setControllers(this.controller1, this.controller2);
this.renderFrames = renderFrames;
}
public void loadROM(String romToLoad) {
this.nes.loadROM(romToLoad);
}
public BufferedImage getLastFrame() {
return lastFrame;
}
public PuppetController getController1() {
return controller1;
}
public PuppetController getController2() {
return controller2;
}
public synchronized void runFrame() {
nes.frameAdvance();
}
public CPURAM getNESCPURAM() {
return nes.getCPURAM();
}
@Override
public NES getNes() {
return nes;
}
@Override
public void setNES(NES nes) {
this.nes = nes;
}
@Override
public void setFrame(int[] frame, int[] bgcolor, boolean dotcrawl) {
if (renderFrames) {
this.lastFrame = renderer.render(frame, bgcolor, dotcrawl);
}
}
@Override
public void messageBox(String message) {
System.err.println(message); // Shouldn't get any messages except errors
}
@Override
public void run() {
// Null-op
}
@Override
public void render() {
}
@Override
public void loadROMs(String path) {
}
}