mirror of
https://github.com/zeldaret/ss
synced 2026-06-27 18:32:51 -04:00
Fix includes and removed libs folder
This commit is contained in:
@@ -0,0 +1,102 @@
|
||||
#include "egg/core/eggDisplay.h"
|
||||
#include "nw4r/db/db_directPrint.h"
|
||||
#include "egg/core/eggXfbManager.h"
|
||||
#include "rvl/GX.h"
|
||||
#include "rvl/OS/OSHardware.h"
|
||||
|
||||
extern "C" {
|
||||
void PreRetraceCallback(u32 retraceCount) {
|
||||
EGG::BaseSystem::getDisplay()->preVRetrace();
|
||||
}
|
||||
}
|
||||
namespace EGG {
|
||||
|
||||
u32 Display::sTickPeriod = ((OS_BUS_CLOCK_SPEED >> 2)/125000)*300 >> 3;
|
||||
|
||||
/* 80497570 */
|
||||
Display::Display(u8 maxRetrace) :
|
||||
mMaxRetraces(maxRetrace),
|
||||
mScreenStateFlag(),
|
||||
mRetraceCount(0),
|
||||
mFrameCount(0),
|
||||
mClearColor(0x808080ff),
|
||||
mClearZ(0xFFFFFF),
|
||||
mBeginTick(0),
|
||||
mFlag()
|
||||
{
|
||||
mFlag.setBit(mFlag_SetClear);
|
||||
mFlag.setBit(mFlag_WaitForRetrace);
|
||||
nw4r::db::DirectPrint_Init();
|
||||
VISetPreRetraceCallback(PreRetraceCallback);
|
||||
}
|
||||
|
||||
/* vt 0x18 | 804975f0 */
|
||||
u32 Display::getTickPerFrame() {
|
||||
return Video::getTickPerVRetrace();
|
||||
}
|
||||
/* vt 0x08 | 80497600 */
|
||||
void Display::beginFrame() {
|
||||
|
||||
GXDrawDone();
|
||||
if (
|
||||
mFlag.onBit(mFlag_WaitForRetrace)
|
||||
|| (BaseSystem::getXfbMgr()->mNumXfbs == 1
|
||||
&& OSGetTick()-mLastTick > sTickPeriod)) {
|
||||
VIWaitForRetrace();
|
||||
}
|
||||
// Holds while the next XFB gets to its copy state
|
||||
while (BaseSystem::getXfbMgr()->mToCopyXfb == 0 ) {
|
||||
VIWaitForRetrace();
|
||||
}
|
||||
copyEFBtoXFB();
|
||||
calcFrequency();
|
||||
mFrameCount++;
|
||||
}
|
||||
|
||||
/* vt 0x0C | 804976c0 */
|
||||
void Display::beginRender() {
|
||||
return;
|
||||
}
|
||||
|
||||
/* vt 0x10 | 804976d0 */
|
||||
void Display::endRender() {
|
||||
return;
|
||||
}
|
||||
|
||||
/* vt 0x14 | 804976e0 */
|
||||
void Display::endFrame() {
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
/* vt 0x1C | 804976f0 */
|
||||
void Display::preVRetrace() {
|
||||
mLastTick = OSGetTick();
|
||||
if (VIGetRetraceCount() - mRetraceCount < mMaxRetraces) return;
|
||||
if (mScreenStateFlag.onBit(mScreenStateFlag_SetBlack)) {
|
||||
BaseSystem::getVideo()->setBlack(1);
|
||||
mScreenStateFlag.resetBit(mScreenStateFlag_SetBlack);
|
||||
}
|
||||
BaseSystem::getXfbMgr()->setNextFrameBuffer();
|
||||
mRetraceCount = VIGetRetraceCount();
|
||||
}
|
||||
|
||||
/* 804977d0 */
|
||||
void Display::copyEFBtoXFB() {
|
||||
if (mFlag.onBit(mFlag_SetClear)) {
|
||||
GXSetCopyClear(mClearColor, mClearZ);
|
||||
}
|
||||
GXRenderModeObj const* renderObj = BaseSystem::getVideo()->pRenderMode;
|
||||
GXSetCopyFilter(renderObj->aa, renderObj->sample_pattern, renderObj->aa == 0, renderObj->vfilter);
|
||||
BaseSystem::getXfbMgr()->copyEFB(mFlag.onBit(mFlag_SetClear));
|
||||
}
|
||||
|
||||
/* 80497870 */
|
||||
void Display::calcFrequency() {
|
||||
s32 endTick = OSGetTick();
|
||||
mDeltaTick = endTick-mBeginTick;
|
||||
mFrequency = 1000000.0f / ((mDeltaTick * 8) / ((OS_BUS_CLOCK_SPEED >> 2) / 125000));
|
||||
mBeginTick = endTick;
|
||||
}
|
||||
|
||||
} // namespace EGG
|
||||
Reference in New Issue
Block a user