k_wmark / k_wpillar OK, fop actor enums / debug building (#1946)

* d_k_wmark / d_k_wpillar OK

* make debug buildable / add assert functionality

* add more fop actor enums

* remove asm
This commit is contained in:
TakaRikka
2023-09-28 12:01:42 -07:00
committed by GitHub
parent 673e69386a
commit 89ed2b8a26
206 changed files with 1612 additions and 2472 deletions
+141
View File
@@ -4,8 +4,10 @@
//
#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 {
@@ -25,6 +27,12 @@ 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
@@ -71,6 +79,139 @@ void flushMessage_dbPrint() {
}
}
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;