mirror of
https://github.com/zeldaret/ss
synced 2026-07-28 07:08:38 -04:00
added egg/core headers seen in SS
This commit is contained in:
+13
-23
@@ -27,30 +27,20 @@ bool dAcBase_c::createHeap() {
|
||||
// Doesnt Match Yet
|
||||
dAcBase_c::dAcBase_c() :
|
||||
heap_allocator() ,
|
||||
obj_info(s_Create_ObjInfo)
|
||||
// sound_list(&heap_allocator.mHeap, &heap_allocator.mHeap)
|
||||
// obj_sound(0),
|
||||
// obj_pos(&position),
|
||||
// params2(s_Create_Params2),
|
||||
// obj_id(s_Create_UnkFlags),
|
||||
// viewclip_index(s_Create_ViewClipIdx),
|
||||
// actor_node(0),
|
||||
// roomid(s_Create_RoomId)
|
||||
obj_info(s_Create_ObjInfo),
|
||||
sound_info_tail(&heap_allocator.mHeap),
|
||||
sound_info_next(&heap_allocator.mHeap),
|
||||
count(0),
|
||||
obj_sound(nullptr),
|
||||
obj_pos(&position),
|
||||
params2(s_Create_Params2),
|
||||
obj_id(s_Create_UnkFlags),
|
||||
viewclip_index(s_Create_ViewClipIdx),
|
||||
actor_node(),
|
||||
roomid(s_Create_RoomId),
|
||||
actor_subtype(s_Create_Subtype)
|
||||
{
|
||||
|
||||
// obj_info = s_Create_ObjInfo;
|
||||
sound_info_tail = nullptr;
|
||||
sound_info_next = nullptr;
|
||||
obj_sound = nullptr;
|
||||
obj_pos = &position;
|
||||
params2 = (s_Create_Params2);
|
||||
obj_id = (s_Create_UnkFlags);
|
||||
viewclip_index = (s_Create_ViewClipIdx);
|
||||
actor_node = (0);
|
||||
roomid =(s_Create_RoomId);
|
||||
|
||||
actor_subtype = s_Create_Subtype;
|
||||
field_0xF0 = 0;
|
||||
JStudio_actor = 0;
|
||||
someStr[0] = 0;
|
||||
if (s_Create_Position != nullptr) {
|
||||
// void set(f32 fx, f32 fy, f32 fz) { x = fx; y = fy; z = fz; }
|
||||
|
||||
@@ -0,0 +1,14 @@
|
||||
#include <egg/core/eggController.h>
|
||||
|
||||
|
||||
namespace EGG
|
||||
{
|
||||
|
||||
void CoreControllerMgr::beginFrame() {
|
||||
for (int i = 0; i < mControllers.getSize(); ++i) {
|
||||
mControllers(i)->beginFrame(NULL);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
} // namespace EGG
|
||||
@@ -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