📄 aepgb.java
字号:
menubar.fs_2.setState(skip == 2);
menubar.fs_3.setState(skip == 3);
menubar.fs_4.setState(skip == 4);
menubar.fs_5.setState(skip == 5);
}
void setDebugLevel(int level) {
PgbSettings.debuglevel = level;
menubar.debug_0.setState(level == 0);
menubar.debug_1.setState(level == 1);
menubar.debug_2.setState(level == 2);
menubar.debug_3.setState(level == 3);
menubar.debug_4.setState(level == 4);
menubar.debug_5.setState(level == 5);
}
void setSystem(int sys) {
PgbSettings.desiredsystem = sys;
menubar.sys_gb.setState(sys == PgbSettings.SYS_GB);
menubar.sys_gbp.setState(sys == PgbSettings.SYS_GBP);
menubar.sys_sgb.setState(sys == PgbSettings.SYS_SGB);
menubar.sys_gbc.setState(sys == PgbSettings.SYS_GBC);
if (sys == PgbSettings.SYS_GBC && !cart.getGbc()) {
sys = PgbSettings.SYS_SGB;
}
if (sys == PgbSettings.SYS_SGB && !cart.getSgb()) {
sys = PgbSettings.SYS_GBP;
}
PgbSettings.system = sys;
}
synchronized void loadCart() {
FileDialog fd;
cart.saveBattery(PgbSettings.savepath, curfile);
fd = new FileDialog(frame, curpath, FileDialog.LOAD);
fd.setTitle("Load ROM...");
fd.setFilenameFilter(cart);
fd.setVisible(true);
if (fd.getFile() == null) {
return;
}
curfile = fd.getFile();
curpath = fd.getDirectory();
//fd.dispose();
if (cart.load(curpath, curfile)) {
setSystem(PgbSettings.desiredsystem);
PgbSettings.gamestring = cart.getName();
net.sendInfo();
reset();
unpause();
}
}
/**
* WindowListener
*/
public void windowClosing(WindowEvent ev) {
shutdown();
}
public void windowOpened(WindowEvent ev) {
}
public void windowClosed(WindowEvent ev) {
}
public synchronized void windowDeiconified(WindowEvent ev) {
if (!PgbSettings.active) {
PgbSettings.active = true;
notifyAll();
}
}
public synchronized void windowActivated(WindowEvent ev) {
/*
if(!PgbSettings.active) {
PgbSettings.active = true;
notify();
}
*/
}
public synchronized void windowIconified(WindowEvent ev) {
if (PgbSettings.active) {
PgbSettings.active = false;
}
}
public synchronized void windowDeactivated(WindowEvent ev) {
/*
if(PgbSettings.active) {
PgbSettings.active = false;
}
*/
}
/**
* KeyListener
*/
public void keyReleased(KeyEvent ev) {
}
public void keyPressed(KeyEvent ev) {
if (ev.getKeyCode() == KeyEvent.VK_SPACE) {
cpu.exec(1);
}
if (ev.getKeyCode() == PgbSettings.key_screen) {
vidout.makeScreenshot();
}
}
public void keyTyped(KeyEvent ev) {
}
/**
* ActionListener
*/
public synchronized void actionPerformed(ActionEvent ev) {
if (ev.getActionCommand().equals("file_about")) {
String message = "Pgb (c) 2000-2001 Ben Mazur\nAEPgb Version "+PgbSettings.version+" (c) 2004 retroK, XTale, baka0815\nhttp://aepgb.aep-emu.de/";
JOptionPane.showMessageDialog(frame, message, "About AEPgb", JOptionPane.INFORMATION_MESSAGE);
return;
}
if (ev.getActionCommand().equals("file_load")) {
loadCart();
return;
}
if (ev.getActionCommand().equals("file_exit")) {
shutdown();
return;
}
if (ev.getActionCommand().equals("cpu_reset")) {
reset();
return;
}
if (ev.getActionCommand().equals("cpu_paused")) {
if (PgbSettings.paused) {
unpause();
} else {
pause();
}
return;
}
if (ev.getActionCommand().equals("serial_connect")) {
net.popNetDialog(frame);
return;
}
if (ev.getActionCommand().equals("options_setkeys")) {
PgbSettings.popKeysDialog(frame);
return;
}
if (ev.getActionCommand().equals("options_setsavepath")) {
PgbSettings.popSavePathDialog(frame);
return;
}
}
/**
* ItemListener
*/
public synchronized void itemStateChanged(ItemEvent ev) {
if (ev.getItemSelectable().equals(menubar.cpu_paused)) {
if (PgbSettings.paused) {
unpause();
} else {
pause();
}
return;
}
if (ev.getItemSelectable().equals(menubar.vidout_default)) {
setVideoOutput(PgbSettings.VIDOUT_DEFAULT);
return;
}
if (ev.getItemSelectable().equals(menubar.vidout_directx)) {
setVideoOutput(PgbSettings.VIDOUT_DIRECTX);
return;
}
if (ev.getItemSelectable().equals(menubar.vidout_indexed)) {
setVideoOutput(PgbSettings.VIDOUT_INDEXED);
return;
}
if (ev.getItemSelectable().equals(menubar.vidout_direct)) {
setVideoOutput(PgbSettings.VIDOUT_DIRECT);
return;
}
if (ev.getItemSelectable().equals(menubar.sound)) {
setSound(menubar.sound.getState());
return;
}
if (ev.getItemSelectable().equals(menubar.soundChannel1Enable)
|| ev.getItemSelectable().equals(menubar.soundChannel2Enable)
|| ev.getItemSelectable().equals(menubar.soundChannel3Enable)
|| ev.getItemSelectable().equals(menubar.soundChannel4Enable)) {
setChannelEnable();
return;
}
if (ev.getItemSelectable().equals(menubar.soundBuffer200)) {
setBufferLength(200);
return;
}
if (ev.getItemSelectable().equals(menubar.soundBuffer300)) {
setBufferLength(300);
return;
}
if (ev.getItemSelectable().equals(menubar.soundBuffer400)) {
setBufferLength(400);
return;
}
if (ev.getItemSelectable().equals(menubar.soundFreq11)) {
setSoundFreq(11025);
return;
}
if (ev.getItemSelectable().equals(menubar.soundFreq22)) {
setSoundFreq(22050);
return;
}
if (ev.getItemSelectable().equals(menubar.soundFreq44)) {
setSoundFreq(44100);
return;
}
if (ev.getItemSelectable().equals(menubar.size_1)) {
setLcdSize(1);
return;
}
if (ev.getItemSelectable().equals(menubar.size_2)) {
setLcdSize(2);
return;
}
if (ev.getItemSelectable().equals(menubar.size_3)) {
setLcdSize(3);
return;
}
if (ev.getItemSelectable().equals(menubar.size_4)) {
setLcdSize(4);
return;
}
if (ev.getItemSelectable().equals(menubar.color_mute)) {
setColorMute(menubar.color_mute.getState());
return;
}
if (ev.getItemSelectable().equals(menubar.sgb_border)) {
setSgbBorder(menubar.sgb_border.getState());
setLcdSize(PgbSettings.lcdsize);
return;
}
if (ev.getItemSelectable().equals(menubar.auto_wait)) {
PgbSettings.autowait = !PgbSettings.autowait;
setFrameskip(PgbSettings.frameskip);
return;
}
if (ev.getItemSelectable().equals(menubar.fs_0)) {
setFrameskip(0);
return;
}
if (ev.getItemSelectable().equals(menubar.fs_1)) {
setFrameskip(1);
return;
}
if (ev.getItemSelectable().equals(menubar.fs_2)) {
setFrameskip(2);
return;
}
if (ev.getItemSelectable().equals(menubar.fs_3)) {
setFrameskip(3);
return;
}
if (ev.getItemSelectable().equals(menubar.fs_4)) {
setFrameskip(4);
return;
}
if (ev.getItemSelectable().equals(menubar.fs_5)) {
setFrameskip(5);
return;
}
if (ev.getItemSelectable().equals(menubar.priority_low)) {
setPriority(Thread.MIN_PRIORITY);
return;
}
if (ev.getItemSelectable().equals(menubar.priority_normal)) {
setPriority(Thread.NORM_PRIORITY);
return;
}
if (ev.getItemSelectable().equals(menubar.priority_high)) {
setPriority((Thread.NORM_PRIORITY + Thread.MAX_PRIORITY) / 2);
return;
}
if (ev.getItemSelectable().equals(menubar.priority_max)) {
setPriority(Thread.MAX_PRIORITY);
return;
}
if (ev.getItemSelectable().equals(menubar.debug_0)) {
setDebugLevel(0);
return;
}
if (ev.getItemSelectable().equals(menubar.debug_1)) {
setDebugLevel(1);
return;
}
if (ev.getItemSelectable().equals(menubar.debug_2)) {
setDebugLevel(2);
return;
}
if (ev.getItemSelectable().equals(menubar.debug_3)) {
setDebugLevel(3);
return;
}
if (ev.getItemSelectable().equals(menubar.debug_4)) {
setDebugLevel(4);
return;
}
if (ev.getItemSelectable().equals(menubar.debug_5)) {
setDebugLevel(5);
return;
}
if (ev.getItemSelectable().equals(menubar.sys_gb)) {
setSystem(PgbSettings.SYS_GB);
reset();
}
if (ev.getItemSelectable().equals(menubar.sys_gbp)) {
setSystem(PgbSettings.SYS_GBP);
reset();
}
if (ev.getItemSelectable().equals(menubar.sys_sgb)) {
setSystem(PgbSettings.SYS_SGB);
reset();
}
if (ev.getItemSelectable().equals(menubar.sys_gbc)) {
setSystem(PgbSettings.SYS_GBC);
reset();
}
}
/**
* Runnable
*/
public final void run() {
int cyclecount = 0;
long lasttime = System.currentTimeMillis(),
lastframe = video.framecount;
long interval = 1;
long thistime, time, frames;
int framereal, frametarget;
Thread currentThread = Thread.currentThread();
while (cpuThread == currentThread) {
try {
Thread.sleep(interval);
synchronized (this) {
while ((PgbSettings.paused || !PgbSettings.active)
&& cpuThread == currentThread) {
wait();
}
}
} catch (InterruptedException ex) {
// duh?
}
cpu.exec((int) (PgbSettings.clockspeed * 100000));
if (cyclecount++ == 10) {
// calculate
thistime = System.currentTimeMillis();
time = thistime - lasttime;
frames = video.framecount - lastframe;
framereal = (int) (frames * (1000.0 / time));
frametarget = 60;
// adjust
if (PgbSettings.autowait) {
// attempt to regulate speed...
// it doesn't adjust fast, but it doesn't overadjust
if (frametarget - framereal > 5) {
interval = Math.max(interval - 4, 1);
}
if (framereal - frametarget > 5) {
interval += 4;
}
} else {
interval = 1;
}
// display
frame.setTitle(
"AEPgb : "
+ framereal
+ "/"
+ frametarget
+ " fps, wait="
+ interval);
// get ready for next time
cyclecount = 0;
lasttime = thistime;
lastframe = video.framecount;
}
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -