mirror of https://github.com/zeldaret/tp.git
129 lines
4.4 KiB
C++
129 lines
4.4 KiB
C++
//
|
|
// Generated By: dol2asm
|
|
// Translation Unit: JUTDbPrint
|
|
//
|
|
|
|
#include "JSystem/JUtility/JUTDbPrint.h"
|
|
#include "JSystem/J2DGraph/J2DOrthoGraph.h"
|
|
#include "JSystem/JUtility/JUTVideo.h"
|
|
#include "MSL_C/MSL_Common/Src/printf.h"
|
|
#include "MSL_C/MSL_Common/Src/string.h"
|
|
#include "dol2asm.h"
|
|
#include "dolphin/types.h"
|
|
|
|
/* 802E0148-802E0190 2DAA88 0048+00 1/1 0/0 0/0 .text __ct__10JUTDbPrintFP7JUTFontP7JKRHeap */
|
|
JUTDbPrint::JUTDbPrint(JUTFont* pFont, JKRHeap* pHeap) {
|
|
mFont = pFont;
|
|
mFirst = NULL;
|
|
mHeap = pHeap != NULL ? pHeap : JKRHeap::getCurrentHeap();
|
|
mColor.set(255, 255, 255, 255);
|
|
mVisible = true;
|
|
}
|
|
|
|
/* ############################################################################################## */
|
|
/* 804514C8-804514D0 0009C8 0004+04 3/3 6/6 0/0 .sbss sDebugPrint__10JUTDbPrint */
|
|
JUTDbPrint* JUTDbPrint::sDebugPrint;
|
|
|
|
/* 802E0190-802E0204 2DAAD0 0074+00 0/0 2/2 0/0 .text start__10JUTDbPrintFP7JUTFontP7JKRHeap */
|
|
JUTDbPrint* JUTDbPrint::start(JUTFont* pFont, JKRHeap* pHeap) {
|
|
if (sDebugPrint == NULL) {
|
|
if (pHeap == NULL) {
|
|
pHeap = JKRHeap::getCurrentHeap();
|
|
}
|
|
sDebugPrint = new JUTDbPrint(pFont, pHeap);
|
|
}
|
|
return sDebugPrint;
|
|
}
|
|
|
|
/* 802E0204-802E021C 2DAB44 0018+00 0/0 1/1 0/0 .text changeFont__10JUTDbPrintFP7JUTFont
|
|
*/
|
|
JUTFont* JUTDbPrint::changeFont(JUTFont* pFont) {
|
|
JUTFont* old = mFont;
|
|
if (pFont != NULL) {
|
|
mFont = pFont;
|
|
}
|
|
return old;
|
|
}
|
|
|
|
/* 802E021C-802E02A4 2DAB5C 0088+00 2/2 0/0 0/0 .text enter__10JUTDbPrintFiiiPCci */
|
|
void JUTDbPrint::enter(int param_0, int param_1, int param_2, char const* param_3, int param_4) {
|
|
if (param_4 > 0) {
|
|
unk_print* ptr = static_cast<unk_print*>(JKRAllocFromHeap(mHeap, param_4 + 0x10, -4));
|
|
if (ptr != NULL) {
|
|
ptr->unk_0x04 = param_0;
|
|
ptr->unk_0x06 = param_1;
|
|
ptr->unk_0x08 = param_2;
|
|
ptr->unk_0x0A = param_4;
|
|
strcpy(ptr->unk_0x0C, param_3);
|
|
ptr->mNext = mFirst;
|
|
mFirst = ptr;
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 802E02A4-802E02DC 2DABE4 0038+00 0/0 1/1 0/0 .text flush__10JUTDbPrintFv */
|
|
void JUTDbPrint::flush() {
|
|
this->flush(0, 0, JUTVideo::getManager()->getFbWidth(), JUTVideo::getManager()->getEfbHeight());
|
|
}
|
|
|
|
/* 802E02DC-802E0440 2DAC1C 0164+00 1/1 0/0 0/0 .text flush__10JUTDbPrintFiiii */
|
|
void JUTDbPrint::flush(int param_0, int param_1, int param_2, int param_3) {
|
|
// weird cast
|
|
unk_print* curPtr = (unk_print*)&mFirst;
|
|
unk_print* cur = mFirst;
|
|
if (mFont != NULL && cur != NULL) {
|
|
J2DOrthoGraph g(param_0, param_1, param_2, param_3, -1, 1);
|
|
g.setPort();
|
|
mFont->setGX();
|
|
mFont->setCharColor(mColor);
|
|
|
|
while (cur != NULL) {
|
|
if (mVisible) {
|
|
this->drawString(cur->unk_0x04, cur->unk_0x06, cur->unk_0x0A, (u8*)cur->unk_0x0C);
|
|
}
|
|
if (--cur->unk_0x08 <= 0) {
|
|
unk_print* next = cur->mNext;
|
|
JKRFreeToHeap(mHeap, cur);
|
|
cur = next;
|
|
curPtr->mNext = next;
|
|
} else {
|
|
curPtr = cur;
|
|
cur = cur->mNext;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
/* 802E0440-802E0530 2DAD80 00F0+00 1/1 0/0 0/0 .text drawString__10JUTDbPrintFiiiPCUc */
|
|
void JUTDbPrint::drawString(int param_0, int param_1, int param_2, u8 const* param_3) {
|
|
JUTFont* font = mFont;
|
|
font->drawString_size_scale(param_0, param_1, font->getWidth(), font->getHeight(),
|
|
(const char*)param_3, param_2, true);
|
|
}
|
|
|
|
/* 802E0530-802E0600 2DAE70 00D0+00 0/0 2/2 2/2 .text JUTReport__FiiPCce */
|
|
void JUTReport(int param_0, int param_1, char const* fmt, ...) {
|
|
va_list args;
|
|
va_start(args, fmt);
|
|
char buf[0x100];
|
|
int ret = vsnprintf(buf, 0x100, fmt, args);
|
|
va_end(args);
|
|
if (ret < 0) {
|
|
return;
|
|
}
|
|
JUTDbPrint::sDebugPrint->enter(param_0, param_1, 1, buf, ret < 0x100 ? ret : 0xFF);
|
|
}
|
|
|
|
/* 802E0600-802E06DC 2DAF40 00DC+00 0/0 1/1 0/0 .text JUTReport__FiiiPCce */
|
|
void JUTReport(int param_0, int param_1, int param_2, char const* fmt, ...) {
|
|
va_list args;
|
|
va_start(args, fmt);
|
|
char buf[0x100];
|
|
int ret = vsnprintf(buf, 0x100, fmt, args);
|
|
va_end(args);
|
|
if (ret < 0) {
|
|
return;
|
|
}
|
|
JUTDbPrint::sDebugPrint->enter(param_0, param_1, param_2, buf, ret < 0x100 ? ret : 0xFF);
|
|
}
|