// // Generated By: dol2asm // Translation Unit: J2DWindow // #include "JSystem/J2DGraph/J2DWindow.h" #include "JSystem/JSupport/JSURandomInputStream.h" #include "JSystem/JUtility/JUTPalette.h" #include "JSystem/JUtility/JUTResource.h" #include "JSystem/JUtility/JUTTexture.h" #include "dol2asm.h" // // Forward References: // extern "C" void __ct__9J2DWindowFv(); extern "C" void __ct__9J2DWindowFP7J2DPaneP20JSURandomInputStreamP10JKRArchive(); extern "C" void __ct__9J2DWindowFP7J2DPaneP20JSURandomInputStreamP11J2DMaterial(); extern "C" void private_readStream__9J2DWindowFP7J2DPaneP20JSURandomInputStreamP10JKRArchive(); extern "C" void initinfo2__9J2DWindowFv(); extern "C" void __dt__9J2DWindowFv(); extern "C" void func_802FA928(); extern "C" void func_802FAA5C(); extern "C" void func_802FAED0(); extern "C" void resize__9J2DWindowFff(); extern "C" void setContentsColor__9J2DWindowFQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColor(); extern "C" void drawSelf__9J2DWindowFff(); extern "C" void drawSelf__9J2DWindowFffPA3_A4_f(); extern "C" void func_802FB338(); extern "C" void drawFrameTexture__9J2DWindowFP10JUTTextureffffUsUsUsUsb(); extern "C" void drawFrameTexture__9J2DWindowFP10JUTTextureffbbb(); extern "C" void drawContentsTexture__9J2DWindowFffff(); extern "C" void setTevMode__9J2DWindowFP10JUTTextureQ28JUtility6TColorQ28JUtility6TColor(); extern "C" void getFrameTexture__9J2DWindowCFUcUc(); extern "C" void isUsed__9J2DWindowFPC7ResTIMG(); extern "C" s32 getTypeID__9J2DWindowCFv(); extern "C" void draw__9J2DWindowFffff(); extern "C" void getContentsTexture__9J2DWindowCFUc(); extern "C" void getMaterial__9J2DWindowCFRQ29J2DWindow9TMaterial(); extern "C" bool getFrameMaterial__9J2DWindowCFUc(); extern "C" bool getContentsMaterial__9J2DWindowCFv(); extern "C" void isUsed__9J2DWindowFPC7ResFONT(); extern "C" void rewriteAlpha__9J2DWindowFv(); // // External References: // extern "C" void setAlpha__7J2DPaneFUc(); extern "C" void calcMtx__7J2DPaneFv(); extern "C" void makeMatrix__7J2DPaneFff(); extern "C" void setAnimation__7J2DPaneFP15J2DAnmTevRegKey(); extern "C" void setAnimation__7J2DPaneFP11J2DAnmColor(); extern "C" void setAnimation__7J2DPaneFP19J2DAnmTextureSRTKey(); extern "C" void getBlack__9J2DWindowCFv(); extern "C" void getWhite__9J2DWindowCFv(); extern "C" void setWhite__9J2DWindowFQ28JUtility6TColor(); extern "C" void setBlack__9J2DWindowFQ28JUtility6TColor(); extern "C" void setBlackWhite__9J2DWindowFQ28JUtility6TColorQ28JUtility6TColor(); extern "C" void setAnimation__7J2DPaneFP14J2DAnmVtxColor(); extern "C" void setAnimation__7J2DPaneFP20J2DAnmVisibilityFull(); extern "C" void setAnimation__7J2DPaneFP16J2DAnmTexPattern(); extern "C" void* __nw__FUl(); extern "C" void __dl__FPv(); extern "C" void read__14JSUInputStreamFPvl(); extern "C" void peek__20JSURandomInputStreamFPvl(); extern "C" void seek__20JSURandomInputStreamFl17JSUStreamSeekFrom(); extern "C" void __dt__10JUTTextureFv(); extern "C" void storeTIMG__10JUTTextureFPC7ResTIMGUc(); extern "C" void load__10JUTTextureF11_GXTexMapID(); extern "C" void storeTLUT__10JUTPaletteF7_GXTlutP7ResTLUT(); extern "C" void __ct__7J2DPaneFv(); extern "C" void makePaneStream__7J2DPaneFP7J2DPaneP20JSURandomInputStream(); extern "C" void __dt__7J2DPaneFv(); extern "C" void move__7J2DPaneFff(); extern "C" void add__7J2DPaneFff(); extern "C" void resize__7J2DPaneFff(); extern "C" void func_802F7264(); extern "C" void search__7J2DPaneFUx(); extern "C" void searchUserInfo__7J2DPaneFUx(); extern "C" void isUsed__7J2DPaneFPC7ResTIMG(); extern "C" void isUsed__7J2DPaneFPC7ResFONT(); extern "C" void makeMatrix__7J2DPaneFffff(); extern "C" void setCullBack__7J2DPaneF11_GXCullMode(); extern "C" void makePaneExStream__7J2DPaneFP7J2DPaneP20JSURandomInputStream(); extern "C" void getPointer__7J2DPaneFP20JSURandomInputStreamUlP10JKRArchive(); extern "C" void setAnimation__7J2DPaneFP10J2DAnmBase(); extern "C" void setAnimation__7J2DPaneFP15J2DAnmTransform(); extern "C" void clearAnmTransform__7J2DPaneFv(); extern "C" void animationTransform__7J2DPaneFPC15J2DAnmTransform(); extern "C" void setVisibileAnimation__7J2DPaneFP20J2DAnmVisibilityFull(); extern "C" void setVtxColorAnimation__7J2DPaneFP14J2DAnmVtxColor(); extern "C" void animationPane__7J2DPaneFPC15J2DAnmTransform(); extern "C" void setAnimationVF__7J2DPaneFP20J2DAnmVisibilityFull(); extern "C" void setAnimationVC__7J2DPaneFP14J2DAnmVtxColor(); extern "C" void setCullBack__7J2DPaneFb(); extern "C" void setConnectParent__7J2DPaneFb(); extern "C" void update__7J2DPaneFv(); extern "C" void _savegpr_25(); extern "C" void _savegpr_26(); extern "C" void _savegpr_28(); extern "C" void _savegpr_29(); extern "C" void _restgpr_25(); extern "C" void _restgpr_26(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); // // Declarations: // /* ############################################################################################## */ /* 803CD108-803CD1D8 02A228 00CC+04 4/4 0/0 0/0 .data __vt__9J2DWindow */ SECTION_DATA extern void* __vt__9J2DWindow[51 + 1 /* padding */] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__9J2DWindowFv, (void*)getTypeID__9J2DWindowCFv, (void*)move__7J2DPaneFff, (void*)add__7J2DPaneFff, (void*)resize__9J2DWindowFff, (void*)setCullBack__7J2DPaneFb, (void*)setCullBack__7J2DPaneF11_GXCullMode, (void*)setAlpha__7J2DPaneFUc, (void*)setConnectParent__7J2DPaneFb, (void*)calcMtx__7J2DPaneFv, (void*)update__7J2DPaneFv, (void*)drawSelf__9J2DWindowFff, (void*)drawSelf__9J2DWindowFffPA3_A4_f, (void*)search__7J2DPaneFUx, (void*)searchUserInfo__7J2DPaneFUx, (void*)makeMatrix__7J2DPaneFff, (void*)makeMatrix__7J2DPaneFffff, (void*)isUsed__9J2DWindowFPC7ResTIMG, (void*)isUsed__9J2DWindowFPC7ResFONT, (void*)clearAnmTransform__7J2DPaneFv, (void*)rewriteAlpha__9J2DWindowFv, (void*)setAnimation__7J2DPaneFP10J2DAnmBase, (void*)setAnimation__7J2DPaneFP15J2DAnmTransform, (void*)setAnimation__7J2DPaneFP11J2DAnmColor, (void*)setAnimation__7J2DPaneFP16J2DAnmTexPattern, (void*)setAnimation__7J2DPaneFP19J2DAnmTextureSRTKey, (void*)setAnimation__7J2DPaneFP15J2DAnmTevRegKey, (void*)setAnimation__7J2DPaneFP20J2DAnmVisibilityFull, (void*)setAnimation__7J2DPaneFP14J2DAnmVtxColor, (void*)animationTransform__7J2DPaneFPC15J2DAnmTransform, (void*)setVisibileAnimation__7J2DPaneFP20J2DAnmVisibilityFull, (void*)setAnimationVF__7J2DPaneFP20J2DAnmVisibilityFull, (void*)setVtxColorAnimation__7J2DPaneFP14J2DAnmVtxColor, (void*)setAnimationVC__7J2DPaneFP14J2DAnmVtxColor, (void*)animationPane__7J2DPaneFPC15J2DAnmTransform, (void*)func_802FA928, (void*)func_802FAED0, (void*)draw__9J2DWindowFffff, (void*)setBlack__9J2DWindowFQ28JUtility6TColor, (void*)setWhite__9J2DWindowFQ28JUtility6TColor, (void*)setBlackWhite__9J2DWindowFQ28JUtility6TColorQ28JUtility6TColor, (void*)getBlack__9J2DWindowCFv, (void*)getWhite__9J2DWindowCFv, (void*)getFrameTexture__9J2DWindowCFUcUc, (void*)getContentsTexture__9J2DWindowCFUc, (void*)getMaterial__9J2DWindowCFRQ29J2DWindow9TMaterial, (void*)getFrameMaterial__9J2DWindowCFUc, (void*)getContentsMaterial__9J2DWindowCFv, (void*)func_802FB338, /* padding */ NULL, }; /* 802F9A7C-802F9B74 2F43BC 00F8+00 0/0 1/1 0/0 .text __ct__9J2DWindowFv */ J2DWindow::J2DWindow() : field_0x100(NULL), field_0x104(NULL), field_0x108(NULL), field_0x10c(NULL), field_0x110(NULL), mPalette(NULL) { field_0x144 = 0; setContentsColor(JUtility::TColor(0xffffffff)); mBlack = JUtility::TColor(0); mWhite = JUtility::TColor(0xffffffff); } /* 802F9B74-802F9C10 2F44B4 009C+00 0/0 1/1 0/0 .text * __ct__9J2DWindowFP7J2DPaneP20JSURandomInputStreamP10JKRArchive */ J2DWindow::J2DWindow(J2DPane* param_0, JSURandomInputStream* param_1, JKRArchive* param_2) : field_0x100(NULL), field_0x104(NULL), field_0x108(NULL), field_0x10c(NULL), field_0x110(NULL), mPalette(NULL) { private_readStream(param_0, param_1, param_2); } /* ############################################################################################## */ /* 803A1C10-803A1C20 02E270 0010+00 1/1 0/0 0/0 .rodata @1831 */ SECTION_RODATA static u8 const lit_1831[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; COMPILER_STRIP_GATE(0x803A1C10, &lit_1831); /* 803A1C20-803A1C30 02E280 0010+00 1/1 0/0 0/0 .rodata @1849 */ SECTION_RODATA static u8 const lit_1849[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; COMPILER_STRIP_GATE(0x803A1C20, &lit_1849); /* 80456240-80456248 004840 0008+00 7/7 0/0 0/0 .sdata2 @1971 */ SECTION_SDATA2 static f64 lit_1971 = 4503601774854144.0 /* cast s32 to float */; /* 80456248-80456250 004848 0008+00 2/2 0/0 0/0 .sdata2 @1974 */ SECTION_SDATA2 static f64 lit_1974 = 4503599627370496.0 /* cast u32 to float */; /* 802F9C10-802FA118 2F4550 0508+00 0/0 1/1 0/0 .text * __ct__9J2DWindowFP7J2DPaneP20JSURandomInputStreamP11J2DMaterial */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm J2DWindow::J2DWindow(J2DPane* param_0, JSURandomInputStream* param_1, J2DMaterial* param_2) { nofralloc #include "asm/JSystem/J2DGraph/J2DWindow/__ct__9J2DWindowFP7J2DPaneP20JSURandomInputStreamP11J2DMaterial.s" } #pragma pop /* 802FA118-802FA604 2F4A58 04EC+00 1/1 0/0 0/0 .text * private_readStream__9J2DWindowFP7J2DPaneP20JSURandomInputStreamP10JKRArchive */ // matches with literals #ifdef NONMATCHING void J2DWindow::private_readStream(J2DPane* param_0, JSURandomInputStream* param_1, JKRArchive* param_2) { s32 local_188 = param_1->getPosition(); u32 local_180[2]; param_1->read(local_180, 8); mKind = local_180[0]; makePaneStream(param_0, param_1); JUTResReference stack_178; u8 r27 = param_1->readU8(); f32 f31 = param_1->read16b(); f32 f30 = param_1->read16b(); f32 f29 = f31 + param_1->read16b(); f32 f28 = f30 + param_1->read16b(); field_0x114.set(f31, f30, f29, f28); ResTIMG* timg = (ResTIMG*)getPointer(param_1, 'TIMG', param_2); if (timg) { field_0x100 = new JUTTexture(timg, 0); } timg = (ResTIMG*)getPointer(param_1, 'TIMG', param_2); if (timg) { field_0x104 = new JUTTexture(timg, 0); } timg = (ResTIMG*)getPointer(param_1, 'TIMG', param_2); if (timg) { field_0x108 = new JUTTexture(timg, 0); } timg = (ResTIMG*)getPointer(param_1, 'TIMG', param_2); if (timg) { field_0x10c = new JUTTexture(timg, 0); } ResTLUT* tlut = (ResTLUT*)getPointer(param_1, 'TLUT', param_2); if (tlut) { mPalette = new JUTPalette(GX_TLUT0, tlut); } field_0x144 = param_1->read8b(); field_0x128.set(param_1->read32b()); field_0x12C.set(param_1->read32b()); field_0x130.set(param_1->read32b()); field_0x134.set(param_1->read32b()); r27 -= 14; field_0x110 = NULL; if (r27) { timg = (ResTIMG*)getPointer(param_1, 'TIMG', param_2); if (timg) { field_0x110 = new JUTTexture(timg, 0); } r27--; } mBlack = JUtility::TColor(0); mWhite = JUtility::TColor(0xffffffff); if (r27) { mBlack = JUtility::TColor(param_1->readU32()); r27--; } if (r27) { mWhite = JUtility::TColor(param_1->readU32()); } param_1->seek(local_188 + local_180[1], JSUStreamSeekFrom_SET); initinfo2(); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void J2DWindow::private_readStream(J2DPane* param_0, JSURandomInputStream* param_1, JKRArchive* param_2) { nofralloc #include "asm/JSystem/J2DGraph/J2DWindow/private_readStream__9J2DWindowFP7J2DPaneP20JSURandomInputStreamP10JKRArchive.s" } #pragma pop #endif /* 802FA604-802FA880 2F4F44 027C+00 2/2 0/0 0/0 .text initinfo2__9J2DWindowFv */ // regswap #ifdef NOTIMPLEMENTED void J2DWindow::initinfo2() { if (field_0x100 && field_0x104 && field_0x108 && field_0x10c) { field_0x140 = field_0x100->getWidth() + field_0x104->getWidth(); field_0x142 = field_0x100->getHeight() + field_0x108->getHeight(); } else { field_0x140 = 1; field_0x142 = 1; return; } field_0x145 = 0; JUTTexture* r30 = field_0x100; if (*field_0x104 != *r30) { field_0x145 |= 1; r30 = field_0x104; } if (*field_0x10c != *r30) { field_0x145 |= 2; r30 = field_0x10c; } if (*field_0x108 != *r30) { field_0x145 |= 4; } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void J2DWindow::initinfo2() { nofralloc #include "asm/JSystem/J2DGraph/J2DWindow/initinfo2__9J2DWindowFv.s" } #pragma pop #endif /* 802FA880-802FA928 2F51C0 00A8+00 1/0 1/1 0/0 .text __dt__9J2DWindowFv */ J2DWindow::~J2DWindow() { delete field_0x100; delete field_0x104; delete field_0x108; delete field_0x10c; delete mPalette; delete field_0x110; } /* ############################################################################################## */ /* 80456250-80456254 004850 0004+00 5/5 0/0 0/0 .sdata2 @2156 */ SECTION_SDATA2 static u8 lit_2156[4] = { 0x00, 0x00, 0x00, 0x00, }; /* 802FA928-802FAA5C 2F5268 0134+00 1/0 0/0 0/0 .text draw__9J2DWindowFRCQ29JGeometry8TBox2 */ // matches with literals #ifdef NONMATCHING void J2DWindow::draw(JGeometry::TBox2 const& param_0) { JGeometry::TBox2 stack_58; if (field_0x100 && field_0x104 && field_0x108 && field_0x10c) { stack_58.set(field_0x100->getWidth(), field_0x100->getHeight(), param_0.getWidth() - field_0x104->getWidth(), param_0.getHeight() - field_0x108->getHeight()); } else { stack_58.set(0.0f, 0.0f, param_0.getWidth(), param_0.getHeight()); } draw(param_0, stack_58); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void J2DWindow::draw(JGeometry::TBox2 const& param_0) { nofralloc #include "asm/JSystem/J2DGraph/J2DWindow/func_802FA928.s" } #pragma pop #endif /* 802FAA5C-802FAED0 2F539C 0474+00 2/2 0/0 0/0 .text * draw_private__9J2DWindowFRCQ29JGeometry8TBox2RCQ29JGeometry8TBox2 */ // instruction order #ifdef NONMATCHING void J2DWindow::draw_private(JGeometry::TBox2 const& param_0, JGeometry::TBox2 const& param_1) { JGeometry::TBox2 stack_a0(param_1); stack_a0.addPos(param_0.i); drawContents(stack_a0); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); GXSetNumTexGens(1); if (field_0x100 && field_0x104 && field_0x108 && field_0x10c) { f32 f29 = param_0.i.x; f32 f28 = param_0.i.y; f32 f31 = param_0.f.x - field_0x10c->getWidth(); f32 f30 = param_0.f.y - field_0x10c->getHeight(); f32 f27 = f29 + field_0x100->getWidth(); f32 f26 = f28 + field_0x100->getHeight(); drawFrameTexture(field_0x100, f29, f28, field_0x144 & 0x80, field_0x144 & 0x40, true); bool r24 = field_0x145 & 1; drawFrameTexture(field_0x104, f31, f28, field_0x144 & 0x20, field_0x144 & 0x10, r24); u16 local_a6 = field_0x144 & 0x20 ? 0x8000 : 0; u16 local_a8 = field_0x144 & 0x10 ? 0 : 0x8000; drawFrameTexture(field_0x104, f27, f28, f31 - f27, field_0x104->getHeight(), local_a6, local_a8, local_a6, local_a8, false); drawFrameTexture(field_0x10c, f31, f30, field_0x144 & 2, field_0x144 & 1, field_0x145 & 2); u16 local_aa = field_0x144 & 2 ? 0x8000 : 0; u16 local_ac = field_0x144 & 1 ? 0 : 0x8000; drawFrameTexture(field_0x10c, f27, f30, f31 - f27, field_0x10c->getHeight(), local_aa, local_ac, local_aa, local_ac, false); u16 local_ae = field_0x144 & 2 ? 0 : 0x8000; u16 local_b0 = field_0x144 & 1 ? 0x8000 : 0; drawFrameTexture(field_0x10c, f31, f26, field_0x10c->getWidth(), f30 - f26, local_ae, local_b0, local_ae, local_b0, false); drawFrameTexture(field_0x108, f29, f30, field_0x144 & 8, field_0x144 & 4, field_0x145 & 4); u16 local_b2 = field_0x144 & 8 ? 0 : 0x8000; u16 local_b4 = field_0x144 & 4 ? 0x8000 : 0; drawFrameTexture(field_0x108, f29, f26, field_0x108->getWidth(), f30 - f26, local_b2, local_b4, local_b2, local_b4, false); } GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); GXSetNumTexGens(0); GXSetVtxDesc(GX_VA_TEX0, GX_NONE); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void J2DWindow::draw_private(JGeometry::TBox2 const& param_0, JGeometry::TBox2 const& param_1) { nofralloc #include "asm/JSystem/J2DGraph/J2DWindow/func_802FAA5C.s" } #pragma pop #endif /* 802FAED0-802FB000 2F5810 0130+00 1/0 0/0 0/0 .text * draw__9J2DWindowFRCQ29JGeometry8TBox2RCQ29JGeometry8TBox2 */ // matches with literals #ifdef NONMATCHING void J2DWindow::draw(JGeometry::TBox2 const& param_0, JGeometry::TBox2 const& param_1) { if (param_0.getWidth() >= field_0x140 && param_0.getHeight() >= field_0x142 && isVisible()) { makeMatrix(param_0.i.x, param_0.i.y, 0, 0); GXLoadPosMtxImm(mPositionMtx, GX_PNMTX0); GXSetCurrentMtx(0); mColorAlpha = mAlpha; JGeometry::TBox2 stack_70(0.0f, 0.0f, param_0.getWidth(), param_0.getHeight()); draw_private(stack_70, param_1); Mtx stack_60; MTXIdentity(stack_60); GXLoadPosMtxImm(stack_60, GX_PNMTX0); } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void J2DWindow::draw(JGeometry::TBox2 const& param_0, JGeometry::TBox2 const& param_1) { nofralloc #include "asm/JSystem/J2DGraph/J2DWindow/func_802FAED0.s" } #pragma pop #endif /* 802FB000-802FB12C 2F5940 012C+00 1/0 1/0 0/0 .text resize__9J2DWindowFff */ void J2DWindow::resize(f32 param_0, f32 param_1) { f32 f31 = getWidth(); f32 f30 = getHeight(); J2DPane::resize(param_0, param_1); field_0x114.f.x += param_0 - f31; field_0x114.f.y += param_1 - f30; for (JSUTreeIterator it(getFirstChild()); it != getEndChild(); it++) { if (it->getTypeID() == 19 && it->isConnectParent()) { f32 f29 = param_0 - f31 + it->getWidth(); f32 f28 = param_1 - f30 + it->getHeight(); it->J2DPane::resize(f29, f28); } } } /* 802FB12C-802FB1D8 2F5A6C 00AC+00 1/1 0/0 0/0 .text * setContentsColor__9J2DWindowFQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColorQ28JUtility6TColor */ void J2DWindow::setContentsColor(JUtility::TColor param_0, JUtility::TColor param_1, JUtility::TColor param_2, JUtility::TColor param_3) { field_0x128.set(param_0); field_0x12C.set(param_1); field_0x130.set(param_2); field_0x134.set(param_3); } /* 802FB1D8-802FB240 2F5B18 0068+00 1/0 1/0 0/0 .text drawSelf__9J2DWindowFff */ void J2DWindow::drawSelf(f32 param_0, f32 param_1) { Mtx stack_38; MTXIdentity(stack_38); drawSelf(param_0, param_1, &stack_38); } /* 802FB240-802FB338 2F5B80 00F8+00 1/0 0/0 0/0 .text drawSelf__9J2DWindowFffPA3_A4_f */ // matches with literals #ifdef NONMATCHING void J2DWindow::drawSelf(f32 param_0, f32 param_1, Mtx* param_2) { JGeometry::TBox2 stack_50(mBounds); stack_50.addPos(JGeometry::TVec2(param_0, param_1)); if (stack_50.getWidth() >= field_0x140 && stack_50.getHeight() >= field_0x142) { Mtx stack_40; MTXConcat(*param_2, mGlobalMtx, stack_40); GXLoadPosMtxImm(stack_40, GX_PNMTX0); draw_private(stack_50, field_0x114); } clip(field_0x114); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void J2DWindow::drawSelf(f32 param_0, f32 param_1, Mtx* param_2) { nofralloc #include "asm/JSystem/J2DGraph/J2DWindow/drawSelf__9J2DWindowFffPA3_A4_f.s" } #pragma pop #endif /* 802FB338-802FB634 2F5C78 02FC+00 1/0 0/0 0/0 .text * drawContents__9J2DWindowFRCQ29JGeometry8TBox2 */ // matches with literals #ifdef NONMATCHING void J2DWindow::drawContents(JGeometry::TBox2 const& param_0) { if (param_0.isValid()) { GXSetNumChans(1); GXSetNumTexGens(0); GXSetNumTevStages(1); GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); if ((field_0x128 & 0xff) == 0xff && (field_0x12C & 0xff) == 0xff && (field_0x130 & 0xff) == 0xff && (field_0x134 & 0xff) == 0xff && mColorAlpha == 0xff) { GXSetBlendMode(GX_BM_NONE, GX_BL_ONE, GX_BL_ZERO, GX_LO_SET); } else { GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET); } GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); GXSetChanCtrl(GX_COLOR0A0, 0, GX_SRC_REG, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); GXSetNumIndStages(0); for (int i = 0; i < 16; i++) { GXSetTevDirect(GXTevStageID(i)); } if (field_0x110 == NULL) { JUtility::TColor color1(field_0x128); JUtility::TColor color2(field_0x130); JUtility::TColor color3(field_0x12C); JUtility::TColor color4(field_0x134); if (mColorAlpha != 0xff) { color1.a = color1.a * mColorAlpha / 0xff; color2.a = color2.a * mColorAlpha / 0xff; color3.a = color3.a * mColorAlpha / 0xff; color4.a = color4.a * mColorAlpha / 0xff; } GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3f32(param_0.i.x, param_0.i.y, 0.0f); GXColor1u32(color1); GXPosition3f32(param_0.f.x, param_0.i.y, 0.0f); GXColor1u32(color3); GXPosition3f32(param_0.f.x, param_0.f.y, 0.0f); GXColor1u32(color4); GXPosition3f32(param_0.i.x, param_0.f.y, 0.0f); GXColor1u32(color2); i_GXEnd(); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); } else { GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); GXSetNumTexGens(1); drawContentsTexture(param_0.i.x, param_0.i.y, param_0.getWidth(), param_0.getHeight()); } } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void J2DWindow::drawContents(JGeometry::TBox2 const& param_0) { nofralloc #include "asm/JSystem/J2DGraph/J2DWindow/func_802FB338.s" } #pragma pop #endif /* 802FB634-802FB7C8 2F5F74 0194+00 2/2 0/0 0/0 .text * drawFrameTexture__9J2DWindowFP10JUTTextureffffUsUsUsUsb */ // matches with literals #ifdef NONMATCHING void J2DWindow::drawFrameTexture(JUTTexture* param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, u16 param_5, u16 param_6, u16 param_7, u16 param_8, bool param_9) { f32 f31 = param_1 + param_3; f32 f30 = param_2 + param_4; if (param_9) { param_0->load(GX_TEXMAP0); setTevMode(param_0, mBlack, mWhite); } JUtility::TColor stack_64(mColorAlpha | 0xffffff00); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3f32(param_1, param_2, 0.0f); GXColor1u32(stack_64); i_GXTexCoord2u16(param_7, param_8); GXPosition3f32(f31, param_2, 0.0f); GXColor1u32(stack_64); i_GXTexCoord2u16(param_5, param_8); GXPosition3f32(f31, f30, 0.0f); GXColor1u32(stack_64); i_GXTexCoord2u16(param_5, param_6); GXPosition3f32(param_1, f30, 0.0f); GXColor1u32(stack_64); i_GXTexCoord2u16(param_7, param_6); i_GXEnd(); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void J2DWindow::drawFrameTexture(JUTTexture* param_0, f32 param_1, f32 param_2, f32 param_3, f32 param_4, u16 param_5, u16 param_6, u16 param_7, u16 param_8, bool param_9) { nofralloc #include "asm/JSystem/J2DGraph/J2DWindow/drawFrameTexture__9J2DWindowFP10JUTTextureffffUsUsUsUsb.s" } #pragma pop #endif /* 802FB7C8-802FB868 2F6108 00A0+00 1/1 0/0 0/0 .text * drawFrameTexture__9J2DWindowFP10JUTTextureffbbb */ // matches with literals #ifdef NONMATCHING void J2DWindow::drawFrameTexture(JUTTexture* param_0, f32 param_1, f32 param_2, bool param_3, bool param_4, bool param_5) { u16 r31 = param_4 ? u16(0x8000) : u16(0); u16 r30 = param_3 ? u16(0x8000) : u16(0); u16 r29 = param_4 ? u16(0) : u16(0x8000); u16 r28 = param_3 ? u16(0) : u16(0x8000); drawFrameTexture(param_0, param_1, param_2, param_0->getWidth(), param_0->getHeight(), r28, r29, r30, r31, param_5); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void J2DWindow::drawFrameTexture(JUTTexture* param_0, f32 param_1, f32 param_2, bool param_3, bool param_4, bool param_5) { nofralloc #include "asm/JSystem/J2DGraph/J2DWindow/drawFrameTexture__9J2DWindowFP10JUTTextureffbbb.s" } #pragma pop #endif /* ############################################################################################## */ /* 80456254-80456258 004854 0004+00 1/1 0/0 0/0 .sdata2 @2984 */ SECTION_SDATA2 static f32 lit_2984 = 1.0f; /* 80456258-80456260 004858 0004+04 1/1 0/0 0/0 .sdata2 @2985 */ SECTION_SDATA2 static f32 lit_2985[1 + 1 /* padding */] = { 0.5f, /* padding */ 0.0f, }; /* 802FB868-802FBB90 2F61A8 0328+00 1/1 0/0 0/0 .text drawContentsTexture__9J2DWindowFffff */ // instruction order #ifdef NONMATCHING void J2DWindow::drawContentsTexture(f32 param_0, f32 param_1, f32 param_2, f32 param_3) { f32 f29 = param_0 + param_2; f32 f28 = param_1 + param_3; f32 f27 = field_0x110->getWidth(); f32 f26 = field_0x110->getHeight(); f32 f31 = -(param_2 / f27 - 1.0f) * 0.5f; f32 f30 = -(param_3 / f26 - 1.0f) * 0.5f; f32 f25 = f31 + param_2 / f27; f32 f24 = f30 + param_3 / f26; TContentsColor stack_f0; getContentsColor(stack_f0); if (mColorAlpha != 0xff) { stack_f0.field_0x0.a = stack_f0.field_0x0.a * mColorAlpha / 0xff; stack_f0.field_0x4.a = stack_f0.field_0x4.a * mColorAlpha / 0xff; stack_f0.field_0x8.a = stack_f0.field_0x8.a * mColorAlpha / 0xff; stack_f0.field_0xc.a = stack_f0.field_0xc.a * mColorAlpha / 0xff; } field_0x110->load(GX_TEXMAP0); setTevMode(field_0x110, 0, 0xffffffff); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA6, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3f32(param_0, param_1, 0.0f); GXColor1u32(stack_f0.field_0x0); GXTexCoord2f32(f31, f30); GXPosition3f32(f29, param_1, 0.0f); GXColor1u32(stack_f0.field_0x4); GXTexCoord2f32(f25, f30); GXPosition3f32(f29, f28, 0.0f); GXColor1u32(stack_f0.field_0xc); GXTexCoord2f32(f25, f24); GXPosition3f32(param_0, f28, 0.0f); GXColor1u32(stack_f0.field_0x8); GXTexCoord2f32(f31, f24); i_GXEnd(); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBX8, 0xf); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void J2DWindow::drawContentsTexture(f32 param_0, f32 param_1, f32 param_2, f32 param_3) { nofralloc #include "asm/JSystem/J2DGraph/J2DWindow/drawContentsTexture__9J2DWindowFffff.s" } #pragma pop #endif static inline void GXSetTexCoordGen(GXTexCoordID dst, GXTexGenType type, GXTexGenSrc src, u32 mtx) { GXSetTexCoordGen2(dst, type, src, mtx, GX_FALSE, GX_PTIDENTITY); } /* 802FBB90-802FBE60 2F64D0 02D0+00 2/2 0/0 0/0 .text * setTevMode__9J2DWindowFP10JUTTextureQ28JUtility6TColorQ28JUtility6TColor */ void J2DWindow::setTevMode(JUTTexture* param_0, JUtility::TColor param_1, JUtility::TColor param_2) { if (param_1 == 0 && param_2 == 0xffffffff) { GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO); if (param_0->getTransparency()) { GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_RASA, GX_CA_ZERO); } else { GXSetTevColor(GX_TEVREG2, JUtility::TColor(0xffffffff)); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_A2, GX_CA_RASA, GX_CA_ZERO); } GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetNumTevStages(1); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET); } else { GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); GXSetTevColor(GX_TEVREG0, param_1); GXSetTevColor(GX_TEVREG1, param_2); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_C0, GX_CC_C1, GX_CC_TEXC, GX_CC_ZERO); if (param_0->getTransparency()) { GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_A0, GX_CA_A1, GX_CA_TEXA, GX_CA_ZERO); } else { GXSetTevColor(GX_TEVREG2, JUtility::TColor(0xffffffff)); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_A0, GX_CA_A1, GX_CA_A2, GX_CA_ZERO); } GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_CPREV, GX_CC_RASC, GX_CC_ZERO); GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_APREV, GX_CA_RASA, GX_CA_ZERO); GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetNumTevStages(2); } GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET); } /* 802FBE60-802FBEDC 2F67A0 007C+00 1/0 0/0 0/0 .text getFrameTexture__9J2DWindowCFUcUc */ JUTTexture* J2DWindow::getFrameTexture(u8 param_0, u8 param_1) const { JUTTexture* tmp[4] = {NULL, NULL, NULL, NULL}; tmp[0] = field_0x100; tmp[1] = field_0x104; tmp[2] = field_0x108; tmp[3] = field_0x10c; if (param_0 >= 4 || param_1 != 0) { return NULL; } return tmp[param_0]; } /* 802FBEDC-802FBF98 2F681C 00BC+00 1/0 0/0 0/0 .text isUsed__9J2DWindowFPC7ResTIMG */ bool J2DWindow::isUsed(ResTIMG const* param_0) { JUTTexture* tmp[5] = {NULL, NULL, NULL, NULL, NULL}; tmp[0] = field_0x100; tmp[1] = field_0x104; tmp[2] = field_0x108; tmp[3] = field_0x10c; tmp[4] = field_0x110; for (u8 i = 0; i < 5; i++) { if (tmp[i] && tmp[i]->getTexInfo() == param_0) { return true; } } return J2DPane::isUsed(param_0); } /* 802FBF98-802FBFA0 2F68D8 0008+00 1/0 1/0 0/0 .text getTypeID__9J2DWindowCFv */ u16 J2DWindow::getTypeID() const { return 17; } /* 802FBFA0-802FBFE8 2F68E0 0048+00 1/0 0/0 0/0 .text draw__9J2DWindowFffff */ void J2DWindow::draw(f32 param_0, f32 param_1, f32 param_2, f32 param_3) { draw(JGeometry::TBox2(param_0, param_1, param_0 + param_2, param_1 + param_3)); } /* 802FBFE8-802FC000 2F6928 0018+00 1/0 0/0 0/0 .text getContentsTexture__9J2DWindowCFUc */ JUTTexture* J2DWindow::getContentsTexture(u8 param_0) const { if (param_0 != 0) { return NULL; } return field_0x110; } /* 802FC000-802FC01C 2F6940 001C+00 1/0 0/0 0/0 .text * getMaterial__9J2DWindowCFRQ29J2DWindow9TMaterial */ void J2DWindow::getMaterial(J2DWindow::TMaterial& param_0) const { param_0.field_0x0 = NULL; param_0.field_0x4 = NULL; param_0.field_0x8 = NULL; param_0.field_0xc = NULL; param_0.field_0x10 = NULL; } /* 802FC01C-802FC024 2F695C 0008+00 1/0 0/0 0/0 .text getFrameMaterial__9J2DWindowCFUc */ J2DMaterial* J2DWindow::getFrameMaterial(u8 param_0) const { return NULL; } /* 802FC024-802FC02C 2F6964 0008+00 1/0 0/0 0/0 .text getContentsMaterial__9J2DWindowCFv */ J2DMaterial* J2DWindow::getContentsMaterial() const { return NULL; } /* 802FC02C-802FC04C 2F696C 0020+00 1/0 0/0 0/0 .text isUsed__9J2DWindowFPC7ResFONT */ bool J2DWindow::isUsed(ResFONT const* param_0) { return J2DPane::isUsed(param_0); } /* 802FC04C-802FC050 2F698C 0004+00 1/0 0/0 0/0 .text rewriteAlpha__9J2DWindowFv */ void J2DWindow::rewriteAlpha() { /* empty function */ }