mirror of
https://github.com/boykopovar/AnyPS5.git
synced 2026-11-02 12:56:05 +00:00
Both follow firmware 13.42's libSceEditMp4.sprx, read from its disassembly and run natively on x86-64: InitializeParam clears bytes 0 to 15, stores 0x3f at 16 and 700 at 24 and ignores a null pointer; QueryMemSize returns 0x387d30. Co-Authored-By: Claude Opus 5.5 <[email protected]>
38 lines
1.1 KiB
C++
38 lines
1.1 KiB
C++
#include "prx/libSceEditMp4/include/Api.hpp"
|
|
#include <array>
|
|
#include <cstdint>
|
|
#include <cstdlib>
|
|
#include <cstring>
|
|
|
|
namespace {
|
|
|
|
void Require(bool value) { if (!value) std::abort(); }
|
|
|
|
std::array<std::uint8_t, 0x28> Initialized(std::uint8_t fill) {
|
|
std::array<std::uint8_t, 0x28> bytes{};
|
|
bytes.fill(fill);
|
|
sceEditMp4InitializeParam(bytes.data());
|
|
return bytes;
|
|
}
|
|
|
|
}
|
|
|
|
int main() {
|
|
for (const std::uint8_t fill : {std::uint8_t{0x00}, std::uint8_t{0xaa}}) {
|
|
const auto bytes = Initialized(fill);
|
|
for (std::size_t index = 0; index < 0x10; ++index) Require(bytes[index] == 0);
|
|
std::uint64_t at10 = 0;
|
|
std::uint32_t at18 = 0;
|
|
std::memcpy(&at10, bytes.data() + 0x10, sizeof(at10));
|
|
std::memcpy(&at18, bytes.data() + 0x18, sizeof(at18));
|
|
Require(at10 == 0x3f);
|
|
Require(at18 == 700);
|
|
for (std::size_t index = 0x1c; index < bytes.size(); ++index) Require(bytes[index] == fill);
|
|
}
|
|
sceEditMp4InitializeParam(nullptr);
|
|
|
|
Require(sceEditMp4QueryMemSize() == 0x387d30);
|
|
Require(sceEditMp4QueryMemSize() == 0x387d30);
|
|
return 0;
|
|
}
|