mirror of
https://github.com/RPCS3/rpcs3.git
synced 2025-07-13 10:18:40 +12:00
sceCtrl stub
This commit is contained in:
parent
3141cc9bc7
commit
912e3fc213
5 changed files with 94 additions and 3 deletions
85
rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp
Normal file
85
rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp
Normal file
|
@ -0,0 +1,85 @@
|
||||||
|
#include "stdafx.h"
|
||||||
|
#include "Emu/System.h"
|
||||||
|
#include "Emu/ARMv7/PSVFuncList.h"
|
||||||
|
|
||||||
|
extern psv_log_base sceCtrl;
|
||||||
|
|
||||||
|
struct SceCtrlData
|
||||||
|
{
|
||||||
|
u64 timeStamp;
|
||||||
|
u32 buttons;
|
||||||
|
u8 lx;
|
||||||
|
u8 ly;
|
||||||
|
u8 rx;
|
||||||
|
u8 ry;
|
||||||
|
u8 rsrv[16];
|
||||||
|
};
|
||||||
|
|
||||||
|
struct SceCtrlRapidFireRule
|
||||||
|
{
|
||||||
|
u32 uiMask;
|
||||||
|
u32 uiTrigger;
|
||||||
|
u32 uiTarget;
|
||||||
|
u32 uiDelay;
|
||||||
|
u32 uiMake;
|
||||||
|
u32 uiBreak;
|
||||||
|
};
|
||||||
|
|
||||||
|
s32 sceCtrlSetSamplingMode(u32 uiMode)
|
||||||
|
{
|
||||||
|
throw __FUNCTION__;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 sceCtrlGetSamplingMode(vm::psv::ptr<u32> puiMode)
|
||||||
|
{
|
||||||
|
throw __FUNCTION__;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 sceCtrlPeekBufferPositive(s32 port, vm::psv::ptr<SceCtrlData>pData, s32 nBufs)
|
||||||
|
{
|
||||||
|
throw __FUNCTION__;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 sceCtrlPeekBufferNegative(s32 port, vm::psv::ptr<SceCtrlData>pData, s32 nBufs)
|
||||||
|
{
|
||||||
|
throw __FUNCTION__;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 sceCtrlReadBufferPositive(s32 port, vm::psv::ptr<SceCtrlData>pData, s32 nBufs)
|
||||||
|
{
|
||||||
|
throw __FUNCTION__;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 sceCtrlReadBufferNegative(s32 port, vm::psv::ptr<SceCtrlData>pData, s32 nBufs)
|
||||||
|
{
|
||||||
|
throw __FUNCTION__;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 sceCtrlSetRapidFire(s32 port, s32 idx, vm::psv::ptr<const SceCtrlRapidFireRule> pRule)
|
||||||
|
{
|
||||||
|
throw __FUNCTION__;
|
||||||
|
}
|
||||||
|
|
||||||
|
s32 sceCtrlClearRapidFire(s32 port, s32 idx)
|
||||||
|
{
|
||||||
|
throw __FUNCTION__;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#define REG_FUNC(nid, name) reg_psv_func(nid, &sceCtrl, #name, name)
|
||||||
|
|
||||||
|
psv_log_base sceCtrl("SceCtrl", []()
|
||||||
|
{
|
||||||
|
sceCtrl.on_load = nullptr;
|
||||||
|
sceCtrl.on_unload = nullptr;
|
||||||
|
sceCtrl.on_stop = nullptr;
|
||||||
|
|
||||||
|
REG_FUNC(0xA497B150, sceCtrlSetSamplingMode);
|
||||||
|
REG_FUNC(0xEC752AAF, sceCtrlGetSamplingMode);
|
||||||
|
REG_FUNC(0xA9C3CED6, sceCtrlPeekBufferPositive);
|
||||||
|
REG_FUNC(0x104ED1A7, sceCtrlPeekBufferNegative);
|
||||||
|
REG_FUNC(0x67E7AB83, sceCtrlReadBufferPositive);
|
||||||
|
REG_FUNC(0x15F96FB0, sceCtrlReadBufferNegative);
|
||||||
|
REG_FUNC(0xE9CB69C8, sceCtrlSetRapidFire);
|
||||||
|
REG_FUNC(0xD8294C9C, sceCtrlClearRapidFire);
|
||||||
|
});
|
|
@ -50,6 +50,7 @@ extern psv_log_base sceLibstdcxx;
|
||||||
extern psv_log_base sceLibKernel;
|
extern psv_log_base sceLibKernel;
|
||||||
extern psv_log_base sceSysmodule;
|
extern psv_log_base sceSysmodule;
|
||||||
extern psv_log_base scePerf;
|
extern psv_log_base scePerf;
|
||||||
|
extern psv_log_base sceCtrl;
|
||||||
|
|
||||||
void initialize_psv_modules()
|
void initialize_psv_modules()
|
||||||
{
|
{
|
||||||
|
@ -62,6 +63,7 @@ void initialize_psv_modules()
|
||||||
g_psv_modules.push_back(&sceLibKernel);
|
g_psv_modules.push_back(&sceLibKernel);
|
||||||
g_psv_modules.push_back(&sceSysmodule);
|
g_psv_modules.push_back(&sceSysmodule);
|
||||||
g_psv_modules.push_back(&scePerf);
|
g_psv_modules.push_back(&scePerf);
|
||||||
|
g_psv_modules.push_back(&sceCtrl);
|
||||||
|
|
||||||
// setup special functions (without NIDs)
|
// setup special functions (without NIDs)
|
||||||
psv_func unimplemented;
|
psv_func unimplemented;
|
||||||
|
|
|
@ -215,7 +215,7 @@ namespace loader
|
||||||
const u32 addr = *++code;
|
const u32 addr = *++code;
|
||||||
vm::psv::write16(addr + 0, 0xf240 | (data & 0x800) >> 1 | (data & 0xf000) >> 12); // MOVW
|
vm::psv::write16(addr + 0, 0xf240 | (data & 0x800) >> 1 | (data & 0xf000) >> 12); // MOVW
|
||||||
vm::psv::write16(addr + 2, 0x0c00 | (data & 0x700) << 4 | (data & 0xff));
|
vm::psv::write16(addr + 2, 0x0c00 | (data & 0x700) << 4 | (data & 0xff));
|
||||||
LOG_NOTICE(LOADER, "sceRefs: movw written at 0x%x (data=0x%x)", addr, data);
|
//LOG_NOTICE(LOADER, "sceRefs: movw written at 0x%x (data=0x%x)", addr, data);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x00000030:
|
case 0x00000030:
|
||||||
|
@ -224,13 +224,13 @@ namespace loader
|
||||||
const u32 addr = *++code;
|
const u32 addr = *++code;
|
||||||
vm::psv::write16(addr + 0, 0xf2c0 | (data & 0x8000000) >> 17 | (data & 0xf0000000) >> 28); // MOVT
|
vm::psv::write16(addr + 0, 0xf2c0 | (data & 0x8000000) >> 17 | (data & 0xf0000000) >> 28); // MOVT
|
||||||
vm::psv::write16(addr + 2, 0x0c00 | (data & 0x7000000) >> 12 | (data & 0xff0000) >> 16);
|
vm::psv::write16(addr + 2, 0x0c00 | (data & 0x7000000) >> 12 | (data & 0xff0000) >> 16);
|
||||||
LOG_NOTICE(LOADER, "sceRefs: movt written at 0x%x (data=0x%x)", addr, data);
|
//LOG_NOTICE(LOADER, "sceRefs: movt written at 0x%x (data=0x%x)", addr, data);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
case 0x00000000:
|
case 0x00000000:
|
||||||
{
|
{
|
||||||
// probably, no operation
|
// probably, no operation
|
||||||
LOG_NOTICE(LOADER, "sceRefs: zero code");
|
//LOG_NOTICE(LOADER, "sceRefs: zero code");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
default:
|
default:
|
||||||
|
|
|
@ -58,6 +58,7 @@
|
||||||
<ClCompile Include="Emu\ARMv7\ARMv7Thread.cpp" />
|
<ClCompile Include="Emu\ARMv7\ARMv7Thread.cpp" />
|
||||||
<ClCompile Include="Emu\ARMv7\Modules\psv_event_flag.cpp" />
|
<ClCompile Include="Emu\ARMv7\Modules\psv_event_flag.cpp" />
|
||||||
<ClCompile Include="Emu\ARMv7\Modules\psv_sema.cpp" />
|
<ClCompile Include="Emu\ARMv7\Modules\psv_sema.cpp" />
|
||||||
|
<ClCompile Include="Emu\ARMv7\Modules\sceCtrl.cpp" />
|
||||||
<ClCompile Include="Emu\ARMv7\Modules\sceLibKernel.cpp" />
|
<ClCompile Include="Emu\ARMv7\Modules\sceLibKernel.cpp" />
|
||||||
<ClCompile Include="Emu\ARMv7\Modules\sceLibc.cpp" />
|
<ClCompile Include="Emu\ARMv7\Modules\sceLibc.cpp" />
|
||||||
<ClCompile Include="Emu\ARMv7\Modules\sceLibm.cpp" />
|
<ClCompile Include="Emu\ARMv7\Modules\sceLibm.cpp" />
|
||||||
|
|
|
@ -683,6 +683,9 @@
|
||||||
<ClCompile Include="Emu\ARMv7\Modules\scePerf.cpp">
|
<ClCompile Include="Emu\ARMv7\Modules\scePerf.cpp">
|
||||||
<Filter>Emu\CPU\ARMv7\Modules</Filter>
|
<Filter>Emu\CPU\ARMv7\Modules</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="Emu\ARMv7\Modules\sceCtrl.cpp">
|
||||||
|
<Filter>Emu\CPU\ARMv7\Modules</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="Crypto\aes.h">
|
<ClInclude Include="Crypto\aes.h">
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue