CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!
CoCalc provides the best real-time collaborative environment for Jupyter Notebooks, LaTeX documents, and SageMath, scalable from individual users to large groups and classes!
Path: blob/master/Core/HLE/FunctionWrappers.h
Views: 1401
// Copyright (c) 2012- PPSSPP Project.12// This program is free software: you can redistribute it and/or modify3// it under the terms of the GNU General Public License as published by4// the Free Software Foundation, version 2.0 or later versions.56// This program is distributed in the hope that it will be useful,7// but WITHOUT ANY WARRANTY; without even the implied warranty of8// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the9// GNU General Public License 2.0 for more details.1011// A copy of the GPL 2.0 should have been included with the program.12// If not, see http://www.gnu.org/licenses/1314// Official git repository and contact information can be found at15// https://github.com/hrydgard/ppsspp and http://www.ppsspp.org/.1617#pragma once1819#include "Common/CommonTypes.h"20#include "Core/HLE/HLE.h"21#include "Core/MemMap.h"2223// For easy parameter parsing and return value processing.2425// 64bit wrappers26// 64bit values are always "aligned" in regs (never start on an odd reg.)2728template<u64 func()> void WrapU64_V() {29u64 retval = func();30RETURN64(retval);31}3233template<u64 func(u32)> void WrapU64_U() {34u64 retval = func(PARAM(0));35RETURN64(retval);36}3738template<u64 func(int)> void WrapU64_I() {39u64 retval = func(PARAM(0));40RETURN64(retval);41}4243template<u64 func(u32, u64)> void WrapU64_UU64() {44u64 retval = func(PARAM(0), PARAM64(2));45RETURN64(retval);46}4748template<u64 func(int, u64)> void WrapU64_IU64() {49u64 retval = func(PARAM(0), PARAM64(2));50RETURN64(retval);51}5253template<int func(int, u64)> void WrapI_IU64() {54int retval = func(PARAM(0), PARAM64(2));55RETURN(retval);56}5758template<int func(u32, u64)> void WrapI_UU64() {59int retval = func(PARAM(0), PARAM64(2));60RETURN(retval);61}6263template<u32 func(u32, u64)> void WrapU_UU64() {64u32 retval = func(PARAM(0), PARAM64(2));65RETURN(retval);66}6768template<int func(u32, u32, u64)> void WrapI_UUU64() {69int retval = func(PARAM(0), PARAM(1), PARAM64(2));70RETURN(retval);71}7273template<u32 func(int, s64, int)> void WrapU_II64I() {74u32 retval = func(PARAM(0), PARAM64(2), PARAM(4));75RETURN(retval);76}7778template<u32 func(u32, u64, u32, u32)> void WrapU_UU64UU() {79u32 retval = func(PARAM(0), PARAM64(2), PARAM(4), PARAM(5));80RETURN(retval);81}8283template<u32 func(int, u64, u32, u32)> void WrapU_IU64UU() {84u32 retval = func(PARAM(0), PARAM64(2), PARAM(4), PARAM(5));85RETURN(retval);86}8788template<int func(int, int, const char*, u64)> void WrapI_IICU64() {89int retval = func(PARAM(0), PARAM(1), Memory::GetCharPointer(PARAM(2)), PARAM64(4));90RETURN(retval);91}9293template<s64 func(int, s64, int)> void WrapI64_II64I() {94s64 retval = func(PARAM(0), PARAM64(2), PARAM(4));95RETURN64(retval);96}9798//32bit wrappers99template<void func()> void WrapV_V() {100func();101}102103template<u32 func()> void WrapU_V() {104RETURN(func());105}106107template<u32 func(int, void *, int)> void WrapU_IVI() {108u32 retval = func(PARAM(0), Memory::GetPointerWrite(PARAM(1)), PARAM(2));109RETURN(retval);110}111112template<int func(const char *, int, int, u32)> void WrapI_CIIU() {113u32 retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2), PARAM(3));114RETURN(retval);115}116117template<int func(int, const char *, u32, void *, void *, u32, int)> void WrapI_ICUVVUI() {118u32 retval = func(PARAM(0), Memory::GetCharPointer(PARAM(1)), PARAM(2), Memory::GetPointerWrite(PARAM(3)),Memory::GetPointerWrite(PARAM(4)), PARAM(5), PARAM(6) );119RETURN(retval);120}121122// Hm, do so many params get passed in registers?123template<int func(const char *, int, const char *, int, int, int, int, int)> void WrapI_CICIIIII() {124u32 retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), Memory::GetCharPointer(PARAM(2)),125PARAM(3), PARAM(4), PARAM(5), PARAM(6), PARAM(7));126RETURN(retval);127}128129// Hm, do so many params get passed in registers?130template<int func(const char *, int, int, int, int, int, int)> void WrapI_CIIIIII() {131u32 retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2),132PARAM(3), PARAM(4), PARAM(5), PARAM(6));133RETURN(retval);134}135136template<int func(int, int, int, const char *)> void WrapI_IIIC() {137u32 retval = func(PARAM(0), PARAM(1), PARAM(2), Memory::GetCharPointer(PARAM(3)));138RETURN(retval);139}140141// Hm, do so many params get passed in registers?142template<int func(int, int, int, int, int, int, u32)> void WrapI_IIIIIIU() {143u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4), PARAM(5), PARAM(6));144RETURN(retval);145}146147// Hm, do so many params get passed in registers?148template<int func(int, int, int, int, int, int, int, int, u32)> void WrapI_IIIIIIIIU() {149u32 param8 = *(const u32_le *)Memory::GetPointerWrite(currentMIPS->r[29]); //Fixed 9th parameter, thanks to Kingcom150u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4), PARAM(5), PARAM(6), PARAM(7), param8);151RETURN(retval);152}153154template<u32 func(int, void *)> void WrapU_IV() {155u32 retval = func(PARAM(0), Memory::GetPointerWrite(PARAM(1)));156RETURN(retval);157}158159template<float func()> void WrapF_V() {160RETURNF(func());161}162163// TODO: Not sure about the floating point parameter passing164template<float func(int, float, u32)> void WrapF_IFU() {165RETURNF(func(PARAM(0), PARAMF(0), PARAM(1)));166}167168template<u32 func(u32)> void WrapU_U() {169u32 retval = func(PARAM(0));170RETURN(retval);171}172173template<u32 func(u32, int)> void WrapU_UI() {174u32 retval = func(PARAM(0), PARAM(1));175RETURN(retval);176}177178template<int func(u32)> void WrapI_U() {179int retval = func(PARAM(0));180RETURN(retval);181}182183template<int func(u32, int)> void WrapI_UI() {184int retval = func(PARAM(0), PARAM(1));185RETURN(retval);186}187188template<int func(u32, int, int, u32)> void WrapI_UIIU() {189int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));190RETURN(retval);191}192193template<u32 func(int, u32, int)> void WrapU_IUI() {194u32 retval = func(PARAM(0), PARAM(1), PARAM(2));195RETURN(retval);196}197198template<int func(u32, u32)> void WrapI_UU() {199int retval = func(PARAM(0), PARAM(1));200RETURN(retval);201}202203template<int func(u32, float, float)> void WrapI_UFF() {204// Not sure about the float arguments.205int retval = func(PARAM(0), PARAMF(0), PARAMF(1));206RETURN(retval);207}208209template<int func(u32, u32, u32)> void WrapI_UUU() {210int retval = func(PARAM(0), PARAM(1), PARAM(2));211RETURN(retval);212}213214template<int func(u32, u32, u32, int)> void WrapI_UUUI() {215int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));216RETURN(retval);217}218219template<int func(u32, u32, u32, int, int, int,int )> void WrapI_UUUIIII() {220int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4), PARAM(5), PARAM(6));221RETURN(retval);222}223224template<int func(u32, u32, u32, u32)> void WrapI_UUUU() {225int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));226RETURN(retval);227}228229template<int func(u32, u32, u32, u32, u32)> void WrapI_UUUUU() {230int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4));231RETURN(retval);232}233234template<int func()> void WrapI_V() {235int retval = func();236RETURN(retval);237}238239template<u32 func(int)> void WrapU_I() {240u32 retval = func(PARAM(0));241RETURN(retval);242}243244template<u32 func(int, int, u32)> void WrapU_IIU() {245u32 retval = func(PARAM(0), PARAM(1), PARAM(2));246RETURN(retval);247}248249template<int func(int)> void WrapI_I() {250int retval = func(PARAM(0));251RETURN(retval);252}253254template<void func(u32)> void WrapV_U() {255func(PARAM(0));256}257258template<void func(int)> void WrapV_I() {259func(PARAM(0));260}261262template<void func(u32, u32)> void WrapV_UU() {263func(PARAM(0), PARAM(1));264}265266template<void func(int, int)> void WrapV_II() {267func(PARAM(0), PARAM(1));268}269270template<void func(u32, const char *)> void WrapV_UC() {271func(PARAM(0), Memory::GetCharPointer(PARAM(1)));272}273274template<int func(u32, const char *)> void WrapI_UC() {275int retval = func(PARAM(0), Memory::GetCharPointer(PARAM(1)));276RETURN(retval);277}278279template<int func(u32, const char *, int)> void WrapI_UCI() {280int retval = func(PARAM(0), Memory::GetCharPointer(PARAM(1)), PARAM(2));281RETURN(retval);282}283284template<u32 func(u32, int , int , int, int, int)> void WrapU_UIIIII() {285u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4), PARAM(5));286RETURN(retval);287}288289template<u32 func(u32, int , int , int, u32)> void WrapU_UIIIU() {290u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4));291RETURN(retval);292}293294template<u32 func(u32, int , int , int, int, int, int)> void WrapU_UIIIIII() {295u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4), PARAM(5), PARAM(6));296RETURN(retval);297}298299template<u32 func(u32, u32)> void WrapU_UU() {300u32 retval = func(PARAM(0), PARAM(1));301RETURN(retval);302}303304template<u32 func(u32, u32, int)> void WrapU_UUI() {305u32 retval = func(PARAM(0), PARAM(1), PARAM(2));306RETURN(retval);307}308309template<u32 func(u32, u32, int, int)> void WrapU_UUII() {310u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));311RETURN(retval);312}313314template<u32 func(const char *, u32, u32, u32)> void WrapU_CUUU() {315u32 retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2), PARAM(3));316RETURN(retval);317}318319template<void func(u32, int, u32, int, int)> void WrapV_UIUII() {320func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4));321}322323template<u32 func(u32, int, u32, int, int)> void WrapU_UIUII() {324u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4));325RETURN(retval);326}327328template<int func(u32, int, u32, int, int)> void WrapI_UIUII() {329int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4));330RETURN(retval);331}332333template<u32 func(u32, int, u32, int)> void WrapU_UIUI() {334u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));335RETURN(retval);336}337338template<int func(u32, int, u32, int)> void WrapI_UIUI() {339u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));340RETURN(retval);341}342343template<u32 func(u32, int, u32)> void WrapU_UIU() {344u32 retval = func(PARAM(0), PARAM(1), PARAM(2));345RETURN(retval);346}347348template<u32 func(u32, int, u32, u32)> void WrapU_UIUU() {349u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));350RETURN(retval);351}352353template<u32 func(u32, int, int)> void WrapU_UII() {354u32 retval = func(PARAM(0), PARAM(1), PARAM(2));355RETURN(retval);356}357358template<u32 func(u32, int, int, u32)> void WrapU_UIIU() {359u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));360RETURN(retval);361}362363template<int func(u32, int, int, u32, u32)> void WrapI_UIIUU() {364u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4));365RETURN(retval);366}367368template<int func(u32, u32, int, int)> void WrapI_UUII() {369int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));370RETURN(retval);371}372373template<int func(u32, u32, int, int, int)> void WrapI_UUIII() {374int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4));375RETURN(retval);376}377378template<void func(u32, int, int, int)> void WrapV_UIII() {379func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));380}381382template<void func(u32, int, int, int, int, int)> void WrapV_UIIIII() {383func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4), PARAM(5));384}385386template<void func(u32, int, int)> void WrapV_UII() {387func(PARAM(0), PARAM(1), PARAM(2));388}389390template<u32 func(int, u32)> void WrapU_IU() {391int retval = func(PARAM(0), PARAM(1));392RETURN(retval);393}394395template<int func(int, u32)> void WrapI_IU() {396int retval = func(PARAM(0), PARAM(1));397RETURN(retval);398}399400template<int func(u32, u32, int)> void WrapI_UUI() {401int retval = func(PARAM(0), PARAM(1), PARAM(2));402RETURN(retval);403}404405template<int func(u32, u32, int, u32)> void WrapI_UUIU() {406int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));407RETURN(retval);408}409410template<int func(int, int)> void WrapI_II() {411int retval = func(PARAM(0), PARAM(1));412RETURN(retval);413}414415template<int func(int, int, int)> void WrapI_III() {416int retval = func(PARAM(0), PARAM(1), PARAM(2));417RETURN(retval);418}419420template<int func(int, u32, int)> void WrapI_IUI() {421int retval = func(PARAM(0), PARAM(1), PARAM(2));422RETURN(retval);423}424425template<int func(int, int, int, int)> void WrapI_IIII() {426int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));427RETURN(retval);428}429430template<int func(u32, int, int, int)> void WrapI_UIII() {431int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));432RETURN(retval);433}434435template<int func(int, int, int, u32, int)> void WrapI_IIIUI() {436int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4));437RETURN(retval);438}439440template<int func(int, u32, u32, int, int)> void WrapI_IUUII() {441int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4));442RETURN(retval);443}444445template<int func(int, const char *, int, u32, u32)> void WrapI_ICIUU() {446int retval = func(PARAM(0), Memory::GetCharPointer(PARAM(1)), PARAM(2), PARAM(3), PARAM(4));447RETURN(retval);448}449450template<int func(int, int, u32)> void WrapI_IIU() {451int retval = func(PARAM(0), PARAM(1), PARAM(2));452RETURN(retval);453}454455template<void func(int, u32)> void WrapV_IU() {456func(PARAM(0), PARAM(1));457}458459template<void func(u32, int)> void WrapV_UI() {460func(PARAM(0), PARAM(1));461}462463template<u32 func(const char *)> void WrapU_C() {464u32 retval = func(Memory::GetCharPointer(PARAM(0)));465RETURN(retval);466}467468template<u32 func(const char *, const char *, const char *, u32)> void WrapU_CCCU() {469u32 retval = func(Memory::GetCharPointer(PARAM(0)),470Memory::GetCharPointer(PARAM(1)), Memory::GetCharPointer(PARAM(2)),471PARAM(3));472RETURN(retval);473}474475template<int func(const char *)> void WrapI_C() {476int retval = func(Memory::GetCharPointer(PARAM(0)));477RETURN(retval);478}479480template<int func(const char *, u32)> void WrapI_CU() {481int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1));482RETURN(retval);483}484485template<int func(const char *, u32, int)> void WrapI_CUI() {486int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2));487RETURN(retval);488}489490template<int func(int, const char *, int, u32)> void WrapI_ICIU() {491int retval = func(PARAM(0), Memory::GetCharPointer(PARAM(1)), PARAM(2), PARAM(3));492RETURN(retval);493}494495template<int func(const char *, int, u32)> void WrapI_CIU() {496int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2));497RETURN(retval);498}499500template<int func(const char *, u32, u32)> void WrapI_CUU() {501int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2));502RETURN(retval);503}504505template<int func(const char *, u32, u32, u32)> void WrapI_CUUU() {506int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2),507PARAM(3));508RETURN(retval);509}510511template<int func(const char *, const char*, int, int)> void WrapI_CCII() {512int retval = func(Memory::GetCharPointer(PARAM(0)), Memory::GetCharPointer(PARAM(1)), PARAM(2), PARAM(3));513RETURN(retval);514}515516template<int func(const char *, u32, u32, int, u32, u32)> void WrapI_CUUIUU() {517int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2),518PARAM(3), PARAM(4), PARAM(5));519RETURN(retval);520}521522template<int func(const char *, int, int, u32, int, int)> void WrapI_CIIUII() {523int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2),524PARAM(3), PARAM(4), PARAM(5));525RETURN(retval);526}527528template<int func(const char *, int, int, int, u32, u32, int)> void WrapI_CIIIUUI() {529int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2),530PARAM(3), PARAM(4), PARAM(5), PARAM(6));531RETURN(retval);532}533534template<int func(const char *, int, u32, u32, u32)> void WrapI_CIUUU() {535int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2),536PARAM(3), PARAM(4));537RETURN(retval);538}539540template<int func(const char *, u32, u32, u32, u32, u32)> void WrapI_CUUUUU() {541int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2),542PARAM(3), PARAM(4), PARAM(5));543RETURN(retval);544}545546template<u32 func(const char *, u32)> void WrapU_CU() {547u32 retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1));548RETURN((u32) retval);549}550551template<u32 func(u32, const char *)> void WrapU_UC() {552u32 retval = func(PARAM(0), Memory::GetCharPointer(PARAM(1)));553RETURN(retval);554}555556template<u32 func(const char *, u32, u32)> void WrapU_CUU() {557u32 retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2));558RETURN((u32) retval);559}560561template<u32 func(int, int, int)> void WrapU_III() {562u32 retval = func(PARAM(0), PARAM(1), PARAM(2));563RETURN(retval);564}565566template<u32 func(int, int)> void WrapU_II() {567u32 retval = func(PARAM(0), PARAM(1));568RETURN(retval);569}570571template<u32 func(int, int, int, int)> void WrapU_IIII() {572u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));573RETURN(retval);574}575576template<u32 func(int, u32, u32)> void WrapU_IUU() {577u32 retval = func(PARAM(0), PARAM(1), PARAM(2));578RETURN(retval);579}580581template<u32 func(int, u32, u32, u32)> void WrapU_IUUU() {582u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));583RETURN(retval);584}585586template<u32 func(int, u32, u32, u32, u32)> void WrapU_IUUUU() {587u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4));588RETURN(retval);589}590591template<u32 func(u32, u32, u32)> void WrapU_UUU() {592u32 retval = func(PARAM(0), PARAM(1), PARAM(2));593RETURN(retval);594}595596template<void func(int, u32, u32)> void WrapV_IUU() {597func(PARAM(0), PARAM(1), PARAM(2));598}599600template<void func(int, int, u32)> void WrapV_IIU() {601func(PARAM(0), PARAM(1), PARAM(2));602}603604template<void func(u32, int, u32)> void WrapV_UIU() {605func(PARAM(0), PARAM(1), PARAM(2));606}607608template<int func(u32, int, u32)> void WrapI_UIU() {609int retval = func(PARAM(0), PARAM(1), PARAM(2));610RETURN(retval);611}612613template<void func(int, u32, u32, u32, u32)> void WrapV_IUUUU() {614func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4));615}616617template<void func(u32, u32, u32)> void WrapV_UUU() {618func(PARAM(0), PARAM(1), PARAM(2));619}620621template<void func(u32, u32, u32, u32)> void WrapV_UUUU() {622func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));623}624625template<void func(const char *, u32, int, u32)> void WrapV_CUIU() {626func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2), PARAM(3));627}628629template<int func(const char *, u32, int, u32)> void WrapI_CUIU() {630int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2), PARAM(3));631RETURN(retval);632}633634template<void func(u32, const char *, u32, int, u32)> void WrapV_UCUIU() {635func(PARAM(0), Memory::GetCharPointer(PARAM(1)), PARAM(2), PARAM(3),636PARAM(4));637}638639template<int func(u32, const char *, u32, int, u32)> void WrapI_UCUIU() {640int retval = func(PARAM(0), Memory::GetCharPointer(PARAM(1)), PARAM(2),641PARAM(3), PARAM(4));642RETURN(retval);643}644645template<void func(const char *, u32, int, int, u32)> void WrapV_CUIIU() {646func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2), PARAM(3),647PARAM(4));648}649650template<int func(const char *, u32, int, int, u32)> void WrapI_CUIIU() {651int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2),652PARAM(3), PARAM(4));653RETURN(retval);654}655656template<u32 func(u32, u32, u32, u32)> void WrapU_UUUU() {657u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));658RETURN(retval);659}660661template<u32 func(u32, const char *, u32, u32)> void WrapU_UCUU() {662u32 retval = func(PARAM(0), Memory::GetCharPointer(PARAM(1)), PARAM(2), PARAM(3));663RETURN(retval);664}665666template<u32 func(u32, u32, u32, int)> void WrapU_UUUI() {667u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));668RETURN(retval);669}670671template<u32 func(u32, u32, u32, int, u32)> void WrapU_UUUIU() {672u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4));673RETURN(retval);674}675676template<u32 func(u32, u32, u32, int, u32, int)> void WrapU_UUUIUI() {677u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4), PARAM(5));678RETURN(retval);679}680681template<u32 func(u32, u32, int, u32)> void WrapU_UUIU() {682u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));683RETURN(retval);684}685686template<u32 func(u32, int, int, int)> void WrapU_UIII() {687u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));688RETURN(retval);689}690691template<int func(int, u32, u32, u32, u32)> void WrapI_IUUUU() {692int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4));693RETURN(retval);694}695696template<int func(int, u32, u32, u32, u32, u32)> void WrapI_IUUUUU() {697int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4), PARAM(5));698RETURN(retval);699}700701template<int func(int, u32, int, int)> void WrapI_IUII() {702int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));703RETURN(retval);704}705template<u32 func(u32, u32, u32, u32, u32)> void WrapU_UUUUU() {706u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4));707RETURN(retval);708}709710template<void func(u32, u32, u32, u32, u32)> void WrapV_UUUUU() {711func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4));712}713714template<u32 func(const char *, const char *)> void WrapU_CC() {715int retval = func(Memory::GetCharPointer(PARAM(0)),716Memory::GetCharPointer(PARAM(1)));717RETURN(retval);718}719720template<void func(const char *, int)> void WrapV_CI() {721func(Memory::GetCharPointer(PARAM(0)), PARAM(1));722}723724template<u32 func(const char *, int)> void WrapU_CI() {725int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1));726RETURN(retval);727}728729template<u32 func(const char *, int, int)> void WrapU_CII() {730int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2));731RETURN(retval);732}733734template<int func(const char *, int, u32, int, u32)> void WrapU_CIUIU() {735int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2),736PARAM(3), PARAM(4));737RETURN(retval);738}739740template<u32 func(const char *, int, u32, int, u32, int)> void WrapU_CIUIUI() {741u32 retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2),742PARAM(3), PARAM(4), PARAM(5));743RETURN(retval);744}745746template<u32 func(u32, u32, u32, u32, u32, u32)> void WrapU_UUUUUU() {747u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4),748PARAM(5));749RETURN(retval);750}751752template<int func(int, u32, u32, u32)> void WrapI_IUUU() {753int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));754RETURN(retval);755}756757template<int func(int, u32, u32)> void WrapI_IUU() {758int retval = func(PARAM(0), PARAM(1), PARAM(2));759RETURN(retval);760}761762template<u32 func(u32, u32, u32, u32, u32, u32, u32)> void WrapU_UUUUUUU() {763u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4), PARAM(5), PARAM(6));764RETURN(retval);765}766767template<int func(int, u32, u32, u32, u32, u32, u32)> void WrapI_IUUUUUU() {768int retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3), PARAM(4), PARAM(5), PARAM(6));769RETURN(retval);770}771772template<int func(u32, int, u32, u32)> void WrapI_UIUU() {773u32 retval = func(PARAM(0), PARAM(1), PARAM(2), PARAM(3));774RETURN(retval);775}776777template<int func(int, const char *)> void WrapI_IC() {778int retval = func(PARAM(0), Memory::GetCharPointer(PARAM(1)));779RETURN(retval);780}781782template <int func(int, const char *, const char *, u32, int)> void WrapI_ICCUI() {783int retval = func(PARAM(0), Memory::GetCharPointer(PARAM(1)), Memory::GetCharPointer(PARAM(2)), PARAM(3), PARAM(4));784RETURN(retval);785}786787template <int func(int, const char *, const char *, int)> void WrapI_ICCI() {788int retval = func(PARAM(0), Memory::GetCharPointer(PARAM(1)), Memory::GetCharPointer(PARAM(2)), PARAM(3));789RETURN(retval);790}791792template <int func(const char *, int, int)> void WrapI_CII() {793int retval = func(Memory::GetCharPointer(PARAM(0)), PARAM(1), PARAM(2));794RETURN(retval);795}796797template <int func(int, const char *, int)> void WrapI_ICI() {798int retval = func(PARAM(0), Memory::GetCharPointer(PARAM(1)), PARAM(2));799RETURN(retval);800}801802template<int func(int, void *, void *, void *, void *, u32, int)> void WrapI_IVVVVUI(){803u32 retval = func(PARAM(0), Memory::GetPointerWrite(PARAM(1)), Memory::GetPointerWrite(PARAM(2)), Memory::GetPointerWrite(PARAM(3)), Memory::GetPointerWrite(PARAM(4)), PARAM(5), PARAM(6) );804RETURN(retval);805}806807template<int func(int, const char *, u32, void *, int, int, int)> void WrapI_ICUVIII(){808u32 retval = func(PARAM(0), Memory::GetCharPointer(PARAM(1)), PARAM(2), Memory::GetPointerWrite(PARAM(3)), PARAM(4), PARAM(5), PARAM(6));809RETURN(retval);810}811812template<int func(void *, u32, int)> void WrapI_VUI(){813u32 retval = func(Memory::GetPointerWrite(PARAM(0)), PARAM(1), PARAM(2));814RETURN(retval);815}816817818