File:  [RetroPC.NET] / xmil / wince / sysmenu.cpp
Revision 1.3: download - view: text, annotated - select for diffs
Sat Aug 21 00:07:38 2004 JST (21 years, 2 months ago) by yui
Branches: MAIN
CVS tags: HEAD
fix...

#include	"compiler.h"
#include	"strres.h"
#include	"xmil.h"
#include	"fontmng.h"
#include	"scrnmng.h"
#include	"sysmng.h"
#include	"taskmng.h"
#include	"winkbd.h"
#include	"z80core.h"
#include	"pccore.h"
#include	"iocore.h"
#include	"keystat.h"
#include	"diskdrv.h"
#include	"vramhdl.h"
#include	"menubase.h"
#include	"menustr.h"
#include	"sysmenu.h"
#include	"sysmenu.res"
#include	"sysmenu.str"
#include	"filesel.h"
#include	"dlgcfg.h"
// #include	"dlgscr.h"
#include	"dlgabout.h"


static void sys_cmd(MENUID id) {

	UINT	update;

	update = 0;
	switch(id) {
		case MID_IPLRESET:
			pccore_reset();
			break;

		case MID_NMIRESET:
			Z80_NMI();
			break;

		case MID_CONFIG:
			menudlg_create(DLGCFG_WIDTH, DLGCFG_HEIGHT, mstr_cfg, dlgcfg_cmd);
			break;

		case MID_FDD0OPEN:
			filesel_fdd(0);
			break;

		case MID_FDD0EJECT:
			diskdrv_setfdd(0, NULL, 0);
			break;

		case MID_FDD1OPEN:
			filesel_fdd(1);
			break;

		case MID_FDD1EJECT:
			diskdrv_setfdd(1, NULL, 0);
			break;

		case MID_X1ROM:
			xmilcfg.ROM_TYPE = 1;
			update = SYS_UPDATECFG;
			break;

		case MID_TURBO:
			xmilcfg.ROM_TYPE = 2;
			update = SYS_UPDATECFG;
			break;

#if defined(SUPPORT_TURBOZ)
		case MID_TURBOZ:
			xmilcfg.ROM_TYPE = 3;
			update = SYS_UPDATECFG;
			break;
#endif

		case MID_BOOT2D:
			xmilcfg.DIP_SW &= ~DIPSW_BOOTMEDIA;
			update = SYS_UPDATECFG;
			break;

		case MID_BOOT2HD:
			xmilcfg.DIP_SW |= DIPSW_BOOTMEDIA;
			update = SYS_UPDATECFG;
			break;

		case MID_HIGHRES:
			xmilcfg.DIP_SW &= ~DIPSW_RESOLUTE;
			update = SYS_UPDATECFG;
			break;

		case MID_LOWRES:
			xmilcfg.DIP_SW |= DIPSW_RESOLUTE;
			update = SYS_UPDATECFG;
			break;

		case MID_DISPSYNC:
			xmilcfg.DISPSYNC ^= 1;
			update |= SYS_UPDATECFG;
			break;

		case MID_RASTER:
			xmilcfg.RASTER ^= 1;
			update |= SYS_UPDATECFG;
			break;

		case MID_NOWAIT:
			xmiloscfg.NOWAIT ^= 1;
			update |= SYS_UPDATECFG;
			break;

		case MID_AUTOFPS:
			xmiloscfg.DRAW_SKIP = 0;
			update |= SYS_UPDATECFG;
			break;

		case MID_60FPS:
			xmiloscfg.DRAW_SKIP = 1;
			update |= SYS_UPDATECFG;
			break;

		case MID_30FPS:
			xmiloscfg.DRAW_SKIP = 2;
			update |= SYS_UPDATECFG;
			break;

		case MID_20FPS:
			xmiloscfg.DRAW_SKIP = 3;
			update |= SYS_UPDATECFG;
			break;

		case MID_15FPS:
			xmiloscfg.DRAW_SKIP = 4;
			update |= SYS_UPDATECFG;
			break;

#if defined(WIN32_PLATFORM_PSPC)
		case MID_CURDEF:
			winkbd_bindcur(0);
			xmiloscfg.bindcur = 0;
			update |= SYS_UPDATEOSCFG;
			break;

		case MID_CUR1:
			winkbd_bindcur(1);
			xmiloscfg.bindcur = 1;
			update |= SYS_UPDATEOSCFG;
			break;

		case MID_CUR2:
			winkbd_bindcur(2);
			xmiloscfg.bindcur = 2;
			update |= SYS_UPDATEOSCFG;
			break;

		case MID_BTNDEF:
			winkbd_bindbtn(0);
			xmiloscfg.bindbtn = 0;
			update |= SYS_UPDATEOSCFG;
			break;

		case MID_BTN1:
			winkbd_bindbtn(1);
			xmiloscfg.bindbtn = 1;
			update |= SYS_UPDATEOSCFG;
			break;

		case MID_BTN2:
			winkbd_bindbtn(2);
			xmiloscfg.bindbtn = 2;
			update |= SYS_UPDATEOSCFG;
			break;
#endif

		case MID_KEY:
			xmilcfg.KEY_MODE = 0;
			keystat_resetjoykey();
			update |= SYS_UPDATECFG;
			break;

		case MID_JOY1:
			xmilcfg.KEY_MODE = 1;
			keystat_resetjoykey();
			update |= SYS_UPDATECFG;
			break;

		case MID_JOY2:
			xmilcfg.KEY_MODE = 2;
			keystat_resetjoykey();
			update |= SYS_UPDATECFG;
			break;

#if 0
		case MID_MOUSEKEY:
			xmilcfg.KEY_MODE = 3;
			keystat_resetjoykey();
			update |= SYS_UPDATECFG;
			break;
#endif

		case MID_FMBOARD:
			xmilcfg.SOUND_SW ^= 1;
			update = SYS_UPDATECFG;
			break;

		case MID_SEEKSND:
			xmilcfg.MOTOR ^= 1;
			update |= SYS_UPDATECFG;
			break;

		case MID_JOYX:
			xmilcfg.BTN_MODE ^= 1;
			update |= SYS_UPDATECFG;
			break;

		case MID_RAPID:
			xmilcfg.BTN_RAPID ^= 1;
			update |= SYS_UPDATECFG;
			break;

		case MID_ABOUT:
			menudlg_create(DLGABOUT_WIDTH, DLGABOUT_HEIGHT,
													mstr_about, dlgabout_cmd);
			break;

#if defined(MENU_TASKMINIMIZE)
		case SID_MINIMIZE:
			taskmng_minimize();
			break;
#endif
		case MID_EXIT:
		case SID_CLOSE:
			taskmng_exit();
			break;
	}
	sysmng_update(update);
}


// ----

BRESULT sysmenu_create(void) {

	if (menubase_create() != SUCCESS) {
		goto smcre_err;
	}
	menuicon_regist(MICON_XMIL, &xmilicon);
	if (menusys_create(s_main, sys_cmd, MICON_XMIL, str_xmil)) {
		goto smcre_err;
	}
#if defined(SUPPORT_SOFTKBD)
	menusys_setstyle(MENUSTYLE_BOTTOM);
#endif
	return(SUCCESS);

smcre_err:
	return(FAILURE);
}

void sysmenu_destroy(void) {

	menubase_close();
	menubase_destroy();
	menusys_destroy();
}

BRESULT sysmenu_menuopen(UINT menutype, int x, int y) {

	UINT8	b;

	b = xmilcfg.ROM_TYPE;
	menusys_setcheck(MID_X1ROM, (b == 1));
	menusys_setcheck(MID_TURBO, (b == 2));
	menusys_setcheck(MID_TURBOZ, (b == 3));
	b = xmilcfg.DIP_SW & DIPSW_BOOTMEDIA;
	menusys_setcheck(MID_BOOT2D, (b == 0));
	menusys_setcheck(MID_BOOT2HD, (b != 0));
	b = xmilcfg.DIP_SW & DIPSW_RESOLUTE;
	menusys_setcheck(MID_HIGHRES, (b == 0));
	menusys_setcheck(MID_LOWRES, (b != 0));
	menusys_setcheck(MID_DISPSYNC, (xmilcfg.DISPSYNC & 1));
	menusys_setcheck(MID_RASTER, (xmilcfg.RASTER & 1));
	menusys_setcheck(MID_NOWAIT, (xmiloscfg.NOWAIT & 1));
	b = xmiloscfg.DRAW_SKIP;
	menusys_setcheck(MID_AUTOFPS, (b == 0));
	menusys_setcheck(MID_60FPS, (b == 1));
	menusys_setcheck(MID_30FPS, (b == 2));
	menusys_setcheck(MID_20FPS, (b == 3));
	menusys_setcheck(MID_15FPS, (b == 4));
#if defined(WIN32_PLATFORM_PSPC)
	b = xmiloscfg.bindcur;
	menusys_setcheck(MID_CURDEF, (b == 0));
	menusys_setcheck(MID_CUR1, (b == 1));
	menusys_setcheck(MID_CUR2, (b == 2));
	b = xmiloscfg.bindbtn;
	menusys_setcheck(MID_BTNDEF, (b == 0));
	menusys_setcheck(MID_BTN1, (b == 1));
	menusys_setcheck(MID_BTN2, (b == 2));
#endif
	b = xmilcfg.KEY_MODE;
	menusys_setcheck(MID_KEY, (b == 0));
	menusys_setcheck(MID_JOY1, (b == 1));
	menusys_setcheck(MID_JOY2, (b == 2));
	menusys_setcheck(MID_MOUSEKEY, (b == 3));
	menusys_setcheck(MID_FMBOARD, (xmilcfg.SOUND_SW & 1));
	menusys_setcheck(MID_SEEKSND, (xmilcfg.MOTOR & 1));
	menusys_setcheck(MID_JOYX, (xmilcfg.BTN_MODE & 1));
	menusys_setcheck(MID_RAPID, (xmilcfg.BTN_RAPID & 1));
	return(menusys_open(x, y));
}


RetroPC.NET-CVS <cvs@retropc.net>