common_funcs.h 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include "common/common_types.h"
  5. namespace FileSys {
  6. constexpr u64 AOC_TITLE_ID_MASK = 0x7FF;
  7. constexpr u64 AOC_TITLE_ID_OFFSET = 0x1000;
  8. constexpr u64 BASE_TITLE_ID_MASK = 0xFFFFFFFFFFFFE000;
  9. /**
  10. * Gets the base title ID from a given title ID.
  11. *
  12. * @param title_id The title ID.
  13. * @returns The base title ID.
  14. */
  15. [[nodiscard]] constexpr u64 GetBaseTitleID(u64 title_id) {
  16. return title_id & BASE_TITLE_ID_MASK;
  17. }
  18. /**
  19. * Gets the base title ID with a program index offset from a given title ID.
  20. *
  21. * @param title_id The title ID.
  22. * @param program_index The program index.
  23. * @returns The base title ID with a program index offset.
  24. */
  25. [[nodiscard]] constexpr u64 GetBaseTitleIDWithProgramIndex(u64 title_id, u64 program_index) {
  26. return GetBaseTitleID(title_id) + program_index;
  27. }
  28. /**
  29. * Gets the AOC (Add-On Content) base title ID from a given title ID.
  30. *
  31. * @param title_id The title ID.
  32. * @returns The AOC base title ID.
  33. */
  34. [[nodiscard]] constexpr u64 GetAOCBaseTitleID(u64 title_id) {
  35. return GetBaseTitleID(title_id) + AOC_TITLE_ID_OFFSET;
  36. }
  37. /**
  38. * Gets the AOC (Add-On Content) ID from a given AOC title ID.
  39. *
  40. * @param aoc_title_id The AOC title ID.
  41. * @returns The AOC ID.
  42. */
  43. [[nodiscard]] constexpr u64 GetAOCID(u64 aoc_title_id) {
  44. return aoc_title_id & AOC_TITLE_ID_MASK;
  45. }
  46. } // namespace FileSys