#include "compiler.h"
#include "libnds.h"
#include "iocore.h"
#include "nds9psg.h"
#include "makescrn.h"
enum
{
	JOY_LEFT_BIT	= 0x04,
	JOY_RIGHT_BIT	= 0x08,
	JOY_UP_BIT		= 0x01,
	JOY_DOWN_BIT	= 0x02,
	JOY_BTN1_BIT	= 0x40,
	JOY_BTN2_BIT	= 0x20,
	JOY_BTN3_BIT	= 0x80,
	JOY_BTN4_BIT	= 0x10
};
static UINT s_uLastButton;
void joymng_setflags()
{
	const REG16 wFlag = REG_KEYINPUT;
	REG8 cJoy = 0xff;
	if (!(wFlag & KEY_L))
	{
		const UINT uModify = s_uLastButton & (~wFlag);
		s_uLastButton = wFlag;
		if (uModify & KEY_RIGHT)
		{
			if (scrnpos.x < 80)
			{
				scrnpos.x++;
			}
		}
		if (uModify & KEY_LEFT)
		{
			if (scrnpos.x)
			{
				scrnpos.x--;
			}
		}
		if (uModify & KEY_UP)
		{
			if (scrnpos.y)
			{
				scrnpos.y--;
			}
		}
		if (uModify & KEY_DOWN)
		{
			if (scrnpos.y < 25)
			{
				scrnpos.y++;
			}
		}
		if (uModify & (KEY_RIGHT | KEY_LEFT | KEY_UP | KEY_DOWN))
		{
			crtc.e.scrnallflash = 1;
		}
		return;
	}
	s_uLastButton = 0;
	if (!(wFlag & KEY_A))
	{
		cJoy ^= JOY_BTN1_BIT;
	}
	if (!(wFlag & KEY_B))
	{
		cJoy ^= JOY_BTN2_BIT;
	}
	if (!(wFlag & KEY_RIGHT))
	{
		cJoy ^= JOY_RIGHT_BIT;
	}
	if (!(wFlag & KEY_LEFT))
	{
		cJoy ^= JOY_LEFT_BIT;
	}
	if (!(wFlag & KEY_UP))
	{
		cJoy ^= JOY_UP_BIT;
	}
	if (!(wFlag & KEY_DOWN))
	{
		cJoy ^= JOY_DOWN_BIT;
	}
	// こっちからセットしてやる
	nds9psg.reg.r.cIo1 = cJoy;
}
RetroPC.NET-CVS <cvs@retropc.net>