Files
2025-06-17 23:46:35 +02:00

105 lines
3.0 KiB
C

#ifndef JUTVIDEO_H
#define JUTVIDEO_H
#include "types.h"
#include "dolphin/os/OSTime.h"
#include "dolphin/os.h"
#include "dolphin/gx.h"
#include "dolphin/vi.h"
#ifdef __cplusplus
typedef u8 (*Pattern)[2];
struct JUTVideo {
JUTVideo(const GXRenderModeObj*);
virtual ~JUTVideo(); // _08
static JUTVideo* createManager(const GXRenderModeObj*);
static void destroyManager();
static void preRetraceProc(unsigned long);
static void postRetraceProc(unsigned long);
static void drawDoneCallback();
u32 getEfbHeight() const {
return mRenderModeObj->efbHeight;
}
u32 getXfbHeight() const {
return mRenderModeObj->xfbHeight & 0xffff;
}
u32 getFbWidth() const {
return (u16)mRenderModeObj->fbWidth;
}
void getBounds(u16& width, u16& height) const {
width = getFbWidth();
height = getEfbHeight();
}
GXRenderModeObj* getRenderMode() const {
return mRenderModeObj;
}
u32 isAntiAliasing() const {
return mRenderModeObj->aa;
}
Pattern getSamplePattern() const {
return mRenderModeObj->sample_pattern;
}
u8* getVFilter() const {
return mRenderModeObj->vfilter;
}
OSMessageQueue* getMessageQueue() {
return &mMessageQueue;
};
static void drawDoneStart();
static void dummyNoDrawWait();
void setRenderMode(const GXRenderModeObj*);
void waitRetraceIfNeed(); // blr, global
VIRetraceCallback setPostRetraceCallback(VIRetraceCallback);
// Unused/inlined:
void getDrawWait();
VIRetraceCallback setPreRetraceCallback(VIRetraceCallback);
void getPixelAspect(const GXRenderModeObj*);
void getPixelAspect() const;
// Static inline gets
static JUTVideo* getManager() {
return sManager;
}
static OSTick getVideoInterval() {
return sVideoInterval;
}
static OSTick getVideoLastTick() {
return sVideoLastTick;
}
// _00 VTBL
GXRenderModeObj* mRenderModeObj; // _04
u32 _08; // _08
u32 mRetraceCount; // _0C
int _10; // _10
u8 _14[4]; // _14
u32 _18; // _18
VIRetraceCallback mPreviousPreRetraceCallback; // _1C
VIRetraceCallback mPreviousPostRetraceCallback; // _20
VIRetraceCallback mPreRetraceCallback; // _24
VIRetraceCallback mPostRetraceCallback; // _28
bool mIsSetBlack; // _2C
s32 mSetBlackFrameCount; // _30
OSMessage mMessage; // _34
OSMessageQueue mMessageQueue; // _38
static JUTVideo* sManager;
static OSTick sVideoLastTick;
static OSTick sVideoInterval;
};
inline JUTVideo* JUTGetVideoManager() {
return JUTVideo::getManager();
}
extern bool sDrawWaiting;
#endif
#endif