Merge pull request #17700 from hrydgard/improve-bad-iso-logging
Improve some logging related to bad ISO detection
This commit is contained in:
commit
5333091fa3
6 changed files with 21 additions and 11 deletions
|
@ -219,7 +219,10 @@ void System_PostUIMessage(const std::string &message, const std::string ¶m);
|
||||||
// no need to implement separately.
|
// no need to implement separately.
|
||||||
void System_AudioGetDebugStats(char *buf, size_t bufSize);
|
void System_AudioGetDebugStats(char *buf, size_t bufSize);
|
||||||
void System_AudioClear();
|
void System_AudioClear();
|
||||||
|
|
||||||
// These samples really have 16 bits of value, but can be a little out of range.
|
// These samples really have 16 bits of value, but can be a little out of range.
|
||||||
|
// This is for pushing rate-controlled 44khz audio from emulation.
|
||||||
|
// If you push a little too fast, we'll pitch up to a limit, for example.
|
||||||
void System_AudioPushSamples(const int32_t *audio, int numSamples);
|
void System_AudioPushSamples(const int32_t *audio, int numSamples);
|
||||||
|
|
||||||
inline void System_AudioResetStatCounters() {
|
inline void System_AudioResetStatCounters() {
|
||||||
|
|
|
@ -177,6 +177,14 @@ ISOFileSystem::~ISOFileSystem() {
|
||||||
delete treeroot;
|
delete treeroot;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string ISOFileSystem::TreeEntry::BuildPath() {
|
||||||
|
if (parent) {
|
||||||
|
return parent->BuildPath() + "/" + name;
|
||||||
|
} else {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void ISOFileSystem::ReadDirectory(TreeEntry *root) {
|
void ISOFileSystem::ReadDirectory(TreeEntry *root) {
|
||||||
for (u32 secnum = root->startsector, endsector = root->startsector + (root->dirsize + 2047) / 2048; secnum < endsector; ++secnum) {
|
for (u32 secnum = root->startsector, endsector = root->startsector + (root->dirsize + 2047) / 2048; secnum < endsector; ++secnum) {
|
||||||
u8 theSector[2048];
|
u8 theSector[2048];
|
||||||
|
@ -228,12 +236,12 @@ void ISOFileSystem::ReadDirectory(TreeEntry *root) {
|
||||||
entry->startsector = dir.firstDataSector;
|
entry->startsector = dir.firstDataSector;
|
||||||
entry->dirsize = dir.dataLength;
|
entry->dirsize = dir.dataLength;
|
||||||
entry->valid = isFile; // Can pre-mark as valid if file, as we don't recurse into those.
|
entry->valid = isFile; // Can pre-mark as valid if file, as we don't recurse into those.
|
||||||
VERBOSE_LOG(FILESYS, "%s: %s %08x %08x %i", entry->isDirectory ? "D" : "F", entry->name.c_str(), (u32)dir.firstDataSector, entry->startingPosition, entry->startingPosition);
|
VERBOSE_LOG(FILESYS, "%s: %s %08x %08x %d", entry->isDirectory ? "D" : "F", entry->name.c_str(), (u32)dir.firstDataSector, entry->startingPosition, entry->startingPosition);
|
||||||
|
|
||||||
// Round down to avoid any false reports.
|
// Round down to avoid any false reports.
|
||||||
if (isFile && dir.firstDataSector + (dir.dataLength / 2048) > blockDevice->GetNumBlocks()) {
|
if (isFile && dir.firstDataSector + (dir.dataLength / 2048) > blockDevice->GetNumBlocks()) {
|
||||||
blockDevice->NotifyReadError();
|
blockDevice->NotifyReadError();
|
||||||
ERROR_LOG(FILESYS, "File '%s' starts or ends outside ISO", entry->name.c_str());
|
ERROR_LOG(FILESYS, "File '%s' starts or ends outside ISO. firstDataSector: %d len: %d", entry->BuildPath().c_str(), dir.firstDataSector, dir.dataLength);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (entry->isDirectory && !relative) {
|
if (entry->isDirectory && !relative) {
|
||||||
|
|
|
@ -60,6 +60,9 @@ private:
|
||||||
struct TreeEntry {
|
struct TreeEntry {
|
||||||
~TreeEntry();
|
~TreeEntry();
|
||||||
|
|
||||||
|
// Recursive function that reconstructs the path by looking at the parent pointers.
|
||||||
|
std::string BuildPath();
|
||||||
|
|
||||||
std::string name;
|
std::string name;
|
||||||
u32 flags = 0;
|
u32 flags = 0;
|
||||||
u32 startingPosition = 0;
|
u32 startingPosition = 0;
|
||||||
|
|
|
@ -1064,8 +1064,8 @@ void CreditsScreen::render() {
|
||||||
dc.Flush();
|
dc.Flush();
|
||||||
}
|
}
|
||||||
|
|
||||||
SettingInfoMessage::SettingInfoMessage(int align, UI::AnchorLayoutParams *lp)
|
SettingInfoMessage::SettingInfoMessage(int align, float cutOffY, UI::AnchorLayoutParams *lp)
|
||||||
: UI::LinearLayout(UI::ORIENT_HORIZONTAL, lp) {
|
: UI::LinearLayout(UI::ORIENT_HORIZONTAL, lp), cutOffY_(cutOffY) {
|
||||||
using namespace UI;
|
using namespace UI;
|
||||||
SetSpacing(0.0f);
|
SetSpacing(0.0f);
|
||||||
Add(new UI::Spacer(10.0f));
|
Add(new UI::Spacer(10.0f));
|
||||||
|
@ -1077,7 +1077,7 @@ void SettingInfoMessage::Show(const std::string &text, const UI::View *refView)
|
||||||
if (refView) {
|
if (refView) {
|
||||||
Bounds b = refView->GetBounds();
|
Bounds b = refView->GetBounds();
|
||||||
const UI::AnchorLayoutParams *lp = GetLayoutParams()->As<UI::AnchorLayoutParams>();
|
const UI::AnchorLayoutParams *lp = GetLayoutParams()->As<UI::AnchorLayoutParams>();
|
||||||
if (b.y >= cutOffY_) {
|
if (cutOffY_ != -1.0f && b.y >= cutOffY_) {
|
||||||
ReplaceLayoutParams(new UI::AnchorLayoutParams(lp->width, lp->height, lp->left, 80.0f, lp->right, lp->bottom, lp->center));
|
ReplaceLayoutParams(new UI::AnchorLayoutParams(lp->width, lp->height, lp->left, 80.0f, lp->right, lp->bottom, lp->center));
|
||||||
} else {
|
} else {
|
||||||
ReplaceLayoutParams(new UI::AnchorLayoutParams(lp->width, lp->height, lp->left, g_display.dp_yres - 80.0f - 40.0f, lp->right, lp->bottom, lp->center));
|
ReplaceLayoutParams(new UI::AnchorLayoutParams(lp->width, lp->height, lp->left, g_display.dp_yres - 80.0f - 40.0f, lp->right, lp->bottom, lp->center));
|
||||||
|
|
|
@ -178,11 +178,8 @@ private:
|
||||||
|
|
||||||
class SettingInfoMessage : public UI::LinearLayout {
|
class SettingInfoMessage : public UI::LinearLayout {
|
||||||
public:
|
public:
|
||||||
SettingInfoMessage(int align, UI::AnchorLayoutParams *lp);
|
SettingInfoMessage(int align, float cutOffY, UI::AnchorLayoutParams *lp);
|
||||||
|
|
||||||
void SetBottomCutoff(float y) {
|
|
||||||
cutOffY_ = y;
|
|
||||||
}
|
|
||||||
void Show(const std::string &text, const UI::View *refView = nullptr);
|
void Show(const std::string &text, const UI::View *refView = nullptr);
|
||||||
|
|
||||||
void Draw(UIContext &dc) override;
|
void Draw(UIContext &dc) override;
|
||||||
|
|
|
@ -64,10 +64,9 @@ void TabbedUIDialogScreenWithGameBackground::CreateViews() {
|
||||||
if (!vertical) {
|
if (!vertical) {
|
||||||
leftSide += 200.0f;
|
leftSide += 200.0f;
|
||||||
}
|
}
|
||||||
settingInfo_ = new SettingInfoMessage(ALIGN_CENTER | FLAG_WRAP_TEXT, new AnchorLayoutParams(
|
settingInfo_ = new SettingInfoMessage(ALIGN_CENTER | FLAG_WRAP_TEXT, g_display.dp_yres - 200.0f, new AnchorLayoutParams(
|
||||||
g_display.dp_xres - leftSide - 40.0f, WRAP_CONTENT,
|
g_display.dp_xres - leftSide - 40.0f, WRAP_CONTENT,
|
||||||
leftSide, g_display.dp_yres - 80.0f - 40.0f, NONE, NONE));
|
leftSide, g_display.dp_yres - 80.0f - 40.0f, NONE, NONE));
|
||||||
settingInfo_->SetBottomCutoff(g_display.dp_yres - 200.0f);
|
|
||||||
root_->Add(settingInfo_);
|
root_->Add(settingInfo_);
|
||||||
|
|
||||||
// Show it again if we recreated the view
|
// Show it again if we recreated the view
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue