| | |
| | |
| | |
| |
|
| | #pragma once |
| |
|
| | #include <array> |
| | #include <span> |
| | #include <vector> |
| | #include "common/common_funcs.h" |
| | #include "common/common_types.h" |
| | #include "common/swap.h" |
| |
|
| | namespace Loader { |
| |
|
| | |
| | |
| | |
| | |
| | |
| | bool IsValidSMDH(std::span<const u8> smdh_data); |
| |
|
| | |
| | struct SMDH { |
| | u32_le magic; |
| | u16_le version; |
| | INSERT_PADDING_BYTES(2); |
| |
|
| | struct Title { |
| | std::array<char16_t, 0x40> short_title; |
| | std::array<char16_t, 0x80> long_title; |
| | std::array<char16_t, 0x40> publisher; |
| | }; |
| | std::array<Title, 16> titles; |
| |
|
| | std::array<u8, 16> ratings; |
| | u32_le region_lockout; |
| | u32_le match_maker_id; |
| | u64_le match_maker_bit_id; |
| | u32_le flags; |
| | u16_le eula_version; |
| | INSERT_PADDING_BYTES(2); |
| | float_le banner_animation_frame; |
| | u32_le cec_id; |
| | INSERT_PADDING_BYTES(8); |
| |
|
| | std::array<u8, 0x480> small_icon; |
| | std::array<u8, 0x1200> large_icon; |
| |
|
| | |
| | enum class TitleLanguage { |
| | Japanese = 0, |
| | English = 1, |
| | French = 2, |
| | German = 3, |
| | Italian = 4, |
| | Spanish = 5, |
| | SimplifiedChinese = 6, |
| | Korean = 7, |
| | Dutch = 8, |
| | Portuguese = 9, |
| | Russian = 10, |
| | TraditionalChinese = 11 |
| | }; |
| |
|
| | enum class GameRegion { |
| | Japan = 0, |
| | NorthAmerica = 1, |
| | Europe = 2, |
| | Australia = 3, |
| | China = 4, |
| | Korea = 5, |
| | Taiwan = 6, |
| | }; |
| |
|
| | enum Flags { |
| | Visible = 1 << 0, |
| | }; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | std::vector<u16> GetIcon(bool large) const; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | std::array<char16_t, 0x40> GetShortTitle(Loader::SMDH::TitleLanguage language) const; |
| |
|
| | |
| | |
| | |
| | |
| | |
| | std::array<char16_t, 0x80> GetLongTitle(Loader::SMDH::TitleLanguage language) const; |
| |
|
| | std::vector<GameRegion> GetRegions() const; |
| | }; |
| | static_assert(sizeof(SMDH) == 0x36C0, "SMDH structure size is wrong"); |
| |
|
| | } |
| |
|