diff --git a/src/core/loader/nro.cpp b/src/core/loader/nro.cpp
index e92e2e06eab3100b683f8f0703c1d7d7a88a7d51..3a5361fdde9188df99ad58e602a595cd3cc46bc7 100644
--- a/src/core/loader/nro.cpp
+++ b/src/core/loader/nro.cpp
@@ -258,6 +258,15 @@ ResultStatus AppLoader_NRO::ReadTitle(std::string& title) {
     return ResultStatus::Success;
 }
 
+ResultStatus AppLoader_NRO::ReadControlData(FileSys::NACP& control) {
+    if (nacp == nullptr) {
+        return ResultStatus::ErrorNoControl;
+    }
+
+    control = *nacp;
+    return ResultStatus::Success;
+}
+
 bool AppLoader_NRO::IsRomFSUpdatable() const {
     return false;
 }
diff --git a/src/core/loader/nro.h b/src/core/loader/nro.h
index 1ffdae8058d88d5cba66a7d46b2e3a868560f4f8..71811bc29c0897ede506c6ba5e6e87679428f96d 100644
--- a/src/core/loader/nro.h
+++ b/src/core/loader/nro.h
@@ -43,6 +43,7 @@ public:
     ResultStatus ReadProgramId(u64& out_program_id) override;
     ResultStatus ReadRomFS(FileSys::VirtualFile& dir) override;
     ResultStatus ReadTitle(std::string& title) override;
+    ResultStatus ReadControlData(FileSys::NACP& control) override;
     bool IsRomFSUpdatable() const override;
 
 private: