Merge pull request #155 from Parlane/codestyle_fixes
Fixes spacing for "for", "while", "switch" and "if"
This commit is contained in:
commit
ede46556d9
|
@ -35,8 +35,8 @@ struct ArraySizeImpl : public std::extent<T>
|
||||||
#define __GNUC_PREREQ(a, b) 0
|
#define __GNUC_PREREQ(a, b) 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#if (defined __GNUC__ && !__GNUC_PREREQ(4,9)) \
|
#if (defined __GNUC__ && !__GNUC_PREREQ(4,9)) && \
|
||||||
&& !defined __SSSE3__ && !defined _M_GENERIC
|
!defined __SSSE3__ && !defined _M_GENERIC
|
||||||
#include <emmintrin.h>
|
#include <emmintrin.h>
|
||||||
static __inline __m128i __attribute__((__always_inline__))
|
static __inline __m128i __attribute__((__always_inline__))
|
||||||
_mm_shuffle_epi8(__m128i a, __m128i mask)
|
_mm_shuffle_epi8(__m128i a, __m128i mask)
|
||||||
|
|
|
@ -78,9 +78,9 @@ void CFileSearch::FindFiles(const std::string& _searchString, const std::string&
|
||||||
{
|
{
|
||||||
std::string found(dp->d_name);
|
std::string found(dp->d_name);
|
||||||
|
|
||||||
if ((found != ".") && (found != "..")
|
if ((found != ".") && (found != "..") &&
|
||||||
&& (found.size() >= end_match.size())
|
(found.size() >= end_match.size()) &&
|
||||||
&& std::equal(end_match.rbegin(), end_match.rend(), found.rbegin()))
|
std::equal(end_match.rbegin(), end_match.rend(), found.rbegin()))
|
||||||
{
|
{
|
||||||
std::string full_name;
|
std::string full_name;
|
||||||
if (_strPath.c_str()[_strPath.size()-1] == DIR_SEP_CHR)
|
if (_strPath.c_str()[_strPath.size()-1] == DIR_SEP_CHR)
|
||||||
|
|
|
@ -373,8 +373,11 @@ bool IniFile::Load(const std::string& filename, bool keep_current_data)
|
||||||
// Lines starting with '$', '*' or '+' are kept verbatim.
|
// Lines starting with '$', '*' or '+' are kept verbatim.
|
||||||
// Kind of a hack, but the support for raw lines inside an
|
// Kind of a hack, but the support for raw lines inside an
|
||||||
// INI is a hack anyway.
|
// INI is a hack anyway.
|
||||||
if ((key == "" && value == "")
|
if ((key == "" && value == "") ||
|
||||||
|| (line.size() >= 1 && (line[0] == '$' || line[0] == '+' || line[0] == '*')))
|
(line.size() >= 1 &&
|
||||||
|
(line[0] == '$' ||
|
||||||
|
line[0] == '+' ||
|
||||||
|
line[0] == '*')))
|
||||||
current_section->lines.push_back(line);
|
current_section->lines.push_back(line);
|
||||||
else
|
else
|
||||||
current_section->Set(key, value);
|
current_section->Set(key, value);
|
||||||
|
|
|
@ -150,8 +150,8 @@ private:
|
||||||
{
|
{
|
||||||
char file_header[sizeof(Header)];
|
char file_header[sizeof(Header)];
|
||||||
|
|
||||||
return (Read(file_header, sizeof(Header))
|
return (Read(file_header, sizeof(Header)) &&
|
||||||
&& !memcmp((const char*)&m_header, file_header, sizeof(Header)));
|
!memcmp((const char*)&m_header, file_header, sizeof(Header)));
|
||||||
}
|
}
|
||||||
|
|
||||||
template <typename D>
|
template <typename D>
|
||||||
|
|
|
@ -173,8 +173,8 @@ bool TryParse(const std::string &str, u32 *const output)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
#if ULONG_MAX > UINT_MAX
|
#if ULONG_MAX > UINT_MAX
|
||||||
if (value >= 0x100000000ull
|
if (value >= 0x100000000ull &&
|
||||||
&& value <= 0xFFFFFFFF00000000ull)
|
value <= 0xFFFFFFFF00000000ull)
|
||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
@ -336,8 +336,8 @@ std::string UriDecode(const std::string & sSrc)
|
||||||
if (*pSrc == '%')
|
if (*pSrc == '%')
|
||||||
{
|
{
|
||||||
char dec1, dec2;
|
char dec1, dec2;
|
||||||
if (16 != (dec1 = HEX2DEC[*(pSrc + 1)])
|
if (16 != (dec1 = HEX2DEC[*(pSrc + 1)]) &&
|
||||||
&& 16 != (dec2 = HEX2DEC[*(pSrc + 2)]))
|
16 != (dec2 = HEX2DEC[*(pSrc + 2)]))
|
||||||
{
|
{
|
||||||
*pEnd++ = (dec1 << 4) + dec2;
|
*pEnd++ = (dec1 << 4) + dec2;
|
||||||
pSrc += 3;
|
pSrc += 3;
|
||||||
|
|
|
@ -287,12 +287,15 @@ void XEmitter::ABI_PopAllCalleeSavedRegsAndAdjustStack() {
|
||||||
void XEmitter::ABI_CallFunction(void *func) {
|
void XEmitter::ABI_CallFunction(void *func) {
|
||||||
ABI_AlignStack(0);
|
ABI_AlignStack(0);
|
||||||
u64 distance = u64(func) - (u64(code) + 5);
|
u64 distance = u64(func) - (u64(code) + 5);
|
||||||
if (distance >= 0x0000000080000000ULL
|
if (distance >= 0x0000000080000000ULL &&
|
||||||
&& distance < 0xFFFFFFFF80000000ULL) {
|
distance < 0xFFFFFFFF80000000ULL)
|
||||||
|
{
|
||||||
// Far call
|
// Far call
|
||||||
MOV(64, R(RAX), Imm64((u64)func));
|
MOV(64, R(RAX), Imm64((u64)func));
|
||||||
CALLptr(R(RAX));
|
CALLptr(R(RAX));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CALL(func);
|
CALL(func);
|
||||||
}
|
}
|
||||||
ABI_RestoreStack(0);
|
ABI_RestoreStack(0);
|
||||||
|
@ -302,12 +305,15 @@ void XEmitter::ABI_CallFunctionC16(void *func, u16 param1) {
|
||||||
ABI_AlignStack(0);
|
ABI_AlignStack(0);
|
||||||
MOV(32, R(ABI_PARAM1), Imm32((u32)param1));
|
MOV(32, R(ABI_PARAM1), Imm32((u32)param1));
|
||||||
u64 distance = u64(func) - (u64(code) + 5);
|
u64 distance = u64(func) - (u64(code) + 5);
|
||||||
if (distance >= 0x0000000080000000ULL
|
if (distance >= 0x0000000080000000ULL &&
|
||||||
&& distance < 0xFFFFFFFF80000000ULL) {
|
distance < 0xFFFFFFFF80000000ULL)
|
||||||
|
{
|
||||||
// Far call
|
// Far call
|
||||||
MOV(64, R(RAX), Imm64((u64)func));
|
MOV(64, R(RAX), Imm64((u64)func));
|
||||||
CALLptr(R(RAX));
|
CALLptr(R(RAX));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CALL(func);
|
CALL(func);
|
||||||
}
|
}
|
||||||
ABI_RestoreStack(0);
|
ABI_RestoreStack(0);
|
||||||
|
@ -318,12 +324,15 @@ void XEmitter::ABI_CallFunctionCC16(void *func, u32 param1, u16 param2) {
|
||||||
MOV(32, R(ABI_PARAM1), Imm32(param1));
|
MOV(32, R(ABI_PARAM1), Imm32(param1));
|
||||||
MOV(32, R(ABI_PARAM2), Imm32((u32)param2));
|
MOV(32, R(ABI_PARAM2), Imm32((u32)param2));
|
||||||
u64 distance = u64(func) - (u64(code) + 5);
|
u64 distance = u64(func) - (u64(code) + 5);
|
||||||
if (distance >= 0x0000000080000000ULL
|
if (distance >= 0x0000000080000000ULL &&
|
||||||
&& distance < 0xFFFFFFFF80000000ULL) {
|
distance < 0xFFFFFFFF80000000ULL)
|
||||||
|
{
|
||||||
// Far call
|
// Far call
|
||||||
MOV(64, R(RAX), Imm64((u64)func));
|
MOV(64, R(RAX), Imm64((u64)func));
|
||||||
CALLptr(R(RAX));
|
CALLptr(R(RAX));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CALL(func);
|
CALL(func);
|
||||||
}
|
}
|
||||||
ABI_RestoreStack(0);
|
ABI_RestoreStack(0);
|
||||||
|
@ -333,12 +342,15 @@ void XEmitter::ABI_CallFunctionC(void *func, u32 param1) {
|
||||||
ABI_AlignStack(0);
|
ABI_AlignStack(0);
|
||||||
MOV(32, R(ABI_PARAM1), Imm32(param1));
|
MOV(32, R(ABI_PARAM1), Imm32(param1));
|
||||||
u64 distance = u64(func) - (u64(code) + 5);
|
u64 distance = u64(func) - (u64(code) + 5);
|
||||||
if (distance >= 0x0000000080000000ULL
|
if (distance >= 0x0000000080000000ULL &&
|
||||||
&& distance < 0xFFFFFFFF80000000ULL) {
|
distance < 0xFFFFFFFF80000000ULL)
|
||||||
|
{
|
||||||
// Far call
|
// Far call
|
||||||
MOV(64, R(RAX), Imm64((u64)func));
|
MOV(64, R(RAX), Imm64((u64)func));
|
||||||
CALLptr(R(RAX));
|
CALLptr(R(RAX));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CALL(func);
|
CALL(func);
|
||||||
}
|
}
|
||||||
ABI_RestoreStack(0);
|
ABI_RestoreStack(0);
|
||||||
|
@ -349,12 +361,15 @@ void XEmitter::ABI_CallFunctionCC(void *func, u32 param1, u32 param2) {
|
||||||
MOV(32, R(ABI_PARAM1), Imm32(param1));
|
MOV(32, R(ABI_PARAM1), Imm32(param1));
|
||||||
MOV(32, R(ABI_PARAM2), Imm32(param2));
|
MOV(32, R(ABI_PARAM2), Imm32(param2));
|
||||||
u64 distance = u64(func) - (u64(code) + 5);
|
u64 distance = u64(func) - (u64(code) + 5);
|
||||||
if (distance >= 0x0000000080000000ULL
|
if (distance >= 0x0000000080000000ULL &&
|
||||||
&& distance < 0xFFFFFFFF80000000ULL) {
|
distance < 0xFFFFFFFF80000000ULL)
|
||||||
|
{
|
||||||
// Far call
|
// Far call
|
||||||
MOV(64, R(RAX), Imm64((u64)func));
|
MOV(64, R(RAX), Imm64((u64)func));
|
||||||
CALLptr(R(RAX));
|
CALLptr(R(RAX));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CALL(func);
|
CALL(func);
|
||||||
}
|
}
|
||||||
ABI_RestoreStack(0);
|
ABI_RestoreStack(0);
|
||||||
|
@ -365,12 +380,15 @@ void XEmitter::ABI_CallFunctionCP(void *func, u32 param1, void *param2) {
|
||||||
MOV(32, R(ABI_PARAM1), Imm32(param1));
|
MOV(32, R(ABI_PARAM1), Imm32(param1));
|
||||||
MOV(64, R(ABI_PARAM2), Imm64((u64)param2));
|
MOV(64, R(ABI_PARAM2), Imm64((u64)param2));
|
||||||
u64 distance = u64(func) - (u64(code) + 5);
|
u64 distance = u64(func) - (u64(code) + 5);
|
||||||
if (distance >= 0x0000000080000000ULL
|
if (distance >= 0x0000000080000000ULL &&
|
||||||
&& distance < 0xFFFFFFFF80000000ULL) {
|
distance < 0xFFFFFFFF80000000ULL)
|
||||||
|
{
|
||||||
// Far call
|
// Far call
|
||||||
MOV(64, R(RAX), Imm64((u64)func));
|
MOV(64, R(RAX), Imm64((u64)func));
|
||||||
CALLptr(R(RAX));
|
CALLptr(R(RAX));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CALL(func);
|
CALL(func);
|
||||||
}
|
}
|
||||||
ABI_RestoreStack(0);
|
ABI_RestoreStack(0);
|
||||||
|
@ -382,12 +400,15 @@ void XEmitter::ABI_CallFunctionCCC(void *func, u32 param1, u32 param2, u32 param
|
||||||
MOV(32, R(ABI_PARAM2), Imm32(param2));
|
MOV(32, R(ABI_PARAM2), Imm32(param2));
|
||||||
MOV(32, R(ABI_PARAM3), Imm32(param3));
|
MOV(32, R(ABI_PARAM3), Imm32(param3));
|
||||||
u64 distance = u64(func) - (u64(code) + 5);
|
u64 distance = u64(func) - (u64(code) + 5);
|
||||||
if (distance >= 0x0000000080000000ULL
|
if (distance >= 0x0000000080000000ULL &&
|
||||||
&& distance < 0xFFFFFFFF80000000ULL) {
|
distance < 0xFFFFFFFF80000000ULL)
|
||||||
|
{
|
||||||
// Far call
|
// Far call
|
||||||
MOV(64, R(RAX), Imm64((u64)func));
|
MOV(64, R(RAX), Imm64((u64)func));
|
||||||
CALLptr(R(RAX));
|
CALLptr(R(RAX));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CALL(func);
|
CALL(func);
|
||||||
}
|
}
|
||||||
ABI_RestoreStack(0);
|
ABI_RestoreStack(0);
|
||||||
|
@ -399,12 +420,15 @@ void XEmitter::ABI_CallFunctionCCP(void *func, u32 param1, u32 param2, void *par
|
||||||
MOV(32, R(ABI_PARAM2), Imm32(param2));
|
MOV(32, R(ABI_PARAM2), Imm32(param2));
|
||||||
MOV(64, R(ABI_PARAM3), Imm64((u64)param3));
|
MOV(64, R(ABI_PARAM3), Imm64((u64)param3));
|
||||||
u64 distance = u64(func) - (u64(code) + 5);
|
u64 distance = u64(func) - (u64(code) + 5);
|
||||||
if (distance >= 0x0000000080000000ULL
|
if (distance >= 0x0000000080000000ULL &&
|
||||||
&& distance < 0xFFFFFFFF80000000ULL) {
|
distance < 0xFFFFFFFF80000000ULL)
|
||||||
|
{
|
||||||
// Far call
|
// Far call
|
||||||
MOV(64, R(RAX), Imm64((u64)func));
|
MOV(64, R(RAX), Imm64((u64)func));
|
||||||
CALLptr(R(RAX));
|
CALLptr(R(RAX));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CALL(func);
|
CALL(func);
|
||||||
}
|
}
|
||||||
ABI_RestoreStack(0);
|
ABI_RestoreStack(0);
|
||||||
|
@ -417,12 +441,15 @@ void XEmitter::ABI_CallFunctionCCCP(void *func, u32 param1, u32 param2, u32 para
|
||||||
MOV(32, R(ABI_PARAM3), Imm32(param3));
|
MOV(32, R(ABI_PARAM3), Imm32(param3));
|
||||||
MOV(64, R(ABI_PARAM4), Imm64((u64)param4));
|
MOV(64, R(ABI_PARAM4), Imm64((u64)param4));
|
||||||
u64 distance = u64(func) - (u64(code) + 5);
|
u64 distance = u64(func) - (u64(code) + 5);
|
||||||
if (distance >= 0x0000000080000000ULL
|
if (distance >= 0x0000000080000000ULL &&
|
||||||
&& distance < 0xFFFFFFFF80000000ULL) {
|
distance < 0xFFFFFFFF80000000ULL)
|
||||||
|
{
|
||||||
// Far call
|
// Far call
|
||||||
MOV(64, R(RAX), Imm64((u64)func));
|
MOV(64, R(RAX), Imm64((u64)func));
|
||||||
CALLptr(R(RAX));
|
CALLptr(R(RAX));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CALL(func);
|
CALL(func);
|
||||||
}
|
}
|
||||||
ABI_RestoreStack(0);
|
ABI_RestoreStack(0);
|
||||||
|
@ -433,12 +460,15 @@ void XEmitter::ABI_CallFunctionPC(void *func, void *param1, u32 param2) {
|
||||||
MOV(64, R(ABI_PARAM1), Imm64((u64)param1));
|
MOV(64, R(ABI_PARAM1), Imm64((u64)param1));
|
||||||
MOV(32, R(ABI_PARAM2), Imm32(param2));
|
MOV(32, R(ABI_PARAM2), Imm32(param2));
|
||||||
u64 distance = u64(func) - (u64(code) + 5);
|
u64 distance = u64(func) - (u64(code) + 5);
|
||||||
if (distance >= 0x0000000080000000ULL
|
if (distance >= 0x0000000080000000ULL &&
|
||||||
&& distance < 0xFFFFFFFF80000000ULL) {
|
distance < 0xFFFFFFFF80000000ULL)
|
||||||
|
{
|
||||||
// Far call
|
// Far call
|
||||||
MOV(64, R(RAX), Imm64((u64)func));
|
MOV(64, R(RAX), Imm64((u64)func));
|
||||||
CALLptr(R(RAX));
|
CALLptr(R(RAX));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CALL(func);
|
CALL(func);
|
||||||
}
|
}
|
||||||
ABI_RestoreStack(0);
|
ABI_RestoreStack(0);
|
||||||
|
@ -450,12 +480,15 @@ void XEmitter::ABI_CallFunctionPPC(void *func, void *param1, void *param2, u32 p
|
||||||
MOV(64, R(ABI_PARAM2), Imm64((u64)param2));
|
MOV(64, R(ABI_PARAM2), Imm64((u64)param2));
|
||||||
MOV(32, R(ABI_PARAM3), Imm32(param3));
|
MOV(32, R(ABI_PARAM3), Imm32(param3));
|
||||||
u64 distance = u64(func) - (u64(code) + 5);
|
u64 distance = u64(func) - (u64(code) + 5);
|
||||||
if (distance >= 0x0000000080000000ULL
|
if (distance >= 0x0000000080000000ULL &&
|
||||||
&& distance < 0xFFFFFFFF80000000ULL) {
|
distance < 0xFFFFFFFF80000000ULL)
|
||||||
|
{
|
||||||
// Far call
|
// Far call
|
||||||
MOV(64, R(RAX), Imm64((u64)func));
|
MOV(64, R(RAX), Imm64((u64)func));
|
||||||
CALLptr(R(RAX));
|
CALLptr(R(RAX));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CALL(func);
|
CALL(func);
|
||||||
}
|
}
|
||||||
ABI_RestoreStack(0);
|
ABI_RestoreStack(0);
|
||||||
|
@ -467,12 +500,15 @@ void XEmitter::ABI_CallFunctionR(void *func, X64Reg reg1) {
|
||||||
if (reg1 != ABI_PARAM1)
|
if (reg1 != ABI_PARAM1)
|
||||||
MOV(32, R(ABI_PARAM1), R(reg1));
|
MOV(32, R(ABI_PARAM1), R(reg1));
|
||||||
u64 distance = u64(func) - (u64(code) + 5);
|
u64 distance = u64(func) - (u64(code) + 5);
|
||||||
if (distance >= 0x0000000080000000ULL
|
if (distance >= 0x0000000080000000ULL &&
|
||||||
&& distance < 0xFFFFFFFF80000000ULL) {
|
distance < 0xFFFFFFFF80000000ULL)
|
||||||
|
{
|
||||||
// Far call
|
// Far call
|
||||||
MOV(64, R(RAX), Imm64((u64)func));
|
MOV(64, R(RAX), Imm64((u64)func));
|
||||||
CALLptr(R(RAX));
|
CALLptr(R(RAX));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CALL(func);
|
CALL(func);
|
||||||
}
|
}
|
||||||
ABI_RestoreStack(0);
|
ABI_RestoreStack(0);
|
||||||
|
@ -481,24 +517,30 @@ void XEmitter::ABI_CallFunctionR(void *func, X64Reg reg1) {
|
||||||
// Pass two registers as parameters.
|
// Pass two registers as parameters.
|
||||||
void XEmitter::ABI_CallFunctionRR(void *func, X64Reg reg1, X64Reg reg2, bool noProlog) {
|
void XEmitter::ABI_CallFunctionRR(void *func, X64Reg reg1, X64Reg reg2, bool noProlog) {
|
||||||
ABI_AlignStack(0, noProlog);
|
ABI_AlignStack(0, noProlog);
|
||||||
if (reg2 != ABI_PARAM1) {
|
if (reg2 != ABI_PARAM1)
|
||||||
|
{
|
||||||
if (reg1 != ABI_PARAM1)
|
if (reg1 != ABI_PARAM1)
|
||||||
MOV(64, R(ABI_PARAM1), R(reg1));
|
MOV(64, R(ABI_PARAM1), R(reg1));
|
||||||
if (reg2 != ABI_PARAM2)
|
if (reg2 != ABI_PARAM2)
|
||||||
MOV(64, R(ABI_PARAM2), R(reg2));
|
MOV(64, R(ABI_PARAM2), R(reg2));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
if (reg2 != ABI_PARAM2)
|
if (reg2 != ABI_PARAM2)
|
||||||
MOV(64, R(ABI_PARAM2), R(reg2));
|
MOV(64, R(ABI_PARAM2), R(reg2));
|
||||||
if (reg1 != ABI_PARAM1)
|
if (reg1 != ABI_PARAM1)
|
||||||
MOV(64, R(ABI_PARAM1), R(reg1));
|
MOV(64, R(ABI_PARAM1), R(reg1));
|
||||||
}
|
}
|
||||||
u64 distance = u64(func) - (u64(code) + 5);
|
u64 distance = u64(func) - (u64(code) + 5);
|
||||||
if (distance >= 0x0000000080000000ULL
|
if (distance >= 0x0000000080000000ULL &&
|
||||||
&& distance < 0xFFFFFFFF80000000ULL) {
|
distance < 0xFFFFFFFF80000000ULL)
|
||||||
|
{
|
||||||
// Far call
|
// Far call
|
||||||
MOV(64, R(RAX), Imm64((u64)func));
|
MOV(64, R(RAX), Imm64((u64)func));
|
||||||
CALLptr(R(RAX));
|
CALLptr(R(RAX));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CALL(func);
|
CALL(func);
|
||||||
}
|
}
|
||||||
ABI_RestoreStack(0, noProlog);
|
ABI_RestoreStack(0, noProlog);
|
||||||
|
@ -511,12 +553,15 @@ void XEmitter::ABI_CallFunctionAC(void *func, const Gen::OpArg &arg1, u32 param2
|
||||||
MOV(32, R(ABI_PARAM1), arg1);
|
MOV(32, R(ABI_PARAM1), arg1);
|
||||||
MOV(32, R(ABI_PARAM2), Imm32(param2));
|
MOV(32, R(ABI_PARAM2), Imm32(param2));
|
||||||
u64 distance = u64(func) - (u64(code) + 5);
|
u64 distance = u64(func) - (u64(code) + 5);
|
||||||
if (distance >= 0x0000000080000000ULL
|
if (distance >= 0x0000000080000000ULL &&
|
||||||
&& distance < 0xFFFFFFFF80000000ULL) {
|
distance < 0xFFFFFFFF80000000ULL)
|
||||||
|
{
|
||||||
// Far call
|
// Far call
|
||||||
MOV(64, R(RAX), Imm64((u64)func));
|
MOV(64, R(RAX), Imm64((u64)func));
|
||||||
CALLptr(R(RAX));
|
CALLptr(R(RAX));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CALL(func);
|
CALL(func);
|
||||||
}
|
}
|
||||||
ABI_RestoreStack(0);
|
ABI_RestoreStack(0);
|
||||||
|
@ -528,12 +573,15 @@ void XEmitter::ABI_CallFunctionA(void *func, const Gen::OpArg &arg1)
|
||||||
if (!arg1.IsSimpleReg(ABI_PARAM1))
|
if (!arg1.IsSimpleReg(ABI_PARAM1))
|
||||||
MOV(32, R(ABI_PARAM1), arg1);
|
MOV(32, R(ABI_PARAM1), arg1);
|
||||||
u64 distance = u64(func) - (u64(code) + 5);
|
u64 distance = u64(func) - (u64(code) + 5);
|
||||||
if (distance >= 0x0000000080000000ULL
|
if (distance >= 0x0000000080000000ULL &&
|
||||||
&& distance < 0xFFFFFFFF80000000ULL) {
|
distance < 0xFFFFFFFF80000000ULL)
|
||||||
|
{
|
||||||
// Far call
|
// Far call
|
||||||
MOV(64, R(RAX), Imm64((u64)func));
|
MOV(64, R(RAX), Imm64((u64)func));
|
||||||
CALLptr(R(RAX));
|
CALLptr(R(RAX));
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
CALL(func);
|
CALL(func);
|
||||||
}
|
}
|
||||||
ABI_RestoreStack(0);
|
ABI_RestoreStack(0);
|
||||||
|
|
|
@ -208,8 +208,9 @@ void OpArg::WriteRest(XEmitter *emit, int extraBytes, X64Reg _operandReg,
|
||||||
#if _M_X86_64
|
#if _M_X86_64
|
||||||
u64 ripAddr = (u64)emit->GetCodePtr() + 4 + extraBytes;
|
u64 ripAddr = (u64)emit->GetCodePtr() + 4 + extraBytes;
|
||||||
s64 distance = (s64)offset - (s64)ripAddr;
|
s64 distance = (s64)offset - (s64)ripAddr;
|
||||||
_assert_msg_(DYNA_REC, (distance < 0x80000000LL
|
_assert_msg_(DYNA_REC,
|
||||||
&& distance >= -0x80000000LL) ||
|
(distance < 0x80000000LL &&
|
||||||
|
distance >= -0x80000000LL) ||
|
||||||
!warn_64bit_offset,
|
!warn_64bit_offset,
|
||||||
"WriteRest: op out of range (0x%" PRIx64 " uses 0x%" PRIx64 ")",
|
"WriteRest: op out of range (0x%" PRIx64 " uses 0x%" PRIx64 ")",
|
||||||
ripAddr, offset);
|
ripAddr, offset);
|
||||||
|
@ -358,8 +359,8 @@ void XEmitter::JMP(const u8 *addr, bool force5Bytes)
|
||||||
{
|
{
|
||||||
s64 distance = (s64)(fn - ((u64)code + 5));
|
s64 distance = (s64)(fn - ((u64)code + 5));
|
||||||
|
|
||||||
_assert_msg_(DYNA_REC, distance >= -0x80000000LL
|
_assert_msg_(DYNA_REC,
|
||||||
&& distance < 0x80000000LL,
|
distance >= -0x80000000LL && distance < 0x80000000LL,
|
||||||
"Jump target too far away, needs indirect register");
|
"Jump target too far away, needs indirect register");
|
||||||
Write8(0xE9);
|
Write8(0xE9);
|
||||||
Write32((u32)(s32)distance);
|
Write32((u32)(s32)distance);
|
||||||
|
@ -396,8 +397,9 @@ void XEmitter::CALLptr(OpArg arg)
|
||||||
void XEmitter::CALL(const void *fnptr)
|
void XEmitter::CALL(const void *fnptr)
|
||||||
{
|
{
|
||||||
u64 distance = u64(fnptr) - (u64(code) + 5);
|
u64 distance = u64(fnptr) - (u64(code) + 5);
|
||||||
_assert_msg_(DYNA_REC, distance < 0x0000000080000000ULL
|
_assert_msg_(DYNA_REC,
|
||||||
|| distance >= 0xFFFFFFFF80000000ULL,
|
distance < 0x0000000080000000ULL ||
|
||||||
|
distance >= 0xFFFFFFFF80000000ULL,
|
||||||
"CALL out of range (%p calls %p)", code, fnptr);
|
"CALL out of range (%p calls %p)", code, fnptr);
|
||||||
Write8(0xE8);
|
Write8(0xE8);
|
||||||
Write32(u32(distance));
|
Write32(u32(distance));
|
||||||
|
@ -456,8 +458,8 @@ void XEmitter::J_CC(CCFlags conditionCode, const u8 * addr, bool force5Bytes)
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
s64 distance = (s64)(fn - ((u64)code + 6));
|
s64 distance = (s64)(fn - ((u64)code + 6));
|
||||||
_assert_msg_(DYNA_REC, distance >= -0x80000000LL
|
_assert_msg_(DYNA_REC,
|
||||||
&& distance < 0x80000000LL,
|
distance >= -0x80000000LL && distance < 0x80000000LL,
|
||||||
"Jump target too far away, needs indirect register");
|
"Jump target too far away, needs indirect register");
|
||||||
Write8(0x0F);
|
Write8(0x0F);
|
||||||
Write8(0x80 + conditionCode);
|
Write8(0x80 + conditionCode);
|
||||||
|
|
|
@ -115,8 +115,8 @@ bool CompareValues(const u32 val1, const u32 val2, const int type);
|
||||||
void LoadCodes(const IniFile& globalIni, const IniFile& localIni, bool forceLoad)
|
void LoadCodes(const IniFile& globalIni, const IniFile& localIni, bool forceLoad)
|
||||||
{
|
{
|
||||||
// Parses the Action Replay section of a game ini file.
|
// Parses the Action Replay section of a game ini file.
|
||||||
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats
|
if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bEnableCheats &&
|
||||||
&& !forceLoad)
|
!forceLoad)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
arCodes.clear();
|
arCodes.clear();
|
||||||
|
|
|
@ -121,11 +121,13 @@ bool DSPAssembler::Assemble(const char *text, std::vector<u16> &code, std::vecto
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
code.resize(m_totalSize);
|
code.resize(m_totalSize);
|
||||||
for (int i = 0; i < m_totalSize; i++) {
|
for (int i = 0; i < m_totalSize; i++)
|
||||||
|
{
|
||||||
code[i] = *(u16 *)(gdg_buffer + i * 2);
|
code[i] = *(u16 *)(gdg_buffer + i * 2);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(gdg_buffer) {
|
if (gdg_buffer)
|
||||||
|
{
|
||||||
free(gdg_buffer);
|
free(gdg_buffer);
|
||||||
gdg_buffer = nullptr;
|
gdg_buffer = nullptr;
|
||||||
}
|
}
|
||||||
|
|
|
@ -128,14 +128,14 @@ void PPCDebugInterface::ClearAllMemChecks()
|
||||||
|
|
||||||
bool PPCDebugInterface::IsMemCheck(unsigned int address)
|
bool PPCDebugInterface::IsMemCheck(unsigned int address)
|
||||||
{
|
{
|
||||||
return (Memory::AreMemoryBreakpointsActivated()
|
return (Memory::AreMemoryBreakpointsActivated() &&
|
||||||
&& PowerPC::memchecks.GetMemCheck(address));
|
PowerPC::memchecks.GetMemCheck(address));
|
||||||
}
|
}
|
||||||
|
|
||||||
void PPCDebugInterface::ToggleMemCheck(unsigned int address)
|
void PPCDebugInterface::ToggleMemCheck(unsigned int address)
|
||||||
{
|
{
|
||||||
if (Memory::AreMemoryBreakpointsActivated()
|
if (Memory::AreMemoryBreakpointsActivated() &&
|
||||||
&& !PowerPC::memchecks.GetMemCheck(address))
|
!PowerPC::memchecks.GetMemCheck(address))
|
||||||
{
|
{
|
||||||
// Add Memory Check
|
// Add Memory Check
|
||||||
TMemCheck MemCheck;
|
TMemCheck MemCheck;
|
||||||
|
|
|
@ -32,9 +32,12 @@ void HLE_OSPanic()
|
||||||
void HLE_GeneralDebugPrint()
|
void HLE_GeneralDebugPrint()
|
||||||
{
|
{
|
||||||
std::string ReportMessage;
|
std::string ReportMessage;
|
||||||
if(*(u32*)Memory::GetPointer(GPR(3)) > 0x80000000){
|
if (*(u32*)Memory::GetPointer(GPR(3)) > 0x80000000)
|
||||||
|
{
|
||||||
GetStringVA(ReportMessage, 4);
|
GetStringVA(ReportMessage, 4);
|
||||||
}else{
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
GetStringVA(ReportMessage);
|
GetStringVA(ReportMessage);
|
||||||
}
|
}
|
||||||
NPC = LR;
|
NPC = LR;
|
||||||
|
@ -50,7 +53,8 @@ void HLE_VPrintf()
|
||||||
u32 offset = Memory::Read_U32(r4+8);
|
u32 offset = Memory::Read_U32(r4+8);
|
||||||
u32 check = Memory::Read_U32(r4);
|
u32 check = Memory::Read_U32(r4);
|
||||||
//NOTICE_LOG(OSREPORT, "Offset: %08X, Check %08X", offset, check);
|
//NOTICE_LOG(OSREPORT, "Offset: %08X, Check %08X", offset, check);
|
||||||
for(int i = 4; i<= 10; i++){
|
for (int i = 4; i<= 10; i++)
|
||||||
|
{
|
||||||
GPR(i) = Memory::Read_U32(offset+(i-(check == 0x01000000? 3 : 2))*4);
|
GPR(i) = Memory::Read_U32(offset+(i-(check == 0x01000000? 3 : 2))*4);
|
||||||
//NOTICE_LOG(OSREPORT, "r%d: %08X",i, GPR(i));
|
//NOTICE_LOG(OSREPORT, "r%d: %08X",i, GPR(i));
|
||||||
}
|
}
|
||||||
|
|
|
@ -535,8 +535,8 @@ void GenerateDIInterrupt(DI_InterruptType _DVDInterrupt)
|
||||||
void ExecuteCommand(UDICR& _DICR)
|
void ExecuteCommand(UDICR& _DICR)
|
||||||
{
|
{
|
||||||
// _dbg_assert_(DVDINTERFACE, _DICR.RW == 0); // only DVD to Memory
|
// _dbg_assert_(DVDINTERFACE, _DICR.RW == 0); // only DVD to Memory
|
||||||
int GCAM = ((SConfig::GetInstance().m_SIDevice[0] == SIDEVICE_AM_BASEBOARD)
|
int GCAM = ((SConfig::GetInstance().m_SIDevice[0] == SIDEVICE_AM_BASEBOARD) &&
|
||||||
&& (SConfig::GetInstance().m_EXIDevice[2] == EXIDEVICE_AM_BASEBOARD))
|
(SConfig::GetInstance().m_EXIDevice[2] == EXIDEVICE_AM_BASEBOARD))
|
||||||
? 1 : 0;
|
? 1 : 0;
|
||||||
|
|
||||||
if (GCAM)
|
if (GCAM)
|
||||||
|
@ -929,15 +929,15 @@ void ExecuteCommand(UDICR& _DICR)
|
||||||
// Just for fun
|
// Just for fun
|
||||||
case 0xFF:
|
case 0xFF:
|
||||||
{
|
{
|
||||||
if (m_DICMDBUF[0].Hex == 0xFF014D41
|
if (m_DICMDBUF[0].Hex == 0xFF014D41 &&
|
||||||
&& m_DICMDBUF[1].Hex == 0x54534849
|
m_DICMDBUF[1].Hex == 0x54534849 &&
|
||||||
&& m_DICMDBUF[2].Hex == 0x54410200)
|
m_DICMDBUF[2].Hex == 0x54410200)
|
||||||
{
|
{
|
||||||
INFO_LOG(DVDINTERFACE, "Unlock test 1 passed");
|
INFO_LOG(DVDINTERFACE, "Unlock test 1 passed");
|
||||||
}
|
}
|
||||||
else if (m_DICMDBUF[0].Hex == 0xFF004456
|
else if (m_DICMDBUF[0].Hex == 0xFF004456 &&
|
||||||
&& m_DICMDBUF[1].Hex == 0x442D4741
|
m_DICMDBUF[1].Hex == 0x442D4741 &&
|
||||||
&& m_DICMDBUF[2].Hex == 0x4D450300)
|
m_DICMDBUF[2].Hex == 0x4D450300)
|
||||||
{
|
{
|
||||||
INFO_LOG(DVDINTERFACE, "Unlock test 2 passed");
|
INFO_LOG(DVDINTERFACE, "Unlock test 2 passed");
|
||||||
}
|
}
|
||||||
|
|
|
@ -523,7 +523,9 @@ static void BeginField(FieldType field)
|
||||||
|
|
||||||
// TODO: PAL Simpsons Hit & Run now has a green line at the bottom when Real XFB is used.
|
// TODO: PAL Simpsons Hit & Run now has a green line at the bottom when Real XFB is used.
|
||||||
// Might be a bug later on in our code, or a bug in the actual game.
|
// Might be a bug later on in our code, or a bug in the actual game.
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
xfbAddr = GetXFBAddressBottom();
|
xfbAddr = GetXFBAddressBottom();
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -42,7 +42,8 @@ static s32 av_clip(s32 a, s32 amin, s32 amax)
|
||||||
|
|
||||||
static s16 adpcm_yamaha_expand_nibble(ADPCMState& s, u8 nibble)
|
static s16 adpcm_yamaha_expand_nibble(ADPCMState& s, u8 nibble)
|
||||||
{
|
{
|
||||||
if(!s.step) {
|
if (!s.step)
|
||||||
|
{
|
||||||
s.predictor = 0;
|
s.predictor = 0;
|
||||||
s.step = 0;
|
s.step = 0;
|
||||||
}
|
}
|
||||||
|
|
|
@ -179,9 +179,9 @@ void Wiimote::InterruptChannel(const u16 channel, const void* const _data, const
|
||||||
leds_rpt.leds = 0xf;
|
leds_rpt.leds = 0xf;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (rpt[1] == WM_WRITE_SPEAKER_DATA
|
else if (rpt[1] == WM_WRITE_SPEAKER_DATA &&
|
||||||
&& (!SConfig::GetInstance().m_WiimoteEnableSpeaker
|
(!SConfig::GetInstance().m_WiimoteEnableSpeaker ||
|
||||||
|| (!wm->m_status.speaker || wm->m_speaker_mute)))
|
(!wm->m_status.speaker || wm->m_speaker_mute)))
|
||||||
{
|
{
|
||||||
// Translate speaker data reports into rumble reports.
|
// Translate speaker data reports into rumble reports.
|
||||||
rpt[1] = WM_RUMBLE;
|
rpt[1] = WM_RUMBLE;
|
||||||
|
@ -200,10 +200,14 @@ bool Wiimote::Read()
|
||||||
|
|
||||||
if (result > 0 && m_channel > 0)
|
if (result > 0 && m_channel > 0)
|
||||||
{
|
{
|
||||||
if (Core::g_CoreStartupParameter.iBBDumpPort > 0 && index == WIIMOTE_BALANCE_BOARD)
|
if (Core::g_CoreStartupParameter.iBBDumpPort > 0 &&
|
||||||
|
index == WIIMOTE_BALANCE_BOARD)
|
||||||
{
|
{
|
||||||
static sf::SocketUDP Socket;
|
static sf::SocketUDP Socket;
|
||||||
Socket.Send((char*)rpt.data(), rpt.size(), sf::IPAddress::LocalHost, Core::g_CoreStartupParameter.iBBDumpPort);
|
Socket.Send((char*)rpt.data(),
|
||||||
|
rpt.size(),
|
||||||
|
sf::IPAddress::LocalHost,
|
||||||
|
Core::g_CoreStartupParameter.iBBDumpPort);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Add it to queue
|
// Add it to queue
|
||||||
|
@ -321,10 +325,10 @@ bool Wiimote::PrepareOnThread()
|
||||||
u8 static const req_status_report[] = {WM_SET_REPORT | WM_BT_OUTPUT, WM_REQUEST_STATUS, 0};
|
u8 static const req_status_report[] = {WM_SET_REPORT | WM_BT_OUTPUT, WM_REQUEST_STATUS, 0};
|
||||||
// TODO: check for sane response?
|
// TODO: check for sane response?
|
||||||
|
|
||||||
return (IOWrite(mode_report, sizeof(mode_report))
|
return (IOWrite(mode_report, sizeof(mode_report)) &&
|
||||||
&& IOWrite(led_report, sizeof(led_report))
|
IOWrite(led_report, sizeof(led_report)) &&
|
||||||
&& (SLEEP(200), IOWrite(rumble_report, sizeof(rumble_report)))
|
(SLEEP(200), IOWrite(rumble_report, sizeof(rumble_report))) &&
|
||||||
&& IOWrite(req_status_report, sizeof(req_status_report)));
|
IOWrite(req_status_report, sizeof(req_status_report)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void Wiimote::EmuStart()
|
void Wiimote::EmuStart()
|
||||||
|
@ -671,8 +675,7 @@ void ChangeWiimoteSource(unsigned int index, int source)
|
||||||
|
|
||||||
static bool TryToConnectWiimoteN(Wiimote* wm, unsigned int i)
|
static bool TryToConnectWiimoteN(Wiimote* wm, unsigned int i)
|
||||||
{
|
{
|
||||||
if (WIIMOTE_SRC_REAL & g_wiimote_sources[i]
|
if (WIIMOTE_SRC_REAL & g_wiimote_sources[i] && !g_wiimotes[i])
|
||||||
&& !g_wiimotes[i])
|
|
||||||
{
|
{
|
||||||
if (wm->Connect())
|
if (wm->Connect())
|
||||||
{
|
{
|
||||||
|
|
|
@ -294,13 +294,12 @@ u32 CWII_IPC_HLE_Device_di::ExecuteCommand(u32 _BufferIn, u32 _BufferInSize, u32
|
||||||
// * 0x460a0000 - 0x460a0008
|
// * 0x460a0000 - 0x460a0008
|
||||||
// * 0x7ed40000 - 0x7ed40008
|
// * 0x7ed40000 - 0x7ed40008
|
||||||
u32 DVDAddress32 = Memory::Read_U32(_BufferIn + 0x08);
|
u32 DVDAddress32 = Memory::Read_U32(_BufferIn + 0x08);
|
||||||
if (!( (DVDAddress32 > 0x00000000 && DVDAddress32 < 0x00014000)
|
if (!((DVDAddress32 > 0x00000000 && DVDAddress32 < 0x00014000) ||
|
||||||
|| (((DVDAddress32 + Size) > 0x00000000) && (DVDAddress32 + Size) < 0x00014000)
|
(((DVDAddress32 + Size) > 0x00000000) && (DVDAddress32 + Size) < 0x00014000) ||
|
||||||
|| (DVDAddress32 > 0x460a0000 && DVDAddress32 < 0x460a0008)
|
(DVDAddress32 > 0x460a0000 && DVDAddress32 < 0x460a0008) ||
|
||||||
|| (((DVDAddress32 + Size) > 0x460a0000) && (DVDAddress32 + Size) < 0x460a0008)
|
(((DVDAddress32 + Size) > 0x460a0000) && (DVDAddress32 + Size) < 0x460a0008) ||
|
||||||
|| (DVDAddress32 > 0x7ed40000 && DVDAddress32 < 0x7ed40008)
|
(DVDAddress32 > 0x7ed40000 && DVDAddress32 < 0x7ed40008) ||
|
||||||
|| (((DVDAddress32 + Size) > 0x7ed40000) && (DVDAddress32 + Size) < 0x7ed40008)
|
(((DVDAddress32 + Size) > 0x7ed40000) && (DVDAddress32 + Size) < 0x7ed40008)))
|
||||||
))
|
|
||||||
{
|
{
|
||||||
WARN_LOG(WII_IPC_DVD, "DVDLowUnencryptedRead: trying to read out of bounds @ %x", DVDAddress32);
|
WARN_LOG(WII_IPC_DVD, "DVDLowUnencryptedRead: trying to read out of bounds @ %x", DVDAddress32);
|
||||||
m_ErrorStatus = ERROR_READY | ERROR_BLOCK_OOB;
|
m_ErrorStatus = ERROR_READY | ERROR_BLOCK_OOB;
|
||||||
|
|
|
@ -556,7 +556,8 @@ libusb_device_handle * CWII_IPC_HLE_Device_hid::GetDeviceByDevNum(u32 devNum)
|
||||||
port
|
port
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
else{
|
else
|
||||||
|
{
|
||||||
ERROR_LOG(WII_IPC_HID, "Dolphin does not have access to this device: Bus %03d Device %03d: ID %04X:%04X.",
|
ERROR_LOG(WII_IPC_HID, "Dolphin does not have access to this device: Bus %03d Device %03d: ID %04X:%04X.",
|
||||||
bus,
|
bus,
|
||||||
port,
|
port,
|
||||||
|
|
|
@ -261,8 +261,8 @@ void WiiSocket::update(bool read, bool write, bool except)
|
||||||
// Fix blocking error codes
|
// Fix blocking error codes
|
||||||
if (!nonBlock)
|
if (!nonBlock)
|
||||||
{
|
{
|
||||||
if (it->net_type == IOCTL_SO_CONNECT
|
if (it->net_type == IOCTL_SO_CONNECT &&
|
||||||
&& ReturnValue == -SO_EISCONN)
|
ReturnValue == -SO_EISCONN)
|
||||||
{
|
{
|
||||||
ReturnValue = SO_SUCCESS;
|
ReturnValue = SO_SUCCESS;
|
||||||
}
|
}
|
||||||
|
@ -511,11 +511,18 @@ void WiiSocket::update(bool read, bool write, bool except)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ( nonBlock || forceNonBlock
|
if (nonBlock ||
|
||||||
|| (!it->is_ssl && ReturnValue != -SO_EAGAIN && ReturnValue != -SO_EINPROGRESS && ReturnValue != -SO_EALREADY)
|
forceNonBlock ||
|
||||||
|| (it->is_ssl && ReturnValue != SSL_ERR_WAGAIN && ReturnValue != SSL_ERR_RAGAIN))
|
(!it->is_ssl &&
|
||||||
|
ReturnValue != -SO_EAGAIN &&
|
||||||
|
ReturnValue != -SO_EINPROGRESS &&
|
||||||
|
ReturnValue != -SO_EALREADY) ||
|
||||||
|
(it->is_ssl &&
|
||||||
|
ReturnValue != SSL_ERR_WAGAIN &&
|
||||||
|
ReturnValue != SSL_ERR_RAGAIN))
|
||||||
{
|
{
|
||||||
DEBUG_LOG(WII_IPC_NET, "IOCTL(V) Sock: %08x ioctl/v: %d returned: %d nonBlock: %d forceNonBlock: %d",
|
DEBUG_LOG(WII_IPC_NET,
|
||||||
|
"IOCTL(V) Sock: %08x ioctl/v: %d returned: %d nonBlock: %d forceNonBlock: %d",
|
||||||
fd, it->is_ssl ? (int) it->ssl_type : (int) it->net_type, ReturnValue, nonBlock, forceNonBlock);
|
fd, it->is_ssl ? (int) it->ssl_type : (int) it->net_type, ReturnValue, nonBlock, forceNonBlock);
|
||||||
WiiSockMan::EnqueueReply(it->_CommandAddress, ReturnValue);
|
WiiSockMan::EnqueueReply(it->_CommandAddress, ReturnValue);
|
||||||
it = pending_sockops.erase(it);
|
it = pending_sockops.erase(it);
|
||||||
|
@ -552,9 +559,9 @@ void WiiSockMan::addSocket(s32 fd)
|
||||||
|
|
||||||
s32 WiiSockMan::newSocket(s32 af, s32 type, s32 protocol)
|
s32 WiiSockMan::newSocket(s32 af, s32 type, s32 protocol)
|
||||||
{
|
{
|
||||||
if (NetPlay::IsNetPlayRunning()
|
if (NetPlay::IsNetPlayRunning() ||
|
||||||
|| Movie::IsRecordingInput()
|
Movie::IsRecordingInput() ||
|
||||||
|| Movie::IsPlayingInput())
|
Movie::IsPlayingInput())
|
||||||
{
|
{
|
||||||
return SO_ENOMEM;
|
return SO_ENOMEM;
|
||||||
}
|
}
|
||||||
|
|
|
@ -463,8 +463,8 @@ bool BeginRecordingInput(int controllers)
|
||||||
|
|
||||||
static void Analog2DToString(u8 x, u8 y, const char* prefix, char* str)
|
static void Analog2DToString(u8 x, u8 y, const char* prefix, char* str)
|
||||||
{
|
{
|
||||||
if((x <= 1 || x == 128 || x >= 255)
|
if ((x <= 1 || x == 128 || x >= 255) &&
|
||||||
&& (y <= 1 || y == 128 || y >= 255))
|
(y <= 1 || y == 128 || y >= 255))
|
||||||
{
|
{
|
||||||
if (x != 128 || y != 128)
|
if (x != 128 || y != 128)
|
||||||
{
|
{
|
||||||
|
@ -726,7 +726,10 @@ bool PlayInput(const char *filename)
|
||||||
|
|
||||||
g_recordfd.ReadArray(&tmpHeader, 1);
|
g_recordfd.ReadArray(&tmpHeader, 1);
|
||||||
|
|
||||||
if(tmpHeader.filetype[0] != 'D' || tmpHeader.filetype[1] != 'T' || tmpHeader.filetype[2] != 'M' || tmpHeader.filetype[3] != 0x1A) {
|
if (tmpHeader.filetype[0] != 'D' ||
|
||||||
|
tmpHeader.filetype[1] != 'T' ||
|
||||||
|
tmpHeader.filetype[2] != 'M' ||
|
||||||
|
tmpHeader.filetype[3] != 0x1A) {
|
||||||
PanicAlertT("Invalid recording file");
|
PanicAlertT("Invalid recording file");
|
||||||
goto cleanup;
|
goto cleanup;
|
||||||
}
|
}
|
||||||
|
|
|
@ -329,7 +329,8 @@ static void gdb_reply(const char *reply)
|
||||||
|
|
||||||
ptr = cmd_bfr;
|
ptr = cmd_bfr;
|
||||||
left = cmd_len + 4;
|
left = cmd_len + 4;
|
||||||
while (left > 0) {
|
while (left > 0)
|
||||||
|
{
|
||||||
n = send(sock, ptr, left, 0);
|
n = send(sock, ptr, left, 0);
|
||||||
if (n < 0)
|
if (n < 0)
|
||||||
{
|
{
|
||||||
|
@ -719,7 +720,8 @@ static void gdb_remove_bp()
|
||||||
|
|
||||||
void gdb_handle_exception()
|
void gdb_handle_exception()
|
||||||
{
|
{
|
||||||
while (gdb_active()) {
|
while (gdb_active())
|
||||||
|
{
|
||||||
if (!gdb_data_available())
|
if (!gdb_data_available())
|
||||||
continue;
|
continue;
|
||||||
gdb_read_command();
|
gdb_read_command();
|
||||||
|
|
|
@ -154,11 +154,11 @@ void Interpreter::twi(UGeckoInstruction _inst)
|
||||||
|
|
||||||
ERROR_LOG(POWERPC, "twi rA %x SIMM %x TO %0x", a, b, TO);
|
ERROR_LOG(POWERPC, "twi rA %x SIMM %x TO %0x", a, b, TO);
|
||||||
|
|
||||||
if ( ((a < b) && (TO & 0x10))
|
if (((a < b) && (TO & 0x10)) ||
|
||||||
|| ((a > b) && (TO & 0x08))
|
((a > b) && (TO & 0x08)) ||
|
||||||
|| ((a ==b) && (TO & 0x04))
|
((a ==b) && (TO & 0x04)) ||
|
||||||
|| (((u32)a <(u32)b) && (TO & 0x02))
|
(((u32)a <(u32)b) && (TO & 0x02)) ||
|
||||||
|| (((u32)a >(u32)b) && (TO & 0x01)))
|
(((u32)a >(u32)b) && (TO & 0x01)))
|
||||||
{
|
{
|
||||||
Common::AtomicOr(PowerPC::ppcState.Exceptions, EXCEPTION_PROGRAM);
|
Common::AtomicOr(PowerPC::ppcState.Exceptions, EXCEPTION_PROGRAM);
|
||||||
PowerPC::CheckExceptions();
|
PowerPC::CheckExceptions();
|
||||||
|
@ -382,11 +382,11 @@ void Interpreter::tw(UGeckoInstruction _inst)
|
||||||
|
|
||||||
ERROR_LOG(POWERPC, "tw rA %0x rB %0x TO %0x", a, b, TO);
|
ERROR_LOG(POWERPC, "tw rA %0x rB %0x TO %0x", a, b, TO);
|
||||||
|
|
||||||
if ( ((a < b) && (TO & 0x10))
|
if (((a < b) && (TO & 0x10)) ||
|
||||||
|| ((a > b) && (TO & 0x08))
|
((a > b) && (TO & 0x08)) ||
|
||||||
|| ((a ==b) && (TO & 0x04))
|
((a ==b) && (TO & 0x04)) ||
|
||||||
|| (((u32)a <(u32)b) && (TO & 0x02))
|
(((u32)a <(u32)b) && (TO & 0x02)) ||
|
||||||
|| (((u32)a >(u32)b) && (TO & 0x01)))
|
(((u32)a >(u32)b) && (TO & 0x01)))
|
||||||
{
|
{
|
||||||
Common::AtomicOr(PowerPC::ppcState.Exceptions, EXCEPTION_PROGRAM);
|
Common::AtomicOr(PowerPC::ppcState.Exceptions, EXCEPTION_PROGRAM);
|
||||||
PowerPC::CheckExceptions();
|
PowerPC::CheckExceptions();
|
||||||
|
|
|
@ -88,7 +88,8 @@ u32 ArmRegCache::GetLeastUsedRegister(bool increment)
|
||||||
{
|
{
|
||||||
u32 HighestUsed = 0;
|
u32 HighestUsed = 0;
|
||||||
u8 lastRegIndex = 0;
|
u8 lastRegIndex = 0;
|
||||||
for(u8 a = 0; a < NUMPPCREG; ++a){
|
for (u8 a = 0; a < NUMPPCREG; ++a)
|
||||||
|
{
|
||||||
if (increment)
|
if (increment)
|
||||||
++ArmCRegs[a].LastLoad;
|
++ArmCRegs[a].LastLoad;
|
||||||
if (ArmCRegs[a].LastLoad > HighestUsed)
|
if (ArmCRegs[a].LastLoad > HighestUsed)
|
||||||
|
|
|
@ -83,9 +83,10 @@ void GFXDebuggerPanel::SaveSettings() const
|
||||||
// weird values, perhaps because of some conflict with the rendering window
|
// weird values, perhaps because of some conflict with the rendering window
|
||||||
|
|
||||||
// TODO: get the screen resolution and make limits from that
|
// TODO: get the screen resolution and make limits from that
|
||||||
if (GetPosition().x < 1000 && GetPosition().y < 1000
|
if (GetPosition().x < 1000 &&
|
||||||
&& GetSize().GetWidth() < 1000
|
GetPosition().y < 1000 &&
|
||||||
&& GetSize().GetHeight() < 1000)
|
GetSize().GetWidth() < 1000 &&
|
||||||
|
GetSize().GetHeight() < 1000)
|
||||||
{
|
{
|
||||||
file.Set("VideoWindow", "x", GetPosition().x);
|
file.Set("VideoWindow", "x", GetPosition().x);
|
||||||
file.Set("VideoWindow", "y", GetPosition().y);
|
file.Set("VideoWindow", "y", GetPosition().y);
|
||||||
|
|
|
@ -399,9 +399,9 @@ void CMemoryWindow::onSearch(wxCommandEvent& event)
|
||||||
sscanf(WxStrToStr(txt).c_str(), "%08x", &addr);
|
sscanf(WxStrToStr(txt).c_str(), "%08x", &addr);
|
||||||
}
|
}
|
||||||
i = addr+4;
|
i = addr+4;
|
||||||
for( ; i < szRAM; i++)
|
for ( ; i < szRAM; ++i)
|
||||||
{
|
{
|
||||||
for(k = 0; k < size; k++)
|
for (k = 0; k < size; ++k)
|
||||||
{
|
{
|
||||||
if (i + k > szRAM) break;
|
if (i + k > szRAM) break;
|
||||||
if (k > size) break;
|
if (k > size) break;
|
||||||
|
|
|
@ -613,15 +613,15 @@ void CFrame::BootGame(const std::string& filename)
|
||||||
if (m_GameListCtrl->GetSelectedISO()->IsValid())
|
if (m_GameListCtrl->GetSelectedISO()->IsValid())
|
||||||
bootfile = m_GameListCtrl->GetSelectedISO()->GetFileName();
|
bootfile = m_GameListCtrl->GetSelectedISO()->GetFileName();
|
||||||
}
|
}
|
||||||
else if (!StartUp.m_strDefaultGCM.empty()
|
else if (!StartUp.m_strDefaultGCM.empty() &&
|
||||||
&& wxFileExists(wxSafeConvertMB2WX(StartUp.m_strDefaultGCM.c_str())))
|
wxFileExists(wxSafeConvertMB2WX(StartUp.m_strDefaultGCM.c_str())))
|
||||||
{
|
{
|
||||||
bootfile = StartUp.m_strDefaultGCM;
|
bootfile = StartUp.m_strDefaultGCM;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (!SConfig::GetInstance().m_LastFilename.empty()
|
if (!SConfig::GetInstance().m_LastFilename.empty() &&
|
||||||
&& wxFileExists(wxSafeConvertMB2WX(SConfig::GetInstance().m_LastFilename.c_str())))
|
wxFileExists(wxSafeConvertMB2WX(SConfig::GetInstance().m_LastFilename.c_str())))
|
||||||
{
|
{
|
||||||
bootfile = SConfig::GetInstance().m_LastFilename;
|
bootfile = SConfig::GetInstance().m_LastFilename;
|
||||||
}
|
}
|
||||||
|
@ -1709,8 +1709,8 @@ void CFrame::UpdateGUI()
|
||||||
GetMenuBar()->FindItem(IDM_PLAYRECORD)->Enable(true);
|
GetMenuBar()->FindItem(IDM_PLAYRECORD)->Enable(true);
|
||||||
}
|
}
|
||||||
// Prepare to load last selected file, enable play button
|
// Prepare to load last selected file, enable play button
|
||||||
else if (!SConfig::GetInstance().m_LastFilename.empty()
|
else if (!SConfig::GetInstance().m_LastFilename.empty() &&
|
||||||
&& wxFileExists(wxSafeConvertMB2WX(SConfig::GetInstance().m_LastFilename.c_str())))
|
wxFileExists(wxSafeConvertMB2WX(SConfig::GetInstance().m_LastFilename.c_str())))
|
||||||
{
|
{
|
||||||
if (m_ToolBar)
|
if (m_ToolBar)
|
||||||
m_ToolBar->EnableTool(IDM_PLAY, true);
|
m_ToolBar->EnableTool(IDM_PLAY, true);
|
||||||
|
|
|
@ -97,8 +97,8 @@ void cInterfaceAGL::Update()
|
||||||
size.width *= scale;
|
size.width *= scale;
|
||||||
size.height *= scale;
|
size.height *= scale;
|
||||||
|
|
||||||
if( s_backbuffer_width == size.width
|
if (s_backbuffer_width == size.width &&
|
||||||
&& s_backbuffer_height == size.height)
|
s_backbuffer_height == size.height)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
s_backbuffer_width = size.width;
|
s_backbuffer_width = size.width;
|
||||||
|
|
|
@ -887,8 +887,8 @@ void CGameListCtrl::OnRightClick(wxMouseEvent& event)
|
||||||
{
|
{
|
||||||
if (selected_iso->IsCompressed())
|
if (selected_iso->IsCompressed())
|
||||||
popupMenu->Append(IDM_COMPRESSGCM, _("Decompress ISO..."));
|
popupMenu->Append(IDM_COMPRESSGCM, _("Decompress ISO..."));
|
||||||
else if (selected_iso->GetFileName().substr(selected_iso->GetFileName().find_last_of(".")) != ".ciso"
|
else if (selected_iso->GetFileName().substr(selected_iso->GetFileName().find_last_of(".")) != ".ciso" &&
|
||||||
&& selected_iso->GetFileName().substr(selected_iso->GetFileName().find_last_of(".")) != ".wbfs")
|
selected_iso->GetFileName().substr(selected_iso->GetFileName().find_last_of(".")) != ".wbfs")
|
||||||
popupMenu->Append(IDM_COMPRESSGCM, _("Compress ISO..."));
|
popupMenu->Append(IDM_COMPRESSGCM, _("Compress ISO..."));
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
|
|
@ -678,8 +678,8 @@ void CISOProperties::OnRightClickOnTree(wxTreeEvent& event)
|
||||||
|
|
||||||
wxMenu* popupMenu = new wxMenu;
|
wxMenu* popupMenu = new wxMenu;
|
||||||
|
|
||||||
if (m_Treectrl->GetItemImage(m_Treectrl->GetSelection()) == 0
|
if (m_Treectrl->GetItemImage(m_Treectrl->GetSelection()) == 0 &&
|
||||||
&& m_Treectrl->GetFirstVisibleItem() != m_Treectrl->GetSelection())
|
m_Treectrl->GetFirstVisibleItem() != m_Treectrl->GetSelection())
|
||||||
{
|
{
|
||||||
popupMenu->Append(IDM_EXTRACTDIR, _("Extract Partition..."));
|
popupMenu->Append(IDM_EXTRACTDIR, _("Extract Partition..."));
|
||||||
}
|
}
|
||||||
|
@ -694,8 +694,8 @@ void CISOProperties::OnRightClickOnTree(wxTreeEvent& event)
|
||||||
|
|
||||||
popupMenu->Append(IDM_EXTRACTALL, _("Extract All Files..."));
|
popupMenu->Append(IDM_EXTRACTALL, _("Extract All Files..."));
|
||||||
|
|
||||||
if (m_Treectrl->GetItemImage(m_Treectrl->GetSelection()) == 0
|
if (m_Treectrl->GetItemImage(m_Treectrl->GetSelection()) == 0 &&
|
||||||
&& m_Treectrl->GetFirstVisibleItem() != m_Treectrl->GetSelection())
|
m_Treectrl->GetFirstVisibleItem() != m_Treectrl->GetSelection())
|
||||||
{
|
{
|
||||||
popupMenu->AppendSeparator();
|
popupMenu->AppendSeparator();
|
||||||
popupMenu->Append(IDM_EXTRACTAPPLOADER, _("Extract Apploader..."));
|
popupMenu->Append(IDM_EXTRACTAPPLOADER, _("Extract Apploader..."));
|
||||||
|
@ -1201,8 +1201,8 @@ void CISOProperties::ListSelectionChanged(wxCommandEvent& event)
|
||||||
switch (event.GetId())
|
switch (event.GetId())
|
||||||
{
|
{
|
||||||
case ID_PATCHES_LIST:
|
case ID_PATCHES_LIST:
|
||||||
if (Patches->GetSelection() == wxNOT_FOUND
|
if (Patches->GetSelection() == wxNOT_FOUND ||
|
||||||
|| DefaultPatches.find(Patches->GetString(Patches->GetSelection()).ToStdString()) != DefaultPatches.end())
|
DefaultPatches.find(Patches->GetString(Patches->GetSelection()).ToStdString()) != DefaultPatches.end())
|
||||||
{
|
{
|
||||||
EditPatch->Disable();
|
EditPatch->Disable();
|
||||||
RemovePatch->Disable();
|
RemovePatch->Disable();
|
||||||
|
@ -1214,8 +1214,8 @@ void CISOProperties::ListSelectionChanged(wxCommandEvent& event)
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case ID_CHEATS_LIST:
|
case ID_CHEATS_LIST:
|
||||||
if (Cheats->GetSelection() == wxNOT_FOUND
|
if (Cheats->GetSelection() == wxNOT_FOUND ||
|
||||||
|| DefaultCheats.find(Cheats->GetString(Cheats->GetSelection()).ToStdString()) != DefaultCheats.end())
|
DefaultCheats.find(Cheats->GetString(Cheats->GetSelection()).ToStdString()) != DefaultCheats.end())
|
||||||
{
|
{
|
||||||
EditCheat->Disable();
|
EditCheat->Disable();
|
||||||
RemoveCheat->Disable();
|
RemoveCheat->Disable();
|
||||||
|
|
|
@ -297,7 +297,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus)
|
||||||
wx_cY_t->SetValue(wxString::Format(wxT("%i"), cY));
|
wx_cY_t->SetValue(wxString::Format(wxT("%i"), cY));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((PadStatus->button & PAD_BUTTON_UP) != 0))
|
if ((PadStatus->button & PAD_BUTTON_UP) != 0)
|
||||||
{
|
{
|
||||||
wx_up_button->SetValue(true);
|
wx_up_button->SetValue(true);
|
||||||
DU_cont = true;
|
DU_cont = true;
|
||||||
|
@ -308,7 +308,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus)
|
||||||
DU_cont = false;
|
DU_cont = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((PadStatus->button & PAD_BUTTON_DOWN) != 0))
|
if ((PadStatus->button & PAD_BUTTON_DOWN) != 0)
|
||||||
{
|
{
|
||||||
wx_down_button->SetValue(true);
|
wx_down_button->SetValue(true);
|
||||||
DD_cont = true;
|
DD_cont = true;
|
||||||
|
@ -319,7 +319,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus)
|
||||||
DD_cont = false;
|
DD_cont = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((PadStatus->button & PAD_BUTTON_LEFT) != 0))
|
if ((PadStatus->button & PAD_BUTTON_LEFT) != 0)
|
||||||
{
|
{
|
||||||
wx_left_button->SetValue(true);
|
wx_left_button->SetValue(true);
|
||||||
DL_cont = true;
|
DL_cont = true;
|
||||||
|
@ -330,7 +330,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus)
|
||||||
DL_cont = false;
|
DL_cont = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((PadStatus->button & PAD_BUTTON_RIGHT) != 0))
|
if ((PadStatus->button & PAD_BUTTON_RIGHT) != 0)
|
||||||
{
|
{
|
||||||
wx_right_button->SetValue(true);
|
wx_right_button->SetValue(true);
|
||||||
DR_cont = true;
|
DR_cont = true;
|
||||||
|
@ -341,7 +341,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus)
|
||||||
DR_cont = false;
|
DR_cont = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((PadStatus->button & PAD_BUTTON_A) != 0))
|
if ((PadStatus->button & PAD_BUTTON_A) != 0)
|
||||||
{
|
{
|
||||||
wx_a_button->SetValue(true);
|
wx_a_button->SetValue(true);
|
||||||
A_cont = true;
|
A_cont = true;
|
||||||
|
@ -352,7 +352,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus)
|
||||||
A_cont = false;
|
A_cont = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((PadStatus->button & PAD_BUTTON_B) != 0))
|
if ((PadStatus->button & PAD_BUTTON_B) != 0)
|
||||||
{
|
{
|
||||||
wx_b_button->SetValue(true);
|
wx_b_button->SetValue(true);
|
||||||
B_cont = true;
|
B_cont = true;
|
||||||
|
@ -363,7 +363,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus)
|
||||||
B_cont = false;
|
B_cont = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((PadStatus->button & PAD_BUTTON_X) != 0))
|
if ((PadStatus->button & PAD_BUTTON_X) != 0)
|
||||||
{
|
{
|
||||||
wx_x_button->SetValue(true);
|
wx_x_button->SetValue(true);
|
||||||
X_cont = true;
|
X_cont = true;
|
||||||
|
@ -374,7 +374,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus)
|
||||||
X_cont = false;
|
X_cont = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((PadStatus->button & PAD_BUTTON_Y) != 0))
|
if ((PadStatus->button & PAD_BUTTON_Y) != 0)
|
||||||
{
|
{
|
||||||
wx_y_button->SetValue(true);
|
wx_y_button->SetValue(true);
|
||||||
Y_cont = true;
|
Y_cont = true;
|
||||||
|
@ -385,7 +385,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus)
|
||||||
Y_cont = false;
|
Y_cont = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((PadStatus->triggerLeft) != 0))
|
if ((PadStatus->triggerLeft) != 0)
|
||||||
{
|
{
|
||||||
if (PadStatus->triggerLeft == 255)
|
if (PadStatus->triggerLeft == 255)
|
||||||
{
|
{
|
||||||
|
@ -410,7 +410,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus)
|
||||||
L_cont = false;
|
L_cont = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((PadStatus->triggerRight) != 0))
|
if ((PadStatus->triggerRight) != 0)
|
||||||
{
|
{
|
||||||
if (PadStatus->triggerRight == 255)
|
if (PadStatus->triggerRight == 255)
|
||||||
{
|
{
|
||||||
|
@ -435,7 +435,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus)
|
||||||
R_cont = false;
|
R_cont = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((PadStatus->button & PAD_TRIGGER_Z) != 0))
|
if ((PadStatus->button & PAD_TRIGGER_Z) != 0)
|
||||||
{
|
{
|
||||||
wx_z_button->SetValue(true);
|
wx_z_button->SetValue(true);
|
||||||
Z_cont = true;
|
Z_cont = true;
|
||||||
|
@ -446,7 +446,7 @@ void TASInputDlg::GetKeyBoardInput(SPADStatus *PadStatus)
|
||||||
Z_cont = false;
|
Z_cont = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(((PadStatus->button & PAD_BUTTON_START) != 0))
|
if ((PadStatus->button & PAD_BUTTON_START) != 0)
|
||||||
{
|
{
|
||||||
wx_start_button->SetValue(true);
|
wx_start_button->SetValue(true);
|
||||||
START_cont = true;
|
START_cont = true;
|
||||||
|
@ -691,24 +691,21 @@ void TASInputDlg::UpdateFromText(wxCommandEvent& event)
|
||||||
xaxis = *v;
|
xaxis = *v;
|
||||||
static_bitmap_main->SetBitmap(TASInputDlg::CreateStickBitmap(xaxis,yaxis));
|
static_bitmap_main->SetBitmap(TASInputDlg::CreateStickBitmap(xaxis,yaxis));
|
||||||
}
|
}
|
||||||
|
else if (update_axis == 2)
|
||||||
if(update_axis == 2)
|
|
||||||
{
|
{
|
||||||
yaxis =256 - *v;
|
yaxis =256 - *v;
|
||||||
static_bitmap_main->SetBitmap(TASInputDlg::CreateStickBitmap(xaxis,yaxis));
|
static_bitmap_main->SetBitmap(TASInputDlg::CreateStickBitmap(xaxis,yaxis));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
else if (update == 2)
|
||||||
if(update == 2)
|
|
||||||
{
|
{
|
||||||
if (update_axis == 1)
|
if (update_axis == 1)
|
||||||
{
|
{
|
||||||
c_xaxis = *v;
|
c_xaxis = *v;
|
||||||
static_bitmap_c->SetBitmap(TASInputDlg::CreateStickBitmap(c_xaxis,c_yaxis));
|
static_bitmap_c->SetBitmap(TASInputDlg::CreateStickBitmap(c_xaxis,c_yaxis));
|
||||||
}
|
}
|
||||||
|
else if (update_axis == 2)
|
||||||
if(update_axis == 2)
|
|
||||||
{
|
{
|
||||||
c_yaxis =256- *v;
|
c_yaxis =256- *v;
|
||||||
static_bitmap_c->SetBitmap(TASInputDlg::CreateStickBitmap(c_xaxis,c_yaxis));
|
static_bitmap_c->SetBitmap(TASInputDlg::CreateStickBitmap(c_xaxis,c_yaxis));
|
||||||
|
|
|
@ -57,8 +57,9 @@ void SendMotionEvent(Display *dpy, int x, int y)
|
||||||
|
|
||||||
void EWMH_Fullscreen(Display *dpy, int action)
|
void EWMH_Fullscreen(Display *dpy, int action)
|
||||||
{
|
{
|
||||||
_assert_(action == _NET_WM_STATE_REMOVE || action == _NET_WM_STATE_ADD
|
_assert_(action == _NET_WM_STATE_REMOVE ||
|
||||||
|| action == _NET_WM_STATE_TOGGLE);
|
action == _NET_WM_STATE_ADD ||
|
||||||
|
action == _NET_WM_STATE_TOGGLE);
|
||||||
|
|
||||||
Window win = (Window)Core::GetWindowHandle();
|
Window win = (Window)Core::GetWindowHandle();
|
||||||
|
|
||||||
|
|
|
@ -67,12 +67,11 @@ Joystick::Joystick(SDL_Joystick* const joystick, const int sdl_index, const unsi
|
||||||
std::string lcasename = GetName();
|
std::string lcasename = GetName();
|
||||||
std::transform(lcasename.begin(), lcasename.end(), lcasename.begin(), tolower);
|
std::transform(lcasename.begin(), lcasename.end(), lcasename.begin(), tolower);
|
||||||
|
|
||||||
if ((std::string::npos != lcasename.find("xbox 360"))
|
if ((std::string::npos != lcasename.find("xbox 360")) &&
|
||||||
&& (10 == SDL_JoystickNumButtons(joystick))
|
(10 == SDL_JoystickNumButtons(joystick)) &&
|
||||||
&& (5 == SDL_JoystickNumAxes(joystick))
|
(5 == SDL_JoystickNumAxes(joystick)) &&
|
||||||
&& (1 == SDL_JoystickNumHats(joystick))
|
(1 == SDL_JoystickNumHats(joystick)) &&
|
||||||
&& (0 == SDL_JoystickNumBalls(joystick))
|
(0 == SDL_JoystickNumBalls(joystick)))
|
||||||
)
|
|
||||||
{
|
{
|
||||||
// this device won't be used
|
// this device won't be used
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -282,12 +282,15 @@ void TextureCache::TCacheEntry::FromRenderTarget(u32 dstAddr, unsigned int dstFo
|
||||||
|
|
||||||
glViewport(0, 0, virtual_width, virtual_height);
|
glViewport(0, 0, virtual_width, virtual_height);
|
||||||
|
|
||||||
if(srcFormat == PIXELFMT_Z24) {
|
if (srcFormat == PIXELFMT_Z24)
|
||||||
|
{
|
||||||
s_DepthMatrixProgram.Bind();
|
s_DepthMatrixProgram.Bind();
|
||||||
if (s_DepthCbufid != cbufid)
|
if (s_DepthCbufid != cbufid)
|
||||||
glUniform4fv(s_DepthMatrixUniform, 5, colmat);
|
glUniform4fv(s_DepthMatrixUniform, 5, colmat);
|
||||||
s_DepthCbufid = cbufid;
|
s_DepthCbufid = cbufid;
|
||||||
} else {
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
s_ColorMatrixProgram.Bind();
|
s_ColorMatrixProgram.Bind();
|
||||||
if (s_ColorCbufid != cbufid)
|
if (s_ColorCbufid != cbufid)
|
||||||
glUniform4fv(s_ColorMatrixUniform, 7, colmat);
|
glUniform4fv(s_ColorMatrixUniform, 7, colmat);
|
||||||
|
|
|
@ -66,17 +66,17 @@ void BPWritten(const BPCmd& bp)
|
||||||
|
|
||||||
if (((s32*)&bpmem)[bp.address] == bp.newvalue)
|
if (((s32*)&bpmem)[bp.address] == bp.newvalue)
|
||||||
{
|
{
|
||||||
if (!(bp.address == BPMEM_TRIGGER_EFB_COPY
|
if (!(bp.address == BPMEM_TRIGGER_EFB_COPY ||
|
||||||
|| bp.address == BPMEM_CLEARBBOX1
|
bp.address == BPMEM_CLEARBBOX1 ||
|
||||||
|| bp.address == BPMEM_CLEARBBOX2
|
bp.address == BPMEM_CLEARBBOX2 ||
|
||||||
|| bp.address == BPMEM_SETDRAWDONE
|
bp.address == BPMEM_SETDRAWDONE ||
|
||||||
|| bp.address == BPMEM_PE_TOKEN_ID
|
bp.address == BPMEM_PE_TOKEN_ID ||
|
||||||
|| bp.address == BPMEM_PE_TOKEN_INT_ID
|
bp.address == BPMEM_PE_TOKEN_INT_ID ||
|
||||||
|| bp.address == BPMEM_LOADTLUT0
|
bp.address == BPMEM_LOADTLUT0 ||
|
||||||
|| bp.address == BPMEM_LOADTLUT1
|
bp.address == BPMEM_LOADTLUT1 ||
|
||||||
|| bp.address == BPMEM_TEXINVALIDATE
|
bp.address == BPMEM_TEXINVALIDATE ||
|
||||||
|| bp.address == BPMEM_PRELOAD_MODE
|
bp.address == BPMEM_PRELOAD_MODE ||
|
||||||
|| bp.address == BPMEM_CLEAR_PIXEL_PERF))
|
bp.address == BPMEM_CLEAR_PIXEL_PERF))
|
||||||
{
|
{
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -310,8 +310,9 @@ void STACKALIGN GatherPipeBursted()
|
||||||
{
|
{
|
||||||
// In multibuffer mode is not allowed write in the same FIFO attached to the GPU.
|
// In multibuffer mode is not allowed write in the same FIFO attached to the GPU.
|
||||||
// Fix Pokemon XD in DC mode.
|
// Fix Pokemon XD in DC mode.
|
||||||
if((ProcessorInterface::Fifo_CPUEnd == fifo.CPEnd) && (ProcessorInterface::Fifo_CPUBase == fifo.CPBase)
|
if ((ProcessorInterface::Fifo_CPUEnd == fifo.CPEnd) &&
|
||||||
&& fifo.CPReadWriteDistance > 0)
|
(ProcessorInterface::Fifo_CPUBase == fifo.CPBase) &&
|
||||||
|
fifo.CPReadWriteDistance > 0)
|
||||||
{
|
{
|
||||||
ProcessFifoAllDistance();
|
ProcessFifoAllDistance();
|
||||||
}
|
}
|
||||||
|
|
|
@ -93,8 +93,7 @@ namespace DriverDetails
|
||||||
|
|
||||||
for (auto& bug : m_known_bugs)
|
for (auto& bug : m_known_bugs)
|
||||||
{
|
{
|
||||||
if(
|
if (( bug.m_os & m_os ) &&
|
||||||
( bug.m_os & m_os ) &&
|
|
||||||
( bug.m_vendor == m_vendor || bug.m_vendor == VENDOR_ALL ) &&
|
( bug.m_vendor == m_vendor || bug.m_vendor == VENDOR_ALL ) &&
|
||||||
( bug.m_driver == m_driver || bug.m_driver == DRIVER_ALL ) &&
|
( bug.m_driver == m_driver || bug.m_driver == DRIVER_ALL ) &&
|
||||||
( bug.m_family == m_family || bug.m_family == -1) &&
|
( bug.m_family == m_family || bug.m_family == -1) &&
|
||||||
|
|
|
@ -766,12 +766,12 @@ static inline void WriteStage(T& out, pixel_shader_uid_data& uid_data, int n, AP
|
||||||
uid_data.stagehash[n].cc = cc.hex & 0xFFFFFF;
|
uid_data.stagehash[n].cc = cc.hex & 0xFFFFFF;
|
||||||
uid_data.stagehash[n].ac = ac.hex & 0xFFFFF0; // Storing rswap and tswap later
|
uid_data.stagehash[n].ac = ac.hex & 0xFFFFF0; // Storing rswap and tswap later
|
||||||
|
|
||||||
if(cc.a == TEVCOLORARG_RASA || cc.a == TEVCOLORARG_RASC
|
if (cc.a == TEVCOLORARG_RASA || cc.a == TEVCOLORARG_RASC ||
|
||||||
|| cc.b == TEVCOLORARG_RASA || cc.b == TEVCOLORARG_RASC
|
cc.b == TEVCOLORARG_RASA || cc.b == TEVCOLORARG_RASC ||
|
||||||
|| cc.c == TEVCOLORARG_RASA || cc.c == TEVCOLORARG_RASC
|
cc.c == TEVCOLORARG_RASA || cc.c == TEVCOLORARG_RASC ||
|
||||||
|| cc.d == TEVCOLORARG_RASA || cc.d == TEVCOLORARG_RASC
|
cc.d == TEVCOLORARG_RASA || cc.d == TEVCOLORARG_RASC ||
|
||||||
|| ac.a == TEVALPHAARG_RASA || ac.b == TEVALPHAARG_RASA
|
ac.a == TEVALPHAARG_RASA || ac.b == TEVALPHAARG_RASA ||
|
||||||
|| ac.c == TEVALPHAARG_RASA || ac.d == TEVALPHAARG_RASA)
|
ac.c == TEVALPHAARG_RASA || ac.d == TEVALPHAARG_RASA)
|
||||||
{
|
{
|
||||||
const int i = bpmem.combiners[n].alphaC.rswap;
|
const int i = bpmem.combiners[n].alphaC.rswap;
|
||||||
uid_data.stagehash[n].ac |= bpmem.combiners[n].alphaC.rswap;
|
uid_data.stagehash[n].ac |= bpmem.combiners[n].alphaC.rswap;
|
||||||
|
@ -820,8 +820,10 @@ static inline void WriteStage(T& out, pixel_shader_uid_data& uid_data, int n, AP
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
if (cc.a == TEVCOLORARG_KONST || cc.b == TEVCOLORARG_KONST || cc.c == TEVCOLORARG_KONST || cc.d == TEVCOLORARG_KONST
|
if (cc.a == TEVCOLORARG_KONST || cc.b == TEVCOLORARG_KONST ||
|
||||||
|| ac.a == TEVALPHAARG_KONST || ac.b == TEVALPHAARG_KONST || ac.c == TEVALPHAARG_KONST || ac.d == TEVALPHAARG_KONST)
|
cc.c == TEVCOLORARG_KONST || cc.d == TEVCOLORARG_KONST ||
|
||||||
|
ac.a == TEVALPHAARG_KONST || ac.b == TEVALPHAARG_KONST ||
|
||||||
|
ac.c == TEVALPHAARG_KONST || ac.d == TEVALPHAARG_KONST)
|
||||||
{
|
{
|
||||||
int kc = bpmem.tevksel[n / 2].getKC(n & 1);
|
int kc = bpmem.tevksel[n / 2].getKC(n & 1);
|
||||||
int ka = bpmem.tevksel[n / 2].getKA(n & 1);
|
int ka = bpmem.tevksel[n / 2].getKA(n & 1);
|
||||||
|
@ -842,10 +844,11 @@ static inline void WriteStage(T& out, pixel_shader_uid_data& uid_data, int n, AP
|
||||||
out.SetConstantsUsed(C_KCOLORS+((ka-0xc)%4),C_KCOLORS+((ka-0xc)%4));
|
out.SetConstantsUsed(C_KCOLORS+((ka-0xc)%4),C_KCOLORS+((ka-0xc)%4));
|
||||||
}
|
}
|
||||||
|
|
||||||
if(cc.a == TEVCOLORARG_CPREV || cc.a == TEVCOLORARG_APREV
|
if (cc.a == TEVCOLORARG_CPREV || cc.a == TEVCOLORARG_APREV ||
|
||||||
|| cc.b == TEVCOLORARG_CPREV || cc.b == TEVCOLORARG_APREV
|
cc.b == TEVCOLORARG_CPREV || cc.b == TEVCOLORARG_APREV ||
|
||||||
|| cc.c == TEVCOLORARG_CPREV || cc.c == TEVCOLORARG_APREV
|
cc.c == TEVCOLORARG_CPREV || cc.c == TEVCOLORARG_APREV ||
|
||||||
|| ac.a == TEVALPHAARG_APREV || ac.b == TEVALPHAARG_APREV || ac.c == TEVALPHAARG_APREV)
|
ac.a == TEVALPHAARG_APREV || ac.b == TEVALPHAARG_APREV ||
|
||||||
|
ac.c == TEVALPHAARG_APREV)
|
||||||
{
|
{
|
||||||
if (RegisterStates[0].AlphaNeedOverflowControl || RegisterStates[0].ColorNeedOverflowControl)
|
if (RegisterStates[0].AlphaNeedOverflowControl || RegisterStates[0].ColorNeedOverflowControl)
|
||||||
{
|
{
|
||||||
|
@ -860,10 +863,11 @@ static inline void WriteStage(T& out, pixel_shader_uid_data& uid_data, int n, AP
|
||||||
RegisterStates[0].AuxStored = true;
|
RegisterStates[0].AuxStored = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(cc.a == TEVCOLORARG_C0 || cc.a == TEVCOLORARG_A0
|
if (cc.a == TEVCOLORARG_C0 || cc.a == TEVCOLORARG_A0 ||
|
||||||
|| cc.b == TEVCOLORARG_C0 || cc.b == TEVCOLORARG_A0
|
cc.b == TEVCOLORARG_C0 || cc.b == TEVCOLORARG_A0 ||
|
||||||
|| cc.c == TEVCOLORARG_C0 || cc.c == TEVCOLORARG_A0
|
cc.c == TEVCOLORARG_C0 || cc.c == TEVCOLORARG_A0 ||
|
||||||
|| ac.a == TEVALPHAARG_A0 || ac.b == TEVALPHAARG_A0 || ac.c == TEVALPHAARG_A0)
|
ac.a == TEVALPHAARG_A0 || ac.b == TEVALPHAARG_A0 ||
|
||||||
|
ac.c == TEVALPHAARG_A0)
|
||||||
{
|
{
|
||||||
out.SetConstantsUsed(C_COLORS+1,C_COLORS+1);
|
out.SetConstantsUsed(C_COLORS+1,C_COLORS+1);
|
||||||
if (RegisterStates[1].AlphaNeedOverflowControl || RegisterStates[1].ColorNeedOverflowControl)
|
if (RegisterStates[1].AlphaNeedOverflowControl || RegisterStates[1].ColorNeedOverflowControl)
|
||||||
|
@ -879,10 +883,11 @@ static inline void WriteStage(T& out, pixel_shader_uid_data& uid_data, int n, AP
|
||||||
RegisterStates[1].AuxStored = true;
|
RegisterStates[1].AuxStored = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(cc.a == TEVCOLORARG_C1 || cc.a == TEVCOLORARG_A1
|
if (cc.a == TEVCOLORARG_C1 || cc.a == TEVCOLORARG_A1 ||
|
||||||
|| cc.b == TEVCOLORARG_C1 || cc.b == TEVCOLORARG_A1
|
cc.b == TEVCOLORARG_C1 || cc.b == TEVCOLORARG_A1 ||
|
||||||
|| cc.c == TEVCOLORARG_C1 || cc.c == TEVCOLORARG_A1
|
cc.c == TEVCOLORARG_C1 || cc.c == TEVCOLORARG_A1 ||
|
||||||
|| ac.a == TEVALPHAARG_A1 || ac.b == TEVALPHAARG_A1 || ac.c == TEVALPHAARG_A1)
|
ac.a == TEVALPHAARG_A1 || ac.b == TEVALPHAARG_A1 ||
|
||||||
|
ac.c == TEVALPHAARG_A1)
|
||||||
{
|
{
|
||||||
out.SetConstantsUsed(C_COLORS+2,C_COLORS+2);
|
out.SetConstantsUsed(C_COLORS+2,C_COLORS+2);
|
||||||
if (RegisterStates[2].AlphaNeedOverflowControl || RegisterStates[2].ColorNeedOverflowControl)
|
if (RegisterStates[2].AlphaNeedOverflowControl || RegisterStates[2].ColorNeedOverflowControl)
|
||||||
|
@ -898,10 +903,11 @@ static inline void WriteStage(T& out, pixel_shader_uid_data& uid_data, int n, AP
|
||||||
RegisterStates[2].AuxStored = true;
|
RegisterStates[2].AuxStored = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(cc.a == TEVCOLORARG_C2 || cc.a == TEVCOLORARG_A2
|
if (cc.a == TEVCOLORARG_C2 || cc.a == TEVCOLORARG_A2 ||
|
||||||
|| cc.b == TEVCOLORARG_C2 || cc.b == TEVCOLORARG_A2
|
cc.b == TEVCOLORARG_C2 || cc.b == TEVCOLORARG_A2 ||
|
||||||
|| cc.c == TEVCOLORARG_C2 || cc.c == TEVCOLORARG_A2
|
cc.c == TEVCOLORARG_C2 || cc.c == TEVCOLORARG_A2 ||
|
||||||
|| ac.a == TEVALPHAARG_A2 || ac.b == TEVALPHAARG_A2 || ac.c == TEVALPHAARG_A2)
|
ac.a == TEVALPHAARG_A2 || ac.b == TEVALPHAARG_A2 ||
|
||||||
|
ac.c == TEVALPHAARG_A2)
|
||||||
{
|
{
|
||||||
out.SetConstantsUsed(C_COLORS+3,C_COLORS+3);
|
out.SetConstantsUsed(C_COLORS+3,C_COLORS+3);
|
||||||
if (RegisterStates[3].AlphaNeedOverflowControl || RegisterStates[3].ColorNeedOverflowControl)
|
if (RegisterStates[3].AlphaNeedOverflowControl || RegisterStates[3].ColorNeedOverflowControl)
|
||||||
|
|
|
@ -125,10 +125,9 @@ void TextureCache::Cleanup()
|
||||||
TexCache::iterator tcend = textures.end();
|
TexCache::iterator tcend = textures.end();
|
||||||
while (iter != tcend)
|
while (iter != tcend)
|
||||||
{
|
{
|
||||||
if (frameCount > TEXTURE_KILL_THRESHOLD + iter->second->frameCount
|
if (frameCount > TEXTURE_KILL_THRESHOLD + iter->second->frameCount &&
|
||||||
|
|
||||||
// EFB copies living on the host GPU are unrecoverable and thus shouldn't be deleted
|
// EFB copies living on the host GPU are unrecoverable and thus shouldn't be deleted
|
||||||
&& ! iter->second->IsEfbCopy() )
|
!iter->second->IsEfbCopy())
|
||||||
{
|
{
|
||||||
delete iter->second;
|
delete iter->second;
|
||||||
textures.erase(iter++);
|
textures.erase(iter++);
|
||||||
|
@ -421,9 +420,14 @@ TextureCache::TCacheEntryBase* TextureCache::Load(unsigned int const stage,
|
||||||
//
|
//
|
||||||
// TODO: Don't we need to force texture decoding to RGBA8 for dynamic EFB copies?
|
// TODO: Don't we need to force texture decoding to RGBA8 for dynamic EFB copies?
|
||||||
// TODO: Actually, it should be enough if the internal texture format matches...
|
// TODO: Actually, it should be enough if the internal texture format matches...
|
||||||
if ((entry->type == TCET_NORMAL && width == entry->virtual_width && height == entry->virtual_height
|
if ((entry->type == TCET_NORMAL &&
|
||||||
&& full_format == entry->format && entry->num_mipmaps > maxlevel)
|
width == entry->virtual_width &&
|
||||||
|| (entry->type == TCET_EC_DYNAMIC && entry->native_width == width && entry->native_height == height))
|
height == entry->virtual_height &&
|
||||||
|
full_format == entry->format &&
|
||||||
|
entry->num_mipmaps > maxlevel) ||
|
||||||
|
(entry->type == TCET_EC_DYNAMIC &&
|
||||||
|
entry->native_width == width &&
|
||||||
|
entry->native_height == height))
|
||||||
{
|
{
|
||||||
// reuse the texture
|
// reuse the texture
|
||||||
}
|
}
|
||||||
|
|
|
@ -216,8 +216,10 @@ void VertexManager::Flush()
|
||||||
VertexShaderManager::SetConstants();
|
VertexShaderManager::SetConstants();
|
||||||
PixelShaderManager::SetConstants();
|
PixelShaderManager::SetConstants();
|
||||||
|
|
||||||
bool useDstAlpha = !g_ActiveConfig.bDstAlphaPass && bpmem.dstalpha.enable && bpmem.blendmode.alphaupdate
|
bool useDstAlpha = !g_ActiveConfig.bDstAlphaPass &&
|
||||||
&& bpmem.zcontrol.pixel_format == PIXELFMT_RGBA6_Z24;
|
bpmem.dstalpha.enable &&
|
||||||
|
bpmem.blendmode.alphaupdate &&
|
||||||
|
bpmem.zcontrol.pixel_format == PIXELFMT_RGBA6_Z24;
|
||||||
|
|
||||||
if (PerfQueryBase::ShouldEmulate())
|
if (PerfQueryBase::ShouldEmulate())
|
||||||
g_perf_query->EnableQuery(bpmem.zcontrol.early_ztest ? PQG_ZCOMP_ZCOMPLOC : PQG_ZCOMP);
|
g_perf_query->EnableQuery(bpmem.zcontrol.early_ztest ? PQG_ZCOMP_ZCOMPLOC : PQG_ZCOMP);
|
||||||
|
|
Loading…
Reference in New Issue