mirror of
https://github.com/ACreTeam/ac-decomp
synced 2026-05-23 06:34:18 -04:00
87 lines
2.8 KiB
C
87 lines
2.8 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
|
|
/**
|
|
* @size{0x58}
|
|
*/
|
|
|
|
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();
|
|
|
|
u16 getEfbHeight() const { return mRenderModeObj->efbHeight; }
|
|
u16 getFbWidth() const { return mRenderModeObj->fbWidth; }
|
|
void getBounds(u16& width, u16& height) const {
|
|
width = getFbWidth();
|
|
height = getEfbHeight();
|
|
}
|
|
_GXRenderModeObj *getRenderMode() const { return mRenderModeObj; }
|
|
u16 getXfbHeight() const { return mRenderModeObj->xfbHeight; }
|
|
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
|