// Copyright (c) 2012- PPSSPP Project. // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, version 2.0 or later versions. // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License 2.0 for more details. // A copy of the GPL 2.0 should have been included with the program. // If not, see http://www.gnu.org/licenses/ // Official git repository and contact information can be found at // https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/. #pragma once #include "../../Globals.h" // For easy parameter parsing and return value processing. // 64bit wrappers template void WrapU64_V() { u64 retval = func(); currentMIPS->r[2] = retval & 0xFFFFFFFF; currentMIPS->r[3] = (retval >> 32) & 0xFFFFFFFF; } //This seems to be wrong template void WrapI_UU64() { u64 param_one = currentMIPS->r[5]; param_one |= (u64)(currentMIPS->r[6])<< 32; int retval = func(PARAM(0), param_one); RETURN(retval); } template void WrapI_UUU64() { u64 param_two = currentMIPS->r[6]; param_two |= (u64)(currentMIPS->r[7])<< 32; int retval = func(PARAM(0), PARAM(1), param_two); RETURN(retval); } template void WrapU_II64I(){ s64 param_one = ((s64)PARAM(2)) | ((s64)(PARAM(3))<<32); u32 retval = func(PARAM(0), param_one, PARAM(4)); RETURN(retval); } //32bit wrappers template void WrapV_V() { func(); } template void WrapU_V() { RETURN(func()); } template void WrapU_IVI(){ u32 retval = func(PARAM(0), Memory::GetPointer(PARAM(1)), PARAM(2)); RETURN(retval); } template void WrapF_V() { RETURNF(func()); } template void WrapU_U() { u32 retval = func(PARAM(0)); RETURN(retval); } template void WrapU_UI() { u32 retval = func(PARAM(0), PARAM(1)); RETURN(retval); } template void WrapI_U() { int retval = func(PARAM(0)); RETURN(retval); } template void WrapU_IUI() { u32 retval = func(PARAM(0), PARAM(1),PARAM(2)); RETURN(retval); } template void WrapI_UU() { int retval = func(PARAM(0), PARAM(1)); RETURN(retval); } template void WrapI_V() { int retval = func(); RETURN(retval); } template void WrapU_I() { u32 retval = func(PARAM(0)); RETURN(retval); } template void WrapI_I() { int retval = func(PARAM(0)); RETURN(retval); } template void WrapV_U() { func(PARAM(0)); } template void WrapV_I() { func(PARAM(0)); } template void WrapV_UU() { func(PARAM(0), PARAM(1)); } template void WrapV_II() { func(PARAM(0), PARAM(1)); } template void WrapV_UC() { func(PARAM(0), Memory::GetCharPointer(PARAM(1))); } template void WrapU_UU() { u32 retval = func(PARAM(0), PARAM(1)); RETURN(retval); } template void WrapU_IU() { int retval = func(PARAM(0), PARAM(1)); RETURN(retval); } template void WrapI_IU() { int retval = func(PARAM(0), PARAM(1)); RETURN(retval); } template void WrapI_UUI() { int retval = func(PARAM(0), PARAM(1), PARAM(2)); RETURN(retval); } template void WrapI_II() { int retval = func(PARAM(0), PARAM(1)); RETURN(retval); } template void WrapI_III() { int retval = func(PARAM(0), PARAM(1), PARAM(2)); RETURN(retval); } template void WrapI_IIU() { int retval = func(PARAM(0), PARAM(1), PARAM(2)); RETURN(retval); } template void WrapV_IU() { func(PARAM(0), PARAM(1)); } template void WrapV_UI() { func(PARAM(0), PARAM(1)); } template void WrapU_C(){ u32 retval = func(Memory::GetCharPointer(PARAM(0))); RETURN(retval); } template void WrapU_CCCU(){ u32 retval = func(Memory::GetCharPointer(PARAM(0)),Memory::GetCharPointer(PARAM(1)), Memory::GetCharPointer(PARAM(2)), PARAM(3)); RETURN(retval); } template void WrapI_CU() { int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1)); RETURN(retval); } template void WrapI_CUUU() { int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2), PARAM(3)); RETURN(retval); } template void WrapU_CU() { u32 retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1)); RETURN((u32)retval); } template void WrapU_UC() { u32 retval = func(PARAM(0), Memory::GetCharPointer(PARAM(1))); RETURN(retval); } template void WrapU_CUU() { u32 retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2)); RETURN((u32)retval); } template void WrapU_III() { u32 retval = func(PARAM(0), PARAM(1), PARAM(2)); RETURN(retval); } template void WrapU_IUU() { u32 retval = func(PARAM(0), PARAM(1), PARAM(2)); RETURN(retval); } template void WrapU_UUU() { u32 retval = func(PARAM(0), PARAM(1), PARAM(2)); RETURN(retval); } template void WrapV_IUU() { func(PARAM(0), PARAM(1), PARAM(2)); } template void WrapV_IIU() { func(PARAM(0), PARAM(1), PARAM(2)); } template void WrapV_UIU() { func(PARAM(0), PARAM(1), PARAM(2)); } template void WrapV_IUUUU() { func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4)); } template void WrapV_UUU() { func(PARAM(0), PARAM(1), PARAM(2)); } template void WrapV_UUUU() { func(PARAM(0), PARAM(1), PARAM(2), PARAM(3)); } template void WrapV_CUIU() { func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2), PARAM(3)); } template void WrapV_UCUIU() { func(PARAM(0), Memory::GetCharPointer(PARAM(1)), PARAM(2), PARAM(3), PARAM(4)); } template void WrapV_CUIIU() { func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2), PARAM(3), PARAM(4)); } template void WrapU_UUUU() { u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3)); RETURN(retval); } template void WrapU_UUUI() { u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3)); RETURN(retval); } template void WrapU_UIII() { u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3)); RETURN(retval); } template void WrapI_IUUUU() { int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4)); RETURN(retval); } template void WrapU_UUUUU() { u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4)); RETURN(retval); } template void WrapV_UUUUU() { func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4)); } template void WrapU_CC() { int retval = func(Memory::GetCharPointer(PARAM(0)), Memory::GetCharPointer(PARAM(1))); RETURN(retval); } template void WrapV_CI() { func(Memory::GetCharPointer(PARAM(0)), PARAM(1)); } template void WrapU_CI() { int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1)); RETURN(retval); } template void WrapU_CIUIU() { int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2), PARAM(3), PARAM(4)); RETURN(retval); } template void WrapU_CIUIUI() { u32 retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2), PARAM(3), PARAM(4), PARAM(5)); RETURN(retval); } template void WrapU_UUUUUU() { u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4), PARAM(5)); RETURN(retval); } template void WrapI_IUUU() { int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3)); RETURN(retval); } template void WrapI_IUU() { int retval = func(PARAM(0), PARAM(1), PARAM(2)); RETURN(retval); }