Cleaned up some warnings in the rsp

This commit is contained in:
zilmar 2015-01-29 19:57:13 +11:00
parent abca1bd56f
commit 8e715efe44
17 changed files with 254 additions and 229 deletions

View File

@ -235,7 +235,7 @@ __declspec(dllexport) DWORD DoRspCycles ( DWORD Cycles ) {
*/
if (Profiling && !IndvidualBlock) {
StartTimer(Timer_RSP_Running);
StartTimer((DWORD)Timer_RSP_Running);
}
WaitForSingleObjectEx(hMutex, 1000 * 100, FALSE);
@ -257,7 +257,7 @@ __declspec(dllexport) DWORD DoRspCycles ( DWORD Cycles ) {
ReleaseMutex(hMutex);
if (Profiling && !IndvidualBlock) {
StartTimer(Timer_R4300_Running);
StartTimer((DWORD)Timer_R4300_Running);
}
return Cycles;

View File

@ -533,7 +533,7 @@ void RSP_COP2_VECTOR (void) {
void RSP_Vector_VMULF (void) {
int el, del;
UWORD32 temp;
VECTOR result;
VECTOR result = {0};
for (el = 0; el < 8; el ++ ) {
del = EleSpec[RSPOpC.rs].B[el];
@ -562,7 +562,7 @@ void RSP_Vector_VMULF (void) {
void RSP_Vector_VMULU (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
for (el = 0; el < 8; el ++ ) {
del = EleSpec[RSPOpC.rs].B[el];
@ -582,7 +582,7 @@ void RSP_Vector_VMULU (void) {
void RSP_Vector_VMUDL (void) {
int el, del;
UWORD32 temp;
VECTOR result;
VECTOR result = {0};
for (el = 0; el < 8; el ++ ) {
del = EleSpec[RSPOpC.rs].B[el];
@ -598,7 +598,7 @@ void RSP_Vector_VMUDL (void) {
void RSP_Vector_VMUDM (void) {
int el, del;
UWORD32 temp;
VECTOR result;
VECTOR result = {0};
for (el = 0; el < 8; el ++ ) {
del = EleSpec[RSPOpC.rs].B[el];
@ -619,7 +619,7 @@ void RSP_Vector_VMUDM (void) {
void RSP_Vector_VMUDN (void) {
int el, del;
UWORD32 temp;
VECTOR result;
VECTOR result = {0};
for (el = 0; el < 8; el ++ ) {
del = EleSpec[RSPOpC.rs].B[el];
@ -639,7 +639,7 @@ void RSP_Vector_VMUDN (void) {
void RSP_Vector_VMUDH (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
for (el = 0; el < 8; el ++ ) {
del = EleSpec[RSPOpC.rs].B[el];
@ -674,7 +674,7 @@ void RSP_Vector_VMUDH (void) {
void RSP_Vector_VMACF (void) {
int el, del;
UWORD32 temp;
VECTOR result;
VECTOR result = {0};
for (el = 0; el < 8; el ++ ) {
del = EleSpec[RSPOpC.rs].B[el];
@ -717,13 +717,13 @@ void RSP_Vector_VMACF (void) {
void RSP_Vector_VMACU (void) {
int el, del;
UWORD32 temp, temp2;
VECTOR result;
VECTOR result = {0};
for (el = 0; el < 8; el ++ ) {
del = EleSpec[RSPOpC.rs].B[el];
temp.W = (long)RSP_Vect[RSPOpC.rd].HW[el] * (long)(DWORD)RSP_Vect[RSPOpC.rt].HW[del];
RSP_ACCUM[el].UHW[3] += (WORD)(temp.W >> 31);
RSP_ACCUM[el].UHW[3] = (RSP_ACCUM[el].UHW[3] + (WORD)(temp.W >> 31)) & 0xFFFF;
temp.UW = temp.UW << 1;
temp2.UW = temp.UHW[0] + RSP_ACCUM[el].UHW[1];
RSP_ACCUM[el].HW[1] = temp2.HW[0];
@ -750,7 +750,7 @@ void RSP_Vector_VMACU (void) {
void RSP_Vector_VMACQ (void) {
int el, del;
UWORD32 temp;
VECTOR result;
VECTOR result = {0};
for (el = 0; el < 8; el ++ ) {
del = EleSpec[RSPOpC.rs].B[el];
@ -793,7 +793,7 @@ void RSP_Vector_VMACQ (void) {
void RSP_Vector_VMADL (void) {
int el, del;
UWORD32 temp, temp2;
VECTOR result;
VECTOR result = {0};
for (el = 0; el < 8; el ++ ) {
del = EleSpec[RSPOpC.rs].B[el];
@ -832,7 +832,7 @@ void RSP_Vector_VMADL (void) {
void RSP_Vector_VMADM (void) {
int el, del;
UWORD32 temp, temp2;
VECTOR result;
VECTOR result = {0};
for (el = 0; el < 8; el ++ ) {
del = EleSpec[RSPOpC.rs].B[el];
@ -875,7 +875,7 @@ void RSP_Vector_VMADM (void) {
void RSP_Vector_VMADN (void) {
int el, del;
UWORD32 temp, temp2;
VECTOR result;
VECTOR result = {0};
for (el = 0; el < 8; el ++ ) {
del = EleSpec[RSPOpC.rs].B[el];
@ -916,7 +916,7 @@ void RSP_Vector_VMADN (void) {
void RSP_Vector_VMADH (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
for (el = 0; el < 8; el ++ ) {
del = EleSpec[RSPOpC.rs].B[el];
@ -950,7 +950,7 @@ void RSP_Vector_VMADH (void) {
void RSP_Vector_VADD (void) {
int el, del;
UWORD32 temp;
VECTOR result;
VECTOR result = {0};
for ( el = 0; el < 8; el++ ) {
del = EleSpec[RSPOpC.rs].B[el];
@ -979,7 +979,7 @@ void RSP_Vector_VADD (void) {
void RSP_Vector_VSUB (void) {
int el, del;
UWORD32 temp;
VECTOR result;
VECTOR result = {0};
for ( el = 0; el < 8; el++ ) {
del = EleSpec[RSPOpC.rs].B[el];
@ -1007,7 +1007,7 @@ void RSP_Vector_VSUB (void) {
void RSP_Vector_VABS (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
for ( el = 0; el < 8; el++ ) {
del = EleSpec[RSPOpC.rs].B[el];
@ -1031,7 +1031,7 @@ void RSP_Vector_VABS (void) {
void RSP_Vector_VADDC (void) {
int el, del;
UWORD32 temp;
VECTOR result;
VECTOR result = {0};
RSP_Flags[0].UW = 0;
for ( el = 0; el < 8; el++ ) {
@ -1050,7 +1050,7 @@ void RSP_Vector_VADDC (void) {
void RSP_Vector_VSUBC (void) {
int el, del;
UWORD32 temp;
VECTOR result;
VECTOR result = {0};
RSP_Flags[0].UW = 0x0;
for ( el = 0; el < 8; el++ ) {
@ -1112,7 +1112,7 @@ void RSP_Vector_VSAW (void) {
void RSP_Vector_VLT (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
RSP_Flags[1].UW = 0;
for ( el = 0; el < 8; el++ ) {
@ -1140,7 +1140,7 @@ void RSP_Vector_VLT (void) {
void RSP_Vector_VEQ (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
RSP_Flags[1].UW = 0;
for ( el = 0; el < 8; el++ ) {
@ -1160,7 +1160,7 @@ void RSP_Vector_VEQ (void) {
void RSP_Vector_VNE (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
RSP_Flags[1].UW = 0;
for ( el = 0; el < 8; el++ ) {
@ -1182,7 +1182,7 @@ void RSP_Vector_VNE (void) {
void RSP_Vector_VGE (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
RSP_Flags[1].UW = 0;
for ( el = 0; el < 8; el++ ) {
@ -1210,7 +1210,7 @@ void RSP_Vector_VGE (void) {
void RSP_Vector_VCL (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
for (el = 0;el < 8; el++) {
del = EleSpec[RSPOpC.rs].B[el];
@ -1267,7 +1267,7 @@ void RSP_Vector_VCL (void) {
void RSP_Vector_VCH (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
RSP_Flags[0].UW = 0;
RSP_Flags[1].UW = 0;
@ -1319,7 +1319,7 @@ void RSP_Vector_VCH (void) {
void RSP_Vector_VCR (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
RSP_Flags[0].UW = 0;
RSP_Flags[1].UW = 0;
@ -1355,7 +1355,7 @@ void RSP_Vector_VCR (void) {
void RSP_Vector_VMRG (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
for ( el = 0; el < 8; el ++ ){
del = EleSpec[RSPOpC.rs].B[el];
@ -1372,7 +1372,7 @@ void RSP_Vector_VMRG (void) {
void RSP_Vector_VAND (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
for ( el = 0; el < 8; el ++ ){
del = EleSpec[RSPOpC.rs].B[el];
@ -1384,7 +1384,7 @@ void RSP_Vector_VAND (void) {
void RSP_Vector_VNAND (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
for ( el = 0; el < 8; el ++ ){
del = EleSpec[RSPOpC.rs].B[el];
@ -1396,7 +1396,7 @@ void RSP_Vector_VNAND (void) {
void RSP_Vector_VOR (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
for ( el = 0; el < 8; el ++ ){
del = EleSpec[RSPOpC.rs].B[el];
@ -1408,7 +1408,7 @@ void RSP_Vector_VOR (void) {
void RSP_Vector_VNOR (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
for ( el = 0; el < 8; el ++ ){
del = EleSpec[RSPOpC.rs].B[el];
@ -1420,7 +1420,7 @@ void RSP_Vector_VNOR (void) {
void RSP_Vector_VXOR (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
for ( el = 0; el < 8; el ++ ){
del = EleSpec[RSPOpC.rs].B[el];
@ -1432,7 +1432,7 @@ void RSP_Vector_VXOR (void) {
void RSP_Vector_VNXOR (void) {
int el, del;
VECTOR result;
VECTOR result = {0};
for ( el = 0; el < 8; el ++ ){
del = EleSpec[RSPOpC.rs].B[el];

View File

@ -167,7 +167,7 @@ __declspec(dllexport) void DllAbout ( HWND hParent ) {
MessageBox(hParent,AboutMsg(),"About",MB_OK | MB_ICONINFORMATION );
}
BOOL WINAPI DllMain( HINSTANCE hinst, DWORD fdwReason, LPVOID lpvReserved ){
BOOL WINAPI DllMain( HINSTANCE hinst, DWORD /*fdwReason*/, LPVOID /*lpvReserved*/ ){
hinstDLL = hinst;
if (strcmp(VersionInfo(VERSION_INTERNAL_NAME).c_str(),"Project64") != 0)
{
@ -509,7 +509,7 @@ static BOOL GetBooleanCheck(HWND hDlg, DWORD DialogID) {
return (IsDlgButtonChecked(hDlg, DialogID) == BST_CHECKED) ? TRUE : FALSE;
}
BOOL CALLBACK CompilerDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
BOOL CALLBACK CompilerDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM /*lParam*/) {
char Buffer[256];
switch (uMsg) {
@ -588,7 +588,7 @@ BOOL CALLBACK CompilerDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam
return TRUE;
}
BOOL CALLBACK ConfigDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM lParam) {
BOOL CALLBACK ConfigDlgProc(HWND hDlg, UINT uMsg, WPARAM wParam, LPARAM /*lParam*/) {
HWND hWndItem;
DWORD value;
@ -728,7 +728,7 @@ __declspec(dllexport) void PluginLoaded (void)
SetCPU(CPUCore);
}
void UseUnregisteredSetting (int SettingID)
void UseUnregisteredSetting (int /*SettingID*/)
{
_asm int 3
}

View File

@ -79,7 +79,7 @@ void MmxMoveRegToReg(int Dest, int Source) {
}
void MmxMoveQwordVariableToReg(int Dest, void *Variable, char *VariableName) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" movq %s, qword ptr [%s]",mmx_Name(Dest), VariableName);
@ -100,7 +100,7 @@ void MmxMoveQwordVariableToReg(int Dest, void *Variable, char *VariableName) {
}
void MmxMoveQwordRegToVariable(int Dest, void *Variable, char *VariableName) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" movq qword ptr [%s], %s", VariableName, mmx_Name(Dest));
@ -121,7 +121,7 @@ void MmxMoveQwordRegToVariable(int Dest, void *Variable, char *VariableName) {
}
void MmxPorRegToReg(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" por %s, %s", mmx_Name(Dest), mmx_Name(Source));
@ -150,7 +150,7 @@ void MmxPorRegToReg(int Dest, int Source) {
}
void MmxPorVariableToReg(void * Variable, char * VariableName, int Dest) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" por %s, qword ptr [%s]",mmx_Name(Dest), VariableName);
@ -171,7 +171,7 @@ void MmxPorVariableToReg(void * Variable, char * VariableName, int Dest) {
}
void MmxPandRegToReg(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" pand %s, %s", mmx_Name(Dest), mmx_Name(Source));
@ -200,7 +200,7 @@ void MmxPandRegToReg(int Dest, int Source) {
}
void MmxPandVariableToReg(void * Variable, char * VariableName, int Dest) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" pand %s, qword ptr [%s]",mmx_Name(Dest), VariableName);
@ -221,7 +221,7 @@ void MmxPandVariableToReg(void * Variable, char * VariableName, int Dest) {
}
void MmxPandnRegToReg(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" pandn %s, %s", mmx_Name(Dest), mmx_Name(Source));
@ -250,7 +250,7 @@ void MmxPandnRegToReg(int Dest, int Source) {
}
void MmxXorRegToReg(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" pxor %s, %s", mmx_Name(Dest), mmx_Name(Source));
@ -279,7 +279,7 @@ void MmxXorRegToReg(int Dest, int Source) {
}
void MmxShuffleMemoryToReg(int Dest, void * Variable, char * VariableName, BYTE Immed) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" pshufw %s, [%s], %02X", mmx_Name(Dest), VariableName, Immed);
@ -301,7 +301,7 @@ void MmxShuffleMemoryToReg(int Dest, void * Variable, char * VariableName, BYTE
}
void MmxPcmpeqwRegToReg(int Dest, int Source){
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" pcmpeqw %s, %s", mmx_Name(Dest), mmx_Name(Source));
@ -330,7 +330,7 @@ void MmxPcmpeqwRegToReg(int Dest, int Source){
}
void MmxPmullwRegToReg(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" pmullw %s, %s", mmx_Name(Dest), mmx_Name(Source));
@ -359,7 +359,7 @@ void MmxPmullwRegToReg(int Dest, int Source) {
}
void MmxPmullwVariableToReg(int Dest, void * Variable, char * VariableName) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" pmullw %s, [%s]", mmx_Name(Dest), VariableName);
@ -379,7 +379,7 @@ void MmxPmullwVariableToReg(int Dest, void * Variable, char * VariableName) {
}
void MmxPmulhuwRegToReg(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" pmulhuw %s, %s", mmx_Name(Dest), mmx_Name(Source));
@ -408,7 +408,7 @@ void MmxPmulhuwRegToReg(int Dest, int Source) {
}
void MmxPmulhwRegToReg(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" pmulhw %s, %s", mmx_Name(Dest), mmx_Name(Source));
@ -437,7 +437,7 @@ void MmxPmulhwRegToReg(int Dest, int Source) {
}
void MmxPmulhwRegToVariable(int Dest, void * Variable, char * VariableName) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" pmulhw %s, [%s]", mmx_Name(Dest), VariableName);
@ -458,7 +458,7 @@ void MmxPmulhwRegToVariable(int Dest, void * Variable, char * VariableName) {
void MmxPsrlwImmed(int Dest, BYTE Immed) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" psrlw %s, %i", mmx_Name(Dest), Immed);
@ -479,7 +479,7 @@ void MmxPsrlwImmed(int Dest, BYTE Immed) {
}
void MmxPsrawImmed(int Dest, BYTE Immed) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" psraw %s, %i", mmx_Name(Dest), Immed);
@ -500,7 +500,7 @@ void MmxPsrawImmed(int Dest, BYTE Immed) {
}
void MmxPsllwImmed(int Dest, BYTE Immed) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" psllw %s, %i", mmx_Name(Dest), Immed);
@ -521,7 +521,7 @@ void MmxPsllwImmed(int Dest, BYTE Immed) {
}
void MmxPaddswRegToReg(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" paddsw %s, %s", mmx_Name(Dest), mmx_Name(Source));
@ -550,7 +550,7 @@ void MmxPaddswRegToReg(int Dest, int Source) {
}
void MmxPsubswRegToReg(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" psubsw %s, %s", mmx_Name(Dest), mmx_Name(Source));
@ -579,7 +579,7 @@ void MmxPsubswRegToReg(int Dest, int Source) {
}
void MmxPaddswVariableToReg(int Dest, void * Variable, char * VariableName) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" paddsw %s, [%s]", mmx_Name(Dest), VariableName);
@ -600,7 +600,7 @@ void MmxPaddswVariableToReg(int Dest, void * Variable, char * VariableName) {
}
void MmxPsubswVariableToReg(int Dest, void * Variable, char * VariableName) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" psubsw %s, [%s]", mmx_Name(Dest), VariableName);
@ -621,7 +621,7 @@ void MmxPsubswVariableToReg(int Dest, void * Variable, char * VariableName) {
}
void MmxPaddwRegToReg(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" paddw %s, %s", mmx_Name(Dest), mmx_Name(Source));
@ -650,7 +650,7 @@ void MmxPaddwRegToReg(int Dest, int Source) {
}
void MmxPackSignedDwords(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" packssdw %s, %s", mmx_Name(Dest), mmx_Name(Source));
@ -679,7 +679,7 @@ void MmxPackSignedDwords(int Dest, int Source) {
}
void MmxUnpackLowWord(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" punpcklwd %s, %s", mmx_Name(Dest), mmx_Name(Source));
@ -708,7 +708,7 @@ void MmxUnpackLowWord(int Dest, int Source) {
}
void MmxUnpackHighWord(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" punpckhwd %s, %s", mmx_Name(Dest), mmx_Name(Source));
@ -737,7 +737,7 @@ void MmxUnpackHighWord(int Dest, int Source) {
}
void MmxCompareGreaterWordRegToReg(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" pcmpgtw %s, %s", mmx_Name(Dest), mmx_Name(Source));

View File

@ -23,12 +23,12 @@
* should be forwarded to them so if they want them.
*
*/
#ifndef __OpCode
#define __OpCode
#pragma once
#include "Types.h"
#pragma warning(push)
#pragma warning(disable : 4201) // nonstandard extension used : nameless struct/union
typedef union tagOPCODE {
unsigned long Hex;
unsigned char Ascii[4];
@ -71,6 +71,8 @@ typedef union tagOPCODE {
};
} OPCODE;
#pragma warning(pop)
//RSP OpCodes
#define RSP_SPECIAL 0
#define RSP_REGIMM 1
@ -197,4 +199,3 @@ typedef union tagOPCODE {
#define RSP_LSC2_FV 9
#define RSP_LSC2_WV 10
#define RSP_LSC2_TV 11
#endif

View File

@ -154,7 +154,7 @@ public:
if (CpuUsage <= 0.2) { continue; }
sprintf(Buffer,"Func 0x%08X",ItemList[count]->first);
for (int NameID = 0; NameID < (sizeof(TimerNames) / sizeof(TIMER_NAME)); NameID++) {
if (ItemList[count]->first == TimerNames[NameID].Timer) {
if (ItemList[count]->first == (DWORD)TimerNames[NameID].Timer) {
strcpy(Buffer,TimerNames[NameID].Name);
break;
}

View File

@ -222,7 +222,7 @@ void DumpRSPData (void) {
void DrawRSPCommand ( LPARAM lParam ) {
char Command[150], Offset[30], Instruction[30], Arguments[40];
LPDRAWITEMSTRUCT ditem;
COLORREF oldColor;
COLORREF oldColor = {0};
int ResetColor;
HBRUSH hBrush;
RECT TextRect;
@ -699,15 +699,15 @@ void RSP_Commands_Setup ( HWND hDlg ) {
//}
SetWindowText(hDlg,"RSP Commands");
SetWindowPos(hDlg,NULL,X,Y,WindowWidth,WindowHeight, SWP_NOZORDER |
SWP_SHOWWINDOW);
SetWindowPos(hDlg,NULL,X,Y,WindowWidth,WindowHeight, SWP_NOZORDER | SWP_SHOWWINDOW);
}
char * RSPSpecialName ( DWORD OpCode, DWORD PC ) {
OPCODE command;
command.Hex = OpCode;
PC = PC; // unused
switch (command.funct) {
case RSP_SPECIAL_SLL:
if (command.rd != 0) {
@ -828,6 +828,9 @@ char * RSPRegimmName ( DWORD OpCode, DWORD PC ) {
char * RSPCop0Name ( DWORD OpCode, DWORD PC ) {
OPCODE command;
command.Hex = OpCode;
PC = PC; // unused
switch (command.rs) {
case RSP_COP0_MF:
sprintf(CommandName,"MFC0\t%s, %s",GPR_Name(command.rt),COP0_Name(command.rd));
@ -845,6 +848,8 @@ char * RSPCop0Name ( DWORD OpCode, DWORD PC ) {
char * RSPCop2Name ( DWORD OpCode, DWORD PC ) {
OPCODE command;
command.Hex = OpCode;
PC = PC; // unused
if ( ( command.rs & 0x10 ) == 0 ) {
switch (command.rs) {
@ -1057,6 +1062,8 @@ char * RSPLc2Name ( DWORD OpCode, DWORD PC ) {
OPCODE command;
command.Hex = OpCode;
PC = PC; // unused
switch (command.rd) {
case RSP_LSC2_BV:
sprintf(CommandName,"LBV\t$v%d [%d], 0x%04X (%s)",command.rt, command.del,
@ -1117,6 +1124,8 @@ char * RSPSc2Name ( DWORD OpCode, DWORD PC ) {
OPCODE command;
command.Hex = OpCode;
PC = PC; // unused
switch (command.rd) {
case RSP_LSC2_BV:
sprintf(CommandName,"SBV\t$v%d [%d], 0x%04X (%s)",command.rt, command.del,

View File

@ -135,7 +135,6 @@ DWORD WriteToAccum2 (int Location, int PC, BOOL RecursiveCall) {
OPCODE RspOp;
DWORD BranchTarget = 0;
signed int BranchImmed = 0;
DWORD JumpTarget = 0;
int Instruction_State = NextInstruction;
if (Compiler.bAccum == FALSE) return TRUE;
@ -434,7 +433,6 @@ BOOL WriteToVectorDest2 (DWORD DestReg, int PC, BOOL RecursiveCall) {
OPCODE RspOp;
DWORD BranchTarget = 0;
signed int BranchImmed = 0;
DWORD JumpTarget = 0;
int Instruction_State = NextInstruction;
@ -1137,6 +1135,9 @@ BOOL IsRegisterConstant (DWORD Reg, DWORD * Constant) {
*************************************************************/
BOOL IsOpcodeBranch(DWORD PC, OPCODE RspOp) {
PC = PC; // unused
switch (RspOp.op) {
case RSP_REGIMM:
switch (RspOp.rt) {
@ -1253,6 +1254,9 @@ BOOL IsOpcodeBranch(DWORD PC, OPCODE RspOp) {
#define InvalidOpcode 0x0040
#pragma warning(push)
#pragma warning(disable : 4201) // nonstandard extension used : nameless struct/union
typedef struct {
union {
DWORD DestReg;
@ -1266,6 +1270,8 @@ typedef struct {
DWORD flags;
} OPCODE_INFO;
#pragma warning(pop)
void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
switch (RspOp->op) {
case RSP_REGIMM:
@ -1276,7 +1282,7 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
case RSP_REGIMM_BGEZAL:
info->flags = InvalidOpcode;
info->SourceReg0 = RspOp->rs;
info->SourceReg1 = -1;
info->SourceReg1 = (DWORD)-1;
break;
default:
@ -1288,9 +1294,9 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
case RSP_SPECIAL:
switch (RspOp->funct) {
case RSP_SPECIAL_BREAK:
info->DestReg = -1;
info->SourceReg0 = -1;
info->SourceReg1 = -1;
info->DestReg = (DWORD)-1;
info->SourceReg0 = (DWORD)-1;
info->SourceReg1 = (DWORD)-1;
info->flags = GPR_Instruction;
break;
@ -1299,7 +1305,7 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
case RSP_SPECIAL_SRA:
info->DestReg = RspOp->rd;
info->SourceReg0 = RspOp->rt;
info->SourceReg1 = -1;
info->SourceReg1 = (DWORD)-1;
info->flags = GPR_Instruction;
break;
case RSP_SPECIAL_SLLV:
@ -1323,8 +1329,8 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
case RSP_SPECIAL_JR:
info->flags = InvalidOpcode;
info->SourceReg0 = -1;
info->SourceReg1 = -1;
info->SourceReg0 = (DWORD)-1;
info->SourceReg1 = (DWORD)-1;
break;
default:
@ -1336,8 +1342,8 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
case RSP_J:
case RSP_JAL:
info->flags = InvalidOpcode;
info->SourceReg0 = -1;
info->SourceReg1 = -1;
info->SourceReg0 = (DWORD)-1;
info->SourceReg1 = (DWORD)-1;
break;
case RSP_BEQ:
case RSP_BNE:
@ -1349,7 +1355,7 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
case RSP_BGTZ:
info->flags = InvalidOpcode;
info->SourceReg0 = RspOp->rs;
info->SourceReg1 = -1;
info->SourceReg1 = (DWORD)-1;
break;
case RSP_ADDI:
@ -1361,14 +1367,14 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
case RSP_XORI:
info->DestReg = RspOp->rt;
info->SourceReg0 = RspOp->rs;
info->SourceReg1 = -1;
info->SourceReg1 = (DWORD)-1;
info->flags = GPR_Instruction;
break;
case RSP_LUI:
info->DestReg = RspOp->rt;
info->SourceReg0 = -1;
info->SourceReg1 = -1;
info->SourceReg0 = (DWORD)-1;
info->SourceReg1 = (DWORD)-1;
info->flags = GPR_Instruction;
break;
@ -1376,15 +1382,15 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
switch (RspOp->rs) {
case RSP_COP0_MF:
info->DestReg = RspOp->rt;
info->SourceReg0 = -1;
info->SourceReg1 = -1;
info->SourceReg0 = (DWORD)-1;
info->SourceReg1 = (DWORD)-1;
info->flags = COPO_MF_Instruction | GPR_Instruction | Load_Operation;
break;
case RSP_COP0_MT:
info->StoredReg = RspOp->rt;
info->SourceReg0 = -1;
info->SourceReg1 = -1;
info->SourceReg0 = (DWORD)-1;
info->SourceReg1 = (DWORD)-1;
info->flags = GPR_Instruction | Store_Operation;
break;
}
@ -1394,9 +1400,9 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
if ((RspOp->rs & 0x10) != 0) {
switch (RspOp->funct) {
case RSP_VECTOR_VNOOP:
info->DestReg = -1;
info->SourceReg0 = -1;
info->SourceReg1 = -1;
info->DestReg = (DWORD)-1;
info->SourceReg0 = (DWORD)-1;
info->SourceReg1 = (DWORD)-1;
info->flags = VEC_Instruction;
break;
@ -1466,8 +1472,8 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
case RSP_VECTOR_VSAW:
// info->flags = InvalidOpcode;
info->DestReg = RspOp->sa;
info->SourceReg0 = -1;
info->SourceReg1 = -1;
info->SourceReg0 = (DWORD)-1;
info->SourceReg1 = (DWORD)-1;
info->flags = VEC_Instruction | Accum_Operation | VEC_Accumulate;
break;
@ -1480,14 +1486,14 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
switch (RspOp->rs) {
case RSP_COP2_CT:
info->StoredReg = RspOp->rt;
info->SourceReg0 = -1;
info->SourceReg1 = -1;
info->SourceReg0 = (DWORD)-1;
info->SourceReg1 = (DWORD)-1;
info->flags = GPR_Instruction | Store_Operation | Flag_Instruction;
break;
case RSP_COP2_CF:
info->DestReg = RspOp->rt;
info->SourceReg0 = -1;
info->SourceReg1 = -1;
info->SourceReg0 = (DWORD)-1;
info->SourceReg1 = (DWORD)-1;
info->flags = GPR_Instruction | Load_Operation | Flag_Instruction;
break;
@ -1495,13 +1501,13 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
case RSP_COP2_MT:
info->DestReg = RspOp->rd;
info->SourceReg0 = RspOp->rt;
info->SourceReg1 = -1;
info->SourceReg1 = (DWORD)-1;
info->flags = VEC_Instruction | GPR_Instruction | Load_Operation;
break;
case RSP_COP2_MF:
info->DestReg = RspOp->rt;
info->SourceReg0 = RspOp->rd;
info->SourceReg1 = -1;
info->SourceReg1 = (DWORD)-1;
info->flags = VEC_Instruction | GPR_Instruction | Store_Operation;
break;
default:
@ -1518,7 +1524,7 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
case RSP_LHU:
info->DestReg = RspOp->rt;
info->IndexReg = RspOp->base;
info->SourceReg1 = -1;
info->SourceReg1 = (DWORD)-1;
info->flags = Load_Operation | GPR_Instruction;
break;
case RSP_SB:
@ -1526,7 +1532,7 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
case RSP_SW:
info->StoredReg = RspOp->rt;
info->IndexReg = RspOp->base;
info->SourceReg1 = -1;
info->SourceReg1 = (DWORD)-1;
info->flags = Store_Operation | GPR_Instruction;
break;
case RSP_LC2:
@ -1541,7 +1547,7 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
case RSP_LSC2_PV:
info->DestReg = RspOp->rt;
info->IndexReg = RspOp->base;
info->SourceReg1 = -1;
info->SourceReg1 = (DWORD)-1;
info->flags = Load_Operation | VEC_Instruction;
break;
@ -1569,7 +1575,7 @@ void GetInstructionInfo(DWORD PC, OPCODE * RspOp, OPCODE_INFO * info) {
case RSP_LSC2_WV:
info->DestReg = RspOp->rt;
info->IndexReg = RspOp->base;
info->SourceReg1 = -1;
info->SourceReg1 = (DWORD)-1;
info->flags = Store_Operation | VEC_Instruction;
break;
case RSP_LSC2_TV:
@ -1681,14 +1687,11 @@ BOOL CompareInstructions(DWORD PC, OPCODE * Top, OPCODE * Bottom) {
} else if ((info1.flags & MemOperation_Mask) != 0) {
/* We have a vector memory operation */
return (info1.IndexReg == info0.DestReg) ? FALSE : TRUE;
} else {
/* We could have memory or normal gpr instruction here
** paired with some kind of vector operation
*/
return TRUE;
}
return FALSE;
/* We could have memory or normal gpr instruction here
** paired with some kind of vector operation
*/
return TRUE;
case 0x0A: /* Vector than Vector - 10,10 */
/*

View File

@ -41,6 +41,8 @@
#include "Profiling.h"
#include "x86.h"
#pragma warning(disable : 4152) // nonstandard extension, function/data pointer conversion in expression
/* #define REORDER_BLOCK_VERBOSE */
#define LINK_BRANCHES_VERBOSE /* no choice really */
#define X86_RECOMP_VERBOSE
@ -899,7 +901,7 @@ DWORD RunRecompilerCPU ( DWORD Cycles ) {
if (Block == NULL) {
if (Profiling && !IndvidualBlock) {
StartTimer(Timer_Compiling);
StartTimer((DWORD)Timer_Compiling);
}
__try {

View File

@ -39,6 +39,8 @@
#include "x86.h"
#include "Profiling.h"
#pragma warning(disable : 4152) // nonstandard extension, function/data pointer conversion in expression
UWORD32 Recp, RecpResult, SQroot, SQrootResult;
DWORD ESP_RegSave = 0, EBP_RegSave = 0;
DWORD BranchCompare = 0;
@ -445,7 +447,7 @@ void Compile_ADDI ( void ) {
AddConstToVariable(Immediate, &RSP_GPR[RSPOpC.rt].UW, GPR_Name(RSPOpC.rt));
} else if (RSPOpC.rs == 0) {
MoveConstToVariable(Immediate, &RSP_GPR[RSPOpC.rt].UW, GPR_Name(RSPOpC.rt));
} else if (IsRegConst(RSPOpC.rs) && 1) {
} else if ((IsRegConst(RSPOpC.rs) && 1) != 0) {
MoveConstToVariable(MipsRegConst(RSPOpC.rs) + Immediate, &RSP_GPR[RSPOpC.rt].UW, GPR_Name(RSPOpC.rt));
} else {
MoveVariableToX86reg(&RSP_GPR[RSPOpC.rs].UW, GPR_Name(RSPOpC.rs), x86_EAX);
@ -1678,7 +1680,7 @@ void Compile_Cop0_MT ( void )
{
if (Profiling)
{
PushImm32("Timer_RDP_Running",Timer_RDP_Running);
PushImm32("Timer_RDP_Running",(DWORD)Timer_RDP_Running);
Call_Direct(StartTimer,"StartTimer");
AddConstToX86Reg(x86_ESP, 4);
Push(x86_EAX);
@ -2266,14 +2268,14 @@ void Compile_Vector_VMUDM ( void ) {
/*sprintf(Reg, "RSP_Vect[%i].HW[%i]", RSPOpC.rd, el);
MoveSxVariableToX86regHalf(&RSP_Vect[RSPOpC.rd].HW[el], Reg, x86_EAX);*/
MoveSxX86RegPtrDispToX86RegHalf(x86_EBP, el * 2, x86_EAX);
MoveSxX86RegPtrDispToX86RegHalf(x86_EBP, (BYTE)(el * 2), x86_EAX);
if (bOptimize == FALSE) {
if (bWriteToDest == TRUE) {
sprintf(Reg, "RSP_Vect[%i].HW[%i]", RSPOpC.rt, del);
MoveZxVariableToX86regHalf(&RSP_Vect[RSPOpC.rt].HW[del], Reg, x86_EBX);
} else {
MoveZxX86RegPtrDispToX86RegHalf(x86_ECX, del * 2, x86_EBX);
MoveZxX86RegPtrDispToX86RegHalf(x86_ECX, (BYTE)(del * 2), x86_EBX);
}
}
@ -2283,7 +2285,7 @@ void Compile_Vector_VMUDM ( void ) {
ShiftRightUnsignImmed(x86_EAX, 16);
/*sprintf(Reg, "RSP_Vect[%i].HW[%i]", RSPOpC.sa, el);
MoveX86regHalfToVariable(x86_EAX, &RSP_Vect[RSPOpC.sa].HW[el], Reg);*/
MoveX86regHalfToX86regPointerDisp(x86_EAX, x86_ECX, el * 2);
MoveX86regHalfToX86regPointerDisp(x86_EAX, x86_ECX, (BYTE)(el * 2));
} else {
MoveX86RegToX86Reg(x86_EAX, x86_EDX);
ShiftRightSignImmed(x86_EDX, 16);
@ -2298,7 +2300,7 @@ void Compile_Vector_VMUDM ( void ) {
if (bWriteToDest == TRUE) {
/*sprintf(Reg, "RSP_Vect[%i].HW[%i]", RSPOpC.sa, el);
MoveX86regHalfToVariable(x86_EDX, &RSP_Vect[RSPOpC.sa].HW[el], Reg);*/
MoveX86regHalfToX86regPointerDisp(x86_EDX, x86_ECX, el * 2);
MoveX86regHalfToX86regPointerDisp(x86_EDX, x86_ECX, (BYTE)(el * 2));
}
}
}
@ -2382,7 +2384,7 @@ void Compile_Vector_VMUDN ( void ) {
/*sprintf(Reg, "RSP_Vect[%i].UHW[%i]", RSPOpC.rd, el);
MoveZxVariableToX86regHalf(&RSP_Vect[RSPOpC.rd].UHW[el], Reg, x86_EAX);*/
MoveZxX86RegPtrDispToX86RegHalf(x86_EBP, el * 2, x86_EAX);
MoveZxX86RegPtrDispToX86RegHalf(x86_EBP, (BYTE)(el * 2), x86_EAX);
if (bOptimize == FALSE) {
sprintf(Reg, "RSP_Vect[%i].HW[%i]", RSPOpC.rt, del);
@ -2616,7 +2618,6 @@ void Compile_Vector_VMACF ( void ) {
BOOL bOptimize = ((RSPOpC.rs & 0x0f) >= 8) ? TRUE : FALSE;
BOOL bWriteToDest = WriteToVectorDest(RSPOpC.sa, CompilePC);
BOOL bWriteToAccum = WriteToAccum(EntireAccum, CompilePC);
#ifndef CompileVmacf
Cheat_r4300iOpcode(RSP_Vector_VMACF,"RSP_Vector_VMACF"); return;
@ -2757,7 +2758,6 @@ void Compile_Vector_VMADM ( void ) {
BOOL bOptimize = ((RSPOpC.rs & 0x0f) >= 8) ? TRUE : FALSE;
BOOL bWriteToDest = WriteToVectorDest(RSPOpC.sa, CompilePC);
BOOL bWriteToAccum = WriteToAccum(EntireAccum, CompilePC);
#ifndef CompileVmadm
Cheat_r4300iOpcode(RSP_Vector_VMADM,"RSP_Vector_VMADM"); return;
@ -2797,14 +2797,14 @@ void Compile_Vector_VMADM ( void ) {
/*sprintf(Reg, "RSP_Vect[%i].HW[%i]", RSPOpC.rd, el);
MoveSxVariableToX86regHalf(&RSP_Vect[RSPOpC.rd].HW[el], Reg, x86_EAX);*/
MoveSxX86RegPtrDispToX86RegHalf(x86_EBP, el * 2, x86_EAX);
MoveSxX86RegPtrDispToX86RegHalf(x86_EBP, (BYTE)(el * 2), x86_EAX);
if (bOptimize == FALSE) {
if (bWriteToDest == TRUE) {
sprintf(Reg, "RSP_Vect[%i].HW[%i]", RSPOpC.rt, del);
MoveZxVariableToX86regHalf(&RSP_Vect[RSPOpC.rt].HW[del], "RSP_Vect[RSPOpC.rt].HW[del]", x86_EBX);
} else {
MoveZxX86RegPtrDispToX86RegHalf(x86_ECX, del * 2, x86_EBX);
MoveZxX86RegPtrDispToX86RegHalf(x86_ECX, (BYTE)(del * 2), x86_EBX);
}
}
@ -2828,7 +2828,7 @@ void Compile_Vector_VMADM ( void ) {
/*sprintf(Reg, "RSP_Vect[%i].HW[%i]", RSPOpC.sa, el);
MoveX86regHalfToVariable(x86_EAX, &RSP_Vect[RSPOpC.sa].HW[el], Reg);*/
MoveX86regHalfToX86regPointerDisp(x86_EAX, x86_ECX, el * 2);
MoveX86regHalfToX86regPointerDisp(x86_EAX, x86_ECX, (BYTE)(el * 2));
}
}
@ -2841,7 +2841,6 @@ void Compile_Vector_VMADN ( void ) {
BOOL bOptimize = ((RSPOpC.rs & 0x0f) >= 8) ? TRUE : FALSE;
BOOL bWriteToDest = WriteToVectorDest(RSPOpC.sa, CompilePC);
BOOL bWriteToAccum = WriteToAccum(EntireAccum, CompilePC);
#ifndef CompileVmadn
Cheat_r4300iOpcode(RSP_Vector_VMADN,"RSP_Vector_VMADN"); return;
@ -2873,7 +2872,7 @@ void Compile_Vector_VMADN ( void ) {
/*sprintf(Reg, "RSP_Vect[%i].UHW[%i]", RSPOpC.rd, el);
MoveZxVariableToX86regHalf(&RSP_Vect[RSPOpC.rd].UHW[el], Reg, x86_EAX);*/
MoveZxX86RegPtrDispToX86RegHalf(x86_EBP, el * 2, x86_EAX);
MoveZxX86RegPtrDispToX86RegHalf(x86_EBP, (BYTE)(el * 2), x86_EAX);
if (bOptimize == FALSE) {
sprintf(Reg, "RSP_Vect[%i].HW[%i]", RSPOpC.rt, del);
@ -2900,7 +2899,7 @@ void Compile_Vector_VMADN ( void ) {
/* Weird eh */
CompConstToX86reg(x86_EAX, 0x7fff);
CondMoveGreater(x86_ECX, x86_ESI);
CompConstToX86reg(x86_EAX, -0x8000);
CompConstToX86reg(x86_EAX, (DWORD)(-0x8000));
CondMoveLess(x86_ECX, x86_EDI);
sprintf(Reg, "RSP_Vect[%i].HW[%i]", RSPOpC.sa, el);
@ -3007,14 +3006,14 @@ void Compile_Vector_VMADH ( void ) {
/*sprintf(Reg, "RSP_Vect[%i].HW[%i]", RSPOpC.rd, el);
MoveSxVariableToX86regHalf(&RSP_Vect[RSPOpC.rd].HW[el], Reg, x86_EAX);*/
MoveSxX86RegPtrDispToX86RegHalf(x86_EBP, el * 2, x86_EAX);
MoveSxX86RegPtrDispToX86RegHalf(x86_EBP, (BYTE)(el * 2), x86_EAX);
if (bOptimize == FALSE) {
if (bWriteToDest == TRUE) {
sprintf(Reg, "RSP_Vect[%i].HW[%i]", RSPOpC.rt, del);
MoveSxVariableToX86regHalf(&RSP_Vect[RSPOpC.rt].HW[del], Reg, x86_EBX);
} else {
MoveSxX86RegPtrDispToX86RegHalf(x86_ECX, del * 2, x86_EBX);
MoveSxX86RegPtrDispToX86RegHalf(x86_ECX, (BYTE)(del * 2), x86_EBX);
}
}
@ -3032,7 +3031,7 @@ void Compile_Vector_VMADH ( void ) {
/*sprintf(Reg, "RSP_Vect[%i].HW[%i]", RSPOpC.sa, el);
MoveX86regHalfToVariable(x86_EAX, &RSP_Vect[RSPOpC.sa].HW[el], Reg);*/
MoveX86regHalfToX86regPointerDisp(x86_EAX, x86_ECX, el * 2);
MoveX86regHalfToX86regPointerDisp(x86_EAX, x86_ECX, (BYTE)(el * 2));
}
}
Pop(x86_EBP);
@ -3398,7 +3397,7 @@ void Compile_Vector_VADDC ( void ) {
/*sprintf(Reg, "RSP_Vect[%i].HW[%i]", RSPOpC.rd, el);
MoveZxVariableToX86regHalf(&RSP_Vect[RSPOpC.rd].HW[el], Reg, x86_EAX);*/
MoveZxX86RegPtrDispToX86RegHalf(x86_EBP, el * 2, x86_EAX);
MoveZxX86RegPtrDispToX86RegHalf(x86_EBP, (BYTE)(el * 2), x86_EAX);
if (bElement == FALSE) {
sprintf(Reg, "RSP_Vect[%i].HW[%i]", RSPOpC.rt, del);
@ -3411,7 +3410,7 @@ void Compile_Vector_VADDC ( void ) {
TestConstToX86Reg(0xFFFF0000, x86_EAX);
Setnz(x86_EDX);
if ((7 - el) != 0) {
ShiftLeftSignImmed(x86_EDX, 7 - el);
ShiftLeftSignImmed(x86_EDX, (BYTE)(7 - el));
}
OrX86RegToX86Reg(x86_ECX, x86_EDX);
@ -3470,13 +3469,13 @@ void Compile_Vector_VSUBC ( void ) {
XorX86RegToX86Reg(x86_EDX, x86_EDX);
TestConstToX86Reg(0x0000FFFF, x86_EAX);
Setnz(x86_EDX);
ShiftLeftSignImmed(x86_EDX, 15 - el);
ShiftLeftSignImmed(x86_EDX, (BYTE)(15 - el));
OrX86RegToX86Reg(x86_ECX, x86_EDX);
XorX86RegToX86Reg(x86_EDX, x86_EDX);
TestConstToX86Reg(0xFFFF0000, x86_EAX);
Setnz(x86_EDX);
ShiftLeftSignImmed(x86_EDX, 7 - el);
ShiftLeftSignImmed(x86_EDX, (BYTE)(7 - el));
OrX86RegToX86Reg(x86_ECX, x86_EDX);
if (bWriteToAccum != FALSE) {

View File

@ -36,6 +36,8 @@
#include "log.h"
#include "x86.h"
#pragma warning(disable : 4152) // nonstandard extension, function/data pointer conversion in expression
void RSP_Sections_VMUDH ( OPCODE RspOp, DWORD AccumStyle ) {
char Reg[256];
@ -798,7 +800,7 @@ BOOL Check_Section_000(void) {
void Compile_Section_000(void) {
char Reg[256];
OPCODE vmudn, vmadn;
OPCODE vmudn, vmadn = {0};
DWORD i;
RSP_LW_IMEM(CompilePC + 0x00, &vmudn.Hex);

View File

@ -44,7 +44,7 @@ char * sse_Strings[8] = {
#define sse_Name(Reg) (sse_Strings[(Reg)])
void SseMoveAlignedVariableToReg(void *Variable, char *VariableName, int sseReg) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" movaps %s, xmmword ptr [%s]",sse_Name(sseReg), VariableName);
@ -65,7 +65,7 @@ void SseMoveAlignedVariableToReg(void *Variable, char *VariableName, int sseReg)
}
void SseMoveAlignedN64MemToReg(int sseReg, int AddrReg) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" movaps %s, xmmword ptr [Dmem+%s]",sse_Name(sseReg), x86_Name(AddrReg));
@ -96,7 +96,7 @@ void SseMoveAlignedN64MemToReg(int sseReg, int AddrReg) {
}
void SseMoveAlignedRegToVariable(int sseReg, void *Variable, char *VariableName) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" movaps xmmword ptr [%s], %s",VariableName, sse_Name(sseReg));
@ -117,7 +117,7 @@ void SseMoveAlignedRegToVariable(int sseReg, void *Variable, char *VariableName)
}
void SseMoveAlignedRegToN64Mem(int sseReg, int AddrReg) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" movaps xmmword ptr [Dmem+%s], %s",x86_Name(AddrReg),sse_Name(sseReg));
@ -148,7 +148,7 @@ void SseMoveAlignedRegToN64Mem(int sseReg, int AddrReg) {
}
void SseMoveUnalignedVariableToReg(void *Variable, char *VariableName, int sseReg) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" movups %s, xmmword ptr [%s]",sse_Name(sseReg), VariableName);
@ -169,7 +169,7 @@ void SseMoveUnalignedVariableToReg(void *Variable, char *VariableName, int sseRe
}
void SseMoveUnalignedN64MemToReg(int sseReg, int AddrReg) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" movups %s, xmmword ptr [Dmem+%s]",sse_Name(sseReg), x86_Name(AddrReg));
@ -200,7 +200,7 @@ void SseMoveUnalignedN64MemToReg(int sseReg, int AddrReg) {
}
void SseMoveUnalignedRegToVariable(int sseReg, void *Variable, char *VariableName) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" movups xmmword ptr [%s], %s",VariableName, sse_Name(sseReg));
@ -221,7 +221,7 @@ void SseMoveUnalignedRegToVariable(int sseReg, void *Variable, char *VariableNam
}
void SseMoveUnalignedRegToN64Mem(int sseReg, int AddrReg) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" movups xmmword ptr [Dmem+%s], %s",x86_Name(AddrReg),sse_Name(sseReg));
@ -252,7 +252,7 @@ void SseMoveUnalignedRegToN64Mem(int sseReg, int AddrReg) {
}
void SseMoveRegToReg(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" movaps %s, %s", sse_Name(Dest), sse_Name(Source));
@ -282,7 +282,7 @@ void SseMoveRegToReg(int Dest, int Source) {
}
void SseXorRegToReg(int Dest, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" xorps %s, %s", sse_Name(Dest), sse_Name(Source));
@ -311,7 +311,7 @@ void SseXorRegToReg(int Dest, int Source) {
}
void SseShuffleReg(int Dest, int Source, BYTE Immed) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" shufps %s, %s, %02X", sse_Name(Dest), sse_Name(Source), Immed);

View File

@ -32,6 +32,8 @@
#include "RSP registers.h"
#include "log.h"
#pragma warning(disable : 4152) // nonstandard extension, function/data pointer conversion in expression
#define PUTDST8(dest,value) (*((BYTE *)(dest))=(BYTE)(value)); dest += 1;
#define PUTDST16(dest,value) (*((WORD *)(dest))=(WORD)(value)); dest += 2;
#define PUTDST32(dest,value) (*((DWORD *)(dest))=(DWORD)(value)); dest += 4;
@ -57,7 +59,7 @@ extern BOOL ConditionalMove;
#define x86Half_Name(Reg) (x86_HalfStrings[(Reg)])
void AdcX86RegToX86Reg(int Destination, int Source) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" adc %s, %s",x86_Name(Destination),x86_Name(Source));
switch (Source) {
@ -246,7 +248,7 @@ void AddX86regHalfToVariable(int x86reg, void * Variable, char * VariableName) {
}
void AddX86RegToX86Reg(int Destination, int Source) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" add %s, %s",x86_Name(Destination),x86_Name(Source));
switch (Source) {
@ -355,7 +357,7 @@ void AndX86RegToVariable(void * Variable, char * VariableName, int x86Reg) {
}
void AndX86RegToX86Reg(int Destination, int Source) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" and %s, %s",x86_Name(Destination),x86_Name(Source));
switch (Destination) {
@ -382,7 +384,7 @@ void AndX86RegToX86Reg(int Destination, int Source) {
}
void AndX86RegHalfToX86RegHalf(int Destination, int Source) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" and %s, %s",x86Half_Name(Destination),x86Half_Name(Source));
PUTDST8(RecompPos, 0x66);
@ -448,7 +450,7 @@ void CondMoveEqual(int Destination, int Source) {
CPU_Message(" label:");
x86_SetBranch8b(Jump, RecompPos);
} else {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" cmove %s, %s",x86_Name(Destination),x86_Name(Source));
PUTDST16(RecompPos,0x440F);
@ -490,7 +492,7 @@ void CondMoveNotEqual(int Destination, int Source) {
CPU_Message(" label:");
x86_SetBranch8b(Jump, RecompPos);
} else {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" cmovne %s, %s",x86_Name(Destination),x86_Name(Source));
PUTDST16(RecompPos,0x450F);
@ -532,7 +534,7 @@ void CondMoveGreater(int Destination, int Source) {
CPU_Message(" label:");
x86_SetBranch8b(Jump, RecompPos);
} else {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" cmovg %s, %s",x86_Name(Destination),x86_Name(Source));
PUTDST16(RecompPos,0x4F0F);
@ -574,7 +576,7 @@ void CondMoveGreaterEqual(int Destination, int Source) {
CPU_Message(" label:");
x86_SetBranch8b(Jump, RecompPos);
} else {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" cmovge %s, %s",x86_Name(Destination),x86_Name(Source));
PUTDST16(RecompPos,0x4D0F);
@ -616,7 +618,7 @@ void CondMoveLess(int Destination, int Source) {
CPU_Message(" label:");
x86_SetBranch8b(Jump, RecompPos);
} else {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" cmovl %s, %s",x86_Name(Destination),x86_Name(Source));
PUTDST16(RecompPos,0x4C0F);
@ -658,7 +660,7 @@ void CondMoveLessEqual(int Destination, int Source) {
CPU_Message(" label:");
x86_SetBranch8b(Jump, RecompPos);
} else {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" cmovle %s, %s",x86_Name(Destination),x86_Name(Source));
PUTDST16(RecompPos,0x4E0F);
@ -772,7 +774,7 @@ void CompVariableToX86reg(int x86Reg, void * Variable, char * VariableName) {
}
void CompX86RegToX86Reg(int Destination, int Source) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" cmp %s, %s",x86_Name(Destination),x86_Name(Source));
@ -872,7 +874,7 @@ void imulX86reg(int x86reg) {
}
void ImulX86RegToX86Reg(int Destination, int Source) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" imul %s, %s",x86_Name(Destination), x86_Name(Source));
@ -1070,7 +1072,7 @@ void JsLabel32(char *Label, DWORD Value) {
**/
void LeaSourceAndOffset(int x86DestReg, int x86SourceReg, int offset) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" lea %s, [%s + %0Xh]",x86_Name(x86DestReg),x86_Name(x86SourceReg),offset);
switch (x86DestReg) {
@ -1222,7 +1224,7 @@ void MoveX86regPointerToX86regHalf(int Destination, int AddrReg) {
}
void MoveX86regPointerToX86reg(int Destination, int AddrReg) {
BYTE x86Amb;
BYTE x86Amb = 0;
CPU_Message(" mov %s, dword ptr [%s]",x86_Name(Destination), x86_Name(AddrReg));
switch (AddrReg) {
@ -1254,7 +1256,7 @@ void MoveX86regPointerToX86reg(int Destination, int AddrReg) {
}
void MoveX86regByteToX86regPointer(int Source, int AddrReg) {
BYTE x86Amb;
BYTE x86Amb = 0;
CPU_Message(" mov byte ptr [%s], %s",x86_Name(AddrReg), x86Byte_Name(Source));
switch (AddrReg) {
@ -1286,7 +1288,7 @@ void MoveX86regByteToX86regPointer(int Source, int AddrReg) {
}
void MoveX86regHalfToX86regPointer(int Source, int AddrReg) {
BYTE x86Amb;
BYTE x86Amb = 0;
CPU_Message(" mov word ptr [%s], %s",x86_Name(AddrReg), x86Half_Name(Source));
@ -1319,7 +1321,7 @@ void MoveX86regHalfToX86regPointer(int Source, int AddrReg) {
}
void MoveX86regHalfToX86regPointerDisp(int Source, int AddrReg, BYTE Disp) {
BYTE x86Amb;
BYTE x86Amb = 0;
CPU_Message(" mov word ptr [%s+%X], %s",x86_Name(AddrReg), Disp, x86Half_Name(Source));
@ -1353,7 +1355,7 @@ void MoveX86regHalfToX86regPointerDisp(int Source, int AddrReg, BYTE Disp) {
}
void MoveX86regToX86regPointer(int Source, int AddrReg) {
BYTE x86Amb;
BYTE x86Amb = 0;
CPU_Message(" mov dword ptr [%s], %s",x86_Name(AddrReg), x86_Name(Source));
switch (AddrReg) {
@ -1385,7 +1387,7 @@ void MoveX86regToX86regPointer(int Source, int AddrReg) {
}
void MoveX86RegToX86regPointerDisp ( int Source, int AddrReg, BYTE Disp ) {
BYTE x86Amb;
BYTE x86Amb = 0;
CPU_Message(" mov dword ptr [%s+%X], %s",x86_Name(AddrReg), Disp, x86_Name(Source));
switch (AddrReg) {
@ -1418,7 +1420,7 @@ void MoveX86RegToX86regPointerDisp ( int Source, int AddrReg, BYTE Disp ) {
}
void MoveN64MemDispToX86reg(int x86reg, int AddrReg, BYTE Disp) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" mov %s, dword ptr [%s+Dmem+%Xh]",x86_Name(x86reg),x86_Name(AddrReg),Disp);
switch (AddrReg) {
@ -1446,7 +1448,7 @@ void MoveN64MemDispToX86reg(int x86reg, int AddrReg, BYTE Disp) {
}
void MoveN64MemToX86reg(int x86reg, int AddrReg) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" mov %s, dword ptr [%s+Dmem]",x86_Name(x86reg),x86_Name(AddrReg));
@ -1475,7 +1477,7 @@ void MoveN64MemToX86reg(int x86reg, int AddrReg) {
}
void MoveN64MemToX86regByte(int x86reg, int AddrReg) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" mov %s, byte ptr [%s+Dmem]",x86Byte_Name(x86reg),x86_Name(AddrReg));
switch (AddrReg) {
@ -1502,7 +1504,7 @@ void MoveN64MemToX86regByte(int x86reg, int AddrReg) {
}
void MoveN64MemToX86regHalf(int x86reg, int AddrReg) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" mov %s, word ptr [%s+Dmem]",x86Half_Name(x86reg),x86_Name(AddrReg));
@ -1532,7 +1534,7 @@ void MoveN64MemToX86regHalf(int x86reg, int AddrReg) {
}
void MoveX86regByteToN64Mem(int x86reg, int AddrReg) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" mov byte ptr [%s+Dmem], %s",x86_Name(AddrReg),x86Byte_Name(x86reg));
@ -1555,7 +1557,7 @@ void MoveX86regByteToN64Mem(int x86reg, int AddrReg) {
}
void MoveX86regHalfToN64Mem(int x86reg, int AddrReg) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" mov word ptr [%s+Dmem], %s",x86_Name(AddrReg),x86Half_Name(x86reg));
PUTDST8(RecompPos,0x66);
@ -1584,7 +1586,7 @@ void MoveX86regHalfToN64Mem(int x86reg, int AddrReg) {
}
void MoveX86regToN64Mem(int x86reg, int AddrReg) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" mov dword ptr [%s+N64mem], %s",x86_Name(AddrReg),x86_Name(x86reg));
switch (AddrReg) {
@ -1612,7 +1614,7 @@ void MoveX86regToN64Mem(int x86reg, int AddrReg) {
}
void MoveX86regToN64MemDisp(int x86reg, int AddrReg, BYTE Disp) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" mov dword ptr [%s+N64mem+%d], %s",x86_Name(AddrReg),Disp,x86_Name(x86reg));
switch (AddrReg) {
@ -1733,7 +1735,7 @@ void MoveX86regToVariable(int x86reg, void * Variable, char * VariableName) {
}
void MoveX86RegToX86Reg(int Source, int Destination) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" mov %s, %s",x86_Name(Destination),x86_Name(Source));
@ -1762,7 +1764,7 @@ void MoveX86RegToX86Reg(int Source, int Destination) {
}
void MoveSxX86RegHalfToX86Reg(int Source, int Destination) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" movsx %s, %s",x86_Name(Destination),x86Half_Name(Source));
@ -1792,7 +1794,7 @@ void MoveSxX86RegHalfToX86Reg(int Source, int Destination) {
}
void MoveSxX86RegPtrDispToX86RegHalf(int AddrReg, BYTE Disp, int Destination) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" movsx %s, [%s+%X]",x86_Name(Destination), x86_Name(AddrReg),Disp);
@ -1842,7 +1844,7 @@ void MoveSxVariableToX86regHalf(void *Variable, char *VariableName, int x86reg)
}
void MoveSxN64MemToX86regByte(int x86reg, int AddrReg) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" movsx %s, byte ptr [%s+Dmem]",x86_Name(x86reg),x86_Name(AddrReg));
switch (AddrReg) {
@ -1870,7 +1872,7 @@ void MoveSxN64MemToX86regByte(int x86reg, int AddrReg) {
}
void MoveSxN64MemToX86regHalf(int x86reg, int AddrReg) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" movsx %s, word ptr [%s+Dmem]",x86_Name(x86reg),x86_Name(AddrReg));
@ -1901,7 +1903,7 @@ void MoveSxN64MemToX86regHalf(int x86reg, int AddrReg) {
}
void MoveZxX86RegHalfToX86Reg(int Source, int Destination) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" movzx %s, %s",x86_Name(Destination),x86Half_Name(Source));
@ -1931,7 +1933,7 @@ void MoveZxX86RegHalfToX86Reg(int Source, int Destination) {
}
void MoveZxX86RegPtrDispToX86RegHalf(int AddrReg, BYTE Disp, int Destination) {
BYTE x86Command;
BYTE x86Command = 0;
CPU_Message(" movzx %s, [%s+%X]",x86_Name(Destination), x86_Name(AddrReg), Disp);
@ -1981,7 +1983,7 @@ void MoveZxVariableToX86regHalf(void *Variable, char *VariableName, int x86reg)
}
void MoveZxN64MemToX86regByte(int x86reg, int AddrReg) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" movzx %s, byte ptr [%s+Dmem]",x86_Name(x86reg),x86_Name(AddrReg));
switch (AddrReg) {
@ -2009,7 +2011,7 @@ void MoveZxN64MemToX86regByte(int x86reg, int AddrReg) {
}
void MoveZxN64MemToX86regHalf(int x86reg, int AddrReg) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" movzx %s, word ptr [%s+Dmem]",x86_Name(x86reg),x86_Name(AddrReg));
@ -2170,7 +2172,7 @@ void OrX86RegToVariable(void * Variable, char * VariableName, int x86Reg) {
}
void OrX86RegToX86Reg(int Destination, int Source) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" or %s, %s",x86_Name(Destination),x86_Name(Source));
switch (Source) {
@ -2628,7 +2630,7 @@ void SubX86regFromVariable(int x86reg, void * Variable, char * VariableName) {
}
void SubX86RegToX86Reg(int Destination, int Source) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" sub %s, %s",x86_Name(Destination),x86_Name(Source));
switch (Source) {
case x86_EAX: x86Command = 0x002B; break;
@ -2654,7 +2656,7 @@ void SubX86RegToX86Reg(int Destination, int Source) {
}
void SbbX86RegToX86Reg(int Destination, int Source) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" sbb %s, %s",x86_Name(Destination),x86_Name(Source));
switch (Source) {
case x86_EAX: x86Command = 0x001B; break;
@ -2703,7 +2705,7 @@ void TestConstToX86Reg(DWORD Const, int x86reg) {
}
void TestX86RegToX86Reg(int Destination, int Source) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" test %s, %s",x86_Name(Destination),x86_Name(Source));
switch (Source) {
@ -2768,7 +2770,7 @@ void XorConstToVariable(void *Variable, char *VariableName, DWORD Const) {
}
void XorX86RegToX86Reg(int Source, int Destination) {
WORD x86Command;
WORD x86Command = 0;
CPU_Message(" xor %s, %s",x86_Name(Source),x86_Name(Destination));

View File

@ -246,6 +246,9 @@ void SseMoveUnalignedRegToN64Mem ( int sseReg, int AddrReg );
void SseMoveRegToReg ( int Dest, int Source );
void SseXorRegToReg ( int Dest, int Source );
#pragma warning(push)
#pragma warning(disable : 4201) // nonstandard extension used : nameless struct/union
typedef union {
struct {
unsigned Reg0 : 2;
@ -256,6 +259,8 @@ typedef union {
unsigned UB:8;
} SHUFFLE;
#pragma warning(pop)
void SseShuffleReg ( int Dest, int Source, BYTE Immed );
void x86_SetBranch32b(void * JumpByte, void * Destination);

View File

@ -92,6 +92,8 @@ int CheckForRSPBPoint ( DWORD Location ) {
void CreateBPPanel ( HWND hDlg, RECT rcBox ) {
if (hRSPLocation != NULL) { return; }
rcBox = rcBox; // remove warning of unused
BPoint_Win_hDlg = hDlg;
hRSPLocation = CreateWindowEx(0,"EDIT","", WS_CHILD | WS_BORDER | ES_UPPERCASE | WS_TABSTOP,

View File

@ -161,9 +161,9 @@ void RDP_LogDlist ( void )
{
return;
}
RDP_Message(" Dlist length = %d bytes",*RSPInfo.DPC_END_REG - *RSPInfo.DPC_CURRENT_REG);
DWORD Length = *RSPInfo.DPC_END_REG - *RSPInfo.DPC_CURRENT_REG;
RDP_Message(" Dlist length = %d bytes",Length);
DWORD Pos = *RSPInfo.DPC_CURRENT_REG;
while (Pos < *RSPInfo.DPC_END_REG)
{
@ -197,7 +197,7 @@ void RDP_LogDlist ( void )
}
}
void RDP_LogLoc ( DWORD PC )
void RDP_LogLoc ( DWORD /*PC*/ )
{
// RDP_Message("%03X %08X %08X %08X %08X %08X %08X %08X %08X %08X %08X %08X %08X",PC, RSP_GPR[26].UW, *(DWORD *)&RSPInfo.IMEM[0xDBC],
// RSP_Flags[0].UW, RSP_Vect[0].UW[0],RSP_Vect[0].UW[1],RSP_Vect[0].UW[2],RSP_Vect[0].UW[3],

View File

@ -318,16 +318,16 @@ void RSP_SFV_DMEM ( DWORD Addr, int vect, int element ) {
switch (element) {
case 0:
*(RSPInfo.DMEM + ((Addr + offset)^3)) = RSP_Vect[vect].UHW[7] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = RSP_Vect[vect].UHW[6] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = RSP_Vect[vect].UHW[5] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = RSP_Vect[vect].UHW[4] >> 7;
*(RSPInfo.DMEM + ((Addr + offset)^3)) = (BYTE)(RSP_Vect[vect].UHW[7] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[6] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[5] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[4] >> 7);
break;
case 1:
*(RSPInfo.DMEM + ((Addr + offset)^3)) = RSP_Vect[vect].UHW[1] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = RSP_Vect[vect].UHW[0] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = RSP_Vect[vect].UHW[3] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = RSP_Vect[vect].UHW[2] >> 7;
*(RSPInfo.DMEM + ((Addr + offset)^3)) = (BYTE)(RSP_Vect[vect].UHW[1] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[0] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[3] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[2] >> 7);
break;
case 2:
*(RSPInfo.DMEM + ((Addr + offset)^3)) = 0;
@ -342,16 +342,16 @@ void RSP_SFV_DMEM ( DWORD Addr, int vect, int element ) {
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF)^3))) = 0;
break;
case 4:
*(RSPInfo.DMEM + ((Addr + offset)^3)) = RSP_Vect[vect].UHW[6] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = RSP_Vect[vect].UHW[5] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = RSP_Vect[vect].UHW[4] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = RSP_Vect[vect].UHW[7] >> 7;
*(RSPInfo.DMEM + ((Addr + offset)^3)) = (BYTE)(RSP_Vect[vect].UHW[6] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[5] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[4] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[7] >> 7);
break;
case 5:
*(RSPInfo.DMEM + ((Addr + offset)^3)) = RSP_Vect[vect].UHW[0] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = RSP_Vect[vect].UHW[3] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = RSP_Vect[vect].UHW[2] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = RSP_Vect[vect].UHW[1] >> 7;
*(RSPInfo.DMEM + ((Addr + offset)^3)) = (BYTE)(RSP_Vect[vect].UHW[0] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[3] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[2] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[1] >> 7);
break;
case 6:
*(RSPInfo.DMEM + ((Addr + offset)^3)) = 0;
@ -366,10 +366,10 @@ void RSP_SFV_DMEM ( DWORD Addr, int vect, int element ) {
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = 0;
break;
case 8:
*(RSPInfo.DMEM + ((Addr + offset)^3)) = RSP_Vect[vect].UHW[3] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = RSP_Vect[vect].UHW[2] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = RSP_Vect[vect].UHW[1] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = RSP_Vect[vect].UHW[0] >> 7;
*(RSPInfo.DMEM + ((Addr + offset)^3)) = (BYTE)(RSP_Vect[vect].UHW[3] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[2] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[1] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[0] >> 7);
break;
case 9:
*(RSPInfo.DMEM + ((Addr + offset)^3)) = 0;
@ -384,16 +384,16 @@ void RSP_SFV_DMEM ( DWORD Addr, int vect, int element ) {
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = 0;
break;
case 11:
*(RSPInfo.DMEM + ((Addr + offset)^3)) = RSP_Vect[vect].UHW[4] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = RSP_Vect[vect].UHW[7] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = RSP_Vect[vect].UHW[6] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = RSP_Vect[vect].UHW[5] >> 7;
*(RSPInfo.DMEM + ((Addr + offset)^3)) = (BYTE)(RSP_Vect[vect].UHW[4] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[7] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[6] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[5] >> 7);
break;
case 12:
*(RSPInfo.DMEM + ((Addr + offset)^3)) = RSP_Vect[vect].UHW[2] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = RSP_Vect[vect].UHW[1] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = RSP_Vect[vect].UHW[0] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = RSP_Vect[vect].UHW[3] >> 7;
*(RSPInfo.DMEM + ((Addr + offset)^3)) = (BYTE)(RSP_Vect[vect].UHW[2] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[1] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[0] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[3] >> 7);
break;
case 13:
*(RSPInfo.DMEM + ((Addr + offset)^3)) = 0;
@ -408,10 +408,10 @@ void RSP_SFV_DMEM ( DWORD Addr, int vect, int element ) {
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = 0;
break;
case 15:
*(RSPInfo.DMEM + ((Addr + offset)^3)) = RSP_Vect[vect].UHW[7] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = RSP_Vect[vect].UHW[6] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = RSP_Vect[vect].UHW[5] >> 7;
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = RSP_Vect[vect].UHW[4] >> 7;
*(RSPInfo.DMEM + ((Addr + offset)^3)) = (BYTE)(RSP_Vect[vect].UHW[7] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 4) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[6] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 8) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[5] >> 7);
*(RSPInfo.DMEM + ((Addr + ((offset + 12) & 0xF))^3)) = (BYTE)(RSP_Vect[vect].UHW[4] >> 7);
break;
}
}