#include "prx/libSceDiscId/include/Api.hpp" #include #include #include #include namespace { void Require(bool condition) { if (!condition) std::abort(); } template bool Throws(TCall call) { try { static_cast(call()); } catch (const std::runtime_error&) { return true; } return false; } } int main() { Require(Throws([] { return sceDiscIdGet(nullptr); })); Require(Throws([] { return sceDiscIdGet2(nullptr, 0); })); Require(Throws([] { return sceDiscIdGet2(nullptr, 0xFFFFFFFFu); })); std::uint8_t buffer[64]; std::memset(buffer, 0xAB, sizeof(buffer)); auto* id = reinterpret_cast(buffer); auto* id2 = reinterpret_cast(buffer); Require(Throws([id] { return sceDiscIdGet(id); })); Require(Throws([id2] { return sceDiscIdGet2(id2, 0); })); Require(Throws([id2] { return sceDiscIdGet2(id2, 1); })); Require(Throws([id2] { return sceDiscIdGet2(id2, 3); })); Require(Throws([id2] { return sceDiscIdGet2(id2, 0xFFFFFFFFu); })); for (std::uint8_t byte : buffer) Require(byte == 0xAB); return 0; }