Path: blob/master/src/core/cdrom_subq_replacement.h
4214 views
// SPDX-FileCopyrightText: 2019-2025 Connor McLaughlin <[email protected]>1// SPDX-License-Identifier: CC-BY-NC-ND-4.023#pragma once45#include "util/cd_image.h"67#include <cstdio>8#include <unordered_map>910class CDROMSubQReplacement11{12public:13CDROMSubQReplacement();14~CDROMSubQReplacement();1516// NOTE: Can return true if no sbi is available, false means load/parse error.17static bool LoadForImage(std::unique_ptr<CDROMSubQReplacement>* ret, CDImage* image, std::string_view serial,18std::string_view title, Error* error);1920size_t GetReplacementSectorCount() const { return m_replacement_subq.size(); }2122/// Returns the replacement subchannel data for the specified sector.23const CDImage::SubChannelQ* GetReplacementSubQ(u32 lba) const;2425private:26using ReplacementMap = std::unordered_map<u32, CDImage::SubChannelQ>;2728static std::unique_ptr<CDROMSubQReplacement> LoadSBI(const std::string& path, std::FILE* fp, Error* error);29static std::unique_ptr<CDROMSubQReplacement> LoadLSD(const std::string& path, std::FILE* fp, Error* error);3031ReplacementMap m_replacement_subq;32};333435