mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-28 10:59:16 -04:00
7c40d33db3
Phase 1a (boot slice): 30 instructions at 0xBFC00000, compiles clean. Phase 1b (instruction coverage): 54 opcodes implemented in strict_translator, 44,629 walker-reachable instructions covered, 0 missing. Phase 1c (function discovery): 76 functions from 2 seeds, 2,988 instructions, 199 call edges, 27 indirect jumps. All validated through StrictTranslator. Phase 1d (indirect control flow): 27 sites classified — 21 A0/B0/C0 dispatch stubs, 4 computed calls, 2 computed tail calls. Ghidra cross-referenced with 0 disagreements. Phase 1e (relocation): ROM-to-RAM copy at FUN_bfc00420 proven with both Ghidra (static) and DuckStation (runtime). 69 address aliases, 68/69 function entries match byte-for-byte in RAM. Normalization rule documented. Includes PRINCIPLES.md and DEBUG.md adapted from recomp-template. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
43 lines
796 B
C++
43 lines
796 B
C++
#include <toml.hpp>
|
|
|
|
#include <iostream>
|
|
#include <iomanip>
|
|
|
|
int main(int argc, char **argv)
|
|
{
|
|
if(argc != 3)
|
|
{
|
|
std::cerr << "usage: ./check [filename] [valid|invalid]" << std::endl;
|
|
return 1;
|
|
}
|
|
|
|
const std::string file_kind(argv[2]);
|
|
|
|
try
|
|
{
|
|
const auto data = toml::parse(argv[1]);
|
|
std::cout << std::setprecision(16) << std::setw(80) << data;
|
|
if(file_kind == "valid")
|
|
{
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
catch(const toml::syntax_error& err)
|
|
{
|
|
std::cout << "what(): " << err.what() << std::endl;
|
|
if(file_kind == "invalid")
|
|
{
|
|
return 0;
|
|
}
|
|
else
|
|
{
|
|
return 1;
|
|
}
|
|
}
|
|
return 127;
|
|
}
|