ReXGlue SDK
Loading...
Searching...
No Matches
title_runtime.h
Go to the documentation of this file.
1
11
12#pragma once
13
14#include <memory>
15
16#include <rex/platform.h>
17#include <rex/utility.h>
22#include <rex/types.h>
23#include <rex/result.h>
25
26struct PPCFuncMapping;
27
28namespace rex {
29namespace filesystem {
30class IFileSystem;
31class IXDBFTitleData;
32} // namespace filesystem
33namespace ppc {
34struct PPCImage;
35} // namespace ppc
36} // namespace rex
37
38namespace rex::kernel {
39
40class TitleRuntime;
41class TitlePaths;
42class RuntimeSettings;
43class KernelSettings;
44class TitleContext;
45
46class APU;
47class FunctionDispatcher;
48class ObjectTable;
49class ThreadRegistry;
50class ModuleRegistry;
51class NotificationBroadcaster;
52class Dispatcher;
53class WorkspaceHeap;
54class GuestAddressSpace;
55class ISystemHeap;
56class ITitleWorkspace;
57class IObjectTable;
58class IThreadRegistry;
59class IModuleRegistry;
60class INotificationBroadcaster;
61class IDPCQueue;
62class IOverlappedDispatcher;
63class TitleState;
64
65} // namespace rex::kernel
66
67namespace rex::xam {
68class ContentManager;
69class AchievementManager;
70class AppManager;
71class UserProfile;
72class IContentManager;
74} // namespace rex::xam
75
76namespace rex::kernel {
77
86 public:
92 explicit TitleRuntime(const ppc::PPCImage& image);
93
96
102 [[nodiscard]] Result<void> Load();
103
110 [[nodiscard]] Result<void> Launch();
111
116 void Unload();
117
121 bool IsLoaded() const;
122
126 bool IsRunning() const;
127
131 u32 GetTitleID() const;
132
137 [[nodiscard]] std::unique_ptr<rex::filesystem::IXDBFTitleData> GetTitleXDBF() const;
138
141
147 void SetAudioPaused(bool paused);
148
149 bool IsAudioPaused() const;
150
159
160 GuestMemory& GetGuestMemory() const;
161
162 kernel::IModuleRegistry& GetModuleRegistry();
163
164 rex::xam::IContentManager& GetContentManager();
165
166 rex::xam::IAchievementManager& GetAchievementManager();
167
168 kernel::IObjectTable& GetObjectTable();
169
170 kernel::IThreadRegistry& GetThreadRegistry();
171
172 kernel::ISystemHeap& GetGuestHeap();
173
174 kernel::ITitleWorkspace& GetGuestWorkspace();
175
178
179 kernel::ITitleExit& GetTitleExit();
180
181 kernel::INotificationBroadcaster& GetNotificationBroadcaster();
182
183 filesystem::IFileSystem& GetFileSystem();
184
191 [[nodiscard]] Result<::PPCFunc*> FindFunction(u32 address) const;
192
197
202
207
208 friend TitleState& StateOf(const TitleRuntime& runtime);
209
210 private:
211 std::unique_ptr<kernel::TitleState> state_;
212};
213
222
223#define REX_RUNTIME() ::rex::kernel::GetProcessRuntime()
224
225namespace detail {
226
227[[nodiscard]] inline GuestMemory* GetProcessGuestMemory() {
228 TitleRuntime* runtime = GetProcessRuntime();
229 return runtime ? &runtime->GetGuestMemory() : nullptr;
230}
231
232} // namespace detail
233
235#define REX_GUEST_MEMORY() ::rex::kernel::detail::GetProcessGuestMemory()
236
237} // namespace rex::kernel
Definition utility.h:37
Definition utility.h:305
Definition file_system.h:37
Definition xdbf.h:129
Definition guest_memory.h:46
Definition module.h:330
Definition notification_broadcaster.h:32
Definition object_table.h:42
Definition heap.h:80
Definition thread_registry.h:129
Definition title_exit.h:26
Definition guest_allocator.h:155
Definition kernel_settings.h:21
Definition runtime_settings.h:19
Definition title_paths.h:21
Definition title_runtime.h:85
rex::kernel::XLanguage GetUserLanguage() const
void SetAudioPaused(bool paused)
Result<::PPCFunc * > FindFunction(u32 address) const
std::unique_ptr< rex::filesystem::IXDBFTitleData > GetTitleXDBF() const
TitleRuntime(const ppc::PPCImage &image)
KernelSettings & GetKernelSettings() const
TitlePaths & GetTitlePaths()
rex::memory::GuestMembase GetMembase()
RuntimeSettings & GetRuntimeSettings()
Result< void > Load()
rex::ScopeGuard OnTitleExit(rex::MoveOnlyFunction< void(TitleExitReason)> callback)
Result< void > Launch()
Definition mapped_ptr.h:412
Definition app_manager.h:75
Definition achievement_manager.h:64
Definition content_manager.h:73
Definition user_profile.h:93
Content package and language IDs.
Definition export.h:24
XLanguage
Definition content.h:156
TitleExitReason
Definition title_exit.h:18
TitleRuntime * GetProcessRuntime()
Definition title_runtime.h:33
Definition app.h:36
typename detail::MoveOnlyFunctionFor< Signature >::type MoveOnlyFunction
Definition utility.h:254
std::expected< T, Error > Result
Definition result.h:98
Platform flags, packing macros and export markers.
#define REX_KERNEL_API
Definition platform.h:297
Definition recompiled_code.h:81
Definition image.h:73
Integer types, byte order wrappers and size literals.
Move only function, const propagating pointer and scope guard.