// // Generated By: dol2asm // Translation Unit: JUTXfb // #include "JSystem/JUtility/JUTXfb.h" #include "JSystem/JKernel/JKRHeap.h" #include "dolphin/gx.h" // // Forward References: // extern "C" void clearIndex__6JUTXfbFv(); extern "C" void common_init__6JUTXfbFi(); extern "C" void __ct__6JUTXfbFPC16_GXRenderModeObjP7JKRHeapQ26JUTXfb10EXfbNumber(); extern "C" void __dt__6JUTXfbFv(); extern "C" void delXfb__6JUTXfbFi(); extern "C" void createManager__6JUTXfbFP7JKRHeapQ26JUTXfb10EXfbNumber(); extern "C" void destroyManager__6JUTXfbFv(); extern "C" void initiate__6JUTXfbFUsUsP7JKRHeapQ26JUTXfb10EXfbNumber(); extern "C" u8 sManager__6JUTXfb[4 + 4 /* padding */]; // // External References: // extern "C" void* __nw__FUl(); extern "C" void* __nwa__FUlP7JKRHeapi(); extern "C" void __dl__FPv(); extern "C" void _savegpr_27(); extern "C" void _savegpr_28(); extern "C" void _savegpr_29(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); extern "C" u8 sSystemHeap__7JKRHeap[4]; extern "C" u8 sManager__8JUTVideo[4]; // // Declarations: // void JUTXfb::clearIndex() { mDrawingXfbIndex = -1; mDrawnXfbIndex = -1; mDisplayingXfbIndex = -1; } void JUTXfb::common_init(int bufNum) { mBufferNum = bufNum; clearIndex(); mSDrawingFlag = 99; } /* 802E5260-802E5308 2DFBA0 00A8+00 1/1 0/0 0/0 .text * __ct__6JUTXfbFPC16_GXRenderModeObjP7JKRHeapQ26JUTXfb10EXfbNumber */ JUTXfb::JUTXfb(GXRenderModeObj const* pObj, JKRHeap* pHeap, JUTXfb::EXfbNumber xfbNum) { common_init(xfbNum); if (pObj) { initiate(pObj->fbWidth, pObj->xfbHeight, pHeap, xfbNum); } else { u16 fbWidth = JUTVideo::getManager()->getRenderMode()->fbWidth; u16 efbHeight = (u32)JUTVideo::getManager()->getRenderMode()->efbHeight; u16 xfb_height = JUTVideo::getManager()->getRenderMode()->xfbHeight; f32 scale_factor = GXGetYScaleFactor(efbHeight, xfb_height); u16 xfb_lines = GXGetNumXfbLines(efbHeight, scale_factor); initiate(fbWidth, xfb_lines, pHeap, xfbNum); } } JUTXfb* JUTXfb::sManager; JUTXfb::~JUTXfb() { for (int i = 0; i < 3; i++) { delXfb(i); } sManager = NULL; } void JUTXfb::delXfb(int xfbIdx) { if (mXfbAllocated[xfbIdx] && mBuffer[xfbIdx]) { delete mBuffer[xfbIdx]; } } JUTXfb* JUTXfb::createManager(JKRHeap* pHeap, JUTXfb::EXfbNumber xfbNum) { if (sManager == NULL) { sManager = new JUTXfb(NULL, pHeap, xfbNum); } return sManager; } void JUTXfb::destroyManager() { delete sManager; sManager = NULL; } void JUTXfb::initiate(u16 width, u16 height, JKRHeap* pHeap, JUTXfb::EXfbNumber xfbNum) { if (pHeap == NULL) { pHeap = JKRHeap::getSystemHeap(); } int size = ((u32)width + 0xf & 0xfff0) * (u32)height * 2; void* buf = ::operator new[](size, pHeap, 0x20); mBuffer[0] = buf; mXfbAllocated[0] = true; if (xfbNum >= 2) { buf = ::operator new[](size, pHeap, 0x20); mBuffer[1] = buf; mXfbAllocated[1] = true; } else { mBuffer[1] = NULL; mXfbAllocated[1] = false; } if (xfbNum >= 3) { buf = ::operator new[](size, pHeap, 0x20); mBuffer[2] = buf; mXfbAllocated[2] = true; } else { mBuffer[2] = NULL; mXfbAllocated[2] = false; } }