mirror of
https://github.com/encounter/tp.git
synced 2026-07-11 06:18:46 -07:00
Merge branch 'master' of https://github.com/zeldaret/tp into pr___
This commit is contained in:
@@ -4,6 +4,7 @@
|
||||
//
|
||||
|
||||
#include "JSystem/JUtility/JUTException.h"
|
||||
#include "Runtime.PPCEABI.H/__va_arg.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
@@ -336,7 +337,7 @@ static u8 context[712];
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTException::panic_f_va(char const* param_0, int param_1, char const* param_2,
|
||||
__va_list_struct* param_3) {
|
||||
va_list param_3) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTException/panic_f_va__12JUTExceptionFPCciPCcP16__va_list_struct.s"
|
||||
}
|
||||
|
||||
+139
-129
@@ -4,72 +4,41 @@
|
||||
//
|
||||
|
||||
#include "JSystem/JUtility/JUTVideo.h"
|
||||
#include "JSystem/JUtility/JUTDirectPrint.h"
|
||||
#include "JSystem/JUtility/JUTXfb.h"
|
||||
#include "dol2asm.h"
|
||||
#include "dolphin/types.h"
|
||||
|
||||
//
|
||||
// Types:
|
||||
//
|
||||
|
||||
struct JUTXfb {
|
||||
static u8 sManager[4 + 4 /* padding */];
|
||||
};
|
||||
|
||||
struct JUTDirectPrint {
|
||||
/* 802E456C */ void changeFrameBuffer(void*, u16, u16);
|
||||
|
||||
static u8 sDirectPrint[4 + 4 /* padding */];
|
||||
};
|
||||
|
||||
//
|
||||
// Forward References:
|
||||
//
|
||||
|
||||
extern "C" void createManager__8JUTVideoFPC16_GXRenderModeObj();
|
||||
extern "C" void destroyManager__8JUTVideoFv();
|
||||
extern "C" void __ct__8JUTVideoFPC16_GXRenderModeObj();
|
||||
extern "C" void __dt__8JUTVideoFv();
|
||||
extern "C" void preRetraceProc__8JUTVideoFUl();
|
||||
extern "C" void drawDoneStart__8JUTVideoFv();
|
||||
extern "C" void dummyNoDrawWait__8JUTVideoFv();
|
||||
extern "C" void drawDoneCallback__8JUTVideoFv();
|
||||
extern "C" void postRetraceProc__8JUTVideoFUl();
|
||||
extern "C" void setRenderMode__8JUTVideoFPC16_GXRenderModeObj();
|
||||
extern "C" void waitRetraceIfNeed__8JUTVideoFv();
|
||||
extern "C" u8 sManager__8JUTVideo[4];
|
||||
extern "C" u8 sVideoLastTick__8JUTVideo[4];
|
||||
extern "C" u8 sVideoInterval__8JUTVideo[4];
|
||||
#include "dolphin/vi/vi.h"
|
||||
|
||||
//
|
||||
// External References:
|
||||
//
|
||||
|
||||
extern "C" void* __nw__FUl();
|
||||
extern "C" void __dl__FPv();
|
||||
extern "C" void changeFrameBuffer__14JUTDirectPrintFPvUsUs();
|
||||
extern "C" void VISetPreRetraceCallback(VIRetraceCallback);
|
||||
extern "C" void VISetPostRetraceCallback(VIRetraceCallback);
|
||||
extern "C" void VIInit();
|
||||
extern "C" void VIWaitForRetrace();
|
||||
extern "C" void VIConfigure(_GXRenderModeObj*);
|
||||
extern "C" void VIFlush();
|
||||
extern "C" void VISetNextFrameBuffer();
|
||||
extern "C" void VIGetNextFrameBuffer();
|
||||
extern "C" void VISetBlack(s32);
|
||||
extern "C" u32 VIGetRetraceCount();
|
||||
extern "C" void GXSetDrawDone();
|
||||
extern "C" void GXCopyDisp();
|
||||
extern "C" u8 sDirectPrint__14JUTDirectPrint[4 + 4 /* padding */];
|
||||
extern "C" u8 sManager__6JUTXfb[4 + 4 /* padding */];
|
||||
extern "C" void GXCopyDisp(void*, BOOL);
|
||||
|
||||
//
|
||||
// Declarations:
|
||||
//
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80451538-8045153C 000A38 0004+00 4/4 18/18 1/1 .sbss sManager__8JUTVideo */
|
||||
JUTVideo* JUTVideo::sManager;
|
||||
|
||||
/* 8045153C-80451540 000A3C 0004+00 2/2 1/1 0/0 .sbss sVideoLastTick__8JUTVideo */
|
||||
OSTick JUTVideo::sVideoLastTick;
|
||||
|
||||
/* 80451540-80451544 000A40 0004+00 2/2 1/1 0/0 .sbss sVideoInterval__8JUTVideo */
|
||||
OSTick JUTVideo::sVideoInterval;
|
||||
|
||||
/* 80451544-80451548 000A44 0004+00 4/4 0/0 0/0 .sbss None */
|
||||
static bool data_80451544;
|
||||
|
||||
/* 80451548-8045154C 000A48 0004+00 1/1 0/0 0/0 .sbss frameBuffer$2222 */
|
||||
static void* frameBuffer;
|
||||
|
||||
/* 8045154C-80451550 000A4C 0004+00 1/1 0/0 0/0 .sbss None */
|
||||
static s8 data_8045154C;
|
||||
|
||||
/* 802E4C54-802E4CAC 2DF594 0058+00 0/0 1/1 0/0 .text
|
||||
* createManager__8JUTVideoFPC16_GXRenderModeObj */
|
||||
JUTVideo* JUTVideo::createManager(_GXRenderModeObj const* param_0) {
|
||||
@@ -87,25 +56,8 @@ void JUTVideo::destroyManager() {
|
||||
}
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 803CC980-803CC990 029AA0 000C+04 2/2 0/0 0/0 .data __vt__8JUTVideo */
|
||||
SECTION_DATA extern void* __vt__8JUTVideo[3 + 1 /* padding */] = {
|
||||
(void*)NULL /* RTTI */,
|
||||
(void*)NULL,
|
||||
(void*)__dt__8JUTVideoFv,
|
||||
/* padding */
|
||||
NULL,
|
||||
};
|
||||
|
||||
/* 8045153C-80451540 000A3C 0004+00 2/2 1/1 0/0 .sbss sVideoLastTick__8JUTVideo */
|
||||
u32 JUTVideo::sVideoLastTick;
|
||||
|
||||
/* 80451540-80451544 000A40 0004+00 2/2 1/1 0/0 .sbss sVideoInterval__8JUTVideo */
|
||||
u32 JUTVideo::sVideoInterval;
|
||||
|
||||
/* 802E4CF4-802E4DE8 2DF634 00F4+00 1/1 0/0 0/0 .text __ct__8JUTVideoFPC16_GXRenderModeObj */
|
||||
#ifdef NONMATCHING
|
||||
JUTVideo::JUTVideo(_GXRenderModeObj const* param_0) {
|
||||
JUTVideo::JUTVideo(GXRenderModeObj const* param_0) {
|
||||
mRenderObj = NULL;
|
||||
VIInit();
|
||||
mSetBlack = true;
|
||||
@@ -120,22 +72,12 @@ JUTVideo::JUTVideo(_GXRenderModeObj const* param_0) {
|
||||
sVideoLastTick = OSGetTick();
|
||||
sVideoInterval = 670000;
|
||||
mPreRetraceCallback = VISetPreRetraceCallback(preRetraceProc);
|
||||
mPostRetraceCallback = VISetPreRetraceCallback(postRetraceProc);
|
||||
unknown_callback_1 = NULL;
|
||||
unknown_callback_2 = NULL;
|
||||
OSInitMessageQueue(mMessageQueue, mMessage, 1);
|
||||
mPostRetraceCallback = VISetPostRetraceCallback(postRetraceProc);
|
||||
mPreCallback = NULL;
|
||||
mPostCallback = NULL;
|
||||
OSInitMessageQueue(&mMessageQueue, &mMessage, 1);
|
||||
GXSetDrawDoneCallback(drawDoneCallback);
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm JUTVideo::JUTVideo(_GXRenderModeObj const* param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTVideo/__ct__8JUTVideoFPC16_GXRenderModeObj.s"
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 802E4DE8-802E4E50 2DF728 0068+00 1/0 0/0 0/0 .text __dt__8JUTVideoFv */
|
||||
JUTVideo::~JUTVideo() {
|
||||
@@ -143,78 +85,146 @@ JUTVideo::~JUTVideo() {
|
||||
VISetPostRetraceCallback(mPostRetraceCallback);
|
||||
}
|
||||
|
||||
/* ############################################################################################## */
|
||||
/* 80451544-80451548 000A44 0004+00 4/4 0/0 0/0 .sbss None */
|
||||
static u8 data_80451544[4];
|
||||
|
||||
/* 80451548-8045154C 000A48 0004+00 1/1 0/0 0/0 .sbss frameBuffer$2222 */
|
||||
static void* frameBuffer;
|
||||
|
||||
/* 8045154C-80451550 000A4C 0004+00 1/1 0/0 0/0 .sbss None */
|
||||
static u8 data_8045154C[4];
|
||||
|
||||
/* 802E4E50-802E5088 2DF790 0238+00 1/1 0/0 0/0 .text preRetraceProc__8JUTVideoFUl */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTVideo::preRetraceProc(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTVideo/preRetraceProc__8JUTVideoFUl.s"
|
||||
void JUTVideo::preRetraceProc(u32 retrace_count) {
|
||||
if (!sManager) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (sManager->mPreCallback) {
|
||||
(*sManager->mPreCallback)(retrace_count);
|
||||
}
|
||||
|
||||
OSTick tick = OSGetTick();
|
||||
sVideoInterval = tick - sVideoLastTick;
|
||||
sVideoLastTick = tick;
|
||||
|
||||
JUTXfb* xfb = JUTXfb::getManager();
|
||||
if (!xfb) {
|
||||
VISetBlack(TRUE);
|
||||
VIFlush();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!data_8045154C) {
|
||||
frameBuffer = NULL;
|
||||
data_8045154C = true;
|
||||
}
|
||||
|
||||
if (frameBuffer) {
|
||||
JUTVideo* videoManager = JUTGetVideoManager();
|
||||
const GXRenderModeObj* renderMode = videoManager->getRenderMode();
|
||||
JUTDirectPrint* directPrint = JUTDirectPrint::getManager();
|
||||
directPrint->changeFrameBuffer(frameBuffer, renderMode->fb_width, renderMode->efb_height);
|
||||
}
|
||||
|
||||
if (sManager->mSetBlack == 1) {
|
||||
s32 frame_count = sManager->mSetBlackFrameCount;
|
||||
if (frame_count > 0) {
|
||||
frame_count--;
|
||||
}
|
||||
|
||||
sManager->mSetBlackFrameCount = frame_count;
|
||||
sManager->mSetBlack = frame_count != 0;
|
||||
VISetBlack(TRUE);
|
||||
VIFlush();
|
||||
return;
|
||||
}
|
||||
|
||||
if (!xfb) {
|
||||
VISetBlack(TRUE);
|
||||
VIFlush();
|
||||
return;
|
||||
}
|
||||
|
||||
if (xfb->getBufferNum() == 3 || xfb->getBufferNum() == 2) {
|
||||
if (!data_80451544) {
|
||||
s16 index = xfb->getDrawnXfbIndex();
|
||||
xfb->setDisplayingXfbIndex(index);
|
||||
if (index < 0) {
|
||||
VISetBlack(1);
|
||||
VIFlush();
|
||||
} else {
|
||||
VISetNextFrameBuffer(xfb->getDisplayingXfb());
|
||||
VIFlush();
|
||||
VISetBlack(FALSE);
|
||||
frameBuffer = xfb->getDisplayingXfb();
|
||||
}
|
||||
}
|
||||
} else if (xfb->getBufferNum() == 1) {
|
||||
if (xfb->getSDrawingFlag() == 0) {
|
||||
s16 index = xfb->getDrawnXfbIndex();
|
||||
if (index >= 0) {
|
||||
xfb->setDisplayingXfbIndex(index);
|
||||
GXCopyDisp(xfb->getDisplayingXfb(), 1);
|
||||
GXFlush();
|
||||
xfb->setSDrawingFlag(2);
|
||||
frameBuffer = xfb->getDisplayingXfb();
|
||||
if (VIGetNextFrameBuffer()) {
|
||||
VISetBlack(FALSE);
|
||||
}
|
||||
} else {
|
||||
VISetBlack(TRUE);
|
||||
}
|
||||
}
|
||||
VIFlush();
|
||||
}
|
||||
}
|
||||
#pragma pop
|
||||
|
||||
/* 802E5088-802E50B0 2DF9C8 0028+00 0/0 1/1 0/0 .text drawDoneStart__8JUTVideoFv */
|
||||
void JUTVideo::drawDoneStart() {
|
||||
data_80451544[0] = 1;
|
||||
data_80451544 = true;
|
||||
GXSetDrawDone();
|
||||
}
|
||||
|
||||
/* 802E50B0-802E50BC 2DF9F0 000C+00 0/0 1/1 0/0 .text dummyNoDrawWait__8JUTVideoFv */
|
||||
void JUTVideo::dummyNoDrawWait() {
|
||||
data_80451544[0] = 0;
|
||||
data_80451544 = false;
|
||||
}
|
||||
|
||||
/* 802E50BC-802E5144 2DF9FC 0088+00 1/1 0/0 0/0 .text drawDoneCallback__8JUTVideoFv */
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTVideo::drawDoneCallback() {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTVideo/drawDoneCallback__8JUTVideoFv.s"
|
||||
}
|
||||
#pragma pop
|
||||
void JUTVideo::drawDoneCallback() {
|
||||
JUTXfb* xfb = JUTXfb::getManager();
|
||||
if (!xfb) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* 802E5144-802E5198 2DFA84 0054+00 1/1 0/0 0/0 .text postRetraceProc__8JUTVideoFUl */
|
||||
#ifdef NONMATCHING
|
||||
void JUTVideo::postRetraceProc(u32 param_0) {
|
||||
void* message;
|
||||
if (sManager != NULL) {
|
||||
if (sManager->unknown_callback_2 != NULL) {
|
||||
sManager->unknown_callback_2();
|
||||
data_80451544 = false;
|
||||
if (xfb->getBufferNum() == 1) {
|
||||
if (xfb->getSDrawingFlag() == 1) {
|
||||
xfb->setSDrawingFlag(0);
|
||||
|
||||
void* frameBuffer = xfb->getDrawnXfb();
|
||||
if (frameBuffer) {
|
||||
VISetNextFrameBuffer(xfb->getDrawnXfb());
|
||||
VIFlush();
|
||||
}
|
||||
}
|
||||
message = (void*)VIGetRetraceCount();
|
||||
OSSendMessage(&sManager->mMessageQueue, message, OS_MESSAGE_NON_BLOCKING);
|
||||
}
|
||||
}
|
||||
#else
|
||||
#pragma push
|
||||
#pragma optimization_level 0
|
||||
#pragma optimizewithasm off
|
||||
asm void JUTVideo::postRetraceProc(u32 param_0) {
|
||||
nofralloc
|
||||
#include "asm/JSystem/JUtility/JUTVideo/postRetraceProc__8JUTVideoFUl.s"
|
||||
|
||||
/* 802E5144-802E5198 2DFA84 0054+00 1/1 0/0 0/0 .text postRetraceProc__8JUTVideoFUl */
|
||||
void JUTVideo::postRetraceProc(u32 retrace_count) {
|
||||
if (!sManager) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (sManager->mPostCallback != NULL) {
|
||||
sManager->mPostCallback(retrace_count);
|
||||
}
|
||||
|
||||
OSMessage message = (OSMessage*)VIGetRetraceCount();
|
||||
OSSendMessage(&sManager->mMessageQueue, message, OS_MESSAGE_NON_BLOCKING);
|
||||
}
|
||||
#pragma pop
|
||||
#endif
|
||||
|
||||
/* 802E5198-802E5210 2DFAD8 0078+00 1/1 2/2 0/0 .text
|
||||
* setRenderMode__8JUTVideoFPC16_GXRenderModeObj */
|
||||
void JUTVideo::setRenderMode(_GXRenderModeObj const* pObj) {
|
||||
void JUTVideo::setRenderMode(GXRenderModeObj const* pObj) {
|
||||
if (mRenderObj != NULL && pObj->vi_tv_mode != mRenderObj->vi_tv_mode) {
|
||||
mSetBlack = true;
|
||||
mSetBlackFrameCount = 4;
|
||||
}
|
||||
mRenderObj = (_GXRenderModeObj*)pObj;
|
||||
mRenderObj = (GXRenderModeObj*)pObj;
|
||||
VIConfigure(mRenderObj);
|
||||
VIFlush();
|
||||
|
||||
|
||||
Reference in New Issue
Block a user