libgui 2.01
libgui is a GUI library for the GameCube, Wii, and Wii U
 
Loading...
Searching...
No Matches
WiiPlatform.h
1/****************************************************************************
2 * Platform Abstraction Layer (OGC driver)
3 * Daryl Borth 2026
4 * WiiPlatform.h
5 ***************************************************************************/
6#pragma once
7
8#include <stdint.h>
9
10#include "../../Platform.h"
11#include "../OgcVideoDriver.h"
12#include "../OgcInputDriver.h"
13#include "../OgcThreadDriver.h"
14#include "../OgcAudioDriver.h"
15#include "WiiFileSystemDriver.h"
16#include "../OgcLoggerSysReport.h"
17#include "../OgcLoggerUdp.h"
18#include "../OgcLoggerUsbGecko.h"
19#include "../../LoggerFile.h"
20
21void NotifyWiiShutdownRequested();
22
27class WiiPlatform : public Platform
28{
29 public:
30 WiiPlatform() {}
31
32 void init(const PlatformConfig& config) override;
33 void requestExit() override;
34
35 SystemEvent getSystemEvent() override;
36 Status getStatus() const override { return status; }
37 void triggerExit() override { status = Status::Exiting; }
38
39 AudioDriver* getAudio() override { return audioDriver; }
40 VideoDriver* getVideo() override { return videoDriver; }
41 InputDriver* getInput() override { return inputDriver; }
42 FileSystemDriver* getFileSystem() override { return fileSystemDriver; }
43 ThreadDriver* getThread() override { return threadDriver; }
44 Logger* getLogger() override { return logger; }
45
46 protected:
47 void shutdown() override;
48
49 private:
50 Status status = Status::Running;
51 OgcAudioDriver* audioDriver = nullptr;
52 OgcVideoDriver* videoDriver = nullptr;
53 OgcInputDriver* inputDriver = nullptr;
54 WiiFileSystemDriver* fileSystemDriver = nullptr;
55 OgcThreadDriver* threadDriver = nullptr;
56 Logger* logger = nullptr;
57};
Platform audio backend GuiSound delegates to: fixed one-shot PCM voices plus one background OGG strea...
Definition AudioDriver.h:18
Storage device enumeration/mount/poll backend for the SD/USB/DVD file browser.
Platform input backend GuiElements delegate to, via the per-channel InputController objects update() ...
Definition InputDriver.h:22
Central fan-out dispatcher.
Definition Logger.h:191
GC/Wii AudioDriver: AESND-based fixed voices for one-shots, wraps a GuiSoundOggPlayer for the backgro...
GC/Wii InputDriver: PAD (GameCube) / WPAD (Wiimote, Nunchuk, Classic, Wii U Pro Controller) plus a Wi...
GC/Wii ThreadDriver, built on libogc's LWP threading primitives.
GC/Wii VideoDriver: raw GX, double-buffered XFB.
Composition root for a platform.
Definition Platform.h:66
PlatformConfig config
Set by init() in every concrete Platform - store the passed-in config as the very first line of the o...
Definition Platform.h:117
Raw platform threading primitives.
Platform video backend owning the frame lifecycle (init/render/clear, screen size,...
Definition VideoDriver.h:28
Wii FileSystemDriver: hot-pluggable SD and up to 3 concurrent USB MSD plus DVD (ISO9660) and DEVICE_S...
void shutdown() override
Shuts down and releases all five drivers.
VideoDriver * getVideo() override
Definition WiiPlatform.h:40
Status getStatus() const override
Current platform lifecycle state (Running, Paused, Exiting).
Definition WiiPlatform.h:36
SystemEvent getSystemEvent() override
Current hardware/OS-level system event, if any.
Logger * getLogger() override
May return nullptr on a Platform that hasn't finished init() yet - LogPrintf()/LOG_*() already guard ...
Definition WiiPlatform.h:44
InputDriver * getInput() override
Definition WiiPlatform.h:41
void triggerExit() override
Transitions platform state to move to Exiting.
Definition WiiPlatform.h:37
void init(const PlatformConfig &config) override
Constructs and initializes all five drivers for this platform.
void requestExit() override
Tears down the platform (via shutdown()) and then performs whatever platform-appropriate action actua...
AudioDriver * getAudio() override
Definition WiiPlatform.h:39
ThreadDriver * getThread() override
Definition WiiPlatform.h:43
FileSystemDriver * getFileSystem() override
Definition WiiPlatform.h:42
SystemEvent
A hardware/OS-level system event a Platform can report.
Definition Platform.h:37
Status
Platform execution state.
Definition Platform.h:27
Settings passed to Platform::init().
Definition Platform.h:50