From 93504762632b7152029d44ba3a9d001b4b480f96 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Mon, 26 Jan 2015 01:38:50 +0300 Subject: [PATCH 01/10] psv_object_list_t template concept --- rpcs3/Emu/ARMv7/Modules/psv_sema_object.cpp | 8 ++ rpcs3/Emu/ARMv7/Modules/psv_sema_object.h | 11 +++ rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp | 15 +++- rpcs3/Emu/ARMv7/Modules/sceLibKernel.h | 14 +++ rpcs3/Emu/ARMv7/PSVObjectList.cpp | 3 + rpcs3/Emu/ARMv7/PSVObjectList.h | 96 +++++++++++++++++++++ rpcs3/emucore.vcxproj | 4 + rpcs3/emucore.vcxproj.filters | 15 ++++ 8 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 rpcs3/Emu/ARMv7/Modules/psv_sema_object.cpp create mode 100644 rpcs3/Emu/ARMv7/Modules/psv_sema_object.h create mode 100644 rpcs3/Emu/ARMv7/PSVObjectList.cpp create mode 100644 rpcs3/Emu/ARMv7/PSVObjectList.h diff --git a/rpcs3/Emu/ARMv7/Modules/psv_sema_object.cpp b/rpcs3/Emu/ARMv7/Modules/psv_sema_object.cpp new file mode 100644 index 0000000000..4e6046bd25 --- /dev/null +++ b/rpcs3/Emu/ARMv7/Modules/psv_sema_object.cpp @@ -0,0 +1,8 @@ +#include "stdafx.h" +#include "Emu/Memory/Memory.h" +#include "Emu/ARMv7/PSVFuncList.h" +#include "Emu/ARMv7/PSVObjectList.h" +#include "sceLibKernel.h" +#include "psv_sema_object.h" + +psv_object_list_t g_psv_sema_list; diff --git a/rpcs3/Emu/ARMv7/Modules/psv_sema_object.h b/rpcs3/Emu/ARMv7/Modules/psv_sema_object.h new file mode 100644 index 0000000000..ee643cab4c --- /dev/null +++ b/rpcs3/Emu/ARMv7/Modules/psv_sema_object.h @@ -0,0 +1,11 @@ +#pragma once + +struct psv_sema_t +{ + char name[32]; + u32 attr; + s32 initCount; + s32 maxCount; +}; + +extern psv_object_list_t g_psv_sema_list; diff --git a/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp b/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp index ac2600dc4b..fd852feae7 100644 --- a/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp +++ b/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp @@ -1,12 +1,14 @@ #include "stdafx.h" #include "Emu/System.h" #include "Emu/ARMv7/PSVFuncList.h" +#include "Emu/ARMv7/PSVObjectList.h" #include "Emu/CPU/CPUThreadManager.h" #include "Emu/SysCalls/Callback.h" #include "Emu/ARMv7/ARMv7Thread.h" #include "sceLibKernel.h" +#include "psv_sema_object.h" #define RETURN_ERROR(code) { Emu.Pause(); sceLibKernel.Error("%s() failed: %s", __FUNCTION__, #code); return code; } @@ -450,7 +452,18 @@ s32 sceKernelCreateSema(vm::psv::ptr pName, u32 attr, s32 initCount, { sceLibKernel.Error("sceKernelCreateSema(pName=0x%x, attr=0x%x, initCount=%d, maxCount=%d, pOptParam=0x%x)", pName, attr, initCount, maxCount, pOptParam); - throw __FUNCTION__; + std::shared_ptr sema(new psv_sema_t); + + strcpy_trunc(sema->name, pName.get_ptr()); + sema->attr = attr; + sema->initCount = initCount; + sema->maxCount = maxCount; + + const s32 id = g_psv_sema_list.add(sema); + + sceLibKernel.Error("*** semaphore created -> id=0x%x", id); + + return id; } s32 sceKernelDeleteSema(s32 semaId) diff --git a/rpcs3/Emu/ARMv7/Modules/sceLibKernel.h b/rpcs3/Emu/ARMv7/Modules/sceLibKernel.h index dca20547c1..186c470b1c 100644 --- a/rpcs3/Emu/ARMv7/Modules/sceLibKernel.h +++ b/rpcs3/Emu/ARMv7/Modules/sceLibKernel.h @@ -251,6 +251,20 @@ enum SCE_KERNEL_ERROR_NO_AUTH = 0x8002F001, }; +enum psv_object_class_t : u32 +{ + SCE_KERNEL_UID_CLASS_PROCESS = 0, + SCE_KERNEL_THREADMGR_UID_CLASS_THREAD = 1, + SCE_KERNEL_THREADMGR_UID_CLASS_SEMA = 2, + SCE_KERNEL_THREADMGR_UID_CLASS_EVENT_FLAG = 3, + SCE_KERNEL_THREADMGR_UID_CLASS_MUTEX = 4, + SCE_KERNEL_THREADMGR_UID_CLASS_COND = 5, + SCE_KERNEL_THREADMGR_UID_CLASS_TIMER = 6, + SCE_KERNEL_THREADMGR_UID_CLASS_MSG_PIPE = 7, + SCE_KERNEL_THREADMGR_UID_CLASS_CALLBACK = 8, + SCE_KERNEL_THREADMGR_UID_CLASS_THREAD_EVENT = 9, +}; + union SceKernelSysClock { struct diff --git a/rpcs3/Emu/ARMv7/PSVObjectList.cpp b/rpcs3/Emu/ARMv7/PSVObjectList.cpp new file mode 100644 index 0000000000..d9cb43aeef --- /dev/null +++ b/rpcs3/Emu/ARMv7/PSVObjectList.cpp @@ -0,0 +1,3 @@ +#include "stdafx.h" +#include "PSVObjectList.h" + diff --git a/rpcs3/Emu/ARMv7/PSVObjectList.h b/rpcs3/Emu/ARMv7/PSVObjectList.h new file mode 100644 index 0000000000..16d026f21e --- /dev/null +++ b/rpcs3/Emu/ARMv7/PSVObjectList.h @@ -0,0 +1,96 @@ +#pragma once + +union uid_t +{ + // true UID format is partially unknown + s32 uid; + + struct + { + u32 oddness : 1; // always 1 for UIDs (to not mess it up with addresses) + u32 number : 15; // ID from 0 to 2^15-1 + u32 type : 15; // UID class (psv_object_class_t) + u32 sign : 1; // UIDs are positive, error codes are negative + }; + + static uid_t make(s32 uid) + { + uid_t result; + result.uid = uid; + return result; + } +}; + +template +class psv_object_list_t // Class for managing object data +{ + std::array, 0x8000> m_data; + +public: + static const u32 uid_class = type; + + // check if UID is potentially valid (will return true if the object doesn't exist) + bool check(s32 uid) + { + const uid_t id = uid_t::make(uid); + + // check sign bit, uid class and ensure that value is odd + return !id.sign && id.type == uid_class && id.oddness == 1; + } + + // share object with UID specified (will return empty pointer if the object doesn't exist or the UID is invalid) + std::shared_ptr find(s32 uid) + { + if (!check(uid)) + { + return nullptr; + } + + return m_data[uid_t::make(uid).number]; + } + + std::shared_ptr operator [](s32 uid) + { + return find(uid); + } + + // generate UID for newly created object (will return zero if the limit exceeded) + s32 add(std::shared_ptr& data) + { + for (auto& value : m_data) + { + // find an empty position and move the pointer + std::shared_ptr old_ptr = nullptr; + if (std::atomic_compare_exchange_strong(&value, &old_ptr, data)) + { + uid_t id = uid_t::make(1); // odd number + id.type = uid_class; // set type + id.number = &value - m_data.data(); // set position + return id.uid; + } + } + + return 0; + } + + // remove object with UID specified and share it for the last time (will return empty pointer if the object doesn't exists or the UID is invalid) + std::shared_ptr remove(s32 uid) + { + if (!check(uid)) + { + return nullptr; + } + + return std::atomic_exchange(&m_data[uid_t::make(uid).number], nullptr); + } + + // remove all objects + void clear() + { + for (auto& value : m_data) + { + value = nullptr; + } + } +}; + diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index 4b4a2d6539..da233b2c30 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -56,11 +56,13 @@ + + @@ -274,8 +276,10 @@ + + diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index fdd71b410a..887600c974 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -87,6 +87,9 @@ {1d6abf72-0f18-43ec-9351-1fed1a3d1a1e} + + {368770cf-c8d9-4f4a-9ac3-5bdf48101ffe} + @@ -665,6 +668,12 @@ Emu\CPU\ARMv7 + + Emu\CPU\ARMv7\Thread Manager + + + Emu\CPU\ARMv7 + @@ -1294,5 +1303,11 @@ Emu\CPU\ARMv7\Modules + + Emu\CPU\ARMv7\Thread Manager + + + Emu\CPU\ARMv7 + \ No newline at end of file From 12c13e619321365c66067cf545dcc143704efd5b Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Mon, 26 Jan 2015 09:13:11 +0300 Subject: [PATCH 02/10] Fix --- rpcs3/Emu/ARMv7/PSVObjectList.h | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/rpcs3/Emu/ARMv7/PSVObjectList.h b/rpcs3/Emu/ARMv7/PSVObjectList.h index 16d026f21e..5fb6b5da93 100644 --- a/rpcs3/Emu/ARMv7/PSVObjectList.h +++ b/rpcs3/Emu/ARMv7/PSVObjectList.h @@ -1,6 +1,6 @@ #pragma once -union uid_t +union psv_uid_t { // true UID format is partially unknown s32 uid; @@ -13,9 +13,9 @@ union uid_t u32 sign : 1; // UIDs are positive, error codes are negative }; - static uid_t make(s32 uid) + static psv_uid_t make(s32 uid) { - uid_t result; + psv_uid_t result; result.uid = uid; return result; } @@ -32,7 +32,7 @@ public: // check if UID is potentially valid (will return true if the object doesn't exist) bool check(s32 uid) { - const uid_t id = uid_t::make(uid); + const psv_uid_t id = psv_uid_t::make(uid); // check sign bit, uid class and ensure that value is odd return !id.sign && id.type == uid_class && id.oddness == 1; @@ -46,7 +46,7 @@ public: return nullptr; } - return m_data[uid_t::make(uid).number]; + return m_data[psv_uid_t::make(uid).number]; } std::shared_ptr operator [](s32 uid) @@ -63,7 +63,7 @@ public: std::shared_ptr old_ptr = nullptr; if (std::atomic_compare_exchange_strong(&value, &old_ptr, data)) { - uid_t id = uid_t::make(1); // odd number + psv_uid_t id = psv_uid_t::make(1); // odd number id.type = uid_class; // set type id.number = &value - m_data.data(); // set position return id.uid; @@ -81,7 +81,7 @@ public: return nullptr; } - return std::atomic_exchange(&m_data[uid_t::make(uid).number], nullptr); + return std::atomic_exchange(&m_data[psv_uid_t::make(uid).number], nullptr); } // remove all objects From a7d85480a85b3c632919f6ccee3b3bc4dcfc7dbc Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Mon, 26 Jan 2015 15:55:26 +0300 Subject: [PATCH 03/10] Fixes --- rpcs3/Emu/ARMv7/ARMv7Context.h | 2 +- rpcs3/Emu/ARMv7/Modules/psv_sema_object.cpp | 2 -- rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp | 9 ++++++++- rpcs3/Emu/ARMv7/PSVObjectList.cpp | 12 +++++++++++- rpcs3/Emu/ARMv7/PSVObjectList.h | 19 ++++++++++++++++--- rpcs3/Emu/System.cpp | 2 ++ 6 files changed, 38 insertions(+), 8 deletions(-) diff --git a/rpcs3/Emu/ARMv7/ARMv7Context.h b/rpcs3/Emu/ARMv7/ARMv7Context.h index 491e0a0845..c0aebaff78 100644 --- a/rpcs3/Emu/ARMv7/ARMv7Context.h +++ b/rpcs3/Emu/ARMv7/ARMv7Context.h @@ -79,8 +79,8 @@ struct ARMv7Context { struct { - u8 cond : 3; u8 state : 5; + u8 cond : 3; }; u8 IT; diff --git a/rpcs3/Emu/ARMv7/Modules/psv_sema_object.cpp b/rpcs3/Emu/ARMv7/Modules/psv_sema_object.cpp index 4e6046bd25..0e67d72444 100644 --- a/rpcs3/Emu/ARMv7/Modules/psv_sema_object.cpp +++ b/rpcs3/Emu/ARMv7/Modules/psv_sema_object.cpp @@ -4,5 +4,3 @@ #include "Emu/ARMv7/PSVObjectList.h" #include "sceLibKernel.h" #include "psv_sema_object.h" - -psv_object_list_t g_psv_sema_list; diff --git a/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp b/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp index fd852feae7..e033e4ef22 100644 --- a/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp +++ b/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp @@ -468,7 +468,14 @@ s32 sceKernelCreateSema(vm::psv::ptr pName, u32 attr, s32 initCount, s32 sceKernelDeleteSema(s32 semaId) { - throw __FUNCTION__; + sceLibKernel.Error("sceKernelDeleteSema(semaId=0x%x)", semaId); + + if (!g_psv_sema_list.remove(semaId)) + { + RETURN_ERROR(SCE_KERNEL_ERROR_INVALID_UID); + } + + throw SCE_OK; } s32 sceKernelOpenSema(vm::psv::ptr pName) diff --git a/rpcs3/Emu/ARMv7/PSVObjectList.cpp b/rpcs3/Emu/ARMv7/PSVObjectList.cpp index d9cb43aeef..c90ebf20da 100644 --- a/rpcs3/Emu/ARMv7/PSVObjectList.cpp +++ b/rpcs3/Emu/ARMv7/PSVObjectList.cpp @@ -1,3 +1,13 @@ #include "stdafx.h" -#include "PSVObjectList.h" +#include "Emu/Memory/Memory.h" +#include "Emu/ARMv7/PSVFuncList.h" +#include "Emu/ARMv7/PSVObjectList.h" +#include "Modules/sceLibKernel.h" +#include "Modules/psv_sema_object.h" +psv_object_list_t g_psv_sema_list; + +void clear_all_psv_objects() +{ + g_psv_sema_list.clear(); +} diff --git a/rpcs3/Emu/ARMv7/PSVObjectList.h b/rpcs3/Emu/ARMv7/PSVObjectList.h index 5fb6b5da93..d25c6e39ce 100644 --- a/rpcs3/Emu/ARMv7/PSVObjectList.h +++ b/rpcs3/Emu/ARMv7/PSVObjectList.h @@ -25,6 +25,7 @@ template class psv_object_list_t // Class for managing object data { std::array, 0x8000> m_data; + std::mutex m_mutex; // TODO: remove it when shared_ptr atomic ops are fully available public: static const u32 uid_class = type; @@ -57,12 +58,16 @@ public: // generate UID for newly created object (will return zero if the limit exceeded) s32 add(std::shared_ptr& data) { + std::lock_guard lock(m_mutex); + for (auto& value : m_data) { // find an empty position and move the pointer - std::shared_ptr old_ptr = nullptr; - if (std::atomic_compare_exchange_strong(&value, &old_ptr, data)) + //std::shared_ptr old_ptr = nullptr; + //if (std::atomic_compare_exchange_strong(&value, &old_ptr, data)) + if (!value) { + value = data; psv_uid_t id = psv_uid_t::make(1); // odd number id.type = uid_class; // set type id.number = &value - m_data.data(); // set position @@ -81,12 +86,19 @@ public: return nullptr; } - return std::atomic_exchange(&m_data[psv_uid_t::make(uid).number], nullptr); + std::lock_guard lock(m_mutex); + + std::shared_ptr old_ptr = nullptr; + m_data[psv_uid_t::make(uid).number].swap(old_ptr); + return old_ptr; + //return std::atomic_exchange>(&m_data[psv_uid_t::make(uid).number], nullptr); } // remove all objects void clear() { + std::lock_guard lock(m_mutex); + for (auto& value : m_data) { value = nullptr; @@ -94,3 +106,4 @@ public: } }; +void clear_all_psv_objects(); diff --git a/rpcs3/Emu/System.cpp b/rpcs3/Emu/System.cpp index 9e17b56ddf..8324e0e54f 100644 --- a/rpcs3/Emu/System.cpp +++ b/rpcs3/Emu/System.cpp @@ -6,6 +6,7 @@ #include "Emu/GameInfo.h" #include "Emu/ARMv7/PSVFuncList.h" +#include "Emu/ARMv7/PSVObjectList.h" #include "Emu/SysCalls/Static.h" #include "Emu/SysCalls/ModuleManager.h" #include "Emu/Cell/PPUThread.h" @@ -363,6 +364,7 @@ void Emulator::Stop() LOG_NOTICE(HLE, "All threads stopped..."); finalize_psv_modules(); + clear_all_psv_objects(); m_rsx_callback = 0; // TODO: check finalization order From 81340e9d5c3667b108579a71cfcf264158a641d3 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Tue, 27 Jan 2015 03:19:51 +0300 Subject: [PATCH 04/10] scePerf stub, sceSysmodule, sema, ef --- rpcs3/Emu/ARMv7/ARMv7Context.h | 20 +++-- rpcs3/Emu/ARMv7/ARMv7Decoder.cpp | 57 +++++++------ rpcs3/Emu/ARMv7/ARMv7Interpreter.cpp | 4 +- rpcs3/Emu/ARMv7/Modules/psv_event_flag.cpp | 13 +++ rpcs3/Emu/ARMv7/Modules/psv_event_flag.h | 21 +++++ rpcs3/Emu/ARMv7/Modules/psv_sema.cpp | 14 ++++ rpcs3/Emu/ARMv7/Modules/psv_sema.h | 23 ++++++ rpcs3/Emu/ARMv7/Modules/psv_sema_object.cpp | 6 -- rpcs3/Emu/ARMv7/Modules/psv_sema_object.h | 11 --- rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp | 20 ++--- rpcs3/Emu/ARMv7/Modules/sceLibstdcxx.cpp | 9 ++- rpcs3/Emu/ARMv7/Modules/scePerf.cpp | 90 +++++++++++++++++++++ rpcs3/Emu/ARMv7/Modules/sceSysmodule.cpp | 39 +++++++++ rpcs3/Emu/ARMv7/PSVFuncList.cpp | 6 +- rpcs3/Emu/ARMv7/PSVObjectList.cpp | 5 +- rpcs3/Emu/Memory/vm_var.h | 9 ++- rpcs3/Emu/SysCalls/Callback.h | 16 ++-- rpcs3/emucore.vcxproj | 8 +- rpcs3/emucore.vcxproj.filters | 26 ++++-- 19 files changed, 310 insertions(+), 87 deletions(-) create mode 100644 rpcs3/Emu/ARMv7/Modules/psv_event_flag.cpp create mode 100644 rpcs3/Emu/ARMv7/Modules/psv_event_flag.h create mode 100644 rpcs3/Emu/ARMv7/Modules/psv_sema.cpp create mode 100644 rpcs3/Emu/ARMv7/Modules/psv_sema.h delete mode 100644 rpcs3/Emu/ARMv7/Modules/psv_sema_object.cpp delete mode 100644 rpcs3/Emu/ARMv7/Modules/psv_sema_object.h create mode 100644 rpcs3/Emu/ARMv7/Modules/scePerf.cpp create mode 100644 rpcs3/Emu/ARMv7/Modules/sceSysmodule.cpp diff --git a/rpcs3/Emu/ARMv7/ARMv7Context.h b/rpcs3/Emu/ARMv7/ARMv7Context.h index c0aebaff78..873f039555 100644 --- a/rpcs3/Emu/ARMv7/ARMv7Context.h +++ b/rpcs3/Emu/ARMv7/ARMv7Context.h @@ -79,20 +79,26 @@ struct ARMv7Context { struct { - u8 state : 5; - u8 cond : 3; + u8 shift_state : 5; + u8 cond_base : 3; + }; + + struct + { + u8 check_state : 4; + u8 condition : 4; }; u8 IT; u32 advance() { - const u32 res = (state & 0xf) ? (cond << 1 | state >> 4) : 0xe /* true */; + const u32 res = check_state ? condition : 0xe /* always true */; - state <<= 1; - if ((state & 0xf) == 0) // if no d + shift_state <<= 1; + if (!check_state) { - IT = 0; // clear ITSTATE + IT = 0; // clear } return res; @@ -100,7 +106,7 @@ struct ARMv7Context operator bool() const { - return (state & 0xf) != 0; + return check_state; } } ITSTATE; diff --git a/rpcs3/Emu/ARMv7/ARMv7Decoder.cpp b/rpcs3/Emu/ARMv7/ARMv7Decoder.cpp index f913bcbb8a..8a361014f4 100644 --- a/rpcs3/Emu/ARMv7/ARMv7Decoder.cpp +++ b/rpcs3/Emu/ARMv7/ARMv7Decoder.cpp @@ -140,7 +140,7 @@ const ARMv7_opcode_t ARMv7_opcode_table[] = ARMv7_OP4(0x0fe0, 0x0010, 0x0020, 0x0000, A1, EOR_REG), ARMv7_OP4(0x0fe0, 0x0090, 0x0020, 0x0010, A1, EOR_RSR), - ARMv7_OP2(0xff00, 0xbf00, T1, IT), + ARMv7_OP2(0xff00, 0xbf00, T1, IT, SKIP_IF( BF(0, 3) == 0 )), ARMv7_OP2(0xf800, 0xc800, T1, LDM), ARMv7_OP4(0xffd0, 0x2000, 0xe890, 0x0000, T2, LDM), @@ -1208,10 +1208,14 @@ void armv7_decoder_initialize(u32 addr, u32 end_addr, bool dump) { LOG_ERROR(ARMv7, "Unknown instruction found at address 0x%08x: %04x %04x", addr, code.code1, code.code0); addr += 4; + continue; } - else + + // Proceed with found: + + if (dump) { - if (dump) if (found->length == 2) + if (found->length == 2) { LOG_NOTICE(ARMv7, "0x%08x: %04x %s", addr, code.code0, found->name); } @@ -1219,34 +1223,39 @@ void armv7_decoder_initialize(u32 addr, u32 end_addr, bool dump) { LOG_NOTICE(ARMv7, "0x%08x: %04x %04x %s", addr, code.code1, code.code0, found->name); } + } - if (found->func == ARMv7_instrs::BLX && found->type == T2) + if (found->func == ARMv7_instrs::BLX && found->type == T2) + { + const u32 s = (code.data >> 26) & 0x1; + const u32 i1 = (code.data >> 13) & 0x1 ^ s ^ 1; + const u32 i2 = (code.data >> 11) & 0x1 ^ s ^ 1; + const u32 target = (addr + 4 & ~3) + sign<25, u32>(s << 24 | i2 << 23 | i1 << 22 | (code.data & 0x3ff0000) >> 4 | (code.data & 0x7ff) << 1); + + // possibly a call to imported function: + if (target >= end_addr && ((target - end_addr) % 16) == 0 && vm::psv::read16(target) == 0xf870) { - const u32 s = (code.data >> 26) & 0x1; - const u32 i1 = (code.data >> 13) & 0x1 ^ s ^ 1; - const u32 i2 = (code.data >> 11) & 0x1 ^ s ^ 1; - const u32 target = (addr + 4 & ~3) + sign<25, u32>(s << 24 | i2 << 23 | i1 << 22 | (code.data & 0x3ff0000) >> 4 | (code.data & 0x7ff) << 1); + const u32 instr = vm::psv::read32(target); - // possibly a call to imported function: - if (target >= end_addr && ((target - end_addr) % 16) == 0 && vm::psv::read16(target) == 0xf870) + // check if not "unimplemented" + if (instr >> 16) { - const u32 instr = vm::psv::read32(target); - - // check if not "unimplemented" - if (instr >> 16) - { - // replace BLX with "hack" instruction directly, it can help to see where it was called from - vm::psv::write32(addr, instr); - } - } - else - { - LOG_ERROR(ARMv7, "Unrecognized BLX call found at adddress 0x%08x (target=0x%08x)", addr, target); + // replace BLX with "hack" instruction directly, it can help to see where it was called from + vm::psv::write32(addr, instr); } } - - addr += found->length; + else + { + LOG_ERROR(ARMv7, "Unrecognized BLX call found at adddress 0x%08x (target=0x%08x)", addr, target); + } } + + //if (found->func == ARMv7_instrs::IT) + //{ + // LOG_ERROR(ARMv7, "IT instruction found at address 0x%08x", addr); + //} + + addr += found->length; } while (vm::psv::read16(addr) == 0xf870) diff --git a/rpcs3/Emu/ARMv7/ARMv7Interpreter.cpp b/rpcs3/Emu/ARMv7/ARMv7Interpreter.cpp index e6cd7dc651..71d91acad9 100644 --- a/rpcs3/Emu/ARMv7/ARMv7Interpreter.cpp +++ b/rpcs3/Emu/ARMv7/ARMv7Interpreter.cpp @@ -965,7 +965,7 @@ void ARMv7_instrs::BLX(ARMv7Context& context, const ARMv7Code code, const ARMv7_ } case A2: { - cond = 15; + cond = 0xe; // always true newLR = (context.thread.PC + 4) - 4; target = (context.thread.PC + 4 | 1) + sign<25, u32>((code.data & 0xffffff) << 2 | (code.data & 0x1000000) >> 23); break; @@ -1871,7 +1871,7 @@ void ARMv7_instrs::MOV_REG(ARMv7Context& context, const ARMv7Code code, const AR } case T2: { - cond = 15; + cond = 0xe; // always true d = (code.data & 0x7); m = (code.data & 0x38) >> 3; set_flags = true; diff --git a/rpcs3/Emu/ARMv7/Modules/psv_event_flag.cpp b/rpcs3/Emu/ARMv7/Modules/psv_event_flag.cpp new file mode 100644 index 0000000000..14c9af11bc --- /dev/null +++ b/rpcs3/Emu/ARMv7/Modules/psv_event_flag.cpp @@ -0,0 +1,13 @@ +#include "stdafx.h" +#include "Emu/Memory/Memory.h" +#include "Emu/ARMv7/PSVFuncList.h" +#include "Emu/ARMv7/PSVObjectList.h" +#include "sceLibKernel.h" +#include "psv_event_flag.h" + +psv_event_flag_t::psv_event_flag_t(const char* name, u32 attr, u32 pattern) + : attr(attr) + , pattern(pattern) +{ + strcpy_trunc(this->name, name); +} diff --git a/rpcs3/Emu/ARMv7/Modules/psv_event_flag.h b/rpcs3/Emu/ARMv7/Modules/psv_event_flag.h new file mode 100644 index 0000000000..bc1cb2d4e9 --- /dev/null +++ b/rpcs3/Emu/ARMv7/Modules/psv_event_flag.h @@ -0,0 +1,21 @@ +#pragma once + +struct psv_event_flag_t +{ + char name[32]; + u32 attr; + u32 pattern; + +private: + psv_event_flag_t() = delete; + psv_event_flag_t(const psv_event_flag_t&) = delete; + psv_event_flag_t(psv_event_flag_t&&) = delete; + + psv_event_flag_t& operator =(const psv_event_flag_t&) = delete; + psv_event_flag_t& operator =(psv_event_flag_t&&) = delete; + +public: + psv_event_flag_t(const char* name, u32 attr, u32 pattern); +}; + +extern psv_object_list_t g_psv_ef_list; diff --git a/rpcs3/Emu/ARMv7/Modules/psv_sema.cpp b/rpcs3/Emu/ARMv7/Modules/psv_sema.cpp new file mode 100644 index 0000000000..20527eb5b3 --- /dev/null +++ b/rpcs3/Emu/ARMv7/Modules/psv_sema.cpp @@ -0,0 +1,14 @@ +#include "stdafx.h" +#include "Emu/Memory/Memory.h" +#include "Emu/ARMv7/PSVFuncList.h" +#include "Emu/ARMv7/PSVObjectList.h" +#include "sceLibKernel.h" +#include "psv_sema.h" + +psv_sema_t::psv_sema_t(const char* name, u32 attr, s32 init_value, s32 max_value) + : attr(attr) + , value(init_value) + , max(max_value) +{ + strcpy_trunc(this->name, name); +} diff --git a/rpcs3/Emu/ARMv7/Modules/psv_sema.h b/rpcs3/Emu/ARMv7/Modules/psv_sema.h new file mode 100644 index 0000000000..30b3fa6c4c --- /dev/null +++ b/rpcs3/Emu/ARMv7/Modules/psv_sema.h @@ -0,0 +1,23 @@ +#pragma once + +struct psv_sema_t +{ + char name[32]; + u32 attr; + s32 value; + s32 max; + +private: + psv_sema_t() = delete; + psv_sema_t(const psv_sema_t&) = delete; + psv_sema_t(psv_sema_t&&) = delete; + + psv_sema_t& operator =(const psv_sema_t&) = delete; + psv_sema_t& operator =(psv_sema_t&&) = delete; + +public: + psv_sema_t(const char* name, u32 attr, s32 init_value, s32 max_value); + +}; + +extern psv_object_list_t g_psv_sema_list; diff --git a/rpcs3/Emu/ARMv7/Modules/psv_sema_object.cpp b/rpcs3/Emu/ARMv7/Modules/psv_sema_object.cpp deleted file mode 100644 index 0e67d72444..0000000000 --- a/rpcs3/Emu/ARMv7/Modules/psv_sema_object.cpp +++ /dev/null @@ -1,6 +0,0 @@ -#include "stdafx.h" -#include "Emu/Memory/Memory.h" -#include "Emu/ARMv7/PSVFuncList.h" -#include "Emu/ARMv7/PSVObjectList.h" -#include "sceLibKernel.h" -#include "psv_sema_object.h" diff --git a/rpcs3/Emu/ARMv7/Modules/psv_sema_object.h b/rpcs3/Emu/ARMv7/Modules/psv_sema_object.h deleted file mode 100644 index ee643cab4c..0000000000 --- a/rpcs3/Emu/ARMv7/Modules/psv_sema_object.h +++ /dev/null @@ -1,11 +0,0 @@ -#pragma once - -struct psv_sema_t -{ - char name[32]; - u32 attr; - s32 initCount; - s32 maxCount; -}; - -extern psv_object_list_t g_psv_sema_list; diff --git a/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp b/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp index e033e4ef22..25fa75c47c 100644 --- a/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp +++ b/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp @@ -8,7 +8,8 @@ #include "Emu/ARMv7/ARMv7Thread.h" #include "sceLibKernel.h" -#include "psv_sema_object.h" +#include "psv_sema.h" +#include "psv_event_flag.h" #define RETURN_ERROR(code) { Emu.Pause(); sceLibKernel.Error("%s() failed: %s", __FUNCTION__, #code); return code; } @@ -393,7 +394,13 @@ s32 sceKernelWaitMultipleEventsCB(vm::psv::ptr pWaitEventLis s32 sceKernelCreateEventFlag(vm::psv::ptr pName, u32 attr, u32 initPattern, vm::psv::ptr pOptParam) { - throw __FUNCTION__; + sceLibKernel.Error("sceKernelCreateEventFlag(pName=0x%x, attr=0x%x, initPattern=0x%x, pOptParam=0x%x)", pName, attr, initPattern, pOptParam); + + std::shared_ptr ef(new psv_event_flag_t(pName.get_ptr(), attr, initPattern)); + + const s32 id = g_psv_ef_list.add(ef); + + return id; } s32 sceKernelDeleteEventFlag(s32 evfId) @@ -452,17 +459,10 @@ s32 sceKernelCreateSema(vm::psv::ptr pName, u32 attr, s32 initCount, { sceLibKernel.Error("sceKernelCreateSema(pName=0x%x, attr=0x%x, initCount=%d, maxCount=%d, pOptParam=0x%x)", pName, attr, initCount, maxCount, pOptParam); - std::shared_ptr sema(new psv_sema_t); - - strcpy_trunc(sema->name, pName.get_ptr()); - sema->attr = attr; - sema->initCount = initCount; - sema->maxCount = maxCount; + std::shared_ptr sema(new psv_sema_t(pName.get_ptr(), attr, initCount, maxCount)); const s32 id = g_psv_sema_list.add(sema); - sceLibKernel.Error("*** semaphore created -> id=0x%x", id); - return id; } diff --git a/rpcs3/Emu/ARMv7/Modules/sceLibstdcxx.cpp b/rpcs3/Emu/ARMv7/Modules/sceLibstdcxx.cpp index 44b3b75ff8..2342f1f8c5 100644 --- a/rpcs3/Emu/ARMv7/Modules/sceLibstdcxx.cpp +++ b/rpcs3/Emu/ARMv7/Modules/sceLibstdcxx.cpp @@ -25,7 +25,8 @@ namespace sce_libstdcxx_func } } -#define REG_FUNC(nid, name) reg_psv_func(nid, &sceLibstdcxx, #name, &sce_libstdcxx_func::name) +// Attention: find and set correct original mangled name in third parameter, for example: REG_FUNC(0xAE71DC3, operator_new_nothrow, "_ZnwjRKSt9nothrow_t"); +#define REG_FUNC(nid, name, orig_name) reg_psv_func(nid, &sceLibstdcxx, orig_name, &sce_libstdcxx_func::name) psv_log_base sceLibstdcxx("SceLibstdcxx", []() { @@ -376,9 +377,9 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0xE7889A5B, _Unwind_VRS_Get); //REG_FUNC(0xF106D050, _Unwind_VRS_Pop); //REG_FUNC(0x91CDA2F9, _Unwind_VRS_Set); - REG_FUNC(0x173E7421, __aeabi_unwind_cpp_pr0); - REG_FUNC(0x3C78DDE3, __aeabi_unwind_cpp_pr1); - REG_FUNC(0xF95BDD36, __aeabi_unwind_cpp_pr2); + REG_FUNC(0x173E7421, __aeabi_unwind_cpp_pr0, "__aeabi_unwind_cpp_pr0"); + REG_FUNC(0x3C78DDE3, __aeabi_unwind_cpp_pr1, "__aeabi_unwind_cpp_pr1"); + REG_FUNC(0xF95BDD36, __aeabi_unwind_cpp_pr2, "__aeabi_unwind_cpp_pr2"); //REG_FUNC(0x8C93EFDA, __cxa_allocate_exception); //REG_FUNC(0x6165EE89, __cxa_begin_catch); //REG_FUNC(0x5D74285C, __cxa_begin_cleanup); diff --git a/rpcs3/Emu/ARMv7/Modules/scePerf.cpp b/rpcs3/Emu/ARMv7/Modules/scePerf.cpp new file mode 100644 index 0000000000..d83e6d5f22 --- /dev/null +++ b/rpcs3/Emu/ARMv7/Modules/scePerf.cpp @@ -0,0 +1,90 @@ +#include "stdafx.h" +#include "Emu/System.h" +#include "Emu/ARMv7/PSVFuncList.h" + +extern psv_log_base scePerf; + +s32 scePerfArmPmonReset(s32 threadId) +{ + scePerf.Todo("scePerfArmPmonReset(threadId=0x%x)", threadId); + + return SCE_OK; +} + +s32 scePerfArmPmonSelectEvent(s32 threadId, u32 counter, u8 eventCode) +{ + throw __FUNCTION__; +} + +s32 scePerfArmPmonStart(s32 threadId) +{ + throw __FUNCTION__; +} + +s32 scePerfArmPmonStop(s32 threadId) +{ + throw __FUNCTION__; +} + +s32 scePerfArmPmonGetCounterValue(s32 threadId, u32 counter, vm::psv::ptr pValue) +{ + throw __FUNCTION__; +} + +s32 scePerfArmPmonSoftwareIncrement(u32 mask) +{ + throw __FUNCTION__; +} + +u64 scePerfGetTimebaseValue() +{ + throw __FUNCTION__; +} + +u32 scePerfGetTimebaseFrequency() +{ + throw __FUNCTION__; +} + +s32 _sceRazorCpuInit(vm::psv::ptr pBufferBase, u32 bufferSize, u32 numPerfCounters, vm::psv::ptr> psceRazorVars) +{ + throw __FUNCTION__; +} + +s32 sceRazorCpuPushMarker(vm::psv::ptr szLabel) +{ + throw __FUNCTION__; +} + +s32 sceRazorCpuPopMarker() +{ + throw __FUNCTION__; +} + +s32 sceRazorCpuSync() +{ + throw __FUNCTION__; +} + +#define REG_FUNC(nid, name) reg_psv_func(nid, &scePerf, #name, name) + +psv_log_base scePerf("ScePerf", []() +{ + scePerf.on_load = nullptr; + scePerf.on_unload = nullptr; + scePerf.on_stop = nullptr; + + REG_FUNC(0x35151735, scePerfArmPmonReset); + REG_FUNC(0x63CBEA8B, scePerfArmPmonSelectEvent); + REG_FUNC(0xC9D969D5, scePerfArmPmonStart); + REG_FUNC(0xD1A40F54, scePerfArmPmonStop); + REG_FUNC(0x6132A497, scePerfArmPmonGetCounterValue); + //REG_FUNC(0x12F6C708, scePerfArmPmonSetCounterValue); + REG_FUNC(0x4264B4E7, scePerfArmPmonSoftwareIncrement); + REG_FUNC(0xBD9615E5, scePerfGetTimebaseValue); + REG_FUNC(0x78EA4FFB, scePerfGetTimebaseFrequency); + REG_FUNC(0x7AD6AC30, _sceRazorCpuInit); + REG_FUNC(0xC3DE4C0A, sceRazorCpuPushMarker); + REG_FUNC(0xDC3224C3, sceRazorCpuPopMarker); + REG_FUNC(0x4F1385E3, sceRazorCpuSync); +}); \ No newline at end of file diff --git a/rpcs3/Emu/ARMv7/Modules/sceSysmodule.cpp b/rpcs3/Emu/ARMv7/Modules/sceSysmodule.cpp new file mode 100644 index 0000000000..6584de337a --- /dev/null +++ b/rpcs3/Emu/ARMv7/Modules/sceSysmodule.cpp @@ -0,0 +1,39 @@ +#include "stdafx.h" +#include "Emu/System.h" +#include "Emu/ARMv7/PSVFuncList.h" + +extern psv_log_base sceSysmodule; + +s32 sceSysmoduleLoadModule(u16 id) +{ + sceSysmodule.Todo("sceSysmoduleLoadModule(id=0x%04x)", id); + + return SCE_OK; // loading succeeded +} + +s32 sceSysmoduleUnloadModule(u16 id) +{ + sceSysmodule.Todo("sceSysmoduleUnloadModule(id=0x%04x)", id); + + return SCE_OK; // unloading succeeded +} + +s32 sceSysmoduleIsLoaded(u16 id) +{ + sceSysmodule.Todo("sceSysmoduleIsLoaded(id=0x%04x)", id); + + return SCE_OK; // module is loaded +} + +#define REG_FUNC(nid, name) reg_psv_func(nid, &sceSysmodule, #name, name) + +psv_log_base sceSysmodule("SceSysmodule", []() +{ + sceSysmodule.on_load = nullptr; + sceSysmodule.on_unload = nullptr; + sceSysmodule.on_stop = nullptr; + + REG_FUNC(0x79A0160A, sceSysmoduleLoadModule); + REG_FUNC(0x31D87805, sceSysmoduleUnloadModule); + REG_FUNC(0x53099B7A, sceSysmoduleIsLoaded); +}); diff --git a/rpcs3/Emu/ARMv7/PSVFuncList.cpp b/rpcs3/Emu/ARMv7/PSVFuncList.cpp index bd17628f20..05d9b4c483 100644 --- a/rpcs3/Emu/ARMv7/PSVFuncList.cpp +++ b/rpcs3/Emu/ARMv7/PSVFuncList.cpp @@ -48,6 +48,8 @@ extern psv_log_base sceLibc; extern psv_log_base sceLibm; extern psv_log_base sceLibstdcxx; extern psv_log_base sceLibKernel; +extern psv_log_base sceSysmodule; +extern psv_log_base scePerf; void initialize_psv_modules() { @@ -58,6 +60,8 @@ void initialize_psv_modules() g_psv_modules.push_back(&sceLibm); g_psv_modules.push_back(&sceLibstdcxx); g_psv_modules.push_back(&sceLibKernel); + g_psv_modules.push_back(&sceSysmodule); + g_psv_modules.push_back(&scePerf); // setup special functions (without NIDs) psv_func unimplemented; @@ -66,7 +70,7 @@ void initialize_psv_modules() unimplemented.func.reset(new psv_func_detail::func_binder([](ARMv7Context& context) { context.thread.m_last_syscall = vm::psv::read32(context.thread.PC + 4); - throw "Unimplemented function executed"; + throw "Unimplemented function"; })); g_psv_func_list.push_back(unimplemented); diff --git a/rpcs3/Emu/ARMv7/PSVObjectList.cpp b/rpcs3/Emu/ARMv7/PSVObjectList.cpp index c90ebf20da..cc8e97a1c0 100644 --- a/rpcs3/Emu/ARMv7/PSVObjectList.cpp +++ b/rpcs3/Emu/ARMv7/PSVObjectList.cpp @@ -3,11 +3,14 @@ #include "Emu/ARMv7/PSVFuncList.h" #include "Emu/ARMv7/PSVObjectList.h" #include "Modules/sceLibKernel.h" -#include "Modules/psv_sema_object.h" +#include "Modules/psv_sema.h" +#include "Modules/psv_event_flag.h" psv_object_list_t g_psv_sema_list; +psv_object_list_t g_psv_ef_list; void clear_all_psv_objects() { g_psv_sema_list.clear(); + g_psv_ef_list.clear(); } diff --git a/rpcs3/Emu/Memory/vm_var.h b/rpcs3/Emu/Memory/vm_var.h index 95ea373f9e..06864950b9 100644 --- a/rpcs3/Emu/Memory/vm_var.h +++ b/rpcs3/Emu/Memory/vm_var.h @@ -517,11 +517,12 @@ namespace vm ptr = vm::get_ptr(addr); } + private: stack_allocation() = delete; - stack_allocation(const stack_allocation& r) = delete; - stack_allocation(stack_allocation&& r) = delete; - stack_allocation& operator = (const stack_allocation& r) = delete; - stack_allocation& operator = (stack_allocation&& r) = delete; + stack_allocation(const stack_allocation&) = delete; + stack_allocation(stack_allocation&&) = delete; + stack_allocation& operator = (const stack_allocation&) = delete; + stack_allocation& operator = (stack_allocation&&) = delete; } const m_data; diff --git a/rpcs3/Emu/SysCalls/Callback.h b/rpcs3/Emu/SysCalls/Callback.h index 2e8c64cf92..6918d338a3 100644 --- a/rpcs3/Emu/SysCalls/Callback.h +++ b/rpcs3/Emu/SysCalls/Callback.h @@ -42,6 +42,14 @@ class PauseCallbackRegisterer CallbackManager& cb_manager; u64 cb_tag; +private: + PauseCallbackRegisterer() = delete; + PauseCallbackRegisterer(const PauseCallbackRegisterer& right) = delete; + PauseCallbackRegisterer(PauseCallbackRegisterer&& right) = delete; + + PauseCallbackRegisterer& operator =(const PauseCallbackRegisterer& right) = delete; + PauseCallbackRegisterer& operator =(PauseCallbackRegisterer&& right) = delete; + public: PauseCallbackRegisterer(CallbackManager& cb_manager, const std::function& func) : cb_manager(cb_manager) @@ -49,16 +57,8 @@ public: { } - PauseCallbackRegisterer() = delete; - PauseCallbackRegisterer(const PauseCallbackRegisterer& right) = delete; - PauseCallbackRegisterer(PauseCallbackRegisterer&& right) = delete; - ~PauseCallbackRegisterer() { cb_manager.RemovePauseCallback(cb_tag); } - - PauseCallbackRegisterer& operator =(const PauseCallbackRegisterer& right) = delete; - PauseCallbackRegisterer& operator =(PauseCallbackRegisterer&& right) = delete; - }; diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index da233b2c30..407ab81918 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -56,11 +56,14 @@ - + + + + @@ -276,7 +279,8 @@ - + + diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index 887600c974..d8f1f1b884 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -87,7 +87,7 @@ {1d6abf72-0f18-43ec-9351-1fed1a3d1a1e} - + {368770cf-c8d9-4f4a-9ac3-5bdf48101ffe} @@ -668,12 +668,21 @@ Emu\CPU\ARMv7 - - Emu\CPU\ARMv7\Thread Manager - Emu\CPU\ARMv7 + + Emu\CPU\ARMv7\Objects + + + Emu\CPU\ARMv7\Objects + + + Emu\CPU\ARMv7\Modules + + + Emu\CPU\ARMv7\Modules + @@ -1303,11 +1312,14 @@ Emu\CPU\ARMv7\Modules - - Emu\CPU\ARMv7\Thread Manager - Emu\CPU\ARMv7 + + Emu\CPU\ARMv7\Objects + + + Emu\CPU\ARMv7\Objects + \ No newline at end of file From 3141cc9bc717a6ca0598ac13b586e1f2d2d05e54 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Tue, 27 Jan 2015 04:26:05 +0300 Subject: [PATCH 05/10] NIDs fix --- rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp | 32 ++-- rpcs3/Emu/ARMv7/Modules/sceLibm.cpp | 26 +-- rpcs3/Emu/ARMv7/Modules/sceLibstdcxx.cpp | 224 +++++++++++------------ 3 files changed, 141 insertions(+), 141 deletions(-) diff --git a/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp b/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp index 25fa75c47c..f4705ab1d8 100644 --- a/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp +++ b/rpcs3/Emu/ARMv7/Modules/sceLibKernel.cpp @@ -990,7 +990,7 @@ psv_log_base sceLibKernel("sceLibKernel", []() // REG_FUNC(???, sceKernelGetEventInfo); - //REG_FUNC(0x23EAA62, sceKernelPuts); + //REG_FUNC(0x023EAA62, sceKernelPuts); //REG_FUNC(0xB0335388, sceClibToupper); //REG_FUNC(0x4C5471BC, sceClibTolower); //REG_FUNC(0xD8EBBB7E, sceClibLookCtypeTable); @@ -1047,11 +1047,11 @@ psv_log_base sceLibKernel("sceLibKernel", []() //REG_FUNC(0x4AE9C8E6, sceKernelAtomicGetAndSub64); //REG_FUNC(0x99E1796E, sceKernelAtomicSubAndGet8); //REG_FUNC(0xC26BBBB1, sceKernelAtomicSubAndGet16); - //REG_FUNC(0x1C9CD92, sceKernelAtomicSubAndGet32); + //REG_FUNC(0x01C9CD92, sceKernelAtomicSubAndGet32); //REG_FUNC(0x9BB4A94B, sceKernelAtomicSubAndGet64); //REG_FUNC(0x53DCA02B, sceKernelAtomicGetAndAnd8); //REG_FUNC(0x7A0CB056, sceKernelAtomicGetAndAnd16); - //REG_FUNC(0x8266595, sceKernelAtomicGetAndAnd32); + //REG_FUNC(0x08266595, sceKernelAtomicGetAndAnd32); //REG_FUNC(0x4828BC43, sceKernelAtomicGetAndAnd64); //REG_FUNC(0x86B9170F, sceKernelAtomicAndAndGet8); //REG_FUNC(0xF9890F7E, sceKernelAtomicAndAndGet16); @@ -1103,9 +1103,9 @@ psv_log_base sceLibKernel("sceLibKernel", []() //REG_FUNC(0x4C7AD128, sceKernelPowerLock); //REG_FUNC(0xAF8E9C11, sceKernelPowerUnlock); //REG_FUNC(0xB295EB61, sceKernelGetTLSAddr); - REG_FUNC(0xFB972F9, sceKernelGetThreadId); + REG_FUNC(0x0FB972F9, sceKernelGetThreadId); REG_FUNC(0xA37A6057, sceKernelGetCurrentThreadVfpException); - //REG_FUNC(0xCA71EA2, sceKernelSendMsgPipe); + //REG_FUNC(0x0CA71EA2, sceKernelSendMsgPipe); //REG_FUNC(0xA5CA74AC, sceKernelSendMsgPipeCB); //REG_FUNC(0xDFC670E0, sceKernelTrySendMsgPipe); //REG_FUNC(0x4E81DD5C, sceKernelReceiveMsgPipe); @@ -1163,7 +1163,7 @@ psv_log_base sceLibKernel("sceLibKernel", []() REG_FUNC(0xC08F5BC5, sceKernelDeleteSema); REG_FUNC(0xB028AB78, sceKernelOpenSema); REG_FUNC(0x817707AB, sceKernelCloseSema); - REG_FUNC(0xC7B834B, sceKernelWaitSema); + REG_FUNC(0x0C7B834B, sceKernelWaitSema); REG_FUNC(0x174692B4, sceKernelWaitSemaCB); REG_FUNC(0x66D6BF05, sceKernelCancelSema); REG_FUNC(0x595D3FA6, sceKernelGetSemaInfo); @@ -1188,8 +1188,8 @@ psv_log_base sceLibKernel("sceLibKernel", []() REG_FUNC(0x6864DCE2, sceKernelGetCondInfo); REG_FUNC(0x10A4976F, sceKernelSignalCond); REG_FUNC(0x2EB86929, sceKernelSignalCondAll); - REG_FUNC(0x87629E6, sceKernelSignalCondTo); - //REG_FUNC(0xA10C1C8, sceKernelCreateMsgPipe); + REG_FUNC(0x087629E6, sceKernelSignalCondTo); + //REG_FUNC(0x0A10C1C8, sceKernelCreateMsgPipe); //REG_FUNC(0x69F6575D, sceKernelDeleteMsgPipe); //REG_FUNC(0x230691DA, sceKernelOpenMsgPipe); //REG_FUNC(0x7E5C0C16, sceKernelCloseMsgPipe); @@ -1218,7 +1218,7 @@ psv_log_base sceLibKernel("sceLibKernel", []() REG_FUNC(0x2F3D35A3, sceKernelOpenTimer); REG_FUNC(0x17283DE6, sceKernelCloseTimer); REG_FUNC(0x1478249B, sceKernelStartTimer); - REG_FUNC(0x75B1329, sceKernelStopTimer); + REG_FUNC(0x075B1329, sceKernelStopTimer); REG_FUNC(0x1F59E04D, sceKernelGetTimerBase); REG_FUNC(0x3223CCD1, sceKernelGetTimerBaseWide); REG_FUNC(0x381DC300, sceKernelGetTimerTime); @@ -1241,7 +1241,7 @@ psv_log_base sceLibKernel("sceLibKernel", []() REG_FUNC(0x597D4607, sceKernelTryLockWriteRWLock); REG_FUNC(0xD9369DF2, sceKernelUnlockWriteRWLock); REG_FUNC(0x190CA94B, sceKernelCancelRWLock); - REG_FUNC(0x79A573B, sceKernelGetRWLockInfo); + REG_FUNC(0x079A573B, sceKernelGetRWLockInfo); REG_FUNC(0x8AF15B5F, sceKernelGetSystemTime); //REG_FUNC(0x99B2BF15, sceKernelPMonThreadGetCounter); //REG_FUNC(0x7C21C961, sceKernelPMonCpuGetCounter); @@ -1265,14 +1265,14 @@ psv_log_base sceLibKernel("sceLibKernel", []() REG_FUNC(0xBCA5B623, sceIoGetstat); REG_FUNC(0x29482F7F, sceIoChstat); REG_FUNC(0x98ACED6D, sceIoSync); - REG_FUNC(0x4B30CB2, sceIoDevctl); + REG_FUNC(0x04B30CB2, sceIoDevctl); REG_FUNC(0x54ABACFA, sceIoIoctl); //REG_FUNC(0x6A7EA9FD, sceIoOpenAsync); //REG_FUNC(0x84201C9B, sceIoCloseAsync); //REG_FUNC(0x7B3BE857, sceIoReadAsync); //REG_FUNC(0x21329B20, sceIoWriteAsync); //REG_FUNC(0xCAC5D672, sceIoLseekAsync); - //REG_FUNC(0x99C54B9, sceIoIoctlAsync); + //REG_FUNC(0x099C54B9, sceIoIoctlAsync); //REG_FUNC(0x446A60AC, sceIoRemoveAsync); //REG_FUNC(0x73FC184B, sceIoDopenAsync); //REG_FUNC(0x4D0597D7, sceIoDcloseAsync); @@ -1305,7 +1305,7 @@ psv_log_base sceLibKernel("sceLibKernel", []() //REG_FUNC(0xCD248267, sceKernelGetCurrentProcess); //REG_FUNC(0x2252890C, sceKernelPowerTick); //REG_FUNC(0x9E45DA09, sceKernelLibcClock); - //REG_FUNC(0x39BE45, sceKernelLibcTime); + //REG_FUNC(0x0039BE45, sceKernelLibcTime); //REG_FUNC(0x4B879059, sceKernelLibcGettimeofday); //REG_FUNC(0xC1727F59, sceKernelGetStdin); //REG_FUNC(0xE5AA625C, sceKernelGetStdout); @@ -1338,12 +1338,12 @@ psv_log_base sceLibKernel("sceLibKernel", []() //REG_FUNC(0x800EDCC1, sceKernelClearDipsw); /* SceThreadmgr */ - REG_FUNC(0xC8A38E1, sceKernelExitThread); + REG_FUNC(0x0C8A38E1, sceKernelExitThread); REG_FUNC(0x1D17DECF, sceKernelExitDeleteThread); REG_FUNC(0x4B675D05, sceKernelDelayThread); REG_FUNC(0x9C0180E1, sceKernelDelayThreadCB); - //REG_FUNC(0x1173F8, sceKernelChangeActiveCpuMask); - REG_FUNC(0x1414F0B, sceKernelGetThreadCurrentPriority); + //REG_FUNC(0x001173F8, sceKernelChangeActiveCpuMask); + REG_FUNC(0x01414F0B, sceKernelGetThreadCurrentPriority); REG_FUNC(0x751C9B7A, sceKernelChangeCurrentThreadAttr); REG_FUNC(0xD9BD74EB, sceKernelCheckWaitableStatus); REG_FUNC(0x9DCB4B7A, sceKernelGetProcessId); diff --git a/rpcs3/Emu/ARMv7/Modules/sceLibm.cpp b/rpcs3/Emu/ARMv7/Modules/sceLibm.cpp index c0b847e6e5..1cbd5cd12e 100644 --- a/rpcs3/Emu/ARMv7/Modules/sceLibm.cpp +++ b/rpcs3/Emu/ARMv7/Modules/sceLibm.cpp @@ -47,10 +47,10 @@ psv_log_base sceLibm("SceLibm", []() //REG_FUNC(0x63F05BD6, ceil); //REG_FUNC(0x6BBFEC89, ceilf); //REG_FUNC(0x48082D81, ceill); - //REG_FUNC(0xB918D13, copysign); + //REG_FUNC(0x0B918D13, copysign); //REG_FUNC(0x16EB9E63, copysignf); //REG_FUNC(0x19DFC0AA, copysignl); - //REG_FUNC(0x61D0244, cos); + //REG_FUNC(0x061D0244, cos); //REG_FUNC(0x127F8302, cosf); //REG_FUNC(0x89B9BE1F, cosl); //REG_FUNC(0x110195E7, cosh); @@ -59,7 +59,7 @@ psv_log_base sceLibm("SceLibm", []() //REG_FUNC(0x4B84C012, _Cosh); //REG_FUNC(0x15993458, erf); //REG_FUNC(0x524AEBFE, erfc); - //REG_FUNC(0x301F113, erfcf); + //REG_FUNC(0x0301F113, erfcf); //REG_FUNC(0xD4C92471, erfcl); //REG_FUNC(0x41DD1AB8, erff); //REG_FUNC(0xFD431619, erfl); @@ -74,7 +74,7 @@ psv_log_base sceLibm("SceLibm", []() //REG_FUNC(0x8BF1866C, expm1l); //REG_FUNC(0x3E672BE3, fabs); //REG_FUNC(0x75348906, fabsf); - //REG_FUNC(0x3ECA514, fabsl); + //REG_FUNC(0x03ECA514, fabsl); //REG_FUNC(0xA278B20D, _FCosh); //REG_FUNC(0xD6FD5A2E, fdim); //REG_FUNC(0x8B6CC137, fdimf); @@ -96,19 +96,19 @@ psv_log_base sceLibm("SceLibm", []() //REG_FUNC(0x1CD8F88E, fmodf); //REG_FUNC(0x986011B4, fmodl); //REG_FUNC(0x59197427, frexp); - //REG_FUNC(0xA6879AC, frexpf); + //REG_FUNC(0x0A6879AC, frexpf); //REG_FUNC(0x6DC8D877, frexpl); //REG_FUNC(0x4A496BC0, _FSin); //REG_FUNC(0x7FBB4C55, _FSinh); //REG_FUNC(0x2D2CD795, hypot); //REG_FUNC(0xA397B929, hypotf); - //REG_FUNC(0x5BFBEE8, hypotl); + //REG_FUNC(0x05BFBEE8, hypotl); //REG_FUNC(0x667EE864, ilogb); //REG_FUNC(0x80050A43, ilogbf); //REG_FUNC(0x91298DCA, ilogbl); - //REG_FUNC(0x197C9D5, _LCosh); - //REG_FUNC(0x56061B, ldexp); - //REG_FUNC(0xE61E016, ldexpf); + //REG_FUNC(0x0197C9D5, _LCosh); + //REG_FUNC(0x0056061B, ldexp); + //REG_FUNC(0x0E61E016, ldexpf); //REG_FUNC(0x8280A7B1, ldexpl); //REG_FUNC(0x2480AA54, lgamma); //REG_FUNC(0x2D9556D5, lgammaf); @@ -118,7 +118,7 @@ psv_log_base sceLibm("SceLibm", []() //REG_FUNC(0xC1F6135B, llrintf); //REG_FUNC(0x80558247, llrintl); //REG_FUNC(0xD1251A18, llround); - //REG_FUNC(0x4595A04, llroundf); + //REG_FUNC(0x04595A04, llroundf); //REG_FUNC(0x9AB5C7AF, llroundl); //REG_FUNC(0x6037C48F, log); //REG_FUNC(0x811ED68B, logf); @@ -134,7 +134,7 @@ psv_log_base sceLibm("SceLibm", []() //REG_FUNC(0x4095DBDB, log2f); //REG_FUNC(0x720021A9, log2l); //REG_FUNC(0x5EAE8AD4, logb); - //REG_FUNC(0x25F51CE, logbf); + //REG_FUNC(0x025F51CE, logbf); //REG_FUNC(0x86C4B75F, logbl); //REG_FUNC(0x207307D0, lrint); //REG_FUNC(0xDA903135, lrintf); @@ -200,8 +200,8 @@ psv_log_base sceLibm("SceLibm", []() //REG_FUNC(0x3A7FE686, tgamma); //REG_FUNC(0xE6067AC0, tgammaf); //REG_FUNC(0x2949109F, tgammal); - //REG_FUNC(0x212323E, trunc); - //REG_FUNC(0x90B899F, truncf); + //REG_FUNC(0x0212323E, trunc); + //REG_FUNC(0x090B899F, truncf); //REG_FUNC(0xBC0F1B1A, truncl); //REG_FUNC(0x98BBDAE0, _Dclass); //REG_FUNC(0xBD8EF217, _FDclass); diff --git a/rpcs3/Emu/ARMv7/Modules/sceLibstdcxx.cpp b/rpcs3/Emu/ARMv7/Modules/sceLibstdcxx.cpp index 2342f1f8c5..f0f2674441 100644 --- a/rpcs3/Emu/ARMv7/Modules/sceLibstdcxx.cpp +++ b/rpcs3/Emu/ARMv7/Modules/sceLibstdcxx.cpp @@ -56,14 +56,14 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x16F56E8D, std::invalid_argument::_Doraise() const); //REG_FUNC(0x6C568D20, std::_ctype::do_tolower(char*, char const*) const); //REG_FUNC(0xC334DE66, std::_ctype::do_tolower(char) const); - //REG_FUNC(0x2DD808E, std::_ctype::do_toupper(char*, char const*) const); + //REG_FUNC(0x02DD808E, std::_ctype::do_toupper(char*, char const*) const); //REG_FUNC(0xF6AF33EA, std::_ctype::do_toupper(char) const); //REG_FUNC(0x1B81D726, std::_ctype::do_widen(char const*, char const*, char*) const); //REG_FUNC(0x6471CC01, std::_ctype::do_widen(char) const); //REG_FUNC(0x9CFA56E5, std::_ctype::do_narrow(char const*, char const*, char, char*) const); //REG_FUNC(0x718669AB, std::_ctype::do_narrow(char, char) const); //REG_FUNC(0x759F105D, std::_ctype::do_scan_is(short, wchar_t const*, wchar_t const*) const); - //REG_FUNC(0x56443F, std::_ctype::do_tolower(wchar_t*, wchar_t const*) const); + //REG_FUNC(0x0056443F, std::_ctype::do_tolower(wchar_t*, wchar_t const*) const); //REG_FUNC(0x33E9ECDD, std::_ctype::do_tolower(wchar_t) const); //REG_FUNC(0x1256E6A5, std::_ctype::do_toupper(wchar_t*, wchar_t const*) const); //REG_FUNC(0x64072C2E, std::_ctype::do_toupper(wchar_t) const); @@ -91,7 +91,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x664750EE, std::bad_alloc::what() const); //REG_FUNC(0xBA89FBE7, std::bad_alloc::_Doraise() const); //REG_FUNC(0xC133E331, std::exception::what() const); - //REG_FUNC(0x656BE32, std::exception::_Raise() const); + //REG_FUNC(0x0656BE32, std::exception::_Raise() const); //REG_FUNC(0x47A5CDA2, std::exception::_Doraise() const); //REG_FUNC(0xBAE38DF9, std::type_info::name() const); //REG_FUNC(0x1F260F10, std::type_info::before(std::type_info const&) const); @@ -119,10 +119,10 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x9CF31703, std::istrstream::~istrstream()); //REG_FUNC(0x71D13A36, std::istrstream::~istrstream()); //REG_FUNC(0xAF5DF8C3, std::istrstream::~istrstream()); - //REG_FUNC(0xC1E7C7A, std::ostrstream::ostrstream(char*, int, std::_Iosb::_Openmode)); - //REG_FUNC(0xC09B290, std::ostrstream::ostrstream(char*, int, std::_Iosb::_Openmode)); + //REG_FUNC(0x0C1E7C7A, std::ostrstream::ostrstream(char*, int, std::_Iosb::_Openmode)); + //REG_FUNC(0x0C09B290, std::ostrstream::ostrstream(char*, int, std::_Iosb::_Openmode)); //REG_FUNC(0x4B8BA644, std::ostrstream::~ostrstream()); - //REG_FUNC(0xE463FB3, std::ostrstream::~ostrstream()); + //REG_FUNC(0x0E463FB3, std::ostrstream::~ostrstream()); //REG_FUNC(0xA0A34FEF, std::ostrstream::~ostrstream()); //REG_FUNC(0xC9F632FF, std::logic_error::logic_error(std::logic_error const&)); //REG_FUNC(0xE6356C5C, std::logic_error::logic_error(std::string const&)); @@ -136,12 +136,12 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x7D5412EF, std::domain_error::domain_error(std::domain_error const&)); //REG_FUNC(0x803A7D3E, std::domain_error::~domain_error()); //REG_FUNC(0xA6BCA2AD, std::domain_error::~domain_error()); - //REG_FUNC(0x36F9D2A, std::domain_error::~domain_error()); + //REG_FUNC(0x036F9D2A, std::domain_error::~domain_error()); //REG_FUNC(0x5F3428AD, std::length_error::length_error(std::length_error const&)); //REG_FUNC(0xF6FB801D, std::length_error::length_error(std::string const&)); //REG_FUNC(0xF83AA7DA, std::length_error::~length_error()); //REG_FUNC(0xA873D7F9, std::length_error::~length_error()); - //REG_FUNC(0xBB12C75, std::length_error::~length_error()); + //REG_FUNC(0x0BB12C75, std::length_error::~length_error()); //REG_FUNC(0x299AA587, std::out_of_range::out_of_range(std::out_of_range const&)); //REG_FUNC(0xC8BA5522, std::out_of_range::out_of_range(std::string const&)); //REG_FUNC(0xA8C470A4, std::out_of_range::~out_of_range()); @@ -157,7 +157,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0xA9F4FABF, std::strstreambuf::underflow()); //REG_FUNC(0x1C887DDE, std::strstreambuf::~strstreambuf()); //REG_FUNC(0x29E1E930, std::strstreambuf::~strstreambuf()); - //REG_FUNC(0xA140889, std::strstreambuf::~strstreambuf()); + //REG_FUNC(0x0A140889, std::strstreambuf::~strstreambuf()); //REG_FUNC(0xA8FE6FC4, std::_codecvt_base::~_codecvt_base()); //REG_FUNC(0xB0E47AE4, std::_codecvt_base::~_codecvt_base()); //REG_FUNC(0xB7EE9CC2, std::bad_exception::bad_exception(std::bad_exception const&)); @@ -174,7 +174,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x413E813E, std::basic_filebuf >::setbuf(char*, int)); //REG_FUNC(0x9D193B65, std::basic_filebuf >::_Unlock()); //REG_FUNC(0x52E47FB5, std::basic_filebuf >::seekoff(long, std::_Iosb::_Seekdir, std::_Iosb::_Openmode)); - //REG_FUNC(0xE119B37, std::basic_filebuf >::seekpos(std::fpos, std::_Iosb::_Openmode)); + //REG_FUNC(0x0E119B37, std::basic_filebuf >::seekpos(std::fpos, std::_Iosb::_Openmode)); //REG_FUNC(0x616754BC, std::basic_filebuf >::overflow(int)); //REG_FUNC(0xCD5BD2E1, std::basic_filebuf >::_Endwrite()); //REG_FUNC(0xFC1C7F3A, std::basic_filebuf >::pbackfail(int)); @@ -197,7 +197,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0xFFFA683E, std::basic_istream >::~basic_istream()); //REG_FUNC(0xB58839C5, std::basic_istream >::~basic_istream()); //REG_FUNC(0x9BF8855B, std::basic_ostream >::basic_ostream(std::basic_streambuf >*, bool)); - //REG_FUNC(0xD74F56E, std::basic_ostream >::~basic_ostream()); + //REG_FUNC(0x0D74F56E, std::basic_ostream >::~basic_ostream()); //REG_FUNC(0x9B831B60, std::basic_ostream >::~basic_ostream()); //REG_FUNC(0x396337CE, std::runtime_error::runtime_error(std::runtime_error const&)); //REG_FUNC(0xDAD26367, std::runtime_error::~runtime_error()); @@ -209,20 +209,20 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x4E45F680, std::overflow_error::~overflow_error()); //REG_FUNC(0x626515E3, std::basic_streambuf >::sync()); //REG_FUNC(0x2E55F15A, std::basic_streambuf >::_Lock()); - //REG_FUNC(0xF8535AB, std::basic_streambuf >::uflow()); + //REG_FUNC(0x0F8535AB, std::basic_streambuf >::uflow()); //REG_FUNC(0xD7933D06, std::basic_streambuf >::setbuf(char*, int)); //REG_FUNC(0xB8BCCC8D, std::basic_streambuf >::xsgetn(char*, int)); //REG_FUNC(0x43E5D0F1, std::basic_streambuf >::xsputn(char const*, int)); //REG_FUNC(0x149B193A, std::basic_streambuf >::_Unlock()); //REG_FUNC(0x600998EC, std::basic_streambuf >::seekoff(long, std::_Iosb::_Seekdir, std::_Iosb::_Openmode)); - //REG_FUNC(0x1DEFFD6, std::basic_streambuf >::seekpos(std::fpos, std::_Iosb::_Openmode)); + //REG_FUNC(0x01DEFFD6, std::basic_streambuf >::seekpos(std::fpos, std::_Iosb::_Openmode)); //REG_FUNC(0xF5F44352, std::basic_streambuf >::overflow(int)); //REG_FUNC(0xCA79344F, std::basic_streambuf >::pbackfail(int)); //REG_FUNC(0x441788B1, std::basic_streambuf >::showmanyc()); //REG_FUNC(0x797DAE94, std::basic_streambuf >::underflow()); - //REG_FUNC(0x74AD52E, std::basic_streambuf >::~basic_streambuf()); + //REG_FUNC(0x074AD52E, std::basic_streambuf >::~basic_streambuf()); //REG_FUNC(0xE449E2BF, std::basic_streambuf >::~basic_streambuf()); - //REG_FUNC(0x9FAA0AA, std::basic_streambuf >::sync()); + //REG_FUNC(0x09FAA0AA, std::basic_streambuf >::sync()); //REG_FUNC(0xA596C88C, std::basic_streambuf >::_Lock()); //REG_FUNC(0x373C2CD8, std::basic_streambuf >::uflow()); //REG_FUNC(0x3F363796, std::basic_streambuf >::setbuf(wchar_t*, int)); @@ -246,7 +246,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x9982A4FC, std::invalid_argument::~invalid_argument()); //REG_FUNC(0x1AB2B1AC, std::invalid_argument::~invalid_argument()); //REG_FUNC(0xF9FAB558, std::_Mutex::_Lock()); - //REG_FUNC(0x402C9F8, std::_Mutex::_Unlock()); + //REG_FUNC(0x0402C9F8, std::_Mutex::_Unlock()); //REG_FUNC(0x9DA92617, std::_Mutex::_Mutex(std::_Uninitialized)); //REG_FUNC(0xA4F99AE7, std::_Mutex::_Mutex()); //REG_FUNC(0x7B5A6B7F, std::_Mutex::_Mutex(std::_Uninitialized)); @@ -279,12 +279,12 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x65D88619, std::ios_base::Init::~Init()); //REG_FUNC(0x3483E01D, std::ios_base::Init::~Init()); //REG_FUNC(0x78CB190E, std::ios_base::_Init()); - //REG_FUNC(0x23B8BEE, std::ios_base::_Tidy()); + //REG_FUNC(0x023B8BEE, std::ios_base::_Tidy()); //REG_FUNC(0xC9DE8208, std::ios_base::clear(std::_Iosb::_Iostate, bool)); //REG_FUNC(0xAA9171FB, std::ios_base::_Addstd()); - //REG_FUNC(0xFC58778, std::ios_base::copyfmt(std::ios_base const&)); + //REG_FUNC(0x0FC58778, std::ios_base::copyfmt(std::ios_base const&)); //REG_FUNC(0x2DF76755, std::ios_base::failure::failure(std::ios_base::failure const&)); - //REG_FUNC(0x94048F7, std::ios_base::failure::failure(std::string const&)); + //REG_FUNC(0x094048F7, std::ios_base::failure::failure(std::string const&)); //REG_FUNC(0x20AAAB95, std::ios_base::failure::~failure()); //REG_FUNC(0x31D0197A, std::ios_base::failure::~failure()); //REG_FUNC(0x7736E940, std::ios_base::_Callfns(std::ios_base::event)); @@ -297,18 +297,18 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x6AF75467, std::bad_alloc::bad_alloc(std::bad_alloc const&)); //REG_FUNC(0x57096162, std::bad_alloc::bad_alloc()); //REG_FUNC(0xB2DAA408, std::bad_alloc::~bad_alloc()); - //REG_FUNC(0x7AEE736, std::bad_alloc::~bad_alloc()); + //REG_FUNC(0x07AEE736, std::bad_alloc::~bad_alloc()); //REG_FUNC(0xA9E9B7B7, std::bad_alloc::~bad_alloc()); //REG_FUNC(0x7853E8E5, std::bad_alloc::operator=(std::bad_alloc const&)); //REG_FUNC(0xF78468EB, std::basic_ios >::~basic_ios()); - //REG_FUNC(0x3150182, std::basic_ios >::~basic_ios()); + //REG_FUNC(0x03150182, std::basic_ios >::~basic_ios()); //REG_FUNC(0x9654168A, std::basic_ios >::~basic_ios()); //REG_FUNC(0x8FFB8524, std::basic_ios >::~basic_ios()); //REG_FUNC(0x7AF1BB16, std::exception::_Set_raise_handler(void (*)(std::exception const&))); //REG_FUNC(0x8C5A4417, std::exception::exception(std::exception const&)); //REG_FUNC(0xFC169D71, std::exception::exception()); //REG_FUNC(0x59758E74, std::exception::exception(std::exception const&)); - //REG_FUNC(0xE08376, std::exception::exception()); + //REG_FUNC(0x00E08376, std::exception::exception()); //REG_FUNC(0x82EEA67E, std::exception::~exception()); //REG_FUNC(0x30405D88, std::exception::~exception()); //REG_FUNC(0xAF7A7081, std::exception::~exception()); @@ -320,7 +320,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x7D8DFE43, std::strstream::~strstream()); //REG_FUNC(0x8D4B1A13, std::type_info::~type_info()); //REG_FUNC(0xBD786240, std::type_info::~type_info()); - //REG_FUNC(0xC04303, std::type_info::~type_info()); + //REG_FUNC(0x00C04303, std::type_info::~type_info()); //REG_FUNC(0x9983D8B9, std::unexpected()); //REG_FUNC(0x385D19B2, std::setiosflags(std::_Iosb::_Fmtflags)); //REG_FUNC(0xD8A78A61, std::setprecision(int)); @@ -329,7 +329,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x644CBAA2, std::_Debug_message(char const*, char const*)); //REG_FUNC(0x9B2F0CA6, std::set_unexpected(void (*)())); //REG_FUNC(0xC107B555, std::set_new_handler(void (*)())); - //REG_FUNC(0x11CEB00, std::uncaught_exception()); + //REG_FUNC(0x011CEB00, std::uncaught_exception()); //REG_FUNC(0x36282336, std::__gen_dummy_typeinfos()); //REG_FUNC(0x3622003F, std::setw(int)); //REG_FUNC(0x6CAFA8EF, std::_Throw(std::exception const&)); @@ -366,7 +366,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0xE7FB2BF4, operator new[](unsigned int)); //REG_FUNC(0x31C62481, operator new[](unsigned int, std::nothrow_t const&)); //REG_FUNC(0xF99ED5AC, operator new(unsigned int)); - //REG_FUNC(0xAE71DC3, operator new(unsigned int, std::nothrow_t const&)); + //REG_FUNC(0x0AE71DC3, operator new(unsigned int, std::nothrow_t const&)); //REG_FUNC(0x1818C323, _SNC_get_global_vars); //REG_FUNC(0x2CFA1F15, _SNC_get_tlocal_vars); //REG_FUNC(0x7742D916, _Unwind_Backtrace); @@ -428,12 +428,12 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0xBF90A45A, _PJP_CPP_Copyright); //REG_FUNC(0x3B6D9752, std::basic_string, std::allocator >::npos); //REG_FUNC(0xA3498140, std::string::npos); - //REG_FUNC(0x5273EA3, std::_Num_int_base::is_bounded); + //REG_FUNC(0x05273EA3, std::_Num_int_base::is_bounded); //REG_FUNC(0x8A0994F8, std::_Num_int_base::is_integer); //REG_FUNC(0x401F1224, std::_Num_int_base::is_specialized); //REG_FUNC(0xA65FE916, std::_Num_int_base::radix); //REG_FUNC(0xF2AA872E, std::_Num_int_base::is_exact); - //REG_FUNC(0x8FE5A4F, std::_Num_int_base::is_modulo); + //REG_FUNC(0x08FE5A4F, std::_Num_int_base::is_modulo); //REG_FUNC(0x7D4C55EC, std::numeric_limits::digits); //REG_FUNC(0xA4E5BF5E, std::numeric_limits::digits10); //REG_FUNC(0xD9938B84, std::numeric_limits::is_signed); @@ -442,7 +442,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x81B82E0E, std::numeric_limits::is_modulo); //REG_FUNC(0x9E6D2025, std::numeric_limits::is_signed); //REG_FUNC(0x810ED593, std::numeric_limits::digits); - //REG_FUNC(0xAC1A819, std::numeric_limits::digits10); + //REG_FUNC(0x0AC1A819, std::numeric_limits::digits10); //REG_FUNC(0x660E14E1, std::numeric_limits::is_signed); //REG_FUNC(0x3EEB3B23, std::numeric_limits::max_exponent); //REG_FUNC(0x13B634BE, std::numeric_limits::min_exponent); @@ -470,10 +470,10 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x3AB38CDA, std::numeric_limits::is_signed); //REG_FUNC(0xEEB7B642, std::numeric_limits::digits); //REG_FUNC(0xBCDE68B3, std::numeric_limits::digits10); - //REG_FUNC(0xDA8EFB0, std::numeric_limits::is_signed); + //REG_FUNC(0x0DA8EFB0, std::numeric_limits::is_signed); //REG_FUNC(0x65DAD8D6, std::numeric_limits::digits); //REG_FUNC(0xFB52BC0A, std::numeric_limits::digits10); - //REG_FUNC(0x63544FC, std::numeric_limits::is_signed); + //REG_FUNC(0x063544FC, std::numeric_limits::is_signed); //REG_FUNC(0x441D097A, std::numeric_limits::digits); //REG_FUNC(0xB56F1B07, std::numeric_limits::digits10); //REG_FUNC(0xA9799886, std::numeric_limits::is_signed); @@ -514,13 +514,13 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x759FD02E, std::_Iosb::app); //REG_FUNC(0x6F410A00, std::_Iosb::ate); //REG_FUNC(0xD2A42D0C, std::_Iosb::beg); - //REG_FUNC(0x9B45C3B, std::_Iosb::cur); + //REG_FUNC(0x09B45C3B, std::_Iosb::cur); //REG_FUNC(0x121A8952, std::_Iosb::dec); //REG_FUNC(0x7CC027CD, std::_Iosb::end); //REG_FUNC(0x6E2FF90B, std::_Iosb::hex); //REG_FUNC(0xB4A55C29, std::_Iosb::oct); //REG_FUNC(0x2CB2DC70, std::_Iosb::out); - //REG_FUNC(0x78E34A9, std::_Iosb::trunc); + //REG_FUNC(0x078E34A9, std::_Iosb::trunc); //REG_FUNC(0xB5EFA1B3, std::_Iosb::badbit); //REG_FUNC(0x5312A538, std::_Iosb::binary); //REG_FUNC(0xD9D32526, std::_Iosb::skipws); @@ -540,10 +540,10 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0xB11D20E2, std::_Num_base::has_infinity); //REG_FUNC(0x3E169F74, std::_Num_base::max_exponent); //REG_FUNC(0xD7C041E0, std::_Num_base::min_exponent); - //REG_FUNC(0x2DA0D59, std::_Num_base::has_quiet_NaN); + //REG_FUNC(0x02DA0D59, std::_Num_base::has_quiet_NaN); //REG_FUNC(0xBE06BD79, std::_Num_base::is_specialized); //REG_FUNC(0xEBBC4DDD, std::_Num_base::max_exponent10); - //REG_FUNC(0xFFCF7FC, std::_Num_base::min_exponent10); + //REG_FUNC(0x0FFCF7FC, std::_Num_base::min_exponent10); //REG_FUNC(0xB317DDDF, std::_Num_base::has_denorm_loss); //REG_FUNC(0x245D399E, std::_Num_base::tinyness_before); //REG_FUNC(0xBD5F0B8A, std::_Num_base::has_signaling_NaN); @@ -590,7 +590,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0xA4018B84, typeinfo for __simd128_float32_t); //REG_FUNC(0xA1FE4058, typeinfo for half); //REG_FUNC(0x5351829B, typeinfo for std::ios_base::failure); - //REG_FUNC(0xAC6C8F, typeinfo for __simd64_int8_t*); + //REG_FUNC(0x00AC6C8F, typeinfo for __simd64_int8_t*); //REG_FUNC(0xD5B056B8, typeinfo for __simd128_int8_t*); //REG_FUNC(0x13975DAE, typeinfo for __simd64_int16_t*); //REG_FUNC(0x963C04E3, typeinfo for __simd64_int32_t*); @@ -605,7 +605,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0xEE862280, typeinfo for __simd64_uint32_t*); //REG_FUNC(0xB5CEC4FF, typeinfo for __simd128_poly16_t*); //REG_FUNC(0x46124E82, typeinfo for __simd128_uint16_t*); - //REG_FUNC(0x7E6CC17, typeinfo for __simd128_uint32_t*); + //REG_FUNC(0x07E6CC17, typeinfo for __simd128_uint32_t*); //REG_FUNC(0x588EBCAD, typeinfo for __simd64_float16_t*); //REG_FUNC(0xDFCB2417, typeinfo for __simd64_float32_t*); //REG_FUNC(0x9502D3C0, typeinfo for __simd128_float16_t*); @@ -616,8 +616,8 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x52A04C47, typeinfo for __simd64_int16_t const*); //REG_FUNC(0xBB64CCF1, typeinfo for __simd64_int32_t const*); //REG_FUNC(0x7C9D0C33, typeinfo for __simd64_poly8_t const*); - //REG_FUNC(0x21A57A1, typeinfo for __simd64_uint8_t const*); - //REG_FUNC(0x21E3DD1, typeinfo for __simd128_int16_t const*); + //REG_FUNC(0x021A57A1, typeinfo for __simd64_uint8_t const*); + //REG_FUNC(0x021E3DD1, typeinfo for __simd128_int16_t const*); //REG_FUNC(0xFF8DDBE7, typeinfo for __simd128_int32_t const*); //REG_FUNC(0xB30AB3B5, typeinfo for __simd128_poly8_t const*); //REG_FUNC(0xC8721E86, typeinfo for __simd128_uint8_t const*); @@ -654,12 +654,12 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0xA6C2A25C, typeinfo for long long __vector*); //REG_FUNC(0x81B51915, typeinfo for unsigned long long __vector*); //REG_FUNC(0xA7CB4EAA, typeinfo for signed char*); - //REG_FUNC(0x87B0FB6, typeinfo for bool*); + //REG_FUNC(0x087B0FB6, typeinfo for bool*); //REG_FUNC(0xE4D24E14, typeinfo for char*); //REG_FUNC(0x6825FFE6, typeinfo for double*); //REG_FUNC(0x926B9A3A, typeinfo for long double*); //REG_FUNC(0x24072F3E, typeinfo for float*); - //REG_FUNC(0x8B5247B, typeinfo for unsigned char*); + //REG_FUNC(0x08B5247B, typeinfo for unsigned char*); //REG_FUNC(0x15C21CC8, typeinfo for int*); //REG_FUNC(0xD234CF18, typeinfo for unsigned int*); //REG_FUNC(0x50E25810, typeinfo for long*); @@ -704,7 +704,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0xB93721C7, typeinfo for std::ios_base); //REG_FUNC(0x35E135A0, typeinfo for std::bad_alloc); //REG_FUNC(0x7BA61382, typeinfo for std::basic_ios >); - //REG_FUNC(0x905B8B0, typeinfo for std::basic_ios >); + //REG_FUNC(0x0905B8B0, typeinfo for std::basic_ios >); //REG_FUNC(0x1E8C6100, typeinfo for std::exception); //REG_FUNC(0x1CC15F54, typeinfo for std::strstream); //REG_FUNC(0x8A026EAD, typeinfo for std::type_info); @@ -736,16 +736,16 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0xC3FA8530, typeinfo name for __simd128_int16_t); //REG_FUNC(0x67A63A08, typeinfo name for __simd128_int32_t); //REG_FUNC(0x6B26EFF8, typeinfo name for __simd128_poly8_t); - //REG_FUNC(0x8C4C69F, typeinfo name for __simd128_uint8_t); + //REG_FUNC(0x08C4C69F, typeinfo name for __simd128_uint8_t); //REG_FUNC(0x40BC2E0E, typeinfo name for __simd64_poly16_t); //REG_FUNC(0x8D1AE4A7, typeinfo name for __simd64_uint16_t); //REG_FUNC(0xC4096952, typeinfo name for __simd64_uint32_t); //REG_FUNC(0x16D366F1, typeinfo name for __simd128_poly16_t); - //REG_FUNC(0x45552A1, typeinfo name for __simd128_uint16_t); + //REG_FUNC(0x045552A1, typeinfo name for __simd128_uint16_t); //REG_FUNC(0x7DBF4FFF, typeinfo name for __simd128_uint32_t); - //REG_FUNC(0xED26DE1, typeinfo name for __simd64_float16_t); + //REG_FUNC(0x0ED26DE1, typeinfo name for __simd64_float16_t); //REG_FUNC(0xAB0D789A, typeinfo name for __simd64_float32_t); - //REG_FUNC(0x3200DDB, typeinfo name for __simd128_float16_t); + //REG_FUNC(0x03200DDB, typeinfo name for __simd128_float16_t); //REG_FUNC(0xD54CBD7C, typeinfo name for __simd128_float32_t); //REG_FUNC(0xA8E6842E, typeinfo name for half); //REG_FUNC(0x5246E71E, typeinfo name for std::ios_base::failure); @@ -777,7 +777,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0xC356ACF6, typeinfo name for __simd64_poly8_t const*); //REG_FUNC(0x878C75F4, typeinfo name for __simd64_uint8_t const*); //REG_FUNC(0x68B777E3, typeinfo name for __simd128_int16_t const*); - //REG_FUNC(0x61188BD, typeinfo name for __simd128_int32_t const*); + //REG_FUNC(0x061188BD, typeinfo name for __simd128_int32_t const*); //REG_FUNC(0xC7733F13, typeinfo name for __simd128_poly8_t const*); //REG_FUNC(0x3D8A69EC, typeinfo name for __simd128_uint8_t const*); //REG_FUNC(0xCC081D58, typeinfo name for __simd64_poly16_t const*); @@ -827,12 +827,12 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0xE2A0B0A8, typeinfo name for unsigned short*); //REG_FUNC(0xF7B6B02A, typeinfo name for void*); //REG_FUNC(0xF1C9A755, typeinfo name for wchar_t*); - //REG_FUNC(0x968B212, typeinfo name for long long*); - //REG_FUNC(0x9787CAD, typeinfo name for unsigned long long*); + //REG_FUNC(0x0968B212, typeinfo name for long long*); + //REG_FUNC(0x09787CAD, typeinfo name for unsigned long long*); //REG_FUNC(0xF86F5756, typeinfo name for std::iostream); //REG_FUNC(0x999300E0, typeinfo name for std::istream); //REG_FUNC(0x591C25A3, typeinfo name for std::ostream); - //REG_FUNC(0xFC9D21B, typeinfo name for std::bad_typeid); + //REG_FUNC(0x0FC9D21B, typeinfo name for std::bad_typeid); //REG_FUNC(0x867D109E, typeinfo name for std::istrstream); //REG_FUNC(0x88BFC745, typeinfo name for std::ostrstream); //REG_FUNC(0xB315CE7A, typeinfo name for std::_ctype_base); @@ -842,7 +842,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x9E317CE1, typeinfo name for std::length_error); //REG_FUNC(0xD8DAD98D, typeinfo name for std::out_of_range); //REG_FUNC(0x1C929309, typeinfo name for std::strstreambuf); - //REG_FUNC(0xE17E4D6, typeinfo name for std::_codecvt_base); + //REG_FUNC(0x0E17E4D6, typeinfo name for std::_codecvt_base); //REG_FUNC(0x918FE198, typeinfo name for std::bad_exception); //REG_FUNC(0x227B4568, typeinfo name for std::basic_filebuf >); //REG_FUNC(0xD34BAF59, typeinfo name for std::basic_filebuf >); @@ -871,7 +871,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x2856DCD6, typeinfo name for std::type_info); //REG_FUNC(0x75A1CED4, typeinfo name for long long __vector); //REG_FUNC(0x508FF61E, typeinfo name for unsigned long long __vector); - //REG_FUNC(0x8E6A51A, typeinfo name for signed char); + //REG_FUNC(0x08E6A51A, typeinfo name for signed char); //REG_FUNC(0x491DB7D3, typeinfo name for bool); //REG_FUNC(0xD657B5A0, typeinfo name for char); //REG_FUNC(0x322C7CB5, typeinfo name for double); @@ -891,7 +891,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x51B29810, VTT for std::iostream); //REG_FUNC(0x52128B13, VTT for std::istream); //REG_FUNC(0x3C508708, VTT for std::ostream); - //REG_FUNC(0x87753F6, VTT for std::istrstream); + //REG_FUNC(0x087753F6, VTT for std::istrstream); //REG_FUNC(0xE3D7CB30, VTT for std::ostrstream); //REG_FUNC(0xBC326B50, VTT for std::basic_istream >); //REG_FUNC(0x16E32018, VTT for std::basic_ostream >); @@ -914,7 +914,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x82A84E5E, vtable for std::logic_error); //REG_FUNC(0x1D583475, vtable for std::range_error); //REG_FUNC(0x80C77E16, vtable for std::domain_error); - //REG_FUNC(0x64ADA35, vtable for std::length_error); + //REG_FUNC(0x064ADA35, vtable for std::length_error); //REG_FUNC(0xDDAE7CBE, vtable for std::out_of_range); //REG_FUNC(0x11B2781A, vtable for std::strstreambuf); //REG_FUNC(0x75D16BD0, vtable for std::_codecvt_base); @@ -925,7 +925,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x48F3405B, vtable for std::basic_ostream >); //REG_FUNC(0x53F02A18, vtable for std::runtime_error); //REG_FUNC(0x177FCCDC, vtable for std::overflow_error); - //REG_FUNC(0x5548FF7, vtable for std::basic_streambuf >); + //REG_FUNC(0x05548FF7, vtable for std::basic_streambuf >); //REG_FUNC(0xE8A9F32E, vtable for std::basic_streambuf >); //REG_FUNC(0x515AE097, vtable for std::underflow_error); //REG_FUNC(0x23EEDAF0, vtable for std::invalid_argument); @@ -937,7 +937,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0xD58C5F52, vtable for std::ios_base); //REG_FUNC(0xA27EFBA3, vtable for std::bad_alloc); //REG_FUNC(0x147996ED, vtable for std::basic_ios >); - //REG_FUNC(0xDE4AFE9, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Sd__St9strstream); + //REG_FUNC(0x0DE4AFE9, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Sd__St9strstream); //REG_FUNC(0x87D18300, _ZTVSt9basic_iosIcSt11char_traitsIcEE__SiSd__St9strstream); //REG_FUNC(0x3D6A38D3, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Si__Sd); //REG_FUNC(0xA8E795AF, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Si__St10istrstream); @@ -950,7 +950,7 @@ psv_log_base sceLibstdcxx("SceLibstdcxx", []() //REG_FUNC(0x8E9879A7, vtable for std::type_info); //REG_FUNC(0xE63750C1, std::basic_filebuf >::_Init(std::_Dnk_filet*, std::basic_filebuf >::_Initfl)::_Stinit); //REG_FUNC(0x1D4E29BC, std::basic_filebuf >::_Init(std::_Dnk_filet*, std::basic_filebuf >::_Initfl)::_Stinit); - //REG_FUNC(0x8A37475, typeinfo for __cxxabiv1::__enum_type_info); + //REG_FUNC(0x08A37475, typeinfo for __cxxabiv1::__enum_type_info); //REG_FUNC(0x66CC7DBB, typeinfo for __cxxabiv1::__array_type_info); //REG_FUNC(0x81C44513, typeinfo for __cxxabiv1::__class_type_info); //REG_FUNC(0xC35024DA, typeinfo for __cxxabiv1::__pbase_type_info); @@ -1008,14 +1008,14 @@ REG_FUNC(0xB1AE6F9E, _ZNKSt15underflow_error8_DoraiseEv); REG_FUNC(0x16F56E8D, _ZNKSt16invalid_argument8_DoraiseEv); REG_FUNC(0x6C568D20, _ZNKSt6_ctypeIcE10do_tolowerEPcPKc); REG_FUNC(0xC334DE66, _ZNKSt6_ctypeIcE10do_tolowerEc); -REG_FUNC(0x2DD808E, _ZNKSt6_ctypeIcE10do_toupperEPcPKc); +REG_FUNC(0x02DD808E, _ZNKSt6_ctypeIcE10do_toupperEPcPKc); REG_FUNC(0xF6AF33EA, _ZNKSt6_ctypeIcE10do_toupperEc); REG_FUNC(0x1B81D726, _ZNKSt6_ctypeIcE8do_widenEPKcS2_Pc); REG_FUNC(0x6471CC01, _ZNKSt6_ctypeIcE8do_widenEc); REG_FUNC(0x9CFA56E5, _ZNKSt6_ctypeIcE9do_narrowEPKcS2_cPc); REG_FUNC(0x718669AB, _ZNKSt6_ctypeIcE9do_narrowEcc); REG_FUNC(0x759F105D, _ZNKSt6_ctypeIwE10do_scan_isEsPKwS2_); -REG_FUNC(0x56443F, _ZNKSt6_ctypeIwE10do_tolowerEPwPKw); +REG_FUNC(0x0056443F, _ZNKSt6_ctypeIwE10do_tolowerEPwPKw); REG_FUNC(0x33E9ECDD, _ZNKSt6_ctypeIwE10do_tolowerEw); REG_FUNC(0x1256E6A5, _ZNKSt6_ctypeIwE10do_toupperEPwPKw); REG_FUNC(0x64072C2E, _ZNKSt6_ctypeIwE10do_toupperEw); @@ -1043,7 +1043,7 @@ REG_FUNC(0xF877F51E, _ZNKSt8ios_base7failure8_DoraiseEv); REG_FUNC(0x664750EE, _ZNKSt9bad_alloc4whatEv); REG_FUNC(0xBA89FBE7, _ZNKSt9bad_alloc8_DoraiseEv); REG_FUNC(0xC133E331, _ZNKSt9exception4whatEv); -REG_FUNC(0x656BE32, _ZNKSt9exception6_RaiseEv); +REG_FUNC(0x0656BE32, _ZNKSt9exception6_RaiseEv); REG_FUNC(0x47A5CDA2, _ZNKSt9exception8_DoraiseEv); REG_FUNC(0xBAE38DF9, _ZNKSt9type_info4nameEv); REG_FUNC(0x1F260F10, _ZNKSt9type_info6beforeERKS_); @@ -1071,10 +1071,10 @@ REG_FUNC(0x55AAD6A6, _ZNSt10bad_typeidaSERKS_); REG_FUNC(0x9CF31703, _ZNSt10istrstreamD0Ev); REG_FUNC(0x71D13A36, _ZNSt10istrstreamD1Ev); REG_FUNC(0xAF5DF8C3, _ZNSt10istrstreamD2Ev); -REG_FUNC(0xC1E7C7A, _ZNSt10ostrstreamC1EPciNSt5_IosbIiE9_OpenmodeE); -REG_FUNC(0xC09B290, _ZNSt10ostrstreamC2EPciNSt5_IosbIiE9_OpenmodeE); +REG_FUNC(0x0C1E7C7A, _ZNSt10ostrstreamC1EPciNSt5_IosbIiE9_OpenmodeE); +REG_FUNC(0x0C09B290, _ZNSt10ostrstreamC2EPciNSt5_IosbIiE9_OpenmodeE); REG_FUNC(0x4B8BA644, _ZNSt10ostrstreamD0Ev); -REG_FUNC(0xE463FB3, _ZNSt10ostrstreamD1Ev); +REG_FUNC(0x0E463FB3, _ZNSt10ostrstreamD1Ev); REG_FUNC(0xA0A34FEF, _ZNSt10ostrstreamD2Ev); REG_FUNC(0xC9F632FF, _ZNSt11logic_errorC1ERKS_); REG_FUNC(0xE6356C5C, _ZNSt11logic_errorC2ERKSs); @@ -1088,12 +1088,12 @@ REG_FUNC(0xEF754EBD, _ZNSt11range_errorD2Ev); REG_FUNC(0x7D5412EF, _ZNSt12domain_errorC1ERKS_); REG_FUNC(0x803A7D3E, _ZNSt12domain_errorD0Ev); REG_FUNC(0xA6BCA2AD, _ZNSt12domain_errorD1Ev); -REG_FUNC(0x36F9D2A, _ZNSt12domain_errorD2Ev); +REG_FUNC(0x036F9D2A, _ZNSt12domain_errorD2Ev); REG_FUNC(0x5F3428AD, _ZNSt12length_errorC1ERKS_); REG_FUNC(0xF6FB801D, _ZNSt12length_errorC1ERKSs); REG_FUNC(0xF83AA7DA, _ZNSt12length_errorD0Ev); REG_FUNC(0xA873D7F9, _ZNSt12length_errorD1Ev); -REG_FUNC(0xBB12C75, _ZNSt12length_errorD2Ev); +REG_FUNC(0x0BB12C75, _ZNSt12length_errorD2Ev); REG_FUNC(0x299AA587, _ZNSt12out_of_rangeC1ERKS_); REG_FUNC(0xC8BA5522, _ZNSt12out_of_rangeC1ERKSs); REG_FUNC(0xA8C470A4, _ZNSt12out_of_rangeD0Ev); @@ -1109,7 +1109,7 @@ REG_FUNC(0xC725F896, _ZNSt12strstreambuf9pbackfailEi); REG_FUNC(0xA9F4FABF, _ZNSt12strstreambuf9underflowEv); REG_FUNC(0x1C887DDE, _ZNSt12strstreambufD0Ev); REG_FUNC(0x29E1E930, _ZNSt12strstreambufD1Ev); -REG_FUNC(0xA140889, _ZNSt12strstreambufD2Ev); +REG_FUNC(0x0A140889, _ZNSt12strstreambufD2Ev); REG_FUNC(0xA8FE6FC4, _ZNSt13_codecvt_baseD0Ev); REG_FUNC(0xB0E47AE4, _ZNSt13_codecvt_baseD1Ev); REG_FUNC(0xB7EE9CC2, _ZNSt13bad_exceptionC1ERKS_); @@ -1126,7 +1126,7 @@ REG_FUNC(0xD5F03A74, _ZNSt13basic_filebufIcSt11char_traitsIcEE5uflowEv); REG_FUNC(0x413E813E, _ZNSt13basic_filebufIcSt11char_traitsIcEE6setbufEPci); REG_FUNC(0x9D193B65, _ZNSt13basic_filebufIcSt11char_traitsIcEE7_UnlockEv); REG_FUNC(0x52E47FB5, _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekoffElNSt5_IosbIiE8_SeekdirENS4_9_OpenmodeE); -REG_FUNC(0xE119B37, _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposISt9_MbstatetENSt5_IosbIiE9_OpenmodeE); +REG_FUNC(0x0E119B37, _ZNSt13basic_filebufIcSt11char_traitsIcEE7seekposESt4fposISt9_MbstatetENSt5_IosbIiE9_OpenmodeE); REG_FUNC(0x616754BC, _ZNSt13basic_filebufIcSt11char_traitsIcEE8overflowEi); REG_FUNC(0xCD5BD2E1, _ZNSt13basic_filebufIcSt11char_traitsIcEE9_EndwriteEv); REG_FUNC(0xFC1C7F3A, _ZNSt13basic_filebufIcSt11char_traitsIcEE9pbackfailEi); @@ -1149,7 +1149,7 @@ REG_FUNC(0xD434F085, _ZNSt13basic_filebufIwSt11char_traitsIwEED1Ev); REG_FUNC(0xFFFA683E, _ZNSt13basic_istreamIwSt11char_traitsIwEED0Ev); REG_FUNC(0xB58839C5, _ZNSt13basic_istreamIwSt11char_traitsIwEED1Ev); REG_FUNC(0x9BF8855B, _ZNSt13basic_ostreamIwSt11char_traitsIwEEC1EPSt15basic_streambufIwS1_Eb); -REG_FUNC(0xD74F56E, _ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev); +REG_FUNC(0x0D74F56E, _ZNSt13basic_ostreamIwSt11char_traitsIwEED0Ev); REG_FUNC(0x9B831B60, _ZNSt13basic_ostreamIwSt11char_traitsIwEED1Ev); REG_FUNC(0x396337CE, _ZNSt13runtime_errorC1ERKS_); REG_FUNC(0xDAD26367, _ZNSt13runtime_errorD0Ev); @@ -1161,20 +1161,20 @@ REG_FUNC(0x5C666F7E, _ZNSt14overflow_errorD1Ev); REG_FUNC(0x4E45F680, _ZNSt14overflow_errorD2Ev); REG_FUNC(0x626515E3, _ZNSt15basic_streambufIcSt11char_traitsIcEE4syncEv); REG_FUNC(0x2E55F15A, _ZNSt15basic_streambufIcSt11char_traitsIcEE5_LockEv); -REG_FUNC(0xF8535AB, _ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv); +REG_FUNC(0x0F8535AB, _ZNSt15basic_streambufIcSt11char_traitsIcEE5uflowEv); REG_FUNC(0xD7933D06, _ZNSt15basic_streambufIcSt11char_traitsIcEE6setbufEPci); REG_FUNC(0xB8BCCC8D, _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsgetnEPci); REG_FUNC(0x43E5D0F1, _ZNSt15basic_streambufIcSt11char_traitsIcEE6xsputnEPKci); REG_FUNC(0x149B193A, _ZNSt15basic_streambufIcSt11char_traitsIcEE7_UnlockEv); REG_FUNC(0x600998EC, _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekoffElNSt5_IosbIiE8_SeekdirENS4_9_OpenmodeE); -REG_FUNC(0x1DEFFD6, _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposISt9_MbstatetENSt5_IosbIiE9_OpenmodeE); +REG_FUNC(0x01DEFFD6, _ZNSt15basic_streambufIcSt11char_traitsIcEE7seekposESt4fposISt9_MbstatetENSt5_IosbIiE9_OpenmodeE); REG_FUNC(0xF5F44352, _ZNSt15basic_streambufIcSt11char_traitsIcEE8overflowEi); REG_FUNC(0xCA79344F, _ZNSt15basic_streambufIcSt11char_traitsIcEE9pbackfailEi); REG_FUNC(0x441788B1, _ZNSt15basic_streambufIcSt11char_traitsIcEE9showmanycEv); REG_FUNC(0x797DAE94, _ZNSt15basic_streambufIcSt11char_traitsIcEE9underflowEv); -REG_FUNC(0x74AD52E, _ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev); +REG_FUNC(0x074AD52E, _ZNSt15basic_streambufIcSt11char_traitsIcEED0Ev); REG_FUNC(0xE449E2BF, _ZNSt15basic_streambufIcSt11char_traitsIcEED1Ev); -REG_FUNC(0x9FAA0AA, _ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv); +REG_FUNC(0x09FAA0AA, _ZNSt15basic_streambufIwSt11char_traitsIwEE4syncEv); REG_FUNC(0xA596C88C, _ZNSt15basic_streambufIwSt11char_traitsIwEE5_LockEv); REG_FUNC(0x373C2CD8, _ZNSt15basic_streambufIwSt11char_traitsIwEE5uflowEv); REG_FUNC(0x3F363796, _ZNSt15basic_streambufIwSt11char_traitsIwEE6setbufEPwi); @@ -1198,7 +1198,7 @@ REG_FUNC(0x188D86CF, _ZNSt16invalid_argumentD0Ev); REG_FUNC(0x9982A4FC, _ZNSt16invalid_argumentD1Ev); REG_FUNC(0x1AB2B1AC, _ZNSt16invalid_argumentD2Ev); REG_FUNC(0xF9FAB558, _ZNSt6_Mutex5_LockEv); -REG_FUNC(0x402C9F8, _ZNSt6_Mutex7_UnlockEv); +REG_FUNC(0x0402C9F8, _ZNSt6_Mutex7_UnlockEv); REG_FUNC(0x9DA92617, _ZNSt6_MutexC1ESt14_Uninitialized); REG_FUNC(0xA4F99AE7, _ZNSt6_MutexC1Ev); REG_FUNC(0x7B5A6B7F, _ZNSt6_MutexC2ESt14_Uninitialized); @@ -1231,12 +1231,12 @@ REG_FUNC(0x5ED60DEE, _ZNSt8ios_base4InitC2Ev); REG_FUNC(0x65D88619, _ZNSt8ios_base4InitD1Ev); REG_FUNC(0x3483E01D, _ZNSt8ios_base4InitD2Ev); REG_FUNC(0x78CB190E, _ZNSt8ios_base5_InitEv); -REG_FUNC(0x23B8BEE, _ZNSt8ios_base5_TidyEv); +REG_FUNC(0x023B8BEE, _ZNSt8ios_base5_TidyEv); REG_FUNC(0xC9DE8208, _ZNSt8ios_base5clearENSt5_IosbIiE8_IostateEb); REG_FUNC(0xAA9171FB, _ZNSt8ios_base7_AddstdEv); -REG_FUNC(0xFC58778, _ZNSt8ios_base7copyfmtERKS_); +REG_FUNC(0x0FC58778, _ZNSt8ios_base7copyfmtERKS_); REG_FUNC(0x2DF76755, _ZNSt8ios_base7failureC1ERKS0_); -REG_FUNC(0x94048F7, _ZNSt8ios_base7failureC1ERKSs); +REG_FUNC(0x094048F7, _ZNSt8ios_base7failureC1ERKSs); REG_FUNC(0x20AAAB95, _ZNSt8ios_base7failureD0Ev); REG_FUNC(0x31D0197A, _ZNSt8ios_base7failureD1Ev); REG_FUNC(0x7736E940, _ZNSt8ios_base8_CallfnsENS_5eventE); @@ -1249,18 +1249,18 @@ REG_FUNC(0xEC3804D2, _ZNSt9bad_allocC1Ev); REG_FUNC(0x6AF75467, _ZNSt9bad_allocC2ERKS_); REG_FUNC(0x57096162, _ZNSt9bad_allocC2Ev); REG_FUNC(0xB2DAA408, _ZNSt9bad_allocD0Ev); -REG_FUNC(0x7AEE736, _ZNSt9bad_allocD1Ev); +REG_FUNC(0x07AEE736, _ZNSt9bad_allocD1Ev); REG_FUNC(0xA9E9B7B7, _ZNSt9bad_allocD2Ev); REG_FUNC(0x7853E8E5, _ZNSt9bad_allocaSERKS_); REG_FUNC(0xF78468EB, _ZNSt9basic_iosIcSt11char_traitsIcEED0Ev); -REG_FUNC(0x3150182, _ZNSt9basic_iosIcSt11char_traitsIcEED1Ev); +REG_FUNC(0x03150182, _ZNSt9basic_iosIcSt11char_traitsIcEED1Ev); REG_FUNC(0x9654168A, _ZNSt9basic_iosIwSt11char_traitsIwEED0Ev); REG_FUNC(0x8FFB8524, _ZNSt9basic_iosIwSt11char_traitsIwEED1Ev); REG_FUNC(0x7AF1BB16, _ZNSt9exception18_Set_raise_handlerEPFvRKS_E); REG_FUNC(0x8C5A4417, _ZNSt9exceptionC1ERKS_); REG_FUNC(0xFC169D71, _ZNSt9exceptionC1Ev); REG_FUNC(0x59758E74, _ZNSt9exceptionC2ERKS_); -REG_FUNC(0xE08376, _ZNSt9exceptionC2Ev); +REG_FUNC(0x00E08376, _ZNSt9exceptionC2Ev); REG_FUNC(0x82EEA67E, _ZNSt9exceptionD0Ev); REG_FUNC(0x30405D88, _ZNSt9exceptionD1Ev); REG_FUNC(0xAF7A7081, _ZNSt9exceptionD2Ev); @@ -1272,7 +1272,7 @@ REG_FUNC(0x98BD8AE1, _ZNSt9strstreamD1Ev); REG_FUNC(0x7D8DFE43, _ZNSt9strstreamD2Ev); REG_FUNC(0x8D4B1A13, _ZNSt9type_infoD0Ev); REG_FUNC(0xBD786240, _ZNSt9type_infoD1Ev); -REG_FUNC(0xC04303, _ZNSt9type_infoD2Ev); +REG_FUNC(0x00C04303, _ZNSt9type_infoD2Ev); REG_FUNC(0x9983D8B9, _ZSt10unexpectedv); REG_FUNC(0x385D19B2, _ZSt11setiosflagsNSt5_IosbIiE9_FmtflagsE); REG_FUNC(0xD8A78A61, _ZSt12setprecisioni); @@ -1281,7 +1281,7 @@ REG_FUNC(0x13BAEE11, _ZSt13set_terminatePFvvE); REG_FUNC(0x644CBAA2, _ZSt14_Debug_messagePKcS0_); REG_FUNC(0x9B2F0CA6, _ZSt14set_unexpectedPFvvE); REG_FUNC(0xC107B555, _ZSt15set_new_handlerPFvvE); -REG_FUNC(0x11CEB00, _ZSt18uncaught_exceptionv); +REG_FUNC(0x011CEB00, _ZSt18uncaught_exceptionv); REG_FUNC(0x36282336, _ZSt21__gen_dummy_typeinfosv); REG_FUNC(0x3622003F, _ZSt4setwi); REG_FUNC(0x6CAFA8EF, _ZSt6_ThrowRKSt9exception); @@ -1318,7 +1318,7 @@ REG_FUNC(0x1EB89099, _ZdlPvS_); REG_FUNC(0xE7FB2BF4, _Znaj); REG_FUNC(0x31C62481, _ZnajRKSt9nothrow_t); REG_FUNC(0xF99ED5AC, _Znwj); -REG_FUNC(0xAE71DC3, _ZnwjRKSt9nothrow_t); +REG_FUNC(0x0AE71DC3, _ZnwjRKSt9nothrow_t); REG_FUNC(0x1818C323, _SNC_get_global_vars); REG_FUNC(0x2CFA1F15, _SNC_get_tlocal_vars); REG_FUNC(0x7742D916, _Unwind_Backtrace); @@ -1380,12 +1380,12 @@ REG_FUNC(0xD4C11B17, _ZN10__cxxabiv129__pointer_to_member_type_infoD2Ev); REG_FUNC(0xBF90A45A, _PJP_CPP_Copyright); REG_FUNC(0x3B6D9752, _ZNSbIwSt11char_traitsIwESaIwEE4nposE); REG_FUNC(0xA3498140, _ZNSs4nposE); -REG_FUNC(0x5273EA3, _ZNSt13_Num_int_base10is_boundedE); +REG_FUNC(0x05273EA3, _ZNSt13_Num_int_base10is_boundedE); REG_FUNC(0x8A0994F8, _ZNSt13_Num_int_base10is_integerE); REG_FUNC(0x401F1224, _ZNSt13_Num_int_base14is_specializedE); REG_FUNC(0xA65FE916, _ZNSt13_Num_int_base5radixE); REG_FUNC(0xF2AA872E, _ZNSt13_Num_int_base8is_exactE); -REG_FUNC(0x8FE5A4F, _ZNSt13_Num_int_base9is_moduloE); +REG_FUNC(0x08FE5A4F, _ZNSt13_Num_int_base9is_moduloE); REG_FUNC(0x7D4C55EC, _ZNSt14numeric_limitsIaE6digitsE); REG_FUNC(0xA4E5BF5E, _ZNSt14numeric_limitsIaE8digits10E); REG_FUNC(0xD9938B84, _ZNSt14numeric_limitsIaE9is_signedE); @@ -1394,7 +1394,7 @@ REG_FUNC(0xF52E5F76, _ZNSt14numeric_limitsIbE8digits10E); REG_FUNC(0x81B82E0E, _ZNSt14numeric_limitsIbE9is_moduloE); REG_FUNC(0x9E6D2025, _ZNSt14numeric_limitsIbE9is_signedE); REG_FUNC(0x810ED593, _ZNSt14numeric_limitsIcE6digitsE); -REG_FUNC(0xAC1A819, _ZNSt14numeric_limitsIcE8digits10E); +REG_FUNC(0x0AC1A819, _ZNSt14numeric_limitsIcE8digits10E); REG_FUNC(0x660E14E1, _ZNSt14numeric_limitsIcE9is_signedE); REG_FUNC(0x3EEB3B23, _ZNSt14numeric_limitsIdE12max_exponentE); REG_FUNC(0x13B634BE, _ZNSt14numeric_limitsIdE12min_exponentE); @@ -1422,10 +1422,10 @@ REG_FUNC(0xE8EB3133, _ZNSt14numeric_limitsIiE8digits10E); REG_FUNC(0x3AB38CDA, _ZNSt14numeric_limitsIiE9is_signedE); REG_FUNC(0xEEB7B642, _ZNSt14numeric_limitsIjE6digitsE); REG_FUNC(0xBCDE68B3, _ZNSt14numeric_limitsIjE8digits10E); -REG_FUNC(0xDA8EFB0, _ZNSt14numeric_limitsIjE9is_signedE); +REG_FUNC(0x0DA8EFB0, _ZNSt14numeric_limitsIjE9is_signedE); REG_FUNC(0x65DAD8D6, _ZNSt14numeric_limitsIlE6digitsE); REG_FUNC(0xFB52BC0A, _ZNSt14numeric_limitsIlE8digits10E); -REG_FUNC(0x63544FC, _ZNSt14numeric_limitsIlE9is_signedE); +REG_FUNC(0x063544FC, _ZNSt14numeric_limitsIlE9is_signedE); REG_FUNC(0x441D097A, _ZNSt14numeric_limitsImE6digitsE); REG_FUNC(0xB56F1B07, _ZNSt14numeric_limitsImE8digits10E); REG_FUNC(0xA9799886, _ZNSt14numeric_limitsImE9is_signedE); @@ -1466,13 +1466,13 @@ REG_FUNC(0xE615A657, _ZNSt5_IosbIiE2inE); REG_FUNC(0x759FD02E, _ZNSt5_IosbIiE3appE); REG_FUNC(0x6F410A00, _ZNSt5_IosbIiE3ateE); REG_FUNC(0xD2A42D0C, _ZNSt5_IosbIiE3begE); -REG_FUNC(0x9B45C3B, _ZNSt5_IosbIiE3curE); +REG_FUNC(0x09B45C3B, _ZNSt5_IosbIiE3curE); REG_FUNC(0x121A8952, _ZNSt5_IosbIiE3decE); REG_FUNC(0x7CC027CD, _ZNSt5_IosbIiE3endE); REG_FUNC(0x6E2FF90B, _ZNSt5_IosbIiE3hexE); REG_FUNC(0xB4A55C29, _ZNSt5_IosbIiE3octE); REG_FUNC(0x2CB2DC70, _ZNSt5_IosbIiE3outE); -REG_FUNC(0x78E34A9, _ZNSt5_IosbIiE5truncE); +REG_FUNC(0x078E34A9, _ZNSt5_IosbIiE5truncE); REG_FUNC(0xB5EFA1B3, _ZNSt5_IosbIiE6badbitE); REG_FUNC(0x5312A538, _ZNSt5_IosbIiE6binaryE); REG_FUNC(0xD9D32526, _ZNSt5_IosbIiE6skipwsE); @@ -1492,10 +1492,10 @@ REG_FUNC(0x13B38354, _ZNSt9_Num_base11round_styleE); REG_FUNC(0xB11D20E2, _ZNSt9_Num_base12has_infinityE); REG_FUNC(0x3E169F74, _ZNSt9_Num_base12max_exponentE); REG_FUNC(0xD7C041E0, _ZNSt9_Num_base12min_exponentE); -REG_FUNC(0x2DA0D59, _ZNSt9_Num_base13has_quiet_NaNE); +REG_FUNC(0x02DA0D59, _ZNSt9_Num_base13has_quiet_NaNE); REG_FUNC(0xBE06BD79, _ZNSt9_Num_base14is_specializedE); REG_FUNC(0xEBBC4DDD, _ZNSt9_Num_base14max_exponent10E); -REG_FUNC(0xFFCF7FC, _ZNSt9_Num_base14min_exponent10E); +REG_FUNC(0x0FFCF7FC, _ZNSt9_Num_base14min_exponent10E); REG_FUNC(0xB317DDDF, _ZNSt9_Num_base15has_denorm_lossE); REG_FUNC(0x245D399E, _ZNSt9_Num_base15tinyness_beforeE); REG_FUNC(0xBD5F0B8A, _ZNSt9_Num_base17has_signaling_NaNE); @@ -1542,7 +1542,7 @@ REG_FUNC(0x525557F3, _ZTI19__simd128_float16_t); REG_FUNC(0xA4018B84, _ZTI19__simd128_float32_t); REG_FUNC(0xA1FE4058, _ZTIDh); REG_FUNC(0x5351829B, _ZTINSt8ios_base7failureE); -REG_FUNC(0xAC6C8F, _ZTIP15__simd64_int8_t); +REG_FUNC(0x00AC6C8F, _ZTIP15__simd64_int8_t); REG_FUNC(0xD5B056B8, _ZTIP16__simd128_int8_t); REG_FUNC(0x13975DAE, _ZTIP16__simd64_int16_t); REG_FUNC(0x963C04E3, _ZTIP16__simd64_int32_t); @@ -1557,7 +1557,7 @@ REG_FUNC(0xA96D02B1, _ZTIP17__simd64_uint16_t); REG_FUNC(0xEE862280, _ZTIP17__simd64_uint32_t); REG_FUNC(0xB5CEC4FF, _ZTIP18__simd128_poly16_t); REG_FUNC(0x46124E82, _ZTIP18__simd128_uint16_t); -REG_FUNC(0x7E6CC17, _ZTIP18__simd128_uint32_t); +REG_FUNC(0x07E6CC17, _ZTIP18__simd128_uint32_t); REG_FUNC(0x588EBCAD, _ZTIP18__simd64_float16_t); REG_FUNC(0xDFCB2417, _ZTIP18__simd64_float32_t); REG_FUNC(0x9502D3C0, _ZTIP19__simd128_float16_t); @@ -1568,8 +1568,8 @@ REG_FUNC(0x60D7D920, _ZTIPK16__simd128_int8_t); REG_FUNC(0x52A04C47, _ZTIPK16__simd64_int16_t); REG_FUNC(0xBB64CCF1, _ZTIPK16__simd64_int32_t); REG_FUNC(0x7C9D0C33, _ZTIPK16__simd64_poly8_t); -REG_FUNC(0x21A57A1, _ZTIPK16__simd64_uint8_t); -REG_FUNC(0x21E3DD1, _ZTIPK17__simd128_int16_t); +REG_FUNC(0x021A57A1, _ZTIPK16__simd64_uint8_t); +REG_FUNC(0x021E3DD1, _ZTIPK17__simd128_int16_t); REG_FUNC(0xFF8DDBE7, _ZTIPK17__simd128_int32_t); REG_FUNC(0xB30AB3B5, _ZTIPK17__simd128_poly8_t); REG_FUNC(0xC8721E86, _ZTIPK17__simd128_uint8_t); @@ -1606,12 +1606,12 @@ REG_FUNC(0xA0F5E8F5, _ZTIPKy); REG_FUNC(0xA6C2A25C, _ZTIPU8__vectorx); REG_FUNC(0x81B51915, _ZTIPU8__vectory); REG_FUNC(0xA7CB4EAA, _ZTIPa); -REG_FUNC(0x87B0FB6, _ZTIPb); +REG_FUNC(0x087B0FB6, _ZTIPb); REG_FUNC(0xE4D24E14, _ZTIPc); REG_FUNC(0x6825FFE6, _ZTIPd); REG_FUNC(0x926B9A3A, _ZTIPe); REG_FUNC(0x24072F3E, _ZTIPf); -REG_FUNC(0x8B5247B, _ZTIPh); +REG_FUNC(0x08B5247B, _ZTIPh); REG_FUNC(0x15C21CC8, _ZTIPi); REG_FUNC(0xD234CF18, _ZTIPj); REG_FUNC(0x50E25810, _ZTIPl); @@ -1656,7 +1656,7 @@ REG_FUNC(0xA7CA7C93, _ZTISt8bad_cast); REG_FUNC(0xB93721C7, _ZTISt8ios_base); REG_FUNC(0x35E135A0, _ZTISt9bad_alloc); REG_FUNC(0x7BA61382, _ZTISt9basic_iosIcSt11char_traitsIcEE); -REG_FUNC(0x905B8B0, _ZTISt9basic_iosIwSt11char_traitsIwEE); +REG_FUNC(0x0905B8B0, _ZTISt9basic_iosIwSt11char_traitsIwEE); REG_FUNC(0x1E8C6100, _ZTISt9exception); REG_FUNC(0x1CC15F54, _ZTISt9strstream); REG_FUNC(0x8A026EAD, _ZTISt9type_info); @@ -1688,16 +1688,16 @@ REG_FUNC(0xCD2802B5, _ZTS16__simd64_uint8_t); REG_FUNC(0xC3FA8530, _ZTS17__simd128_int16_t); REG_FUNC(0x67A63A08, _ZTS17__simd128_int32_t); REG_FUNC(0x6B26EFF8, _ZTS17__simd128_poly8_t); -REG_FUNC(0x8C4C69F, _ZTS17__simd128_uint8_t); +REG_FUNC(0x08C4C69F, _ZTS17__simd128_uint8_t); REG_FUNC(0x40BC2E0E, _ZTS17__simd64_poly16_t); REG_FUNC(0x8D1AE4A7, _ZTS17__simd64_uint16_t); REG_FUNC(0xC4096952, _ZTS17__simd64_uint32_t); REG_FUNC(0x16D366F1, _ZTS18__simd128_poly16_t); -REG_FUNC(0x45552A1, _ZTS18__simd128_uint16_t); +REG_FUNC(0x045552A1, _ZTS18__simd128_uint16_t); REG_FUNC(0x7DBF4FFF, _ZTS18__simd128_uint32_t); -REG_FUNC(0xED26DE1, _ZTS18__simd64_float16_t); +REG_FUNC(0x0ED26DE1, _ZTS18__simd64_float16_t); REG_FUNC(0xAB0D789A, _ZTS18__simd64_float32_t); -REG_FUNC(0x3200DDB, _ZTS19__simd128_float16_t); +REG_FUNC(0x03200DDB, _ZTS19__simd128_float16_t); REG_FUNC(0xD54CBD7C, _ZTS19__simd128_float32_t); REG_FUNC(0xA8E6842E, _ZTSDh); REG_FUNC(0x5246E71E, _ZTSNSt8ios_base7failureE); @@ -1729,7 +1729,7 @@ REG_FUNC(0x6A472A63, _ZTSPK16__simd64_int32_t); REG_FUNC(0xC356ACF6, _ZTSPK16__simd64_poly8_t); REG_FUNC(0x878C75F4, _ZTSPK16__simd64_uint8_t); REG_FUNC(0x68B777E3, _ZTSPK17__simd128_int16_t); -REG_FUNC(0x61188BD, _ZTSPK17__simd128_int32_t); +REG_FUNC(0x061188BD, _ZTSPK17__simd128_int32_t); REG_FUNC(0xC7733F13, _ZTSPK17__simd128_poly8_t); REG_FUNC(0x3D8A69EC, _ZTSPK17__simd128_uint8_t); REG_FUNC(0xCC081D58, _ZTSPK17__simd64_poly16_t); @@ -1779,12 +1779,12 @@ REG_FUNC(0x982D9703, _ZTSPs); REG_FUNC(0xE2A0B0A8, _ZTSPt); REG_FUNC(0xF7B6B02A, _ZTSPv); REG_FUNC(0xF1C9A755, _ZTSPw); -REG_FUNC(0x968B212, _ZTSPx); -REG_FUNC(0x9787CAD, _ZTSPy); +REG_FUNC(0x0968B212, _ZTSPx); +REG_FUNC(0x09787CAD, _ZTSPy); REG_FUNC(0xF86F5756, _ZTSSd); REG_FUNC(0x999300E0, _ZTSSi); REG_FUNC(0x591C25A3, _ZTSSo); -REG_FUNC(0xFC9D21B, _ZTSSt10bad_typeid); +REG_FUNC(0x0FC9D21B, _ZTSSt10bad_typeid); REG_FUNC(0x867D109E, _ZTSSt10istrstream); REG_FUNC(0x88BFC745, _ZTSSt10ostrstream); REG_FUNC(0xB315CE7A, _ZTSSt11_ctype_base); @@ -1794,7 +1794,7 @@ REG_FUNC(0xBE23707A, _ZTSSt12domain_error); REG_FUNC(0x9E317CE1, _ZTSSt12length_error); REG_FUNC(0xD8DAD98D, _ZTSSt12out_of_range); REG_FUNC(0x1C929309, _ZTSSt12strstreambuf); -REG_FUNC(0xE17E4D6, _ZTSSt13_codecvt_base); +REG_FUNC(0x0E17E4D6, _ZTSSt13_codecvt_base); REG_FUNC(0x918FE198, _ZTSSt13bad_exception); REG_FUNC(0x227B4568, _ZTSSt13basic_filebufIcSt11char_traitsIcEE); REG_FUNC(0xD34BAF59, _ZTSSt13basic_filebufIwSt11char_traitsIwEE); @@ -1823,7 +1823,7 @@ REG_FUNC(0xE5C789D4, _ZTSSt9strstream); REG_FUNC(0x2856DCD6, _ZTSSt9type_info); REG_FUNC(0x75A1CED4, _ZTSU8__vectorx); REG_FUNC(0x508FF61E, _ZTSU8__vectory); -REG_FUNC(0x8E6A51A, _ZTSa); +REG_FUNC(0x08E6A51A, _ZTSa); REG_FUNC(0x491DB7D3, _ZTSb); REG_FUNC(0xD657B5A0, _ZTSc); REG_FUNC(0x322C7CB5, _ZTSd); @@ -1843,7 +1843,7 @@ REG_FUNC(0x402717E4, _ZTSy); REG_FUNC(0x51B29810, _ZTTSd); REG_FUNC(0x52128B13, _ZTTSi); REG_FUNC(0x3C508708, _ZTTSo); -REG_FUNC(0x87753F6, _ZTTSt10istrstream); +REG_FUNC(0x087753F6, _ZTTSt10istrstream); REG_FUNC(0xE3D7CB30, _ZTTSt10ostrstream); REG_FUNC(0xBC326B50, _ZTTSt13basic_istreamIwSt11char_traitsIwEE); REG_FUNC(0x16E32018, _ZTTSt13basic_ostreamIwSt11char_traitsIwEE); @@ -1866,7 +1866,7 @@ REG_FUNC(0xA81AD21D, _ZTVSt10ostrstream); REG_FUNC(0x82A84E5E, _ZTVSt11logic_error); REG_FUNC(0x1D583475, _ZTVSt11range_error); REG_FUNC(0x80C77E16, _ZTVSt12domain_error); -REG_FUNC(0x64ADA35, _ZTVSt12length_error); +REG_FUNC(0x064ADA35, _ZTVSt12length_error); REG_FUNC(0xDDAE7CBE, _ZTVSt12out_of_range); REG_FUNC(0x11B2781A, _ZTVSt12strstreambuf); REG_FUNC(0x75D16BD0, _ZTVSt13_codecvt_base); @@ -1877,7 +1877,7 @@ REG_FUNC(0xB952752B, _ZTVSt13basic_istreamIwSt11char_traitsIwEE); REG_FUNC(0x48F3405B, _ZTVSt13basic_ostreamIwSt11char_traitsIwEE); REG_FUNC(0x53F02A18, _ZTVSt13runtime_error); REG_FUNC(0x177FCCDC, _ZTVSt14overflow_error); -REG_FUNC(0x5548FF7, _ZTVSt15basic_streambufIcSt11char_traitsIcEE); +REG_FUNC(0x05548FF7, _ZTVSt15basic_streambufIcSt11char_traitsIcEE); REG_FUNC(0xE8A9F32E, _ZTVSt15basic_streambufIwSt11char_traitsIwEE); REG_FUNC(0x515AE097, _ZTVSt15underflow_error); REG_FUNC(0x23EEDAF0, _ZTVSt16invalid_argument); @@ -1889,7 +1889,7 @@ REG_FUNC(0xAA09FD32, _ZTVSt8bad_cast); REG_FUNC(0xD58C5F52, _ZTVSt8ios_base); REG_FUNC(0xA27EFBA3, _ZTVSt9bad_alloc); REG_FUNC(0x147996ED, _ZTVSt9basic_iosIcSt11char_traitsIcEE); -REG_FUNC(0xDE4AFE9, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Sd__St9strstream); +REG_FUNC(0x0DE4AFE9, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Sd__St9strstream); REG_FUNC(0x87D18300, _ZTVSt9basic_iosIcSt11char_traitsIcEE__SiSd__St9strstream); REG_FUNC(0x3D6A38D3, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Si__Sd); REG_FUNC(0xA8E795AF, _ZTVSt9basic_iosIcSt11char_traitsIcEE__Si__St10istrstream); @@ -1902,7 +1902,7 @@ REG_FUNC(0xFD21E1F1, _ZTVSt9strstream); REG_FUNC(0x8E9879A7, _ZTVSt9type_info); REG_FUNC(0xE63750C1, _ZZNSt13basic_filebufIcSt11char_traitsIcEE5_InitEPSt10_Dnk_filetNS2_7_InitflEE7_Stinit); REG_FUNC(0x1D4E29BC, _ZZNSt13basic_filebufIwSt11char_traitsIwEE5_InitEPSt10_Dnk_filetNS2_7_InitflEE7_Stinit); -REG_FUNC(0x8A37475, _ZTIN10__cxxabiv116__enum_type_infoE); +REG_FUNC(0x08A37475, _ZTIN10__cxxabiv116__enum_type_infoE); REG_FUNC(0x66CC7DBB, _ZTIN10__cxxabiv117__array_type_infoE); REG_FUNC(0x81C44513, _ZTIN10__cxxabiv117__class_type_infoE); REG_FUNC(0xC35024DA, _ZTIN10__cxxabiv117__pbase_type_infoE); From 912e3fc2133ac2af5485b12a86543e2b4dfa3264 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Tue, 27 Jan 2015 04:39:43 +0300 Subject: [PATCH 06/10] sceCtrl stub --- rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp | 85 +++++++++++++++++++++++++++++ rpcs3/Emu/ARMv7/PSVFuncList.cpp | 2 + rpcs3/Loader/ELF32.cpp | 6 +- rpcs3/emucore.vcxproj | 1 + rpcs3/emucore.vcxproj.filters | 3 + 5 files changed, 94 insertions(+), 3 deletions(-) create mode 100644 rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp diff --git a/rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp b/rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp new file mode 100644 index 0000000000..1f7d65c5df --- /dev/null +++ b/rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp @@ -0,0 +1,85 @@ +#include "stdafx.h" +#include "Emu/System.h" +#include "Emu/ARMv7/PSVFuncList.h" + +extern psv_log_base sceCtrl; + +struct SceCtrlData +{ + u64 timeStamp; + u32 buttons; + u8 lx; + u8 ly; + u8 rx; + u8 ry; + u8 rsrv[16]; +}; + +struct SceCtrlRapidFireRule +{ + u32 uiMask; + u32 uiTrigger; + u32 uiTarget; + u32 uiDelay; + u32 uiMake; + u32 uiBreak; +}; + +s32 sceCtrlSetSamplingMode(u32 uiMode) +{ + throw __FUNCTION__; +} + +s32 sceCtrlGetSamplingMode(vm::psv::ptr puiMode) +{ + throw __FUNCTION__; +} + +s32 sceCtrlPeekBufferPositive(s32 port, vm::psv::ptrpData, s32 nBufs) +{ + throw __FUNCTION__; +} + +s32 sceCtrlPeekBufferNegative(s32 port, vm::psv::ptrpData, s32 nBufs) +{ + throw __FUNCTION__; +} + +s32 sceCtrlReadBufferPositive(s32 port, vm::psv::ptrpData, s32 nBufs) +{ + throw __FUNCTION__; +} + +s32 sceCtrlReadBufferNegative(s32 port, vm::psv::ptrpData, s32 nBufs) +{ + throw __FUNCTION__; +} + +s32 sceCtrlSetRapidFire(s32 port, s32 idx, vm::psv::ptr pRule) +{ + throw __FUNCTION__; +} + +s32 sceCtrlClearRapidFire(s32 port, s32 idx) +{ + throw __FUNCTION__; +} + + +#define REG_FUNC(nid, name) reg_psv_func(nid, &sceCtrl, #name, name) + +psv_log_base sceCtrl("SceCtrl", []() +{ + sceCtrl.on_load = nullptr; + sceCtrl.on_unload = nullptr; + sceCtrl.on_stop = nullptr; + + REG_FUNC(0xA497B150, sceCtrlSetSamplingMode); + REG_FUNC(0xEC752AAF, sceCtrlGetSamplingMode); + REG_FUNC(0xA9C3CED6, sceCtrlPeekBufferPositive); + REG_FUNC(0x104ED1A7, sceCtrlPeekBufferNegative); + REG_FUNC(0x67E7AB83, sceCtrlReadBufferPositive); + REG_FUNC(0x15F96FB0, sceCtrlReadBufferNegative); + REG_FUNC(0xE9CB69C8, sceCtrlSetRapidFire); + REG_FUNC(0xD8294C9C, sceCtrlClearRapidFire); +}); \ No newline at end of file diff --git a/rpcs3/Emu/ARMv7/PSVFuncList.cpp b/rpcs3/Emu/ARMv7/PSVFuncList.cpp index 05d9b4c483..b011da905b 100644 --- a/rpcs3/Emu/ARMv7/PSVFuncList.cpp +++ b/rpcs3/Emu/ARMv7/PSVFuncList.cpp @@ -50,6 +50,7 @@ extern psv_log_base sceLibstdcxx; extern psv_log_base sceLibKernel; extern psv_log_base sceSysmodule; extern psv_log_base scePerf; +extern psv_log_base sceCtrl; void initialize_psv_modules() { @@ -62,6 +63,7 @@ void initialize_psv_modules() g_psv_modules.push_back(&sceLibKernel); g_psv_modules.push_back(&sceSysmodule); g_psv_modules.push_back(&scePerf); + g_psv_modules.push_back(&sceCtrl); // setup special functions (without NIDs) psv_func unimplemented; diff --git a/rpcs3/Loader/ELF32.cpp b/rpcs3/Loader/ELF32.cpp index 520fb8f991..80cac220ad 100644 --- a/rpcs3/Loader/ELF32.cpp +++ b/rpcs3/Loader/ELF32.cpp @@ -215,7 +215,7 @@ namespace loader const u32 addr = *++code; vm::psv::write16(addr + 0, 0xf240 | (data & 0x800) >> 1 | (data & 0xf000) >> 12); // MOVW vm::psv::write16(addr + 2, 0x0c00 | (data & 0x700) << 4 | (data & 0xff)); - LOG_NOTICE(LOADER, "sceRefs: movw written at 0x%x (data=0x%x)", addr, data); + //LOG_NOTICE(LOADER, "sceRefs: movw written at 0x%x (data=0x%x)", addr, data); break; } case 0x00000030: @@ -224,13 +224,13 @@ namespace loader const u32 addr = *++code; vm::psv::write16(addr + 0, 0xf2c0 | (data & 0x8000000) >> 17 | (data & 0xf0000000) >> 28); // MOVT vm::psv::write16(addr + 2, 0x0c00 | (data & 0x7000000) >> 12 | (data & 0xff0000) >> 16); - LOG_NOTICE(LOADER, "sceRefs: movt written at 0x%x (data=0x%x)", addr, data); + //LOG_NOTICE(LOADER, "sceRefs: movt written at 0x%x (data=0x%x)", addr, data); break; } case 0x00000000: { // probably, no operation - LOG_NOTICE(LOADER, "sceRefs: zero code"); + //LOG_NOTICE(LOADER, "sceRefs: zero code"); break; } default: diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index 407ab81918..50c1a279b4 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -58,6 +58,7 @@ + diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index d8f1f1b884..beeae1db31 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -683,6 +683,9 @@ Emu\CPU\ARMv7\Modules + + Emu\CPU\ARMv7\Modules + From 14efde91900ceab0e02bafc44532eeabe0d5eb20 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Tue, 27 Jan 2015 22:57:44 +0300 Subject: [PATCH 07/10] ARMv7: LDRB_IMM, STRB_IMM --- rpcs3/Emu/ARMv7/ARMv7Decoder.cpp | 8 +- rpcs3/Emu/ARMv7/ARMv7Interpreter.cpp | 116 +++++++++++++++++++++++ rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp | 2 +- rpcs3/Emu/ARMv7/Modules/sceSysmodule.cpp | 6 +- 4 files changed, 124 insertions(+), 8 deletions(-) diff --git a/rpcs3/Emu/ARMv7/ARMv7Decoder.cpp b/rpcs3/Emu/ARMv7/ARMv7Decoder.cpp index 8a361014f4..e5a7b4b87f 100644 --- a/rpcs3/Emu/ARMv7/ARMv7Decoder.cpp +++ b/rpcs3/Emu/ARMv7/ARMv7Decoder.cpp @@ -44,20 +44,20 @@ const ARMv7_opcode_t ARMv7_opcode_table[] = ARMv7_OP2(0xfe00, 0x1c00, T1, ADD_IMM), ARMv7_OP2(0xf800, 0x3000, T2, ADD_IMM), ARMv7_OP4(0xfbe0, 0x8000, 0xf100, 0x0000, T3, ADD_IMM, SKIP_IF( (BF(8, 11) == 15 && BT(20)) || BF(16, 19) == 13 )), - ARMv7_OP4(0xfbf0, 0x8000, 0xf200, 0x0000, T4, ADD_IMM), + ARMv7_OP4(0xfbf0, 0x8000, 0xf200, 0x0000, T4, ADD_IMM, SKIP_IF( (BF(16, 19) & 13) == 13 )), ARMv7_OP4(0x0fe0, 0x0000, 0x0280, 0x0000, A1, ADD_IMM), ARMv7_OP2(0xfe00, 0x1800, T1, ADD_REG), ARMv7_OP2(0xff00, 0x4400, T2, ADD_REG, SKIP_IF( (c & 0x87) == 0x85 || BF(3, 6) == 13 )), - ARMv7_OP4(0xffe0, 0x8000, 0xeb00, 0x0000, T3, ADD_REG), + ARMv7_OP4(0xffe0, 0x8000, 0xeb00, 0x0000, T3, ADD_REG, SKIP_IF( (BF(8, 11) == 15 && BT(20)) || BF(16, 19) == 13 )), ARMv7_OP4(0x0fe0, 0x0010, 0x0080, 0x0000, A1, ADD_REG), ARMv7_OP4(0x0fe0, 0x0090, 0x0080, 0x0010, A1, ADD_RSR), ARMv7_OP2(0xf800, 0xa800, T1, ADD_SPI), ARMv7_OP2(0xff80, 0xb000, T2, ADD_SPI), - ARMv7_OP4(0xfbef, 0x8000, 0xf10d, 0x0000, T3, ADD_SPI), + ARMv7_OP4(0xfbef, 0x8000, 0xf10d, 0x0000, T3, ADD_SPI, SKIP_IF( BF(8, 11) == 15 && BT(20) )), ARMv7_OP4(0xfbff, 0x8000, 0xf20d, 0x0000, T4, ADD_SPI), ARMv7_OP4(0x0fef, 0x0000, 0x028d, 0x0000, A1, ADD_SPI), ARMv7_OP2(0xff78, 0x4468, T1, ADD_SPR), - ARMv7_OP2(0xff87, 0x4485, T2, ADD_SPR), + ARMv7_OP2(0xff87, 0x4485, T2, ADD_SPR, SKIP_IF( BF(3, 6) == 13 )), ARMv7_OP4(0xffef, 0x8000, 0xeb0d, 0x0000, T3, ADD_SPR), ARMv7_OP4(0x0fef, 0x0010, 0x008d, 0x0000, A1, ADD_SPR), diff --git a/rpcs3/Emu/ARMv7/ARMv7Interpreter.cpp b/rpcs3/Emu/ARMv7/ARMv7Interpreter.cpp index 71d91acad9..954e07dfcc 100644 --- a/rpcs3/Emu/ARMv7/ARMv7Interpreter.cpp +++ b/rpcs3/Emu/ARMv7/ARMv7Interpreter.cpp @@ -1355,6 +1355,7 @@ void ARMv7_instrs::LDR_IMM(ARMv7Context& context, const ARMv7Code code, const AR reject((wback && n == t) || (t == 15 && context.ITSTATE), "UNPREDICTABLE"); break; } + case A1: throw __FUNCTION__; default: throw __FUNCTION__; } @@ -1441,11 +1442,70 @@ void ARMv7_instrs::LDR_REG(ARMv7Context& context, const ARMv7Code code, const AR void ARMv7_instrs::LDRB_IMM(ARMv7Context& context, const ARMv7Code code, const ARMv7_encoding type) { + u32 cond, t, n, imm32; + bool index, add, wback; + switch (type) { + case T1: + { + cond = context.ITSTATE.advance(); + t = (code.data & 0x7); + n = (code.data & 0x38) >> 3; + imm32 = (code.data & 0x7c0) >> 4; + index = true; + add = true; + wback = false; + break; + } + case T2: + { + cond = context.ITSTATE.advance(); + t = (code.data & 0xf000) >> 12; + n = (code.data & 0xf0000) >> 16; + imm32 = (code.data & 0xfff); + index = true; + add = true; + wback = false; + + reject(t == 15, "PLD"); + reject(n == 15, "LDRB (literal)"); + reject(t == 13, "UNPREDICTABLE"); + break; + } + case T3: + { + cond = context.ITSTATE.advance(); + t = (code.data & 0xf000) >> 12; + n = (code.data & 0xf0000) >> 16; + imm32 = (code.data & 0xff); + index = (code.data & 0x400); + add = (code.data & 0x200); + wback = (code.data & 0x100); + + reject(t == 15 && index && !add && !wback, "PLD"); + reject(n == 15, "LDRB (literal)"); + reject(index && add && !wback, "LDRBT"); + reject(!index && !wback, "UNDEFINED"); + reject(t == 13 || t == 15 || (wback && n == t), "UNPREDICTABLE"); + break; + } case A1: throw __FUNCTION__; default: throw __FUNCTION__; } + + if (ConditionPassed(context, cond)) + { + const u32 offset_addr = add ? context.read_gpr(n) + imm32 : context.read_gpr(n) - imm32; + const u32 addr = index ? offset_addr : context.read_gpr(n); + + context.write_gpr(t, vm::psv::read8(addr)); + + if (wback) + { + context.write_gpr(n, offset_addr); + } + } } void ARMv7_instrs::LDRB_LIT(ARMv7Context& context, const ARMv7Code code, const ARMv7_encoding type) @@ -2999,11 +3059,67 @@ void ARMv7_instrs::STR_REG(ARMv7Context& context, const ARMv7Code code, const AR void ARMv7_instrs::STRB_IMM(ARMv7Context& context, const ARMv7Code code, const ARMv7_encoding type) { + u32 cond, t, n, imm32; + bool index, add, wback; + switch (type) { + case T1: + { + cond = context.ITSTATE.advance(); + t = (code.data & 0x7); + n = (code.data & 0x38) >> 3; + imm32 = (code.data & 0x7c0) >> 4; + index = true; + add = true; + wback = false; + break; + } + case T2: + { + cond = context.ITSTATE.advance(); + t = (code.data & 0xf000) >> 12; + n = (code.data & 0xf0000) >> 16; + imm32 = (code.data & 0xfff); + index = true; + add = true; + wback = false; + + reject(n == 15, "UNDEFINED"); + reject(t == 13 || t == 15, "UNPREDICTABLE"); + break; + } + case T3: + { + cond = context.ITSTATE.advance(); + t = (code.data & 0xf000) >> 12; + n = (code.data & 0xf0000) >> 16; + imm32 = (code.data & 0xff); + index = (code.data & 0x400); + add = (code.data & 0x200); + wback = (code.data & 0x100); + + reject(index && add && !wback, "STRBT"); + reject(n == 15 || (!index && !wback), "UNDEFINED"); + reject(t == 13 || t == 15 || (wback && n == t), "UNPREDICTABLE"); + break; + } case A1: throw __FUNCTION__; default: throw __FUNCTION__; } + + if (ConditionPassed(context, cond)) + { + const u32 offset_addr = add ? context.read_gpr(n) + imm32 : context.read_gpr(n) - imm32; + const u32 addr = index ? offset_addr : context.read_gpr(n); + + vm::psv::write8(addr, (u8)context.read_gpr(t)); + + if (wback) + { + context.write_gpr(n, offset_addr); + } + } } void ARMv7_instrs::STRB_REG(ARMv7Context& context, const ARMv7Code code, const ARMv7_encoding type) diff --git a/rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp b/rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp index 1f7d65c5df..972bd85d4c 100644 --- a/rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp +++ b/rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp @@ -82,4 +82,4 @@ psv_log_base sceCtrl("SceCtrl", []() REG_FUNC(0x15F96FB0, sceCtrlReadBufferNegative); REG_FUNC(0xE9CB69C8, sceCtrlSetRapidFire); REG_FUNC(0xD8294C9C, sceCtrlClearRapidFire); -}); \ No newline at end of file +}); diff --git a/rpcs3/Emu/ARMv7/Modules/sceSysmodule.cpp b/rpcs3/Emu/ARMv7/Modules/sceSysmodule.cpp index 6584de337a..a845595c87 100644 --- a/rpcs3/Emu/ARMv7/Modules/sceSysmodule.cpp +++ b/rpcs3/Emu/ARMv7/Modules/sceSysmodule.cpp @@ -6,21 +6,21 @@ extern psv_log_base sceSysmodule; s32 sceSysmoduleLoadModule(u16 id) { - sceSysmodule.Todo("sceSysmoduleLoadModule(id=0x%04x)", id); + sceSysmodule.Error("sceSysmoduleLoadModule(id=0x%04x) -> SCE_OK", id); return SCE_OK; // loading succeeded } s32 sceSysmoduleUnloadModule(u16 id) { - sceSysmodule.Todo("sceSysmoduleUnloadModule(id=0x%04x)", id); + sceSysmodule.Error("sceSysmoduleUnloadModule(id=0x%04x) -> SCE_OK", id); return SCE_OK; // unloading succeeded } s32 sceSysmoduleIsLoaded(u16 id) { - sceSysmodule.Todo("sceSysmoduleIsLoaded(id=0x%04x)", id); + sceSysmodule.Error("sceSysmoduleIsLoaded(id=0x%04x) -> SCE_OK", id); return SCE_OK; // module is loaded } From 1c4db01e196af6ce0549e6f13b69d4553e7474b3 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Wed, 28 Jan 2015 01:39:16 +0300 Subject: [PATCH 08/10] sceDisplay, sceDeci4p stub --- rpcs3/Emu/ARMv7/Modules/sceDeci4p.cpp | 48 +++++++++++ rpcs3/Emu/ARMv7/Modules/sceDisplay.cpp | 113 +++++++++++++++++++++++++ rpcs3/emucore.vcxproj | 3 + rpcs3/emucore.vcxproj.filters | 9 ++ 4 files changed, 173 insertions(+) create mode 100644 rpcs3/Emu/ARMv7/Modules/sceDeci4p.cpp create mode 100644 rpcs3/Emu/ARMv7/Modules/sceDisplay.cpp diff --git a/rpcs3/Emu/ARMv7/Modules/sceDeci4p.cpp b/rpcs3/Emu/ARMv7/Modules/sceDeci4p.cpp new file mode 100644 index 0000000000..bdd5e58e5d --- /dev/null +++ b/rpcs3/Emu/ARMv7/Modules/sceDeci4p.cpp @@ -0,0 +1,48 @@ +#include "stdafx.h" +#include "Emu/System.h" +#include "Emu/ARMv7/PSVFuncList.h" + +extern psv_log_base sceDeci4p; + +typedef s32(*SceKernelDeci4pCallback)(s32 notifyId, s32 notifyCount, s32 notifyArg, vm::psv::ptr pCommon); + +s32 sceKernelDeci4pOpen(vm::psv::ptr protoname, u32 protonum, u32 bufsize) +{ + throw __FUNCTION__; +} + +s32 sceKernelDeci4pClose(s32 socketid) +{ + throw __FUNCTION__; +} + +s32 sceKernelDeci4pRead(s32 socketid, vm::psv::ptr buffer, u32 size, u32 reserved) +{ + throw __FUNCTION__; +} + +s32 sceKernelDeci4pWrite(s32 socketid, vm::psv::ptr buffer, u32 size, u32 reserved) +{ + throw __FUNCTION__; +} + +s32 sceKernelDeci4pRegisterCallback(s32 socketid, s32 cbid) +{ + throw __FUNCTION__; +} + + +#define REG_FUNC(nid, name) reg_psv_func(nid, &sceDeci4p, #name, name) + +psv_log_base sceDeci4p("SceDeci4pUserp", []() +{ + sceDeci4p.on_load = nullptr; + sceDeci4p.on_unload = nullptr; + sceDeci4p.on_stop = nullptr; + + REG_FUNC(0x28578FE8, sceKernelDeci4pOpen); + REG_FUNC(0x63B0C50F, sceKernelDeci4pClose); + REG_FUNC(0x971E1C66, sceKernelDeci4pRead); + REG_FUNC(0xCDA3AAAC, sceKernelDeci4pWrite); + REG_FUNC(0x73371F35, sceKernelDeci4pRegisterCallback); +}); \ No newline at end of file diff --git a/rpcs3/Emu/ARMv7/Modules/sceDisplay.cpp b/rpcs3/Emu/ARMv7/Modules/sceDisplay.cpp new file mode 100644 index 0000000000..c03dbe24dd --- /dev/null +++ b/rpcs3/Emu/ARMv7/Modules/sceDisplay.cpp @@ -0,0 +1,113 @@ +#include "stdafx.h" +#include "Emu/System.h" +#include "Emu/ARMv7/PSVFuncList.h" + +extern psv_log_base sceDisplay; + +struct SceDisplayFrameBuf +{ + u32 size; + vm::psv::ptr base; + u32 pitch; + u32 pixelformat; + u32 width; + u32 height; +}; + +s32 sceDisplayGetRefreshRate(vm::psv::ptr pFps) +{ + throw __FUNCTION__; +} + +s32 sceDisplaySetFrameBuf(vm::psv::ptr pFrameBuf, s32 iUpdateTimingMode) +{ + throw __FUNCTION__; +} + +s32 sceDisplayGetFrameBuf(vm::psv::ptr pFrameBuf, s32 iUpdateTimingMode) +{ + throw __FUNCTION__; +} + +s32 sceDisplayGetVcount() +{ + throw __FUNCTION__; +} + +s32 sceDisplayWaitVblankStart() +{ + throw __FUNCTION__; +} + +s32 sceDisplayWaitVblankStartCB() +{ + throw __FUNCTION__; +} + +s32 sceDisplayWaitVblankStartMulti(u32 vcount) +{ + throw __FUNCTION__; +} + +s32 sceDisplayWaitVblankStartMultiCB(u32 vcount) +{ + throw __FUNCTION__; +} + +s32 sceDisplayWaitSetFrameBuf() +{ + throw __FUNCTION__; +} + +s32 sceDisplayWaitSetFrameBufCB() +{ + throw __FUNCTION__; +} + +s32 sceDisplayWaitSetFrameBufMulti(u32 vcount) +{ + throw __FUNCTION__; +} + +s32 sceDisplayWaitSetFrameBufMultiCB(u32 vcount) +{ + throw __FUNCTION__; +} + +s32 sceDisplayRegisterVblankStartCallback(s32 uid) +{ + throw __FUNCTION__; +} + +s32 sceDisplayUnregisterVblankStartCallback(s32 uid) +{ + throw __FUNCTION__; +} + + +#define REG_FUNC(nid, name) reg_psv_func(nid, &sceDisplay, #name, name) + +psv_log_base sceDisplay("SceDisplay", []() +{ + sceDisplay.on_load = nullptr; + sceDisplay.on_unload = nullptr; + sceDisplay.on_stop = nullptr; + + // SceDisplayUser + REG_FUNC(0x7A410B64, sceDisplaySetFrameBuf); + REG_FUNC(0x42AE6BBC, sceDisplayGetFrameBuf); + + // SceDisplay + REG_FUNC(0xA08CA60D, sceDisplayGetRefreshRate); + REG_FUNC(0xB6FDE0BA, sceDisplayGetVcount); + REG_FUNC(0x5795E898, sceDisplayWaitVblankStart); + REG_FUNC(0x78B41B92, sceDisplayWaitVblankStartCB); + REG_FUNC(0xDD0A13B8, sceDisplayWaitVblankStartMulti); + REG_FUNC(0x05F27764, sceDisplayWaitVblankStartMultiCB); + REG_FUNC(0x9423560C, sceDisplayWaitSetFrameBuf); + REG_FUNC(0x814C90AF, sceDisplayWaitSetFrameBufCB); + REG_FUNC(0x7D9864A8, sceDisplayWaitSetFrameBufMulti); + REG_FUNC(0x3E796EF5, sceDisplayWaitSetFrameBufMultiCB); + REG_FUNC(0x6BDF4C4D, sceDisplayRegisterVblankStartCallback); + REG_FUNC(0x98436A80, sceDisplayUnregisterVblankStartCallback); +}); \ No newline at end of file diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index 50c1a279b4..e70afa794c 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -59,6 +59,9 @@ + + + diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index beeae1db31..69e962dbfc 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -686,6 +686,15 @@ Emu\CPU\ARMv7\Modules + + Emu\CPU\ARMv7\Modules + + + Emu\CPU\ARMv7\Modules + + + Emu\CPU\ARMv7\Modules + From 579a88b7c43dcc1b005a3eae22a7364125904762 Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Wed, 28 Jan 2015 15:59:16 +0300 Subject: [PATCH 09/10] vm_ptr: function format changed --- Utilities/BEType.h | 48 ++++++++-- rpcs3/Emu/ARMv7/ARMv7Callback.h | 4 +- rpcs3/Emu/ARMv7/ARMv7Context.h | 2 +- rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp | 8 +- rpcs3/Emu/ARMv7/Modules/sceLibKernel.h | 6 +- rpcs3/Emu/ARMv7/Modules/sceLibc.cpp | 2 +- rpcs3/Emu/Cell/PPUThread.h | 2 +- rpcs3/Emu/Memory/vm_ptr.h | 49 ++++++---- rpcs3/Emu/RSX/GCM.h | 2 +- rpcs3/Emu/RSX/RSXThread.h | 7 +- rpcs3/Emu/SysCalls/CB_FUNC.h | 5 +- rpcs3/Emu/SysCalls/Modules.h | 6 +- rpcs3/Emu/SysCalls/Modules/cellAdec.h | 2 +- rpcs3/Emu/SysCalls/Modules/cellDmux.h | 4 +- rpcs3/Emu/SysCalls/Modules/cellGame.cpp | 4 +- rpcs3/Emu/SysCalls/Modules/cellGcmSys.cpp | 16 ++-- rpcs3/Emu/SysCalls/Modules/cellMsgDialog.h | 2 +- rpcs3/Emu/SysCalls/Modules/cellNetCtl.h | 4 +- rpcs3/Emu/SysCalls/Modules/cellPngDec.h | 12 +-- rpcs3/Emu/SysCalls/Modules/cellResc.cpp | 22 ++--- rpcs3/Emu/SysCalls/Modules/cellResc.h | 4 +- rpcs3/Emu/SysCalls/Modules/cellSail.h | 102 ++++++++++----------- rpcs3/Emu/SysCalls/Modules/cellSaveData.h | 10 +- rpcs3/Emu/SysCalls/Modules/cellSpurs.h | 2 +- rpcs3/Emu/SysCalls/Modules/cellSync.cpp | 8 +- rpcs3/Emu/SysCalls/Modules/cellSysutil.cpp | 6 +- rpcs3/Emu/SysCalls/Modules/cellSysutil.h | 20 ++-- rpcs3/Emu/SysCalls/Modules/cellVdec.h | 2 +- rpcs3/Emu/SysCalls/Modules/libmixer.h | 2 +- rpcs3/Emu/SysCalls/Modules/sceNpTrophy.h | 2 +- rpcs3/Emu/SysCalls/Modules/sysPrxForUser.h | 2 +- rpcs3/Emu/SysCalls/lv2/cellFs.cpp | 8 +- rpcs3/Emu/SysCalls/lv2/sys_ppu_thread.cpp | 4 +- rpcs3/Emu/SysCalls/lv2/sys_ppu_thread.h | 2 +- rpcs3/Loader/ELF64.cpp | 2 +- rpcs3/emucore.vcxproj | 1 + rpcs3/emucore.vcxproj.filters | 3 + 37 files changed, 216 insertions(+), 171 deletions(-) diff --git a/Utilities/BEType.h b/Utilities/BEType.h index 27997618bd..4965eac336 100644 --- a/Utilities/BEType.h +++ b/Utilities/BEType.h @@ -708,7 +708,7 @@ class to_be_t public: //true if need swap endianes for be - static const bool value = (sizeof(T2) > 1) && (std::is_arithmetic::value || std::is_enum::value); + static const bool value = std::is_arithmetic::value || std::is_enum::value; //be_t if need swap endianes, T otherwise typedef typename _be_type_selector< T, T2, value >::type type; @@ -716,26 +716,58 @@ public: typedef typename _be_type_selector< T, T2, !is_be_t::value >::type forced_type; }; +template +class to_be_t +{ +public: + static const bool value = to_be_t::value; + typedef const typename to_be_t::type type; + typedef const typename to_be_t::forced_type forced_type; +}; + template class to_be_t { public: - //true if need swap endianes for be static const bool value = false; - - //be_t if need swap endianes, T otherwise typedef void type; + typedef void forced_type; }; template -class to_be_t +class to_be_t { public: - //true if need swap endianes for be static const bool value = false; + typedef u8 type; + typedef u8 forced_type; +}; - //be_t if need swap endianes, T otherwise - typedef const void type; +template +class to_be_t +{ +public: + static const bool value = false; + typedef s8 type; + typedef s8 forced_type; +}; + +template +class to_be_t +{ +public: + static const bool value = false; + typedef char type; + typedef char forced_type; +}; + +template +class to_be_t +{ +public: + static const bool value = false; + typedef bool type; + typedef bool forced_type; }; template diff --git a/rpcs3/Emu/ARMv7/ARMv7Callback.h b/rpcs3/Emu/ARMv7/ARMv7Callback.h index 4f9c72d1e0..18c39fe49d 100644 --- a/rpcs3/Emu/ARMv7/ARMv7Callback.h +++ b/rpcs3/Emu/ARMv7/ARMv7Callback.h @@ -5,7 +5,7 @@ namespace vm { template - __forceinline RT _ptr_base::operator()(ARMv7Context& context, T... args) const + __forceinline RT _ptr_base::operator()(ARMv7Context& context, T... args) const { return psv_func_detail::func_caller::call(context, vm::cast(this->addr()), args...); } @@ -15,4 +15,4 @@ template __forceinline RT cb_call(ARMv7Context& context, u32 addr, T... args) { return psv_func_detail::func_caller::call(context, addr, args...); -} \ No newline at end of file +} diff --git a/rpcs3/Emu/ARMv7/ARMv7Context.h b/rpcs3/Emu/ARMv7/ARMv7Context.h index 873f039555..962f5dcc19 100644 --- a/rpcs3/Emu/ARMv7/ARMv7Context.h +++ b/rpcs3/Emu/ARMv7/ARMv7Context.h @@ -266,7 +266,7 @@ struct cast_armv7_gpr return value; } - __forceinline static bool from_gpr(const u32 reg) + __forceinline static bool from_gpr(const u32& reg) { return reinterpret_cast(reg); } diff --git a/rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp b/rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp index 972bd85d4c..b858e40972 100644 --- a/rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp +++ b/rpcs3/Emu/ARMv7/Modules/sceCtrl.cpp @@ -35,22 +35,22 @@ s32 sceCtrlGetSamplingMode(vm::psv::ptr puiMode) throw __FUNCTION__; } -s32 sceCtrlPeekBufferPositive(s32 port, vm::psv::ptrpData, s32 nBufs) +s32 sceCtrlPeekBufferPositive(s32 port, vm::psv::ptr pData, s32 nBufs) { throw __FUNCTION__; } -s32 sceCtrlPeekBufferNegative(s32 port, vm::psv::ptrpData, s32 nBufs) +s32 sceCtrlPeekBufferNegative(s32 port, vm::psv::ptr pData, s32 nBufs) { throw __FUNCTION__; } -s32 sceCtrlReadBufferPositive(s32 port, vm::psv::ptrpData, s32 nBufs) +s32 sceCtrlReadBufferPositive(s32 port, vm::psv::ptr pData, s32 nBufs) { throw __FUNCTION__; } -s32 sceCtrlReadBufferNegative(s32 port, vm::psv::ptrpData, s32 nBufs) +s32 sceCtrlReadBufferNegative(s32 port, vm::psv::ptr pData, s32 nBufs) { throw __FUNCTION__; } diff --git a/rpcs3/Emu/ARMv7/Modules/sceLibKernel.h b/rpcs3/Emu/ARMv7/Modules/sceLibKernel.h index 186c470b1c..df2bbd3d3d 100644 --- a/rpcs3/Emu/ARMv7/Modules/sceLibKernel.h +++ b/rpcs3/Emu/ARMv7/Modules/sceLibKernel.h @@ -306,7 +306,7 @@ struct SceKernelAllocMemBlockOpt // Thread Manager definitions (threads) -typedef s32(*SceKernelThreadEntry)(u32 argSize, vm::psv::ptr pArgBlock); +typedef s32(SceKernelThreadEntry)(u32 argSize, vm::psv::ptr pArgBlock); struct SceKernelThreadOptParam { @@ -371,7 +371,7 @@ struct SceKernelSystemInfo // Thread Manager definitions (callbacks) -typedef s32(*SceKernelCallbackFunction)(s32 notifyId, s32 notifyCount, s32 notifyArg, vm::psv::ptr pCommon); +typedef s32(SceKernelCallbackFunction)(s32 notifyId, s32 notifyCount, s32 notifyArg, vm::psv::ptr pCommon); struct SceKernelCallbackInfo { @@ -389,7 +389,7 @@ struct SceKernelCallbackInfo // Thread Manager definitions (events) -typedef s32(*SceKernelThreadEventHandler)(s32 type, s32 threadId, s32 arg, vm::psv::ptr pCommon); +typedef s32(SceKernelThreadEventHandler)(s32 type, s32 threadId, s32 arg, vm::psv::ptr pCommon); struct SceKernelEventInfo { diff --git a/rpcs3/Emu/ARMv7/Modules/sceLibc.cpp b/rpcs3/Emu/ARMv7/Modules/sceLibc.cpp index f0e596af2b..611be74629 100644 --- a/rpcs3/Emu/ARMv7/Modules/sceLibc.cpp +++ b/rpcs3/Emu/ARMv7/Modules/sceLibc.cpp @@ -8,7 +8,7 @@ extern psv_log_base sceLibc; vm::psv::ptr g_dso; -typedef void(*atexit_func_t)(vm::psv::ptr); +typedef void(atexit_func_t)(vm::psv::ptr); std::vector> g_atexit; diff --git a/rpcs3/Emu/Cell/PPUThread.h b/rpcs3/Emu/Cell/PPUThread.h index 2c5c13246d..3def8675d6 100644 --- a/rpcs3/Emu/Cell/PPUThread.h +++ b/rpcs3/Emu/Cell/PPUThread.h @@ -969,7 +969,7 @@ struct cast_ppu_gpr return value; } - __forceinline static bool from_gpr(const u64 reg) + __forceinline static bool from_gpr(const u64& reg) { return reinterpret_cast(reg); } diff --git a/rpcs3/Emu/Memory/vm_ptr.h b/rpcs3/Emu/Memory/vm_ptr.h index 23c7123b2d..ead6e577a0 100644 --- a/rpcs3/Emu/Memory/vm_ptr.h +++ b/rpcs3/Emu/Memory/vm_ptr.h @@ -109,7 +109,11 @@ namespace vm public: typedef typename std::remove_cv::type type; - static const u32 data_size = sizeof(T); + + __forceinline static const u32 data_size() + { + return sizeof(T); + } __forceinline T* const operator -> () const { @@ -119,45 +123,45 @@ namespace vm _ptr_base operator++ (int) { AT result = m_addr; - m_addr += data_size; + m_addr += data_size(); return make(result); } _ptr_base& operator++ () { - m_addr += data_size; + m_addr += data_size(); return *this; } _ptr_base operator-- (int) { AT result = m_addr; - m_addr -= data_size; + m_addr -= data_size(); return make(result); } _ptr_base& operator-- () { - m_addr -= data_size; + m_addr -= data_size(); return *this; } _ptr_base& operator += (AT count) { - m_addr += count * data_size; + m_addr += count * data_size(); return *this; } _ptr_base& operator -= (AT count) { - m_addr -= count * data_size; + m_addr -= count * data_size(); return *this; } - _ptr_base operator + (typename remove_be_t::type count) const { return make(m_addr + count * data_size); } - _ptr_base operator + (typename to_be_t::type count) const { return make(m_addr + count * data_size); } - _ptr_base operator - (typename remove_be_t::type count) const { return make(m_addr - count * data_size); } - _ptr_base operator - (typename to_be_t::type count) const { return make(m_addr - count * data_size); } + _ptr_base operator + (typename remove_be_t::type count) const { return make(m_addr + count * data_size()); } + _ptr_base operator + (typename to_be_t::type count) const { return make(m_addr + count * data_size()); } + _ptr_base operator - (typename remove_be_t::type count) const { return make(m_addr - count * data_size()); } + _ptr_base operator - (typename to_be_t::type count) const { return make(m_addr - count * data_size()); } __forceinline T& operator *() const { @@ -166,12 +170,12 @@ namespace vm __forceinline T& operator [](typename remove_be_t::type index) const { - return vm::get_ref(vm::cast(m_addr + data_size * index)); + return vm::get_ref(vm::cast(m_addr + data_size() * index)); } __forceinline T& operator [](typename to_be_t::forced_type index) const { - return vm::get_ref(vm::cast(m_addr + data_size * index)); + return vm::get_ref(vm::cast(m_addr + data_size() * index)); } __forceinline bool operator <(const _ptr_base& right) const { return m_addr < right.m_addr; } @@ -326,12 +330,12 @@ namespace vm }; template - class _ptr_base + class _ptr_base { AT m_addr; public: - typedef RT(*type)(T...); + typedef RT(type)(T...); RT operator()(CPUThread& CPU, T... args) const; // defined in CB_FUNC.h, call using specified PPU thread context @@ -360,10 +364,10 @@ namespace vm explicit operator bool() const { return m_addr != 0; } template - operator const _ptr_base() const + operator const _ptr_base() const { const AT2 addr = convert_le_be(m_addr); - return reinterpret_cast&>(addr); + return reinterpret_cast&>(addr); } static const _ptr_base make(const AT& addr) @@ -371,7 +375,7 @@ namespace vm return reinterpret_cast(addr); } - operator const std::function() const + operator const std::function() const { const AT addr = convert_le_be(m_addr); return [addr](T... args) -> RT { return make(addr)(args...); }; @@ -380,6 +384,15 @@ namespace vm _ptr_base& operator = (const _ptr_base& right) = default; }; + template + class _ptr_base + { + AT m_addr; + + public: + static_assert(!sizeof(AT), "vm::_ptr_base<> error: use RT(T...) format for functions instead of RT(*)(T...)"); + }; + //BE pointer to LE data template struct bptrl : public _ptr_base::type> { diff --git a/rpcs3/Emu/RSX/GCM.h b/rpcs3/Emu/RSX/GCM.h index 7b216aa87f..929b968503 100644 --- a/rpcs3/Emu/RSX/GCM.h +++ b/rpcs3/Emu/RSX/GCM.h @@ -220,7 +220,7 @@ struct CellGcmConfig struct CellGcmContextData; -typedef s32(*CellGcmContextCallback)(vm::ptr, u32); +typedef s32(CellGcmContextCallback)(vm::ptr, u32); struct CellGcmContextData { diff --git a/rpcs3/Emu/RSX/RSXThread.h b/rpcs3/Emu/RSX/RSXThread.h index 618573d21a..c0f412f648 100644 --- a/rpcs3/Emu/RSX/RSXThread.h +++ b/rpcs3/Emu/RSX/RSXThread.h @@ -154,10 +154,10 @@ public: SSemaphore m_sem_flush; SSemaphore m_sem_flip; u64 m_last_flip_time; - vm::ptr m_flip_handler; - vm::ptr m_user_handler; + vm::ptr m_flip_handler; + vm::ptr m_user_handler; u64 m_vblank_count; - vm::ptr m_vblank_handler; + vm::ptr m_vblank_handler; public: // Dither @@ -442,6 +442,7 @@ protected: , m_flip_mode(CELL_GCM_DISPLAY_VSYNC) , m_debug_level(CELL_GCM_DEBUG_LEVEL0) , m_frequency_mode(CELL_GCM_DISPLAY_FREQUENCY_DISABLE) + , m_report_main_addr(0) , m_main_mem_addr(0) , m_local_mem_addr(0) , m_draw_mode(0) diff --git a/rpcs3/Emu/SysCalls/CB_FUNC.h b/rpcs3/Emu/SysCalls/CB_FUNC.h index 403a703db5..160eab9559 100644 --- a/rpcs3/Emu/SysCalls/CB_FUNC.h +++ b/rpcs3/Emu/SysCalls/CB_FUNC.h @@ -163,7 +163,7 @@ namespace cb_detail namespace vm { template - __forceinline RT _ptr_base::operator()(CPUThread& CPU, T... args) const + __forceinline RT _ptr_base::operator()(CPUThread& CPU, T... args) const { auto data = vm::get_ptr>(vm::cast(m_addr)); const u32 pc = data[0]; @@ -174,7 +174,7 @@ namespace vm } template - __forceinline RT _ptr_base::operator()(T... args) const + __forceinline RT _ptr_base::operator()(T... args) const { return operator()(GetCurrentPPUThread(), args...); } @@ -186,6 +186,7 @@ __forceinline RT cb_call(PPUThread& CPU, u32 pc, u32 rtoc, T... args) return cb_detail::_func_caller::call(CPU, pc, rtoc, args...); } +// Something is wrong with it (but cb_call() should work anyway) //template //void cb_call(PPUThread& CPU, u32 pc, u32 rtoc, T... args) //{ diff --git a/rpcs3/Emu/SysCalls/Modules.h b/rpcs3/Emu/SysCalls/Modules.h index 5874dc6fc5..6172e623fc 100644 --- a/rpcs3/Emu/SysCalls/Modules.h +++ b/rpcs3/Emu/SysCalls/Modules.h @@ -9,9 +9,9 @@ struct ModuleFunc { u32 id; func_caller* func; - vm::ptr lle_func; + vm::ptr lle_func; - ModuleFunc(u32 id, func_caller* func, vm::ptr lle_func = vm::ptr::make(0)) + ModuleFunc(u32 id, func_caller* func, vm::ptr lle_func = vm::ptr::make(0)) : id(id) , func(func) , lle_func(lle_func) @@ -129,7 +129,7 @@ public: bool RemoveId(u32 id); - void RegisterLLEFunc(u32 id, vm::ptr func) + void RegisterLLEFunc(u32 id, vm::ptr func) { if (auto f = GetFunc(id)) { diff --git a/rpcs3/Emu/SysCalls/Modules/cellAdec.h b/rpcs3/Emu/SysCalls/Modules/cellAdec.h index a0a3fb2a8e..00c5a58c3e 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellAdec.h +++ b/rpcs3/Emu/SysCalls/Modules/cellAdec.h @@ -366,7 +366,7 @@ enum CellAdecMsgType CELL_ADEC_MSG_TYPE_SEQDONE, }; -typedef s32(*CellAdecCbMsg)(u32 handle, CellAdecMsgType msgType, s32 msgData, u32 cbArg); +typedef s32(CellAdecCbMsg)(u32 handle, CellAdecMsgType msgType, s32 msgData, u32 cbArg); struct CellAdecCb { diff --git a/rpcs3/Emu/SysCalls/Modules/cellDmux.h b/rpcs3/Emu/SysCalls/Modules/cellDmux.h index 8a2a70cc5b..edca677727 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellDmux.h +++ b/rpcs3/Emu/SysCalls/Modules/cellDmux.h @@ -217,7 +217,7 @@ struct CellDmuxResource2 be_t shit[4]; }; -typedef u32(*CellDmuxCbMsg)(u32 demuxerHandle, vm::ptr demuxerMsg, u32 cbArg); +typedef u32(CellDmuxCbMsg)(u32 demuxerHandle, vm::ptr demuxerMsg, u32 cbArg); struct CellDmuxCb { @@ -225,7 +225,7 @@ struct CellDmuxCb be_t cbArg; }; -typedef u32(*CellDmuxCbEsMsg)(u32 demuxerHandle, u32 esHandle, vm::ptr esMsg, u32 cbArg); +typedef u32(CellDmuxCbEsMsg)(u32 demuxerHandle, u32 esHandle, vm::ptr esMsg, u32 cbArg); struct CellDmuxEsCb { diff --git a/rpcs3/Emu/SysCalls/Modules/cellGame.cpp b/rpcs3/Emu/SysCalls/Modules/cellGame.cpp index 6fb4df09ca..e54aedb7e2 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellGame.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellGame.cpp @@ -202,7 +202,7 @@ int cellGameContentPermit(vm::ptr contentInfoPath, vm: } int cellGameDataCheckCreate2(PPUThread& CPU, u32 version, vm::ptr dirName, u32 errDialog, - vm::ptr cbResult, vm::ptr get, vm::ptr set)> funcStat, u32 container) + vm::ptr cbResult, vm::ptr get, vm::ptr set)> funcStat, u32 container) { cellGame->Warning("cellGameDataCheckCreate(2)(version=0x%x, dirName_addr=0x%x, errDialog=0x%x, funcStat_addr=0x%x, container=%d)", version, dirName.addr(), errDialog, funcStat.addr(), container); @@ -307,7 +307,7 @@ int cellGameDataCheckCreate2(PPUThread& CPU, u32 version, vm::ptr di } int cellGameDataCheckCreate(PPUThread& CPU, u32 version, vm::ptr dirName, u32 errDialog, - vm::ptr cbResult, vm::ptr get, vm::ptr set)> funcStat, u32 container) + vm::ptr cbResult, vm::ptr get, vm::ptr set)> funcStat, u32 container) { // TODO: almost identical, the only difference is that this function will always calculate the size of game data return cellGameDataCheckCreate2(CPU, version, dirName, errDialog, funcStat, container); diff --git a/rpcs3/Emu/SysCalls/Modules/cellGcmSys.cpp b/rpcs3/Emu/SysCalls/Modules/cellGcmSys.cpp index f91f4cb1c6..908012920c 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellGcmSys.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellGcmSys.cpp @@ -125,12 +125,8 @@ u32 cellGcmGetNotifyDataAddress(u32 index) { cellGcmSys->Warning("cellGcmGetNotifyDataAddress(index=%d)", index); - // Get address of 'IO table' and 'EA table' - vm::var table; - cellGcmGetOffsetTable(table); - // If entry not in use, return NULL - u16 entry = table->eaAddress[241]; + u16 entry = offsetTable.eaAddress[241]; if (entry == 0xFFFF) { return 0; } @@ -455,7 +451,7 @@ int cellGcmSetFlip(vm::ptr ctxt, u32 id) return res < 0 ? CELL_GCM_ERROR_FAILURE : CELL_OK; } -void cellGcmSetFlipHandler(vm::ptr handler) +void cellGcmSetFlipHandler(vm::ptr handler) { cellGcmSys->Warning("cellGcmSetFlipHandler(handler_addr=%d)", handler.addr()); @@ -596,14 +592,14 @@ int cellGcmSetTileInfo(u8 index, u8 location, u32 offset, u32 size, u32 pitch, u return CELL_OK; } -void cellGcmSetUserHandler(vm::ptr handler) +void cellGcmSetUserHandler(vm::ptr handler) { cellGcmSys->Warning("cellGcmSetUserHandler(handler_addr=0x%x)", handler.addr()); Emu.GetGSManager().GetRender().m_user_handler = handler; } -void cellGcmSetVBlankHandler(vm::ptr handler) +void cellGcmSetVBlankHandler(vm::ptr handler) { cellGcmSys->Warning("cellGcmSetVBlankHandler(handler_addr=0x%x)", handler.addr()); @@ -1191,7 +1187,7 @@ s32 cellGcmCallback(vm::ptr context, u32 count) //auto& ctrl = vm::get_ref(gcm_info.control_addr); // preparations for changing the place (for optimized FIFO mode) - //auto cmd = vm::ptr::make(context->current.ToLE()); + //auto cmd = vm::ptr::make(context->current); //cmd[0] = 0x41D6C; //cmd[1] = 0x20; //cmd[2] = 0x41D74; @@ -1207,7 +1203,7 @@ s32 cellGcmCallback(vm::ptr context, u32 count) vm::write32(context->current, CELL_GCM_METHOD_FLAG_JUMP | offset); // set JUMP cmd auto& ctrl = vm::get_ref(gcm_info.control_addr); - ctrl.put.write_relaxed(be_t::make(offset)); + ctrl.put.exchange(be_t::make(offset)); } else { diff --git a/rpcs3/Emu/SysCalls/Modules/cellMsgDialog.h b/rpcs3/Emu/SysCalls/Modules/cellMsgDialog.h index 4b76eb975c..3ce4d78e0b 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellMsgDialog.h +++ b/rpcs3/Emu/SysCalls/Modules/cellMsgDialog.h @@ -79,7 +79,7 @@ enum CELL_MSGDIALOG_BUTTON_ESCAPE = 3, }; -typedef void(*CellMsgDialogCallback)(s32 buttonType, u32 userData); +typedef void(CellMsgDialogCallback)(s32 buttonType, u32 userData); s32 cellMsgDialogOpen2(u32 type, vm::ptr msgString, vm::ptr callback, u32 userData, u32 extParam); s32 cellMsgDialogOpenErrorCode(u32 errorCode, vm::ptr callback, u32 userData, u32 extParam); diff --git a/rpcs3/Emu/SysCalls/Modules/cellNetCtl.h b/rpcs3/Emu/SysCalls/Modules/cellNetCtl.h index 4cb89a6962..a09167848e 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellNetCtl.h +++ b/rpcs3/Emu/SysCalls/Modules/cellNetCtl.h @@ -224,7 +224,7 @@ union CellNetCtlInfo be_t ip_config; s8 dhcp_hostname[256]; s8 pppoe_auth_name[128]; - s8 ip_address[16]; + char ip_address[16]; s8 netmask[16]; s8 default_route[16]; s8 primary_dns[16]; @@ -257,4 +257,4 @@ struct CellNetCtlNatInfo be_t mapped_addr; }; -typedef void(*cellNetCtlHandler)(s32 prev_state, s32 new_state, s32 event, s32 error_code, vm::ptr arg); +typedef void(cellNetCtlHandler)(s32 prev_state, s32 new_state, s32 event, s32 error_code, vm::ptr arg); diff --git a/rpcs3/Emu/SysCalls/Modules/cellPngDec.h b/rpcs3/Emu/SysCalls/Modules/cellPngDec.h index e0a5473584..86170f7508 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellPngDec.h +++ b/rpcs3/Emu/SysCalls/Modules/cellPngDec.h @@ -87,8 +87,8 @@ enum CellPngDecDecodeStatus : u32 }; // Callbacks -typedef vm::ptr(*CellPngDecCbControlMalloc)(u32 size, vm::ptr cbCtrlMallocArg); -typedef s32(*CellPngDecCbControlFree)(vm::ptr ptr, vm::ptr cbCtrlFreeArg); +typedef vm::ptr(CellPngDecCbControlMalloc)(u32 size, vm::ptr cbCtrlMallocArg); +typedef s32(CellPngDecCbControlFree)(vm::ptr ptr, vm::ptr cbCtrlFreeArg); // Structs struct CellPngDecThreadInParam @@ -283,11 +283,7 @@ struct CellPngDecStrmParam be_t strmSize; }; -typedef s32(*CellPngDecCbControlStream)( - vm::ptr strmInfo, - vm::ptr strmParam, - vm::ptr cbCtrlStrmArg - ); +typedef s32(CellPngDecCbControlStream)(vm::ptr strmInfo, vm::ptr strmParam, vm::ptr cbCtrlStrmArg); struct CellPngDecDispInfo { @@ -310,7 +306,7 @@ struct CellPngDecDispParam }; // Callback -typedef s32(*CellPngDecCbControlDisp)(vm::ptr dispInfo, vm::ptr dispParam, vm::ptr cbCtrlDispArg); +typedef s32(CellPngDecCbControlDisp)(vm::ptr dispInfo, vm::ptr dispParam, vm::ptr cbCtrlDispArg); // Structs struct CellPngDecOpnParam diff --git a/rpcs3/Emu/SysCalls/Modules/cellResc.cpp b/rpcs3/Emu/SysCalls/Modules/cellResc.cpp index 7cf2717bea..d10da00a1f 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellResc.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellResc.cpp @@ -12,8 +12,8 @@ Module *cellResc = nullptr; extern s32 cellVideoOutConfigure(u32 videoOut, vm::ptr config, vm::ptr option, u32 waitForEvent); extern int cellGcmSetFlipMode(u32 mode); -extern void cellGcmSetFlipHandler(vm::ptr handler); -extern void cellGcmSetVBlankHandler(vm::ptr handler); +extern void cellGcmSetFlipHandler(vm::ptr handler); +extern void cellGcmSetVBlankHandler(vm::ptr handler); extern int cellGcmAddressToOffset(u64 address, vm::ptr> offset); extern int cellGcmSetDisplayBuffer(u32 id, u32 offset, u32 pitch, u32 width, u32 height); extern int cellGcmSetPrepareFlip(vm::ptr ctx, u32 id); @@ -603,7 +603,7 @@ void cellRescExit() if (IsPalTemporal()) { cellGcmSetSecondVFrequency(CELL_GCM_DISPLAY_FREQUENCY_DISABLE); - cellGcmSetVBlankHandler(vm::ptr::make(0)); + cellGcmSetVBlankHandler(vm::ptr::make(0)); //GcmSysTypePrefix::cellGcmSetSecondVHandler(NULL); if (IsPalInterpolate()) @@ -667,7 +667,7 @@ int cellRescSetDsts(u32 dstsMode, vm::ptr dsts) return CELL_OK; } -void SetVBlankHandler(vm::ptr handler) +void SetVBlankHandler(vm::ptr handler) { if (!s_rescInternalInstance->m_bInitialized || s_rescInternalInstance->m_dstMode == 0) { @@ -693,7 +693,7 @@ void SetVBlankHandler(vm::ptr handler) } -void SetFlipHandler(vm::ptr handler) +void SetFlipHandler(vm::ptr handler) { if (!s_rescInternalInstance->m_bInitialized || s_rescInternalInstance->m_dstMode == 0) { @@ -780,20 +780,20 @@ int cellRescSetDisplayMode(u32 displayMode) cellGcmSetSecondVFrequency(CELL_GCM_DISPLAY_FREQUENCY_59_94HZ); //cellGcmSetVBlankHandler(IntrHandler50); //cellGcmSetSecondVHandler(IntrHandler60); - cellGcmSetFlipHandler(vm::ptr::make(0)); + cellGcmSetFlipHandler(vm::ptr::make(0)); } else if (IsPalDrop()) { //InitLabels(); cellGcmSetSecondVFrequency(CELL_GCM_DISPLAY_FREQUENCY_59_94HZ); - cellGcmSetVBlankHandler(vm::ptr::make(0)); + cellGcmSetVBlankHandler(vm::ptr::make(0)); //cellGcmSetSecondVHandler(IntrHandler60Drop); - cellGcmSetFlipHandler(vm::ptr::make(0)); + cellGcmSetFlipHandler(vm::ptr::make(0)); } else if (IsPal60Hsync()) { cellGcmSetSecondVFrequency(CELL_GCM_DISPLAY_FREQUENCY_59_94HZ); - cellGcmSetVBlankHandler(vm::ptr::make(0)); + cellGcmSetVBlankHandler(vm::ptr::make(0)); } if (s_rescInternalInstance->s_applicationVBlankHandler) SetVBlankHandler(s_rescInternalInstance->s_applicationVBlankHandler); @@ -1073,7 +1073,7 @@ int cellRescSetBufferAddress(vm::ptr colorBuffers, vm::ptr vertexArray return CELL_OK; } -void cellRescSetFlipHandler(vm::ptr handler) +void cellRescSetFlipHandler(vm::ptr handler) { cellResc->Warning("cellRescSetFlipHandler(handler_addr=0x%x)", handler.addr()); @@ -1113,7 +1113,7 @@ int cellRescSetRegisterCount() return CELL_OK; } -void cellRescSetVBlankHandler(vm::ptr handler) +void cellRescSetVBlankHandler(vm::ptr handler) { cellResc->Warning("cellRescSetVBlankHandler(handler_addr=0x%x)", handler.addr()); diff --git a/rpcs3/Emu/SysCalls/Modules/cellResc.h b/rpcs3/Emu/SysCalls/Modules/cellResc.h index 74a7652397..a2d577a061 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellResc.h +++ b/rpcs3/Emu/SysCalls/Modules/cellResc.h @@ -137,8 +137,8 @@ struct CCellRescInternal bool m_isDummyFlipped; u8 m_cgParamIndex[RESC_PARAM_NUM]; u64 m_commandIdxCaF, m_rcvdCmdIdx; - vm::ptr s_applicationFlipHandler; - vm::ptr s_applicationVBlankHandler; + vm::ptr s_applicationFlipHandler; + vm::ptr s_applicationVBlankHandler; CCellRescInternal() : m_bInitialized(false) diff --git a/rpcs3/Emu/SysCalls/Modules/cellSail.h b/rpcs3/Emu/SysCalls/Modules/cellSail.h index d0244fed6d..3f77c94d98 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellSail.h +++ b/rpcs3/Emu/SysCalls/Modules/cellSail.h @@ -618,64 +618,64 @@ union CellSailEvent }; }; -typedef u32(*CellSailMemAllocatorFuncAlloc)(u32 pArg, u32 boundary, u32 size); -typedef u32(*CellSailMemAllocatorFuncFree)(u32 pArg, u32 boundary, u32 pMemory); +typedef u32(CellSailMemAllocatorFuncAlloc)(u32 pArg, u32 boundary, u32 size); +typedef u32(CellSailMemAllocatorFuncFree)(u32 pArg, u32 boundary, u32 pMemory); -typedef int(*CellSailSoundAdapterFuncMakeup)(u32 pArg); -typedef int(*CellSailSoundAdapterFuncCleanup)(u32 pArg); -typedef void(*CellSailSoundAdapterFuncFormatChanged)(u32 pArg, vm::ptr pFormat, u32 sessionId); +typedef int(CellSailSoundAdapterFuncMakeup)(u32 pArg); +typedef int(CellSailSoundAdapterFuncCleanup)(u32 pArg); +typedef void(CellSailSoundAdapterFuncFormatChanged)(u32 pArg, vm::ptr pFormat, u32 sessionId); -typedef int(*CellSailGraphicsAdapterFuncMakeup)(u32 pArg); -typedef int(*CellSailGraphicsAdapterFuncCleanup)(u32 pArg); -typedef void(*CellSailGraphicsAdapterFuncFormatChanged)(u32 pArg, vm::ptr pFormat, u32 sessionId); -typedef int(*CellSailGraphicsAdapterFuncAllocFrame)(u32 pArg, u32 size, s32 num, u8 ppFrame); -typedef int(*CellSailGraphicsAdapterFuncFreeFrame)(u32 pArg, s32 num, u8 ppFrame); +typedef int(CellSailGraphicsAdapterFuncMakeup)(u32 pArg); +typedef int(CellSailGraphicsAdapterFuncCleanup)(u32 pArg); +typedef void(CellSailGraphicsAdapterFuncFormatChanged)(u32 pArg, vm::ptr pFormat, u32 sessionId); +typedef int(CellSailGraphicsAdapterFuncAllocFrame)(u32 pArg, u32 size, s32 num, u8 ppFrame); +typedef int(CellSailGraphicsAdapterFuncFreeFrame)(u32 pArg, s32 num, u8 ppFrame); -typedef int(*CellSailSourceFuncMakeup)(u32 pArg, s8 pProtocolNames); -typedef int(*CellSailSourceFuncCleanup)(u32 pArg); -typedef void(*CellSailSourceFuncOpen)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, vm::ptr pProfile); -typedef void(*CellSailSourceFuncClose)(u32 pArg); -typedef void(*CellSailSourceFuncStart)(u32 pArg, vm::ptr pCommand, u32 sessionId); -typedef void(*CellSailSourceFuncStop)(u32 pArg); -typedef void(*CellSailSourceFuncCancel)(u32 pArg); -typedef int(*CellSailSourceFuncCheckout)(u32 pArg, vm::ptr ppItem); -typedef int(*CellSailSourceFuncCheckin)(u32 pArg, vm::ptr pItem); -typedef int(*CellSailSourceFuncClear)(u32 pArg); -typedef int(*CellSailSourceFuncRead)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, u64 offset, u8 pBuf, u32 size, u64 pTotalSize); -typedef int(*CellSailSourceFuncReadSync)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, u64 offset, u8 pBuf, u32 size, u64 pTotalSize); -typedef int(*CellSailSourceFuncGetCapabilities)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, u64 pCapabilities); -typedef int(*CellSailSourceFuncInquireCapability)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, vm::ptr pCommand); -typedef void(*CellSailSourceCheckFuncError)(u32 pArg, s8 pMsg, s32 line); +typedef int(CellSailSourceFuncMakeup)(u32 pArg, s8 pProtocolNames); +typedef int(CellSailSourceFuncCleanup)(u32 pArg); +typedef void(CellSailSourceFuncOpen)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, vm::ptr pProfile); +typedef void(CellSailSourceFuncClose)(u32 pArg); +typedef void(CellSailSourceFuncStart)(u32 pArg, vm::ptr pCommand, u32 sessionId); +typedef void(CellSailSourceFuncStop)(u32 pArg); +typedef void(CellSailSourceFuncCancel)(u32 pArg); +typedef int(CellSailSourceFuncCheckout)(u32 pArg, vm::ptr ppItem); +typedef int(CellSailSourceFuncCheckin)(u32 pArg, vm::ptr pItem); +typedef int(CellSailSourceFuncClear)(u32 pArg); +typedef int(CellSailSourceFuncRead)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, u64 offset, u8 pBuf, u32 size, u64 pTotalSize); +typedef int(CellSailSourceFuncReadSync)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, u64 offset, u8 pBuf, u32 size, u64 pTotalSize); +typedef int(CellSailSourceFuncGetCapabilities)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, u64 pCapabilities); +typedef int(CellSailSourceFuncInquireCapability)(u32 pArg, s32 streamType, u32 pMediaInfo, s8 pUri, vm::ptr pCommand); +typedef void(CellSailSourceCheckFuncError)(u32 pArg, s8 pMsg, s32 line); -typedef int(*CellSailFsFuncOpen)(s8 pPath, s32 flag, s32 pFd, u32 pArg, u64 size); -typedef int(*CellSailFsFuncOpenSecond)(s8 pPath, s32 flag, s32 fd, u32 pArg, u64 size); -typedef int(*CellSailFsFuncClose)(s32 fd); -typedef int(*CellSailFsFuncFstat)(s32 fd, u32 pStat_addr); -typedef int(*CellSailFsFuncRead)(s32 fd, u32 pBuf, u64 numBytes, u64 pNumRead); -typedef int(*CellSailFsFuncLseek)(s32 fd, s64 offset, s32 whence, u64 pPosition); -typedef int(*CellSailFsFuncCancel)(s32 fd); +typedef int(CellSailFsFuncOpen)(s8 pPath, s32 flag, s32 pFd, u32 pArg, u64 size); +typedef int(CellSailFsFuncOpenSecond)(s8 pPath, s32 flag, s32 fd, u32 pArg, u64 size); +typedef int(CellSailFsFuncClose)(s32 fd); +typedef int(CellSailFsFuncFstat)(s32 fd, u32 pStat_addr); +typedef int(CellSailFsFuncRead)(s32 fd, u32 pBuf, u64 numBytes, u64 pNumRead); +typedef int(CellSailFsFuncLseek)(s32 fd, s64 offset, s32 whence, u64 pPosition); +typedef int(CellSailFsFuncCancel)(s32 fd); -typedef int(*CellSailRendererAudioFuncMakeup)(u32 pArg); -typedef int(*CellSailRendererAudioFuncCleanup)(u32 pArg); -typedef void(*CellSailRendererAudioFuncOpen)(u32 pArg, vm::ptr pInfo, u32 frameNum); -typedef void(*CellSailRendererAudioFuncClose)(u32 pArg); -typedef void(*CellSailRendererAudioFuncStart)(u32 pArg, bool buffering); -typedef void(*CellSailRendererAudioFuncStop)(u32 pArg, bool flush); -typedef void(*CellSailRendererAudioFuncCancel)(u32 pArg); -typedef int(*CellSailRendererAudioFuncCheckout)(u32 pArg, vm::ptr ppInfo); -typedef int(*CellSailRendererAudioFuncCheckin)(u32 pArg, vm::ptr pInfo); +typedef int(CellSailRendererAudioFuncMakeup)(u32 pArg); +typedef int(CellSailRendererAudioFuncCleanup)(u32 pArg); +typedef void(CellSailRendererAudioFuncOpen)(u32 pArg, vm::ptr pInfo, u32 frameNum); +typedef void(CellSailRendererAudioFuncClose)(u32 pArg); +typedef void(CellSailRendererAudioFuncStart)(u32 pArg, bool buffering); +typedef void(CellSailRendererAudioFuncStop)(u32 pArg, bool flush); +typedef void(CellSailRendererAudioFuncCancel)(u32 pArg); +typedef int(CellSailRendererAudioFuncCheckout)(u32 pArg, vm::ptr ppInfo); +typedef int(CellSailRendererAudioFuncCheckin)(u32 pArg, vm::ptr pInfo); -typedef int(*CellSailRendererVideoFuncMakeup)(u32 pArg); -typedef int(*CellSailRendererVideoFuncCleanup)(u32 pArg); -typedef void(*CellSailRendererVideoFuncOpen)(u32 pArg, vm::ptr pInfo, u32 frameNum, u32 minFrameNum); -typedef void(*CellSailRendererVideoFuncClose)(u32 pArg); -typedef void(*CellSailRendererVideoFuncStart)(u32 pArg, bool buffering); -typedef void(*CellSailRendererVideoFuncStop)(u32 pArg, bool flush, bool keepRendering); -typedef void(*CellSailRendererVideoFuncCancel)(u32 pArg); -typedef int(*CellSailRendererVideoFuncCheckout)(u32 pArg, vm::ptr ppInfo); -typedef int(*CellSailRendererVideoFuncCheckin)(u32 pArg, vm::ptr pInfo); +typedef int(CellSailRendererVideoFuncMakeup)(u32 pArg); +typedef int(CellSailRendererVideoFuncCleanup)(u32 pArg); +typedef void(CellSailRendererVideoFuncOpen)(u32 pArg, vm::ptr pInfo, u32 frameNum, u32 minFrameNum); +typedef void(CellSailRendererVideoFuncClose)(u32 pArg); +typedef void(CellSailRendererVideoFuncStart)(u32 pArg, bool buffering); +typedef void(CellSailRendererVideoFuncStop)(u32 pArg, bool flush, bool keepRendering); +typedef void(CellSailRendererVideoFuncCancel)(u32 pArg); +typedef int(CellSailRendererVideoFuncCheckout)(u32 pArg, vm::ptr ppInfo); +typedef int(CellSailRendererVideoFuncCheckin)(u32 pArg, vm::ptr pInfo); -typedef void(*CellSailPlayerFuncNotified)(u32 pArg, vm::ptr event, u64 arg0, u64 arg1); +typedef void(CellSailPlayerFuncNotified)(u32 pArg, vm::ptr event, u64 arg0, u64 arg1); struct CellSailMemAllocatorFuncs { diff --git a/rpcs3/Emu/SysCalls/Modules/cellSaveData.h b/rpcs3/Emu/SysCalls/Modules/cellSaveData.h index 3daa006334..48a7f0c60f 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellSaveData.h +++ b/rpcs3/Emu/SysCalls/Modules/cellSaveData.h @@ -256,11 +256,11 @@ struct CellSaveDataDoneGet // Callback Functions -typedef void(*CellSaveDataFixedCallback)(vm::ptr cbResult, vm::ptr get, vm::ptr set); -typedef void(*CellSaveDataListCallback)(vm::ptr cbResult, vm::ptr get, vm::ptr set); -typedef void(*CellSaveDataStatCallback)(vm::ptr cbResult, vm::ptr get, vm::ptr set); -typedef void(*CellSaveDataFileCallback)(vm::ptr cbResult, vm::ptr get, vm::ptr set); -typedef void(*CellSaveDataDoneCallback)(vm::ptr cbResult, vm::ptr get); +typedef void(CellSaveDataFixedCallback)(vm::ptr cbResult, vm::ptr get, vm::ptr set); +typedef void(CellSaveDataListCallback)(vm::ptr cbResult, vm::ptr get, vm::ptr set); +typedef void(CellSaveDataStatCallback)(vm::ptr cbResult, vm::ptr get, vm::ptr set); +typedef void(CellSaveDataFileCallback)(vm::ptr cbResult, vm::ptr get, vm::ptr set); +typedef void(CellSaveDataDoneCallback)(vm::ptr cbResult, vm::ptr get); // Auxiliary Structs diff --git a/rpcs3/Emu/SysCalls/Modules/cellSpurs.h b/rpcs3/Emu/SysCalls/Modules/cellSpurs.h index 6291ffb3c4..64be4a99cb 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellSpurs.h +++ b/rpcs3/Emu/SysCalls/Modules/cellSpurs.h @@ -206,7 +206,7 @@ struct CellSpursWorkloadFlag atomic_t flag; }; -typedef void(*CellSpursShutdownCompletionEventHook)(vm::ptr, u32 wid, vm::ptr arg); +typedef void(CellSpursShutdownCompletionEventHook)(vm::ptr, u32 wid, vm::ptr arg); // Core CellSpurs structures struct CellSpurs diff --git a/rpcs3/Emu/SysCalls/Modules/cellSync.cpp b/rpcs3/Emu/SysCalls/Modules/cellSync.cpp index 0c372e82e8..57ddf51598 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellSync.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellSync.cpp @@ -1262,7 +1262,7 @@ s32 syncLFQueueCompletePushPointer(vm::ptr queue, s32 pointer, } } -s32 _cellSyncLFQueueCompletePushPointer(vm::ptr queue, s32 pointer, vm::ptr fpSendSignal) +s32 _cellSyncLFQueueCompletePushPointer(vm::ptr queue, s32 pointer, vm::ptr fpSendSignal) { cellSync->Todo("_cellSyncLFQueueCompletePushPointer(queue_addr=0x%x, pointer=%d, fpSendSignal_addr=0x%x)", queue.addr(), pointer, fpSendSignal.addr()); @@ -1278,7 +1278,7 @@ s32 syncLFQueueCompletePushPointer2(vm::ptr queue, s32 pointer, return CELL_OK; } -s32 _cellSyncLFQueueCompletePushPointer2(vm::ptr queue, s32 pointer, vm::ptr fpSendSignal) +s32 _cellSyncLFQueueCompletePushPointer2(vm::ptr queue, s32 pointer, vm::ptr fpSendSignal) { // arguments copied from _cellSyncLFQueueCompletePushPointer cellSync->Todo("_cellSyncLFQueueCompletePushPointer2(queue_addr=0x%x, pointer=%d, fpSendSignal_addr=0x%x)", @@ -1638,7 +1638,7 @@ s32 syncLFQueueCompletePopPointer(vm::ptr queue, s32 pointer, c } } -s32 _cellSyncLFQueueCompletePopPointer(vm::ptr queue, s32 pointer, vm::ptr fpSendSignal, u32 noQueueFull) +s32 _cellSyncLFQueueCompletePopPointer(vm::ptr queue, s32 pointer, vm::ptr fpSendSignal, u32 noQueueFull) { // arguments copied from _cellSyncLFQueueCompletePushPointer + unknown argument (noQueueFull taken from LFQueue2CompletePopPointer) cellSync->Todo("_cellSyncLFQueueCompletePopPointer(queue_addr=0x%x, pointer=%d, fpSendSignal_addr=0x%x, noQueueFull=%d)", @@ -1655,7 +1655,7 @@ s32 syncLFQueueCompletePopPointer2(vm::ptr queue, s32 pointer, return CELL_OK; } -s32 _cellSyncLFQueueCompletePopPointer2(vm::ptr queue, s32 pointer, vm::ptr fpSendSignal, u32 noQueueFull) +s32 _cellSyncLFQueueCompletePopPointer2(vm::ptr queue, s32 pointer, vm::ptr fpSendSignal, u32 noQueueFull) { // arguments copied from _cellSyncLFQueueCompletePopPointer cellSync->Todo("_cellSyncLFQueueCompletePopPointer2(queue_addr=0x%x, pointer=%d, fpSendSignal_addr=0x%x, noQueueFull=%d)", diff --git a/rpcs3/Emu/SysCalls/Modules/cellSysutil.cpp b/rpcs3/Emu/SysCalls/Modules/cellSysutil.cpp index 33059ed1aa..99555c70cf 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellSysutil.cpp +++ b/rpcs3/Emu/SysCalls/Modules/cellSysutil.cpp @@ -19,7 +19,7 @@ #include "cellGame.h" #include "cellSysutil.h" -typedef void (*CellHddGameStatCallback)(vm::ptr cbResult, vm::ptr get, vm::ptr set); +typedef void (CellHddGameStatCallback)(vm::ptr cbResult, vm::ptr get, vm::ptr set); Module *cellSysutil = nullptr; @@ -835,10 +835,10 @@ int cellWebBrowserEstimate2(const vm::ptr config, v } extern int cellGameDataCheckCreate2(PPUThread& CPU, u32 version, vm::ptr dirName, u32 errDialog, - vm::ptr cbResult, vm::ptr get, vm::ptr set)> funcStat, u32 container); + vm::ptr cbResult, vm::ptr get, vm::ptr set)> funcStat, u32 container); extern int cellGameDataCheckCreate(PPUThread& CPU, u32 version, vm::ptr dirName, u32 errDialog, - vm::ptr cbResult, vm::ptr get, vm::ptr set)> funcStat, u32 container); + vm::ptr cbResult, vm::ptr get, vm::ptr set)> funcStat, u32 container); extern void cellSysutil_SaveData_init(); diff --git a/rpcs3/Emu/SysCalls/Modules/cellSysutil.h b/rpcs3/Emu/SysCalls/Modules/cellSysutil.h index 7b8c4fb8d6..7554b95bf1 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellSysutil.h +++ b/rpcs3/Emu/SysCalls/Modules/cellSysutil.h @@ -78,7 +78,7 @@ enum CELL_SYSUTIL_SYSCHAT_VOICE_STREAMING_PAUSED = 0x0164, }; -typedef void(*CellSysutilCallback)(u64 status, u64 param, vm::ptr userdata); +typedef void(CellSysutilCallback)(u64 status, u64 param, vm::ptr userdata); void sysutilSendSystemCommand(u64 status, u64 param); @@ -238,16 +238,16 @@ struct CellHddGameCBResult }; typedef s32 CellWebBrowserId; -typedef void* CellWebBrowserClientSession; -typedef void(*CellWebBrowserCallback)(s32 cb_type, vm::ptr, vm::ptr usrdata); -typedef void(*CellWebComponentCallback)(CellWebBrowserId, s32 cb_type, vm::ptr, vm::ptr usrdata); -typedef void(*CellWebBrowserSystemCallback)(s32 cb_type, vm::ptr usrdata); +typedef vm::ptr CellWebBrowserClientSession; +typedef void(CellWebBrowserCallback)(s32 cb_type, CellWebBrowserClientSession, vm::ptr usrdata); +typedef void(CellWebComponentCallback)(CellWebBrowserId, s32 cb_type, CellWebBrowserClientSession, vm::ptr usrdata); +typedef void(CellWebBrowserSystemCallback)(s32 cb_type, vm::ptr usrdata); -typedef void(*CellWebBrowserMIMETypeCallback)(vm::ptr mimetype, vm::ptr url, vm::ptr usrdata); -typedef void(*CellWebBrowserErrorCallback)(s32 err_type, vm::ptr usrdata); -typedef void(*CellWebBrowserStatusCallback)(s32 err_type, vm::ptr usrdata); -typedef void(*CellWebBrowserNotify)(vm::ptr message, vm::ptr usrdata); -typedef void(*CellWebBrowserUsrdata)(vm::ptr usrdata); +typedef void(CellWebBrowserMIMETypeCallback)(vm::ptr mimetype, vm::ptr url, vm::ptr usrdata); +typedef void(CellWebBrowserErrorCallback)(s32 err_type, vm::ptr usrdata); +typedef void(CellWebBrowserStatusCallback)(s32 err_type, vm::ptr usrdata); +typedef void(CellWebBrowserNotify)(vm::ptr message, vm::ptr usrdata); +typedef void(CellWebBrowserUsrdata)(vm::ptr usrdata); struct CellWebBrowserMimeSet { diff --git a/rpcs3/Emu/SysCalls/Modules/cellVdec.h b/rpcs3/Emu/SysCalls/Modules/cellVdec.h index e53955e70e..4770a10d13 100644 --- a/rpcs3/Emu/SysCalls/Modules/cellVdec.h +++ b/rpcs3/Emu/SysCalls/Modules/cellVdec.h @@ -163,7 +163,7 @@ struct CellVdecPicFormat u8 alpha; }; -typedef u32(*CellVdecCbMsg)(u32 handle, CellVdecMsgType msgType, s32 msgData, u32 cbArg); +typedef u32(CellVdecCbMsg)(u32 handle, CellVdecMsgType msgType, s32 msgData, u32 cbArg); // Callback Function Information struct CellVdecCb diff --git a/rpcs3/Emu/SysCalls/Modules/libmixer.h b/rpcs3/Emu/SysCalls/Modules/libmixer.h index 9a7978f9a5..b2f0a19dcd 100644 --- a/rpcs3/Emu/SysCalls/Modules/libmixer.h +++ b/rpcs3/Emu/SysCalls/Modules/libmixer.h @@ -110,7 +110,7 @@ enum CELL_SSPLAYER_STATE_ON = 0x20, }; -typedef s32(*CellSurMixerNotifyCallbackFunction)(vm::ptr arg, u32 counter, u32 samples); +typedef s32(CellSurMixerNotifyCallbackFunction)(vm::ptr arg, u32 counter, u32 samples); struct CellSSPlayerConfig { diff --git a/rpcs3/Emu/SysCalls/Modules/sceNpTrophy.h b/rpcs3/Emu/SysCalls/Modules/sceNpTrophy.h index 4fee4d990c..bcb857cc04 100644 --- a/rpcs3/Emu/SysCalls/Modules/sceNpTrophy.h +++ b/rpcs3/Emu/SysCalls/Modules/sceNpTrophy.h @@ -134,4 +134,4 @@ enum SCE_NP_TROPHY_STATUS_CHANGES_DETECTED = 9, }; -typedef s32 (*SceNpTrophyStatusCallback)(u32 context, u32 status, s32 completed, s32 total, u32 arg_addr); +typedef s32 (SceNpTrophyStatusCallback)(u32 context, u32 status, s32 completed, s32 total, u32 arg_addr); diff --git a/rpcs3/Emu/SysCalls/Modules/sysPrxForUser.h b/rpcs3/Emu/SysCalls/Modules/sysPrxForUser.h index 8c020f3ecc..76234c5c4b 100644 --- a/rpcs3/Emu/SysCalls/Modules/sysPrxForUser.h +++ b/rpcs3/Emu/SysCalls/Modules/sysPrxForUser.h @@ -14,7 +14,7 @@ struct HeapInfo } }; -typedef s32(*spu_printf_cb_t)(u32 arg); +typedef s32(spu_printf_cb_t)(u32 arg); // Aux extern vm::ptr spu_printf_agcb; diff --git a/rpcs3/Emu/SysCalls/lv2/cellFs.cpp b/rpcs3/Emu/SysCalls/lv2/cellFs.cpp index 79df2eece7..218221deab 100644 --- a/rpcs3/Emu/SysCalls/lv2/cellFs.cpp +++ b/rpcs3/Emu/SysCalls/lv2/cellFs.cpp @@ -738,7 +738,7 @@ s32 cellFsStReadWait(u32 fd, u64 size) return CELL_OK; } -s32 cellFsStReadWaitCallback(u32 fd, u64 size, vm::ptr func) +s32 cellFsStReadWaitCallback(u32 fd, u64 size, vm::ptr func) { sys_fs->Todo("cellFsStReadWaitCallback(fd=0x%x, size=0x%llx, func=0x%x)", fd, size, func); @@ -886,7 +886,7 @@ std::atomic g_FsAioReadID(0); std::atomic g_FsAioReadCur(0); bool aio_init = false; -void fsAioRead(u32 fd, vm::ptr aio, int xid, vm::ptr xaio, int error, int xid, u64 size)> func) +void fsAioRead(u32 fd, vm::ptr aio, int xid, vm::ptr xaio, int error, int xid, u64 size)> func) { while (g_FsAioReadCur != xid) { @@ -941,7 +941,7 @@ void fsAioRead(u32 fd, vm::ptr aio, int xid, vm::ptr aio, vm::ptr id, vm::ptr xaio, s32 error, s32 xid, u64 size)> func) +s32 cellFsAioRead(vm::ptr aio, vm::ptr id, vm::ptr xaio, s32 error, s32 xid, u64 size)> func) { sys_fs->Warning("cellFsAioRead(aio=0x%x, id=0x%x, func=0x%x)", aio, id, func); @@ -966,7 +966,7 @@ s32 cellFsAioRead(vm::ptr aio, vm::ptr id, vm::ptr aio, vm::ptr id, vm::ptr xaio, s32 error, s32 xid, u64 size)> func) +s32 cellFsAioWrite(vm::ptr aio, vm::ptr id, vm::ptr xaio, s32 error, s32 xid, u64 size)> func) { sys_fs->Todo("cellFsAioWrite(aio=0x%x, id=0x%x, func=0x%x)", aio, id, func); diff --git a/rpcs3/Emu/SysCalls/lv2/sys_ppu_thread.cpp b/rpcs3/Emu/SysCalls/lv2/sys_ppu_thread.cpp index 9a7e1768bc..b182ecd4b5 100644 --- a/rpcs3/Emu/SysCalls/lv2/sys_ppu_thread.cpp +++ b/rpcs3/Emu/SysCalls/lv2/sys_ppu_thread.cpp @@ -210,10 +210,12 @@ s32 sys_ppu_thread_create(vm::ptr thread_id, u32 entry, u64 arg, s32 prio, return CELL_OK; } -void sys_ppu_thread_once(PPUThread& CPU, vm::ptr> once_ctrl, vm::ptr init) +void sys_ppu_thread_once(PPUThread& CPU, vm::ptr> once_ctrl, vm::ptr init) { sys_ppu_thread.Warning("sys_ppu_thread_once(once_ctrl_addr=0x%x, init_addr=0x%x)", once_ctrl.addr(), init.addr()); + LV2_LOCK(0); + if (once_ctrl->compare_and_swap_test(be_t::make(SYS_PPU_THREAD_ONCE_INIT), be_t::make(SYS_PPU_THREAD_DONE_INIT))) { init(CPU); diff --git a/rpcs3/Emu/SysCalls/lv2/sys_ppu_thread.h b/rpcs3/Emu/SysCalls/lv2/sys_ppu_thread.h index 83fe511b8f..eb3e343b97 100644 --- a/rpcs3/Emu/SysCalls/lv2/sys_ppu_thread.h +++ b/rpcs3/Emu/SysCalls/lv2/sys_ppu_thread.h @@ -30,6 +30,6 @@ s32 sys_ppu_thread_get_stack_information(PPUThread& CPU, u32 info_addr); s32 sys_ppu_thread_stop(u64 thread_id); s32 sys_ppu_thread_restart(u64 thread_id); s32 sys_ppu_thread_create(vm::ptr thread_id, u32 entry, u64 arg, s32 prio, u32 stacksize, u64 flags, vm::ptr threadname); -void sys_ppu_thread_once(PPUThread& CPU, vm::ptr> once_ctrl, vm::ptr init); +void sys_ppu_thread_once(PPUThread& CPU, vm::ptr> once_ctrl, vm::ptr init); s32 sys_ppu_thread_get_id(PPUThread& CPU, vm::ptr thread_id); s32 sys_ppu_thread_rename(u64 thread_id, vm::ptr name); diff --git a/rpcs3/Loader/ELF64.cpp b/rpcs3/Loader/ELF64.cpp index c943495597..b5d9850335 100644 --- a/rpcs3/Loader/ELF64.cpp +++ b/rpcs3/Loader/ELF64.cpp @@ -325,7 +325,7 @@ namespace loader for (auto &e : m.second.exports) { - module->RegisterLLEFunc(e.first, vm::ptr::make(e.second)); + module->RegisterLLEFunc(e.first, vm::ptr::make(e.second)); } } } diff --git a/rpcs3/emucore.vcxproj b/rpcs3/emucore.vcxproj index e70afa794c..9b3c761dde 100644 --- a/rpcs3/emucore.vcxproj +++ b/rpcs3/emucore.vcxproj @@ -285,6 +285,7 @@ + diff --git a/rpcs3/emucore.vcxproj.filters b/rpcs3/emucore.vcxproj.filters index 69e962dbfc..9b46ecec23 100644 --- a/rpcs3/emucore.vcxproj.filters +++ b/rpcs3/emucore.vcxproj.filters @@ -1333,5 +1333,8 @@ Emu\CPU\ARMv7\Objects + + Emu\CPU\ARMv7\Modules + \ No newline at end of file From e508d6db5dc7b50013844bd8dc44851ee08a478d Mon Sep 17 00:00:00 2001 From: Nekotekina Date: Wed, 28 Jan 2015 17:17:12 +0300 Subject: [PATCH 10/10] sceGxm stub --- rpcs3/Emu/ARMv7/Modules/sceGxm.cpp | 1290 ++++++++++++++++++++++++++++ rpcs3/Emu/ARMv7/Modules/sceGxm.h | 1244 +++++++++++++++++++++++++++ rpcs3/Emu/ARMv7/PSVFuncList.cpp | 6 + 3 files changed, 2540 insertions(+) create mode 100644 rpcs3/Emu/ARMv7/Modules/sceGxm.cpp create mode 100644 rpcs3/Emu/ARMv7/Modules/sceGxm.h diff --git a/rpcs3/Emu/ARMv7/Modules/sceGxm.cpp b/rpcs3/Emu/ARMv7/Modules/sceGxm.cpp new file mode 100644 index 0000000000..3614803537 --- /dev/null +++ b/rpcs3/Emu/ARMv7/Modules/sceGxm.cpp @@ -0,0 +1,1290 @@ +#include "stdafx.h" +#include "Emu/System.h" +#include "Emu/ARMv7/PSVFuncList.h" + +#include "sceGxm.h" + +s32 sceGxmInitialize(vm::psv::ptr params) +{ + throw __FUNCTION__; +} + +s32 sceGxmTerminate() +{ + throw __FUNCTION__; +} + +vm::psv::ptr sceGxmGetNotificationRegion() +{ + throw __FUNCTION__; +} + +s32 sceGxmNotificationWait(vm::psv::ptr notification) +{ + throw __FUNCTION__; +} + +s32 sceGxmMapMemory(vm::psv::ptr base, u32 size, SceGxmMemoryAttribFlags attr) +{ + throw __FUNCTION__; +} + +s32 sceGxmUnmapMemory(vm::psv::ptr base) +{ + throw __FUNCTION__; +} + +s32 sceGxmMapVertexUsseMemory(vm::psv::ptr base, u32 size, vm::psv::ptr offset) +{ + throw __FUNCTION__; +} + +s32 sceGxmUnmapVertexUsseMemory(vm::psv::ptr base) +{ + throw __FUNCTION__; +} + +s32 sceGxmMapFragmentUsseMemory(vm::psv::ptr base, u32 size, vm::psv::ptr offset) +{ + throw __FUNCTION__; +} + +s32 sceGxmUnmapFragmentUsseMemory(vm::psv::ptr base) +{ + throw __FUNCTION__; +} + +s32 sceGxmDisplayQueueAddEntry(vm::psv::ptr oldBuffer, vm::psv::ptr newBuffer, vm::psv::ptr callbackData) +{ + throw __FUNCTION__; +} + +s32 sceGxmDisplayQueueFinish() +{ + throw __FUNCTION__; +} + +s32 sceGxmSyncObjectCreate(vm::psv::ptr> syncObject) +{ + throw __FUNCTION__; +} + +s32 sceGxmSyncObjectDestroy(vm::psv::ptr syncObject) +{ + throw __FUNCTION__; +} + + +s32 sceGxmCreateContext(vm::psv::ptr params, vm::psv::ptr> context) +{ + throw __FUNCTION__; +} + +s32 sceGxmDestroyContext(vm::psv::ptr context) +{ + throw __FUNCTION__; +} + +void sceGxmSetValidationEnable(vm::psv::ptr context, bool enable) +{ + throw __FUNCTION__; +} + + +void sceGxmSetVertexProgram(vm::psv::ptr context, vm::psv::ptr vertexProgram) +{ + throw __FUNCTION__; +} + +void sceGxmSetFragmentProgram(vm::psv::ptr context, vm::psv::ptr fragmentProgram) +{ + throw __FUNCTION__; +} + +s32 sceGxmReserveVertexDefaultUniformBuffer(vm::psv::ptr context, vm::psv::ptr> uniformBuffer) +{ + throw __FUNCTION__; +} + +s32 sceGxmReserveFragmentDefaultUniformBuffer(vm::psv::ptr context, vm::psv::ptr> uniformBuffer) +{ + throw __FUNCTION__; +} + +s32 sceGxmSetVertexStream(vm::psv::ptr context, u32 streamIndex, vm::psv::ptr streamData) +{ + throw __FUNCTION__; +} + +s32 sceGxmSetVertexTexture(vm::psv::ptr context, u32 textureIndex, vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmSetFragmentTexture(vm::psv::ptr context, u32 textureIndex, vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmSetVertexUniformBuffer(vm::psv::ptr context, u32 bufferIndex, vm::psv::ptr bufferData) +{ + throw __FUNCTION__; +} + +s32 sceGxmSetFragmentUniformBuffer(vm::psv::ptr context, u32 bufferIndex, vm::psv::ptr bufferData) +{ + throw __FUNCTION__; +} + +s32 sceGxmSetAuxiliarySurface(vm::psv::ptr context, u32 surfaceIndex, vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + + +void sceGxmSetPrecomputedFragmentState(vm::psv::ptr context, vm::psv::ptr precomputedState) +{ + throw __FUNCTION__; +} + +void sceGxmSetPrecomputedVertexState(vm::psv::ptr context, vm::psv::ptr precomputedState) +{ + throw __FUNCTION__; +} + +s32 sceGxmDrawPrecomputed(vm::psv::ptr context, vm::psv::ptr precomputedDraw) +{ + throw __FUNCTION__; +} + +s32 sceGxmDraw(vm::psv::ptr context, SceGxmPrimitiveType primType, SceGxmIndexFormat indexType, vm::psv::ptr indexData, u32 indexCount) +{ + throw __FUNCTION__; +} + +s32 sceGxmDrawInstanced(vm::psv::ptr context, SceGxmPrimitiveType primType, SceGxmIndexFormat indexType, vm::psv::ptr indexData, u32 indexCount, u32 indexWrap) +{ + throw __FUNCTION__; +} + +s32 sceGxmSetVisibilityBuffer(vm::psv::ptr context, vm::psv::ptr bufferBase, u32 stridePerCore) +{ + throw __FUNCTION__; +} + +s32 sceGxmBeginScene(vm::psv::ptr context, u32 flags, vm::psv::ptr renderTarget, vm::psv::ptr validRegion, vm::psv::ptr vertexSyncObject, vm::psv::ptr fragmentSyncObject, vm::psv::ptr colorSurface, vm::psv::ptr depthStencil) +{ + throw __FUNCTION__; +} + +s32 sceGxmMidSceneFlush(vm::psv::ptr context, u32 flags, vm::psv::ptr vertexSyncObject, vm::psv::ptr vertexNotification) +{ + throw __FUNCTION__; +} + +s32 sceGxmEndScene(vm::psv::ptr context, vm::psv::ptr vertexNotification, vm::psv::ptr fragmentNotification) +{ + throw __FUNCTION__; +} + +void sceGxmSetFrontDepthFunc(vm::psv::ptr context, SceGxmDepthFunc depthFunc) +{ + throw __FUNCTION__; +} + +void sceGxmSetBackDepthFunc(vm::psv::ptr context, SceGxmDepthFunc depthFunc) +{ + throw __FUNCTION__; +} + +void sceGxmSetFrontFragmentProgramEnable(vm::psv::ptr context, SceGxmFragmentProgramMode enable) +{ + throw __FUNCTION__; +} + +void sceGxmSetBackFragmentProgramEnable(vm::psv::ptr context, SceGxmFragmentProgramMode enable) +{ + throw __FUNCTION__; +} + +void sceGxmSetFrontDepthWriteEnable(vm::psv::ptr context, SceGxmDepthWriteMode enable) +{ + throw __FUNCTION__; +} + +void sceGxmSetBackDepthWriteEnable(vm::psv::ptr context, SceGxmDepthWriteMode enable) +{ + throw __FUNCTION__; +} + +void sceGxmSetFrontLineFillLastPixelEnable(vm::psv::ptr context, SceGxmLineFillLastPixelMode enable) +{ + throw __FUNCTION__; +} + +void sceGxmSetBackLineFillLastPixelEnable(vm::psv::ptr context, SceGxmLineFillLastPixelMode enable) +{ + throw __FUNCTION__; +} + +void sceGxmSetFrontStencilRef(vm::psv::ptr context, u32 sref) +{ + throw __FUNCTION__; +} + +void sceGxmSetBackStencilRef(vm::psv::ptr context, u32 sref) +{ + throw __FUNCTION__; +} + +void sceGxmSetFrontPointLineWidth(vm::psv::ptr context, u32 width) +{ + throw __FUNCTION__; +} + +void sceGxmSetBackPointLineWidth(vm::psv::ptr context, u32 width) +{ + throw __FUNCTION__; +} + +void sceGxmSetFrontPolygonMode(vm::psv::ptr context, SceGxmPolygonMode mode) +{ + throw __FUNCTION__; +} + +void sceGxmSetBackPolygonMode(vm::psv::ptr context, SceGxmPolygonMode mode) +{ + throw __FUNCTION__; +} + +void sceGxmSetFrontStencilFunc(vm::psv::ptr context, SceGxmStencilFunc func, SceGxmStencilOp stencilFail, SceGxmStencilOp depthFail, SceGxmStencilOp depthPass, uint8_t compareMask, uint8_t writeMask) +{ + throw __FUNCTION__; +} + + +void sceGxmSetBackStencilFunc(vm::psv::ptr context, SceGxmStencilFunc func, SceGxmStencilOp stencilFail, SceGxmStencilOp depthFail, SceGxmStencilOp depthPass, uint8_t compareMask, uint8_t writeMask) +{ + throw __FUNCTION__; +} + +void sceGxmSetFrontDepthBias(vm::psv::ptr context, int32_t factor, int32_t units) +{ + throw __FUNCTION__; +} + +void sceGxmSetBackDepthBias(vm::psv::ptr context, int32_t factor, int32_t units) +{ + throw __FUNCTION__; +} + +void sceGxmSetTwoSidedEnable(vm::psv::ptr context, SceGxmTwoSidedMode enable) +{ + throw __FUNCTION__; +} + +//void sceGxmSetViewport(vm::psv::ptr context, float xOffset, float xScale, float yOffset, float yScale, float zOffset, float zScale) +//{ +// throw __FUNCTION__; +//} +// +//void sceGxmSetWClampValue(vm::psv::ptr context, float clampValue) +//{ +// throw __FUNCTION__; +//} + +void sceGxmSetWClampEnable(vm::psv::ptr context, SceGxmWClampMode enable) +{ + throw __FUNCTION__; +} + +void sceGxmSetRegionClip(vm::psv::ptr context, SceGxmRegionClipMode mode, u32 xMin, u32 yMin, u32 xMax, u32 yMax) +{ + throw __FUNCTION__; +} + +void sceGxmSetCullMode(vm::psv::ptr context, SceGxmCullMode mode) +{ + throw __FUNCTION__; +} + +void sceGxmSetViewportEnable(vm::psv::ptr context, SceGxmViewportMode enable) +{ + throw __FUNCTION__; +} + +void sceGxmSetWBufferEnable(vm::psv::ptr context, SceGxmWBufferMode enable) +{ + throw __FUNCTION__; +} + +void sceGxmSetFrontVisibilityTestIndex(vm::psv::ptr context, u32 index) +{ + throw __FUNCTION__; +} + +void sceGxmSetBackVisibilityTestIndex(vm::psv::ptr context, u32 index) +{ + throw __FUNCTION__; +} + +void sceGxmSetFrontVisibilityTestOp(vm::psv::ptr context, SceGxmVisibilityTestOp op) +{ + throw __FUNCTION__; +} + +void sceGxmSetBackVisibilityTestOp(vm::psv::ptr context, SceGxmVisibilityTestOp op) +{ + throw __FUNCTION__; +} + +void sceGxmSetFrontVisibilityTestEnable(vm::psv::ptr context, SceGxmVisibilityTestMode enable) +{ + throw __FUNCTION__; +} + +void sceGxmSetBackVisibilityTestEnable(vm::psv::ptr context, SceGxmVisibilityTestMode enable) +{ + throw __FUNCTION__; +} + +void sceGxmFinish(vm::psv::ptr context) +{ + throw __FUNCTION__; +} + +s32 sceGxmPushUserMarker(vm::psv::ptr context, vm::psv::ptr tag) +{ + throw __FUNCTION__; +} + +s32 sceGxmPopUserMarker(vm::psv::ptr context) +{ + throw __FUNCTION__; +} + +s32 sceGxmSetUserMarker(vm::psv::ptr context, vm::psv::ptr tag) +{ + throw __FUNCTION__; +} + +s32 sceGxmPadHeartbeat(vm::psv::ptr displaySurface, vm::psv::ptr displaySyncObject) +{ + throw __FUNCTION__; +} + +s32 sceGxmPadTriggerGpuPaTrace() +{ + throw __FUNCTION__; +} + +s32 sceGxmColorSurfaceInit(vm::psv::ptr surface, SceGxmColorFormat colorFormat, SceGxmColorSurfaceType surfaceType, SceGxmColorSurfaceScaleMode scaleMode, SceGxmOutputRegisterSize outputRegisterSize, u32 width, u32 height, u32 strideInPixels, vm::psv::ptr data) +{ + throw __FUNCTION__; +} + +s32 sceGxmColorSurfaceInitDisabled(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + +bool sceGxmColorSurfaceIsEnabled(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + +void sceGxmColorSurfaceGetClip(vm::psv::ptr surface, vm::psv::ptr xMin, vm::psv::ptr yMin, vm::psv::ptr xMax, vm::psv::ptr yMax) +{ + throw __FUNCTION__; +} + +void sceGxmColorSurfaceSetClip(vm::psv::ptr surface, u32 xMin, u32 yMin, u32 xMax, u32 yMax) +{ + throw __FUNCTION__; +} + +SceGxmColorSurfaceScaleMode sceGxmColorSurfaceGetScaleMode(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + +void sceGxmColorSurfaceSetScaleMode(vm::psv::ptr surface, SceGxmColorSurfaceScaleMode scaleMode) +{ + throw __FUNCTION__; +} + +vm::psv::ptr sceGxmColorSurfaceGetData(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + +s32 sceGxmColorSurfaceSetData(vm::psv::ptr surface, vm::psv::ptr data) +{ + throw __FUNCTION__; +} + +SceGxmColorFormat sceGxmColorSurfaceGetFormat(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + +s32 sceGxmColorSurfaceSetFormat(vm::psv::ptr surface, SceGxmColorFormat format) +{ + throw __FUNCTION__; +} + +SceGxmColorSurfaceType sceGxmColorSurfaceGetType(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + +u32 sceGxmColorSurfaceGetStrideInPixels(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + +s32 sceGxmDepthStencilSurfaceInit(vm::psv::ptr surface, SceGxmDepthStencilFormat depthStencilFormat, SceGxmDepthStencilSurfaceType surfaceType, u32 strideInSamples, vm::psv::ptr depthData, vm::psv::ptr stencilData) +{ + throw __FUNCTION__; +} + +s32 sceGxmDepthStencilSurfaceInitDisabled(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + +//float sceGxmDepthStencilSurfaceGetBackgroundDepth(vm::psv::ptr surface) +//{ +// throw __FUNCTION__; +//} + +//void sceGxmDepthStencilSurfaceSetBackgroundDepth(vm::psv::ptr surface, float backgroundDepth) +//{ +// throw __FUNCTION__; +//} + +uint8_t sceGxmDepthStencilSurfaceGetBackgroundStencil(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + +void sceGxmDepthStencilSurfaceSetBackgroundStencil(vm::psv::ptr surface, uint8_t backgroundStencil) +{ + throw __FUNCTION__; +} + +bool sceGxmDepthStencilSurfaceIsEnabled(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + +void sceGxmDepthStencilSurfaceSetForceLoadMode(vm::psv::ptr surface, SceGxmDepthStencilForceLoadMode forceLoad) +{ + throw __FUNCTION__; +} + +SceGxmDepthStencilForceLoadMode sceGxmDepthStencilSurfaceGetForceLoadMode(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + +void sceGxmDepthStencilSurfaceSetForceStoreMode(vm::psv::ptr surface, SceGxmDepthStencilForceStoreMode forceStore) +{ + throw __FUNCTION__; +} + +SceGxmDepthStencilForceStoreMode sceGxmDepthStencilSurfaceGetForceStoreMode(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + +SceGxmColorSurfaceGammaMode sceGxmColorSurfaceGetGammaMode(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + +s32 sceGxmColorSurfaceSetGammaMode(vm::psv::ptr surface, SceGxmColorSurfaceGammaMode gammaMode) +{ + throw __FUNCTION__; +} + +SceGxmColorSurfaceDitherMode sceGxmColorSurfaceGetDitherMode(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + +s32 sceGxmColorSurfaceSetDitherMode(vm::psv::ptr surface, SceGxmColorSurfaceDitherMode ditherMode) +{ + throw __FUNCTION__; +} + +SceGxmDepthStencilFormat sceGxmDepthStencilSurfaceGetFormat(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + +u32 sceGxmDepthStencilSurfaceGetStrideInSamples(vm::psv::ptr surface) +{ + throw __FUNCTION__; +} + + +s32 sceGxmProgramCheck(vm::psv::ptr program) +{ + throw __FUNCTION__; +} + +u32 sceGxmProgramGetSize(vm::psv::ptr program) +{ + throw __FUNCTION__; +} + +SceGxmProgramType sceGxmProgramGetType(vm::psv::ptr program) +{ + throw __FUNCTION__; +} + +bool sceGxmProgramIsDiscardUsed(vm::psv::ptr program) +{ + throw __FUNCTION__; +} + +bool sceGxmProgramIsDepthReplaceUsed(vm::psv::ptr program) +{ + throw __FUNCTION__; +} + +bool sceGxmProgramIsSpriteCoordUsed(vm::psv::ptr program) +{ + throw __FUNCTION__; +} + +u32 sceGxmProgramGetDefaultUniformBufferSize(vm::psv::ptr program) +{ + throw __FUNCTION__; +} + +u32 sceGxmProgramGetParameterCount(vm::psv::ptr program) +{ + throw __FUNCTION__; +} + +vm::psv::ptr sceGxmProgramGetParameter(vm::psv::ptr program, u32 index) +{ + throw __FUNCTION__; +} + +vm::psv::ptr sceGxmProgramFindParameterByName(vm::psv::ptr program, vm::psv::ptr name) +{ + throw __FUNCTION__; +} + +vm::psv::ptr sceGxmProgramFindParameterBySemantic(vm::psv::ptr program, SceGxmParameterSemantic semantic, u32 index) +{ + throw __FUNCTION__; +} + +u32 sceGxmProgramParameterGetIndex(vm::psv::ptr program, vm::psv::ptr parameter) +{ + throw __FUNCTION__; +} + +SceGxmParameterCategory sceGxmProgramParameterGetCategory(vm::psv::ptr parameter) +{ + throw __FUNCTION__; +} + +vm::psv::ptr sceGxmProgramParameterGetName(vm::psv::ptr parameter) +{ + throw __FUNCTION__; +} + +SceGxmParameterSemantic sceGxmProgramParameterGetSemantic(vm::psv::ptr parameter) +{ + throw __FUNCTION__; +} + +u32 sceGxmProgramParameterGetSemanticIndex(vm::psv::ptr parameter) +{ + throw __FUNCTION__; +} + +SceGxmParameterType sceGxmProgramParameterGetType(vm::psv::ptr parameter) +{ + throw __FUNCTION__; +} + +u32 sceGxmProgramParameterGetComponentCount(vm::psv::ptr parameter) +{ + throw __FUNCTION__; +} + +u32 sceGxmProgramParameterGetArraySize(vm::psv::ptr parameter) +{ + throw __FUNCTION__; +} + +u32 sceGxmProgramParameterGetResourceIndex(vm::psv::ptr parameter) +{ + throw __FUNCTION__; +} + +u32 sceGxmProgramParameterGetContainerIndex(vm::psv::ptr parameter) +{ + throw __FUNCTION__; +} + +bool sceGxmProgramParameterIsSamplerCube(vm::psv::ptr parameter) +{ + throw __FUNCTION__; +} + +vm::psv::ptr sceGxmFragmentProgramGetProgram(vm::psv::ptr fragmentProgram) +{ + throw __FUNCTION__; +} + +vm::psv::ptr sceGxmVertexProgramGetProgram(vm::psv::ptr vertexProgram) +{ + throw __FUNCTION__; +} + + +s32 sceGxmShaderPatcherCreate(vm::psv::ptr params, vm::psv::ptr> shaderPatcher) +{ + throw __FUNCTION__; +} + +s32 sceGxmShaderPatcherSetUserData(vm::psv::ptr shaderPatcher, vm::psv::ptr userData) +{ + throw __FUNCTION__; +} + +vm::psv::ptr sceGxmShaderPatcherGetUserData(vm::psv::ptr shaderPatcher) +{ + throw __FUNCTION__; +} + +s32 sceGxmShaderPatcherDestroy(vm::psv::ptr shaderPatcher) +{ + throw __FUNCTION__; +} + +s32 sceGxmShaderPatcherRegisterProgram(vm::psv::ptr shaderPatcher, vm::psv::ptr programHeader, vm::psv::ptr programId) +{ + throw __FUNCTION__; +} + +s32 sceGxmShaderPatcherUnregisterProgram(vm::psv::ptr shaderPatcher, SceGxmShaderPatcherId programId) +{ + throw __FUNCTION__; +} + +vm::psv::ptr sceGxmShaderPatcherGetProgramFromId(SceGxmShaderPatcherId programId) +{ + throw __FUNCTION__; +} + +s32 sceGxmShaderPatcherSetAuxiliarySurface(vm::psv::ptr shaderPatcher, u32 auxSurfaceIndex, vm::psv::ptr auxSurface) +{ + throw __FUNCTION__; +} + +s32 sceGxmShaderPatcherCreateVertexProgram(vm::psv::ptr shaderPatcher, SceGxmShaderPatcherId programId, vm::psv::ptr attributes, u32 attributeCount, vm::psv::ptr streams, u32 streamCount, vm::psv::ptr> vertexProgram) +{ + throw __FUNCTION__; +} + +s32 sceGxmShaderPatcherCreateFragmentProgram(vm::psv::ptr shaderPatcher, SceGxmShaderPatcherId programId, SceGxmOutputRegisterFormat outputFormat, SceGxmMultisampleMode multisampleMode, vm::psv::ptr blendInfo, vm::psv::ptr vertexProgram, vm::psv::ptr> fragmentProgram) +{ + throw __FUNCTION__; +} + +s32 sceGxmShaderPatcherAddRefVertexProgram(vm::psv::ptr shaderPatcher, vm::psv::ptr vertexProgram) +{ + throw __FUNCTION__; +} + +s32 sceGxmShaderPatcherAddRefFragmentProgram(vm::psv::ptr shaderPatcher, vm::psv::ptr fragmentProgram) +{ + throw __FUNCTION__; +} + +s32 sceGxmShaderPatcherReleaseVertexProgram(vm::psv::ptr shaderPatcher, vm::psv::ptr vertexProgram) +{ + throw __FUNCTION__; +} + +s32 sceGxmShaderPatcherReleaseFragmentProgram(vm::psv::ptr shaderPatcher, vm::psv::ptr fragmentProgram) +{ + throw __FUNCTION__; +} + +u32 sceGxmShaderPatcherGetHostMemAllocated(vm::psv::ptr shaderPatcher) +{ + throw __FUNCTION__; +} + +u32 sceGxmShaderPatcherGetBufferMemAllocated(vm::psv::ptr shaderPatcher) +{ + throw __FUNCTION__; +} + +u32 sceGxmShaderPatcherGetVertexUsseMemAllocated(vm::psv::ptr shaderPatcher) +{ + throw __FUNCTION__; +} + +u32 sceGxmShaderPatcherGetFragmentUsseMemAllocated(vm::psv::ptr shaderPatcher) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureInitSwizzled(vm::psv::ptr texture, vm::psv::ptr data, SceGxmTextureFormat texFormat, u32 width, u32 height, u32 mipCount) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureInitLinear(vm::psv::ptr texture, vm::psv::ptr data, SceGxmTextureFormat texFormat, u32 width, u32 height, u32 mipCount) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureInitLinearStrided(vm::psv::ptr texture, vm::psv::ptr data, SceGxmTextureFormat texFormat, u32 width, u32 height, u32 byteStride) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureInitTiled(vm::psv::ptr texture, vm::psv::ptr data, SceGxmTextureFormat texFormat, u32 width, u32 height, u32 mipCount) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureInitCube(vm::psv::ptr texture, vm::psv::ptr data, SceGxmTextureFormat texFormat, u32 width, u32 height, u32 mipCount) +{ + throw __FUNCTION__; +} + +SceGxmTextureType sceGxmTextureGetType(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureSetMinFilter(vm::psv::ptr texture, SceGxmTextureFilter minFilter) +{ + throw __FUNCTION__; +} + +SceGxmTextureFilter sceGxmTextureGetMinFilter(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureSetMagFilter(vm::psv::ptr texture, SceGxmTextureFilter magFilter) +{ + throw __FUNCTION__; +} + +SceGxmTextureFilter sceGxmTextureGetMagFilter(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureSetMipFilter(vm::psv::ptr texture, SceGxmTextureMipFilter mipFilter) +{ + throw __FUNCTION__; +} + +SceGxmTextureMipFilter sceGxmTextureGetMipFilter(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureSetAnisoMode(vm::psv::ptr texture, SceGxmTextureAnisoMode anisoMode) +{ + throw __FUNCTION__; +} + +SceGxmTextureAnisoMode sceGxmTextureGetAnisoMode(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureSetUAddrMode(vm::psv::ptr texture, SceGxmTextureAddrMode addrMode) +{ + throw __FUNCTION__; +} + +SceGxmTextureAddrMode sceGxmTextureGetUAddrMode(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureSetVAddrMode(vm::psv::ptr texture, SceGxmTextureAddrMode addrMode) +{ + throw __FUNCTION__; +} + +SceGxmTextureAddrMode sceGxmTextureGetVAddrMode(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureSetFormat(vm::psv::ptr texture, SceGxmTextureFormat texFormat) +{ + throw __FUNCTION__; +} + +SceGxmTextureFormat sceGxmTextureGetFormat(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureSetLodBias(vm::psv::ptr texture, u32 bias) +{ + throw __FUNCTION__; +} + +u32 sceGxmTextureGetLodBias(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureSetStride(vm::psv::ptr texture, u32 byteStride) +{ + throw __FUNCTION__; +} + +u32 sceGxmTextureGetStride(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureSetWidth(vm::psv::ptr texture, u32 width) +{ + throw __FUNCTION__; +} + +u32 sceGxmTextureGetWidth(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureSetHeight(vm::psv::ptr texture, u32 height) +{ + throw __FUNCTION__; +} + +u32 sceGxmTextureGetHeight(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureSetData(vm::psv::ptr texture, vm::psv::ptr data) +{ + throw __FUNCTION__; +} + +vm::psv::ptr sceGxmTextureGetData(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureSetMipmapCount(vm::psv::ptr texture, u32 mipCount) +{ + throw __FUNCTION__; +} + +u32 sceGxmTextureGetMipmapCount(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureSetPalette(vm::psv::ptr texture, vm::psv::ptr paletteData) +{ + throw __FUNCTION__; +} + +vm::psv::ptr sceGxmTextureGetPalette(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +SceGxmTextureGammaMode sceGxmTextureGetGammaMode(vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmTextureSetGammaMode(vm::psv::ptr texture, SceGxmTextureGammaMode gammaMode) +{ + throw __FUNCTION__; +} + +u32 sceGxmGetPrecomputedVertexStateSize(vm::psv::ptr vertexProgram) +{ + throw __FUNCTION__; +} + +s32 sceGxmPrecomputedVertexStateInit(vm::psv::ptr precomputedState, vm::psv::ptr vertexProgram, vm::psv::ptr memBlock) +{ + throw __FUNCTION__; +} + +void sceGxmPrecomputedVertexStateSetDefaultUniformBuffer(vm::psv::ptr precomputedState, vm::psv::ptr defaultBuffer) +{ + throw __FUNCTION__; +} + +vm::psv::ptr sceGxmPrecomputedVertexStateGetDefaultUniformBuffer(vm::psv::ptr precomputedState) +{ + throw __FUNCTION__; +} + +s32 sceGxmPrecomputedVertexStateSetAllTextures(vm::psv::ptr precomputedState, vm::psv::ptr textures) +{ + throw __FUNCTION__; +} + +s32 sceGxmPrecomputedVertexStateSetTexture(vm::psv::ptr precomputedState, u32 textureIndex, vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmPrecomputedVertexStateSetAllUniformBuffers(vm::psv::ptr precomputedState, vm::psv::ptr> bufferDataArray) +{ + throw __FUNCTION__; +} + +s32 sceGxmPrecomputedVertexStateSetUniformBuffer(vm::psv::ptr precomputedState, u32 bufferIndex, vm::psv::ptr bufferData) +{ + throw __FUNCTION__; +} + +u32 sceGxmGetPrecomputedFragmentStateSize(vm::psv::ptr fragmentProgram) +{ + throw __FUNCTION__; +} + +s32 sceGxmPrecomputedFragmentStateInit(vm::psv::ptr precomputedState, vm::psv::ptr fragmentProgram, vm::psv::ptr memBlock) +{ + throw __FUNCTION__; +} + +void sceGxmPrecomputedFragmentStateSetDefaultUniformBuffer(vm::psv::ptr precomputedState, vm::psv::ptr defaultBuffer) +{ + throw __FUNCTION__; +} + +vm::psv::ptr sceGxmPrecomputedFragmentStateGetDefaultUniformBuffer(vm::psv::ptr precomputedState) +{ + throw __FUNCTION__; +} + +s32 sceGxmPrecomputedFragmentStateSetAllTextures(vm::psv::ptr precomputedState, vm::psv::ptr textureArray) +{ + throw __FUNCTION__; +} + +s32 sceGxmPrecomputedFragmentStateSetTexture(vm::psv::ptr precomputedState, u32 textureIndex, vm::psv::ptr texture) +{ + throw __FUNCTION__; +} + +s32 sceGxmPrecomputedFragmentStateSetAllUniformBuffers(vm::psv::ptr precomputedState, vm::psv::ptr> bufferDataArray) +{ + throw __FUNCTION__; +} + +s32 sceGxmPrecomputedFragmentStateSetUniformBuffer(vm::psv::ptr precomputedState, u32 bufferIndex, vm::psv::ptr bufferData) +{ + throw __FUNCTION__; +} + +s32 sceGxmPrecomputedFragmentStateSetAllAuxiliarySurfaces(vm::psv::ptr precomputedState, vm::psv::ptr auxSurfaceArray) +{ + throw __FUNCTION__; +} + +u32 sceGxmGetPrecomputedDrawSize(vm::psv::ptr vertexProgram) +{ + throw __FUNCTION__; +} + +s32 sceGxmPrecomputedDrawInit(vm::psv::ptr precomputedDraw, vm::psv::ptr vertexProgram, vm::psv::ptr memBlock) +{ + throw __FUNCTION__; +} + +s32 sceGxmPrecomputedDrawSetAllVertexStreams(vm::psv::ptr precomputedDraw, vm::psv::ptr> streamDataArray) +{ + throw __FUNCTION__; +} + +s32 sceGxmPrecomputedDrawSetVertexStream(vm::psv::ptr precomputedDraw, u32 streamIndex, vm::psv::ptr streamData) +{ + throw __FUNCTION__; +} + +void sceGxmPrecomputedDrawSetParams(vm::psv::ptr precomputedDraw, SceGxmPrimitiveType primType, SceGxmIndexFormat indexType, vm::psv::ptr indexData, u32 indexCount) +{ + throw __FUNCTION__; +} + +void sceGxmPrecomputedDrawSetParamsInstanced(vm::psv::ptr precomputedDraw, SceGxmPrimitiveType primType, SceGxmIndexFormat indexType, vm::psv::ptr indexData, u32 indexCount, u32 indexWrap) +{ + throw __FUNCTION__; +} + + +s32 sceGxmGetRenderTargetMemSizes(vm::psv::ptr params, vm::psv::ptr hostMemSize, vm::psv::ptr driverMemSize) +{ + throw __FUNCTION__; +} + +s32 sceGxmCreateRenderTarget(vm::psv::ptr params, vm::psv::ptr> renderTarget) +{ + throw __FUNCTION__; +} + +s32 sceGxmRenderTargetGetHostMem(vm::psv::ptr renderTarget, vm::psv::ptr> hostMem) +{ + throw __FUNCTION__; +} + +s32 sceGxmRenderTargetGetDriverMemBlock(vm::psv::ptr renderTarget, vm::psv::ptr driverMemBlock) +{ + throw __FUNCTION__; +} + +s32 sceGxmDestroyRenderTarget(vm::psv::ptr renderTarget) +{ + throw __FUNCTION__; +} + +s32 sceGxmSetUniformDataF(vm::psv::ptr uniformBuffer, vm::psv::ptr parameter, u32 componentOffset, u32 componentCount, vm::psv::ptr sourceData) +{ + throw __FUNCTION__; +} + + +#define REG_FUNC(nid, name) reg_psv_func(nid, &sceGxm, #name, name) + +psv_log_base sceGxm("SceGxm", []() +{ + sceGxm.on_load = nullptr; + sceGxm.on_unload = nullptr; + sceGxm.on_stop = nullptr; + + REG_FUNC(0xB0F1E4EC, sceGxmInitialize); + REG_FUNC(0xB627DE66, sceGxmTerminate); + //REG_FUNC(0x48C134AB, sceGxmBug9255RaisePrimitiveSplitThresholdEs2); + //REG_FUNC(0xA3A41A42, sceGxmBug9255SetPrimitiveSplitThresholdEs2); + REG_FUNC(0xC61E34FC, sceGxmMapMemory); + REG_FUNC(0x828C68E8, sceGxmUnmapMemory); + REG_FUNC(0xFA437510, sceGxmMapVertexUsseMemory); + REG_FUNC(0x008402C6, sceGxmMapFragmentUsseMemory); + REG_FUNC(0x099134F5, sceGxmUnmapVertexUsseMemory); + REG_FUNC(0x80CCEDBB, sceGxmUnmapFragmentUsseMemory); + REG_FUNC(0xEC5C26B5, sceGxmDisplayQueueAddEntry); + REG_FUNC(0xB98C5B0D, sceGxmDisplayQueueFinish); + REG_FUNC(0x6A6013E1, sceGxmSyncObjectCreate); + REG_FUNC(0x889AE88C, sceGxmSyncObjectDestroy); + REG_FUNC(0x8BDE825A, sceGxmGetNotificationRegion); + REG_FUNC(0x9F448E79, sceGxmNotificationWait); + REG_FUNC(0x3D25FCE9, sceGxmPadHeartbeat); + REG_FUNC(0x47E06984, sceGxmPadTriggerGpuPaTrace); + REG_FUNC(0x2DB6026C, sceGxmColorSurfaceGetData); + REG_FUNC(0x200A96E1, sceGxmColorSurfaceGetDitherMode); + REG_FUNC(0xF3C1C6C6, sceGxmColorSurfaceGetFormat); + REG_FUNC(0x6E3FA74D, sceGxmColorSurfaceGetScaleMode); + REG_FUNC(0xF33D9980, sceGxmColorSurfaceGetStrideInPixels); + REG_FUNC(0x52FDE962, sceGxmColorSurfaceGetType); + REG_FUNC(0xED0F6E25, sceGxmColorSurfaceInit); + REG_FUNC(0x613639FA, sceGxmColorSurfaceInitDisabled); + REG_FUNC(0x0E0EBB57, sceGxmColorSurfaceIsEnabled); + REG_FUNC(0x07DFEE4B, sceGxmColorSurfaceGetClip); + REG_FUNC(0x86456F7B, sceGxmColorSurfaceSetClip); + REG_FUNC(0x537CA400, sceGxmColorSurfaceSetData); + REG_FUNC(0x45027BAB, sceGxmColorSurfaceSetDitherMode); + REG_FUNC(0x5F9A3A16, sceGxmColorSurfaceSetFormat); + REG_FUNC(0x6B96EDF7, sceGxmColorSurfaceSetScaleMode); + //REG_FUNC(0x269B56BE, sceGxmDepthStencilSurfaceGetBackgroundDepth); + REG_FUNC(0xAAFC062B, sceGxmDepthStencilSurfaceGetBackgroundStencil); + REG_FUNC(0x2F5CC20C, sceGxmDepthStencilSurfaceGetForceLoadMode); + REG_FUNC(0x544AA05A, sceGxmDepthStencilSurfaceGetForceStoreMode); + REG_FUNC(0x8504038D, sceGxmDepthStencilSurfaceGetFormat); + REG_FUNC(0x11628789, sceGxmDepthStencilSurfaceGetStrideInSamples); + REG_FUNC(0xCA9D41D1, sceGxmDepthStencilSurfaceInit); + REG_FUNC(0xA41DB0D6, sceGxmDepthStencilSurfaceInitDisabled); + REG_FUNC(0x082200E1, sceGxmDepthStencilSurfaceIsEnabled); + //REG_FUNC(0x32F280F0, sceGxmDepthStencilSurfaceSetBackgroundDepth); + REG_FUNC(0xF5D3F3E8, sceGxmDepthStencilSurfaceSetBackgroundStencil); + REG_FUNC(0x0C44ACD7, sceGxmDepthStencilSurfaceSetForceLoadMode); + REG_FUNC(0x12AAA7AF, sceGxmDepthStencilSurfaceSetForceStoreMode); + REG_FUNC(0xF5C89643, sceGxmColorSurfaceSetGammaMode); + REG_FUNC(0xEE0B4DF0, sceGxmColorSurfaceGetGammaMode); + REG_FUNC(0xE0E3B3F8, sceGxmFragmentProgramGetProgram); + REG_FUNC(0xBC52320E, sceGxmVertexProgramGetProgram); + REG_FUNC(0xDE9D5911, sceGxmTextureGetAnisoMode); + REG_FUNC(0x5341BD46, sceGxmTextureGetData); + REG_FUNC(0xE868D2B3, sceGxmTextureGetFormat); + REG_FUNC(0x5420A086, sceGxmTextureGetHeight); + REG_FUNC(0x2DE55DA5, sceGxmTextureGetLodBias); + REG_FUNC(0xAE7FBB51, sceGxmTextureGetMagFilter); + REG_FUNC(0x920666C6, sceGxmTextureGetMinFilter); + REG_FUNC(0xCE94CA15, sceGxmTextureGetMipFilter); + REG_FUNC(0x4CC42929, sceGxmTextureGetMipmapCount); + REG_FUNC(0xB0BD52F3, sceGxmTextureGetStride); + REG_FUNC(0xF65D4917, sceGxmTextureGetType); + REG_FUNC(0xC037DA83, sceGxmTextureGetUAddrMode); + REG_FUNC(0xD2F0D9C1, sceGxmTextureGetVAddrMode); + REG_FUNC(0x126A3EB3, sceGxmTextureGetWidth); + REG_FUNC(0x11DC8DC9, sceGxmTextureInitCube); + REG_FUNC(0x4811AECB, sceGxmTextureInitLinear); + REG_FUNC(0x6679BEF0, sceGxmTextureInitLinearStrided); + REG_FUNC(0xD572D547, sceGxmTextureInitSwizzled); + REG_FUNC(0xE6F0DB27, sceGxmTextureInitTiled); + REG_FUNC(0xE719CBD4, sceGxmTextureSetAnisoMode); + REG_FUNC(0x855814C4, sceGxmTextureSetData); + REG_FUNC(0xFC943596, sceGxmTextureSetFormat); + REG_FUNC(0x1B20D5DF, sceGxmTextureSetHeight); + REG_FUNC(0xB65EE6F7, sceGxmTextureSetLodBias); + REG_FUNC(0xFA695FD7, sceGxmTextureSetMagFilter); + REG_FUNC(0x416764E3, sceGxmTextureSetMinFilter); + REG_FUNC(0x1CA9FE0B, sceGxmTextureSetMipFilter); + REG_FUNC(0xD2DC4643, sceGxmTextureSetMipmapCount); + REG_FUNC(0x58D0EB0A, sceGxmTextureSetStride); + REG_FUNC(0x8699ECF4, sceGxmTextureSetUAddrMode); + REG_FUNC(0xFA22F6CC, sceGxmTextureSetVAddrMode); + REG_FUNC(0x5A690B60, sceGxmTextureSetWidth); + REG_FUNC(0xDD6AABFA, sceGxmTextureSetPalette); + REG_FUNC(0x0D189C30, sceGxmTextureGetPalette); + REG_FUNC(0xA6D9F4DA, sceGxmTextureSetGammaMode); + REG_FUNC(0xF23FCE81, sceGxmTextureGetGammaMode); + REG_FUNC(0x85DE8506, sceGxmGetPrecomputedFragmentStateSize); + REG_FUNC(0x9D83CA3B, sceGxmGetPrecomputedVertexStateSize); + REG_FUNC(0x41BBD792, sceGxmGetPrecomputedDrawSize); + REG_FUNC(0xA197F096, sceGxmPrecomputedDrawInit); + REG_FUNC(0xB6C6F571, sceGxmPrecomputedDrawSetAllVertexStreams); + REG_FUNC(0x884D0D08, sceGxmPrecomputedDrawSetParams); + REG_FUNC(0x3A7B1633, sceGxmPrecomputedDrawSetParamsInstanced); + REG_FUNC(0x6C936214, sceGxmPrecomputedDrawSetVertexStream); + REG_FUNC(0xCECB584A, sceGxmPrecomputedFragmentStateGetDefaultUniformBuffer); + REG_FUNC(0x91236858, sceGxmPrecomputedFragmentStateSetDefaultUniformBuffer); + REG_FUNC(0xE297D7AF, sceGxmPrecomputedFragmentStateInit); + REG_FUNC(0x29118BF1, sceGxmPrecomputedFragmentStateSetTexture); + REG_FUNC(0xB452F1FB, sceGxmPrecomputedFragmentStateSetUniformBuffer); + REG_FUNC(0xC383DE39, sceGxmPrecomputedFragmentStateSetAllTextures); + REG_FUNC(0x5A783DC3, sceGxmPrecomputedFragmentStateSetAllUniformBuffers); + REG_FUNC(0x9D93B63A, sceGxmPrecomputedFragmentStateSetAllAuxiliarySurfaces); + REG_FUNC(0xBE5A68EF, sceGxmPrecomputedVertexStateGetDefaultUniformBuffer); + REG_FUNC(0x34BF64E3, sceGxmPrecomputedVertexStateSetDefaultUniformBuffer); + REG_FUNC(0xBE937F8D, sceGxmPrecomputedVertexStateInit); + REG_FUNC(0x1625D348, sceGxmPrecomputedVertexStateSetTexture); + REG_FUNC(0xDBF97ED6, sceGxmPrecomputedVertexStateSetUniformBuffer); + REG_FUNC(0x8FF68274, sceGxmPrecomputedVertexStateSetAllTextures); + REG_FUNC(0x0389861D, sceGxmPrecomputedVertexStateSetAllUniformBuffers); + REG_FUNC(0x1F856E5D, sceGxmGetRenderTargetMemSizes); + REG_FUNC(0xD56CD7B1, sceGxmCreateRenderTarget); + REG_FUNC(0x0B94C50A, sceGxmDestroyRenderTarget); + REG_FUNC(0xD0EDAB4C, sceGxmRenderTargetGetHostMem); + REG_FUNC(0x49553737, sceGxmRenderTargetGetDriverMemBlock); + REG_FUNC(0xDBA33160, sceGxmBeginScene); + REG_FUNC(0xE84CE5B4, sceGxmCreateContext); + REG_FUNC(0xEDDC5FB2, sceGxmDestroyContext); + REG_FUNC(0xBC059AFC, sceGxmDraw); + REG_FUNC(0x14C4E7D3, sceGxmDrawInstanced); + REG_FUNC(0xED3F78B8, sceGxmDrawPrecomputed); + REG_FUNC(0xFE300E2F, sceGxmEndScene); + REG_FUNC(0x0733D8AE, sceGxmFinish); + REG_FUNC(0x51FE0899, sceGxmMidSceneFlush); + REG_FUNC(0x4FA073A6, sceGxmPopUserMarker); + REG_FUNC(0x3276C475, sceGxmPushUserMarker); + REG_FUNC(0x7B1FABB6, sceGxmReserveFragmentDefaultUniformBuffer); + REG_FUNC(0x97118913, sceGxmReserveVertexDefaultUniformBuffer); + REG_FUNC(0x91B4F7F4, sceGxmSetAuxiliarySurface); + REG_FUNC(0x17B3BF86, sceGxmSetBackDepthBias); + REG_FUNC(0xB042A4D2, sceGxmSetBackDepthFunc); + REG_FUNC(0xC18B706B, sceGxmSetBackDepthWriteEnable); + REG_FUNC(0xE26B4834, sceGxmSetBackFragmentProgramEnable); + REG_FUNC(0xC88EB702, sceGxmSetBackLineFillLastPixelEnable); + REG_FUNC(0x8DCB0EDB, sceGxmSetBackPointLineWidth); + REG_FUNC(0xF66EC6FE, sceGxmSetBackPolygonMode); + REG_FUNC(0x1A68C8D2, sceGxmSetBackStencilFunc); + REG_FUNC(0x866A0517, sceGxmSetBackStencilRef); + REG_FUNC(0xE1CA72AE, sceGxmSetCullMode); + REG_FUNC(0xAD2F48D9, sceGxmSetFragmentProgram); + REG_FUNC(0x29C34DF5, sceGxmSetFragmentTexture); + REG_FUNC(0xEA0FC310, sceGxmSetFragmentUniformBuffer); + REG_FUNC(0xAAA97F81, sceGxmSetFrontDepthBias); + REG_FUNC(0x14BD831F, sceGxmSetFrontDepthFunc); + REG_FUNC(0xF32CBF34, sceGxmSetFrontDepthWriteEnable); + REG_FUNC(0x575958A8, sceGxmSetFrontFragmentProgramEnable); + REG_FUNC(0x5765DE9F, sceGxmSetFrontLineFillLastPixelEnable); + REG_FUNC(0x06752183, sceGxmSetFrontPointLineWidth); + REG_FUNC(0xFD93209D, sceGxmSetFrontPolygonMode); + REG_FUNC(0xB8645A9A, sceGxmSetFrontStencilFunc); + REG_FUNC(0x8FA6FE44, sceGxmSetFrontStencilRef); + REG_FUNC(0xF8952750, sceGxmSetPrecomputedFragmentState); + REG_FUNC(0xB7626A93, sceGxmSetPrecomputedVertexState); + REG_FUNC(0x70C86868, sceGxmSetRegionClip); + REG_FUNC(0x0DE9AEB7, sceGxmSetTwoSidedEnable); + REG_FUNC(0xC7A8CB77, sceGxmSetUserMarker); + REG_FUNC(0x8C6A24C9, sceGxmSetValidationEnable); + REG_FUNC(0x31FF8ABD, sceGxmSetVertexProgram); + REG_FUNC(0x895DF2E9, sceGxmSetVertexStream); + REG_FUNC(0x16C9D339, sceGxmSetVertexTexture); + REG_FUNC(0xC68015E4, sceGxmSetVertexUniformBuffer); + //REG_FUNC(0x3EB3380B, sceGxmSetViewport); + REG_FUNC(0x814F61EB, sceGxmSetViewportEnable); + REG_FUNC(0x7767EC49, sceGxmSetVisibilityBuffer); + REG_FUNC(0xEED86975, sceGxmSetWBufferEnable); + REG_FUNC(0x1BF8B853, sceGxmSetWClampEnable); + //REG_FUNC(0xD096336E, sceGxmSetWClampValue); + REG_FUNC(0x12625C34, sceGxmSetFrontVisibilityTestIndex); + REG_FUNC(0xAE7886FE, sceGxmSetBackVisibilityTestIndex); + REG_FUNC(0xD0E3CD9A, sceGxmSetFrontVisibilityTestOp); + REG_FUNC(0xC83F0AB3, sceGxmSetBackVisibilityTestOp); + REG_FUNC(0x30459117, sceGxmSetFrontVisibilityTestEnable); + REG_FUNC(0x17CF46B9, sceGxmSetBackVisibilityTestEnable); + REG_FUNC(0xED8B6C69, sceGxmProgramCheck); + REG_FUNC(0x277794C4, sceGxmProgramFindParameterByName); + REG_FUNC(0x7FFFDD7A, sceGxmProgramFindParameterBySemantic); + REG_FUNC(0x06FF9151, sceGxmProgramGetParameter); + REG_FUNC(0xD5D5FCCD, sceGxmProgramGetParameterCount); + REG_FUNC(0xBF5E2090, sceGxmProgramGetSize); + REG_FUNC(0x04BB3C59, sceGxmProgramGetType); + REG_FUNC(0x89613EF2, sceGxmProgramIsDepthReplaceUsed); + REG_FUNC(0x029B4F1C, sceGxmProgramIsDiscardUsed); + REG_FUNC(0x8FA3F9C3, sceGxmProgramGetDefaultUniformBufferSize); + REG_FUNC(0xDBA8D061, sceGxmProgramParameterGetArraySize); + REG_FUNC(0x1997DC17, sceGxmProgramParameterGetCategory); + REG_FUNC(0xBD2998D1, sceGxmProgramParameterGetComponentCount); + REG_FUNC(0xBB58267D, sceGxmProgramParameterGetContainerIndex); + REG_FUNC(0x6E61DDF5, sceGxmProgramParameterGetIndex); + REG_FUNC(0x6AF88A5D, sceGxmProgramParameterGetName); + REG_FUNC(0x5C79D59A, sceGxmProgramParameterGetResourceIndex); + REG_FUNC(0xAAFD61D5, sceGxmProgramParameterGetSemantic); + REG_FUNC(0xB85CC13E, sceGxmProgramParameterGetSemanticIndex); + REG_FUNC(0x7B9023C3, sceGxmProgramParameterGetType); + REG_FUNC(0xF7AA978B, sceGxmProgramParameterIsSamplerCube); + REG_FUNC(0x4CD2D19F, sceGxmShaderPatcherAddRefFragmentProgram); + REG_FUNC(0x0FD1E589, sceGxmShaderPatcherAddRefVertexProgram); + REG_FUNC(0x05032658, sceGxmShaderPatcherCreate); + REG_FUNC(0x4ED2E49D, sceGxmShaderPatcherCreateFragmentProgram); + REG_FUNC(0xB7BBA6D5, sceGxmShaderPatcherCreateVertexProgram); + REG_FUNC(0xEAA5B100, sceGxmShaderPatcherDestroy); + REG_FUNC(0xA949A803, sceGxmShaderPatcherGetProgramFromId); + REG_FUNC(0x2B528462, sceGxmShaderPatcherRegisterProgram); + REG_FUNC(0xBE2743D1, sceGxmShaderPatcherReleaseFragmentProgram); + REG_FUNC(0xAC1FF2DA, sceGxmShaderPatcherReleaseVertexProgram); + REG_FUNC(0x8E5FCC2A, sceGxmShaderPatcherSetAuxiliarySurface); + REG_FUNC(0xF103AF8A, sceGxmShaderPatcherUnregisterProgram); + REG_FUNC(0x9DBBC71C, sceGxmShaderPatcherGetHostMemAllocated); + REG_FUNC(0xC694D039, sceGxmShaderPatcherGetBufferMemAllocated); + REG_FUNC(0x7D2F83C1, sceGxmShaderPatcherGetVertexUsseMemAllocated); + REG_FUNC(0x3C9DDB4A, sceGxmShaderPatcherGetFragmentUsseMemAllocated); + REG_FUNC(0x96A7E6DD, sceGxmShaderPatcherGetUserData); + REG_FUNC(0xF9B8FCFD, sceGxmShaderPatcherSetUserData); + REG_FUNC(0x65DD0C84, sceGxmSetUniformDataF); +}); \ No newline at end of file diff --git a/rpcs3/Emu/ARMv7/Modules/sceGxm.h b/rpcs3/Emu/ARMv7/Modules/sceGxm.h new file mode 100644 index 0000000000..28cdac4daf --- /dev/null +++ b/rpcs3/Emu/ARMv7/Modules/sceGxm.h @@ -0,0 +1,1244 @@ +#pragma once + +// Error Codes + +enum +{ + SCE_GXM_ERROR_UNINITIALIZED = 0x805B0000, + SCE_GXM_ERROR_ALREADY_INITIALIZED = 0x805B0001, + SCE_GXM_ERROR_OUT_OF_MEMORY = 0x805B0002, + SCE_GXM_ERROR_INVALID_VALUE = 0x805B0003, + SCE_GXM_ERROR_INVALID_POINTER = 0x805B0004, + SCE_GXM_ERROR_INVALID_ALIGNMENT = 0x805B0005, + SCE_GXM_ERROR_NOT_WITHIN_SCENE = 0x805B0006, + SCE_GXM_ERROR_WITHIN_SCENE = 0x805B0007, + SCE_GXM_ERROR_NULL_PROGRAM = 0x805B0008, + SCE_GXM_ERROR_UNSUPPORTED = 0x805B0009, + SCE_GXM_ERROR_PATCHER_INTERNAL = 0x805B000A, + SCE_GXM_ERROR_RESERVE_FAILED = 0x805B000B, + SCE_GXM_ERROR_PROGRAM_IN_USE = 0x805B000C, + SCE_GXM_ERROR_INVALID_INDEX_COUNT = 0x805B000D, + SCE_GXM_ERROR_INVALID_POLYGON_MODE = 0x805B000E, + SCE_GXM_ERROR_INVALID_SAMPLER_RESULT_TYPE_PRECISION = 0x805B000F, + SCE_GXM_ERROR_INVALID_SAMPLER_RESULT_TYPE_COMPONENT_COUNT = 0x805B0010, + SCE_GXM_ERROR_UNIFORM_BUFFER_NOT_RESERVED = 0x805B0011, + SCE_GXM_ERROR_INVALID_AUXILIARY_SURFACE = 0x805B0013, + SCE_GXM_ERROR_INVALID_PRECOMPUTED_DRAW = 0x805B0014, + SCE_GXM_ERROR_INVALID_PRECOMPUTED_VERTEX_STATE = 0x805B0015, + SCE_GXM_ERROR_INVALID_PRECOMPUTED_FRAGMENT_STATE = 0x805B0016, + SCE_GXM_ERROR_DRIVER = 0x805B0017, +}; + +typedef void(SceGxmDisplayQueueCallback)(vm::psv::ptr callbackData); + +struct SceGxmInitializeParams +{ + u32 flags; + u32 displayQueueMaxPendingCount; + vm::psv::ptr displayQueueCallback; + u32 displayQueueCallbackDataSize; + s32 parameterBufferSize; +}; + +enum SceGxmMemoryAttribFlags : u32 +{ + SCE_GXM_MEMORY_ATTRIB_READ = 1, + SCE_GXM_MEMORY_ATTRIB_WRITE = 2, +}; + +enum SceGxmAttributeFormat : u8 +{ + SCE_GXM_ATTRIBUTE_FORMAT_U8, + SCE_GXM_ATTRIBUTE_FORMAT_S8, + SCE_GXM_ATTRIBUTE_FORMAT_U16, + SCE_GXM_ATTRIBUTE_FORMAT_S16, + SCE_GXM_ATTRIBUTE_FORMAT_U8N, + SCE_GXM_ATTRIBUTE_FORMAT_S8N, + SCE_GXM_ATTRIBUTE_FORMAT_U16N, + SCE_GXM_ATTRIBUTE_FORMAT_S16N, + SCE_GXM_ATTRIBUTE_FORMAT_F16, + SCE_GXM_ATTRIBUTE_FORMAT_F32 +}; + +enum SceGxmDepthStencilFormat : u32 +{ + SCE_GXM_DEPTH_STENCIL_FORMAT_DF32 = 0x00044000u, + SCE_GXM_DEPTH_STENCIL_FORMAT_S8 = 0x00022000u, + SCE_GXM_DEPTH_STENCIL_FORMAT_DF32_S8 = 0x00066000u, + SCE_GXM_DEPTH_STENCIL_FORMAT_S8D24 = 0x01266000u, + SCE_GXM_DEPTH_STENCIL_FORMAT_D16 = 0x02444000u +}; + +enum SceGxmPrimitiveType : u32 +{ + SCE_GXM_PRIMITIVE_TRIANGLES = 0x00000000u, + SCE_GXM_PRIMITIVE_LINES = 0x04000000u, + SCE_GXM_PRIMITIVE_POINTS = 0x08000000u, + SCE_GXM_PRIMITIVE_TRIANGLE_STRIP = 0x0c000000u, + SCE_GXM_PRIMITIVE_TRIANGLE_FAN = 0x10000000u, + SCE_GXM_PRIMITIVE_TRIANGLE_EDGES = 0x14000000u +}; + +enum SceGxmEdgeEnableFlags : u32 +{ + SCE_GXM_EDGE_ENABLE_01 = 0x00000100u, + SCE_GXM_EDGE_ENABLE_12 = 0x00000200u, + SCE_GXM_EDGE_ENABLE_20 = 0x00000400u +}; + +enum SceGxmRegionClipMode : u32 +{ + SCE_GXM_REGION_CLIP_NONE = 0x00000000u, + SCE_GXM_REGION_CLIP_ALL = 0x40000000u, + SCE_GXM_REGION_CLIP_OUTSIDE = 0x80000000u, + SCE_GXM_REGION_CLIP_INSIDE = 0xc0000000u +}; + +enum SceGxmDepthFunc : u32 +{ + SCE_GXM_DEPTH_FUNC_NEVER = 0x00000000u, + SCE_GXM_DEPTH_FUNC_LESS = 0x00400000u, + SCE_GXM_DEPTH_FUNC_EQUAL = 0x00800000u, + SCE_GXM_DEPTH_FUNC_LESS_EQUAL = 0x00c00000u, + SCE_GXM_DEPTH_FUNC_GREATER = 0x01000000u, + SCE_GXM_DEPTH_FUNC_NOT_EQUAL = 0x01400000u, + SCE_GXM_DEPTH_FUNC_GREATER_EQUAL = 0x01800000u, + SCE_GXM_DEPTH_FUNC_ALWAYS = 0x01c00000u +}; + +enum SceGxmStencilFunc : u32 +{ + SCE_GXM_STENCIL_FUNC_NEVER = 0x00000000u, + SCE_GXM_STENCIL_FUNC_LESS = 0x02000000u, + SCE_GXM_STENCIL_FUNC_EQUAL = 0x04000000u, + SCE_GXM_STENCIL_FUNC_LESS_EQUAL = 0x06000000u, + SCE_GXM_STENCIL_FUNC_GREATER = 0x08000000u, + SCE_GXM_STENCIL_FUNC_NOT_EQUAL = 0x0a000000u, + SCE_GXM_STENCIL_FUNC_GREATER_EQUAL = 0x0c000000u, + SCE_GXM_STENCIL_FUNC_ALWAYS = 0x0e000000u +}; + +enum SceGxmStencilOp : u32 +{ + SCE_GXM_STENCIL_OP_KEEP = 0x00000000u, + SCE_GXM_STENCIL_OP_ZERO = 0x00000001u, + SCE_GXM_STENCIL_OP_REPLACE = 0x00000002u, + SCE_GXM_STENCIL_OP_INCR = 0x00000003u, + SCE_GXM_STENCIL_OP_DECR = 0x00000004u, + SCE_GXM_STENCIL_OP_INVERT = 0x00000005u, + SCE_GXM_STENCIL_OP_INCR_WRAP = 0x00000006u, + SCE_GXM_STENCIL_OP_DECR_WRAP = 0x00000007u +}; + +enum SceGxmCullMode : u32 +{ + SCE_GXM_CULL_NONE = 0x00000000u, + SCE_GXM_CULL_CW = 0x00000001u, + SCE_GXM_CULL_CCW = 0x00000002u +}; + +enum SceGxmPolygonMode : u32 +{ + SCE_GXM_POLYGON_MODE_TRIANGLE_FILL = 0x00000000u, + SCE_GXM_POLYGON_MODE_LINE = 0x00008000u, + SCE_GXM_POLYGON_MODE_POINT_10UV = 0x00010000u, + SCE_GXM_POLYGON_MODE_POINT = 0x00018000u, + SCE_GXM_POLYGON_MODE_POINT_01UV = 0x00020000u, + SCE_GXM_POLYGON_MODE_TRIANGLE_LINE = 0x00028000u, + SCE_GXM_POLYGON_MODE_TRIANGLE_POINT = 0x00030000u +}; + +enum SceGxmColorSwizzle4Mode : u32 +{ + SCE_GXM_COLOR_SWIZZLE4_ABGR = 0x00000000u, + SCE_GXM_COLOR_SWIZZLE4_ARGB = 0x00100000u, + SCE_GXM_COLOR_SWIZZLE4_RGBA = 0x00200000u, + SCE_GXM_COLOR_SWIZZLE4_BGRA = 0x00300000u +}; + +enum SceGxmColorSwizzle3Mode : u32 +{ + SCE_GXM_COLOR_SWIZZLE3_BGR = 0x00000000u, + SCE_GXM_COLOR_SWIZZLE3_RGB = 0x00100000u +}; + +enum SceGxmColorSwizzle2Mode : u32 +{ + SCE_GXM_COLOR_SWIZZLE2_GR = 0x00000000u, + SCE_GXM_COLOR_SWIZZLE2_RG = 0x00100000u, + SCE_GXM_COLOR_SWIZZLE2_RA = 0x00200000u, + SCE_GXM_COLOR_SWIZZLE2_AR = 0x00300000u +}; + +enum SceGxmColorSwizzle1Mode : u32 +{ + SCE_GXM_COLOR_SWIZZLE1_R = 0x00000000u, + SCE_GXM_COLOR_SWIZZLE1_G = 0x00100000u, + SCE_GXM_COLOR_SWIZZLE1_A = 0x00100000u +}; + +enum SceGxmColorBaseFormat : u32 +{ + SCE_GXM_COLOR_BASE_FORMAT_U8U8U8U8 = 0x00000000u, + SCE_GXM_COLOR_BASE_FORMAT_U8U8U8 = 0x10000000u, + SCE_GXM_COLOR_BASE_FORMAT_U5U6U5 = 0x30000000u, + SCE_GXM_COLOR_BASE_FORMAT_U1U5U5U5 = 0x40000000u, + SCE_GXM_COLOR_BASE_FORMAT_U4U4U4U4 = 0x50000000u, + SCE_GXM_COLOR_BASE_FORMAT_U8U3U3U2 = 0x60000000u, + SCE_GXM_COLOR_BASE_FORMAT_F16 = 0xf0000000u, + SCE_GXM_COLOR_BASE_FORMAT_F16F16 = 0x00800000u, + SCE_GXM_COLOR_BASE_FORMAT_F32 = 0x10800000u, + SCE_GXM_COLOR_BASE_FORMAT_S16 = 0x20800000u, + SCE_GXM_COLOR_BASE_FORMAT_S16S16 = 0x30800000u, + SCE_GXM_COLOR_BASE_FORMAT_U16 = 0x40800000u, + SCE_GXM_COLOR_BASE_FORMAT_U16U16 = 0x50800000u, + SCE_GXM_COLOR_BASE_FORMAT_U2U10U10U10 = 0x60800000u, + SCE_GXM_COLOR_BASE_FORMAT_U8 = 0x80800000u, + SCE_GXM_COLOR_BASE_FORMAT_S8 = 0x90800000u, + SCE_GXM_COLOR_BASE_FORMAT_S5S5U6 = 0xa0800000u, + SCE_GXM_COLOR_BASE_FORMAT_U8U8 = 0xb0800000u, + SCE_GXM_COLOR_BASE_FORMAT_S8S8 = 0xc0800000u, + SCE_GXM_COLOR_BASE_FORMAT_U8S8S8U8 = 0xd0800000u, + SCE_GXM_COLOR_BASE_FORMAT_S8S8S8S8 = 0xe0800000u, + SCE_GXM_COLOR_BASE_FORMAT_F16F16F16F16 = 0x01000000u, + SCE_GXM_COLOR_BASE_FORMAT_F32F32 = 0x11000000u, + SCE_GXM_COLOR_BASE_FORMAT_F11F11F10 = 0x21000000u, + SCE_GXM_COLOR_BASE_FORMAT_SE5M9M9M9 = 0x31000000u, + SCE_GXM_COLOR_BASE_FORMAT_U2F10F10F10 = 0x41000000u +}; + +enum SceGxmColorFormat : u32 +{ + // Supported formats + + SCE_GXM_COLOR_FORMAT_U8U8U8U8_ABGR = SCE_GXM_COLOR_BASE_FORMAT_U8U8U8U8 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_U8U8U8U8_ARGB = SCE_GXM_COLOR_BASE_FORMAT_U8U8U8U8 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_U8U8U8U8_RGBA = SCE_GXM_COLOR_BASE_FORMAT_U8U8U8U8 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_U8U8U8U8_BGRA = SCE_GXM_COLOR_BASE_FORMAT_U8U8U8U8 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + SCE_GXM_COLOR_FORMAT_U8U8U8_BGR = SCE_GXM_COLOR_BASE_FORMAT_U8U8U8 | SCE_GXM_COLOR_SWIZZLE3_BGR, + SCE_GXM_COLOR_FORMAT_U8U8U8_RGB = SCE_GXM_COLOR_BASE_FORMAT_U8U8U8 | SCE_GXM_COLOR_SWIZZLE3_RGB, + + SCE_GXM_COLOR_FORMAT_U5U6U5_BGR = SCE_GXM_COLOR_BASE_FORMAT_U5U6U5 | SCE_GXM_COLOR_SWIZZLE3_BGR, + SCE_GXM_COLOR_FORMAT_U5U6U5_RGB = SCE_GXM_COLOR_BASE_FORMAT_U5U6U5 | SCE_GXM_COLOR_SWIZZLE3_RGB, + + SCE_GXM_COLOR_FORMAT_U1U5U5U5_ABGR = SCE_GXM_COLOR_BASE_FORMAT_U1U5U5U5 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_U1U5U5U5_ARGB = SCE_GXM_COLOR_BASE_FORMAT_U1U5U5U5 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_U5U5U5U1_RGBA = SCE_GXM_COLOR_BASE_FORMAT_U1U5U5U5 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_U5U5U5U1_BGRA = SCE_GXM_COLOR_BASE_FORMAT_U1U5U5U5 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + SCE_GXM_COLOR_FORMAT_U4U4U4U4_ABGR = SCE_GXM_COLOR_BASE_FORMAT_U4U4U4U4 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_U4U4U4U4_ARGB = SCE_GXM_COLOR_BASE_FORMAT_U4U4U4U4 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_U4U4U4U4_RGBA = SCE_GXM_COLOR_BASE_FORMAT_U4U4U4U4 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_U4U4U4U4_BGRA = SCE_GXM_COLOR_BASE_FORMAT_U4U4U4U4 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + SCE_GXM_COLOR_FORMAT_U8U3U3U2_ARGB = SCE_GXM_COLOR_BASE_FORMAT_U8U3U3U2, + + SCE_GXM_COLOR_FORMAT_F16_R = SCE_GXM_COLOR_BASE_FORMAT_F16 | SCE_GXM_COLOR_SWIZZLE1_R, + SCE_GXM_COLOR_FORMAT_F16_G = SCE_GXM_COLOR_BASE_FORMAT_F16 | SCE_GXM_COLOR_SWIZZLE1_G, + + SCE_GXM_COLOR_FORMAT_F16F16_GR = SCE_GXM_COLOR_BASE_FORMAT_F16F16 | SCE_GXM_COLOR_SWIZZLE2_GR, + SCE_GXM_COLOR_FORMAT_F16F16_RG = SCE_GXM_COLOR_BASE_FORMAT_F16F16 | SCE_GXM_COLOR_SWIZZLE2_RG, + + SCE_GXM_COLOR_FORMAT_F32_R = SCE_GXM_COLOR_BASE_FORMAT_F32 | SCE_GXM_COLOR_SWIZZLE1_R, + + SCE_GXM_COLOR_FORMAT_S16_R = SCE_GXM_COLOR_BASE_FORMAT_S16 | SCE_GXM_COLOR_SWIZZLE1_R, + SCE_GXM_COLOR_FORMAT_S16_G = SCE_GXM_COLOR_BASE_FORMAT_S16 | SCE_GXM_COLOR_SWIZZLE1_G, + + SCE_GXM_COLOR_FORMAT_S16S16_GR = SCE_GXM_COLOR_BASE_FORMAT_S16S16 | SCE_GXM_COLOR_SWIZZLE2_GR, + SCE_GXM_COLOR_FORMAT_S16S16_RG = SCE_GXM_COLOR_BASE_FORMAT_S16S16 | SCE_GXM_COLOR_SWIZZLE2_RG, + + SCE_GXM_COLOR_FORMAT_U16_R = SCE_GXM_COLOR_BASE_FORMAT_U16 | SCE_GXM_COLOR_SWIZZLE1_R, + SCE_GXM_COLOR_FORMAT_U16_G = SCE_GXM_COLOR_BASE_FORMAT_U16 | SCE_GXM_COLOR_SWIZZLE1_G, + + SCE_GXM_COLOR_FORMAT_U16U16_GR = SCE_GXM_COLOR_BASE_FORMAT_U16U16 | SCE_GXM_COLOR_SWIZZLE2_GR, + SCE_GXM_COLOR_FORMAT_U16U16_RG = SCE_GXM_COLOR_BASE_FORMAT_U16U16 | SCE_GXM_COLOR_SWIZZLE2_RG, + + SCE_GXM_COLOR_FORMAT_U2U10U10U10_ABGR = SCE_GXM_COLOR_BASE_FORMAT_U2U10U10U10 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_U2U10U10U10_ARGB = SCE_GXM_COLOR_BASE_FORMAT_U2U10U10U10 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_U10U10U10U2_RGBA = SCE_GXM_COLOR_BASE_FORMAT_U2U10U10U10 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_U10U10U10U2_BGRA = SCE_GXM_COLOR_BASE_FORMAT_U2U10U10U10 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + SCE_GXM_COLOR_FORMAT_U8_R = SCE_GXM_COLOR_BASE_FORMAT_U8 | SCE_GXM_COLOR_SWIZZLE1_R, + SCE_GXM_COLOR_FORMAT_U8_A = SCE_GXM_COLOR_BASE_FORMAT_U8 | SCE_GXM_COLOR_SWIZZLE1_A, + + SCE_GXM_COLOR_FORMAT_S8_R = SCE_GXM_COLOR_BASE_FORMAT_S8 | SCE_GXM_COLOR_SWIZZLE1_R, + SCE_GXM_COLOR_FORMAT_S8_A = SCE_GXM_COLOR_BASE_FORMAT_S8 | SCE_GXM_COLOR_SWIZZLE1_A, + + SCE_GXM_COLOR_FORMAT_U6S5S5_BGR = SCE_GXM_COLOR_BASE_FORMAT_S5S5U6 | SCE_GXM_COLOR_SWIZZLE3_BGR, + SCE_GXM_COLOR_FORMAT_S5S5U6_RGB = SCE_GXM_COLOR_BASE_FORMAT_S5S5U6 | SCE_GXM_COLOR_SWIZZLE3_RGB, + + SCE_GXM_COLOR_FORMAT_U8U8_GR = SCE_GXM_COLOR_BASE_FORMAT_U8U8 | SCE_GXM_COLOR_SWIZZLE2_GR, + SCE_GXM_COLOR_FORMAT_U8U8_RG = SCE_GXM_COLOR_BASE_FORMAT_U8U8 | SCE_GXM_COLOR_SWIZZLE2_RG, + SCE_GXM_COLOR_FORMAT_U8U8_RA = SCE_GXM_COLOR_BASE_FORMAT_U8U8 | SCE_GXM_COLOR_SWIZZLE2_RA, + SCE_GXM_COLOR_FORMAT_U8U8_AR = SCE_GXM_COLOR_BASE_FORMAT_U8U8 | SCE_GXM_COLOR_SWIZZLE2_AR, + + SCE_GXM_COLOR_FORMAT_S8S8_GR = SCE_GXM_COLOR_BASE_FORMAT_S8S8 | SCE_GXM_COLOR_SWIZZLE2_GR, + SCE_GXM_COLOR_FORMAT_S8S8_RG = SCE_GXM_COLOR_BASE_FORMAT_S8S8 | SCE_GXM_COLOR_SWIZZLE2_RG, + SCE_GXM_COLOR_FORMAT_S8S8_RA = SCE_GXM_COLOR_BASE_FORMAT_S8S8 | SCE_GXM_COLOR_SWIZZLE2_RA, + SCE_GXM_COLOR_FORMAT_S8S8_AR = SCE_GXM_COLOR_BASE_FORMAT_S8S8 | SCE_GXM_COLOR_SWIZZLE2_AR, + + SCE_GXM_COLOR_FORMAT_U8S8S8U8_ABGR = SCE_GXM_COLOR_BASE_FORMAT_U8S8S8U8 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_U8U8S8S8_ARGB = SCE_GXM_COLOR_BASE_FORMAT_U8S8S8U8 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_U8S8S8U8_RGBA = SCE_GXM_COLOR_BASE_FORMAT_U8S8S8U8 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_S8S8U8U8_BGRA = SCE_GXM_COLOR_BASE_FORMAT_U8S8S8U8 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + SCE_GXM_COLOR_FORMAT_S8S8S8S8_ABGR = SCE_GXM_COLOR_BASE_FORMAT_S8S8S8S8 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_S8S8S8S8_ARGB = SCE_GXM_COLOR_BASE_FORMAT_S8S8S8S8 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_S8S8S8S8_RGBA = SCE_GXM_COLOR_BASE_FORMAT_S8S8S8S8 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_S8S8S8S8_BGRA = SCE_GXM_COLOR_BASE_FORMAT_S8S8S8S8 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + SCE_GXM_COLOR_FORMAT_F16F16F16F16_ABGR = SCE_GXM_COLOR_BASE_FORMAT_F16F16F16F16 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_F16F16F16F16_ARGB = SCE_GXM_COLOR_BASE_FORMAT_F16F16F16F16 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_F16F16F16F16_RGBA = SCE_GXM_COLOR_BASE_FORMAT_F16F16F16F16 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_F16F16F16F16_BGRA = SCE_GXM_COLOR_BASE_FORMAT_F16F16F16F16 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + SCE_GXM_COLOR_FORMAT_F32F32_GR = SCE_GXM_COLOR_BASE_FORMAT_F32F32 | SCE_GXM_COLOR_SWIZZLE2_GR, + SCE_GXM_COLOR_FORMAT_F32F32_RG = SCE_GXM_COLOR_BASE_FORMAT_F32F32 | SCE_GXM_COLOR_SWIZZLE2_RG, + + SCE_GXM_COLOR_FORMAT_F10F11F11_BGR = SCE_GXM_COLOR_BASE_FORMAT_F11F11F10 | SCE_GXM_COLOR_SWIZZLE3_BGR, + SCE_GXM_COLOR_FORMAT_F11F11F10_RGB = SCE_GXM_COLOR_BASE_FORMAT_F11F11F10 | SCE_GXM_COLOR_SWIZZLE3_RGB, + + SCE_GXM_COLOR_FORMAT_SE5M9M9M9_BGR = SCE_GXM_COLOR_BASE_FORMAT_SE5M9M9M9 | SCE_GXM_COLOR_SWIZZLE3_BGR, + SCE_GXM_COLOR_FORMAT_SE5M9M9M9_RGB = SCE_GXM_COLOR_BASE_FORMAT_SE5M9M9M9 | SCE_GXM_COLOR_SWIZZLE3_RGB, + + SCE_GXM_COLOR_FORMAT_U2F10F10F10_ABGR = SCE_GXM_COLOR_BASE_FORMAT_U2F10F10F10 | SCE_GXM_COLOR_SWIZZLE4_ABGR, + SCE_GXM_COLOR_FORMAT_U2F10F10F10_ARGB = SCE_GXM_COLOR_BASE_FORMAT_U2F10F10F10 | SCE_GXM_COLOR_SWIZZLE4_ARGB, + SCE_GXM_COLOR_FORMAT_F10F10F10U2_RGBA = SCE_GXM_COLOR_BASE_FORMAT_U2F10F10F10 | SCE_GXM_COLOR_SWIZZLE4_RGBA, + SCE_GXM_COLOR_FORMAT_F10F10F10U2_BGRA = SCE_GXM_COLOR_BASE_FORMAT_U2F10F10F10 | SCE_GXM_COLOR_SWIZZLE4_BGRA, + + // Legacy formats + + SCE_GXM_COLOR_FORMAT_A8B8G8R8 = SCE_GXM_COLOR_FORMAT_U8U8U8U8_ABGR, + SCE_GXM_COLOR_FORMAT_A8R8G8B8 = SCE_GXM_COLOR_FORMAT_U8U8U8U8_ARGB, + SCE_GXM_COLOR_FORMAT_R5G6B5 = SCE_GXM_COLOR_FORMAT_U5U6U5_RGB, + SCE_GXM_COLOR_FORMAT_A1R5G5B5 = SCE_GXM_COLOR_FORMAT_U1U5U5U5_ARGB, + SCE_GXM_COLOR_FORMAT_A4R4G4B4 = SCE_GXM_COLOR_FORMAT_U4U4U4U4_ARGB, + SCE_GXM_COLOR_FORMAT_A8 = SCE_GXM_COLOR_FORMAT_U8_A +}; + +enum SceGxmColorSurfaceType : u32 +{ + SCE_GXM_COLOR_SURFACE_LINEAR = 0x00000000u, + SCE_GXM_COLOR_SURFACE_TILED = 0x04000000u, + SCE_GXM_COLOR_SURFACE_SWIZZLED = 0x08000000u +}; + +enum SceGxmColorSurfaceGammaMode : u32 +{ + SCE_GXM_COLOR_SURFACE_GAMMA_NONE = 0x00000000u, + SCE_GXM_COLOR_SURFACE_GAMMA_R = 0x00001000u, + SCE_GXM_COLOR_SURFACE_GAMMA_GR = 0x00003000u, + SCE_GXM_COLOR_SURFACE_GAMMA_BGR = 0x00001000u +}; + +enum SceGxmColorSurfaceDitherMode : u32 +{ + SCE_GXM_COLOR_SURFACE_DITHER_DISABLED = 0x00000000u, + SCE_GXM_COLOR_SURFACE_DITHER_ENABLED = 0x00000008u +}; + +enum SceGxmDepthStencilSurfaceType : u32 +{ + SCE_GXM_DEPTH_STENCIL_SURFACE_LINEAR = 0x00000000u, + SCE_GXM_DEPTH_STENCIL_SURFACE_TILED = 0x00011000u +}; + +enum SceGxmOutputRegisterFormat : s32 +{ + SCE_GXM_OUTPUT_REGISTER_FORMAT_DECLARED, + SCE_GXM_OUTPUT_REGISTER_FORMAT_UCHAR4, + SCE_GXM_OUTPUT_REGISTER_FORMAT_CHAR4, + SCE_GXM_OUTPUT_REGISTER_FORMAT_USHORT2, + SCE_GXM_OUTPUT_REGISTER_FORMAT_SHORT2, + SCE_GXM_OUTPUT_REGISTER_FORMAT_HALF4, + SCE_GXM_OUTPUT_REGISTER_FORMAT_HALF2, + SCE_GXM_OUTPUT_REGISTER_FORMAT_FLOAT2, + SCE_GXM_OUTPUT_REGISTER_FORMAT_FLOAT +}; + +enum SceGxmMultisampleMode : u16 +{ + SCE_GXM_MULTISAMPLE_NONE, + SCE_GXM_MULTISAMPLE_2X, + SCE_GXM_MULTISAMPLE_4X +}; + +enum SceGxmTextureSwizzle4Mode : u32 +{ + SCE_GXM_TEXTURE_SWIZZLE4_ABGR = 0x00000000u, + SCE_GXM_TEXTURE_SWIZZLE4_ARGB = 0x00001000u, + SCE_GXM_TEXTURE_SWIZZLE4_RGBA = 0x00002000u, + SCE_GXM_TEXTURE_SWIZZLE4_BGRA = 0x00003000u, + SCE_GXM_TEXTURE_SWIZZLE4_1BGR = 0x00004000u, + SCE_GXM_TEXTURE_SWIZZLE4_1RGB = 0x00005000u, + SCE_GXM_TEXTURE_SWIZZLE4_RGB1 = 0x00006000u, + SCE_GXM_TEXTURE_SWIZZLE4_BGR1 = 0x00007000u +}; + +enum SceGxmTextureSwizzle3Mode : u32 +{ + SCE_GXM_TEXTURE_SWIZZLE3_BGR = 0x00000000u, + SCE_GXM_TEXTURE_SWIZZLE3_RGB = 0x00001000u +}; + +enum SceGxmTextureSwizzle2Mode : u32 +{ + SCE_GXM_TEXTURE_SWIZZLE2_GR = 0x00000000u, + SCE_GXM_TEXTURE_SWIZZLE2_00GR = 0x00001000u, + SCE_GXM_TEXTURE_SWIZZLE2_GRRR = 0x00002000u, + SCE_GXM_TEXTURE_SWIZZLE2_RGGG = 0x00003000u, + SCE_GXM_TEXTURE_SWIZZLE2_GRGR = 0x00004000u, + SCE_GXM_TEXTURE_SWIZZLE2_00RG = 0x00005000u +}; + +enum SceGxmTextureSwizzle2ModeAlt : u32 +{ + SCE_GXM_TEXTURE_SWIZZLE2_SD = 0x00000000u, + SCE_GXM_TEXTURE_SWIZZLE2_DS = 0x00001000u +}; + +enum SceGxmTextureSwizzle1Mode : u32 +{ + SCE_GXM_TEXTURE_SWIZZLE1_R = 0x00000000u, + SCE_GXM_TEXTURE_SWIZZLE1_000R = 0x00001000u, + SCE_GXM_TEXTURE_SWIZZLE1_111R = 0x00002000u, + SCE_GXM_TEXTURE_SWIZZLE1_RRRR = 0x00003000u, + SCE_GXM_TEXTURE_SWIZZLE1_0RRR = 0x00004000u, + SCE_GXM_TEXTURE_SWIZZLE1_1RRR = 0x00005000u, + SCE_GXM_TEXTURE_SWIZZLE1_R000 = 0x00006000u, + SCE_GXM_TEXTURE_SWIZZLE1_R111 = 0x00007000u +}; + +enum SceGxmTextureSwizzleYUV422Mode : u32 +{ + SCE_GXM_TEXTURE_SWIZZLE_YUYV_CSC0 = 0x00000000u, + SCE_GXM_TEXTURE_SWIZZLE_YVYU_CSC0 = 0x00001000u, + SCE_GXM_TEXTURE_SWIZZLE_UYVY_CSC0 = 0x00002000u, + SCE_GXM_TEXTURE_SWIZZLE_VYUY_CSC0 = 0x00003000u, + SCE_GXM_TEXTURE_SWIZZLE_YUYV_CSC1 = 0x00004000u, + SCE_GXM_TEXTURE_SWIZZLE_YVYU_CSC1 = 0x00005000u, + SCE_GXM_TEXTURE_SWIZZLE_UYVY_CSC1 = 0x00006000u, + SCE_GXM_TEXTURE_SWIZZLE_VYUY_CSC1 = 0x00007000u +}; + +enum SceGxmTextureSwizzleYUV420Mode : u32 +{ + SCE_GXM_TEXTURE_SWIZZLE_YUV_CSC0 = 0x00000000u, + SCE_GXM_TEXTURE_SWIZZLE_YVU_CSC0 = 0x00001000u, + SCE_GXM_TEXTURE_SWIZZLE_YUV_CSC1 = 0x00002000u, + SCE_GXM_TEXTURE_SWIZZLE_YVU_CSC1 = 0x00003000u +}; + +enum SceGxmTextureBaseFormat : u32 +{ + SCE_GXM_TEXTURE_BASE_FORMAT_U8 = 0x00000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_S8 = 0x01000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 = 0x02000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_U8U3U3U2 = 0x03000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 = 0x04000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_U5U6U5 = 0x05000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_S5S5U6 = 0x06000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_U8U8 = 0x07000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_S8S8 = 0x08000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_U16 = 0x09000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_S16 = 0x0a000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_F16 = 0x0b000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 = 0x0c000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 = 0x0d000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 = 0x0e000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_U16U16 = 0x0f000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_S16S16 = 0x10000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_F16F16 = 0x11000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_F32 = 0x12000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_F32M = 0x13000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_X8S8S8U8 = 0x14000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_X8U24 = 0x15000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_U32 = 0x17000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_S32 = 0x18000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_SE5M9M9M9 = 0x19000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_F11F11F10 = 0x1a000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 = 0x1b000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 = 0x1c000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 = 0x1d000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_F32F32 = 0x1e000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_U32U32 = 0x1f000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_PVRT2BPP = 0x80000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_PVRT4BPP = 0x81000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_PVRTII2BPP = 0x82000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_PVRTII4BPP = 0x83000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_UBC1 = 0x85000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_UBC2 = 0x86000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_UBC3 = 0x87000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P2 = 0x90000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P3 = 0x91000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 = 0x92000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_P4 = 0x94000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_P8 = 0x95000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8 = 0x98000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8 = 0x99000000u, + SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 = 0x9a000000u +}; + +enum SceGxmTextureFormat : u32 +{ + // Supported formats + + SCE_GXM_TEXTURE_FORMAT_U8_000R = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_U8_111R = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_U8_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_U8_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_U8_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_U8_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_U8_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_U8_R = SCE_GXM_TEXTURE_BASE_FORMAT_U8 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_S8_000R = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_S8_111R = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_S8_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_S8_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_S8_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_S8_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_S8_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_S8_R = SCE_GXM_TEXTURE_BASE_FORMAT_S8 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_U4U4U4U4_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_U4U4U4U4_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_U4U4U4U4_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_U4U4U4U4_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X4U4U4U4_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X4U4U4U4_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_U4U4U4X4_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_U4U4U4X4_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_U4U4U4U4 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_U8U3U3U2_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_U8U3U3U2, + + SCE_GXM_TEXTURE_FORMAT_U1U5U5U5_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_U1U5U5U5_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_U5U5U5U1_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_U5U5U5U1_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X1U5U5U5_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X1U5U5U5_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_U5U5U5X1_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_U5U5U5X1_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_U1U5U5U5 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_U5U6U5_BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U5U6U5 | SCE_GXM_TEXTURE_SWIZZLE3_BGR, + SCE_GXM_TEXTURE_FORMAT_U5U6U5_RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U5U6U5 | SCE_GXM_TEXTURE_SWIZZLE3_RGB, + + SCE_GXM_TEXTURE_FORMAT_U6S5S5_BGR = SCE_GXM_TEXTURE_BASE_FORMAT_S5S5U6 | SCE_GXM_TEXTURE_SWIZZLE3_BGR, + SCE_GXM_TEXTURE_FORMAT_S5S5U6_RGB = SCE_GXM_TEXTURE_BASE_FORMAT_S5S5U6 | SCE_GXM_TEXTURE_SWIZZLE3_RGB, + + SCE_GXM_TEXTURE_FORMAT_U8U8_00GR = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8 | SCE_GXM_TEXTURE_SWIZZLE2_00GR, + SCE_GXM_TEXTURE_FORMAT_U8U8_GRRR = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8 | SCE_GXM_TEXTURE_SWIZZLE2_GRRR, + SCE_GXM_TEXTURE_FORMAT_U8U8_RGGG = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8 | SCE_GXM_TEXTURE_SWIZZLE2_RGGG, + SCE_GXM_TEXTURE_FORMAT_U8U8_GRGR = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8 | SCE_GXM_TEXTURE_SWIZZLE2_GRGR, + SCE_GXM_TEXTURE_FORMAT_U8U8_00RG = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8 | SCE_GXM_TEXTURE_SWIZZLE2_00RG, + SCE_GXM_TEXTURE_FORMAT_U8U8_GR = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8 | SCE_GXM_TEXTURE_SWIZZLE2_GR, + + SCE_GXM_TEXTURE_FORMAT_S8S8_00GR = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8 | SCE_GXM_TEXTURE_SWIZZLE2_00GR, + SCE_GXM_TEXTURE_FORMAT_S8S8_GRRR = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8 | SCE_GXM_TEXTURE_SWIZZLE2_GRRR, + SCE_GXM_TEXTURE_FORMAT_S8S8_RGGG = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8 | SCE_GXM_TEXTURE_SWIZZLE2_RGGG, + SCE_GXM_TEXTURE_FORMAT_S8S8_GRGR = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8 | SCE_GXM_TEXTURE_SWIZZLE2_GRGR, + SCE_GXM_TEXTURE_FORMAT_S8S8_00RG = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8 | SCE_GXM_TEXTURE_SWIZZLE2_00RG, + SCE_GXM_TEXTURE_FORMAT_S8S8_GR = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8 | SCE_GXM_TEXTURE_SWIZZLE2_GR, + + SCE_GXM_TEXTURE_FORMAT_U16_000R = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_U16_111R = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_U16_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_U16_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_U16_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_U16_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_U16_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_U16_R = SCE_GXM_TEXTURE_BASE_FORMAT_U16 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_S16_000R = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_S16_111R = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_S16_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_S16_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_S16_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_S16_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_S16_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_S16_R = SCE_GXM_TEXTURE_BASE_FORMAT_S16 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_F16_000R = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_F16_111R = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_F16_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_F16_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_F16_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_F16_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_F16_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_F16_R = SCE_GXM_TEXTURE_BASE_FORMAT_F16 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_U8U8U8U8_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_U8U8U8U8_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_U8U8U8U8_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_U8U8U8U8_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X8U8U8U8_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_U8U8U8X8_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_U8U8U8X8_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_S8S8S8S8_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_S8S8S8S8_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_S8S8S8S8_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_S8S8S8S8_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X8S8S8S8_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X8S8S8S8_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_S8S8S8X8_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_S8S8S8X8_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_U2U10U10U10_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_U2U10U10U10_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_U10U10U10U2_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_U10U10U10U2_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X2U10U10U10_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X2U10U10U10_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_U10U10U10X2_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_U10U10U10X2_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_U2U10U10U10 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_U16U16_00GR = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16 | SCE_GXM_TEXTURE_SWIZZLE2_00GR, + SCE_GXM_TEXTURE_FORMAT_U16U16_GRRR = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16 | SCE_GXM_TEXTURE_SWIZZLE2_GRRR, + SCE_GXM_TEXTURE_FORMAT_U16U16_RGGG = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16 | SCE_GXM_TEXTURE_SWIZZLE2_RGGG, + SCE_GXM_TEXTURE_FORMAT_U16U16_GRGR = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16 | SCE_GXM_TEXTURE_SWIZZLE2_GRGR, + SCE_GXM_TEXTURE_FORMAT_U16U16_00RG = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16 | SCE_GXM_TEXTURE_SWIZZLE2_00RG, + SCE_GXM_TEXTURE_FORMAT_U16U16_GR = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16 | SCE_GXM_TEXTURE_SWIZZLE2_GR, + + SCE_GXM_TEXTURE_FORMAT_S16S16_00GR = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16 | SCE_GXM_TEXTURE_SWIZZLE2_00GR, + SCE_GXM_TEXTURE_FORMAT_S16S16_GRRR = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16 | SCE_GXM_TEXTURE_SWIZZLE2_GRRR, + SCE_GXM_TEXTURE_FORMAT_S16S16_RGGG = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16 | SCE_GXM_TEXTURE_SWIZZLE2_RGGG, + SCE_GXM_TEXTURE_FORMAT_S16S16_GRGR = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16 | SCE_GXM_TEXTURE_SWIZZLE2_GRGR, + SCE_GXM_TEXTURE_FORMAT_S16S16_00RG = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16 | SCE_GXM_TEXTURE_SWIZZLE2_00RG, + SCE_GXM_TEXTURE_FORMAT_S16S16_GR = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16 | SCE_GXM_TEXTURE_SWIZZLE2_GR, + + SCE_GXM_TEXTURE_FORMAT_F16F16_00GR = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16 | SCE_GXM_TEXTURE_SWIZZLE2_00GR, + SCE_GXM_TEXTURE_FORMAT_F16F16_GRRR = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16 | SCE_GXM_TEXTURE_SWIZZLE2_GRRR, + SCE_GXM_TEXTURE_FORMAT_F16F16_RGGG = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16 | SCE_GXM_TEXTURE_SWIZZLE2_RGGG, + SCE_GXM_TEXTURE_FORMAT_F16F16_GRGR = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16 | SCE_GXM_TEXTURE_SWIZZLE2_GRGR, + SCE_GXM_TEXTURE_FORMAT_F16F16_00RG = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16 | SCE_GXM_TEXTURE_SWIZZLE2_00RG, + SCE_GXM_TEXTURE_FORMAT_F16F16_GR = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16 | SCE_GXM_TEXTURE_SWIZZLE2_GR, + + SCE_GXM_TEXTURE_FORMAT_F32_000R = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_F32_111R = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_F32_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_F32_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_F32_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_F32_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_F32_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_F32_R = SCE_GXM_TEXTURE_BASE_FORMAT_F32 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_F32M_000R = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_F32M_111R = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_F32M_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_F32M_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_F32M_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_F32M_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_F32M_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_F32M_R = SCE_GXM_TEXTURE_BASE_FORMAT_F32M | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_X8S8S8U8_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_X8S8S8U8 | SCE_GXM_TEXTURE_SWIZZLE3_BGR, + SCE_GXM_TEXTURE_FORMAT_X8U8S8S8_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_X8S8S8U8 | SCE_GXM_TEXTURE_SWIZZLE3_RGB, + + SCE_GXM_TEXTURE_FORMAT_X8U24_SD = SCE_GXM_TEXTURE_BASE_FORMAT_X8U24 | SCE_GXM_TEXTURE_SWIZZLE2_SD, + SCE_GXM_TEXTURE_FORMAT_U24X8_DS = SCE_GXM_TEXTURE_BASE_FORMAT_X8U24 | SCE_GXM_TEXTURE_SWIZZLE2_DS, + + SCE_GXM_TEXTURE_FORMAT_U32_000R = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_U32_111R = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_U32_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_U32_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_U32_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_U32_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_U32_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_U32_R = SCE_GXM_TEXTURE_BASE_FORMAT_U32 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_S32_000R = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_000R, + SCE_GXM_TEXTURE_FORMAT_S32_111R = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_111R, + SCE_GXM_TEXTURE_FORMAT_S32_RRRR = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_RRRR, + SCE_GXM_TEXTURE_FORMAT_S32_0RRR = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_0RRR, + SCE_GXM_TEXTURE_FORMAT_S32_1RRR = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_1RRR, + SCE_GXM_TEXTURE_FORMAT_S32_R000 = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_R000, + SCE_GXM_TEXTURE_FORMAT_S32_R111 = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_R111, + SCE_GXM_TEXTURE_FORMAT_S32_R = SCE_GXM_TEXTURE_BASE_FORMAT_S32 | SCE_GXM_TEXTURE_SWIZZLE1_R, + + SCE_GXM_TEXTURE_FORMAT_SE5M9M9M9_BGR = SCE_GXM_TEXTURE_BASE_FORMAT_SE5M9M9M9 | SCE_GXM_TEXTURE_SWIZZLE3_BGR, + SCE_GXM_TEXTURE_FORMAT_SE5M9M9M9_RGB = SCE_GXM_TEXTURE_BASE_FORMAT_SE5M9M9M9 | SCE_GXM_TEXTURE_SWIZZLE3_RGB, + + SCE_GXM_TEXTURE_FORMAT_F10F11F11_BGR = SCE_GXM_TEXTURE_BASE_FORMAT_F11F11F10 | SCE_GXM_TEXTURE_SWIZZLE3_BGR, + SCE_GXM_TEXTURE_FORMAT_F11F11F10_RGB = SCE_GXM_TEXTURE_BASE_FORMAT_F11F11F10 | SCE_GXM_TEXTURE_SWIZZLE3_RGB, + + SCE_GXM_TEXTURE_FORMAT_F16F16F16F16_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_F16F16F16F16_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_F16F16F16F16_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_F16F16F16F16_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X16F16F16F16_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X16F16F16F16_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_F16F16F16X16_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_F16F16F16X16_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_F16F16F16F16 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_U16U16U16U16_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_U16U16U16U16_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_U16U16U16U16_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_U16U16U16U16_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X16U16U16U16_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X16U16U16U16_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_U16U16U16X16_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_U16U16U16X16_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_U16U16U16U16 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_S16S16S16S16_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_S16S16S16S16_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_S16S16S16S16_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_S16S16S16S16_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X16S16S16S16_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X16S16S16S16_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_S16S16S16X16_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_S16S16S16X16_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_S16S16S16S16 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_F32F32_00GR = SCE_GXM_TEXTURE_BASE_FORMAT_F32F32 | SCE_GXM_TEXTURE_SWIZZLE2_00GR, + SCE_GXM_TEXTURE_FORMAT_F32F32_GRRR = SCE_GXM_TEXTURE_BASE_FORMAT_F32F32 | SCE_GXM_TEXTURE_SWIZZLE2_GRRR, + SCE_GXM_TEXTURE_FORMAT_F32F32_RGGG = SCE_GXM_TEXTURE_BASE_FORMAT_F32F32 | SCE_GXM_TEXTURE_SWIZZLE2_RGGG, + SCE_GXM_TEXTURE_FORMAT_F32F32_GRGR = SCE_GXM_TEXTURE_BASE_FORMAT_F32F32 | SCE_GXM_TEXTURE_SWIZZLE2_GRGR, + SCE_GXM_TEXTURE_FORMAT_F32F32_00RG = SCE_GXM_TEXTURE_BASE_FORMAT_F32F32 | SCE_GXM_TEXTURE_SWIZZLE2_00RG, + SCE_GXM_TEXTURE_FORMAT_F32F32_GR = SCE_GXM_TEXTURE_BASE_FORMAT_F32F32 | SCE_GXM_TEXTURE_SWIZZLE2_GR, + + SCE_GXM_TEXTURE_FORMAT_U32U32_00GR = SCE_GXM_TEXTURE_BASE_FORMAT_U32U32 | SCE_GXM_TEXTURE_SWIZZLE2_00GR, + SCE_GXM_TEXTURE_FORMAT_U32U32_GRRR = SCE_GXM_TEXTURE_BASE_FORMAT_U32U32 | SCE_GXM_TEXTURE_SWIZZLE2_GRRR, + SCE_GXM_TEXTURE_FORMAT_U32U32_RGGG = SCE_GXM_TEXTURE_BASE_FORMAT_U32U32 | SCE_GXM_TEXTURE_SWIZZLE2_RGGG, + SCE_GXM_TEXTURE_FORMAT_U32U32_GRGR = SCE_GXM_TEXTURE_BASE_FORMAT_U32U32 | SCE_GXM_TEXTURE_SWIZZLE2_GRGR, + SCE_GXM_TEXTURE_FORMAT_U32U32_00RG = SCE_GXM_TEXTURE_BASE_FORMAT_U32U32 | SCE_GXM_TEXTURE_SWIZZLE2_00RG, + SCE_GXM_TEXTURE_FORMAT_U32U32_GR = SCE_GXM_TEXTURE_BASE_FORMAT_U32U32 | SCE_GXM_TEXTURE_SWIZZLE2_GR, + + SCE_GXM_TEXTURE_FORMAT_PVRT2BPP_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRT2BPP | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRT2BPP_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRT2BPP | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + + SCE_GXM_TEXTURE_FORMAT_PVRT4BPP_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRT4BPP | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRT4BPP_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRT4BPP | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + + SCE_GXM_TEXTURE_FORMAT_PVRTII2BPP_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRTII2BPP | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRTII2BPP_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRTII2BPP | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + + SCE_GXM_TEXTURE_FORMAT_PVRTII4BPP_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRTII4BPP | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRTII4BPP_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_PVRTII4BPP | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + + SCE_GXM_TEXTURE_FORMAT_UBC1_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_UBC1 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + + SCE_GXM_TEXTURE_FORMAT_UBC2_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_UBC2 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + + SCE_GXM_TEXTURE_FORMAT_UBC3_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_UBC3 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + + SCE_GXM_TEXTURE_FORMAT_YUV420P2_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P2 | SCE_GXM_TEXTURE_SWIZZLE_YUV_CSC0, + SCE_GXM_TEXTURE_FORMAT_YVU420P2_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P2 | SCE_GXM_TEXTURE_SWIZZLE_YVU_CSC0, + SCE_GXM_TEXTURE_FORMAT_YUV420P2_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P2 | SCE_GXM_TEXTURE_SWIZZLE_YUV_CSC1, + SCE_GXM_TEXTURE_FORMAT_YVU420P2_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P2 | SCE_GXM_TEXTURE_SWIZZLE_YVU_CSC1, + + SCE_GXM_TEXTURE_FORMAT_YUV420P3_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P3 | SCE_GXM_TEXTURE_SWIZZLE_YUV_CSC0, + SCE_GXM_TEXTURE_FORMAT_YVU420P3_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P3 | SCE_GXM_TEXTURE_SWIZZLE_YVU_CSC0, + SCE_GXM_TEXTURE_FORMAT_YUV420P3_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P3 | SCE_GXM_TEXTURE_SWIZZLE_YUV_CSC1, + SCE_GXM_TEXTURE_FORMAT_YVU420P3_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV420P3 | SCE_GXM_TEXTURE_SWIZZLE_YVU_CSC1, + + SCE_GXM_TEXTURE_FORMAT_YUYV422_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_YUYV_CSC0, + SCE_GXM_TEXTURE_FORMAT_YVYU422_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_YVYU_CSC0, + SCE_GXM_TEXTURE_FORMAT_UYVY422_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_UYVY_CSC0, + SCE_GXM_TEXTURE_FORMAT_VYUY422_CSC0 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_VYUY_CSC0, + SCE_GXM_TEXTURE_FORMAT_YUYV422_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_YUYV_CSC1, + SCE_GXM_TEXTURE_FORMAT_YVYU422_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_YVYU_CSC1, + SCE_GXM_TEXTURE_FORMAT_UYVY422_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_UYVY_CSC1, + SCE_GXM_TEXTURE_FORMAT_VYUY422_CSC1 = SCE_GXM_TEXTURE_BASE_FORMAT_YUV422 | SCE_GXM_TEXTURE_SWIZZLE_VYUY_CSC1, + + SCE_GXM_TEXTURE_FORMAT_P4_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_P4_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_P4_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_P4_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_P4_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_P4_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_P4_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_P4_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_P4 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_P8_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_P8_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_P8_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_P8_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_P8_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_P8_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_P8_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_P8_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_P8 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + SCE_GXM_TEXTURE_FORMAT_U8U8U8_BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE3_BGR, + SCE_GXM_TEXTURE_FORMAT_U8U8U8_RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U8U8U8 | SCE_GXM_TEXTURE_SWIZZLE3_RGB, + + SCE_GXM_TEXTURE_FORMAT_S8S8S8_BGR = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE3_BGR, + SCE_GXM_TEXTURE_FORMAT_S8S8S8_RGB = SCE_GXM_TEXTURE_BASE_FORMAT_S8S8S8 | SCE_GXM_TEXTURE_SWIZZLE3_RGB, + + SCE_GXM_TEXTURE_FORMAT_U2F10F10F10_ABGR = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_ABGR, + SCE_GXM_TEXTURE_FORMAT_U2F10F10F10_ARGB = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_ARGB, + SCE_GXM_TEXTURE_FORMAT_F10F10F10U2_RGBA = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_RGBA, + SCE_GXM_TEXTURE_FORMAT_F10F10F10U2_BGRA = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_BGRA, + SCE_GXM_TEXTURE_FORMAT_X2F10F10F10_1BGR = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_1BGR, + SCE_GXM_TEXTURE_FORMAT_X2F10F10F10_1RGB = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_1RGB, + SCE_GXM_TEXTURE_FORMAT_F10F10F10X2_RGB1 = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_RGB1, + SCE_GXM_TEXTURE_FORMAT_F10F10F10X2_BGR1 = SCE_GXM_TEXTURE_BASE_FORMAT_U2F10F10F10 | SCE_GXM_TEXTURE_SWIZZLE4_BGR1, + + // Legacy formats + + SCE_GXM_TEXTURE_FORMAT_L8 = SCE_GXM_TEXTURE_FORMAT_U8_1RRR, + SCE_GXM_TEXTURE_FORMAT_A8 = SCE_GXM_TEXTURE_FORMAT_U8_R000, + SCE_GXM_TEXTURE_FORMAT_R8 = SCE_GXM_TEXTURE_FORMAT_U8_000R, + SCE_GXM_TEXTURE_FORMAT_A4R4G4B4 = SCE_GXM_TEXTURE_FORMAT_U4U4U4U4_ARGB, + SCE_GXM_TEXTURE_FORMAT_A1R5G5B5 = SCE_GXM_TEXTURE_FORMAT_U1U5U5U5_ARGB, + SCE_GXM_TEXTURE_FORMAT_R5G6B5 = SCE_GXM_TEXTURE_FORMAT_U5U6U5_RGB, + SCE_GXM_TEXTURE_FORMAT_A8L8 = SCE_GXM_TEXTURE_FORMAT_U8U8_GRRR, + SCE_GXM_TEXTURE_FORMAT_L8A8 = SCE_GXM_TEXTURE_FORMAT_U8U8_RGGG, + SCE_GXM_TEXTURE_FORMAT_G8R8 = SCE_GXM_TEXTURE_FORMAT_U8U8_00GR, + SCE_GXM_TEXTURE_FORMAT_L16 = SCE_GXM_TEXTURE_FORMAT_U16_1RRR, + SCE_GXM_TEXTURE_FORMAT_A16 = SCE_GXM_TEXTURE_FORMAT_U16_R000, + SCE_GXM_TEXTURE_FORMAT_R16 = SCE_GXM_TEXTURE_FORMAT_U16_000R, + SCE_GXM_TEXTURE_FORMAT_D16 = SCE_GXM_TEXTURE_FORMAT_U16_R, + SCE_GXM_TEXTURE_FORMAT_LF16 = SCE_GXM_TEXTURE_FORMAT_F16_1RRR, + SCE_GXM_TEXTURE_FORMAT_AF16 = SCE_GXM_TEXTURE_FORMAT_F16_R000, + SCE_GXM_TEXTURE_FORMAT_RF16 = SCE_GXM_TEXTURE_FORMAT_F16_000R, + SCE_GXM_TEXTURE_FORMAT_A8R8G8B8 = SCE_GXM_TEXTURE_FORMAT_U8U8U8U8_ARGB, + SCE_GXM_TEXTURE_FORMAT_A8B8G8R8 = SCE_GXM_TEXTURE_FORMAT_U8U8U8U8_ABGR, + SCE_GXM_TEXTURE_FORMAT_AF16LF16 = SCE_GXM_TEXTURE_FORMAT_F16F16_GRRR, + SCE_GXM_TEXTURE_FORMAT_LF16AF16 = SCE_GXM_TEXTURE_FORMAT_F16F16_RGGG, + SCE_GXM_TEXTURE_FORMAT_GF16RF16 = SCE_GXM_TEXTURE_FORMAT_F16F16_00GR, + SCE_GXM_TEXTURE_FORMAT_LF32M = SCE_GXM_TEXTURE_FORMAT_F32M_1RRR, + SCE_GXM_TEXTURE_FORMAT_AF32M = SCE_GXM_TEXTURE_FORMAT_F32M_R000, + SCE_GXM_TEXTURE_FORMAT_RF32M = SCE_GXM_TEXTURE_FORMAT_F32M_000R, + SCE_GXM_TEXTURE_FORMAT_DF32M = SCE_GXM_TEXTURE_FORMAT_F32M_R, + SCE_GXM_TEXTURE_FORMAT_VYUY = SCE_GXM_TEXTURE_FORMAT_VYUY422_CSC0, + SCE_GXM_TEXTURE_FORMAT_YVYU = SCE_GXM_TEXTURE_FORMAT_YVYU422_CSC0, + SCE_GXM_TEXTURE_FORMAT_UBC1 = SCE_GXM_TEXTURE_FORMAT_UBC1_ABGR, + SCE_GXM_TEXTURE_FORMAT_UBC2 = SCE_GXM_TEXTURE_FORMAT_UBC2_ABGR, + SCE_GXM_TEXTURE_FORMAT_UBC3 = SCE_GXM_TEXTURE_FORMAT_UBC3_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRT2BPP = SCE_GXM_TEXTURE_FORMAT_PVRT2BPP_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRT4BPP = SCE_GXM_TEXTURE_FORMAT_PVRT4BPP_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRTII2BPP = SCE_GXM_TEXTURE_FORMAT_PVRTII2BPP_ABGR, + SCE_GXM_TEXTURE_FORMAT_PVRTII4BPP = SCE_GXM_TEXTURE_FORMAT_PVRTII4BPP_ABGR +}; + +enum SceGxmTextureAnisoMode : u32 +{ + SCE_GXM_TEXTURE_ANISO_DISABLED = 0x00000000u, + SCE_GXM_TEXTURE_ANISO_ENABLED = 0x00004000u +}; + +enum SceGxmTextureType : u32 +{ + SCE_GXM_TEXTURE_SWIZZLED = 0x00000000u, + SCE_GXM_TEXTURE_CUBE = 0x40000000u, + SCE_GXM_TEXTURE_LINEAR = 0x60000000u, + SCE_GXM_TEXTURE_TILED = 0x80000000u, + SCE_GXM_TEXTURE_LINEAR_STRIDED = 0xc0000000u +}; + +enum SceGxmTextureFilter : u32 +{ + SCE_GXM_TEXTURE_FILTER_POINT = 0x00000000u, + SCE_GXM_TEXTURE_FILTER_LINEAR = 0x00000001u, + SCE_GXM_TEXTURE_FILTER_ANISO_LINEAR = 0x00000002u, + SCE_GXM_TEXTURE_FILTER_ANISO_POINT = 0x00000003u +}; + +enum SceGxmTextureMipFilter : u32 +{ + SCE_GXM_TEXTURE_MIP_FILTER_DISABLED = 0x00000000u, + SCE_GXM_TEXTURE_MIP_FILTER_ENABLED = 0x00000200u +}; + +enum SceGxmTextureAddrMode : u32 +{ + SCE_GXM_TEXTURE_ADDR_REPEAT = 0x00000000u, + SCE_GXM_TEXTURE_ADDR_MIRROR = 0x00000001u, + SCE_GXM_TEXTURE_ADDR_CLAMP = 0x00000002u, + SCE_GXM_TEXTURE_ADDR_MIRROR_CLAMP = 0x00000003u, + SCE_GXM_TEXTURE_ADDR_REPEAT_IGNORE_BORDER = 0x00000004u, + SCE_GXM_TEXTURE_ADDR_CLAMP_FULL_BORDER = 0x00000005u, + SCE_GXM_TEXTURE_ADDR_CLAMP_IGNORE_BORDER = 0x00000006u, + SCE_GXM_TEXTURE_ADDR_CLAMP_HALF_BORDER = 0x00000007u +}; + +enum SceGxmTextureGammaMode : u32 +{ + SCE_GXM_TEXTURE_GAMMA_NONE = 0x00000000u, + SCE_GXM_TEXTURE_GAMMA_R = 0x08000000u, + SCE_GXM_TEXTURE_GAMMA_GR = 0x18000000u, + SCE_GXM_TEXTURE_GAMMA_BGR = 0x08000000u +}; + +enum SceGxmIndexFormat : u32 +{ + SCE_GXM_INDEX_FORMAT_U16 = 0x00000000u, + SCE_GXM_INDEX_FORMAT_U32 = 0x01000000u +}; + +enum SceGxmIndexSource : u16 +{ + SCE_GXM_INDEX_SOURCE_INDEX_16BIT = 0x00000000u, + SCE_GXM_INDEX_SOURCE_INDEX_32BIT = 0x00000001u, + SCE_GXM_INDEX_SOURCE_INSTANCE_16BIT = 0x00000002u, + SCE_GXM_INDEX_SOURCE_INSTANCE_32BIT = 0x00000003u +}; + +enum SceGxmFragmentProgramMode : u32 +{ + SCE_GXM_FRAGMENT_PROGRAM_DISABLED = 0x00200000u, + SCE_GXM_FRAGMENT_PROGRAM_ENABLED = 0x00000000u +}; + +enum SceGxmDepthWriteMode : u32 +{ + SCE_GXM_DEPTH_WRITE_DISABLED = 0x00100000u, + SCE_GXM_DEPTH_WRITE_ENABLED = 0x00000000u +}; + +enum SceGxmLineFillLastPixelMode : u32 +{ + SCE_GXM_LINE_FILL_LAST_PIXEL_DISABLED = 0x00000000u, + SCE_GXM_LINE_FILL_LAST_PIXEL_ENABLED = 0x00080000u +}; + +enum SceGxmTwoSidedMode : u32 +{ + SCE_GXM_TWO_SIDED_DISABLED = 0x00000000u, + SCE_GXM_TWO_SIDED_ENABLED = 0x00000800u +}; + +enum SceGxmWClampMode : u32 +{ + SCE_GXM_WCLAMP_MODE_DISABLED = 0x00000000u, + SCE_GXM_WCLAMP_MODE_ENABLED = 0x00008000u +}; + +enum SceGxmViewportMode : u32 +{ + SCE_GXM_VIEWPORT_DISABLED = 0x00010000u, + SCE_GXM_VIEWPORT_ENABLED = 0x00000000u +}; + +enum SceGxmWBufferMode : u32 +{ + SCE_GXM_WBUFFER_DISABLED = 0x00000000u, + SCE_GXM_WBUFFER_ENABLED = 0x00004000u +}; + +enum SceGxmDepthStencilForceLoadMode : u32 +{ + SCE_GXM_DEPTH_STENCIL_FORCE_LOAD_DISABLED = 0x00000000u, + SCE_GXM_DEPTH_STENCIL_FORCE_LOAD_ENABLED = 0x00000002u +}; + +enum SceGxmDepthStencilForceStoreMode : u32 +{ + SCE_GXM_DEPTH_STENCIL_FORCE_STORE_DISABLED = 0x00000000u, + SCE_GXM_DEPTH_STENCIL_FORCE_STORE_ENABLED = 0x00000004u +}; + +enum SceGxmSceneFlags : u32 +{ + SCE_GXM_SCENE_FRAGMENT_SET_DEPENDENCY = 0x00000001u, + SCE_GXM_SCENE_VERTEX_WAIT_FOR_DEPENDENCY = 0x00000002u +}; + +enum SceGxmMidSceneFlags : u32 +{ + SCE_GXM_MIDSCENE_PRESERVE_DEFAULT_UNIFORM_BUFFERS = 0x00000001u +}; + +enum SceGxmColorSurfaceScaleMode : u32 +{ + SCE_GXM_COLOR_SURFACE_SCALE_NONE = 0x00000000u, + SCE_GXM_COLOR_SURFACE_SCALE_MSAA_DOWNSCALE = 0x00000001u +}; + +enum SceGxmOutputRegisterSize : u32 +{ + SCE_GXM_OUTPUT_REGISTER_SIZE_32BIT = 0x00000000u, + SCE_GXM_OUTPUT_REGISTER_SIZE_64BIT = 0x00000001u +}; + +enum SceGxmVisibilityTestMode : u32 +{ + SCE_GXM_VISIBILITY_TEST_DISABLED = 0x00000000u, + SCE_GXM_VISIBILITY_TEST_ENABLED = 0x00004000u +}; + +enum SceGxmVisibilityTestOp : u32 +{ + SCE_GXM_VISIBILITY_TEST_OP_INCREMENT = 0x00000000u, + SCE_GXM_VISIBILITY_TEST_OP_SET = 0x00040000u +}; + +enum SceGxmBlendFunc : u8 +{ + SCE_GXM_BLEND_FUNC_NONE, + SCE_GXM_BLEND_FUNC_ADD, + SCE_GXM_BLEND_FUNC_SUBTRACT, + SCE_GXM_BLEND_FUNC_REVERSE_SUBTRACT +}; + +enum SceGxmBlendFactor : u8 +{ + SCE_GXM_BLEND_FACTOR_ZERO, + SCE_GXM_BLEND_FACTOR_ONE, + SCE_GXM_BLEND_FACTOR_SRC_COLOR, + SCE_GXM_BLEND_FACTOR_ONE_MINUS_SRC_COLOR, + SCE_GXM_BLEND_FACTOR_SRC_ALPHA, + SCE_GXM_BLEND_FACTOR_ONE_MINUS_SRC_ALPHA, + SCE_GXM_BLEND_FACTOR_DST_COLOR, + SCE_GXM_BLEND_FACTOR_ONE_MINUS_DST_COLOR, + SCE_GXM_BLEND_FACTOR_DST_ALPHA, + SCE_GXM_BLEND_FACTOR_ONE_MINUS_DST_ALPHA, + SCE_GXM_BLEND_FACTOR_SRC_ALPHA_SATURATE, + SCE_GXM_BLEND_FACTOR_DST_ALPHA_SATURATE +}; + +enum SceGxmColorMask : u8 +{ + SCE_GXM_COLOR_MASK_NONE = 0, + SCE_GXM_COLOR_MASK_A = (1 << 0), + SCE_GXM_COLOR_MASK_R = (1 << 1), + SCE_GXM_COLOR_MASK_G = (1 << 2), + SCE_GXM_COLOR_MASK_B = (1 << 3), + SCE_GXM_COLOR_MASK_ALL = (SCE_GXM_COLOR_MASK_A | SCE_GXM_COLOR_MASK_B | SCE_GXM_COLOR_MASK_G | SCE_GXM_COLOR_MASK_R) +}; + +struct SceGxmBlendInfo +{ + SceGxmColorMask colorMask; + SceGxmBlendFunc colorFunc : 4; + SceGxmBlendFunc alphaFunc : 4; + SceGxmBlendFactor colorSrc : 4; + SceGxmBlendFactor colorDst : 4; + SceGxmBlendFactor alphaSrc : 4; + SceGxmBlendFactor alphaDst : 4; +}; + +struct SceGxmRenderTarget; + +struct SceGxmSyncObject; + +struct SceGxmVertexAttribute +{ + u16 streamIndex; + u16 offset; + SceGxmAttributeFormat format; + u8 componentCount; + u16 regIndex; +}; + +struct SceGxmVertexStream +{ + u16 stride; + u16 indexSource; +}; + +struct SceGxmTexture +{ + u32 controlWords[4]; +}; + +struct SceGxmColorSurface +{ + u32 pbeSidebandWord; + u32 pbeEmitWords[6]; + u32 outputRegisterSize; + SceGxmTexture backgroundTex; +}; + +struct SceGxmDepthStencilSurface +{ + u32 zlsControl; + vm::psv::ptr depthData; + vm::psv::ptr stencilData; + float backgroundDepth; + u32 backgroundControl; +}; + +struct SceGxmAuxiliarySurface +{ + SceGxmColorFormat colorFormat; + SceGxmColorSurfaceType type; + u32 width; + u32 height; + u32 stride; + vm::psv::ptr data; +}; + +struct SceGxmNotification +{ + vm::psv::ptr address; + u32 value; +}; + +struct SceGxmValidRegion +{ + u32 xMin; + u32 yMin; + u32 xMax; + u32 yMax; +}; + +struct SceGxmContext; + +enum +{ + SCE_GXM_MINIMUM_CONTEXT_HOST_MEM_SIZE = 2048, + SCE_GXM_DEFAULT_VDM_RING_BUFFER_SIZE = (128 * 1024), + SCE_GXM_DEFAULT_VERTEX_RING_BUFFER_SIZE = (2 * 1024 * 1024), + SCE_GXM_DEFAULT_FRAGMENT_RING_BUFFER_SIZE = (512 * 1024), + SCE_GXM_DEFAULT_FRAGMENT_USSE_RING_BUFFER_SIZE = (16 * 1024), +}; + +struct SceGxmContextParams +{ + vm::psv::ptr hostMem; + u32 hostMemSize; + vm::psv::ptr vdmRingBufferMem; + u32 vdmRingBufferMemSize; + vm::psv::ptr vertexRingBufferMem; + u32 vertexRingBufferMemSize; + vm::psv::ptr fragmentRingBufferMem; + u32 fragmentRingBufferMemSize; + vm::psv::ptr fragmentUsseRingBufferMem; + u32 fragmentUsseRingBufferMemSize; + u32 fragmentUsseRingBufferOffset; +}; + +struct SceGxmVertexProgram; + +struct SceGxmFragmentProgram; + +enum +{ + SCE_GXM_PRECOMPUTED_VERTEX_STATE_WORD_COUNT = 7, + SCE_GXM_PRECOMPUTED_FRAGMENT_STATE_WORD_COUNT = 9, + SCE_GXM_PRECOMPUTED_DRAW_WORD_COUNT = 11, +}; + +struct SceGxmPrecomputedVertexState +{ + u32 data[SCE_GXM_PRECOMPUTED_VERTEX_STATE_WORD_COUNT]; +}; + +struct SceGxmPrecomputedFragmentState +{ + u32 data[SCE_GXM_PRECOMPUTED_FRAGMENT_STATE_WORD_COUNT]; +}; + +struct SceGxmPrecomputedDraw +{ + u32 data[SCE_GXM_PRECOMPUTED_DRAW_WORD_COUNT]; +}; + +enum : u32 +{ + SCE_GXM_MAX_VERTEX_ATTRIBUTES = 16, + SCE_GXM_MAX_VERTEX_STREAMS = 4, + SCE_GXM_MAX_TEXTURE_UNITS = 16, + SCE_GXM_MAX_UNIFORM_BUFFERS = 8, + SCE_GXM_MAX_AUXILIARY_SURFACES = 3, +}; + +struct SceGxmProgram; + +struct SceGxmProgramParameter; + +enum SceGxmProgramType : s32 +{ + SCE_GXM_VERTEX_PROGRAM, + SCE_GXM_FRAGMENT_PROGRAM +}; + +enum SceGxmParameterCategory : s32 +{ + SCE_GXM_PARAMETER_CATEGORY_ATTRIBUTE, + SCE_GXM_PARAMETER_CATEGORY_UNIFORM, + SCE_GXM_PARAMETER_CATEGORY_SAMPLER, + SCE_GXM_PARAMETER_CATEGORY_AUXILIARY_SURFACE, + SCE_GXM_PARAMETER_CATEGORY_UNIFORM_BUFFER +}; + +enum SceGxmParameterType : s32 +{ + SCE_GXM_PARAMETER_TYPE_F32, + SCE_GXM_PARAMETER_TYPE_F16, + SCE_GXM_PARAMETER_TYPE_C10, + SCE_GXM_PARAMETER_TYPE_U32, + SCE_GXM_PARAMETER_TYPE_S32, + SCE_GXM_PARAMETER_TYPE_U16, + SCE_GXM_PARAMETER_TYPE_S16, + SCE_GXM_PARAMETER_TYPE_U8, + SCE_GXM_PARAMETER_TYPE_S8, + SCE_GXM_PARAMETER_TYPE_AGGREGATE +}; + +enum SceGxmParameterSemantic : s32 +{ + SCE_GXM_PARAMETER_SEMANTIC_NONE, + SCE_GXM_PARAMETER_SEMANTIC_ATTR, + SCE_GXM_PARAMETER_SEMANTIC_BCOL, + SCE_GXM_PARAMETER_SEMANTIC_BINORMAL, + SCE_GXM_PARAMETER_SEMANTIC_BLENDINDICES, + SCE_GXM_PARAMETER_SEMANTIC_BLENDWEIGHT, + SCE_GXM_PARAMETER_SEMANTIC_COLOR, + SCE_GXM_PARAMETER_SEMANTIC_DIFFUSE, + SCE_GXM_PARAMETER_SEMANTIC_FOGCOORD, + SCE_GXM_PARAMETER_SEMANTIC_NORMAL, + SCE_GXM_PARAMETER_SEMANTIC_POINTSIZE, + SCE_GXM_PARAMETER_SEMANTIC_POSITION, + SCE_GXM_PARAMETER_SEMANTIC_SPECULAR, + SCE_GXM_PARAMETER_SEMANTIC_TANGENT, + SCE_GXM_PARAMETER_SEMANTIC_TEXCOORD +}; + +struct SceGxmShaderPatcher; + +struct SceGxmRegisteredProgram; + +typedef vm::psv::ptr SceGxmShaderPatcherId; + +typedef vm::psv::ptr(SceGxmShaderPatcherHostAllocCallback)(vm::psv::ptr userData, u32 size); +typedef void(SceGxmShaderPatcherHostFreeCallback)(vm::psv::ptr userData, vm::psv::ptr mem); +typedef vm::psv::ptr(SceGxmShaderPatcherBufferAllocCallback)(vm::psv::ptr userData, u32 size); +typedef void(SceGxmShaderPatcherBufferFreeCallback)(vm::psv::ptr userData, vm::psv::ptr mem); +typedef vm::psv::ptr(SceGxmShaderPatcherUsseAllocCallback)(vm::psv::ptr userData, u32 size, vm::psv::ptr usseOffset); +typedef void(SceGxmShaderPatcherUsseFreeCallback)(vm::psv::ptr userData, vm::psv::ptr mem); + +struct SceGxmShaderPatcherParams +{ + vm::psv::ptr userData; + vm::psv::ptr hostAllocCallback; + vm::psv::ptr hostFreeCallback; + vm::psv::ptr bufferAllocCallback; + vm::psv::ptr bufferFreeCallback; + vm::psv::ptr bufferMem; + u32 bufferMemSize; + vm::psv::ptr vertexUsseAllocCallback; + vm::psv::ptr vertexUsseFreeCallback; + vm::psv::ptr vertexUsseMem; + u32 vertexUsseMemSize; + u32 vertexUsseOffset; + vm::psv::ptr fragmentUsseAllocCallback; + vm::psv::ptr fragmentUsseFreeCallback; + vm::psv::ptr fragmentUsseMem; + u32 fragmentUsseMemSize; + u32 fragmentUsseOffset; +}; + +enum SceGxmRenderTargetFlags : u32 +{ + SCE_GXM_RENDER_TARGET_CUSTOM_MULTISAMPLE_LOCATIONS = 1 << 0, +}; + +struct SceGxmRenderTargetParams +{ + SceGxmRenderTargetFlags flags; + u16 width; + u16 height; + u16 scenesPerFrame; + SceGxmMultisampleMode multisampleMode; + u32 multisampleLocations; + vm::psv::ptr hostMem; + u32 hostMemSize; + s32 driverMemBlock; +}; + +extern psv_log_base sceGxm; diff --git a/rpcs3/Emu/ARMv7/PSVFuncList.cpp b/rpcs3/Emu/ARMv7/PSVFuncList.cpp index b011da905b..4ca94b42a6 100644 --- a/rpcs3/Emu/ARMv7/PSVFuncList.cpp +++ b/rpcs3/Emu/ARMv7/PSVFuncList.cpp @@ -51,6 +51,9 @@ extern psv_log_base sceLibKernel; extern psv_log_base sceSysmodule; extern psv_log_base scePerf; extern psv_log_base sceCtrl; +extern psv_log_base sceDeci4p; +extern psv_log_base sceDisplay; +extern psv_log_base sceGxm; void initialize_psv_modules() { @@ -64,6 +67,9 @@ void initialize_psv_modules() g_psv_modules.push_back(&sceSysmodule); g_psv_modules.push_back(&scePerf); g_psv_modules.push_back(&sceCtrl); + g_psv_modules.push_back(&sceDeci4p); + g_psv_modules.push_back(&sceDisplay); + g_psv_modules.push_back(&sceGxm); // setup special functions (without NIDs) psv_func unimplemented;