Merge pull request #3410 from jroweboy/clang-format-target
Clang format as a build target
This commit is contained in:
commit
33a0e87ac2
|
@ -6,8 +6,12 @@ matrix:
|
||||||
dist: trusty
|
dist: trusty
|
||||||
addons:
|
addons:
|
||||||
apt:
|
apt:
|
||||||
|
sources:
|
||||||
|
- sourceline: 'deb http://apt.llvm.org/trusty/ llvm-toolchain-trusty-6.0 main'
|
||||||
|
key_url: 'https://apt.llvm.org/llvm-snapshot.gpg.key'
|
||||||
|
- sourceline: 'deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu trusty main'
|
||||||
packages:
|
packages:
|
||||||
- clang-format-3.9
|
- clang-format-6.0
|
||||||
script: "./.travis/clang-format/script.sh"
|
script: "./.travis/clang-format/script.sh"
|
||||||
- os: linux
|
- os: linux
|
||||||
env: NAME="linux build"
|
env: NAME="linux build"
|
||||||
|
|
|
@ -7,7 +7,7 @@ if grep -nr '\s$' src *.yml *.txt *.md Doxyfile .gitignore .gitmodules .travis*
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Default clang-format points to default 3.5 version one
|
# Default clang-format points to default 3.5 version one
|
||||||
CLANG_FORMAT=clang-format-3.9
|
CLANG_FORMAT=clang-format-6.0
|
||||||
$CLANG_FORMAT --version
|
$CLANG_FORMAT --version
|
||||||
|
|
||||||
if [ "$TRAVIS_EVENT_TYPE" = "pull_request" ]; then
|
if [ "$TRAVIS_EVENT_TYPE" = "pull_request" ]; then
|
||||||
|
|
|
@ -3,15 +3,18 @@ cmake_minimum_required(VERSION 3.8)
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/CMakeModules")
|
||||||
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules")
|
list(APPEND CMAKE_MODULE_PATH "${CMAKE_CURRENT_SOURCE_DIR}/externals/cmake-modules")
|
||||||
include(DownloadExternals)
|
include(DownloadExternals)
|
||||||
|
include(CMakeDependentOption)
|
||||||
|
|
||||||
project(citra)
|
project(citra)
|
||||||
|
|
||||||
|
# Set bundled sdl2/qt as dependent options.
|
||||||
|
# OFF by default, but if ENABLE_SDL2 and MSVC are true then ON
|
||||||
option(ENABLE_SDL2 "Enable the SDL2 frontend" ON)
|
option(ENABLE_SDL2 "Enable the SDL2 frontend" ON)
|
||||||
option(CITRA_USE_BUNDLED_SDL2 "Download bundled SDL2 binaries" OFF)
|
CMAKE_DEPENDENT_OPTION(CITRA_USE_BUNDLED_SDL2 "Download bundled SDL2 binaries" ON "ENABLE_SDL2;MSVC" OFF)
|
||||||
|
|
||||||
option(ENABLE_QT "Enable the Qt frontend" ON)
|
option(ENABLE_QT "Enable the Qt frontend" ON)
|
||||||
option(ENABLE_QT_TRANSLATION "Enable translations for the Qt frontend" OFF)
|
option(ENABLE_QT_TRANSLATION "Enable translations for the Qt frontend" OFF)
|
||||||
option(CITRA_USE_BUNDLED_QT "Download bundled Qt binaries" OFF)
|
CMAKE_DEPENDENT_OPTION(CITRA_USE_BUNDLED_QT "Download bundled Qt binaries" ON "ENABLE_QT;MSVC" OFF)
|
||||||
|
|
||||||
option(ENABLE_WEB_SERVICE "Enable web services (telemetry, etc.)" ON)
|
option(ENABLE_WEB_SERVICE "Enable web services (telemetry, etc.)" ON)
|
||||||
option(CITRA_USE_BUNDLED_CURL "FOR MINGW ONLY: Download curl configured against winssl instead of openssl" OFF)
|
option(CITRA_USE_BUNDLED_CURL "FOR MINGW ONLY: Download curl configured against winssl instead of openssl" OFF)
|
||||||
|
@ -274,6 +277,53 @@ if (UNIX OR MINGW)
|
||||||
endif()
|
endif()
|
||||||
endif()
|
endif()
|
||||||
|
|
||||||
|
# Setup a custom clang-format target (if clang-format can be found) that will run
|
||||||
|
# against all the src files. This should be used before making a pull request.
|
||||||
|
# =======================================================================
|
||||||
|
|
||||||
|
set(CLANG_FORMAT_POSTFIX "-6.0")
|
||||||
|
find_program(CLANG_FORMAT
|
||||||
|
NAMES clang-format${CLANG_FORMAT_POSTFIX}
|
||||||
|
clang-format
|
||||||
|
PATHS ${CMAKE_BINARY_DIR}/externals)
|
||||||
|
# if find_program doesn't find it, try to download from externals
|
||||||
|
if (NOT CLANG_FORMAT)
|
||||||
|
if (WIN32)
|
||||||
|
message(STATUS "Clang format not found! Downloading...")
|
||||||
|
set(CLANG_FORMAT "${CMAKE_BINARY_DIR}/externals/clang-format${CLANG_FORMAT_POSTFIX}.exe")
|
||||||
|
file(DOWNLOAD
|
||||||
|
https://github.com/yuzu-emu/ext-windows-bin/raw/master/clang-format${CLANG_FORMAT_POSTFIX}.exe
|
||||||
|
"${CLANG_FORMAT}" SHOW_PROGRESS
|
||||||
|
STATUS DOWNLOAD_SUCCESS)
|
||||||
|
if (NOT DOWNLOAD_SUCCESS EQUAL 0)
|
||||||
|
message(WARNING "Could not download clang format! Disabling the clang format target")
|
||||||
|
file(REMOVE ${CLANG_FORMAT})
|
||||||
|
unset(CLANG_FORMAT)
|
||||||
|
endif()
|
||||||
|
else()
|
||||||
|
message(WARNING "Clang format not found! Disabling the clang format target")
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
|
||||||
|
if (CLANG_FORMAT)
|
||||||
|
set(SRCS ${CMAKE_SOURCE_DIR}/src)
|
||||||
|
set(CCOMMENT "Running clang format against all the .h and .cpp files in src/")
|
||||||
|
if (WIN32)
|
||||||
|
add_custom_target(clang-format
|
||||||
|
COMMAND powershell.exe -Command "${CLANG_FORMAT} -i @(Get-ChildItem -Recurse ${SRCS}/* -Include \'*.h\', \'*.cpp\')"
|
||||||
|
COMMENT ${CCOMMENT})
|
||||||
|
elseif(MINGW)
|
||||||
|
add_custom_target(clang-format
|
||||||
|
COMMAND find `cygpath -u ${SRCS}` -iname *.h -o -iname *.cpp | xargs `cygpath -u ${CLANG_FORMAT}` -i
|
||||||
|
COMMENT ${CCOMMENT})
|
||||||
|
else()
|
||||||
|
add_custom_target(clang-format
|
||||||
|
COMMAND find ${SRCS} -iname *.h -o -iname *.cpp | xargs ${CLANG_FORMAT} -i
|
||||||
|
COMMENT ${CCOMMENT})
|
||||||
|
endif()
|
||||||
|
unset(SRCS)
|
||||||
|
unset(CCOMMENT)
|
||||||
|
endif()
|
||||||
|
|
||||||
# Include source code
|
# Include source code
|
||||||
# ===================
|
# ===================
|
||||||
|
|
|
@ -5,7 +5,17 @@
|
||||||
If you believe you have a valid issue report, please post text or a screenshot from the log (the console window that opens alongside Citra) and build version (hex string visible in the titlebar and zip filename), as well as your hardware and software information if applicable.
|
If you believe you have a valid issue report, please post text or a screenshot from the log (the console window that opens alongside Citra) and build version (hex string visible in the titlebar and zip filename), as well as your hardware and software information if applicable.
|
||||||
|
|
||||||
# Contributing
|
# Contributing
|
||||||
Citra is a brand new project, so we have a great opportunity to keep things clean and well organized early on. As such, coding style is very important when making commits. We run clang-format on our CI to check the code. Please use it to format your code when contributing. However, it doesn't cover all the rules below. Some of them aren't very strict rules since we want to be flexible and we understand that under certain circumstances some of them can be counterproductive. Just try to follow as many of them as possible:
|
|
||||||
|
Citra is a brand new project, so we have a great opportunity to keep things clean and well organized early on. As such, coding style is very important when making commits. We run clang-format on our CI to check the code. Please use it to format your code when contributing. However, it doesn't cover all the rules below. Some of them aren't very strict rules since we want to be flexible and we understand that under certain circumstances some of them can be counterproductive. Just try to follow as many of them as possible.
|
||||||
|
|
||||||
|
# Using clang format (version 6.0)
|
||||||
|
When generating the native build script for your toolset, cmake will try to find the correct version of clang format (or will download it on windows). Before running cmake, please install clang format version 6.0 for your platform as follows:
|
||||||
|
|
||||||
|
* Windows: do nothing; cmake will download a pre built binary for MSVC and MINGW. MSVC users can additionally install a clang format Visual Studio extension to add features like format on save.
|
||||||
|
* OSX: run `brew install clang-format`.
|
||||||
|
* Linux: use your package manager to get an appropriate binary.
|
||||||
|
|
||||||
|
If clang format is found, then cmake will add a custom build target that can be run at any time to run clang format against *all* source files and update the formatting in them. This should be used before making a pull request so that the reviewers can spend more time reviewing the code instead of having to worry about minor style violations. On MSVC, you can run clang format by building the clang-format project in the solution. On OSX, you can either use the Makefile target `make clang-format` or by building the clang-format target in XCode. For Makefile builds, you can use the clang-format target with `make clang-format`
|
||||||
|
|
||||||
### General Rules
|
### General Rules
|
||||||
* A lot of code was taken from other projects (e.g. Dolphin, PPSSPP, Gekko, SkyEye). In general, when editing other people's code, follow the style of the module you're in (or better yet, fix the style if it drastically differs from our guide).
|
* A lot of code was taken from other projects (e.g. Dolphin, PPSSPP, Gekko, SkyEye). In general, when editing other people's code, follow the style of the module you're in (or better yet, fix the style if it drastically differs from our guide).
|
||||||
|
|
|
@ -115,8 +115,8 @@ void Mixers::DownmixAndMixIntoCurrentFrame(float gain, const QuadFrame32& sample
|
||||||
return;
|
return;
|
||||||
|
|
||||||
case OutputFormat::Surround:
|
case OutputFormat::Surround:
|
||||||
// TODO(merry): Implement surround sound.
|
// TODO(merry): Implement surround sound.
|
||||||
// fallthrough
|
// fallthrough
|
||||||
|
|
||||||
case OutputFormat::Stereo:
|
case OutputFormat::Stereo:
|
||||||
std::transform(
|
std::transform(
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <queue>
|
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
#include <queue>
|
||||||
#include "audio_core/audio_types.h"
|
#include "audio_core/audio_types.h"
|
||||||
#include "audio_core/codec.h"
|
#include "audio_core/codec.h"
|
||||||
#include "audio_core/hle/common.h"
|
#include "audio_core/hle/common.h"
|
||||||
|
|
|
@ -42,4 +42,4 @@ public:
|
||||||
virtual std::vector<std::string> GetDeviceList() const = 0;
|
virtual std::vector<std::string> GetDeviceList() const = 0;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace AudioCore
|
||||||
|
|
|
@ -49,10 +49,18 @@ static const std::array<int, Settings::NativeButton::NumButtons> default_buttons
|
||||||
|
|
||||||
static const std::array<std::array<int, 5>, Settings::NativeAnalog::NumAnalogs> default_analogs{{
|
static const std::array<std::array<int, 5>, Settings::NativeAnalog::NumAnalogs> default_analogs{{
|
||||||
{
|
{
|
||||||
SDL_SCANCODE_UP, SDL_SCANCODE_DOWN, SDL_SCANCODE_LEFT, SDL_SCANCODE_RIGHT, SDL_SCANCODE_D,
|
SDL_SCANCODE_UP,
|
||||||
|
SDL_SCANCODE_DOWN,
|
||||||
|
SDL_SCANCODE_LEFT,
|
||||||
|
SDL_SCANCODE_RIGHT,
|
||||||
|
SDL_SCANCODE_D,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
SDL_SCANCODE_I, SDL_SCANCODE_K, SDL_SCANCODE_J, SDL_SCANCODE_L, SDL_SCANCODE_D,
|
SDL_SCANCODE_I,
|
||||||
|
SDL_SCANCODE_K,
|
||||||
|
SDL_SCANCODE_J,
|
||||||
|
SDL_SCANCODE_L,
|
||||||
|
SDL_SCANCODE_D,
|
||||||
},
|
},
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
|
|
@ -24,10 +24,18 @@ const std::array<int, Settings::NativeButton::NumButtons> Config::default_button
|
||||||
|
|
||||||
const std::array<std::array<int, 5>, Settings::NativeAnalog::NumAnalogs> Config::default_analogs{{
|
const std::array<std::array<int, 5>, Settings::NativeAnalog::NumAnalogs> Config::default_analogs{{
|
||||||
{
|
{
|
||||||
Qt::Key_Up, Qt::Key_Down, Qt::Key_Left, Qt::Key_Right, Qt::Key_D,
|
Qt::Key_Up,
|
||||||
|
Qt::Key_Down,
|
||||||
|
Qt::Key_Left,
|
||||||
|
Qt::Key_Right,
|
||||||
|
Qt::Key_D,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
Qt::Key_I, Qt::Key_K, Qt::Key_J, Qt::Key_L, Qt::Key_D,
|
Qt::Key_I,
|
||||||
|
Qt::Key_K,
|
||||||
|
Qt::Key_J,
|
||||||
|
Qt::Key_L,
|
||||||
|
Qt::Key_D,
|
||||||
},
|
},
|
||||||
}};
|
}};
|
||||||
|
|
||||||
|
|
|
@ -13,7 +13,11 @@
|
||||||
|
|
||||||
const std::array<std::string, ConfigureInput::ANALOG_SUB_BUTTONS_NUM>
|
const std::array<std::string, ConfigureInput::ANALOG_SUB_BUTTONS_NUM>
|
||||||
ConfigureInput::analog_sub_buttons{{
|
ConfigureInput::analog_sub_buttons{{
|
||||||
"up", "down", "left", "right", "modifier",
|
"up",
|
||||||
|
"down",
|
||||||
|
"left",
|
||||||
|
"right",
|
||||||
|
"modifier",
|
||||||
}};
|
}};
|
||||||
|
|
||||||
static QString getKeyName(int key_code) {
|
static QString getKeyName(int key_code) {
|
||||||
|
@ -35,7 +39,8 @@ static void SetAnalogButton(const Common::ParamPackage& input_param,
|
||||||
Common::ParamPackage& analog_param, const std::string& button_name) {
|
Common::ParamPackage& analog_param, const std::string& button_name) {
|
||||||
if (analog_param.Get("engine", "") != "analog_from_button") {
|
if (analog_param.Get("engine", "") != "analog_from_button") {
|
||||||
analog_param = {
|
analog_param = {
|
||||||
{"engine", "analog_from_button"}, {"modifier_scale", "0.5"},
|
{"engine", "analog_from_button"},
|
||||||
|
{"modifier_scale", "0.5"},
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
analog_param.Set(button_name, input_param.Serialize());
|
analog_param.Set(button_name, input_param.Serialize());
|
||||||
|
@ -102,11 +107,17 @@ ConfigureInput::ConfigureInput(QWidget* parent)
|
||||||
|
|
||||||
analog_map_buttons = {{
|
analog_map_buttons = {{
|
||||||
{
|
{
|
||||||
ui->buttonCircleUp, ui->buttonCircleDown, ui->buttonCircleLeft, ui->buttonCircleRight,
|
ui->buttonCircleUp,
|
||||||
|
ui->buttonCircleDown,
|
||||||
|
ui->buttonCircleLeft,
|
||||||
|
ui->buttonCircleRight,
|
||||||
ui->buttonCircleMod,
|
ui->buttonCircleMod,
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
ui->buttonCStickUp, ui->buttonCStickDown, ui->buttonCStickLeft, ui->buttonCStickRight,
|
ui->buttonCStickUp,
|
||||||
|
ui->buttonCStickDown,
|
||||||
|
ui->buttonCStickLeft,
|
||||||
|
ui->buttonCStickRight,
|
||||||
nullptr,
|
nullptr,
|
||||||
},
|
},
|
||||||
}};
|
}};
|
||||||
|
|
|
@ -11,7 +11,18 @@
|
||||||
#include "ui_configure_system.h"
|
#include "ui_configure_system.h"
|
||||||
|
|
||||||
static const std::array<int, 12> days_in_month = {{
|
static const std::array<int, 12> days_in_month = {{
|
||||||
31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,
|
31,
|
||||||
|
29,
|
||||||
|
31,
|
||||||
|
30,
|
||||||
|
31,
|
||||||
|
30,
|
||||||
|
31,
|
||||||
|
31,
|
||||||
|
30,
|
||||||
|
31,
|
||||||
|
30,
|
||||||
|
31,
|
||||||
}};
|
}};
|
||||||
|
|
||||||
ConfigureSystem::ConfigureSystem(QWidget* parent) : QWidget(parent), ui(new Ui::ConfigureSystem) {
|
ConfigureSystem::ConfigureSystem(QWidget* parent) : QWidget(parent), ui(new Ui::ConfigureSystem) {
|
||||||
|
|
|
@ -129,8 +129,8 @@ void BreakPointModel::OnResumed() {
|
||||||
|
|
||||||
GraphicsBreakPointsWidget::GraphicsBreakPointsWidget(
|
GraphicsBreakPointsWidget::GraphicsBreakPointsWidget(
|
||||||
std::shared_ptr<Pica::DebugContext> debug_context, QWidget* parent)
|
std::shared_ptr<Pica::DebugContext> debug_context, QWidget* parent)
|
||||||
: QDockWidget(tr("Pica Breakpoints"), parent),
|
: QDockWidget(tr("Pica Breakpoints"), parent), Pica::DebugContext::BreakPointObserver(
|
||||||
Pica::DebugContext::BreakPointObserver(debug_context) {
|
debug_context) {
|
||||||
setObjectName("PicaBreakPointsWidget");
|
setObjectName("PicaBreakPointsWidget");
|
||||||
|
|
||||||
status_text = new QLabel(tr("Emulation running"));
|
status_text = new QLabel(tr("Emulation running"));
|
||||||
|
|
|
@ -21,8 +21,8 @@
|
||||||
#include "video_core/shader/shader.h"
|
#include "video_core/shader/shader.h"
|
||||||
#include "video_core/shader/shader_interpreter.h"
|
#include "video_core/shader/shader_interpreter.h"
|
||||||
|
|
||||||
using nihstro::OpCode;
|
|
||||||
using nihstro::Instruction;
|
using nihstro::Instruction;
|
||||||
|
using nihstro::OpCode;
|
||||||
using nihstro::SourceRegister;
|
using nihstro::SourceRegister;
|
||||||
using nihstro::SwizzlePattern;
|
using nihstro::SwizzlePattern;
|
||||||
|
|
||||||
|
@ -331,7 +331,7 @@ QVariant GraphicsVertexShaderModel::data(const QModelIndex& index, int role) con
|
||||||
return QBrush(QColor(192, 192, 192));
|
return QBrush(QColor(192, 192, 192));
|
||||||
}
|
}
|
||||||
|
|
||||||
// TODO: Draw arrows for each "reachable" instruction to visualize control flow
|
// TODO: Draw arrows for each "reachable" instruction to visualize control flow
|
||||||
|
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -20,7 +20,7 @@ class Mutex;
|
||||||
class Semaphore;
|
class Semaphore;
|
||||||
class Thread;
|
class Thread;
|
||||||
class Timer;
|
class Timer;
|
||||||
}
|
} // namespace Kernel
|
||||||
|
|
||||||
class WaitTreeThread;
|
class WaitTreeThread;
|
||||||
|
|
||||||
|
|
|
@ -221,7 +221,7 @@ public:
|
||||||
IntTy m_val;
|
IntTy m_val;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // Common
|
} // namespace Common
|
||||||
|
|
||||||
typedef Common::BitSet<u8> BitSet8;
|
typedef Common::BitSet<u8> BitSet8;
|
||||||
typedef Common::BitSet<u16> BitSet16;
|
typedef Common::BitSet<u16> BitSet16;
|
||||||
|
|
|
@ -607,8 +607,9 @@ public:
|
||||||
u32 cookie = arbitraryNumber;
|
u32 cookie = arbitraryNumber;
|
||||||
Do(cookie);
|
Do(cookie);
|
||||||
if (mode == PointerWrap::MODE_READ && cookie != arbitraryNumber) {
|
if (mode == PointerWrap::MODE_READ && cookie != arbitraryNumber) {
|
||||||
LOG_ERROR(Common, "After \"%s\", found %d (0x%X) instead of save marker %d (0x%X). "
|
LOG_ERROR(Common,
|
||||||
"Aborting savestate load...",
|
"After \"%s\", found %d (0x%X) instead of save marker %d (0x%X). "
|
||||||
|
"Aborting savestate load...",
|
||||||
prevName, cookie, cookie, arbitraryNumber, arbitraryNumber);
|
prevName, cookie, cookie, arbitraryNumber, arbitraryNumber);
|
||||||
SetError(ERROR_FAILURE);
|
SetError(ERROR_FAILURE);
|
||||||
}
|
}
|
||||||
|
|
|
@ -256,4 +256,4 @@ inline void EncodeX24S8(u8 stencil, u8* bytes) {
|
||||||
bytes[3] = stencil;
|
bytes[3] = stencil;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace Color
|
||||||
|
|
|
@ -873,20 +873,19 @@ bool IOFile::Flush() {
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IOFile::Resize(u64 size) {
|
bool IOFile::Resize(u64 size) {
|
||||||
if (!IsOpen() ||
|
if (!IsOpen() || 0 !=
|
||||||
0 !=
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
// ector: _chsize sucks, not 64-bit safe
|
// ector: _chsize sucks, not 64-bit safe
|
||||||
// F|RES: changed to _chsize_s. i think it is 64-bit safe
|
// F|RES: changed to _chsize_s. i think it is 64-bit safe
|
||||||
_chsize_s(_fileno(m_file), size)
|
_chsize_s(_fileno(m_file), size)
|
||||||
#else
|
#else
|
||||||
// TODO: handle 64bit and growing
|
// TODO: handle 64bit and growing
|
||||||
ftruncate(fileno(m_file), size)
|
ftruncate(fileno(m_file), size)
|
||||||
#endif
|
#endif
|
||||||
)
|
)
|
||||||
m_good = false;
|
m_good = false;
|
||||||
|
|
||||||
return m_good;
|
return m_good;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace FileUtil
|
||||||
|
|
|
@ -253,7 +253,7 @@ private:
|
||||||
bool m_good = true;
|
bool m_good = true;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace FileUtil
|
||||||
|
|
||||||
// To deal with Windows being dumb at unicode:
|
// To deal with Windows being dumb at unicode:
|
||||||
template <typename T>
|
template <typename T>
|
||||||
|
|
|
@ -114,8 +114,8 @@ const char* GetLevelName(Level log_level) {
|
||||||
|
|
||||||
Entry CreateEntry(Class log_class, Level log_level, const char* filename, unsigned int line_nr,
|
Entry CreateEntry(Class log_class, Level log_level, const char* filename, unsigned int line_nr,
|
||||||
const char* function, const char* format, va_list args) {
|
const char* function, const char* format, va_list args) {
|
||||||
using std::chrono::steady_clock;
|
|
||||||
using std::chrono::duration_cast;
|
using std::chrono::duration_cast;
|
||||||
|
using std::chrono::steady_clock;
|
||||||
|
|
||||||
static steady_clock::time_point time_origin = steady_clock::now();
|
static steady_clock::time_point time_origin = steady_clock::now();
|
||||||
|
|
||||||
|
@ -154,4 +154,4 @@ void LogMessage(Class log_class, Level log_level, const char* filename, unsigned
|
||||||
|
|
||||||
PrintColoredMessage(entry);
|
PrintColoredMessage(entry);
|
||||||
}
|
}
|
||||||
}
|
} // namespace Log
|
||||||
|
|
|
@ -47,4 +47,4 @@ Entry CreateEntry(Class log_class, Level log_level, const char* filename, unsign
|
||||||
const char* function, const char* format, va_list args);
|
const char* function, const char* format, va_list args);
|
||||||
|
|
||||||
void SetFilter(Filter* filter);
|
void SetFilter(Filter* filter);
|
||||||
}
|
} // namespace Log
|
||||||
|
|
|
@ -94,4 +94,4 @@ bool Filter::ParseFilterRule(const std::string::const_iterator begin,
|
||||||
bool Filter::CheckMessage(Class log_class, Level level) const {
|
bool Filter::CheckMessage(Class log_class, Level level) const {
|
||||||
return static_cast<u8>(level) >= static_cast<u8>(class_levels[static_cast<size_t>(log_class)]);
|
return static_cast<u8>(level) >= static_cast<u8>(class_levels[static_cast<size_t>(log_class)]);
|
||||||
}
|
}
|
||||||
}
|
} // namespace Log
|
||||||
|
|
|
@ -50,4 +50,4 @@ public:
|
||||||
private:
|
private:
|
||||||
std::array<Level, (size_t)Class::Count> class_levels;
|
std::array<Level, (size_t)Class::Count> class_levels;
|
||||||
};
|
};
|
||||||
}
|
} // namespace Log
|
||||||
|
|
|
@ -129,4 +129,4 @@ void PrintColoredMessage(const Entry& entry) {
|
||||||
#undef ESC
|
#undef ESC
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
}
|
} // namespace Log
|
||||||
|
|
|
@ -28,4 +28,4 @@ void FormatLogMessage(const Entry& entry, char* out_text, size_t text_len);
|
||||||
void PrintMessage(const Entry& entry);
|
void PrintMessage(const Entry& entry);
|
||||||
/// Prints the same message as `PrintMessage`, but colored acoording to the severity level.
|
/// Prints the same message as `PrintMessage`, but colored acoording to the severity level.
|
||||||
void PrintColoredMessage(const Entry& entry);
|
void PrintColoredMessage(const Entry& entry);
|
||||||
}
|
} // namespace Log
|
||||||
|
|
|
@ -40,11 +40,12 @@ void* AllocateExecutableMemory(size_t size, bool low) {
|
||||||
if (low && (!map_hint))
|
if (low && (!map_hint))
|
||||||
map_hint = (char*)round_page(512 * 1024 * 1024); /* 0.5 GB rounded up to the next page */
|
map_hint = (char*)round_page(512 * 1024 * 1024); /* 0.5 GB rounded up to the next page */
|
||||||
#endif
|
#endif
|
||||||
void* ptr = mmap(map_hint, size, PROT_READ | PROT_WRITE | PROT_EXEC, MAP_ANON | MAP_PRIVATE
|
void* ptr = mmap(map_hint, size, PROT_READ | PROT_WRITE | PROT_EXEC,
|
||||||
|
MAP_ANON | MAP_PRIVATE
|
||||||
#if defined(ARCHITECTURE_X64) && defined(MAP_32BIT)
|
#if defined(ARCHITECTURE_X64) && defined(MAP_32BIT)
|
||||||
| (low ? MAP_32BIT : 0)
|
| (low ? MAP_32BIT : 0)
|
||||||
#endif
|
#endif
|
||||||
,
|
,
|
||||||
-1, 0);
|
-1, 0);
|
||||||
#endif /* defined(_WIN32) */
|
#endif /* defined(_WIN32) */
|
||||||
|
|
||||||
|
|
|
@ -46,4 +46,4 @@ inline Quaternion<float> MakeQuaternion(const Math::Vec3<float>& axis, float ang
|
||||||
return {axis * std::sin(angle / 2), std::cos(angle / 2)};
|
return {axis * std::sin(angle / 2), std::cos(angle / 2)};
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namspace Math
|
} // namespace Math
|
||||||
|
|
|
@ -12,4 +12,4 @@ extern const char g_scm_desc[];
|
||||||
extern const char g_build_name[];
|
extern const char g_build_name[];
|
||||||
extern const char g_build_date[];
|
extern const char g_build_date[];
|
||||||
|
|
||||||
} // namespace
|
} // namespace Common
|
||||||
|
|
|
@ -22,7 +22,7 @@ template <typename Func>
|
||||||
ScopeExitHelper<Func> ScopeExit(Func&& func) {
|
ScopeExitHelper<Func> ScopeExit(Func&& func) {
|
||||||
return ScopeExitHelper<Func>(std::move(func));
|
return ScopeExitHelper<Func>(std::move(func));
|
||||||
}
|
}
|
||||||
}
|
} // namespace detail
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This macro allows you to conveniently specify a block of code that will run on scope exit. Handy
|
* This macro allows you to conveniently specify a block of code that will run on scope exit. Handy
|
||||||
|
|
|
@ -202,7 +202,7 @@ bool SplitPath(const std::string& full_path, std::string* _pPath, std::string* _
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
":"
|
":"
|
||||||
#endif
|
#endif
|
||||||
);
|
);
|
||||||
if (std::string::npos == dir_end)
|
if (std::string::npos == dir_end)
|
||||||
dir_end = 0;
|
dir_end = 0;
|
||||||
else
|
else
|
||||||
|
@ -462,4 +462,4 @@ std::string StringFromFixedZeroTerminatedBuffer(const char* buffer, size_t max_l
|
||||||
|
|
||||||
return std::string(buffer, len);
|
return std::string(buffer, len);
|
||||||
}
|
}
|
||||||
}
|
} // namespace Common
|
||||||
|
|
|
@ -134,4 +134,4 @@ bool ComparePartialString(InIt begin, InIt end, const char* other) {
|
||||||
* NUL-terminated then the string ends at max_len characters.
|
* NUL-terminated then the string ends at max_len characters.
|
||||||
*/
|
*/
|
||||||
std::string StringFromFixedZeroTerminatedBuffer(const char* buffer, size_t max_len);
|
std::string StringFromFixedZeroTerminatedBuffer(const char* buffer, size_t max_len);
|
||||||
}
|
} // namespace Common
|
||||||
|
|
|
@ -158,4 +158,4 @@ private:
|
||||||
std::array<Queue, NUM_QUEUES> queues;
|
std::array<Queue, NUM_QUEUES> queues;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace Common
|
||||||
|
|
|
@ -60,20 +60,41 @@ const Xbyak::Reg ABI_PARAM4 = Xbyak::util::r9;
|
||||||
|
|
||||||
const BitSet32 ABI_ALL_CALLER_SAVED = BuildRegSet({
|
const BitSet32 ABI_ALL_CALLER_SAVED = BuildRegSet({
|
||||||
// GPRs
|
// GPRs
|
||||||
Xbyak::util::rcx, Xbyak::util::rdx, Xbyak::util::r8, Xbyak::util::r9, Xbyak::util::r10,
|
Xbyak::util::rcx,
|
||||||
|
Xbyak::util::rdx,
|
||||||
|
Xbyak::util::r8,
|
||||||
|
Xbyak::util::r9,
|
||||||
|
Xbyak::util::r10,
|
||||||
Xbyak::util::r11,
|
Xbyak::util::r11,
|
||||||
// XMMs
|
// XMMs
|
||||||
Xbyak::util::xmm0, Xbyak::util::xmm1, Xbyak::util::xmm2, Xbyak::util::xmm3, Xbyak::util::xmm4,
|
Xbyak::util::xmm0,
|
||||||
|
Xbyak::util::xmm1,
|
||||||
|
Xbyak::util::xmm2,
|
||||||
|
Xbyak::util::xmm3,
|
||||||
|
Xbyak::util::xmm4,
|
||||||
Xbyak::util::xmm5,
|
Xbyak::util::xmm5,
|
||||||
});
|
});
|
||||||
|
|
||||||
const BitSet32 ABI_ALL_CALLEE_SAVED = BuildRegSet({
|
const BitSet32 ABI_ALL_CALLEE_SAVED = BuildRegSet({
|
||||||
// GPRs
|
// GPRs
|
||||||
Xbyak::util::rbx, Xbyak::util::rsi, Xbyak::util::rdi, Xbyak::util::rbp, Xbyak::util::r12,
|
Xbyak::util::rbx,
|
||||||
Xbyak::util::r13, Xbyak::util::r14, Xbyak::util::r15,
|
Xbyak::util::rsi,
|
||||||
|
Xbyak::util::rdi,
|
||||||
|
Xbyak::util::rbp,
|
||||||
|
Xbyak::util::r12,
|
||||||
|
Xbyak::util::r13,
|
||||||
|
Xbyak::util::r14,
|
||||||
|
Xbyak::util::r15,
|
||||||
// XMMs
|
// XMMs
|
||||||
Xbyak::util::xmm6, Xbyak::util::xmm7, Xbyak::util::xmm8, Xbyak::util::xmm9, Xbyak::util::xmm10,
|
Xbyak::util::xmm6,
|
||||||
Xbyak::util::xmm11, Xbyak::util::xmm12, Xbyak::util::xmm13, Xbyak::util::xmm14,
|
Xbyak::util::xmm7,
|
||||||
|
Xbyak::util::xmm8,
|
||||||
|
Xbyak::util::xmm9,
|
||||||
|
Xbyak::util::xmm10,
|
||||||
|
Xbyak::util::xmm11,
|
||||||
|
Xbyak::util::xmm12,
|
||||||
|
Xbyak::util::xmm13,
|
||||||
|
Xbyak::util::xmm14,
|
||||||
Xbyak::util::xmm15,
|
Xbyak::util::xmm15,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -90,18 +111,40 @@ const Xbyak::Reg ABI_PARAM4 = Xbyak::util::rcx;
|
||||||
|
|
||||||
const BitSet32 ABI_ALL_CALLER_SAVED = BuildRegSet({
|
const BitSet32 ABI_ALL_CALLER_SAVED = BuildRegSet({
|
||||||
// GPRs
|
// GPRs
|
||||||
Xbyak::util::rcx, Xbyak::util::rdx, Xbyak::util::rdi, Xbyak::util::rsi, Xbyak::util::r8,
|
Xbyak::util::rcx,
|
||||||
Xbyak::util::r9, Xbyak::util::r10, Xbyak::util::r11,
|
Xbyak::util::rdx,
|
||||||
|
Xbyak::util::rdi,
|
||||||
|
Xbyak::util::rsi,
|
||||||
|
Xbyak::util::r8,
|
||||||
|
Xbyak::util::r9,
|
||||||
|
Xbyak::util::r10,
|
||||||
|
Xbyak::util::r11,
|
||||||
// XMMs
|
// XMMs
|
||||||
Xbyak::util::xmm0, Xbyak::util::xmm1, Xbyak::util::xmm2, Xbyak::util::xmm3, Xbyak::util::xmm4,
|
Xbyak::util::xmm0,
|
||||||
Xbyak::util::xmm5, Xbyak::util::xmm6, Xbyak::util::xmm7, Xbyak::util::xmm8, Xbyak::util::xmm9,
|
Xbyak::util::xmm1,
|
||||||
Xbyak::util::xmm10, Xbyak::util::xmm11, Xbyak::util::xmm12, Xbyak::util::xmm13,
|
Xbyak::util::xmm2,
|
||||||
Xbyak::util::xmm14, Xbyak::util::xmm15,
|
Xbyak::util::xmm3,
|
||||||
|
Xbyak::util::xmm4,
|
||||||
|
Xbyak::util::xmm5,
|
||||||
|
Xbyak::util::xmm6,
|
||||||
|
Xbyak::util::xmm7,
|
||||||
|
Xbyak::util::xmm8,
|
||||||
|
Xbyak::util::xmm9,
|
||||||
|
Xbyak::util::xmm10,
|
||||||
|
Xbyak::util::xmm11,
|
||||||
|
Xbyak::util::xmm12,
|
||||||
|
Xbyak::util::xmm13,
|
||||||
|
Xbyak::util::xmm14,
|
||||||
|
Xbyak::util::xmm15,
|
||||||
});
|
});
|
||||||
|
|
||||||
const BitSet32 ABI_ALL_CALLEE_SAVED = BuildRegSet({
|
const BitSet32 ABI_ALL_CALLEE_SAVED = BuildRegSet({
|
||||||
// GPRs
|
// GPRs
|
||||||
Xbyak::util::rbx, Xbyak::util::rbp, Xbyak::util::r12, Xbyak::util::r13, Xbyak::util::r14,
|
Xbyak::util::rbx,
|
||||||
|
Xbyak::util::rbp,
|
||||||
|
Xbyak::util::r12,
|
||||||
|
Xbyak::util::r13,
|
||||||
|
Xbyak::util::r14,
|
||||||
Xbyak::util::r15,
|
Xbyak::util::r15,
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
|
@ -28,7 +28,7 @@ enum {
|
||||||
ARMVFP3,
|
ARMVFP3,
|
||||||
ARMV6K,
|
ARMV6K,
|
||||||
};
|
};
|
||||||
}
|
} // namespace
|
||||||
|
|
||||||
// clang-format off
|
// clang-format off
|
||||||
const InstructionSetEncodingItem arm_instruction[] = {
|
const InstructionSetEncodingItem arm_instruction[] = {
|
||||||
|
|
|
@ -1,20 +1,20 @@
|
||||||
/* Copyright (C)
|
/* Copyright (C)
|
||||||
* 2011 - Michael.Kang blackfin.kang@gmail.com
|
* 2011 - Michael.Kang blackfin.kang@gmail.com
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
* as published by the Free Software Foundation; either version 2
|
* as published by the Free Software Foundation; either version 2
|
||||||
* of the License, or (at your option) any later version.
|
* of the License, or (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
|
|
@ -1,28 +1,28 @@
|
||||||
/* Copyright (C)
|
/* Copyright (C)
|
||||||
* 2011 - Michael.Kang blackfin.kang@gmail.com
|
* 2011 - Michael.Kang blackfin.kang@gmail.com
|
||||||
* This program is free software; you can redistribute it and/or
|
* This program is free software; you can redistribute it and/or
|
||||||
* modify it under the terms of the GNU General Public License
|
* modify it under the terms of the GNU General Public License
|
||||||
* as published by the Free Software Foundation; either version 2
|
* as published by the Free Software Foundation; either version 2
|
||||||
* of the License, or (at your option) any later version.
|
* of the License, or (at your option) any later version.
|
||||||
*
|
*
|
||||||
* This program is distributed in the hope that it will be useful,
|
* This program is distributed in the hope that it will be useful,
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
* GNU General Public License for more details.
|
* GNU General Public License for more details.
|
||||||
*
|
*
|
||||||
* You should have received a copy of the GNU General Public License
|
* You should have received a copy of the GNU General Public License
|
||||||
* along with this program; if not, write to the Free Software
|
* along with this program; if not, write to the Free Software
|
||||||
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
|
||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @file arm_dyncom_thumb.h
|
* @file arm_dyncom_thumb.h
|
||||||
* @brief The thumb dyncom
|
* @brief The thumb dyncom
|
||||||
* @author Michael.Kang blackfin.kang@gmail.com
|
* @author Michael.Kang blackfin.kang@gmail.com
|
||||||
* @version 78.77
|
* @version 78.77
|
||||||
* @date 2011-11-07
|
* @date 2011-11-07
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
|
|
@ -1808,78 +1808,210 @@ static ARM_INST_PTR INTERPRETER_TRANSLATE(yield)(unsigned int inst, int index) {
|
||||||
#undef VFP_INTERPRETER_TRANS
|
#undef VFP_INTERPRETER_TRANS
|
||||||
|
|
||||||
const transop_fp_t arm_instruction_trans[] = {
|
const transop_fp_t arm_instruction_trans[] = {
|
||||||
INTERPRETER_TRANSLATE(vmla), INTERPRETER_TRANSLATE(vmls), INTERPRETER_TRANSLATE(vnmla),
|
INTERPRETER_TRANSLATE(vmla),
|
||||||
INTERPRETER_TRANSLATE(vnmls), INTERPRETER_TRANSLATE(vnmul), INTERPRETER_TRANSLATE(vmul),
|
INTERPRETER_TRANSLATE(vmls),
|
||||||
INTERPRETER_TRANSLATE(vadd), INTERPRETER_TRANSLATE(vsub), INTERPRETER_TRANSLATE(vdiv),
|
INTERPRETER_TRANSLATE(vnmla),
|
||||||
INTERPRETER_TRANSLATE(vmovi), INTERPRETER_TRANSLATE(vmovr), INTERPRETER_TRANSLATE(vabs),
|
INTERPRETER_TRANSLATE(vnmls),
|
||||||
INTERPRETER_TRANSLATE(vneg), INTERPRETER_TRANSLATE(vsqrt), INTERPRETER_TRANSLATE(vcmp),
|
INTERPRETER_TRANSLATE(vnmul),
|
||||||
INTERPRETER_TRANSLATE(vcmp2), INTERPRETER_TRANSLATE(vcvtbds), INTERPRETER_TRANSLATE(vcvtbff),
|
INTERPRETER_TRANSLATE(vmul),
|
||||||
INTERPRETER_TRANSLATE(vcvtbfi), INTERPRETER_TRANSLATE(vmovbrs), INTERPRETER_TRANSLATE(vmsr),
|
INTERPRETER_TRANSLATE(vadd),
|
||||||
INTERPRETER_TRANSLATE(vmovbrc), INTERPRETER_TRANSLATE(vmrs), INTERPRETER_TRANSLATE(vmovbcr),
|
INTERPRETER_TRANSLATE(vsub),
|
||||||
INTERPRETER_TRANSLATE(vmovbrrss), INTERPRETER_TRANSLATE(vmovbrrd), INTERPRETER_TRANSLATE(vstr),
|
INTERPRETER_TRANSLATE(vdiv),
|
||||||
INTERPRETER_TRANSLATE(vpush), INTERPRETER_TRANSLATE(vstm), INTERPRETER_TRANSLATE(vpop),
|
INTERPRETER_TRANSLATE(vmovi),
|
||||||
INTERPRETER_TRANSLATE(vldr), INTERPRETER_TRANSLATE(vldm),
|
INTERPRETER_TRANSLATE(vmovr),
|
||||||
|
INTERPRETER_TRANSLATE(vabs),
|
||||||
|
INTERPRETER_TRANSLATE(vneg),
|
||||||
|
INTERPRETER_TRANSLATE(vsqrt),
|
||||||
|
INTERPRETER_TRANSLATE(vcmp),
|
||||||
|
INTERPRETER_TRANSLATE(vcmp2),
|
||||||
|
INTERPRETER_TRANSLATE(vcvtbds),
|
||||||
|
INTERPRETER_TRANSLATE(vcvtbff),
|
||||||
|
INTERPRETER_TRANSLATE(vcvtbfi),
|
||||||
|
INTERPRETER_TRANSLATE(vmovbrs),
|
||||||
|
INTERPRETER_TRANSLATE(vmsr),
|
||||||
|
INTERPRETER_TRANSLATE(vmovbrc),
|
||||||
|
INTERPRETER_TRANSLATE(vmrs),
|
||||||
|
INTERPRETER_TRANSLATE(vmovbcr),
|
||||||
|
INTERPRETER_TRANSLATE(vmovbrrss),
|
||||||
|
INTERPRETER_TRANSLATE(vmovbrrd),
|
||||||
|
INTERPRETER_TRANSLATE(vstr),
|
||||||
|
INTERPRETER_TRANSLATE(vpush),
|
||||||
|
INTERPRETER_TRANSLATE(vstm),
|
||||||
|
INTERPRETER_TRANSLATE(vpop),
|
||||||
|
INTERPRETER_TRANSLATE(vldr),
|
||||||
|
INTERPRETER_TRANSLATE(vldm),
|
||||||
|
|
||||||
INTERPRETER_TRANSLATE(srs), INTERPRETER_TRANSLATE(rfe), INTERPRETER_TRANSLATE(bkpt),
|
INTERPRETER_TRANSLATE(srs),
|
||||||
INTERPRETER_TRANSLATE(blx), INTERPRETER_TRANSLATE(cps), INTERPRETER_TRANSLATE(pld),
|
INTERPRETER_TRANSLATE(rfe),
|
||||||
INTERPRETER_TRANSLATE(setend), INTERPRETER_TRANSLATE(clrex), INTERPRETER_TRANSLATE(rev16),
|
INTERPRETER_TRANSLATE(bkpt),
|
||||||
INTERPRETER_TRANSLATE(usad8), INTERPRETER_TRANSLATE(sxtb), INTERPRETER_TRANSLATE(uxtb),
|
INTERPRETER_TRANSLATE(blx),
|
||||||
INTERPRETER_TRANSLATE(sxth), INTERPRETER_TRANSLATE(sxtb16), INTERPRETER_TRANSLATE(uxth),
|
INTERPRETER_TRANSLATE(cps),
|
||||||
INTERPRETER_TRANSLATE(uxtb16), INTERPRETER_TRANSLATE(cpy), INTERPRETER_TRANSLATE(uxtab),
|
INTERPRETER_TRANSLATE(pld),
|
||||||
INTERPRETER_TRANSLATE(ssub8), INTERPRETER_TRANSLATE(shsub8), INTERPRETER_TRANSLATE(ssubaddx),
|
INTERPRETER_TRANSLATE(setend),
|
||||||
INTERPRETER_TRANSLATE(strex), INTERPRETER_TRANSLATE(strexb), INTERPRETER_TRANSLATE(swp),
|
INTERPRETER_TRANSLATE(clrex),
|
||||||
INTERPRETER_TRANSLATE(swpb), INTERPRETER_TRANSLATE(ssub16), INTERPRETER_TRANSLATE(ssat16),
|
INTERPRETER_TRANSLATE(rev16),
|
||||||
INTERPRETER_TRANSLATE(shsubaddx), INTERPRETER_TRANSLATE(qsubaddx),
|
INTERPRETER_TRANSLATE(usad8),
|
||||||
INTERPRETER_TRANSLATE(shaddsubx), INTERPRETER_TRANSLATE(shadd8), INTERPRETER_TRANSLATE(shadd16),
|
INTERPRETER_TRANSLATE(sxtb),
|
||||||
INTERPRETER_TRANSLATE(sel), INTERPRETER_TRANSLATE(saddsubx), INTERPRETER_TRANSLATE(sadd8),
|
INTERPRETER_TRANSLATE(uxtb),
|
||||||
INTERPRETER_TRANSLATE(sadd16), INTERPRETER_TRANSLATE(shsub16), INTERPRETER_TRANSLATE(umaal),
|
INTERPRETER_TRANSLATE(sxth),
|
||||||
INTERPRETER_TRANSLATE(uxtab16), INTERPRETER_TRANSLATE(usubaddx), INTERPRETER_TRANSLATE(usub8),
|
INTERPRETER_TRANSLATE(sxtb16),
|
||||||
INTERPRETER_TRANSLATE(usub16), INTERPRETER_TRANSLATE(usat16), INTERPRETER_TRANSLATE(usada8),
|
INTERPRETER_TRANSLATE(uxth),
|
||||||
INTERPRETER_TRANSLATE(uqsubaddx), INTERPRETER_TRANSLATE(uqsub8), INTERPRETER_TRANSLATE(uqsub16),
|
INTERPRETER_TRANSLATE(uxtb16),
|
||||||
INTERPRETER_TRANSLATE(uqaddsubx), INTERPRETER_TRANSLATE(uqadd8), INTERPRETER_TRANSLATE(uqadd16),
|
INTERPRETER_TRANSLATE(cpy),
|
||||||
INTERPRETER_TRANSLATE(sxtab), INTERPRETER_TRANSLATE(uhsubaddx), INTERPRETER_TRANSLATE(uhsub8),
|
INTERPRETER_TRANSLATE(uxtab),
|
||||||
INTERPRETER_TRANSLATE(uhsub16), INTERPRETER_TRANSLATE(uhaddsubx), INTERPRETER_TRANSLATE(uhadd8),
|
INTERPRETER_TRANSLATE(ssub8),
|
||||||
INTERPRETER_TRANSLATE(uhadd16), INTERPRETER_TRANSLATE(uaddsubx), INTERPRETER_TRANSLATE(uadd8),
|
INTERPRETER_TRANSLATE(shsub8),
|
||||||
INTERPRETER_TRANSLATE(uadd16), INTERPRETER_TRANSLATE(sxtah), INTERPRETER_TRANSLATE(sxtab16),
|
INTERPRETER_TRANSLATE(ssubaddx),
|
||||||
INTERPRETER_TRANSLATE(qadd8), INTERPRETER_TRANSLATE(bxj), INTERPRETER_TRANSLATE(clz),
|
INTERPRETER_TRANSLATE(strex),
|
||||||
INTERPRETER_TRANSLATE(uxtah), INTERPRETER_TRANSLATE(bx), INTERPRETER_TRANSLATE(rev),
|
INTERPRETER_TRANSLATE(strexb),
|
||||||
INTERPRETER_TRANSLATE(blx), INTERPRETER_TRANSLATE(revsh), INTERPRETER_TRANSLATE(qadd),
|
INTERPRETER_TRANSLATE(swp),
|
||||||
INTERPRETER_TRANSLATE(qadd16), INTERPRETER_TRANSLATE(qaddsubx), INTERPRETER_TRANSLATE(ldrex),
|
INTERPRETER_TRANSLATE(swpb),
|
||||||
INTERPRETER_TRANSLATE(qdadd), INTERPRETER_TRANSLATE(qdsub), INTERPRETER_TRANSLATE(qsub),
|
INTERPRETER_TRANSLATE(ssub16),
|
||||||
INTERPRETER_TRANSLATE(ldrexb), INTERPRETER_TRANSLATE(qsub8), INTERPRETER_TRANSLATE(qsub16),
|
INTERPRETER_TRANSLATE(ssat16),
|
||||||
INTERPRETER_TRANSLATE(smuad), INTERPRETER_TRANSLATE(smmul), INTERPRETER_TRANSLATE(smusd),
|
INTERPRETER_TRANSLATE(shsubaddx),
|
||||||
INTERPRETER_TRANSLATE(smlsd), INTERPRETER_TRANSLATE(smlsld), INTERPRETER_TRANSLATE(smmla),
|
INTERPRETER_TRANSLATE(qsubaddx),
|
||||||
INTERPRETER_TRANSLATE(smmls), INTERPRETER_TRANSLATE(smlald), INTERPRETER_TRANSLATE(smlad),
|
INTERPRETER_TRANSLATE(shaddsubx),
|
||||||
INTERPRETER_TRANSLATE(smlaw), INTERPRETER_TRANSLATE(smulw), INTERPRETER_TRANSLATE(pkhtb),
|
INTERPRETER_TRANSLATE(shadd8),
|
||||||
INTERPRETER_TRANSLATE(pkhbt), INTERPRETER_TRANSLATE(smul), INTERPRETER_TRANSLATE(smlalxy),
|
INTERPRETER_TRANSLATE(shadd16),
|
||||||
INTERPRETER_TRANSLATE(smla), INTERPRETER_TRANSLATE(mcrr), INTERPRETER_TRANSLATE(mrrc),
|
INTERPRETER_TRANSLATE(sel),
|
||||||
INTERPRETER_TRANSLATE(cmp), INTERPRETER_TRANSLATE(tst), INTERPRETER_TRANSLATE(teq),
|
INTERPRETER_TRANSLATE(saddsubx),
|
||||||
INTERPRETER_TRANSLATE(cmn), INTERPRETER_TRANSLATE(smull), INTERPRETER_TRANSLATE(umull),
|
INTERPRETER_TRANSLATE(sadd8),
|
||||||
INTERPRETER_TRANSLATE(umlal), INTERPRETER_TRANSLATE(smlal), INTERPRETER_TRANSLATE(mul),
|
INTERPRETER_TRANSLATE(sadd16),
|
||||||
INTERPRETER_TRANSLATE(mla), INTERPRETER_TRANSLATE(ssat), INTERPRETER_TRANSLATE(usat),
|
INTERPRETER_TRANSLATE(shsub16),
|
||||||
INTERPRETER_TRANSLATE(mrs), INTERPRETER_TRANSLATE(msr), INTERPRETER_TRANSLATE(and),
|
INTERPRETER_TRANSLATE(umaal),
|
||||||
INTERPRETER_TRANSLATE(bic), INTERPRETER_TRANSLATE(ldm), INTERPRETER_TRANSLATE(eor),
|
INTERPRETER_TRANSLATE(uxtab16),
|
||||||
INTERPRETER_TRANSLATE(add), INTERPRETER_TRANSLATE(rsb), INTERPRETER_TRANSLATE(rsc),
|
INTERPRETER_TRANSLATE(usubaddx),
|
||||||
INTERPRETER_TRANSLATE(sbc), INTERPRETER_TRANSLATE(adc), INTERPRETER_TRANSLATE(sub),
|
INTERPRETER_TRANSLATE(usub8),
|
||||||
INTERPRETER_TRANSLATE(orr), INTERPRETER_TRANSLATE(mvn), INTERPRETER_TRANSLATE(mov),
|
INTERPRETER_TRANSLATE(usub16),
|
||||||
INTERPRETER_TRANSLATE(stm), INTERPRETER_TRANSLATE(ldm), INTERPRETER_TRANSLATE(ldrsh),
|
INTERPRETER_TRANSLATE(usat16),
|
||||||
INTERPRETER_TRANSLATE(stm), INTERPRETER_TRANSLATE(ldm), INTERPRETER_TRANSLATE(ldrsb),
|
INTERPRETER_TRANSLATE(usada8),
|
||||||
INTERPRETER_TRANSLATE(strd), INTERPRETER_TRANSLATE(ldrh), INTERPRETER_TRANSLATE(strh),
|
INTERPRETER_TRANSLATE(uqsubaddx),
|
||||||
INTERPRETER_TRANSLATE(ldrd), INTERPRETER_TRANSLATE(strt), INTERPRETER_TRANSLATE(strbt),
|
INTERPRETER_TRANSLATE(uqsub8),
|
||||||
INTERPRETER_TRANSLATE(ldrbt), INTERPRETER_TRANSLATE(ldrt), INTERPRETER_TRANSLATE(mrc),
|
INTERPRETER_TRANSLATE(uqsub16),
|
||||||
INTERPRETER_TRANSLATE(mcr), INTERPRETER_TRANSLATE(msr), INTERPRETER_TRANSLATE(msr),
|
INTERPRETER_TRANSLATE(uqaddsubx),
|
||||||
INTERPRETER_TRANSLATE(msr), INTERPRETER_TRANSLATE(msr), INTERPRETER_TRANSLATE(msr),
|
INTERPRETER_TRANSLATE(uqadd8),
|
||||||
INTERPRETER_TRANSLATE(ldrb), INTERPRETER_TRANSLATE(strb), INTERPRETER_TRANSLATE(ldr),
|
INTERPRETER_TRANSLATE(uqadd16),
|
||||||
INTERPRETER_TRANSLATE(ldrcond), INTERPRETER_TRANSLATE(str), INTERPRETER_TRANSLATE(cdp),
|
INTERPRETER_TRANSLATE(sxtab),
|
||||||
INTERPRETER_TRANSLATE(stc), INTERPRETER_TRANSLATE(ldc), INTERPRETER_TRANSLATE(ldrexd),
|
INTERPRETER_TRANSLATE(uhsubaddx),
|
||||||
INTERPRETER_TRANSLATE(strexd), INTERPRETER_TRANSLATE(ldrexh), INTERPRETER_TRANSLATE(strexh),
|
INTERPRETER_TRANSLATE(uhsub8),
|
||||||
INTERPRETER_TRANSLATE(nop), INTERPRETER_TRANSLATE(yield), INTERPRETER_TRANSLATE(wfe),
|
INTERPRETER_TRANSLATE(uhsub16),
|
||||||
INTERPRETER_TRANSLATE(wfi), INTERPRETER_TRANSLATE(sev), INTERPRETER_TRANSLATE(swi),
|
INTERPRETER_TRANSLATE(uhaddsubx),
|
||||||
|
INTERPRETER_TRANSLATE(uhadd8),
|
||||||
|
INTERPRETER_TRANSLATE(uhadd16),
|
||||||
|
INTERPRETER_TRANSLATE(uaddsubx),
|
||||||
|
INTERPRETER_TRANSLATE(uadd8),
|
||||||
|
INTERPRETER_TRANSLATE(uadd16),
|
||||||
|
INTERPRETER_TRANSLATE(sxtah),
|
||||||
|
INTERPRETER_TRANSLATE(sxtab16),
|
||||||
|
INTERPRETER_TRANSLATE(qadd8),
|
||||||
|
INTERPRETER_TRANSLATE(bxj),
|
||||||
|
INTERPRETER_TRANSLATE(clz),
|
||||||
|
INTERPRETER_TRANSLATE(uxtah),
|
||||||
|
INTERPRETER_TRANSLATE(bx),
|
||||||
|
INTERPRETER_TRANSLATE(rev),
|
||||||
|
INTERPRETER_TRANSLATE(blx),
|
||||||
|
INTERPRETER_TRANSLATE(revsh),
|
||||||
|
INTERPRETER_TRANSLATE(qadd),
|
||||||
|
INTERPRETER_TRANSLATE(qadd16),
|
||||||
|
INTERPRETER_TRANSLATE(qaddsubx),
|
||||||
|
INTERPRETER_TRANSLATE(ldrex),
|
||||||
|
INTERPRETER_TRANSLATE(qdadd),
|
||||||
|
INTERPRETER_TRANSLATE(qdsub),
|
||||||
|
INTERPRETER_TRANSLATE(qsub),
|
||||||
|
INTERPRETER_TRANSLATE(ldrexb),
|
||||||
|
INTERPRETER_TRANSLATE(qsub8),
|
||||||
|
INTERPRETER_TRANSLATE(qsub16),
|
||||||
|
INTERPRETER_TRANSLATE(smuad),
|
||||||
|
INTERPRETER_TRANSLATE(smmul),
|
||||||
|
INTERPRETER_TRANSLATE(smusd),
|
||||||
|
INTERPRETER_TRANSLATE(smlsd),
|
||||||
|
INTERPRETER_TRANSLATE(smlsld),
|
||||||
|
INTERPRETER_TRANSLATE(smmla),
|
||||||
|
INTERPRETER_TRANSLATE(smmls),
|
||||||
|
INTERPRETER_TRANSLATE(smlald),
|
||||||
|
INTERPRETER_TRANSLATE(smlad),
|
||||||
|
INTERPRETER_TRANSLATE(smlaw),
|
||||||
|
INTERPRETER_TRANSLATE(smulw),
|
||||||
|
INTERPRETER_TRANSLATE(pkhtb),
|
||||||
|
INTERPRETER_TRANSLATE(pkhbt),
|
||||||
|
INTERPRETER_TRANSLATE(smul),
|
||||||
|
INTERPRETER_TRANSLATE(smlalxy),
|
||||||
|
INTERPRETER_TRANSLATE(smla),
|
||||||
|
INTERPRETER_TRANSLATE(mcrr),
|
||||||
|
INTERPRETER_TRANSLATE(mrrc),
|
||||||
|
INTERPRETER_TRANSLATE(cmp),
|
||||||
|
INTERPRETER_TRANSLATE(tst),
|
||||||
|
INTERPRETER_TRANSLATE(teq),
|
||||||
|
INTERPRETER_TRANSLATE(cmn),
|
||||||
|
INTERPRETER_TRANSLATE(smull),
|
||||||
|
INTERPRETER_TRANSLATE(umull),
|
||||||
|
INTERPRETER_TRANSLATE(umlal),
|
||||||
|
INTERPRETER_TRANSLATE(smlal),
|
||||||
|
INTERPRETER_TRANSLATE(mul),
|
||||||
|
INTERPRETER_TRANSLATE(mla),
|
||||||
|
INTERPRETER_TRANSLATE(ssat),
|
||||||
|
INTERPRETER_TRANSLATE(usat),
|
||||||
|
INTERPRETER_TRANSLATE(mrs),
|
||||||
|
INTERPRETER_TRANSLATE(msr),
|
||||||
|
INTERPRETER_TRANSLATE(and),
|
||||||
|
INTERPRETER_TRANSLATE(bic),
|
||||||
|
INTERPRETER_TRANSLATE(ldm),
|
||||||
|
INTERPRETER_TRANSLATE(eor),
|
||||||
|
INTERPRETER_TRANSLATE(add),
|
||||||
|
INTERPRETER_TRANSLATE(rsb),
|
||||||
|
INTERPRETER_TRANSLATE(rsc),
|
||||||
|
INTERPRETER_TRANSLATE(sbc),
|
||||||
|
INTERPRETER_TRANSLATE(adc),
|
||||||
|
INTERPRETER_TRANSLATE(sub),
|
||||||
|
INTERPRETER_TRANSLATE(orr),
|
||||||
|
INTERPRETER_TRANSLATE(mvn),
|
||||||
|
INTERPRETER_TRANSLATE(mov),
|
||||||
|
INTERPRETER_TRANSLATE(stm),
|
||||||
|
INTERPRETER_TRANSLATE(ldm),
|
||||||
|
INTERPRETER_TRANSLATE(ldrsh),
|
||||||
|
INTERPRETER_TRANSLATE(stm),
|
||||||
|
INTERPRETER_TRANSLATE(ldm),
|
||||||
|
INTERPRETER_TRANSLATE(ldrsb),
|
||||||
|
INTERPRETER_TRANSLATE(strd),
|
||||||
|
INTERPRETER_TRANSLATE(ldrh),
|
||||||
|
INTERPRETER_TRANSLATE(strh),
|
||||||
|
INTERPRETER_TRANSLATE(ldrd),
|
||||||
|
INTERPRETER_TRANSLATE(strt),
|
||||||
|
INTERPRETER_TRANSLATE(strbt),
|
||||||
|
INTERPRETER_TRANSLATE(ldrbt),
|
||||||
|
INTERPRETER_TRANSLATE(ldrt),
|
||||||
|
INTERPRETER_TRANSLATE(mrc),
|
||||||
|
INTERPRETER_TRANSLATE(mcr),
|
||||||
|
INTERPRETER_TRANSLATE(msr),
|
||||||
|
INTERPRETER_TRANSLATE(msr),
|
||||||
|
INTERPRETER_TRANSLATE(msr),
|
||||||
|
INTERPRETER_TRANSLATE(msr),
|
||||||
|
INTERPRETER_TRANSLATE(msr),
|
||||||
|
INTERPRETER_TRANSLATE(ldrb),
|
||||||
|
INTERPRETER_TRANSLATE(strb),
|
||||||
|
INTERPRETER_TRANSLATE(ldr),
|
||||||
|
INTERPRETER_TRANSLATE(ldrcond),
|
||||||
|
INTERPRETER_TRANSLATE(str),
|
||||||
|
INTERPRETER_TRANSLATE(cdp),
|
||||||
|
INTERPRETER_TRANSLATE(stc),
|
||||||
|
INTERPRETER_TRANSLATE(ldc),
|
||||||
|
INTERPRETER_TRANSLATE(ldrexd),
|
||||||
|
INTERPRETER_TRANSLATE(strexd),
|
||||||
|
INTERPRETER_TRANSLATE(ldrexh),
|
||||||
|
INTERPRETER_TRANSLATE(strexh),
|
||||||
|
INTERPRETER_TRANSLATE(nop),
|
||||||
|
INTERPRETER_TRANSLATE(yield),
|
||||||
|
INTERPRETER_TRANSLATE(wfe),
|
||||||
|
INTERPRETER_TRANSLATE(wfi),
|
||||||
|
INTERPRETER_TRANSLATE(sev),
|
||||||
|
INTERPRETER_TRANSLATE(swi),
|
||||||
INTERPRETER_TRANSLATE(bbl),
|
INTERPRETER_TRANSLATE(bbl),
|
||||||
|
|
||||||
// All the thumb instructions should be placed the end of table
|
// All the thumb instructions should be placed the end of table
|
||||||
INTERPRETER_TRANSLATE(b_2_thumb), INTERPRETER_TRANSLATE(b_cond_thumb),
|
INTERPRETER_TRANSLATE(b_2_thumb),
|
||||||
INTERPRETER_TRANSLATE(bl_1_thumb), INTERPRETER_TRANSLATE(bl_2_thumb),
|
INTERPRETER_TRANSLATE(b_cond_thumb),
|
||||||
|
INTERPRETER_TRANSLATE(bl_1_thumb),
|
||||||
|
INTERPRETER_TRANSLATE(bl_2_thumb),
|
||||||
INTERPRETER_TRANSLATE(blx_1_thumb),
|
INTERPRETER_TRANSLATE(blx_1_thumb),
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -58,7 +58,9 @@
|
||||||
#include "core/arm/skyeye_common/vfp/vfp_helper.h"
|
#include "core/arm/skyeye_common/vfp/vfp_helper.h"
|
||||||
|
|
||||||
static struct vfp_double vfp_double_default_qnan = {
|
static struct vfp_double vfp_double_default_qnan = {
|
||||||
2047, 0, VFP_DOUBLE_SIGNIFICAND_QNAN,
|
2047,
|
||||||
|
0,
|
||||||
|
VFP_DOUBLE_SIGNIFICAND_QNAN,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void vfp_double_dump(const char* str, struct vfp_double* d) {
|
static void vfp_double_dump(const char* str, struct vfp_double* d) {
|
||||||
|
|
|
@ -61,7 +61,9 @@
|
||||||
#include "core/arm/skyeye_common/vfp/vfp_helper.h"
|
#include "core/arm/skyeye_common/vfp/vfp_helper.h"
|
||||||
|
|
||||||
static struct vfp_single vfp_single_default_qnan = {
|
static struct vfp_single vfp_single_default_qnan = {
|
||||||
255, 0, VFP_SINGLE_SIGNIFICAND_QNAN,
|
255,
|
||||||
|
0,
|
||||||
|
VFP_SINGLE_SIGNIFICAND_QNAN,
|
||||||
};
|
};
|
||||||
|
|
||||||
static void vfp_single_dump(const char* str, struct vfp_single* s) {
|
static void vfp_single_dump(const char* str, struct vfp_single* s) {
|
||||||
|
|
|
@ -118,4 +118,4 @@ std::vector<u8> Path::AsBinary() const {
|
||||||
return {};
|
return {};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} // namespace FileSys
|
||||||
|
|
|
@ -245,8 +245,9 @@ void ArchiveFactory_SelfNCCH::Register(Loader::AppLoader& app_loader) {
|
||||||
program_id);
|
program_id);
|
||||||
|
|
||||||
if (ncch_data.find(program_id) != ncch_data.end()) {
|
if (ncch_data.find(program_id) != ncch_data.end()) {
|
||||||
LOG_WARNING(Service_FS, "Registering program %016" PRIX64
|
LOG_WARNING(Service_FS,
|
||||||
" with SelfNCCH will override existing mapping",
|
"Registering program %016" PRIX64
|
||||||
|
" with SelfNCCH will override existing mapping",
|
||||||
program_id);
|
program_id);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -260,9 +261,9 @@ void ArchiveFactory_SelfNCCH::Register(Loader::AppLoader& app_loader) {
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<FileUtil::IOFile> update_romfs_file;
|
std::shared_ptr<FileUtil::IOFile> update_romfs_file;
|
||||||
if (Loader::ResultStatus::Success ==
|
if (Loader::ResultStatus::Success == app_loader.ReadUpdateRomFS(update_romfs_file,
|
||||||
app_loader.ReadUpdateRomFS(update_romfs_file, data.update_romfs_offset,
|
data.update_romfs_offset,
|
||||||
data.update_romfs_size)) {
|
data.update_romfs_size)) {
|
||||||
|
|
||||||
data.update_romfs_file = std::move(update_romfs_file);
|
data.update_romfs_file = std::move(update_romfs_file);
|
||||||
}
|
}
|
||||||
|
|
|
@ -225,4 +225,4 @@ void CIAContainer::Print() const {
|
||||||
LOG_DEBUG(Service_FS, "Content %x Offset: 0x%08" PRIx64 " bytes", i, GetContentOffset(i));
|
LOG_DEBUG(Service_FS, "Content %x Offset: 0x%08" PRIx64 " bytes", i, GetContentOffset(i));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
} // namespace FileSys
|
||||||
|
|
|
@ -215,13 +215,13 @@ public:
|
||||||
u64& size);
|
u64& size);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the override RomFS of the NCCH container
|
* Get the override RomFS of the NCCH container
|
||||||
* Since the RomFS can be huge, we return a file reference instead of copying to a buffer
|
* Since the RomFS can be huge, we return a file reference instead of copying to a buffer
|
||||||
* @param romfs_file The file containing the RomFS
|
* @param romfs_file The file containing the RomFS
|
||||||
* @param offset The offset the romfs begins on
|
* @param offset The offset the romfs begins on
|
||||||
* @param size The size of the romfs
|
* @param size The size of the romfs
|
||||||
* @return ResultStatus result of function
|
* @return ResultStatus result of function
|
||||||
*/
|
*/
|
||||||
Loader::ResultStatus ReadOverrideRomFS(std::shared_ptr<FileUtil::IOFile>& romfs_file,
|
Loader::ResultStatus ReadOverrideRomFS(std::shared_ptr<FileUtil::IOFile>& romfs_file,
|
||||||
u64& offset, u64& size);
|
u64& offset, u64& size);
|
||||||
|
|
||||||
|
|
|
@ -87,9 +87,9 @@ public:
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets the framebuffer layout (width, height, and screen regions)
|
* Gets the framebuffer layout (width, height, and screen regions)
|
||||||
* @note This method is thread-safe
|
* @note This method is thread-safe
|
||||||
*/
|
*/
|
||||||
const Layout::FramebufferLayout& GetFramebufferLayout() const {
|
const Layout::FramebufferLayout& GetFramebufferLayout() const {
|
||||||
return framebuffer_layout;
|
return framebuffer_layout;
|
||||||
}
|
}
|
||||||
|
|
|
@ -109,11 +109,10 @@ FramebufferLayout LargeFrameLayout(unsigned width, unsigned height, bool swapped
|
||||||
// To do that, find the total emulation box and maximize that based on window size
|
// To do that, find the total emulation box and maximize that based on window size
|
||||||
float window_aspect_ratio = static_cast<float>(height) / width;
|
float window_aspect_ratio = static_cast<float>(height) / width;
|
||||||
float emulation_aspect_ratio =
|
float emulation_aspect_ratio =
|
||||||
swapped
|
swapped ? Core::kScreenBottomHeight * 4 /
|
||||||
? Core::kScreenBottomHeight * 4 /
|
(Core::kScreenBottomWidth * 4.0f + Core::kScreenTopWidth)
|
||||||
(Core::kScreenBottomWidth * 4.0f + Core::kScreenTopWidth)
|
: Core::kScreenTopHeight * 4 /
|
||||||
: Core::kScreenTopHeight * 4 /
|
(Core::kScreenTopWidth * 4.0f + Core::kScreenBottomWidth);
|
||||||
(Core::kScreenTopWidth * 4.0f + Core::kScreenBottomWidth);
|
|
||||||
float large_screen_aspect_ratio = swapped ? BOT_SCREEN_ASPECT_RATIO : TOP_SCREEN_ASPECT_RATIO;
|
float large_screen_aspect_ratio = swapped ? BOT_SCREEN_ASPECT_RATIO : TOP_SCREEN_ASPECT_RATIO;
|
||||||
float small_screen_aspect_ratio = swapped ? TOP_SCREEN_ASPECT_RATIO : BOT_SCREEN_ASPECT_RATIO;
|
float small_screen_aspect_ratio = swapped ? TOP_SCREEN_ASPECT_RATIO : BOT_SCREEN_ASPECT_RATIO;
|
||||||
|
|
||||||
|
|
|
@ -54,14 +54,14 @@ FramebufferLayout SingleFrameLayout(unsigned width, unsigned height, bool is_swa
|
||||||
FramebufferLayout LargeFrameLayout(unsigned width, unsigned height, bool is_swapped);
|
FramebufferLayout LargeFrameLayout(unsigned width, unsigned height, bool is_swapped);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Factory method for constructing a Frame with the Top screen and bottom
|
* Factory method for constructing a Frame with the Top screen and bottom
|
||||||
* screen side by side
|
* screen side by side
|
||||||
* This is useful for devices with small screens, like the GPDWin
|
* This is useful for devices with small screens, like the GPDWin
|
||||||
* @param width Window framebuffer width in pixels
|
* @param width Window framebuffer width in pixels
|
||||||
* @param height Window framebuffer height in pixels
|
* @param height Window framebuffer height in pixels
|
||||||
* @param is_swapped if true, the bottom screen will be the left display
|
* @param is_swapped if true, the bottom screen will be the left display
|
||||||
* @return Newly created FramebufferLayout object with default screen regions initialized
|
* @return Newly created FramebufferLayout object with default screen regions initialized
|
||||||
*/
|
*/
|
||||||
FramebufferLayout SideFrameLayout(unsigned width, unsigned height, bool is_swapped);
|
FramebufferLayout SideFrameLayout(unsigned width, unsigned height, bool is_swapped);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -183,11 +183,11 @@ static u8 NibbleToHex(u8 n) {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Converts input hex string characters into an array of equivalent of u8 bytes.
|
* Converts input hex string characters into an array of equivalent of u8 bytes.
|
||||||
*
|
*
|
||||||
* @param src Pointer to array of output hex string characters.
|
* @param src Pointer to array of output hex string characters.
|
||||||
* @param len Length of src array.
|
* @param len Length of src array.
|
||||||
*/
|
*/
|
||||||
static u32 HexToInt(const u8* src, size_t len) {
|
static u32 HexToInt(const u8* src, size_t len) {
|
||||||
u32 output = 0;
|
u32 output = 0;
|
||||||
while (len-- > 0) {
|
while (len-- > 0) {
|
||||||
|
@ -1037,4 +1037,4 @@ bool GetCpuStepFlag() {
|
||||||
void SetCpuStepFlag(bool is_step) {
|
void SetCpuStepFlag(bool is_step) {
|
||||||
step_loop = is_step;
|
step_loop = is_step;
|
||||||
}
|
}
|
||||||
};
|
}; // namespace GDBStub
|
||||||
|
|
|
@ -91,4 +91,4 @@ bool GetCpuStepFlag();
|
||||||
* @param is_step
|
* @param is_step
|
||||||
*/
|
*/
|
||||||
void SetCpuStepFlag(bool is_step);
|
void SetCpuStepFlag(bool is_step);
|
||||||
}
|
} // namespace GDBStub
|
||||||
|
|
|
@ -31,7 +31,7 @@ struct hash<Service::APT::AppletId> {
|
||||||
return std::hash<Type>()(static_cast<Type>(id_code));
|
return std::hash<Type>()(static_cast<Type>(id_code));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
} // namespace std
|
||||||
|
|
||||||
namespace HLE {
|
namespace HLE {
|
||||||
namespace Applets {
|
namespace Applets {
|
||||||
|
@ -134,5 +134,5 @@ void Init() {
|
||||||
void Shutdown() {
|
void Shutdown() {
|
||||||
CoreTiming::RemoveEvent(applet_update_event);
|
CoreTiming::RemoveEvent(applet_update_event);
|
||||||
}
|
}
|
||||||
}
|
} // namespace Applets
|
||||||
} // namespace
|
} // namespace HLE
|
||||||
|
|
|
@ -86,5 +86,5 @@ void Init();
|
||||||
|
|
||||||
/// Shuts down the HLE applets
|
/// Shuts down the HLE applets
|
||||||
void Shutdown();
|
void Shutdown();
|
||||||
}
|
} // namespace Applets
|
||||||
} // namespace
|
} // namespace HLE
|
||||||
|
|
|
@ -114,5 +114,5 @@ void SoftwareKeyboard::Finalize() {
|
||||||
|
|
||||||
is_running = false;
|
is_running = false;
|
||||||
}
|
}
|
||||||
}
|
} // namespace Applets
|
||||||
} // namespace
|
} // namespace HLE
|
||||||
|
|
|
@ -82,5 +82,5 @@ private:
|
||||||
/// Configuration of this instance of the SoftwareKeyboard, as received from the application
|
/// Configuration of this instance of the SoftwareKeyboard, as received from the application
|
||||||
SoftwareKeyboardConfig config;
|
SoftwareKeyboardConfig config;
|
||||||
};
|
};
|
||||||
}
|
} // namespace Applets
|
||||||
} // namespace
|
} // namespace HLE
|
||||||
|
|
|
@ -28,4 +28,4 @@ void Init() {
|
||||||
config_mem.firm_ctr_sdk_ver = 0x0000F297;
|
config_mem.firm_ctr_sdk_ver = 0x0000F297;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace ConfigMem
|
||||||
|
|
|
@ -53,4 +53,4 @@ extern ConfigMemDef config_mem;
|
||||||
|
|
||||||
void Init();
|
void Init();
|
||||||
|
|
||||||
} // namespace
|
} // namespace ConfigMem
|
||||||
|
|
|
@ -398,7 +398,7 @@ std::array<u32, N> RequestParser::PopHLEHandles() {
|
||||||
}
|
}
|
||||||
|
|
||||||
inline Kernel::SharedPtr<Kernel::Object> RequestParser::PopGenericObject() {
|
inline Kernel::SharedPtr<Kernel::Object> RequestParser::PopGenericObject() {
|
||||||
auto[handle] = PopHLEHandles<1>();
|
auto [handle] = PopHLEHandles<1>();
|
||||||
return context->GetIncomingHandle(handle);
|
return context->GetIncomingHandle(handle);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -39,4 +39,4 @@ ResultVal<SharedPtr<ClientSession>> ClientPort::Connect() {
|
||||||
return MakeResult(std::get<SharedPtr<ClientSession>>(sessions));
|
return MakeResult(std::get<SharedPtr<ClientSession>>(sessions));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -47,4 +47,4 @@ private:
|
||||||
~ClientPort() override;
|
~ClientPort() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -52,4 +52,4 @@ ResultCode ClientSession::SendSyncRequest(SharedPtr<Thread> thread) {
|
||||||
return server->HandleSyncRequest(std::move(thread));
|
return server->HandleSyncRequest(std::move(thread));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -50,4 +50,4 @@ private:
|
||||||
~ClientSession() override;
|
~ClientSession() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -52,4 +52,4 @@ void Event::WakeupAllWaitingThreads() {
|
||||||
signaled = false;
|
signaled = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -49,4 +49,4 @@ private:
|
||||||
~Event() override;
|
~Event() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -94,4 +94,4 @@ void HandleTable::Clear() {
|
||||||
next_free_slot = 0;
|
next_free_slot = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -123,4 +123,4 @@ private:
|
||||||
|
|
||||||
extern HandleTable g_handle_table;
|
extern HandleTable g_handle_table;
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -36,8 +36,9 @@ SharedPtr<Event> HLERequestContext::SleepClientThread(SharedPtr<Thread> thread,
|
||||||
std::chrono::nanoseconds timeout,
|
std::chrono::nanoseconds timeout,
|
||||||
WakeupCallback&& callback) {
|
WakeupCallback&& callback) {
|
||||||
// Put the client thread to sleep until the wait event is signaled or the timeout expires.
|
// Put the client thread to sleep until the wait event is signaled or the timeout expires.
|
||||||
thread->wakeup_callback = [ context = *this, callback ](
|
thread->wakeup_callback = [context = *this, callback](ThreadWakeupReason reason,
|
||||||
ThreadWakeupReason reason, SharedPtr<Thread> thread, SharedPtr<WaitObject> object) mutable {
|
SharedPtr<Thread> thread,
|
||||||
|
SharedPtr<WaitObject> object) mutable {
|
||||||
ASSERT(thread->status == THREADSTATUS_WAIT_HLE_EVENT);
|
ASSERT(thread->status == THREADSTATUS_WAIT_HLE_EVENT);
|
||||||
callback(thread, context, reason);
|
callback(thread, context, reason);
|
||||||
|
|
||||||
|
|
|
@ -45,4 +45,4 @@ void Shutdown() {
|
||||||
Kernel::MemoryShutdown();
|
Kernel::MemoryShutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -126,8 +126,9 @@ void HandleSpecialMapping(VMManager& address_space, const AddressMapping& mappin
|
||||||
mapping_limit <= area.vaddr_base + area.size;
|
mapping_limit <= area.vaddr_base + area.size;
|
||||||
});
|
});
|
||||||
if (area == std::end(memory_areas)) {
|
if (area == std::end(memory_areas)) {
|
||||||
LOG_ERROR(Loader, "Unhandled special mapping: address=0x%08" PRIX32 " size=0x%" PRIX32
|
LOG_ERROR(Loader,
|
||||||
" read_only=%d unk_flag=%d",
|
"Unhandled special mapping: address=0x%08" PRIX32 " size=0x%" PRIX32
|
||||||
|
" read_only=%d unk_flag=%d",
|
||||||
mapping.address, mapping.size, mapping.read_only, mapping.unk_flag);
|
mapping.address, mapping.size, mapping.read_only, mapping.unk_flag);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
|
@ -151,4 +151,4 @@ void ResourceLimitsInit() {
|
||||||
|
|
||||||
void ResourceLimitsShutdown() {}
|
void ResourceLimitsShutdown() {}
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -123,4 +123,4 @@ void ResourceLimitsInit();
|
||||||
// Destroys the resource limits
|
// Destroys the resource limits
|
||||||
void ResourceLimitsShutdown();
|
void ResourceLimitsShutdown();
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -52,4 +52,4 @@ ResultVal<s32> Semaphore::Release(s32 release_count) {
|
||||||
return MakeResult<s32>(previous_count);
|
return MakeResult<s32>(previous_count);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -4,8 +4,8 @@
|
||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
#include <queue>
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
#include <queue>
|
||||||
#include "common/common_types.h"
|
#include "common/common_types.h"
|
||||||
#include "core/hle/kernel/kernel.h"
|
#include "core/hle/kernel/kernel.h"
|
||||||
#include "core/hle/kernel/wait_object.h"
|
#include "core/hle/kernel/wait_object.h"
|
||||||
|
@ -56,4 +56,4 @@ private:
|
||||||
~Semaphore() override;
|
~Semaphore() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -50,4 +50,4 @@ std::tuple<SharedPtr<ServerPort>, SharedPtr<ClientPort>> ServerPort::CreatePortP
|
||||||
return std::make_tuple(std::move(server_port), std::move(client_port));
|
return std::make_tuple(std::move(server_port), std::move(client_port));
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -72,4 +72,4 @@ private:
|
||||||
~ServerPort() override;
|
~ServerPort() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -9,4 +9,4 @@ namespace Kernel {
|
||||||
|
|
||||||
Session::Session() {}
|
Session::Session() {}
|
||||||
Session::~Session() {}
|
Session::~Session() {}
|
||||||
}
|
} // namespace Kernel
|
||||||
|
|
|
@ -24,4 +24,4 @@ public:
|
||||||
ServerSession* server = nullptr; ///< The server endpoint of the session.
|
ServerSession* server = nullptr; ///< The server endpoint of the session.
|
||||||
SharedPtr<ClientPort> port; ///< The port that this session is associated with (optional).
|
SharedPtr<ClientPort> port; ///< The port that this session is associated with (optional).
|
||||||
};
|
};
|
||||||
}
|
} // namespace Kernel
|
||||||
|
|
|
@ -98,10 +98,10 @@ public:
|
||||||
ResultCode Unmap(Process* target_process, VAddr address);
|
ResultCode Unmap(Process* target_process, VAddr address);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets a pointer to the shared memory block
|
* Gets a pointer to the shared memory block
|
||||||
* @param offset Offset from the start of the shared memory block to get pointer
|
* @param offset Offset from the start of the shared memory block to get pointer
|
||||||
* @return Pointer to the shared memory block from the specified offset
|
* @return Pointer to the shared memory block from the specified offset
|
||||||
*/
|
*/
|
||||||
u8* GetPointer(u32 offset = 0);
|
u8* GetPointer(u32 offset = 0);
|
||||||
|
|
||||||
/// Process that created this shared memory block.
|
/// Process that created this shared memory block.
|
||||||
|
@ -129,4 +129,4 @@ private:
|
||||||
~SharedMemory() override;
|
~SharedMemory() override;
|
||||||
};
|
};
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -288,7 +288,6 @@ static ResultCode WaitSynchronization1(Handle handle, s64 nano_seconds) {
|
||||||
|
|
||||||
thread->wakeup_callback = [](ThreadWakeupReason reason, SharedPtr<Thread> thread,
|
thread->wakeup_callback = [](ThreadWakeupReason reason, SharedPtr<Thread> thread,
|
||||||
SharedPtr<WaitObject> object) {
|
SharedPtr<WaitObject> object) {
|
||||||
|
|
||||||
ASSERT(thread->status == THREADSTATUS_WAIT_SYNCH_ANY);
|
ASSERT(thread->status == THREADSTATUS_WAIT_SYNCH_ANY);
|
||||||
|
|
||||||
if (reason == ThreadWakeupReason::Timeout) {
|
if (reason == ThreadWakeupReason::Timeout) {
|
||||||
|
@ -378,7 +377,6 @@ static ResultCode WaitSynchronizationN(s32* out, VAddr handles_address, s32 hand
|
||||||
|
|
||||||
thread->wakeup_callback = [](ThreadWakeupReason reason, SharedPtr<Thread> thread,
|
thread->wakeup_callback = [](ThreadWakeupReason reason, SharedPtr<Thread> thread,
|
||||||
SharedPtr<WaitObject> object) {
|
SharedPtr<WaitObject> object) {
|
||||||
|
|
||||||
ASSERT(thread->status == THREADSTATUS_WAIT_SYNCH_ALL);
|
ASSERT(thread->status == THREADSTATUS_WAIT_SYNCH_ALL);
|
||||||
|
|
||||||
if (reason == ThreadWakeupReason::Timeout) {
|
if (reason == ThreadWakeupReason::Timeout) {
|
||||||
|
@ -439,7 +437,6 @@ static ResultCode WaitSynchronizationN(s32* out, VAddr handles_address, s32 hand
|
||||||
|
|
||||||
thread->wakeup_callback = [](ThreadWakeupReason reason, SharedPtr<Thread> thread,
|
thread->wakeup_callback = [](ThreadWakeupReason reason, SharedPtr<Thread> thread,
|
||||||
SharedPtr<WaitObject> object) {
|
SharedPtr<WaitObject> object) {
|
||||||
|
|
||||||
ASSERT(thread->status == THREADSTATUS_WAIT_SYNCH_ANY);
|
ASSERT(thread->status == THREADSTATUS_WAIT_SYNCH_ANY);
|
||||||
|
|
||||||
if (reason == ThreadWakeupReason::Timeout) {
|
if (reason == ThreadWakeupReason::Timeout) {
|
||||||
|
@ -591,7 +588,6 @@ static ResultCode ReplyAndReceive(s32* index, VAddr handles_address, s32 handle_
|
||||||
|
|
||||||
thread->wakeup_callback = [](ThreadWakeupReason reason, SharedPtr<Thread> thread,
|
thread->wakeup_callback = [](ThreadWakeupReason reason, SharedPtr<Thread> thread,
|
||||||
SharedPtr<WaitObject> object) {
|
SharedPtr<WaitObject> object) {
|
||||||
|
|
||||||
ASSERT(thread->status == THREADSTATUS_WAIT_SYNCH_ANY);
|
ASSERT(thread->status == THREADSTATUS_WAIT_SYNCH_ANY);
|
||||||
ASSERT(reason == ThreadWakeupReason::Signal);
|
ASSERT(reason == ThreadWakeupReason::Signal);
|
||||||
|
|
||||||
|
@ -770,8 +766,9 @@ static ResultCode CreateThread(Handle* out_handle, u32 priority, u32 entry_point
|
||||||
|
|
||||||
Core::System::GetInstance().PrepareReschedule();
|
Core::System::GetInstance().PrepareReschedule();
|
||||||
|
|
||||||
LOG_TRACE(Kernel_SVC, "called entrypoint=0x%08X (%s), arg=0x%08X, stacktop=0x%08X, "
|
LOG_TRACE(Kernel_SVC,
|
||||||
"threadpriority=0x%08X, processorid=0x%08X : created handle=0x%08X",
|
"called entrypoint=0x%08X (%s), arg=0x%08X, stacktop=0x%08X, "
|
||||||
|
"threadpriority=0x%08X, processorid=0x%08X : created handle=0x%08X",
|
||||||
entry_point, name.c_str(), arg, stack_top, priority, processor_id, *out_handle);
|
entry_point, name.c_str(), arg, stack_top, priority, processor_id, *out_handle);
|
||||||
|
|
||||||
return RESULT_SUCCESS;
|
return RESULT_SUCCESS;
|
||||||
|
|
|
@ -111,4 +111,4 @@ void TimersInit() {
|
||||||
|
|
||||||
void TimersShutdown() {}
|
void TimersShutdown() {}
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -76,4 +76,4 @@ void TimersInit();
|
||||||
/// Tears down the timer variables
|
/// Tears down the timer variables
|
||||||
void TimersShutdown();
|
void TimersShutdown();
|
||||||
|
|
||||||
} // namespace
|
} // namespace Kernel
|
||||||
|
|
|
@ -18,7 +18,7 @@ namespace Service {
|
||||||
namespace FS {
|
namespace FS {
|
||||||
enum class MediaType : u32;
|
enum class MediaType : u32;
|
||||||
}
|
}
|
||||||
}
|
} // namespace Service
|
||||||
|
|
||||||
namespace Service {
|
namespace Service {
|
||||||
namespace AM {
|
namespace AM {
|
||||||
|
|
|
@ -306,8 +306,9 @@ void Module::Interface::SendParameter(Kernel::HLERequestContext& ctx) {
|
||||||
Kernel::SharedPtr<Kernel::Object> object = rp.PopGenericObject();
|
Kernel::SharedPtr<Kernel::Object> object = rp.PopGenericObject();
|
||||||
std::vector<u8> buffer = rp.PopStaticBuffer();
|
std::vector<u8> buffer = rp.PopStaticBuffer();
|
||||||
|
|
||||||
LOG_DEBUG(Service_APT, "called src_app_id=0x%08X, dst_app_id=0x%08X, signal_type=0x%08X,"
|
LOG_DEBUG(Service_APT,
|
||||||
"buffer_size=0x%08X",
|
"called src_app_id=0x%08X, dst_app_id=0x%08X, signal_type=0x%08X,"
|
||||||
|
"buffer_size=0x%08X",
|
||||||
static_cast<u32>(src_app_id), static_cast<u32>(dst_app_id),
|
static_cast<u32>(src_app_id), static_cast<u32>(dst_app_id),
|
||||||
static_cast<u32>(signal_type), buffer_size);
|
static_cast<u32>(signal_type), buffer_size);
|
||||||
|
|
||||||
|
@ -392,8 +393,9 @@ void Module::Interface::CancelParameter(Kernel::HLERequestContext& ctx) {
|
||||||
rb.Push(apt->applet_manager->CancelParameter(check_sender, sender_appid, check_receiver,
|
rb.Push(apt->applet_manager->CancelParameter(check_sender, sender_appid, check_receiver,
|
||||||
receiver_appid));
|
receiver_appid));
|
||||||
|
|
||||||
LOG_DEBUG(Service_APT, "called check_sender=%u, sender_appid=0x%08X, "
|
LOG_DEBUG(Service_APT,
|
||||||
"check_receiver=%u, receiver_appid=0x%08X",
|
"called check_sender=%u, sender_appid=0x%08X, "
|
||||||
|
"check_receiver=%u, receiver_appid=0x%08X",
|
||||||
check_sender, static_cast<u32>(sender_appid), check_receiver,
|
check_sender, static_cast<u32>(sender_appid), check_receiver,
|
||||||
static_cast<u32>(receiver_appid));
|
static_cast<u32>(receiver_appid));
|
||||||
}
|
}
|
||||||
|
|
|
@ -111,9 +111,10 @@ void RegisterPrivateClientCert(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff2_size << 4 | 0xA);
|
cmd_buff[2] = (buff2_size << 4 | 0xA);
|
||||||
cmd_buff[3] = buff2_addr;
|
cmd_buff[3] = buff2_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"translation1=0x%08X, buff1_addr=0x%08X, buff1_size=0x%08X, "
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, "
|
||||||
"translation2=0x%08X, buff2_addr=0x%08X, buff2_size=0x%08X",
|
"translation1=0x%08X, buff1_addr=0x%08X, buff1_size=0x%08X, "
|
||||||
|
"translation2=0x%08X, buff2_addr=0x%08X, buff2_size=0x%08X",
|
||||||
unk_param1, unk_param2, translation1, buff1_addr, buff1_size, translation2,
|
unk_param1, unk_param2, translation1, buff1_addr, buff1_size, translation2,
|
||||||
buff2_addr, buff2_size);
|
buff2_addr, buff2_size);
|
||||||
}
|
}
|
||||||
|
@ -177,8 +178,9 @@ void RegisterTask(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[3] = buff_addr;
|
cmd_buff[3] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||||
|
"translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, unk_param2, unk_param3, translation, buff_addr, buff_size);
|
unk_param1, unk_param2, unk_param3, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -196,8 +198,9 @@ void UnregisterTask(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[3] = buff_addr;
|
cmd_buff[3] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, translation=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -215,8 +218,9 @@ void ReconfigureTask(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[3] = buff_addr;
|
cmd_buff[3] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, translation=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -263,9 +267,10 @@ void GetNsDataIdList(Service::Interface* self) {
|
||||||
cmd_buff[4] = (buff_size << 4 | 0xC);
|
cmd_buff[4] = (buff_size << 4 | 0xC);
|
||||||
cmd_buff[5] = buff_addr;
|
cmd_buff[5] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"unk_param4=0x%08X, translation=0x%08X, "
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"unk_param4=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, unk_param2, unk_param3, unk_param4, translation, buff_addr, buff_size);
|
unk_param1, unk_param2, unk_param3, unk_param4, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -287,9 +292,10 @@ void GetOwnNsDataIdList(Service::Interface* self) {
|
||||||
cmd_buff[4] = (buff_size << 4 | 0xC);
|
cmd_buff[4] = (buff_size << 4 | 0xC);
|
||||||
cmd_buff[5] = buff_addr;
|
cmd_buff[5] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"unk_param4=0x%08X, translation=0x%08X, "
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"unk_param4=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, unk_param2, unk_param3, unk_param4, translation, buff_addr, buff_size);
|
unk_param1, unk_param2, unk_param3, unk_param4, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -311,9 +317,10 @@ void GetNewDataNsDataIdList(Service::Interface* self) {
|
||||||
cmd_buff[4] = (buff_size << 4 | 0xC);
|
cmd_buff[4] = (buff_size << 4 | 0xC);
|
||||||
cmd_buff[5] = buff_addr;
|
cmd_buff[5] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"unk_param4=0x%08X, translation=0x%08X, "
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"unk_param4=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, unk_param2, unk_param3, unk_param4, translation, buff_addr, buff_size);
|
unk_param1, unk_param2, unk_param3, unk_param4, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -335,9 +342,10 @@ void GetOwnNewDataNsDataIdList(Service::Interface* self) {
|
||||||
cmd_buff[4] = (buff_size << 4 | 0xC);
|
cmd_buff[4] = (buff_size << 4 | 0xC);
|
||||||
cmd_buff[5] = buff_addr;
|
cmd_buff[5] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"unk_param4=0x%08X, translation=0x%08X, "
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"unk_param4=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, unk_param2, unk_param3, unk_param4, translation, buff_addr, buff_size);
|
unk_param1, unk_param2, unk_param3, unk_param4, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -355,8 +363,9 @@ void SendProperty(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[3] = buff_addr;
|
cmd_buff[3] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, translation=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -373,8 +382,9 @@ void SendPropertyHandle(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[3] = buff_addr;
|
cmd_buff[3] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, translation, buff_addr, buff_size);
|
unk_param1, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -392,8 +402,9 @@ void ReceiveProperty(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff_size << 4 | 0xC);
|
cmd_buff[2] = (buff_size << 4 | 0xC);
|
||||||
cmd_buff[3] = buff_addr;
|
cmd_buff[3] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, buff_size=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"translation=0x%08X, buff_addr=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, buff_size=0x%08X, "
|
||||||
|
"translation=0x%08X, buff_addr=0x%08X",
|
||||||
unk_param1, buff_size, translation, buff_addr);
|
unk_param1, buff_size, translation, buff_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -411,8 +422,9 @@ void UpdateTaskInterval(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[3] = buff_addr;
|
cmd_buff[3] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, "
|
||||||
|
"translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -429,8 +441,9 @@ void UpdateTaskCount(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[3] = buff_addr;
|
cmd_buff[3] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) buff_size=0x%08X, unk_param2=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"translation=0x%08X, buff_addr=0x%08X",
|
"(STUBBED) buff_size=0x%08X, unk_param2=0x%08X, "
|
||||||
|
"translation=0x%08X, buff_addr=0x%08X",
|
||||||
buff_size, unk_param2, translation, buff_addr);
|
buff_size, unk_param2, translation, buff_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -448,8 +461,9 @@ void GetTaskInterval(Service::Interface* self) {
|
||||||
cmd_buff[3] = (buff_size << 4 | 0xA);
|
cmd_buff[3] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[4] = buff_addr;
|
cmd_buff[4] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, translation, buff_addr, buff_size);
|
unk_param1, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -467,8 +481,9 @@ void GetTaskCount(Service::Interface* self) {
|
||||||
cmd_buff[3] = (buff_size << 4 | 0xA);
|
cmd_buff[3] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[4] = buff_addr;
|
cmd_buff[4] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, translation, buff_addr, buff_size);
|
unk_param1, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -486,8 +501,9 @@ void GetTaskServiceStatus(Service::Interface* self) {
|
||||||
cmd_buff[3] = (buff_size << 4 | 0xA);
|
cmd_buff[3] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[4] = buff_addr;
|
cmd_buff[4] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, translation, buff_addr, buff_size);
|
unk_param1, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -504,8 +520,9 @@ void StartTask(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[3] = buff_addr;
|
cmd_buff[3] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, translation, buff_addr, buff_size);
|
unk_param1, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -522,8 +539,9 @@ void StartTaskImmediate(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[3] = buff_addr;
|
cmd_buff[3] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, translation, buff_addr, buff_size);
|
unk_param1, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -540,8 +558,9 @@ void CancelTask(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[3] = buff_addr;
|
cmd_buff[3] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, translation, buff_addr, buff_size);
|
unk_param1, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -572,8 +591,9 @@ void GetTaskState(Service::Interface* self) {
|
||||||
cmd_buff[5] = (buff_size << 4 | 0xA);
|
cmd_buff[5] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[6] = buff_addr;
|
cmd_buff[6] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) buff_size=0x%08X, unk_param2=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"translation=0x%08X, buff_addr=0x%08X",
|
"(STUBBED) buff_size=0x%08X, unk_param2=0x%08X, "
|
||||||
|
"translation=0x%08X, buff_addr=0x%08X",
|
||||||
buff_size, unk_param2, translation, buff_addr);
|
buff_size, unk_param2, translation, buff_addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -593,8 +613,9 @@ void GetTaskResult(Service::Interface* self) {
|
||||||
cmd_buff[5] = (buff_size << 4 | 0xA);
|
cmd_buff[5] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[6] = buff_addr;
|
cmd_buff[6] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, translation, buff_addr, buff_size);
|
unk_param1, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -614,8 +635,9 @@ void GetTaskCommErrorCode(Service::Interface* self) {
|
||||||
cmd_buff[5] = (buff_size << 4 | 0xA);
|
cmd_buff[5] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[6] = buff_addr;
|
cmd_buff[6] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, translation, buff_addr, buff_size);
|
unk_param1, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -635,8 +657,9 @@ void GetTaskStatus(Service::Interface* self) {
|
||||||
cmd_buff[3] = (buff_size << 4 | 0xA);
|
cmd_buff[3] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[4] = buff_addr;
|
cmd_buff[4] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||||
|
"translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, unk_param2, unk_param3, translation, buff_addr, buff_size);
|
unk_param1, unk_param2, unk_param3, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -655,8 +678,9 @@ void GetTaskError(Service::Interface* self) {
|
||||||
cmd_buff[3] = (buff_size << 4 | 0xA);
|
cmd_buff[3] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[4] = buff_addr;
|
cmd_buff[4] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, translation=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -674,8 +698,9 @@ void GetTaskInfo(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[3] = buff_addr;
|
cmd_buff[3] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, translation=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
unk_param1, unk_param2, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -705,8 +730,9 @@ void GetNsDataHeaderInfo(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff_size << 4 | 0xC);
|
cmd_buff[2] = (buff_size << 4 | 0xC);
|
||||||
cmd_buff[3] = buff_addr;
|
cmd_buff[3] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||||
|
"translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, unk_param2, unk_param3, translation, buff_addr, buff_size);
|
unk_param1, unk_param2, unk_param3, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -728,9 +754,10 @@ void ReadNsData(Service::Interface* self) {
|
||||||
cmd_buff[4] = (buff_size << 4 | 0xC);
|
cmd_buff[4] = (buff_size << 4 | 0xC);
|
||||||
cmd_buff[5] = buff_addr;
|
cmd_buff[5] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"unk_param4=0x%08X, translation=0x%08X, "
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||||
"buff_addr=0x%08X, buff_size=0x%08X",
|
"unk_param4=0x%08X, translation=0x%08X, "
|
||||||
|
"buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, unk_param2, unk_param3, unk_param4, translation, buff_addr, buff_size);
|
unk_param1, unk_param2, unk_param3, unk_param4, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -822,8 +849,9 @@ void RegisterStorageEntry(Service::Interface* self) {
|
||||||
cmd_buff[0] = IPC::MakeHeader(0x2F, 0x1, 0);
|
cmd_buff[0] = IPC::MakeHeader(0x2F, 0x1, 0);
|
||||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"unk_param4=0x%08X, unk_param5=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||||
|
"unk_param4=0x%08X, unk_param5=0x%08X",
|
||||||
unk_param1, unk_param2, unk_param3, unk_param4, unk_param5);
|
unk_param1, unk_param2, unk_param3, unk_param4, unk_param5);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -849,8 +877,9 @@ void SetStorageOption(Service::Interface* self) {
|
||||||
cmd_buff[0] = IPC::MakeHeader(0x31, 0x1, 0);
|
cmd_buff[0] = IPC::MakeHeader(0x31, 0x1, 0);
|
||||||
cmd_buff[1] = RESULT_SUCCESS.raw;
|
cmd_buff[1] = RESULT_SUCCESS.raw;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"unk_param3=0x%08X, unk_param4=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, "
|
||||||
|
"unk_param3=0x%08X, unk_param4=0x%08X",
|
||||||
unk_param1, unk_param2, unk_param3, unk_param4);
|
unk_param1, unk_param2, unk_param3, unk_param4);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -880,8 +909,9 @@ void StartBgImmediate(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff_size << 4 | 0xA);
|
cmd_buff[2] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[3] = buff_addr;
|
cmd_buff[3] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) buff_size=0x%08X, unk_param2=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"translation=0x%08X, buff_addr=0x%08X",
|
"(STUBBED) buff_size=0x%08X, unk_param2=0x%08X, "
|
||||||
|
"translation=0x%08X, buff_addr=0x%08X",
|
||||||
unk_param1, translation, buff_addr, buff_size);
|
unk_param1, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -899,8 +929,9 @@ void GetTaskActivePriority(Service::Interface* self) {
|
||||||
cmd_buff[3] = (buff_size << 4 | 0xA);
|
cmd_buff[3] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[4] = buff_addr;
|
cmd_buff[4] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) buff_size=0x%08X, unk_param2=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"translation=0x%08X, buff_addr=0x%08X",
|
"(STUBBED) buff_size=0x%08X, unk_param2=0x%08X, "
|
||||||
|
"translation=0x%08X, buff_addr=0x%08X",
|
||||||
unk_param1, translation, buff_addr, buff_size);
|
unk_param1, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -919,8 +950,9 @@ void RegisterImmediateTask(Service::Interface* self) {
|
||||||
cmd_buff[3] = (buff_size << 4 | 0xA);
|
cmd_buff[3] = (buff_size << 4 | 0xA);
|
||||||
cmd_buff[4] = buff_addr;
|
cmd_buff[4] = buff_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, unk_param3=0x%08X, "
|
||||||
|
"translation=0x%08X, buff_addr=0x%08X, buff_size=0x%08X",
|
||||||
unk_param1, unk_param2, unk_param3, translation, buff_addr, buff_size);
|
unk_param1, unk_param2, unk_param3, translation, buff_addr, buff_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -943,9 +975,10 @@ void SetTaskQuery(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff2_size << 4 | 0xA);
|
cmd_buff[2] = (buff2_size << 4 | 0xA);
|
||||||
cmd_buff[3] = buff2_addr;
|
cmd_buff[3] = buff2_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"translation1=0x%08X, buff1_addr=0x%08X, buff1_size=0x%08X, "
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, "
|
||||||
"translation2=0x%08X, buff2_addr=0x%08X, buff2_size=0x%08X",
|
"translation1=0x%08X, buff1_addr=0x%08X, buff1_size=0x%08X, "
|
||||||
|
"translation2=0x%08X, buff2_addr=0x%08X, buff2_size=0x%08X",
|
||||||
unk_param1, unk_param2, translation1, buff1_addr, buff1_size, translation2,
|
unk_param1, unk_param2, translation1, buff1_addr, buff1_size, translation2,
|
||||||
buff2_addr, buff2_size);
|
buff2_addr, buff2_size);
|
||||||
}
|
}
|
||||||
|
@ -969,9 +1002,10 @@ void GetTaskQuery(Service::Interface* self) {
|
||||||
cmd_buff[2] = (buff2_size << 4 | 0xC);
|
cmd_buff[2] = (buff2_size << 4 | 0xC);
|
||||||
cmd_buff[3] = buff2_addr;
|
cmd_buff[3] = buff2_addr;
|
||||||
|
|
||||||
LOG_WARNING(Service_BOSS, "(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, "
|
LOG_WARNING(Service_BOSS,
|
||||||
"translation1=0x%08X, buff1_addr=0x%08X, buff1_size=0x%08X, "
|
"(STUBBED) unk_param1=0x%08X, unk_param2=0x%08X, "
|
||||||
"translation2=0x%08X, buff2_addr=0x%08X, buff2_size=0x%08X",
|
"translation1=0x%08X, buff1_addr=0x%08X, buff1_size=0x%08X, "
|
||||||
|
"translation2=0x%08X, buff2_addr=0x%08X, buff2_size=0x%08X",
|
||||||
unk_param1, unk_param2, translation1, buff1_addr, buff1_size, translation2,
|
unk_param1, unk_param2, translation1, buff1_addr, buff1_size, translation2,
|
||||||
buff2_addr, buff2_size);
|
buff2_addr, buff2_size);
|
||||||
}
|
}
|
||||||
|
|
|
@ -728,8 +728,9 @@ void Module::Interface::SetDetailSize(Kernel::HLERequestContext& ctx) {
|
||||||
rb.Push(ERROR_INVALID_ENUM_VALUE);
|
rb.Push(ERROR_INVALID_ENUM_VALUE);
|
||||||
}
|
}
|
||||||
|
|
||||||
LOG_DEBUG(Service_CAM, "called, camera_select=%u, width=%u, height=%u, crop_x0=%u, crop_y0=%u, "
|
LOG_DEBUG(Service_CAM,
|
||||||
"crop_x1=%u, crop_y1=%u, context_select=%u",
|
"called, camera_select=%u, width=%u, height=%u, crop_x0=%u, crop_y0=%u, "
|
||||||
|
"crop_x1=%u, crop_y1=%u, context_select=%u",
|
||||||
camera_select.m_val, resolution.width, resolution.height, resolution.crop_x0,
|
camera_select.m_val, resolution.width, resolution.height, resolution.crop_x0,
|
||||||
resolution.crop_y0, resolution.crop_x1, resolution.crop_y1, context_select.m_val);
|
resolution.crop_y0, resolution.crop_x1, resolution.crop_y1, context_select.m_val);
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,7 +90,7 @@ struct ConsoleCountryInfo {
|
||||||
u8 country_code; ///< The country code of the console
|
u8 country_code; ///< The country code of the console
|
||||||
};
|
};
|
||||||
static_assert(sizeof(ConsoleCountryInfo) == 4, "ConsoleCountryInfo must be exactly 4 bytes");
|
static_assert(sizeof(ConsoleCountryInfo) == 4, "ConsoleCountryInfo must be exactly 4 bytes");
|
||||||
}
|
} // namespace
|
||||||
|
|
||||||
static const ConsoleModelInfo CONSOLE_MODEL = {NINTENDO_3DS_XL, {0, 0, 0}};
|
static const ConsoleModelInfo CONSOLE_MODEL = {NINTENDO_3DS_XL, {0, 0, 0}};
|
||||||
static const u8 CONSOLE_LANGUAGE = LANGUAGE_EN;
|
static const u8 CONSOLE_LANGUAGE = LANGUAGE_EN;
|
||||||
|
|
|
@ -236,8 +236,9 @@ static void RegisterInterruptEvents(Service::Interface* self) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (interrupt_events.HasTooManyEventsRegistered()) {
|
if (interrupt_events.HasTooManyEventsRegistered()) {
|
||||||
LOG_INFO(Service_DSP, "Ran out of space to register interrupts (Attempted to register "
|
LOG_INFO(Service_DSP,
|
||||||
"type=%u, pipe=%u, event_handle=0x%08X)",
|
"Ran out of space to register interrupts (Attempted to register "
|
||||||
|
"type=%u, pipe=%u, event_handle=0x%08X)",
|
||||||
type_index, pipe_index, event_handle);
|
type_index, pipe_index, event_handle);
|
||||||
cmd_buff[1] = ResultCode(ErrorDescription::InvalidResultValue, ErrorModule::DSP,
|
cmd_buff[1] = ResultCode(ErrorDescription::InvalidResultValue, ErrorModule::DSP,
|
||||||
ErrorSummary::OutOfResource, ErrorLevel::Status)
|
ErrorSummary::OutOfResource, ErrorLevel::Status)
|
||||||
|
@ -294,8 +295,9 @@ static void WriteProcessPipe(Service::Interface* self) {
|
||||||
AudioCore::DspPipe pipe = static_cast<AudioCore::DspPipe>(pipe_index);
|
AudioCore::DspPipe pipe = static_cast<AudioCore::DspPipe>(pipe_index);
|
||||||
|
|
||||||
if (IPC::StaticBufferDesc(size, 1) != cmd_buff[3]) {
|
if (IPC::StaticBufferDesc(size, 1) != cmd_buff[3]) {
|
||||||
LOG_ERROR(Service_DSP, "IPC static buffer descriptor failed validation (0x%X). pipe=%u, "
|
LOG_ERROR(Service_DSP,
|
||||||
"size=0x%X, buffer=0x%08X",
|
"IPC static buffer descriptor failed validation (0x%X). pipe=%u, "
|
||||||
|
"size=0x%X, buffer=0x%08X",
|
||||||
cmd_buff[3], pipe_index, size, buffer);
|
cmd_buff[3], pipe_index, size, buffer);
|
||||||
cmd_buff[0] = IPC::MakeHeader(0, 1, 0);
|
cmd_buff[0] = IPC::MakeHeader(0, 1, 0);
|
||||||
cmd_buff[1] = IPC::ERR_INVALID_BUFFER_DESCRIPTOR.raw;
|
cmd_buff[1] = IPC::ERR_INVALID_BUFFER_DESCRIPTOR.raw;
|
||||||
|
|
|
@ -87,8 +87,9 @@ void File::Read(Kernel::HLERequestContext& ctx) {
|
||||||
offset += file->offset;
|
offset += file->offset;
|
||||||
|
|
||||||
if (offset + length > backend->GetSize()) {
|
if (offset + length > backend->GetSize()) {
|
||||||
LOG_ERROR(Service_FS, "Reading from out of bounds offset=0x%" PRIx64
|
LOG_ERROR(Service_FS,
|
||||||
" length=0x%08X file_size=0x%" PRIx64,
|
"Reading from out of bounds offset=0x%" PRIx64
|
||||||
|
" length=0x%08X file_size=0x%" PRIx64,
|
||||||
offset, length, backend->GetSize());
|
offset, length, backend->GetSize());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -438,8 +438,9 @@ void FS_USER::CreateExtSaveData(Kernel::HLERequestContext& ctx) {
|
||||||
u32 icon_size = rp.Pop<u32>();
|
u32 icon_size = rp.Pop<u32>();
|
||||||
auto icon_buffer = rp.PopMappedBuffer();
|
auto icon_buffer = rp.PopMappedBuffer();
|
||||||
|
|
||||||
LOG_WARNING(Service_FS, "(STUBBED) savedata_high=%08X savedata_low=%08X unknown=%08X "
|
LOG_WARNING(Service_FS,
|
||||||
"files=%08X directories=%08X size_limit=%016" PRIx64 " icon_size=%08X",
|
"(STUBBED) savedata_high=%08X savedata_low=%08X unknown=%08X "
|
||||||
|
"files=%08X directories=%08X size_limit=%016" PRIx64 " icon_size=%08X",
|
||||||
save_high, save_low, unknown, directories, files, size_limit, icon_size);
|
save_high, save_low, unknown, directories, files, size_limit, icon_size);
|
||||||
|
|
||||||
std::vector<u8> icon(icon_size);
|
std::vector<u8> icon(icon_size);
|
||||||
|
@ -663,8 +664,9 @@ void FS_USER::SetSaveDataSecureValue(Kernel::HLERequestContext& ctx) {
|
||||||
|
|
||||||
// TODO: Generate and Save the Secure Value
|
// TODO: Generate and Save the Secure Value
|
||||||
|
|
||||||
LOG_WARNING(Service_FS, "(STUBBED) called, value=0x%016" PRIx64 " secure_value_slot=0x%08X "
|
LOG_WARNING(Service_FS,
|
||||||
"unqiue_id=0x%08X title_variation=0x%02X",
|
"(STUBBED) called, value=0x%016" PRIx64 " secure_value_slot=0x%08X "
|
||||||
|
"unqiue_id=0x%08X title_variation=0x%02X",
|
||||||
value, secure_value_slot, unique_id, title_variation);
|
value, secure_value_slot, unique_id, title_variation);
|
||||||
|
|
||||||
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
|
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
|
||||||
|
|
|
@ -261,31 +261,26 @@ ResultCode SetBufferSwap(u32 screen_id, const FrameBufferInfo& info) {
|
||||||
PAddr phys_address_left = Memory::VirtualToPhysicalAddress(info.address_left);
|
PAddr phys_address_left = Memory::VirtualToPhysicalAddress(info.address_left);
|
||||||
PAddr phys_address_right = Memory::VirtualToPhysicalAddress(info.address_right);
|
PAddr phys_address_right = Memory::VirtualToPhysicalAddress(info.address_right);
|
||||||
if (info.active_fb == 0) {
|
if (info.active_fb == 0) {
|
||||||
WriteSingleHWReg(
|
WriteSingleHWReg(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(
|
||||||
base_address +
|
framebuffer_config[screen_id].address_left1)),
|
||||||
4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].address_left1)),
|
phys_address_left);
|
||||||
phys_address_left);
|
WriteSingleHWReg(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(
|
||||||
WriteSingleHWReg(
|
framebuffer_config[screen_id].address_right1)),
|
||||||
base_address +
|
phys_address_right);
|
||||||
4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].address_right1)),
|
|
||||||
phys_address_right);
|
|
||||||
} else {
|
} else {
|
||||||
WriteSingleHWReg(
|
WriteSingleHWReg(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(
|
||||||
base_address +
|
framebuffer_config[screen_id].address_left2)),
|
||||||
4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].address_left2)),
|
phys_address_left);
|
||||||
phys_address_left);
|
WriteSingleHWReg(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(
|
||||||
WriteSingleHWReg(
|
framebuffer_config[screen_id].address_right2)),
|
||||||
base_address +
|
phys_address_right);
|
||||||
4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].address_right2)),
|
|
||||||
phys_address_right);
|
|
||||||
}
|
}
|
||||||
WriteSingleHWReg(base_address +
|
WriteSingleHWReg(base_address +
|
||||||
4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].stride)),
|
4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].stride)),
|
||||||
info.stride);
|
info.stride);
|
||||||
WriteSingleHWReg(
|
WriteSingleHWReg(base_address + 4 * static_cast<u32>(GPU_REG_INDEX(
|
||||||
base_address +
|
framebuffer_config[screen_id].color_format)),
|
||||||
4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].color_format)),
|
info.format);
|
||||||
info.format);
|
|
||||||
WriteSingleHWReg(
|
WriteSingleHWReg(
|
||||||
base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].active_fb)),
|
base_address + 4 * static_cast<u32>(GPU_REG_INDEX(framebuffer_config[screen_id].active_fb)),
|
||||||
info.shown_fb);
|
info.shown_fb);
|
||||||
|
|
|
@ -333,7 +333,9 @@ void Module::Interface::GetGyroscopeLowCalibrateParam(Kernel::HLERequestContext&
|
||||||
|
|
||||||
const s16 param_unit = 6700; // an approximate value taken from hw
|
const s16 param_unit = 6700; // an approximate value taken from hw
|
||||||
GyroscopeCalibrateParam param = {
|
GyroscopeCalibrateParam param = {
|
||||||
{0, param_unit, -param_unit}, {0, param_unit, -param_unit}, {0, param_unit, -param_unit},
|
{0, param_unit, -param_unit},
|
||||||
|
{0, param_unit, -param_unit},
|
||||||
|
{0, param_unit, -param_unit},
|
||||||
};
|
};
|
||||||
rb.PushRaw(param);
|
rb.PushRaw(param);
|
||||||
|
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
namespace Kernel {
|
namespace Kernel {
|
||||||
class Event;
|
class Event;
|
||||||
class SharedMemory;
|
class SharedMemory;
|
||||||
}
|
} // namespace Kernel
|
||||||
|
|
||||||
namespace CoreTiming {
|
namespace CoreTiming {
|
||||||
class EventType;
|
class EventType;
|
||||||
|
@ -335,5 +335,5 @@ void InstallInterfaces(SM::ServiceManager& service_manager);
|
||||||
|
|
||||||
/// Reload input devices. Used when input configuration changed
|
/// Reload input devices. Used when input configuration changed
|
||||||
void ReloadInputDevices();
|
void ReloadInputDevices();
|
||||||
}
|
} // namespace HID
|
||||||
}
|
} // namespace Service
|
||||||
|
|
|
@ -72,21 +72,77 @@ ExtraHID::ExtraHID(SendFunc send_func) : IRDevice(send_func) {
|
||||||
// and loaded from somewhere.
|
// and loaded from somewhere.
|
||||||
calibration_data = std::array<u8, 0x40>{{
|
calibration_data = std::array<u8, 0x40>{{
|
||||||
// 0x00
|
// 0x00
|
||||||
0x00, 0x00, 0x08, 0x80, 0x85, 0xEB, 0x11, 0x3F,
|
0x00,
|
||||||
|
0x00,
|
||||||
|
0x08,
|
||||||
|
0x80,
|
||||||
|
0x85,
|
||||||
|
0xEB,
|
||||||
|
0x11,
|
||||||
|
0x3F,
|
||||||
// 0x08
|
// 0x08
|
||||||
0x85, 0xEB, 0x11, 0x3F, 0xFF, 0xFF, 0xFF, 0xF5,
|
0x85,
|
||||||
|
0xEB,
|
||||||
|
0x11,
|
||||||
|
0x3F,
|
||||||
|
0xFF,
|
||||||
|
0xFF,
|
||||||
|
0xFF,
|
||||||
|
0xF5,
|
||||||
// 0x10
|
// 0x10
|
||||||
0xFF, 0x00, 0x08, 0x80, 0x85, 0xEB, 0x11, 0x3F,
|
0xFF,
|
||||||
|
0x00,
|
||||||
|
0x08,
|
||||||
|
0x80,
|
||||||
|
0x85,
|
||||||
|
0xEB,
|
||||||
|
0x11,
|
||||||
|
0x3F,
|
||||||
// 0x18
|
// 0x18
|
||||||
0x85, 0xEB, 0x11, 0x3F, 0xFF, 0xFF, 0xFF, 0x65,
|
0x85,
|
||||||
|
0xEB,
|
||||||
|
0x11,
|
||||||
|
0x3F,
|
||||||
|
0xFF,
|
||||||
|
0xFF,
|
||||||
|
0xFF,
|
||||||
|
0x65,
|
||||||
// 0x20
|
// 0x20
|
||||||
0xFF, 0x00, 0x08, 0x80, 0x85, 0xEB, 0x11, 0x3F,
|
0xFF,
|
||||||
|
0x00,
|
||||||
|
0x08,
|
||||||
|
0x80,
|
||||||
|
0x85,
|
||||||
|
0xEB,
|
||||||
|
0x11,
|
||||||
|
0x3F,
|
||||||
// 0x28
|
// 0x28
|
||||||
0x85, 0xEB, 0x11, 0x3F, 0xFF, 0xFF, 0xFF, 0x65,
|
0x85,
|
||||||
|
0xEB,
|
||||||
|
0x11,
|
||||||
|
0x3F,
|
||||||
|
0xFF,
|
||||||
|
0xFF,
|
||||||
|
0xFF,
|
||||||
|
0x65,
|
||||||
// 0x30
|
// 0x30
|
||||||
0xFF, 0x00, 0x08, 0x80, 0x85, 0xEB, 0x11, 0x3F,
|
0xFF,
|
||||||
|
0x00,
|
||||||
|
0x08,
|
||||||
|
0x80,
|
||||||
|
0x85,
|
||||||
|
0xEB,
|
||||||
|
0x11,
|
||||||
|
0x3F,
|
||||||
// 0x38
|
// 0x38
|
||||||
0x85, 0xEB, 0x11, 0x3F, 0xFF, 0xFF, 0xFF, 0x65,
|
0x85,
|
||||||
|
0xEB,
|
||||||
|
0x11,
|
||||||
|
0x3F,
|
||||||
|
0xFF,
|
||||||
|
0xFF,
|
||||||
|
0xFF,
|
||||||
|
0x65,
|
||||||
}};
|
}};
|
||||||
|
|
||||||
hid_polling_callback_id =
|
hid_polling_callback_id =
|
||||||
|
|
|
@ -16,7 +16,7 @@
|
||||||
namespace Kernel {
|
namespace Kernel {
|
||||||
class Event;
|
class Event;
|
||||||
class SharedMemory;
|
class SharedMemory;
|
||||||
}
|
} // namespace Kernel
|
||||||
|
|
||||||
namespace CoreTiming {
|
namespace CoreTiming {
|
||||||
class EventType;
|
class EventType;
|
||||||
|
|
|
@ -251,9 +251,10 @@ void IR_USER::InitializeIrNopShared(Kernel::HLERequestContext& ctx) {
|
||||||
|
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
|
|
||||||
LOG_INFO(Service_IR, "called, shared_buff_size=%u, recv_buff_size=%u, "
|
LOG_INFO(Service_IR,
|
||||||
"recv_buff_packet_count=%u, send_buff_size=%u, "
|
"called, shared_buff_size=%u, recv_buff_size=%u, "
|
||||||
"send_buff_packet_count=%u, baud_rate=%u",
|
"recv_buff_packet_count=%u, send_buff_size=%u, "
|
||||||
|
"send_buff_packet_count=%u, baud_rate=%u",
|
||||||
shared_buff_size, recv_buff_size, recv_buff_packet_count, send_buff_size,
|
shared_buff_size, recv_buff_size, recv_buff_packet_count, send_buff_size,
|
||||||
send_buff_packet_count, baud_rate);
|
send_buff_packet_count, baud_rate);
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@
|
||||||
namespace Kernel {
|
namespace Kernel {
|
||||||
class Event;
|
class Event;
|
||||||
class SharedMemory;
|
class SharedMemory;
|
||||||
}
|
} // namespace Kernel
|
||||||
|
|
||||||
namespace CoreTiming {
|
namespace CoreTiming {
|
||||||
class EventType;
|
class EventType;
|
||||||
|
|
|
@ -25,18 +25,27 @@ const std::array<int, 17> CROHelper::ENTRY_SIZE{{
|
||||||
1, // code
|
1, // code
|
||||||
1, // data
|
1, // data
|
||||||
1, // module name
|
1, // module name
|
||||||
sizeof(SegmentEntry), sizeof(ExportNamedSymbolEntry), sizeof(ExportIndexedSymbolEntry),
|
sizeof(SegmentEntry),
|
||||||
|
sizeof(ExportNamedSymbolEntry),
|
||||||
|
sizeof(ExportIndexedSymbolEntry),
|
||||||
1, // export strings
|
1, // export strings
|
||||||
sizeof(ExportTreeEntry), sizeof(ImportModuleEntry), sizeof(ExternalRelocationEntry),
|
sizeof(ExportTreeEntry),
|
||||||
sizeof(ImportNamedSymbolEntry), sizeof(ImportIndexedSymbolEntry),
|
sizeof(ImportModuleEntry),
|
||||||
|
sizeof(ExternalRelocationEntry),
|
||||||
|
sizeof(ImportNamedSymbolEntry),
|
||||||
|
sizeof(ImportIndexedSymbolEntry),
|
||||||
sizeof(ImportAnonymousSymbolEntry),
|
sizeof(ImportAnonymousSymbolEntry),
|
||||||
1, // import strings
|
1, // import strings
|
||||||
sizeof(StaticAnonymousSymbolEntry), sizeof(InternalRelocationEntry),
|
sizeof(StaticAnonymousSymbolEntry),
|
||||||
|
sizeof(InternalRelocationEntry),
|
||||||
sizeof(StaticRelocationEntry),
|
sizeof(StaticRelocationEntry),
|
||||||
}};
|
}};
|
||||||
|
|
||||||
const std::array<CROHelper::HeaderField, 4> CROHelper::FIX_BARRIERS{{
|
const std::array<CROHelper::HeaderField, 4> CROHelper::FIX_BARRIERS{{
|
||||||
Fix0Barrier, Fix1Barrier, Fix2Barrier, Fix3Barrier,
|
Fix0Barrier,
|
||||||
|
Fix1Barrier,
|
||||||
|
Fix2Barrier,
|
||||||
|
Fix3Barrier,
|
||||||
}};
|
}};
|
||||||
|
|
||||||
VAddr CROHelper::SegmentTagToAddress(SegmentTag segment_tag) const {
|
VAddr CROHelper::SegmentTagToAddress(SegmentTag segment_tag) const {
|
||||||
|
@ -209,12 +218,24 @@ ResultCode CROHelper::RebaseHeader(u32 cro_size) {
|
||||||
|
|
||||||
// verifies that all offsets are in the correct order
|
// verifies that all offsets are in the correct order
|
||||||
constexpr std::array<HeaderField, 18> OFFSET_ORDER = {{
|
constexpr std::array<HeaderField, 18> OFFSET_ORDER = {{
|
||||||
CodeOffset, ModuleNameOffset, SegmentTableOffset, ExportNamedSymbolTableOffset,
|
CodeOffset,
|
||||||
ExportTreeTableOffset, ExportIndexedSymbolTableOffset, ExportStringsOffset,
|
ModuleNameOffset,
|
||||||
ImportModuleTableOffset, ExternalRelocationTableOffset, ImportNamedSymbolTableOffset,
|
SegmentTableOffset,
|
||||||
ImportIndexedSymbolTableOffset, ImportAnonymousSymbolTableOffset, ImportStringsOffset,
|
ExportNamedSymbolTableOffset,
|
||||||
StaticAnonymousSymbolTableOffset, InternalRelocationTableOffset,
|
ExportTreeTableOffset,
|
||||||
StaticRelocationTableOffset, DataOffset, FileSize,
|
ExportIndexedSymbolTableOffset,
|
||||||
|
ExportStringsOffset,
|
||||||
|
ImportModuleTableOffset,
|
||||||
|
ExternalRelocationTableOffset,
|
||||||
|
ImportNamedSymbolTableOffset,
|
||||||
|
ImportIndexedSymbolTableOffset,
|
||||||
|
ImportAnonymousSymbolTableOffset,
|
||||||
|
ImportStringsOffset,
|
||||||
|
StaticAnonymousSymbolTableOffset,
|
||||||
|
InternalRelocationTableOffset,
|
||||||
|
StaticRelocationTableOffset,
|
||||||
|
DataOffset,
|
||||||
|
FileSize,
|
||||||
}};
|
}};
|
||||||
|
|
||||||
u32 prev_offset = GetField(OFFSET_ORDER[0]);
|
u32 prev_offset = GetField(OFFSET_ORDER[0]);
|
||||||
|
|
|
@ -195,10 +195,11 @@ void RO::LoadCRO(Kernel::HLERequestContext& ctx, bool link_on_load_bug_fix) {
|
||||||
VAddr crr_address = rp.Pop<u32>();
|
VAddr crr_address = rp.Pop<u32>();
|
||||||
auto process = rp.PopObject<Kernel::Process>();
|
auto process = rp.PopObject<Kernel::Process>();
|
||||||
|
|
||||||
LOG_DEBUG(Service_LDR, "called (%s), cro_buffer_ptr=0x%08X, cro_address=0x%08X, cro_size=0x%X, "
|
LOG_DEBUG(Service_LDR,
|
||||||
"data_segment_address=0x%08X, zero=%d, data_segment_size=0x%X, "
|
"called (%s), cro_buffer_ptr=0x%08X, cro_address=0x%08X, cro_size=0x%X, "
|
||||||
"bss_segment_address=0x%08X, bss_segment_size=0x%X, auto_link=%s, "
|
"data_segment_address=0x%08X, zero=%d, data_segment_size=0x%X, "
|
||||||
"fix_level=%d, crr_address=0x%08X",
|
"bss_segment_address=0x%08X, bss_segment_size=0x%X, auto_link=%s, "
|
||||||
|
"fix_level=%d, crr_address=0x%08X",
|
||||||
link_on_load_bug_fix ? "new" : "old", cro_buffer_ptr, cro_address, cro_size,
|
link_on_load_bug_fix ? "new" : "old", cro_buffer_ptr, cro_address, cro_size,
|
||||||
data_segment_address, zero, data_segment_size, bss_segment_address, bss_segment_size,
|
data_segment_address, zero, data_segment_size, bss_segment_address, bss_segment_size,
|
||||||
auto_link ? "true" : "false", fix_level, crr_address);
|
auto_link ? "true" : "false", fix_level, crr_address);
|
||||||
|
|
|
@ -21,7 +21,10 @@ enum : u32 {
|
||||||
static DaemonMask daemon_bit_mask = DaemonMask::Default;
|
static DaemonMask daemon_bit_mask = DaemonMask::Default;
|
||||||
static DaemonMask default_daemon_bit_mask = DaemonMask::Default;
|
static DaemonMask default_daemon_bit_mask = DaemonMask::Default;
|
||||||
static std::array<DaemonStatus, 4> daemon_status = {
|
static std::array<DaemonStatus, 4> daemon_status = {
|
||||||
DaemonStatus::Idle, DaemonStatus::Idle, DaemonStatus::Idle, DaemonStatus::Idle,
|
DaemonStatus::Idle,
|
||||||
|
DaemonStatus::Idle,
|
||||||
|
DaemonStatus::Idle,
|
||||||
|
DaemonStatus::Idle,
|
||||||
};
|
};
|
||||||
static ExclusiveState exclusive_state = ExclusiveState::None;
|
static ExclusiveState exclusive_state = ExclusiveState::None;
|
||||||
static u32 scan_interval = DEFAULT_SCAN_INTERVAL;
|
static u32 scan_interval = DEFAULT_SCAN_INTERVAL;
|
||||||
|
|
|
@ -554,8 +554,9 @@ void NWM_UDS::RecvBeaconBroadcastData(Kernel::HLERequestContext& ctx) {
|
||||||
rb.Push(RESULT_SUCCESS);
|
rb.Push(RESULT_SUCCESS);
|
||||||
rb.PushMappedBuffer(out_buffer);
|
rb.PushMappedBuffer(out_buffer);
|
||||||
|
|
||||||
LOG_DEBUG(Service_NWM, "called out_buffer_size=0x%08X, wlan_comm_id=0x%08X, id=0x%08X,"
|
LOG_DEBUG(Service_NWM,
|
||||||
"unk1=0x%08X, unk2=0x%08X, offset=%zu",
|
"called out_buffer_size=0x%08X, wlan_comm_id=0x%08X, id=0x%08X,"
|
||||||
|
"unk1=0x%08X, unk2=0x%08X, offset=%zu",
|
||||||
out_buffer_size, wlan_comm_id, id, unk1, unk2, cur_buffer_size);
|
out_buffer_size, wlan_comm_id, id, unk1, unk2, cur_buffer_size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -187,8 +187,9 @@ static std::vector<u8> DecryptDataFrame(const std::vector<u8>& encrypted_payload
|
||||||
d.SpecifyDataLengths(aad.size(), encrypted_payload.size() - 8, 0);
|
d.SpecifyDataLengths(aad.size(), encrypted_payload.size() - 8, 0);
|
||||||
|
|
||||||
CryptoPP::AuthenticatedDecryptionFilter df(
|
CryptoPP::AuthenticatedDecryptionFilter df(
|
||||||
d, nullptr, CryptoPP::AuthenticatedDecryptionFilter::MAC_AT_END |
|
d, nullptr,
|
||||||
CryptoPP::AuthenticatedDecryptionFilter::THROW_EXCEPTION);
|
CryptoPP::AuthenticatedDecryptionFilter::MAC_AT_END |
|
||||||
|
CryptoPP::AuthenticatedDecryptionFilter::THROW_EXCEPTION);
|
||||||
// put aad
|
// put aad
|
||||||
df.ChannelPut(CryptoPP::AAD_CHANNEL, aad.data(), aad.size());
|
df.ChannelPut(CryptoPP::AAD_CHANNEL, aad.data(), aad.size());
|
||||||
|
|
||||||
|
|
|
@ -10,7 +10,7 @@
|
||||||
namespace Kernel {
|
namespace Kernel {
|
||||||
class HLERequestContext;
|
class HLERequestContext;
|
||||||
class Semaphore;
|
class Semaphore;
|
||||||
}
|
} // namespace Kernel
|
||||||
|
|
||||||
namespace Service {
|
namespace Service {
|
||||||
namespace SM {
|
namespace SM {
|
||||||
|
|
|
@ -88,5 +88,5 @@ SSL_C::SSL_C() {
|
||||||
Register(FunctionTable);
|
Register(FunctionTable);
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace SSL_C
|
} // namespace SSL
|
||||||
} // namespace Service
|
} // namespace Service
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue