mirror of https://github.com/zeldaret/tp.git
227 lines
7.4 KiB
C++
227 lines
7.4 KiB
C++
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: JUTAssert
|
|
//
|
|
|
|
#include "JSystem/JUtility/JUTAssert.h"
|
|
#include "JSystem/JUtility/JUTConsole.h"
|
|
#include "JSystem/JUtility/JUTDbPrint.h"
|
|
#include "JSystem/JUtility/JUTDirectPrint.h"
|
|
#include "MSL_C/stdio.h"
|
|
#include "dolphin/vi/vi.h"
|
|
|
|
namespace JUTAssertion {
|
|
|
|
/* 802E495C-802E4960 2DF29C 0004+00 0/0 1/1 0/0 .text create__12JUTAssertionFv */
|
|
void create() {}
|
|
|
|
namespace {
|
|
/* 80451530-80451538 000A30 0004+04 2/2 0/0 0/0 .sbss
|
|
* sMessageLife__Q212JUTAssertion23@unnamed@JUTAssert_cpp@ */
|
|
static u32 sMessageLife;
|
|
|
|
/* 80434870-804348B0 061590 0040+00 2/2 0/0 0/0 .bss
|
|
* sMessageFileLine__Q212JUTAssertion23@unnamed@JUTAssert_cpp@ */
|
|
static char sMessageFileLine[64];
|
|
|
|
/* 804348B0-804349B0 0615D0 0100+00 2/2 0/0 0/0 .bss
|
|
* sMessageString__Q212JUTAssertion23@unnamed@JUTAssert_cpp@ */
|
|
static char sMessageString[256];
|
|
|
|
static s32 sDisplayTime = -1;
|
|
static s32 sDevice = 3;
|
|
static bool mVisible = true;
|
|
static s32 sMessageOwner;
|
|
static u8 mSynchro;
|
|
}; // namespace
|
|
|
|
/* 802E4960-802E499C 2DF2A0 003C+00 2/2 0/0 0/0 .text flush_subroutine__12JUTAssertionFv
|
|
*/
|
|
u32 flush_subroutine() {
|
|
if (sMessageLife == 0) {
|
|
return 0;
|
|
}
|
|
|
|
if (sMessageLife != -1) {
|
|
sMessageLife--;
|
|
}
|
|
|
|
if (sMessageLife >= 5) {
|
|
return sMessageLife;
|
|
}
|
|
|
|
return 0;
|
|
}
|
|
|
|
/* 802E499C-802E4A54 2DF2DC 00B8+00 0/0 1/1 0/0 .text flushMessage__12JUTAssertionFv */
|
|
void flushMessage() {
|
|
if (flush_subroutine() && sAssertVisible == true) {
|
|
JUTDirectPrint* manager = JUTDirectPrint::getManager();
|
|
JUtility::TColor color = manager->getCharColor();
|
|
manager->setCharColor(JUtility::TColor(255, 200, 200, 255));
|
|
manager->drawString(16, 16, sMessageFileLine);
|
|
manager->drawString(16, 24, sMessageString);
|
|
manager->setCharColor(color);
|
|
}
|
|
}
|
|
|
|
/* 802E4A54-802E4C34 2DF394 01E0+00 0/0 1/1 0/0 .text flushMessage_dbPrint__12JUTAssertionFv */
|
|
void flushMessage_dbPrint() {
|
|
if (flush_subroutine() && sAssertVisible == true && JUTDbPrint::getManager() != NULL) {
|
|
JUTFont* font = JUTDbPrint::getManager()->getFont();
|
|
if (font != NULL) {
|
|
u8 tmp = ((VIGetRetraceCount() & 0x3C) << 2) | 0xF;
|
|
font->setGX();
|
|
font->setCharColor(JUtility::TColor(255, tmp, tmp, 255));
|
|
font->drawString(30, 36, sMessageFileLine, true);
|
|
font->drawString(30, 54, sMessageString, true);
|
|
}
|
|
}
|
|
}
|
|
|
|
u32 getSDevice() {
|
|
return sDevice;
|
|
}
|
|
|
|
/* 802C7698-802C7788 .text setConfirmMessage__12JUTAssertionFUlPcibPCc */
|
|
void setConfirmMessage(u32 param_1, char* file, int line, bool param_4, const char* msg) {
|
|
if (param_4 == 1) {
|
|
return;
|
|
}
|
|
u32 r28 = sMessageLife;
|
|
if (r28 == 0 && (param_1 & 1) != 0) {
|
|
sMessageLife = sDisplayTime;
|
|
sMessageOwner = 2;
|
|
snprintf(sMessageFileLine, sizeof(sMessageFileLine) - 1, "FAILED [%s:%d]", file, line);
|
|
snprintf(sMessageString, sizeof(sMessageString) - 1, "%s", msg);
|
|
}
|
|
if ((r28 == 0 || mSynchro == 0) && (param_1 & 2) != 0) {
|
|
JUTWarningConsole_f("FAILED [%s:%d] %s\n", file, line, msg);
|
|
}
|
|
}
|
|
|
|
void showAssert_f_va(u32 device, const char* file, int line, const char* msg, va_list args) {
|
|
sMessageLife = -1;
|
|
vsnprintf(sMessageString, 255, msg, args);
|
|
|
|
if (device & 2) {
|
|
OSReport("Failed assertion: %s:%d\n", file, line);
|
|
OSReport("%s\n", sMessageString);
|
|
}
|
|
|
|
if ((device & 1) && JUTDirectPrint::getManager()) {
|
|
JUtility::TColor old_color(JUTDirectPrint::getManager()->getCharColor());
|
|
JUTDirectPrint::getManager()->setCharColor(JUtility::TColor(255, 255, 255, 255));
|
|
JUTDirectPrint::getManager()->erase(10, 16, 306, 24);
|
|
|
|
snprintf(sMessageFileLine, 63, "Failed assertion: %s:%d", file, line);
|
|
JUTDirectPrint::getManager()->drawString(16, 16, sMessageFileLine);
|
|
JUTDirectPrint::getManager()->drawString(16, 24, sMessageString);
|
|
|
|
JUTDirectPrint::getManager()->setCharColor(old_color);
|
|
VISetNextFrameBuffer(JUTDirectPrint::getManager()->getFrameBuffer());
|
|
VIFlush();
|
|
OSEnableInterrupts();
|
|
|
|
u32 retrace_count = VIGetRetraceCount();
|
|
u32 new_count;
|
|
do {
|
|
new_count = VIGetRetraceCount();
|
|
} while (retrace_count == new_count);
|
|
|
|
// busy loop for 2 seconds
|
|
OSTime var1 = OSGetTime();
|
|
while (OSTicksToMilliseconds(OSGetTime() - var1) < 2000) {
|
|
}
|
|
}
|
|
}
|
|
|
|
void showAssert_f(u32 device, const char* file, int line, const char* msg, ...) {
|
|
va_list args;
|
|
va_start(args, msg);
|
|
showAssert_f_va(device, file, line, msg, args);
|
|
va_end(args);
|
|
}
|
|
|
|
/* 802C7788-802C78E4 .text showAssert__12JUTAssertionFUlPCciPCc */
|
|
void showAssert(u32 device, const char* file, int line, const char* msg) {
|
|
showAssert_f(device, file, line, "%s", msg);
|
|
}
|
|
|
|
/* 802C78E4-802C79FC .text setWarningMessage_f_va */
|
|
void setWarningMessage_f_va(u32 device, const char* file, int line, const char* msg, va_list args) {
|
|
u32 messageLife = sMessageLife;
|
|
bool r26 = false;
|
|
if (messageLife == 0) {
|
|
if (device & 1) {
|
|
sMessageLife = sDisplayTime;
|
|
sMessageOwner = 3;
|
|
snprintf(sMessageFileLine, sizeof(sMessageFileLine) - 1, "WARNING [%s:%d]", file, line);
|
|
}
|
|
vsnprintf(sMessageString, sizeof(sMessageString) - 1, msg, args);
|
|
r26 = true;
|
|
}
|
|
if ((messageLife == 0 || mSynchro == 0) && (device & 2)) {
|
|
JUTWarningConsole_f("WARNING [%s:%d] ", file, line);
|
|
if (!r26) {
|
|
JUTWarningConsole_f_va(msg, args);
|
|
} else {
|
|
JUTWarningConsole(sMessageString);
|
|
}
|
|
JUTWarningConsole("\n");
|
|
}
|
|
}
|
|
|
|
/* 802C79FC-802C7A7C .text setWarningMessage_f__12JUTAssertionFUlPciPCce */
|
|
void setWarningMessage_f(u32 device, char* file, int line, const char* msg, ...) {
|
|
va_list args;
|
|
va_start(args, msg);
|
|
setWarningMessage_f_va(device, file, line, msg, args);
|
|
va_end(args);
|
|
}
|
|
|
|
/* 802C7A7C-802C7B94 .text setLogMessage_f_va */
|
|
void setLogMessage_f_va(u32 device, const char* file, int line, const char* msg, va_list args) {
|
|
u32 messageLife = sMessageLife;
|
|
bool r26 = false;
|
|
if (messageLife == 0) {
|
|
if (device & 1) {
|
|
sMessageLife = sDisplayTime;
|
|
sMessageOwner = 4;
|
|
snprintf(sMessageFileLine, sizeof(sMessageFileLine) - 1, "[%s:%d]", file, line);
|
|
}
|
|
vsnprintf(sMessageString, sizeof(sMessageString) - 1, msg, args);
|
|
r26 = true;
|
|
}
|
|
if ((messageLife == 0 || mSynchro == 0) && (device & 2)) {
|
|
JUTReportConsole_f("[%s:%d] ", file, line);
|
|
if (!r26) {
|
|
JUTReportConsole_f_va(msg, args);
|
|
} else {
|
|
JUTReportConsole(sMessageString);
|
|
}
|
|
JUTReportConsole("\n");
|
|
}
|
|
}
|
|
|
|
/* 802C7B94-802C7C14 .text setLogMessage_f__12JUTAssertionFUlPciPCce */
|
|
void setLogMessage_f(u32 device, char* file, int line, const char* msg, ...) {
|
|
va_list args;
|
|
va_start(args, msg);
|
|
setLogMessage_f_va(device, file, line, msg, args);
|
|
va_end(args);
|
|
}
|
|
|
|
/* 802E4C34-802E4C3C 2DF574 0008+00 0/0 2/2 0/0 .text setVisible__12JUTAssertionFb */
|
|
void setVisible(bool visible) {
|
|
sAssertVisible = visible;
|
|
}
|
|
|
|
/* 802E4C3C-802E4C54 2DF57C 0018+00 0/0 2/2 0/0 .text setMessageCount__12JUTAssertionFi
|
|
*/
|
|
void setMessageCount(int msg_count) {
|
|
sMessageLife = msg_count <= 0 ? 0 : msg_count;
|
|
}
|
|
|
|
}; // namespace JUTAssertion
|