yaze 0.3.2
Link to the Past ROM Editor
 
Loading...
Searching...
No Matches
rom_diagnostics.cc
Go to the documentation of this file.
2
3#include <iomanip>
4#include <sstream>
5
6#include "absl/strings/str_cat.h"
7
8namespace yaze {
9
12 header_misalignment = false;
13 all_sheets_0xFF = true; // Assume true, prove false
14
15 // Check for size zero regression
16 for (const auto& sheet : sheets) {
17 if (sheet.is_compressed && sheet.decomp_size_param == 0) {
19 }
20
21 // If any sheet succeeded and has non-0xFF data, clear the symptom flag
22 if (sheet.decompression_succeeded && sheet.actual_decomp_size > 0) {
23 all_sheets_0xFF = false;
24 }
25 }
26
27 // Check for header misalignment
28 // If pointer tables point to 0 or weird locations, it might be misalignment
29 // A simple heuristic: if sheet 0 offset is > rom_size, it's definitely broken.
30 if (sheets[0].pc_offset > rom_size) {
32 }
33}
34
36 std::ostringstream json;
37 json << std::boolalpha;
38 json << "{";
39 json << "\"rom_size\":" << rom_size << ",";
40 json << "\"header_stripped\":" << header_stripped << ",";
41 json << "\"checksum_valid\":" << checksum_valid << ",";
42
43 json << "\"analysis\":{";
44 json << "\"size_zero_regression\":" << size_zero_regression << ",";
45 json << "\"header_misalignment\":" << header_misalignment << ",";
46 json << "\"all_sheets_0xFF\":" << all_sheets_0xFF;
47 json << "},";
48
49 json << "\"sheets\":[";
50 for (size_t i = 0; i < sheets.size(); ++i) {
51 const auto& s = sheets[i];
52 if (i > 0) json << ",";
53 json << "{";
54 json << "\"idx\":" << s.index << ",";
55 json << "\"pc\":" << s.pc_offset << ",";
56 json << "\"snes\":" << s.snes_address << ",";
57 json << "\"comp\":" << s.is_compressed << ",";
58 json << "\"ok\":" << s.decompression_succeeded << ",";
59 json << "\"param\":" << s.decomp_size_param << ",";
60 json << "\"sz\":" << s.actual_decomp_size << ",";
61
62 json << "\"bytes\":\"";
63 for (size_t b = 0; b < s.first_bytes.size(); ++b) {
64 json << std::hex << std::uppercase << std::setfill('0') << std::setw(2) << (int)s.first_bytes[b];
65 }
66 json << std::dec << "\"";
67
68 json << "}";
69 }
70 json << "]";
71 json << "}";
72 return json.str();
73}
74
75} // namespace yaze
std::array< SheetDiagnostics, 223 > sheets