summaryrefslogtreecommitdiffstatshomepage
path: root/trunk/src/emu/uimain.h
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/src/emu/uimain.h')
-rw-r--r--trunk/src/emu/uimain.h379
1 files changed, 379 insertions, 0 deletions
diff --git a/trunk/src/emu/uimain.h b/trunk/src/emu/uimain.h
new file mode 100644
index 00000000000..5c6f4c6933e
--- /dev/null
+++ b/trunk/src/emu/uimain.h
@@ -0,0 +1,379 @@
+/***************************************************************************
+
+ uimain.h
+
+ Internal MAME menus for the user interface.
+
+ Copyright Nicola Salmoria and the MAME Team.
+ Visit http://mamedev.org for licensing and usage restrictions.
+
+***************************************************************************/
+
+#pragma once
+
+#ifndef __UIMAIN_H__
+#define __UIMAIN_H__
+
+#include "crsshair.h"
+#include "drivenum.h"
+
+class ui_menu_main : public ui_menu {
+public:
+ ui_menu_main(running_machine &machine, render_container *container);
+ virtual ~ui_menu_main();
+ virtual void populate();
+ virtual void handle();
+
+private:
+ enum {
+ INPUT_GROUPS,
+ INPUT_SPECIFIC,
+ SETTINGS_DIP_SWITCHES,
+ SETTINGS_DRIVER_CONFIG,
+ ANALOG,
+ BOOKKEEPING,
+ GAME_INFO,
+ IMAGE_MENU_IMAGE_INFO,
+ IMAGE_MENU_FILE_MANAGER,
+ MESS_MENU_TAPE_CONTROL,
+ MESS_MENU_BITBANGER_CONTROL,
+ SLOT_DEVICES,
+ NETWORK_DEVICES,
+ KEYBOARD_MODE,
+ SLIDERS,
+ VIDEO_TARGETS,
+ VIDEO_OPTIONS,
+ CROSSHAIR,
+ CHEAT,
+ MEMORY_CARD,
+ SELECT_GAME,
+ BIOS_SELECTION,
+ };
+};
+
+class ui_menu_keyboard_mode : public ui_menu {
+public:
+ ui_menu_keyboard_mode(running_machine &machine, render_container *container);
+ virtual ~ui_menu_keyboard_mode();
+ virtual void populate();
+ virtual void handle();
+};
+
+class ui_menu_slot_devices : public ui_menu {
+public:
+ ui_menu_slot_devices(running_machine &machine, render_container *container);
+ virtual ~ui_menu_slot_devices();
+ virtual void populate();
+ virtual void handle();
+
+private:
+ int slot_get_current_index(device_slot_interface *slot);
+ int slot_get_length(device_slot_interface *slot);
+ const char *slot_get_next(device_slot_interface *slot);
+ const char *slot_get_prev(device_slot_interface *slot);
+ const char *get_slot_device(device_slot_interface *slot);
+ void set_slot_device(device_slot_interface *slot, const char *val);
+};
+
+class ui_menu_network_devices : public ui_menu {
+public:
+ ui_menu_network_devices(running_machine &machine, render_container *container);
+ virtual ~ui_menu_network_devices();
+ virtual void populate();
+ virtual void handle();
+};
+
+class ui_menu_input_groups : public ui_menu {
+public:
+ ui_menu_input_groups(running_machine &machine, render_container *container);
+ virtual ~ui_menu_input_groups();
+ virtual void populate();
+ virtual void handle();
+};
+
+class ui_menu_input : public ui_menu {
+public:
+ ui_menu_input(running_machine &machine, render_container *container);
+ virtual ~ui_menu_input();
+ virtual void handle();
+
+protected:
+ enum {
+ INPUT_TYPE_DIGITAL = 0,
+ INPUT_TYPE_ANALOG = 1,
+ INPUT_TYPE_ANALOG_DEC = INPUT_TYPE_ANALOG + SEQ_TYPE_DECREMENT,
+ INPUT_TYPE_ANALOG_INC = INPUT_TYPE_ANALOG + SEQ_TYPE_INCREMENT,
+ INPUT_TYPE_TOTAL = INPUT_TYPE_ANALOG + SEQ_TYPE_TOTAL
+ };
+
+ /* internal input menu item data */
+ struct input_item_data {
+ input_item_data * next; /* pointer to next item in the list */
+ const void * ref; /* reference to type description for global inputs or field for game inputs */
+ input_seq_type seqtype; /* sequence type */
+ input_seq seq; /* copy of the live sequence */
+ const input_seq * defseq; /* pointer to the default sequence */
+ const char * name; /* pointer to the base name of the item */
+ UINT16 sortorder; /* sorting information */
+ UINT8 type; /* type of port */
+ };
+
+ void populate_and_sort(struct input_item_data *itemlist);
+ virtual void update_input(struct input_item_data *seqchangeditem) = 0;
+ void toggle_none_default(input_seq &selected_seq, input_seq &original_seq, const input_seq &selected_defseq);
+
+protected:
+ const void * pollingref;
+ input_seq_type pollingseq;
+ input_item_data * pollingitem;
+
+private:
+ UINT16 last_sortorder;
+ bool record_next;
+ input_seq starting_seq;
+
+ static int compare_items(const void *i1, const void *i2);
+};
+
+class ui_menu_input_general : public ui_menu_input {
+public:
+ ui_menu_input_general(running_machine &machine, render_container *container, int group);
+ virtual ~ui_menu_input_general();
+ virtual void populate();
+
+protected:
+ int group;
+ virtual void update_input(struct input_item_data *seqchangeditem);
+};
+
+class ui_menu_input_specific : public ui_menu_input {
+public:
+ ui_menu_input_specific(running_machine &machine, render_container *container);
+ virtual ~ui_menu_input_specific();
+ virtual void populate();
+
+protected:
+ virtual void update_input(struct input_item_data *seqchangeditem);
+};
+
+class ui_menu_settings : public ui_menu {
+public:
+ ui_menu_settings(running_machine &machine, render_container *container, UINT32 type);
+ virtual ~ui_menu_settings();
+ virtual void populate();
+ virtual void handle();
+
+protected:
+ /* DIP switch descriptor */
+ struct dip_descriptor {
+ dip_descriptor * next;
+ const char * name;
+ UINT32 mask;
+ UINT32 state;
+ };
+
+ dip_descriptor * diplist;
+ int dipcount;
+ int type;
+};
+
+class ui_menu_settings_dip_switches : public ui_menu_settings {
+public:
+ ui_menu_settings_dip_switches(running_machine &machine, render_container *container);
+ virtual ~ui_menu_settings_dip_switches();
+
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2);
+private:
+ void custom_render_one(float x1, float y1, float x2, float y2, const dip_descriptor *dip, UINT32 selectedmask);
+};
+
+class ui_menu_settings_driver_config : public ui_menu_settings {
+public:
+ ui_menu_settings_driver_config(running_machine &machine, render_container *container);
+ virtual ~ui_menu_settings_driver_config();
+};
+
+class ui_menu_analog : public ui_menu {
+public:
+ ui_menu_analog(running_machine &machine, render_container *container);
+ virtual ~ui_menu_analog();
+ virtual void populate();
+ virtual void handle();
+
+private:
+ enum {
+ ANALOG_ITEM_KEYSPEED = 0,
+ ANALOG_ITEM_CENTERSPEED,
+ ANALOG_ITEM_REVERSE,
+ ANALOG_ITEM_SENSITIVITY,
+ ANALOG_ITEM_COUNT
+ };
+
+ /* internal analog menu item data */
+ struct analog_item_data {
+ ioport_field *field;
+ int type;
+ int min, max;
+ int cur;
+ int defvalue;
+ };
+};
+
+class ui_menu_bookkeeping : public ui_menu {
+public:
+ ui_menu_bookkeeping(running_machine &machine, render_container *container);
+ virtual ~ui_menu_bookkeeping();
+ virtual void populate();
+ virtual void handle();
+
+private:
+ attotime prevtime;
+};
+
+class ui_menu_game_info : public ui_menu {
+public:
+ ui_menu_game_info(running_machine &machine, render_container *container);
+ virtual ~ui_menu_game_info();
+ virtual void populate();
+ virtual void handle();
+};
+
+class ui_menu_cheat : public ui_menu {
+public:
+ ui_menu_cheat(running_machine &machine, render_container *container);
+ virtual ~ui_menu_cheat();
+ virtual void populate();
+ virtual void handle();
+};
+
+class ui_menu_memory_card : public ui_menu {
+public:
+ ui_menu_memory_card(running_machine &machine, render_container *container);
+ virtual ~ui_menu_memory_card();
+ virtual void populate();
+ virtual void handle();
+
+private:
+ enum {
+ MEMCARD_ITEM_SELECT = 1,
+ MEMCARD_ITEM_LOAD,
+ MEMCARD_ITEM_EJECT,
+ MEMCARD_ITEM_CREATE
+ };
+
+ int cardnum;
+};
+
+class ui_menu_sliders : public ui_menu {
+public:
+ ui_menu_sliders(running_machine &machine, render_container *container, bool menuless_mode);
+ virtual ~ui_menu_sliders();
+ virtual void populate();
+ virtual void handle();
+
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2);
+
+ static UINT32 ui_handler(running_machine &machine, render_container *container, UINT32 state);
+
+private:
+ bool menuless_mode, hidden;
+};
+
+class ui_menu_video_targets : public ui_menu {
+public:
+ ui_menu_video_targets(running_machine &machine, render_container *container);
+ virtual ~ui_menu_video_targets();
+ virtual void populate();
+ virtual void handle();
+};
+
+class ui_menu_video_options : public ui_menu {
+public:
+ ui_menu_video_options(running_machine &machine, render_container *container, render_target *target);
+ virtual ~ui_menu_video_options();
+ virtual void populate();
+ virtual void handle();
+
+private:
+ enum {
+ VIDEO_ITEM_ROTATE = 0x80000000,
+ VIDEO_ITEM_BACKDROPS,
+ VIDEO_ITEM_OVERLAYS,
+ VIDEO_ITEM_BEZELS,
+ VIDEO_ITEM_CPANELS,
+ VIDEO_ITEM_MARQUEES,
+ VIDEO_ITEM_ZOOM,
+ VIDEO_ITEM_VIEW
+ };
+
+ render_target *target;
+};
+
+class ui_menu_crosshair : public ui_menu {
+public:
+ ui_menu_crosshair(running_machine &machine, render_container *container);
+ virtual ~ui_menu_crosshair();
+ virtual void populate();
+ virtual void handle();
+
+private:
+ enum {
+ CROSSHAIR_ITEM_VIS = 0,
+ CROSSHAIR_ITEM_PIC,
+ CROSSHAIR_ITEM_AUTO_TIME
+ };
+
+ /* internal crosshair menu item data */
+ struct crosshair_item_data {
+ UINT8 type;
+ UINT8 player;
+ UINT8 min, max;
+ UINT8 cur;
+ UINT8 defvalue;
+ char last_name[CROSSHAIR_PIC_NAME_LENGTH + 1];
+ char next_name[CROSSHAIR_PIC_NAME_LENGTH + 1];
+ };
+};
+
+class ui_menu_quit_game : public ui_menu {
+public:
+ ui_menu_quit_game(running_machine &machine, render_container *container);
+ virtual ~ui_menu_quit_game();
+ virtual void populate();
+ virtual void handle();
+};
+
+class ui_menu_select_game : public ui_menu {
+public:
+ ui_menu_select_game(running_machine &machine, render_container *container, const char *gamename);
+ virtual ~ui_menu_select_game();
+ virtual void populate();
+ virtual void handle();
+ virtual void custom_render(void *selectedref, float top, float bottom, float x, float y, float x2, float y2);
+
+private:
+ enum { VISIBLE_GAMES_IN_LIST = 15 };
+ UINT8 error;
+ UINT8 rerandomize;
+ char search[40];
+ int matchlist[VISIBLE_GAMES_IN_LIST];
+ const game_driver **driverlist;
+
+ driver_enumerator *drivlist;
+
+ void build_driver_list();
+};
+
+class ui_menu_bios_selection : public ui_menu {
+public:
+ ui_menu_bios_selection(running_machine &machine, render_container *container);
+ virtual ~ui_menu_bios_selection();
+ virtual void populate();
+ virtual void handle();
+
+private:
+};
+/* force game select menu */
+void ui_menu_force_game_select(running_machine &machine, render_container *container);
+
+#endif /* __UIMAIN_H__ */