diff options
| author | Fernando S <fsahmkow27@gmail.com> | 2023-08-21 16:29:04 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-21 16:29:04 +0200 |
| commit | 861597eb2e32663dba37813273ff91434566523a (patch) | |
| tree | a05b7c596209f754a822c03cca162c6f32b6a565 /src/core/file_sys/fssystem/fssystem_utility.cpp | |
| parent | 6a5db5679b61d3d73244e42682f1b34d401e7736 (diff) | |
| parent | 775bf8e215c8c771b45f383b0b2ce46fa37ebe95 (diff) | |
Merge pull request #11284 from liamwhite/nca-release
vfs: expand support for NCA reading
Diffstat (limited to 'src/core/file_sys/fssystem/fssystem_utility.cpp')
| -rw-r--r-- | src/core/file_sys/fssystem/fssystem_utility.cpp | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/core/file_sys/fssystem/fssystem_utility.cpp b/src/core/file_sys/fssystem/fssystem_utility.cpp new file mode 100644 index 000000000..ceabb8ff1 --- /dev/null +++ b/src/core/file_sys/fssystem/fssystem_utility.cpp @@ -0,0 +1,27 @@ +// SPDX-FileCopyrightText: Copyright 2023 yuzu Emulator Project +// SPDX-License-Identifier: GPL-2.0-or-later + +#include "core/file_sys/fssystem/fssystem_utility.h" + +namespace FileSys { + +void AddCounter(void* counter_, size_t counter_size, u64 value) { + u8* counter = static_cast<u8*>(counter_); + u64 remaining = value; + u8 carry = 0; + + for (size_t i = 0; i < counter_size; i++) { + auto sum = counter[counter_size - 1 - i] + (remaining & 0xFF) + carry; + carry = static_cast<u8>(sum >> (sizeof(u8) * 8)); + auto sum8 = static_cast<u8>(sum & 0xFF); + + counter[counter_size - 1 - i] = sum8; + + remaining >>= (sizeof(u8) * 8); + if (carry == 0 && remaining == 0) { + break; + } + } +} + +} // namespace FileSys |
