From 3034895d2f5a02e7456c19442f0c8078d4df11ab Mon Sep 17 00:00:00 2001 From: ecumber Date: Wed, 13 Jul 2022 11:53:28 -0700 Subject: [PATCH] VideoRecorder added --- data/uking_functions.csv | 8 +++---- lib/agl | 2 +- lib/sead | 2 +- src/KingSystem/System/CMakeLists.txt | 2 ++ src/KingSystem/System/VideoRecorder.cpp | 18 ++++++++++++++ src/KingSystem/System/VideoRecorder.h | 31 +++++++++++++++++++++++++ 6 files changed, 57 insertions(+), 6 deletions(-) create mode 100644 src/KingSystem/System/VideoRecorder.cpp create mode 100644 src/KingSystem/System/VideoRecorder.h diff --git a/data/uking_functions.csv b/data/uking_functions.csv index 68ec6ebf..2e63c9d0 100644 --- a/data/uking_functions.csv +++ b/data/uking_functions.csv @@ -88749,10 +88749,10 @@ Address,Quality,Size,Name 0x00000071010ba344,O,000596,_ZN4ksys13BasicProfiler3popEPKc 0x00000071010ba598,m,000176,_GLOBAL__sub_I_BasicProfiler.cpp 0x00000071010ba648,U,000212, -0x00000071010ba71c,U,000100, -0x00000071010ba780,U,000108, -0x00000071010ba7ec,U,000240,VideoRecorder::createInstance -0x00000071010ba8dc,U,000224,VideoRecorder::postCalc +0x00000071010ba71c,O,000100,_ZN4ksys13VideoRecorder18SingletonDisposer_D2Ev +0x00000071010ba780,O,000108,_ZN4ksys13VideoRecorder18SingletonDisposer_D0Ev +0x00000071010ba7ec,O,000240,_ZN4ksys13VideoRecorder14createInstanceEPN4sead4HeapE +0x00000071010ba8dc,O,000224,_ZN4ksys13VideoRecorder8postCalcEv 0x00000071010ba9bc,U,000004,nullsub_4499 0x00000071010ba9c0,U,000004,j__ZdlPv_1189 0x00000071010ba9c4,U,000004,nullsub_5565 diff --git a/lib/agl b/lib/agl index 62c3993c..b31cfcd0 160000 --- a/lib/agl +++ b/lib/agl @@ -1 +1 @@ -Subproject commit 62c3993c8ef9cd25b74281ad73d6f5f385048b9e +Subproject commit b31cfcd01e376e2fd4a2b45c2092a35c2c510847 diff --git a/lib/sead b/lib/sead index c51a95d0..fe401897 160000 --- a/lib/sead +++ b/lib/sead @@ -1 +1 @@ -Subproject commit c51a95d08254765a9a4a9a799bb74be46fd51499 +Subproject commit fe4018978ebc89f9b4df4cffc4b8af5c97bbcd74 diff --git a/src/KingSystem/System/CMakeLists.txt b/src/KingSystem/System/CMakeLists.txt index bfc41efe..5bf0cbc4 100644 --- a/src/KingSystem/System/CMakeLists.txt +++ b/src/KingSystem/System/CMakeLists.txt @@ -54,6 +54,8 @@ target_sources(uking PRIVATE Timer.h UIGlue.cpp UIGlue.h + VideoRecorder.cpp + VideoRecorder.h VFR.cpp VFR.h VFRValue.cpp diff --git a/src/KingSystem/System/VideoRecorder.cpp b/src/KingSystem/System/VideoRecorder.cpp new file mode 100644 index 00000000..53430f92 --- /dev/null +++ b/src/KingSystem/System/VideoRecorder.cpp @@ -0,0 +1,18 @@ +#include "KingSystem/System/VideoRecorder.h" + +namespace ksys { + +SEAD_SINGLETON_DISPOSER_IMPL(VideoRecorder) + +void VideoRecorder::postCalc() { + if (!isCaptureEnabled()) + return; + u32 framenum = mFrameNumber; + sead::FixedSafeString<0x100> output; + output.format("%s/%04d.tga", mFilename.cstr(), framenum); + agl::utl::ScreenShotMgr::instance()->reserveCaptureWithDebugHeap( + true, agl::TextureDataSerializerTGA::TGAFormat::_1, output, false); + mFrameNumber++; +} + +} // namespace ksys \ No newline at end of file diff --git a/src/KingSystem/System/VideoRecorder.h b/src/KingSystem/System/VideoRecorder.h new file mode 100644 index 00000000..79ab300f --- /dev/null +++ b/src/KingSystem/System/VideoRecorder.h @@ -0,0 +1,31 @@ +#pragma once + +#include +#include +#include +#include +#include "KingSystem/Utils/Types.h" + +namespace ksys { + +class VideoRecorder { + SEAD_SINGLETON_DISPOSER(VideoRecorder) + VideoRecorder() = default; + virtual ~VideoRecorder(); + +public: + void postCalc(); + bool isCaptureEnabled() const { return mCaptureEnabled; } + u32 getFrameNumber() const { return mFrameNumber; } + const sead::SafeString& getFileName() const { return mFilename; } + +private: + bool mCaptureEnabled = false; + bool _29 = true; + u32 mFrameNumber = 0; + sead::FixedSafeString<0x100> mFilename; +}; + +KSYS_CHECK_SIZE_NX150(VideoRecorder, 0x148); + +} // namespace ksys \ No newline at end of file