From ca1e242997e9bf0bf9c5940ae3516ee18b8fdf26 Mon Sep 17 00:00:00 2001 From: Tobi Date: Fri, 22 Apr 2022 14:27:10 +0200 Subject: [PATCH] __ --- log.cpp | 2 +- renderd7.cpp | 83 +++++++++++++++++++++++++++++++++++++++++++++++----- renderd7.hpp | 8 +++-- 3 files changed, 82 insertions(+), 11 deletions(-) diff --git a/log.cpp b/log.cpp index cf13e48..5f06278 100644 --- a/log.cpp +++ b/log.cpp @@ -30,7 +30,7 @@ Log::Log() void Log::Init(const char *filename) { - std::string name = "logs/Log_" + Log::logDate() + filename + ".txt"; + std::string name = "logs/Log_" + Log::logDate() + filename + ".txt"; this->filename = name.c_str(); if ((access(name.c_str(), F_OK) == 0)) { diff --git a/renderd7.cpp b/renderd7.cpp index 90f0128..09ae7b1 100644 --- a/renderd7.cpp +++ b/renderd7.cpp @@ -4,7 +4,7 @@ #define RGBA8(r, g, b, a) ((((r) & 0xFF) << 0) | (((g) & 0xFF) << 8) | (((b) & 0xFF) << 16) | (((a) & 0xFF) << 24)) #define D7_NOTHING C2D_Color32(0, 0, 0, 0) -#define CFGVER "1" +#define CFGVER "2" Log renderd7log; float animtime; bool isndspinit = false; @@ -50,6 +50,11 @@ float d11framerate = 0; u32 mt_color; u32 mt_txtcolor; +std::string mt_fps; +std::string mt_cpu; +std::string mt_gpu; +std::string mt_cmd; + bool shouldbe_disabled = false; int mt_screen; //int mt_width = mt_screen ? 320 : 400; @@ -57,6 +62,12 @@ float mt_txtSize; bool metrikd = false; //double mt_fpsgraph[320]; std::vector mt_fpsgraph(320); + +//Metrik-CSV +bool mt_dumpcsv = false; //Logs the Fps and stuff to csv. It saves every second to not loose performence. +bool mt_csvloop = false; //Saves In Every Frame but slows down performens. mt_dumpcsv must be enabled. +std::ofstream mt_csv; +std::string mt_cname; //------------------------------------------- bool currentScreen = false; @@ -67,6 +78,16 @@ C3D_RenderTarget* Bottom; #define DSEVENBLACK C2D_Color32(0, 0 ,0, 255) #define DSEVENWHITE C2D_Color32(255, 255, 255, 255) +std::string Date(void) +{ + time_t unixTime; + struct tm timeStruct; + time(&unixTime); + localtime_r(&unixTime, &timeStruct); + return format("%04i-%02i-%02i %02i:%02i:%02i", timeStruct.tm_year + 1900, timeStruct.tm_mon + 1, timeStruct.tm_mday, + timeStruct.tm_hour, timeStruct.tm_min, timeStruct.tm_sec); +} + void screenoff() { gspLcdInit();\ @@ -615,6 +636,8 @@ Result RenderD7::Init::Main(std::string app_name) cfgstruct["metrik-settings"]["ColorA"] = "255"; cfgstruct["metrik-settings"]["Color"] = "#000000"; cfgstruct["metrik-settings"]["txtSize"] = "0.7f"; + cfgstruct["metrik-settings"]["dumpcsv"] = "0"; + cfgstruct["metrik-settings"]["dumpcsvloop"] = "0"; cfgfile->write(cfgstruct); } cfgfile = std::make_unique(cfgpath+ "/config.ini"); @@ -627,6 +650,8 @@ Result RenderD7::Init::Main(std::string app_name) mt_txtSize = RenderD7::Convert::StringtoFloat(cfgstruct["metrik-settings"]["txtSize"]); mt_screen = RenderD7::Convert::StringtoInt(cfgstruct["metrik-settings"]["Screen"]); rd7_superreselution = RenderD7::Convert::FloatToBool(RenderD7::Convert::StringtoFloat(cfgstruct["settings"]["super-reselution"])); + mt_dumpcsv = RenderD7::Convert::FloatToBool(RenderD7::Convert::StringtoFloat(cfgstruct["metrik-settings"]["dumpcsv"])); + mt_csvloop = RenderD7::Convert::FloatToBool(RenderD7::Convert::StringtoFloat(cfgstruct["metrik-settings"]["dumpcsvloop"])); //Check if citra s64 citracheck = 0; svcGetSystemInfo(&citracheck, 0x20000, 0); @@ -637,6 +662,16 @@ Result RenderD7::Init::Main(std::string app_name) { if (consoleModel != 3) gfxSetWide(true); } + + if (mt_dumpcsv) + { + mt_cname = cfgpath + Date() + ".csv"; + FILE* logfile = fopen((mt_cname.c_str()), "w"); + fclose(logfile); + mt_csv.open((mt_cname), std::ofstream::app); + mt_csv << "FPS,CPU,GPU,CMD\n"; + mt_csv.close(); + } RenderD7::AddOvl(std::make_unique()); C3D_Init(C3D_DEFAULT_CMDBUF_SIZE); @@ -945,10 +980,10 @@ void RenderD7::DrawMetrikOvl() std::string __C = RENDERD7VSTRING; std::string info = "RenderD7 " + __C + " Debug Overlay"; float infoy = 240 - RenderD7::GetTextHeight(mt_txtSize, info); - std::string fps = "FPS: " + RenderD7::GetFramerate(); - std::string cpu = "CPU: " + std::to_string(C3D_GetProcessingTime()*6.0f).substr(0, 4) + "%/" + std::to_string(C3D_GetProcessingTime()).substr(0, 4) + "ms"; - std::string gpu = "GPU: " + std::to_string(C3D_GetDrawingTime()*6.0f).substr(0, 4) + "%/" + std::to_string(C3D_GetDrawingTime()).substr(0, 4) + "ms"; - std::string cmd = "CMD: " + std::to_string(C3D_GetCmdBufUsage()*100.0f).substr(0, 4) + "%/" + std::to_string(C3D_GetCmdBufUsage()).substr(0, 4) + "ms"; + mt_fps = "FPS: " + RenderD7::GetFramerate(); + mt_cpu = "CPU: " + std::to_string(C3D_GetProcessingTime()*6.0f).substr(0, 4) + "%/" + std::to_string(C3D_GetProcessingTime()).substr(0, 4) + "ms"; + mt_gpu = "GPU: " + std::to_string(C3D_GetDrawingTime()*6.0f).substr(0, 4) + "%/" + std::to_string(C3D_GetDrawingTime()).substr(0, 4) + "ms"; + mt_cmd = "CMD: " + std::to_string(C3D_GetCmdBufUsage()*100.0f).substr(0, 4) + "%/" + std::to_string(C3D_GetCmdBufUsage()).substr(0, 4) + "ms"; RenderD7::DrawRect(0, 0, RenderD7::GetTextWidth(mt_txtSize, fps), RenderD7::GetTextHeight(mt_txtSize, fps), mt_color); RenderD7::DrawRect(0, 50, RenderD7::GetTextWidth(mt_txtSize, cpu), RenderD7::GetTextHeight(mt_txtSize, cpu), mt_color); RenderD7::DrawRect(0, 70, RenderD7::GetTextWidth(mt_txtSize, gpu), RenderD7::GetTextHeight(mt_txtSize, gpu), mt_color); @@ -1029,7 +1064,7 @@ void OvlHandler() //} } - +int lp = 0; void RenderD7::FrameEnd() { if (metrikd && !shouldbe_disabled)RenderD7::DrawMetrikOvl(); @@ -1038,6 +1073,19 @@ void RenderD7::FrameEnd() { RenderD7::LoadSettings(); }*/ + if (mt_dumpcsv && lp == 60) + { + std::string _mt_fps = RenderD7::GetFramerate(); + std::string _mt_cpu = std::to_string(C3D_GetProcessingTime()).substr(0, 4); + std::string _mt_gpu = std::to_string(C3D_GetDrawingTime()).substr(0, 4); + std::string _mt_cmd = std::to_string(C3D_GetCmdBufUsage()).substr(0, 4); + mt_csv.open((mt_cname), std::ofstream::app); + std::string fmt_ = _mt_fps + "," + _mt_cpu + "," + _mt_gpu + "," + _mt_cmd + "\n"; + mt_csv << fmt_; + mt_csv.close(); + lp = 0; + } + lp++; C3D_FrameEnd(0); } @@ -1059,7 +1107,9 @@ void RenderD7::RSettings::Draw(void) const RenderD7::DrawRect(0, 0, 400, 21, RenderD7::Color::Hex("#111111")); RenderD7::DrawRect(0, 21, 400, 220, RenderD7::Color::Hex("#eeeeee")); RenderD7::DrawText(0, 0, 0.7f, DSEVENWHITE, "RenderD7->Settings"); - RenderD7::DrawText(0, 26, 0.7f, DSEVENBLACK, "RD7SR" + rd7srstate); + RenderD7::DrawText(0, 30, 0.7f, DSEVENBLACK, "RD7SR: " + rd7srstate); + RenderD7::DrawText(0, 50, 0.7f, DSEVENBLACK, "Metrik to Csv: " + csvstate); + RenderD7::DrawText(0, 70, 0.7f, DSEVENBLACK, "Metrik to Csv-Loop: " + csvlsstate); RenderD7::OnScreen(Bottom); RenderD7::DrawRect(0, 0, 320, 240, RenderD7::Color::Hex("#eeeeee")); RenderD7::DrawTObjects(buttons, RenderD7::Color::Hex("#111111"), RenderD7::Color::Hex("#eeeeee")); @@ -1068,10 +1118,29 @@ void RenderD7::RSettings::Draw(void) const void RenderD7::RSettings::Logic(u32 hDown, u32 hHeld, u32 hUp, touchPosition touch) { rd7srstate = rd7_superreselution ? "true" : "false"; + csvstate = mt_dumpcsv ? "true" : "false"; + csvlsstate = mt_csvloop ? "true" : "false"; if (RenderD7::touchTObj(d7_touch, buttons[0])) { RenderD7::ToggleRD7SR(); } + if (RenderD7::touchTObj(d7_touch, buttons[1])) + { + mt_dumpcsv = mt_dumpcsv ? false : true; + if (mt_dumpcsv) + { + mt_cname = cfgpath + Date() + ".csv"; + FILE* logfile = fopen((mt_cname.c_str()), "w"); + fclose(logfile); + mt_csv.open((mt_cname), std::ofstream::app); + mt_csv << "FPS,CPU,GPU,CMD\n"; + mt_csv.close(); + } + } + if (RenderD7::touchTObj(d7_touch, buttons[2])) + { + mt_csvloop = mt_csvloop ? false : true; + } if (d7_hDown & KEY_B) { cfgfile->write(cfgstruct); diff --git a/renderd7.hpp b/renderd7.hpp index be462cb..b6f82ef 100644 --- a/renderd7.hpp +++ b/renderd7.hpp @@ -28,7 +28,7 @@ #include "stringtool.hpp" #include "Clock.hpp" -#define RENDERD7VSTRING "0.7.0" +#define RENDERD7VSTRING "0.7.1" #define CHANGELOG "0.6.2: \n0.6.10: rewrite Threadsystem, Improve framerate\n0.6.02: Fix Code in lang.hpp\nadd Draw Text Left Function.\nadd changelog\n0.6.01: add Threading system." #define DEFAULT_CENTER 0.5f @@ -157,11 +157,13 @@ namespace RenderD7 { private: std::string rd7srstate = "false"; + std::string csvstate = "false"; + std::string csvlstate = "false"; std::vector buttons = { {20, 35, 120, 35, "RD7SR", -11, 10}, - {20, 85, 120, 35, "", 0, 9}, - {20, 135, 120, 35, "", -8, 10}, + {20, 85, 120, 35, "MT_CSV", 0, 9}, + {20, 135, 120, 35, "MT_CSV-L", -8, 10}, {20, 185, 120, 35, "", 8, 10}, {180, 35, 120, 35, "", -15, 10}, {180, 85, 120, 35, "", -15, 10},