102 lines
1.9 KiB
C++
102 lines
1.9 KiB
C++
#include "types.h"
|
|
#include "maple_if.h"
|
|
#include "maple_helper.h"
|
|
#include "maple_devs.h"
|
|
#include "maple_cfg.h"
|
|
#include "cfg/cfg.h"
|
|
|
|
#define HAS_VMU
|
|
/*
|
|
bus_x=0{p0=1{config};p1=2{config};config;}
|
|
Plugins:
|
|
Input Source
|
|
EventMap -- 'Raw' interface, source_name[seid]:mode
|
|
KeyMap -- translated chars ( no re-mapping possible)
|
|
Output
|
|
Image
|
|
|
|
*/
|
|
/*
|
|
MapleConfig:
|
|
InputUpdate(&fmt);
|
|
ImageUpdate(data);
|
|
*/
|
|
void UpdateInputState(u32 port);
|
|
void UpdateVibration(u32 port, u32 value);
|
|
|
|
extern u16 kcode[4];
|
|
extern u32 vks[4];
|
|
extern s8 joyx[4],joyy[4];
|
|
extern u8 rt[4],lt[4];
|
|
|
|
u8 GetBtFromSgn(s8 val)
|
|
{
|
|
return val+128;
|
|
}
|
|
|
|
struct MapleConfigMap : IMapleConfigMap
|
|
{
|
|
maple_device* dev;
|
|
|
|
MapleConfigMap(maple_device* dev)
|
|
{
|
|
this->dev=dev;
|
|
}
|
|
|
|
void SetVibration(u32 value)
|
|
{
|
|
UpdateVibration(dev->bus_id, value);
|
|
}
|
|
|
|
void GetInput(PlainJoystickState* pjs)
|
|
{
|
|
UpdateInputState(dev->bus_id);
|
|
|
|
pjs->kcode=kcode[dev->bus_id] | 0xF901;
|
|
pjs->joy[PJAI_X1]=GetBtFromSgn(joyx[dev->bus_id]);
|
|
pjs->joy[PJAI_Y1]=GetBtFromSgn(joyy[dev->bus_id]);
|
|
pjs->trigger[PJTI_R]=rt[dev->bus_id];
|
|
pjs->trigger[PJTI_L]=lt[dev->bus_id];
|
|
}
|
|
void SetImage(void* img)
|
|
{
|
|
//?
|
|
}
|
|
};
|
|
|
|
void mcfg_Create(MapleDeviceType type,u32 bus,u32 port)
|
|
{
|
|
maple_device* dev=maple_Create(type);
|
|
dev->Setup(maple_GetAddress(bus,port));
|
|
dev->config = new MapleConfigMap(dev);
|
|
dev->OnSetup();
|
|
MapleDevices[bus][port]=dev;
|
|
}
|
|
|
|
void mcfg_CreateDevices()
|
|
{
|
|
int numberOfControl = cfgLoadInt("players", "nb", 1);
|
|
#if DC_PLATFORM == DC_PLATFORM_DREAMCAST
|
|
if (numberOfControl <= 0)
|
|
numberOfControl = 1;
|
|
if (numberOfControl > 4)
|
|
numberOfControl = 4;
|
|
|
|
for (int i = 0; i < numberOfControl; i++){
|
|
mcfg_Create(MDT_SegaController, i, 5);
|
|
}
|
|
|
|
mcfg_Create(MDT_SegaVMU,0,0);
|
|
mcfg_Create(MDT_SegaVMU,0,1);
|
|
#else
|
|
mcfg_Create(MDT_NaomiJamma, 0, 5);
|
|
#endif
|
|
}
|
|
|
|
void mcfg_DestroyDevices()
|
|
{
|
|
for (int i=0;i<=3;i++)
|
|
for (int j=0;j<=5;j++)
|
|
delete MapleDevices[i][j];
|
|
}
|