flycast/core/hw/maple/maple_devs.h

107 lines
2.2 KiB
C
Executable File

#pragma once
#include "types.h"
enum MapleDeviceType
{
MDT_SegaController,
MDT_SegaVMU,
MDT_Microphone,
MDT_PurupuruPack,
MDT_Keyboard,
MDT_Mouse,
MDT_LightGun,
MDT_NaomiJamma,
MDT_None,
MDT_Count
};
enum NAOMI_KEYS
{
NAOMI_START_KEY = 1 << 15,
NAOMI_SERVICE_KEY = 1 << 14,
NAOMI_UP_KEY = 1 << 13,
NAOMI_DOWN_KEY = 1 << 12,
NAOMI_LEFT_KEY = 1 << 11,
NAOMI_RIGHT_KEY = 1 << 10,
NAOMI_BTN0_KEY = 1 << 9,
NAOMI_BTN1_KEY = 1 << 8,
NAOMI_BTN2_KEY = 1 << 7,
NAOMI_BTN3_KEY = 1 << 6,
NAOMI_BTN4_KEY = 1 << 5,
NAOMI_BTN5_KEY = 1 << 4,
NAOMI_BTN6_KEY = 1 << 3,
NAOMI_BTN7_KEY = 1 << 2,
NAOMI_BTN8_KEY = 1 << 16,
NAOMI_TEST_KEY = 1 << 1,
// Not an actual button
NAOMI_COIN_KEY = 1 << 0,
};
enum AWAVE_KEYS
{
AWAVE_START_KEY = 1 << 3,
AWAVE_BTN0_KEY = 1 << 2,
AWAVE_BTN1_KEY = 1 << 1,
AWAVE_BTN2_KEY = 1 << 0,
AWAVE_BTN3_KEY = 1 << 10,
AWAVE_BTN4_KEY = 1 << 9,
AWAVE_UP_KEY = 1 << 4,
AWAVE_DOWN_KEY = 1 << 5,
AWAVE_LEFT_KEY = 1 << 6,
AWAVE_RIGHT_KEY = 1 << 7,
AWAVE_SERVICE_KEY = 1 << 13,
AWAVE_TEST_KEY = 1 << 14,
// Not an actual button
AWAVE_COIN_KEY = 1 << 15,
AWAVE_TRIGGER_KEY = 1 << 12,
};
struct IMapleConfigMap;
struct maple_device
{
u8 maple_port; //raw maple port
u8 bus_port; //0 .. 5
u8 bus_id; //0 .. 3
wchar logical_port[3]; //A0, etc
IMapleConfigMap* config;
//fill in the info
void Setup(u32 prt);
virtual void OnSetup(){};
virtual ~maple_device();
u32 Dma(u32 Command,u32* buffer_in,u32 buffer_in_len,u32* buffer_out,u32& buffer_out_len);
virtual u32 RawDma(u32* buffer_in, u32 buffer_in_len, u32* buffer_out) = 0;
virtual bool maple_serialize(void **data, unsigned int *total_size){return true;};
virtual bool maple_unserialize(void **data, unsigned int *total_size){return true;};
virtual MapleDeviceType get_device_type() = 0;
virtual void get_lightgun_pos() {};
};
struct _NaomiState
{
u8 Cmd;
u8 Mode;
u8 Node;
};
maple_device* maple_Create(MapleDeviceType type);
#define SIZE_OF_MIC_DATA 480 //ALSO DEFINED IN SipEmulator.java
#ifndef TARGET_PANDORA
int get_mic_data(u8* buffer); //implemented in Android.cpp
#endif
void push_vmu_screen(int bus_id, int bus_port, u8* buffer);
#define MAPLE_PORTS 4