⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pgbmenubar.java

📁 一个用java写成的gb模拟器的源代码。
💻 JAVA
字号:
/**
 * this source file released under the GNU Public Licence.
 * see the accompanying copyright.txt for more information.
 * Copyright (C) 2000-2001 Ben Mazur
 */

import java.awt.CheckboxMenuItem;
import java.awt.Menu;
import java.awt.MenuBar;
import java.awt.MenuItem;
import java.awt.MenuShortcut;
import java.awt.event.ActionListener;
import java.awt.event.ItemListener;
import java.awt.event.KeyEvent;

public class PgbMenuBar extends MenuBar {

	public Menu filemenu, cpumenu, optionsmenu;
	public Menu dblevelmenu;
	public Menu frameskipmenu,
		prioritymenu,
		videomenu,
		soundmenu,
		serialmenu,
		systemmenu;
	public Menu vidoutmenu;
	public MenuItem file_load, file_exit, file_about;
	public MenuItem cpu_reset, cpu_runto;
	public MenuItem options_setkeys, options_setsavepath;
	public CheckboxMenuItem cpu_paused;
	public CheckboxMenuItem debug_0,
		debug_1,
		debug_2,
		debug_3,
		debug_4,
		debug_5;
	public CheckboxMenuItem auto_wait, fs_0, fs_1, fs_2, fs_3, fs_4, fs_5;

	// by retroK
	public CheckboxMenuItem soundChannel1Enable,
		soundChannel2Enable,
		soundChannel3Enable,
		soundChannel4Enable;
	public CheckboxMenuItem soundFreq11, soundFreq22, soundFreq44;
	public CheckboxMenuItem soundBuffer200, soundBuffer300, soundBuffer400;
	// end by retroK
	
	public CheckboxMenuItem priority_low,
		priority_normal,
		priority_high,
		priority_max;
	public CheckboxMenuItem size_1,
		size_2,
		size_3,
		size_4,
		color_mute,
		sgb_border;
	public CheckboxMenuItem sys_gb, sys_gbp, sys_sgb, sys_gbc, sound;
	public MenuItem serial_connect;
	public CheckboxMenuItem vidout_default,
		vidout_directx,
		vidout_indexed,
		vidout_direct;

	public PgbMenuBar(ActionListener al, ItemListener il) {
		super();

		filemenu = new Menu("File");
		filemenu.addActionListener(al);

		file_load = new MenuItem("Open...", new MenuShortcut(KeyEvent.VK_O));
		file_load.setActionCommand("file_load");
		file_exit = new MenuItem("Exit", new MenuShortcut(KeyEvent.VK_X));
		file_exit.setActionCommand("file_exit");

		file_about = new MenuItem("About");
		file_about.setActionCommand("file_about");

		cpumenu = new Menu("CPU");
		cpumenu.addActionListener(al);

		cpu_reset = new MenuItem("Reset");
		cpu_reset.setActionCommand("cpu_reset");
		cpu_paused = new CheckboxMenuItem("Pause", true);
		cpu_paused.setShortcut(new MenuShortcut(KeyEvent.VK_P));
		cpu_paused.setActionCommand("cpu_paused");
		cpu_paused.addItemListener(il);
		cpu_runto = new MenuItem("Run To...");
		cpu_runto.setActionCommand("cpu_runto");
		cpu_runto.setEnabled(false);

		dblevelmenu = new Menu("Debug Level");
		dblevelmenu.addActionListener(al);

		debug_0 = new CheckboxMenuItem("0 - Basic messages only", false);
		debug_0.addItemListener(il);
		debug_1 = new CheckboxMenuItem("1 - Count, Error messages", false);
		debug_1.addItemListener(il);
		debug_1.setEnabled(false);
		debug_2 = new CheckboxMenuItem("2 - Uncommon status messages", false);
		debug_2.addItemListener(il);
		debug_2.setEnabled(false);
		debug_3 = new CheckboxMenuItem("3 - Common status messages", false);
		debug_3.addItemListener(il);
		debug_3.setEnabled(false);
		debug_4 = new CheckboxMenuItem("4 - Interrupts", false);
		debug_4.addItemListener(il);
		debug_4.setEnabled(false);
		debug_5 = new CheckboxMenuItem("5 - Opcode display", false);
		debug_5.addItemListener(il);

		optionsmenu = new Menu("Options");
		optionsmenu.addActionListener(al);

		frameskipmenu = new Menu("Frameskip");
		frameskipmenu.addActionListener(al);

		auto_wait = new CheckboxMenuItem("Auto Wait", false);
		auto_wait.addItemListener(il);
		fs_0 = new CheckboxMenuItem("0", false);
		fs_0.addItemListener(il);
		fs_1 = new CheckboxMenuItem("1", false);
		fs_1.addItemListener(il);
		fs_2 = new CheckboxMenuItem("2", false);
		fs_2.addItemListener(il);
		fs_3 = new CheckboxMenuItem("3", false);
		fs_3.addItemListener(il);
		fs_4 = new CheckboxMenuItem("4", false);
		fs_4.addItemListener(il);
		fs_5 = new CheckboxMenuItem("5", false);
		fs_5.addItemListener(il);

		prioritymenu = new Menu("Priority");
		prioritymenu.addActionListener(al);

		priority_low =
			new CheckboxMenuItem("Low (" + Thread.MIN_PRIORITY + ")", false);
		priority_low.addItemListener(il);
		priority_normal =
			new CheckboxMenuItem(
				"Normal (" + Thread.NORM_PRIORITY + ")",
				false);
		priority_normal.addItemListener(il);
		priority_high =
			new CheckboxMenuItem(
				"High ("
					+ ((Thread.NORM_PRIORITY + Thread.MAX_PRIORITY) / 2)
					+ ")",
				false);
		priority_high.addItemListener(il);
		priority_max =
			new CheckboxMenuItem("Max (" + Thread.MAX_PRIORITY + ")", false);
		priority_max.addItemListener(il);

		videomenu = new Menu("Video");
		videomenu.addActionListener(al);

		vidoutmenu = new Menu("Output");
		vidoutmenu.addActionListener(al);

		vidout_default = new CheckboxMenuItem("Default", false);
		vidout_default.addItemListener(il);
		vidout_directx =
			new CheckboxMenuItem("DirectX (fast & accurate)", false);
		vidout_directx.addItemListener(il);
		vidout_directx.setEnabled(PgbSettings.usedirectx);
		vidout_indexed = new CheckboxMenuItem("Indexed Color (fast)", false);
		vidout_indexed.addItemListener(il);
		vidout_direct = new CheckboxMenuItem("Direct Color (accurate)", false);
		vidout_direct.addItemListener(il);

		size_1 = new CheckboxMenuItem("1x window", false);
		size_1.addItemListener(il);
		size_2 = new CheckboxMenuItem("2x", false);
		size_2.addItemListener(il);
		size_3 = new CheckboxMenuItem("3x", false);
		size_3.addItemListener(il);
		size_4 = new CheckboxMenuItem("4x", false);
		size_4.addItemListener(il);

		color_mute = new CheckboxMenuItem("Mute Colors", false);
		color_mute.addItemListener(il);

		sgb_border = new CheckboxMenuItem("SGB Border (slow)", false);
		sgb_border.addItemListener(il);

		soundmenu = new Menu("Sound");
		soundmenu.addActionListener(al);

		sound = new CheckboxMenuItem("Enabled", true);
		sound.addItemListener(il);
		soundChannel1Enable =
			new CheckboxMenuItem("Channel 1 (Square Wave)", true);
		soundChannel1Enable.addItemListener(il);
		soundChannel2Enable =
			new CheckboxMenuItem("Channel 2 (Square Wave)", true);
		soundChannel2Enable.addItemListener(il);
		soundChannel3Enable =
			new CheckboxMenuItem("Channel 3 (Voluntary Wave)", true);
		soundChannel3Enable.addItemListener(il);
		soundChannel4Enable = new CheckboxMenuItem("Channel 4 (Noise)", true);
		soundChannel4Enable.addItemListener(il);

		soundBuffer200 = new CheckboxMenuItem("Buffer length: 200ms", true);
		soundBuffer200.addItemListener(il);
		soundBuffer300 = new CheckboxMenuItem("Buffer length: 300ms");
		soundBuffer300.addItemListener(il);
		soundBuffer400 = new CheckboxMenuItem("Buffer length: 400ms");
		soundBuffer400.addItemListener(il);

		soundFreq11 = new CheckboxMenuItem("Sample rate: 11khz");
		soundFreq11.addItemListener(il);
		soundFreq22 = new CheckboxMenuItem("Sample rate: 22khz");
		soundFreq22.addItemListener(il);
		soundFreq44 = new CheckboxMenuItem("Sample rate: 44khz", true);
		soundFreq44.addItemListener(il);

		serialmenu = new Menu("Serial");
		serialmenu.addActionListener(al);

		serial_connect = new MenuItem("Connect...");
		serial_connect.setActionCommand("serial_connect");
		//serial_connect.setEnabled(false);

		systemmenu = new Menu("System");
		systemmenu.addActionListener(al);

		sys_gb = new CheckboxMenuItem("Gameboy", false);
		sys_gb.addItemListener(il);
		sys_gbp = new CheckboxMenuItem("Gameboy Pocket", false);
		sys_gbp.addItemListener(il);
		sys_sgb = new CheckboxMenuItem("Super Gameboy", false);
		sys_sgb.addItemListener(il);
		sys_gbc = new CheckboxMenuItem("Gameboy Color", false);
		sys_gbc.addItemListener(il);

		options_setkeys = new MenuItem("Set Keys...");
		options_setkeys.setActionCommand("options_setkeys");
		options_setsavepath = new MenuItem("Directories...");
		options_setsavepath.setActionCommand("options_setsavepath");
		options_setsavepath.setEnabled(false);

		// arrange things on it
		add(filemenu);
		filemenu.add(file_load);
		filemenu.addSeparator();
		filemenu.add(file_exit);
		filemenu.add(file_about);
		add(cpumenu);
		cpumenu.add(cpu_reset);
		cpumenu.add(cpu_paused);
		cpumenu.addSeparator();
		cpumenu.add(cpu_runto);
		cpumenu.addSeparator();
		cpumenu.add(dblevelmenu);
		dblevelmenu.add(debug_0);
		dblevelmenu.add(debug_1);
		dblevelmenu.add(debug_2);
		dblevelmenu.add(debug_3);
		dblevelmenu.add(debug_4);
		dblevelmenu.add(debug_5);
		add(optionsmenu);
		optionsmenu.add(frameskipmenu);
		frameskipmenu.add(auto_wait);
		frameskipmenu.addSeparator();
		frameskipmenu.add(fs_0);
		frameskipmenu.add(fs_1);
		frameskipmenu.add(fs_2);
		frameskipmenu.add(fs_3);
		frameskipmenu.add(fs_4);
		frameskipmenu.add(fs_5);
		optionsmenu.add(prioritymenu);
		prioritymenu.add(priority_low);
		prioritymenu.add(priority_normal);
		prioritymenu.add(priority_high);
		prioritymenu.addSeparator();
		prioritymenu.add(priority_max);
		optionsmenu.addSeparator();
		optionsmenu.add(videomenu);
		videomenu.add(vidoutmenu);
		vidoutmenu.add(vidout_default);
		vidoutmenu.addSeparator();
		vidoutmenu.add(vidout_directx);
		vidoutmenu.add(vidout_indexed);
		vidoutmenu.add(vidout_direct);
		videomenu.addSeparator();
		videomenu.add(size_1);
		videomenu.add(size_2);
		videomenu.add(size_3);
		videomenu.add(size_4);
		videomenu.addSeparator();
		videomenu.add(color_mute);
		videomenu.add(sgb_border);
		optionsmenu.add(soundmenu);
		soundmenu.add(sound);
		soundmenu.addSeparator();
		soundmenu.add(soundChannel1Enable);
		soundmenu.add(soundChannel2Enable);
		soundmenu.add(soundChannel3Enable);
		soundmenu.add(soundChannel4Enable);
		soundmenu.addSeparator();
		soundmenu.add(soundFreq11);
		soundmenu.add(soundFreq22);
		soundmenu.add(soundFreq44);
		soundmenu.addSeparator();
		soundmenu.add(soundBuffer200);
		soundmenu.add(soundBuffer300);
		soundmenu.add(soundBuffer400);

		optionsmenu.add(serialmenu);
		serialmenu.add(serial_connect);
		optionsmenu.addSeparator();
		optionsmenu.add(systemmenu);
		systemmenu.add(sys_gb);
		systemmenu.add(sys_gbp);
		systemmenu.add(sys_sgb);
		systemmenu.add(sys_gbc);
		optionsmenu.addSeparator();
		optionsmenu.add(options_setkeys);
		optionsmenu.add(options_setsavepath);
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -