From e19c2f31b7e29ba6d538fa281d660982d7eaff87 Mon Sep 17 00:00:00 2001 From: Mihawk <163614687+mihawk-99@users.noreply.github.com> Date: Sat, 10 Oct 2026 21:42:42 -0400 Subject: [PATCH] Test switch: /app0/framegen-dump.txt dumps the frame generator's frames --- src/main.cpp | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/src/main.cpp b/src/main.cpp index 4737900..9331473 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -41,6 +41,7 @@ #include #include #include +#include #include #include @@ -449,6 +450,7 @@ int main(int process_argc, char **process_argv) { static const char *const test_files[] = { "/app0/args.txt", + "/app0/framegen-dump.txt", "/app0/pad-script.txt", "/app0/pad-monitor.txt", "/app0/ps5vk-no-retain.txt", @@ -484,6 +486,27 @@ int main(int process_argc, char **process_argv) setenv("RADV_THREADED_RECORDING", "1", 1); ps5::debug::mark("radv: threaded recording on"); } + /* Testing: /app0/framegen-dump.txt (patch 0119) names a folder, and a second line + * the number of content frames to let pass first: the frame generator then writes + * its first 60 content frames and the frames it made there, raw RGBA8, for scoring. */ + if (std::FILE *dump = std::fopen("/app0/framegen-dump.txt", "r")) + { + char folder[200] = "", skip[16] = "0"; + if (std::fgets(folder, sizeof(folder), dump)) + { + if (std::fgets(skip, sizeof(skip), dump) == nullptr) + std::strcpy(skip, "0"); + folder[std::strcspn(folder, "\r\n")] = '\0'; + if (folder[0] != '\0') + { + mkdir(folder, 0777); + setenv("PS5_FRAMEGEN_DUMP", folder, 1); + setenv("PS5_FRAMEGEN_DUMP_SKIP", skip, 1); + ps5::debug::mark("framegen: dumping frames"); + } + } + std::fclose(dump); + } if (std::FILE *profile = std::fopen("/app0/ps5vk-profile.txt", "rb")) { std::fclose(profile);