// // Generated By: dol2asm // Translation Unit: d/d_drawlist // #define NO_INLINE_DLSTBASE_DRAW #include "d/d_drawlist.h" #include "d/s/d_s_play.h" #include "JSystem/J2DGraph/J2DScreen.h" #include "JSystem/J3DGraphBase/J3DDrawBuffer.h" #include "SSystem/SComponent/c_bg_s_shdw_draw.h" #include "d/com/d_com_inf_game.h" #include "dol2asm.h" #include "m_Do/m_Do_graphic.h" #include "m_Do/m_Do_lib.h" #include "m_Do/m_Do_mtx.h" // // Types: // class dDlst_blo_c : public dDlst_base_c { public: /* 80053B64 */ virtual void draw(); /* 0x004 */ int field_0x4; /* 0x008 */ J2DScreen mScreen; /* 0x120 */ f32 field_0x120; /* 0x124 */ f32 field_0x124; }; class dDlst_2Dm_c { public: /* 8005312C */ virtual void draw(); /* 0x04 */ s16 field_0x4; /* 0x06 */ s16 field_0x6; /* 0x08 */ s16 field_0x8; /* 0x0A */ s16 field_0xa; /* 0x0C */ f32 field_0xc; /* 0x10 */ f32 field_0x10; /* 0x14 */ GXColor field_0x14; /* 0x18 */ GXColor field_0x18; /* 0x1C */ GXTexObj field_0x1c; /* 0x3C */ GXTlutObj field_0x3c; /* 0x48 */ s16 field_0x48; /* 0x4A */ s16 field_0x4a; /* 0x4C */ u8 field_0x4c; /* 0x50 */ GXTexObj field_0x50; /* 0x70 */ GXTlutObj field_0x70; /* 0x7C */ s16 field_0x7c; /* 0x7E */ s16 field_0x7e; /* 0x80 */ u8 field_0x80; }; class dDlst_2DTri_c { public: /* 80051AF0 */ virtual void draw(); /* 0x04 */ s16 field_0x4; /* 0x06 */ s16 field_0x6; /* 0x08 */ GXColor field_0x8; /* 0x0C */ s16 field_0xc; /* 0x10 */ f32 field_0x10; /* 0x14 */ f32 field_0x14; }; class dDlst_2DT_c : public dDlst_base_c { public: dDlst_2DT_c() {} /* 80051F98 */ virtual void draw(); /* 0x04 */ u8* field_0x4; /* 0x08 */ u32 field_0x8; /* 0x0C */ u8 field_0xc; /* 0x0D */ u8 field_0xd; /* 0x0E */ u16 field_0xe; /* 0x10 */ u16 field_0x10; /* 0x12 */ s16 field_0x12; /* 0x14 */ s16 field_0x14; /* 0x16 */ s16 field_0x16; /* 0x18 */ s16 field_0x18; /* 0x1C */ f32 field_0x1c; /* 0x20 */ f32 field_0x20; /* 0x24 */ f32 field_0x24; /* 0x28 */ f32 field_0x28; }; class dDlst_2DQuad_c { public: dDlst_2DQuad_c() {} /* 80051CF0 */ virtual void draw(); /* 0x04 */ s16 field_0x4; /* 0x06 */ s16 field_0x6; /* 0x08 */ s16 field_0x8; /* 0x0A */ s16 field_0xa; /* 0x0C */ GXColor field_0xc; }; class dDlst_2DPoint_c { public: /* 80051E5C */ virtual void draw(); /* 0x04 */ s16 field_0x4; /* 0x06 */ s16 field_0x6; /* 0x08 */ GXColor field_0x8; /* 0x0C */ u8 field_0xc; }; class dDlst_2DMt_tex_c { public: u8 check() { return field_0x0; } int getCI() { return mCI; } GXTexObj* getTexObj() { return &mTexObj; } GXTlutObj* getTlutObj() { return &mTlutObj; } GXColor getColor() { return mColor; } f32 getS() { return mS; } f32 getT() { return mT; } f32 getSw() { return mSw; } f32 getTw() { return mTw; } /* 0x00 */ u8 field_0x0; /* 0x01 */ u8 mCI; /* 0x04 */ GXTexObj mTexObj; /* 0x24 */ GXTlutObj mTlutObj; /* 0x30 */ GXColor mColor; /* 0x34 */ f32 mS; /* 0x38 */ f32 mT; /* 0x3C */ f32 mSw; /* 0x40 */ f32 mTw; }; class dDlst_2DMt_c { public: /* 8005364C */ virtual void draw(); /* 0x04 */ u8 field_0x4; /* 0x08 */ dDlst_2DMt_tex_c* field_0x8; /* 0x0C */ s16 field_0xc; /* 0x0E */ s16 field_0xe; /* 0x10 */ s16 field_0x10; /* 0x12 */ s16 field_0x12; }; class dDlst_2DM_c { public: /* 80052C58 */ virtual void draw(); /* 0x04 */ s16 field_0x4; /* 0x06 */ s16 field_0x6; /* 0x08 */ s16 field_0x8; /* 0x0A */ s16 field_0xa; /* 0x0C */ u8 field_0xc; /* 0x0D */ GXColor field_0xd; /* 0x11 */ GXColor field_0x11; /* 0x18 */ void* field_0x18; /* 0x1C */ u8 field_0x1c; /* 0x1E */ u16 field_0x1e; /* 0x20 */ u16 field_0x20; /* 0x22 */ s16 field_0x22; /* 0x24 */ s16 field_0x24; /* 0x28 */ void* field_0x28; /* 0x2C */ u8 field_0x2c; /* 0x2E */ u16 field_0x2e; /* 0x30 */ u16 field_0x30; /* 0x32 */ s16 field_0x32; /* 0x34 */ s16 field_0x34; }; class ShdwDrawPoly_c : public cBgS_ShdwDraw { public: /* 80054A6C */ virtual ~ShdwDrawPoly_c() {} void setCenter(cXyz* center) { mCenter = center; } cXyz* getCenter() { return mCenter; } void setLightVec(cXyz* lightVec) { mLightVec = lightVec; } cXyz* getLightVec() { return mLightVec; } void setPoly(dDlst_shadowPoly_c* poly) { mPoly = poly; } dDlst_shadowPoly_c* getPoly() { return mPoly; } /* 0x34 */ cXyz* mCenter; /* 0x38 */ cXyz* mLightVec; /* 0x3c */ dDlst_shadowPoly_c* mPoly; }; // // Forward References: // extern "C" void setViewPort__14dDlst_window_cFffffff(); extern "C" void setScissor__14dDlst_window_cFffff(); extern "C" void draw__13dDlst_2DTri_cFv(); extern "C" void draw__14dDlst_2DQuad_cFv(); extern "C" void draw__15dDlst_2DPoint_cFv(); extern "C" void draw__11dDlst_2DT_cFv(); extern "C" void draw__12dDlst_2DT2_cFv(); extern "C" void __ct__12dDlst_2DT2_cFv(); extern "C" void init__12dDlst_2DT2_cFP7ResTIMGffffUcUcUcff(); extern "C" void draw__11dDlst_2DM_cFv(); extern "C" void draw__11dDlst_2Dm_cFv(); extern "C" void draw__12dDlst_2DMt_cFv(); extern "C" void getTexture__10J2DPictureCFUc(); extern "C" void __ct__10dDlst_2D_cFP7ResTIMGssssUc(); extern "C" void draw__10dDlst_2D_cFv(); extern "C" void draw__11dDlst_blo_cFv(); extern "C" void clearAnmTransform__9J2DScreenFv(); extern "C" void calcMtx__7J2DPaneFv(); extern "C" void makeMatrix__7J2DPaneFff(); extern "C" s32 getTypeID__7J2DPaneCFv(); extern "C" void setWhite__10J2DPictureFQ28JUtility6TColor(); extern "C" void setBlack__10J2DPictureFQ28JUtility6TColor(); extern "C" void __dt__10J2DAnmBaseFv(); extern "C" void init__8cM_rnd_cFiii(); extern "C" void get__8cM_rnd_cFv(); extern "C" void getF__8cM_rnd_cFf(); extern "C" void getFX__8cM_rnd_cFf(); extern "C" void getValue__8cM_rnd_cFff(); extern "C" void draw__18dDlst_effectLine_cFv(); extern "C" void update__18dDlst_effectLine_cFR4cXyzR8_GXColorUsUsUsUsffff(); extern "C" void set__18dDlst_shadowPoly_cFP10cBgD_Vtx_tUsUsUsP8cM3dGPla(); extern "C" void draw__18dDlst_shadowPoly_cFv(); extern "C" static void J3DDrawBuffer__create__FUl(); extern "C" void reset__18dDlst_shadowReal_cFv(); extern "C" void imageDraw__18dDlst_shadowReal_cFPA4_f(); extern "C" void draw__18dDlst_shadowReal_cFv(); extern "C" static void psdRealCallBack__FP13cBgS_ShdwDrawP10cBgD_Vtx_tiiiP8cM3dGPla(); extern "C" static void realPolygonCheck__FP4cXyzffP4cXyzP18dDlst_shadowPoly_c(); extern "C" void __dt__14ShdwDrawPoly_cFv(); extern "C" static void setkankyoShadow__FP12dKy_tevstr_cPf(); extern "C" void setShadowRealMtx__18dDlst_shadowReal_cFP4cXyzP4cXyzfffP12dKy_tevstr_c(); extern "C" void set__18dDlst_shadowReal_cFUlP8J3DModelP4cXyzffP12dKy_tevstr_cff(); extern "C" void add__18dDlst_shadowReal_cFP8J3DModel(); extern "C" void draw__20dDlst_shadowSimple_cFv(); extern "C" void set__20dDlst_shadowSimple_cFP4cXyzffP4cXyzsfP9_GXTexObj(); extern "C" void init__21dDlst_shadowControl_cFv(); extern "C" void reset__21dDlst_shadowControl_cFv(); extern "C" void imageDraw__21dDlst_shadowControl_cFPA4_f(); extern "C" void draw__21dDlst_shadowControl_cFPA4_f(); extern "C" void setReal__21dDlst_shadowControl_cFUlScP8J3DModelP4cXyzffP12dKy_tevstr_c(); extern "C" void addReal__21dDlst_shadowControl_cFUlP8J3DModel(); extern "C" void setSimple__21dDlst_shadowControl_cFP4cXyzffP4cXyzsfP9_GXTexObj(); extern "C" void setSimpleTex__21dDlst_shadowControl_cFPC7ResTIMG(); extern "C" void newData__13dDlst_peekZ_cFssPUl(); extern "C" void peekData__13dDlst_peekZ_cFv(); extern "C" void __ct__12dDlst_list_cFv(); extern "C" void __ct__26mDoExt_3DlineMatSortPacketFv(); extern "C" void __dt__18dDlst_shadowReal_cFv(); extern "C" void __dt__17dDlst_shadowTri_cFv(); extern "C" void __ct__18dDlst_shadowReal_cFv(); extern "C" void __ct__17dDlst_shadowTri_cFv(); extern "C" void __ct__20dDlst_shadowSimple_cFv(); extern "C" void init__12dDlst_list_cFv(); extern "C" void __dt__12dDlst_list_cFv(); extern "C" void reset__12dDlst_list_cFv(); extern "C" void entryZSortXluDrawList__12dDlst_list_cFP13J3DDrawBufferP9J3DPacketR4cXyz(); extern "C" void drawOpaDrawList__12dDlst_list_cFP13J3DDrawBuffer(); extern "C" void drawXluDrawList__12dDlst_list_cFP13J3DDrawBuffer(); extern "C" void drawOpaListItem3d__12dDlst_list_cFv(); extern "C" void drawXluListItem3d__12dDlst_list_cFv(); extern "C" void set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c(); extern "C" void draw__12dDlst_list_cFPP12dDlst_base_cPP12dDlst_base_c(); extern "C" void wipeIn__12dDlst_list_cFfR8_GXColor(); extern "C" void wipeIn__12dDlst_list_cFf(); extern "C" void calcWipe__12dDlst_list_cFv(); extern "C" dDlst_shadowTri_c* getTri__22dDlst_shadowRealPoly_cFv(); extern "C" s32 getTriMax__22dDlst_shadowRealPoly_cFv(); extern "C" void searchUpdateMaterialID__10J2DAnmBaseFP9J2DScreen(); extern "C" void __sinit_d_drawlist_cpp(); extern "C" extern char const* const d_d_drawlist__stringBase0; extern "C" extern void* __vt__11dDlst_2DT_c[3]; extern "C" extern void* __vt__15dDlst_2DPoint_c[3]; extern "C" extern void* __vt__14dDlst_2DQuad_c[3]; extern "C" extern void* __vt__13dDlst_2DTri_c[3]; extern "C" u8 mSimpleTexObj__21dDlst_shadowControl_c[32]; extern "C" u8 mWipeDlst__12dDlst_list_c[72]; extern "C" u8 mWipeColor__12dDlst_list_c[4]; extern "C" f32 mWipeRate__12dDlst_list_c; extern "C" f32 mWipeSpeed__12dDlst_list_c[1 + 1 /* padding */]; extern "C" extern u8 data_80450EE0; // // External References: // extern "C" void __dt__4cXyzFv(); extern "C" void mDoMtx_YrotM__FPA4_fs(); extern "C" void mDoMtx_lookAt__FPA4_fPC3VecPC3Vecs(); extern "C" void scaleM__14mDoMtx_stack_cFfff(); extern "C" void __ct__4cXyzFv(); extern "C" void __dt__26mDoExt_3DlineMatSortPacketFv(); extern "C" void mDoLib_setResTimgObj__FPC7ResTIMGP9_GXTexObjUlP10_GXTlutObj(); extern "C" void ShdwDraw__4cBgSFP13cBgS_ShdwDraw(); extern "C" void dKy_plight_near_pos__Fv(); extern "C" void dKy_GxFog_set__Fv(); extern "C" void __mi__4cXyzCFRC3Vec(); extern "C" void normalize__4cXyzFv(); extern "C" void isZero__4cXyzCFv(); extern "C" void __ct__13cBgS_ShdwDrawFv(); extern "C" void __dt__13cBgS_ShdwDrawFv(); extern "C" void Set__13cBgS_ShdwDrawFR4cXyzR4cXyz(); extern "C" void SetCallback__13cBgS_ShdwDrawFPFP13cBgS_ShdwDrawP10cBgD_Vtx_tiiiP8cM3dGPla_i(); extern "C" void cLib_chaseUC__FPUcUcUc(); extern "C" void calcViewFrustum__11J3DUClipperFv(); extern "C" void clip__11J3DUClipperCFPA4_CfP3VecP3Vec(); extern "C" void* __nw__FUl(); extern "C" void* __nwa__FUli(); extern "C" void __dl__FPv(); extern "C" void getGlbResource__10JKRArchiveFUlPCcP10JKRArchive(); extern "C" void clearAnmTransform__7J2DPaneFv(); extern "C" void draw__9J2DScreenFffPC14J2DGrafContext(); extern "C" void __ct__10J2DPictureFv(); extern "C" void reinitGX__6J3DSysFv(); extern "C" void drawFast__14J3DShapePacketFv(); extern "C" void loadPreDrawSetting__8J3DShapeCFv(); extern "C" void initialize__13J3DDrawBufferFv(); extern "C" void allocBuffer__13J3DDrawBufferFUl(); extern "C" void __dt__13J3DDrawBufferFv(); extern "C" void frameInit__13J3DDrawBufferFv(); extern "C" void entryImm__13J3DDrawBufferFP9J3DPacketUs(); extern "C" void draw__13J3DDrawBufferCFv(); extern "C" void GXClearVtxDesc(); extern "C" void GXPixModeSync(); extern "C" void __destroy_arr(); extern "C" void __construct_array(); extern "C" void _savefpr_26(); extern "C" void _restfpr_26(); extern "C" void _savegpr_22(); extern "C" void _savegpr_23(); extern "C" void _savegpr_24(); extern "C" void _savegpr_25(); extern "C" void _savegpr_26(); extern "C" void _savegpr_27(); extern "C" void _savegpr_28(); extern "C" void _savegpr_29(); extern "C" void _restgpr_22(); extern "C" void _restgpr_23(); extern "C" void _restgpr_24(); extern "C" void _restgpr_25(); extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" void _restgpr_29(); extern "C" extern void* __vt__26mDoExt_3DlineMatSortPacket[5]; extern "C" extern void* __vt__12dDlst_base_c[3]; extern "C" extern void* __vt__9J3DPacket[5]; extern "C" u8 now__14mDoMtx_stack_c[48]; extern "C" u8 mClipper__14mDoLib_clipper[92]; extern "C" u8 sincosTable___5JMath[65536]; extern "C" u8 mBackColor__13mDoGph_gInf_c[4]; extern "C" f32 mSystemFar__14mDoLib_clipper; extern "C" f32 mFovyRate__14mDoLib_clipper; extern "C" u8 sOldVcdVatCmd__8J3DShape[4]; // // Declarations: // /* 80051AC0-80051ADC 04C400 001C+00 0/0 3/3 0/0 .text setViewPort__14dDlst_window_cFffffff */ void dDlst_window_c::setViewPort(f32 xOrig, f32 yOrig, f32 width, f32 height, f32 nearZ, f32 farZ) { mViewport.mXOrig = xOrig; mViewport.mYOrig = yOrig; mViewport.mWidth = width; mViewport.mHeight = height; mViewport.mNearZ = nearZ; mViewport.mFarZ = farZ; } /* 80051ADC-80051AF0 04C41C 0014+00 0/0 4/4 0/0 .text setScissor__14dDlst_window_cFffff */ void dDlst_window_c::setScissor(f32 xOrig, f32 yOrig, f32 width, f32 height) { mViewport.mScissor.mXOrig = xOrig; mViewport.mScissor.mYOrig = yOrig; mViewport.mScissor.mWidth = width; mViewport.mScissor.mHeight = height; } /* 80051AF0-80051CF0 04C430 0200+00 1/0 0/0 0/0 .text draw__13dDlst_2DTri_cFv */ // vtable data #ifdef NONMATCHING void dDlst_2DTri_c::draw() { f32 f2 = cM_scos(field_0xc); f32 f3 = cM_ssin(field_0xc); s16 x[3]; s16 y[3]; int r8 = 0; for (int i = 0; i < 3; i++) { f32 f4 = field_0x10 * cM_ssin(r8); f32 f5 = field_0x14 * cM_scos(r8); x[i] = field_0x4 + s16(f4 * f2 + f5 * f3); y[i] = field_0x6 + s16(f5 * f2 - f4 * f3); r8 -= 0x5555; } GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); GXSetNumChans(1); GXSetChanCtrl(GX_COLOR0A0, GX_DISABLE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); GXSetChanMatColor(GX_COLOR0A0, field_0x8); GXSetNumTexGens(0); GXSetNumTevStages(1); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET); GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0); GXSetCurrentMtx(GX_PNMTX0); GXBegin(GX_TRIANGLES, GX_VTXFMT0, 3); GXPosition3s16(x[0], y[0], 0); GXPosition3s16(x[1], y[1], 0); GXPosition3s16(x[2], y[2], 0); GXEnd(); dComIfGp_getCurrentGrafPort()->setup2D(); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm void dDlst_2DTri_c::draw() { extern "C" asm void draw__13dDlst_2DTri_cFv() { nofralloc #include "asm/d/d_drawlist/draw__13dDlst_2DTri_cFv.s" } #pragma pop #endif /* 80051CF0-80051E5C 04C630 016C+00 1/0 0/0 0/0 .text draw__14dDlst_2DQuad_cFv */ // vtable #ifdef NONMATCHING void dDlst_2DQuad_c::draw() { GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); GXSetNumChans(1); GXSetChanCtrl(GX_COLOR0A0, GX_DISABLE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); GXSetChanMatColor(GX_COLOR0A0, field_0xc); GXSetNumTexGens(0); GXSetNumTevStages(1); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET); GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0); GXSetCurrentMtx(GX_PNMTX0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3s16((s32)field_0x4, (s32)field_0x6, 0); GXPosition3s16((s32)field_0x8, (s32)field_0x6, 0); GXPosition3s16((s32)field_0x8, (s32)field_0xa, 0); GXPosition3s16((s32)field_0x4, (s32)field_0xa, 0); GXEnd(); dComIfGp_getCurrentGrafPort()->setup2D(); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm void dDlst_2DQuad_c::draw() { extern "C" asm void draw__14dDlst_2DQuad_cFv() { nofralloc #include "asm/d/d_drawlist/draw__14dDlst_2DQuad_cFv.s" } #pragma pop #endif /* 80051E5C-80051F98 04C79C 013C+00 1/0 0/0 0/0 .text draw__15dDlst_2DPoint_cFv */ // vtable data #ifdef NONMATCHING void dDlst_2DPoint_c::draw() { GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); GXSetNumChans(1); GXSetChanCtrl(GX_COLOR0A0, GX_DISABLE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); GXSetChanMatColor(GX_COLOR0A0, field_0x8); GXSetNumTexGens(0); GXSetNumTevStages(1); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); GXSetTevOp(GX_TEVSTAGE0, GX_PASSCLR); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET); GXSetPointSize(field_0xc, GX_TO_ZERO); GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0); GXSetCurrentMtx(GX_PNMTX0); GXBegin(GX_POINTS, GX_VTXFMT0, 1); GXPosition3s16(field_0x4, field_0x6, 0); GXEnd(); dComIfGp_getCurrentGrafPort()->setup2D(); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm void dDlst_2DPoint_c::draw() { extern "C" asm void draw__15dDlst_2DPoint_cFv() { nofralloc #include "asm/d/d_drawlist/draw__15dDlst_2DPoint_cFv.s" } #pragma pop #endif /* ############################################################################################## */ /* 80450648-8045064C 0000C8 0004+00 1/1 0/0 0/0 .sdata l_color$4033 */ SECTION_SDATA static _GXColor l_color_4033 = { 0xFF, 0xFF, 0xFF, 0xE0, }; /* 80452008-8045200C 000608 0004+00 4/4 0/0 0/0 .sdata2 @4072 */ SECTION_SDATA2 static f32 lit_4072 = 0.5f; /* 8045200C-80452010 00060C 0004+00 1/1 0/0 0/0 .sdata2 @4073 */ SECTION_SDATA2 static f32 lit_4073 = 32768.0f; /* 80452010-80452018 000610 0004+04 10/10 0/0 0/0 .sdata2 @4074 */ SECTION_SDATA2 static f32 lit_4074[1 + 1 /* padding */] = { 0.0f, /* padding */ 0.0f, }; /* 80452018-80452020 000618 0008+00 8/8 0/0 0/0 .sdata2 @4076 */ SECTION_SDATA2 static f64 lit_4076 = 4503599627370496.0 /* cast u32 to float */; /* 80452020-80452028 000620 0008+00 5/5 0/0 0/0 .sdata2 @4079 */ SECTION_SDATA2 static f64 lit_4079 = 4503601774854144.0 /* cast s32 to float */; /* 80051F98-80052354 04C8D8 03BC+00 1/0 0/0 0/0 .text draw__11dDlst_2DT_cFv */ // Matches with literals #ifdef NONMATCHING void dDlst_2DT_c::draw() { f32 var5 = field_0xe; f32 var6 = field_0x10; f32 var11 = (field_0x16 - field_0x12) * 0.5f / field_0x24; f32 var12 = (field_0x18 - field_0x14) * 0.5f / field_0x28; u16 var1 = (field_0x1c - var11) / var5 * 32768.0f; u16 var2 = (field_0x20 - var12) / var6 * 32768.0f; u16 var3 = (field_0x1c + var11) / var5 * 32768.0f; u16 var4 = (field_0x20 + var12) / var6 * 32768.0f; GXTexObj tex; GXInitTexObj(&tex, field_0x4, field_0xe, field_0x10, (GXTexFmt)field_0xc, GX_CLAMP, GX_CLAMP, GX_FALSE); GXInitTexObjLOD(&tex, GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, 0, 0, GX_ANISO_1); GXLoadTexObj(&tex, GX_TEXMAP0); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBX8, 0xf); GXSetNumChans(1); GXSetChanCtrl(GX_COLOR0A0, GX_DISABLE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); l_color_4033.a = field_0xd; GXSetNumTexGens(1); GXSetNumTevStages(1); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR0A0); GXSetTevOp(GX_TEVSTAGE0, GX_MODULATE); GXSetZCompLoc(GX_FALSE); GXSetZMode(GX_DISABLE, GX_ALWAYS, GX_DISABLE); GXSetBlendMode(GX_BM_NONE, GX_BL_ZERO, GX_BL_ZERO, GX_LO_SET); GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0); GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor); GXSetCullMode(GX_CULL_NONE); GXSetDither(GX_TRUE); GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0); GXSetChanMatColor(GX_COLOR0A0, l_color_4033); GXSetClipMode(GX_CLIP_DISABLE); GXSetCurrentMtx(GX_PNMTX0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3s16((s32)field_0x12, (s32)field_0x14, 0); GXColor1u32(0xffffffff); GXTexCoord2u16(var1, var2); GXPosition3s16((s32)field_0x16, (s32)field_0x14, 0); GXColor1u32(0xffffffff); GXTexCoord2u16(var3, var2); GXPosition3s16((s32)field_0x16, (s32)field_0x18, 0); GXColor1u32(0xffffffff); GXTexCoord2u16(var3, var4); GXPosition3s16((s32)field_0x12, (s32)field_0x18, 0); GXColor1u32(0xffffffff); GXTexCoord2u16(var1, var4); GXEnd(); GXSetClipMode(GX_CLIP_ENABLE); dComIfGp_getCurrentGrafPort()->setup2D(); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm void dDlst_2DT_c::draw() { extern "C" asm void draw__11dDlst_2DT_cFv() { nofralloc #include "asm/d/d_drawlist/draw__11dDlst_2DT_cFv.s" } #pragma pop #endif /* ############################################################################################## */ /* 80452028-8045202C 000628 0004+00 10/10 0/0 0/0 .sdata2 @4270 */ SECTION_SDATA2 static f32 lit_4270 = 1.0f; /* 80052354-80052B00 04CC94 07AC+00 1/0 0/0 0/0 .text draw__12dDlst_2DT2_cFv */ // vtable data #ifdef NONMATCHING void dDlst_2DT2_c::draw() { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_F32, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA6, 0); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); GXLoadTexObj(&mTexObj, GX_TEXMAP0); GXSetNumChans(0); GXSetTevColor(GX_TEVREG0, field_0x3c); GXSetTevColor(GX_TEVREG1, field_0x40); GXSetNumTexGens(1); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); GXSetNumTevStages(1); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_C1, GX_CC_C0, GX_CC_TEXC, GX_CC_ZERO); GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); if (field_0x46) { GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0); } else { GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_A1, GX_CA_A0, GX_CA_TEXA, GX_CA_ZERO); } GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetZCompLoc(GX_FALSE); GXSetZMode(GX_DISABLE, GX_ALWAYS, GX_DISABLE); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_CLEAR); GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0); GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor); GXSetCullMode(GX_CULL_NONE); GXSetDither(GX_TRUE); GXLoadPosMtxImm(mDoMtx_getIdentity(), GX_PNMTX0); GXSetClipMode(GX_CLIP_DISABLE); GXSetCurrentMtx(GX_PNMTX0); f32 f31 = field_0x24 + field_0x2c; f32 f30 = field_0x28 + field_0x30; if (field_0x44 && field_0x45) { f32 f29 = field_0x24 + field_0x2c * 0.5f; f32 f28 = field_0x28 + field_0x30 * 0.5f; f32 f27; f32 f26; if (mScaleX == 0.0f) { f27 = 0.0f; f26 = 0.0f; } else { f27 = 1.0f - 1.0f / mScaleX; f26 = 1.0f; } f32 f25; f32 f24; if (mScaleY == 0.0f) { f25 = 0.0f; f24 = 0.0f; } else { f25 = 1.0f - 1.0f / mScaleY; f24 = 1.0f; } GXBegin(GX_QUADS, GX_VTXFMT0, 16); GXPosition2f32(field_0x24, field_0x28); GXTexCoord2f32(f27, f25); GXPosition2f32(f29, field_0x28); GXTexCoord2f32(f26, f25); GXPosition2f32(f29, f28); GXTexCoord2f32(f26, f24); GXPosition2f32(field_0x24, f28); GXTexCoord2f32(f27, f24); GXPosition2f32(f29, field_0x28); GXTexCoord2f32(f26, f25); GXPosition2f32(f31, field_0x28); GXTexCoord2f32(f27, f25); GXPosition2f32(f31, f28); GXTexCoord2f32(f27, f24); GXPosition2f32(f29, f28); GXTexCoord2f32(f26, f24); GXPosition2f32(field_0x24, f28); GXTexCoord2f32(f27, f24); GXPosition2f32(f29, f28); GXTexCoord2f32(f26, f24); GXPosition2f32(f29, f30); GXTexCoord2f32(f26, f25); GXPosition2f32(field_0x24, f30); GXTexCoord2f32(f27, f25); GXPosition2f32(f29, f28); GXTexCoord2f32(f26, f24); GXPosition2f32(f31, f28); GXTexCoord2f32(f27, f24); GXPosition2f32(f31, f30); GXTexCoord2f32(f27, f25); GXPosition2f32(f29, f30); GXTexCoord2f32(f26, f25); GXEnd(); } else if (field_0x44) { f32 f28 = field_0x24 + field_0x2c * 0.5f; f32 f29; f32 f27; if (mScaleX == 0.0f) { f29 = 0.0f; f27 = 0.0f; } else { f29 = 1.0f - 1.0f / mScaleX; f27 = 1.0f; } f32 f24; if (mScaleY == 0.0f) { f24 = 1.0f; } else { f24 = 0.5f - (1.0f / mScaleY) * 0.5f; } GXBegin(GX_QUADS, GX_VTXFMT0, 8); GXPosition2f32(field_0x24, field_0x28); GXTexCoord2f32(f29, f24); GXPosition2f32(f28, field_0x28); GXTexCoord2f32(f27, f24); GXPosition2f32(f28, f30); GXTexCoord2f32(f27, 1.0f); GXPosition2f32(field_0x24, f30); GXTexCoord2f32(f29, 1.0f); GXPosition2f32(f28, field_0x28); GXTexCoord2f32(f27, f24); GXPosition2f32(f31, field_0x28); GXTexCoord2f32(f29, f24); GXPosition2f32(f31, f30); GXTexCoord2f32(f29, 1.0f); GXPosition2f32(f28, f30); GXTexCoord2f32(f27, 1.0f); GXEnd(); } else if (field_0x45) { f32 f24 = field_0x28 + 0.5f * field_0x30; f32 f25; f32 f26; if (mScaleX == 0.0f) { f25 = 1.0f; f26 = 1.0f; } else { f25 = 0.5f - (1.0f / mScaleX * 0.5f); f26 = 0.5f + (1.0f / mScaleX * 0.5f); } f32 f27; f32 f28; if (mScaleY == 0.0f) { f27 = 0.0f; f28 = 0.0f; } else { f27 = 1.0f - 1.0f / mScaleY; f28 = 1.0f; } GXBegin(GX_QUADS, GX_VTXFMT0, 8); GXPosition2f32(field_0x24, field_0x28); GXTexCoord2f32(f25, f27); GXPosition2f32(f31, field_0x28); GXTexCoord2f32(f26, f27); GXPosition2f32(f31, f24); GXTexCoord2f32(f26, f28); GXPosition2f32(field_0x24, f24); GXTexCoord2f32(f25, f28); GXPosition2f32(field_0x24, f24); GXTexCoord2f32(f25, f28); GXPosition2f32(f31, f24); GXTexCoord2f32(f26, f28); GXPosition2f32(f31, f30); GXTexCoord2f32(f26, f27); GXPosition2f32(field_0x24, f30); GXTexCoord2f32(f25, f27); GXEnd(); } else { f32 f24; f32 f25; if (mScaleX == 0.0f) { f24 = 0.0f; f25 = 0.0f; } else { f24 = 0.5f - (1.0f / mScaleX * 0.5f); f25 = 0.5f + (1.0f / mScaleX * 0.5f); } f32 f26; f32 f27; if (mScaleY == 0.0f) { f26 = 0.0f; f27 = 0.0f; } else { f26 = 0.5f - (1.0f / mScaleY * 0.5f); f27 = 0.5f + (1.0f / mScaleY * 0.5f); } GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition2f32(field_0x24, field_0x28); GXTexCoord2f32(f24, f26); GXPosition2f32(f31, field_0x28); GXTexCoord2f32(f25, f26); GXPosition2f32(f31, f30); GXTexCoord2f32(f25, f27); GXPosition2f32(field_0x24, f30); GXTexCoord2f32(f24, f27); GXEnd(); } GXSetClipMode(GX_CLIP_ENABLE); dComIfGp_getCurrentGrafPort()->setup2D(); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm void dDlst_2DT2_c::draw() { extern "C" asm void draw__12dDlst_2DT2_cFv() { nofralloc #include "asm/d/d_drawlist/draw__12dDlst_2DT2_cFv.s" } #pragma pop #endif /* ############################################################################################## */ /* 803A87A0-803A87C0 0058C0 000C+14 2/2 0/0 0/0 .data cNullVec__6Z2Calc */ SECTION_DATA static u8 cNullVec__6Z2Calc[12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 803A87C0-803A8800 0058E0 003C+04 0/0 0/0 0/0 .data l_frontZMat */ #pragma push #pragma force_active on SECTION_DATA static u8 l_frontZMat[] ALIGN_DECL(32) = { 0x61, 0x40, 0x00, 0x00, 0x07, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; #pragma pop /* 803A8800-803A882C 005920 002A+02 0/0 0/0 0/0 .data l_frontNoZSubMat */ #pragma push #pragma force_active on SECTION_DATA static u8 l_frontNoZSubMat[] ALIGN_DECL(32) = { 0x61, 0x40, 0x00, 0x00, 0x06, 0x61, 0x41, 0x00, 0x09, 0x35, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; #pragma pop /* 803A882C-803A88A0 00594C 0060+14 0/1 0/0 0/0 .data l_shadowVolPos */ #pragma push #pragma force_active on SECTION_DATA static Vec l_shadowVolPos[] = { {-1.0f, -1.0f, 0.0f}, {-1.0f, -1.0f, -300.0f}, {-1.0f, 1.0f, 0.0f}, {-1.0f, 1.0f, -300.0f}, {1.0f, -1.0f, 0.0f}, {1.0f, -1.0f, -300.0f}, {1.0f, 1.0f, 0.0f}, {1.0f, 1.0f, -300.0f}, }; #pragma pop /* 803A88A0-803A88E0 0059C0 003B+05 0/0 0/0 0/0 .data l_shadowVolDL */ #pragma push #pragma force_active on SECTION_DATA static u8 l_shadowVolDL[] ALIGN_DECL(32) = { 0x80, 0x00, 0x18, 0x06, 0x02, 0x03, 0x07, 0x00, 0x04, 0x05, 0x01, 0x06, 0x04, 0x00, 0x02, 0x07, 0x05, 0x04, 0x06, 0x03, 0x01, 0x05, 0x07, 0x02, 0x00, 0x01, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; #pragma pop /* 803A88E0-803A8940 005A00 005A+06 1/1 0/0 0/0 .data l_shadowProjMat */ SECTION_DATA static u8 l_shadowProjMat[] ALIGN_DECL(32) = { 0x61, 0x28, 0x38, 0x03, 0xC0, 0x61, 0xC0, 0x08, 0xFF, 0xFF, 0x61, 0xC1, 0x08, 0xE6, 0x70, 0x61, 0x43, 0x00, 0x00, 0x01, 0x61, 0x40, 0x00, 0x00, 0x07, 0x61, 0x41, 0x00, 0x04, 0xAD, 0x61, 0xF3, 0x64, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x40, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 803A8940-803A89A0 005A60 005A+06 0/0 0/0 0/0 .data l_shadowVolMat */ #pragma push #pragma force_active on SECTION_DATA static u8 l_shadowVolMat[] ALIGN_DECL(32) = { 0x61, 0x28, 0x38, 0x00, 0x00, 0x61, 0xC0, 0x08, 0xFF, 0xFC, 0x61, 0xC1, 0x08, 0xFF, 0x90, 0x61, 0x43, 0x00, 0x00, 0x41, 0x61, 0x40, 0x00, 0x00, 0x0D, 0x61, 0x41, 0x00, 0x01, 0x35, 0x61, 0xF3, 0x7F, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; #pragma pop /* 803A89A0-803A8A00 005AC0 0055+0B 0/1 0/0 0/0 .data l_clearMat */ #pragma push #pragma force_active on SECTION_DATA static u8 l_clearMat[] ALIGN_DECL(32) = { 0x61, 0x28, 0x38, 0x00, 0x00, 0x61, 0xC0, 0x08, 0xFF, 0xFF, 0x61, 0xC1, 0x08, 0xFF, 0xA0, 0x61, 0x40, 0x00, 0x00, 0x06, 0x61, 0x41, 0x00, 0x00, 0x14, 0x61, 0xF3, 0x7F, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; #pragma pop /* 803A8A00-803A8A60 005B20 0055+0B 0/1 0/0 0/0 .data l_frontMat */ #pragma push #pragma force_active on SECTION_DATA static u8 l_frontMat[] ALIGN_DECL(32) = { 0x61, 0x28, 0x38, 0x00, 0x00, 0x61, 0xC0, 0x08, 0xFF, 0xFF, 0x61, 0xC1, 0x08, 0xFF, 0x90, 0x61, 0x43, 0x00, 0x00, 0x41, 0x61, 0x40, 0x00, 0x00, 0x07, 0x61, 0x41, 0x00, 0x01, 0x15, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, 0x40, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; #pragma pop /* 803A8A60-803A8A9C 005B80 003C+00 0/1 0/0 0/0 .data l_backSubMat */ #pragma push #pragma force_active on SECTION_DATA static u8 l_backSubMat[] ALIGN_DECL(32) = { 0x61, 0x41, 0x00, 0x09, 0x35, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, 0x80, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; #pragma pop /* 803A8A9C-803A8B60 005BBC 00A8+1C 0/1 0/0 0/0 .data l_simpleShadowPos */ #pragma push #pragma force_active on SECTION_DATA static Vec l_simpleShadowPos[] = { {0.0f, -1.0f, 0.0f}, {0.0f, 0.0f, 0.0f}, {1.0f, -1.0f, -1.0f}, {1.0f, 0.0f, -1.0f}, {-1.0f, -1.0f, -1.0f}, {-1.0f, 0.0f, -1.0f}, {-1.0f, -1.0f, 1.0f}, {-1.0f, 0.0f, 1.0f}, {1.0f, -1.0f, 1.0f}, {1.0f, 0.0f, 1.0f}, {-1.0f, 1.0f, -1.0f}, {1.0f, 1.0f, -1.0f}, {1.0f, 1.0f, 1.0f}, {-1.0f, 1.0f, 1.0f}, }; #pragma pop /* 803A8B60-803A8BC0 005C80 0058+08 0/1 0/0 0/0 .data l_shadowVolumeDL */ #pragma push #pragma force_active on SECTION_DATA static u8 l_shadowVolumeDL[] ALIGN_DECL(32) = { 0x98, 0x00, 0x05, 0x03, 0x09, 0x01, 0x07, 0x05, 0x98, 0x00, 0x05, 0x04, 0x06, 0x00, 0x08, 0x02, 0x98, 0x00, 0x04, 0x04, 0x05, 0x06, 0x07, 0x98, 0x00, 0x04, 0x02, 0x03, 0x04, 0x05, 0x98, 0x00, 0x04, 0x08, 0x09, 0x02, 0x03, 0x98, 0x00, 0x04, 0x06, 0x07, 0x08, 0x09, 0x98, 0x00, 0x03, 0x01, 0x05, 0x03, 0x98, 0x00, 0x03, 0x00, 0x02, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; #pragma pop /* 803A8BC0-803A8C20 005CE0 0055+0B 0/1 0/0 0/0 .data l_shadowSealTexDL */ #pragma push #pragma force_active on SECTION_DATA static u8 l_shadowSealTexDL[] ALIGN_DECL(32) = { 0x61, 0x28, 0x38, 0x03, 0xC0, 0x61, 0x40, 0x00, 0x00, 0x06, 0x61, 0x41, 0x00, 0x06, 0x15, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x40, 0x01, 0x80, 0x00, 0x04, 0x0A, 0x00, 0x00, 0x0B, 0x01, 0x00, 0x0C, 0x01, 0x01, 0x0D, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; #pragma pop /* 803A8C20-803A8C80 005D40 0055+0B 0/1 0/0 0/0 .data l_shadowSealTex2DL */ #pragma push #pragma force_active on SECTION_DATA static u8 l_shadowSealTex2DL[] ALIGN_DECL(32) = { 0x61, 0x28, 0x38, 0x03, 0xC0, 0x61, 0x40, 0x00, 0x00, 0x06, 0x61, 0x41, 0x00, 0x06, 0x15, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x01, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x40, 0x01, 0x80, 0x00, 0x04, 0x0A, 0x00, 0x00, 0x0B, 0x02, 0x00, 0x0C, 0x02, 0x01, 0x0D, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; #pragma pop /* 803A8C80-803A8D00 005DA0 0069+17 0/1 0/0 0/0 .data l_shadowSealDL */ #pragma push #pragma force_active on SECTION_DATA static u8 l_shadowSealDL[] ALIGN_DECL(32) = { 0x10, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x05, 0x00, 0x61, 0x28, 0x38, 0x00, 0x00, 0x61, 0xC0, 0x08, 0xFF, 0xFF, 0x61, 0xC1, 0x08, 0xFF, 0xB0, 0x61, 0x40, 0x00, 0x00, 0x06, 0x61, 0x41, 0x00, 0x06, 0xED, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, 0x40, 0x10, 0x80, 0x00, 0x04, 0x0A, 0x0B, 0x0C, 0x0D, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; #pragma pop /* 803A8D00-803A8D7C 005E20 007B+01 1/1 0/0 0/0 .data l_matDL$5404 */ SECTION_DATA static u8 l_matDL[] ALIGN_DECL(32) = { 0x10, 0x00, 0x00, 0x10, 0x0E, 0x00, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x10, 0x10, 0x00, 0x00, 0x04, 0x00, 0x61, 0x28, 0x38, 0x00, 0x00, 0x61, 0xC0, 0x08, 0xFF, 0xF2, 0x61, 0xC1, 0x08, 0xFF, 0x90, 0x61, 0x43, 0x00, 0x00, 0x41, 0x61, 0xF3, 0x7F, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x3F, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x10, 0x09, 0x00, 0x00, 0x00, 0x01, 0x61, 0x00, 0x00, 0x40, 0x10, 0x61, 0xEE, 0x00, 0x00, 0x00, 0x61, 0xEF, 0x00, 0x00, 0x00, 0x61, 0xF0, 0x00, 0x00, 0x00, 0x61, 0xF1, 0x00, 0x00, 0x00, 0x61, 0xF2, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 803A8D7C-803A8D8C 005E9C 0010+00 1/1 0/0 0/0 .data l_imageDrawColor$5405 */ SECTION_DATA static GXColor l_imageDrawColor[4] = { {255, 0, 0, 0}, {0, 255, 0, 0}, {0, 0, 255, 0}, {0, 0, 0, 255}, }; /* 803A8D8C-803A8D9C 005EAC 0010+00 0/1 0/0 0/0 .data l_tevColorChan$5438 */ #pragma push #pragma force_active on SECTION_DATA static GXTevColor l_tevColorChan[4] = { GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA, }; #pragma pop /* 803A8D9C-803A8DCC 005EBC 0030+00 0/0 0/0 0/0 .data mtx_adj$5842 */ #pragma push #pragma force_active on SECTION_DATA static Mtx mtx_adj = { {0.5f, 0.0f, 0.0f, 0.5f}, {0.0f, -0.5f, 0.0f, 0.5f}, {0.0f, 0.0f, 1.0f, 0.0f}, }; #pragma pop /* 803A8DCC-803A8DDC 005EEC 0010+00 1/1 0/0 0/0 .data __vt__18dDlst_shadowPoly_c */ SECTION_DATA extern void* __vt__18dDlst_shadowPoly_c[4] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)NULL, (void*)NULL, }; /* 803A8DDC-803A8DEC 005EFC 0010+00 2/2 0/0 0/0 .data __vt__22dDlst_shadowRealPoly_c */ SECTION_DATA extern void* __vt__22dDlst_shadowRealPoly_c[4] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)getTri__22dDlst_shadowRealPoly_cFv, (void*)getTriMax__22dDlst_shadowRealPoly_cFv, }; /* 803A8DEC-803A8DF8 005F0C 000C+00 2/2 0/0 0/0 .data __vt__14ShdwDrawPoly_c */ SECTION_DATA extern void* __vt__14ShdwDrawPoly_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__14ShdwDrawPoly_cFv, }; /* 803A8DF8-803A8E04 005F18 000C+00 0/0 2/2 0/0 .data __vt__18dDlst_effectLine_c */ SECTION_DATA extern void* __vt__18dDlst_effectLine_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)draw__18dDlst_effectLine_cFv, }; /* 803A8E04-803A8E14 005F24 0010+00 1/1 14/14 0/0 .data __vt__10J2DAnmBase */ SECTION_DATA extern void* __vt__10J2DAnmBase[4] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)__dt__10J2DAnmBaseFv, (void*)searchUpdateMaterialID__10J2DAnmBaseFP9J2DScreen, }; /* 803A8E14-803A8E20 005F34 000C+00 0/0 0/0 0/0 .data __vt__11dDlst_blo_c */ SECTION_DATA extern void* __vt__11dDlst_blo_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)draw__11dDlst_blo_cFv, }; /* 803A8E20-803A8E2C 005F40 000C+00 1/1 1/1 0/0 .data __vt__10dDlst_2D_c */ SECTION_DATA extern void* __vt__10dDlst_2D_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)draw__10dDlst_2D_cFv, }; /* 803A8E2C-803A8E38 005F4C 000C+00 0/0 0/0 0/0 .data __vt__12dDlst_2DMt_c */ SECTION_DATA extern void* __vt__12dDlst_2DMt_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)draw__12dDlst_2DMt_cFv, }; /* 803A8E38-803A8E44 005F58 000C+00 0/0 0/0 0/0 .data __vt__11dDlst_2Dm_c */ SECTION_DATA extern void* __vt__11dDlst_2Dm_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)draw__11dDlst_2Dm_cFv, }; /* 803A8E44-803A8E5C 005F64 000C+0C 0/0 0/0 0/0 .data __vt__11dDlst_2DM_c */ SECTION_DATA extern void* __vt__11dDlst_2DM_c[3 + 3 /* padding */] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)draw__11dDlst_2DM_cFv, /* padding */ NULL, NULL, NULL, }; /* 803A8E5C-803A8E68 005F7C 000C+00 1/1 0/0 0/0 .data __vt__12dDlst_2DT2_c */ SECTION_DATA extern void* __vt__12dDlst_2DT2_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)draw__12dDlst_2DT2_cFv, }; /* 80052B00-80052B4C 04D440 004C+00 1/1 0/0 0/0 .text __ct__12dDlst_2DT2_cFv */ dDlst_2DT2_c::dDlst_2DT2_c() { field_0x40 = (GXColor){0, 0, 0, 0}; } /* 80052B4C-80052C58 04D48C 010C+00 1/1 0/0 0/0 .text init__12dDlst_2DT2_cFP7ResTIMGffffUcUcUcff */ void dDlst_2DT2_c::init(ResTIMG* i_timg, f32 param_1, f32 param_2, f32 param_3, f32 param_4, u8 param_5, u8 param_6, u8 param_7, f32 i_scaleX, f32 i_scaleY) { mDoLib_setResTimgObj(i_timg, &mTexObj, 0, NULL); field_0x24 = param_1; field_0x28 = param_2; field_0x2c = param_3; field_0x30 = param_4; mScaleX = i_scaleX; mScaleY = i_scaleY; field_0x3c = (GXColor){0, 0, 0, 255}; field_0x44 = param_6; if (field_0x44 != 0 && GXGetTexObjWrapS(&mTexObj) == 2) { field_0x44 = 0; } field_0x45 = param_7; if (field_0x45 != 0 && GXGetTexObjWrapT(&mTexObj) == 2) { field_0x45 = 0; } field_0x46 = param_5; } /* ############################################################################################## */ /* 80452030-80452034 000630 0004+00 2/2 0/0 0/0 .sdata2 @4360 */ SECTION_SDATA2 static f32 lit_4360 = 256.0f; /* 80052C58-8005312C 04D598 04D4+00 1/0 0/0 0/0 .text draw__11dDlst_2DM_cFv */ // Matches with literals #ifdef NONMATCHING void dDlst_2DM_c::draw() { s16 r31 = field_0x22; s16 r30 = field_0x24; int r29 = field_0x22 + 256.0f; int r28 = field_0x24 + 256.0f; f32 f4 = 256.0f / field_0x2e; f32 f3 = 256.0f / field_0x30; int r27 = field_0x32 * f4; int r26 = field_0x34 * f3; s16 r25 = r27 + s16(field_0x1e * f4); s16 r24 = r26 + s16(field_0x20 * f3); GXTexObj tex[2]; GXInitTexObj(&tex[0], field_0x18, field_0x1e, field_0x20, GXTexFmt(field_0x1c), GX_CLAMP, GX_CLAMP, 0); GXInitTexObjLOD(&tex[0], GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, 0, 0, GX_ANISO_1); GXTexWrapMode wrap = field_0xc ? GX_REPEAT : GX_CLAMP; GXInitTexObj(&tex[1], field_0x28, field_0x2e, field_0x30, GXTexFmt(field_0x2c), wrap, wrap, 0); GXInitTexObjLOD(&tex[1], GX_LINEAR, GX_LINEAR, 0.0, 0.0, 0.0, 0, 0, GX_ANISO_1); GXLoadTexObj(&tex[0], GX_TEXMAP0); GXLoadTexObj(&tex[1], GX_TEXMAP1); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA4, 8); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_CLR_RGBA, GX_RGBA4, 8); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX1, GX_DIRECT); GXSetNumChans(0); GXSetTevColor(GX_TEVREG0, field_0xd); GXSetTevColor(GX_TEVREG1, field_0x11); GXSetNumTexGens(2); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX1, GX_IDENTITY); GXSetNumTevStages(2); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_C1, GX_CC_C0, GX_CC_TEXC, GX_CC_ZERO); GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_A1, GX_CA_A0, GX_CA_TEXA, GX_CA_ZERO); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL); GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_TEXC, GX_CC_CPREV, GX_CC_ZERO); GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET); GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3s16((s32)field_0x4, (s32)field_0x6, 0); GXTexCoord2s16(r31, r30); GXTexCoord2s16(r27, r26); GXPosition3s16((s32)field_0x8, (s32)field_0x6, 0); GXTexCoord2s16(r29, r30); GXTexCoord2s16(r25, r26); GXPosition3s16((s32)field_0x8, (s32)field_0xa, 0); GXTexCoord2s16(r29, r28); GXTexCoord2s16(r25, r24); GXPosition3s16((s32)field_0x4, (s32)field_0xa, 0); GXTexCoord2s16(r31, r28); GXTexCoord2s16(r27, r24); GXEnd(); dComIfGp_getCurrentGrafPort()->setup2D(); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm void dDlst_2DM_c::draw() { extern "C" asm void draw__11dDlst_2DM_cFv() { nofralloc #include "asm/d/d_drawlist/draw__11dDlst_2DM_cFv.s" } #pragma pop #endif /* 8005312C-8005364C 04DA6C 0520+00 1/0 0/0 0/0 .text draw__11dDlst_2Dm_cFv */ // Matches with literals #ifdef NONMATCHING void dDlst_2Dm_c::draw() { s16 r31 = field_0x48; s16 r30 = field_0x4a; int r29 = field_0x48 + 256.0f; int r28 = field_0x4a + 256.0f; f32 f31 = field_0xc * 256.0f / GXGetTexObjWidth(&field_0x50); f32 f30 = field_0x10 * 256.0f / GXGetTexObjHeight(&field_0x50); int r27 = field_0x7c * f31; int r26 = field_0x7e * f30; s16 r25 = r27 + s16(f31 * GXGetTexObjWidth(&field_0x1c)); s16 r24 = r26 + s16(f30 * GXGetTexObjHeight(&field_0x1c)); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGBA4, 8); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX1, GX_CLR_RGBA, GX_RGBA4, 8); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); GXSetVtxDesc(GX_VA_TEX1, GX_DIRECT); GXLoadTexObj(&field_0x1c, GX_TEXMAP0); if (field_0x4c) { GXLoadTlut(&field_0x3c, GXGetTexObjTlut(&field_0x1c)); } GXLoadTexObj(&field_0x50, GX_TEXMAP1); if (field_0x80) { GXLoadTlut(&field_0x70, GXGetTexObjTlut(&field_0x50)); } GXSetNumChans(0); GXSetTevColor(GX_TEVREG0, field_0x14); GXSetTevColor(GX_TEVREG1, field_0x18); GXSetNumTexGens(2); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); GXSetTexCoordGen(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX1, GX_IDENTITY); GXSetNumTevStages(2); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_C1, GX_CC_C0, GX_CC_TEXC, GX_CC_ZERO); GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_A1, GX_CA_A0, GX_CA_TEXA, GX_CA_ZERO); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetTevOrder(GX_TEVSTAGE1, GX_TEXCOORD1, GX_TEXMAP1, GX_COLOR_NULL); GXSetTevColorIn(GX_TEVSTAGE1, GX_CC_ZERO, GX_CC_TEXC, GX_CC_CPREV, GX_CC_ZERO); GXSetTevColorOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE1, GX_CA_ZERO, GX_CA_TEXA, GX_CA_APREV, GX_CA_ZERO); GXSetTevAlphaOp(GX_TEVSTAGE1, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetAlphaCompare(GX_GREATER, 0, GX_AOP_OR, GX_GREATER, 0); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET); GXLoadPosMtxImm(g_mDoMtx_identity, GX_PNMTX0); GXSetCurrentMtx(0); GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3s16((s32)field_0x4, (s32)field_0x6, 0); GXTexCoord2s16(r31, r30); GXTexCoord2s16(r27, r26); GXPosition3s16((s32)field_0x8, (s32)field_0x6, 0); GXTexCoord2s16(r29, r30); GXTexCoord2s16(r25, r26); GXPosition3s16((s32)field_0x8, (s32)field_0xa, 0); GXTexCoord2s16(r29, r28); GXTexCoord2s16(r25, r24); GXPosition3s16((s32)field_0x4, (s32)field_0xa, 0); GXTexCoord2s16(r31, r28); GXTexCoord2s16(r27, r24); GXEnd(); dComIfGp_getCurrentGrafPort()->setup2D(); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm void dDlst_2Dm_c::draw() { extern "C" asm void draw__11dDlst_2Dm_cFv() { nofralloc #include "asm/d/d_drawlist/func_8005312C.s" } #pragma pop #endif /* 8005364C-800539DC 04DF8C 0390+00 1/0 0/0 0/0 .text draw__12dDlst_2DMt_cFv */ // vtable #ifdef NONMATCHING void dDlst_2DMt_c::draw() { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); dDlst_2DMt_tex_c* r27 = field_0x8; int r28 = 0; for (int i = 0; i < field_0x4; i++) { if (r27->check()) { if (r27->getCI()) { GXLoadTlut(r27->getTlutObj(), i); } GXLoadTexObj(r27->getTexObj(), GXTexMapID(r28)); GXSetVtxAttrFmt(GX_VTXFMT0, GXAttr(GX_VA_TEX0 + r28), GX_CLR_RGBA, GX_RGBA6, 0); GXSetVtxDesc(GXAttr(GX_VA_TEX0 + r28), GX_DIRECT); GXSetTevColor(GXTevRegID(GX_TEVREG0 + r28), r27->mColor); GXSetTexCoordGen(GXTexCoordID(r28), GX_TG_MTX2x4, GXTexGenSrc(GX_TG_TEX0 + r28), GX_IDENTITY); GXSetTevOrder(GXTevStageID(r28), GXTexCoordID(r28), GXTexMapID(r28), GX_COLOR_NULL); GXSetTevColorIn(GXTevStageID(r28), GX_CC_ZERO, GXTevColorArg(GX_CC_C0 + r28*2), GX_CC_TEXC, r28 ? GX_CC_CPREV : GX_CC_ZERO); GXSetTevColorOp(GXTevStageID(r28), GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetTevAlphaIn(GXTevStageID(r28), GX_CA_ZERO, GXTevAlphaArg(GX_CA_A0 + r28), GX_CA_TEXA, r28 ? GX_CA_APREV : GX_CA_ZERO); GXSetTevAlphaOp(GXTevStageID(r28), GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); r28++; if (r28 >= 3) { break; } } r27++; } if (r28) { GXSetNumChans(0); GXSetNumTexGens(r28); GXSetNumTevStages(r28); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_SET); GXBegin(GX_QUADS, GX_VTXFMT0, 4); GXPosition3s16(field_0xc, field_0xe, 0); dDlst_2DMt_tex_c* tmp = field_0x8; for (int i = 0; i < field_0x4; i++) { if (tmp->check()) { GXTexCoord2f32(tmp->getS(), tmp->getT()); } tmp++; } GXPosition3s16(field_0x10, field_0xe, 0); tmp = field_0x8; for (int i = 0; i < field_0x4; i++) { if (tmp->check()) { GXTexCoord2f32(tmp->getS() + tmp->getSw(), tmp->getT()); } tmp++; } GXPosition3s16(field_0x10, field_0x12, 0); tmp = field_0x8; for (int i = 0; i < field_0x4; i++) { if (tmp->check()) { GXTexCoord2f32(tmp->getS() + tmp->getSw(), tmp->getT() + tmp->getTw()); } tmp++; } GXPosition3s16(field_0xc, field_0x12, 0); tmp = field_0x8; for (int i = 0; i < field_0x4; i++) { if (tmp->check()) { GXTexCoord2f32(tmp->getS(), tmp->getT() + tmp->getTw()); } tmp++; } GXEnd(); dComIfGp_getCurrentGrafPort()->setup2D(); } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm void dDlst_2DMt_c::draw() { extern "C" asm void draw__12dDlst_2DMt_cFv() { nofralloc #include "asm/d/d_drawlist/draw__12dDlst_2DMt_cFv.s" } #pragma pop #endif /* 800539DC-80053A00 04E31C 0024+00 0/0 1/0 0/0 .text getTexture__10J2DPictureCFUc */ // Should be inline JUTTexture* J2DPicture::getTexture(u8 param_0) const { if (param_0 < 2) { return mTexture[param_0]; } return NULL; } /* 80053A00-80053A9C 04E340 009C+00 0/0 1/1 0/0 .text __ct__10dDlst_2D_cFP7ResTIMGssssUc */ dDlst_2D_c::dDlst_2D_c(ResTIMG* i_timg, s16 i_posX, s16 i_posY, s16 i_sizeX, s16 i_sizeY, u8 i_alpha) { mpPicture.initiate(i_timg, NULL); mPosX = i_posX; mPosY = i_posY; mSizeX = i_sizeX; mSizeY = i_sizeY; mAlpha = i_alpha; } /* 80053A9C-80053B64 04E3DC 00C8+00 1/0 0/0 0/0 .text draw__10dDlst_2D_cFv */ // matches with vtable data #ifdef NONMATCHING void dDlst_2D_c::draw() { mpPicture.setAlpha(mAlpha); mpPicture.draw(mPosX, mPosY, mSizeX, mSizeY, false, false, false); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm void dDlst_2D_c::draw() { extern "C" asm void draw__10dDlst_2D_cFv() { nofralloc #include "asm/d/d_drawlist/draw__10dDlst_2D_cFv.s" } #pragma pop #endif /* 80053B64-80053BA0 04E4A4 003C+00 1/0 0/0 0/0 .text draw__11dDlst_blo_cFv */ // matches with vtable data #ifdef NONMATCHING void dDlst_blo_c::draw() { mScreen.draw(field_0x120, field_0x124, dComIfGp_getCurrentGrafPort()); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm void dDlst_blo_c::draw() { extern "C" asm void draw__11dDlst_blo_cFv() { nofralloc #include "asm/d/d_drawlist/draw__11dDlst_blo_cFv.s" } #pragma pop #endif /* 80053BA0-80053BC0 04E4E0 0020+00 0/0 1/0 0/0 .text clearAnmTransform__9J2DScreenFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void J2DScreen::clearAnmTransform() { nofralloc #include "asm/d/d_drawlist/clearAnmTransform__9J2DScreenFv.s" } #pragma pop /* 80053BC0-80053C00 04E500 0040+00 0/0 7/0 0/0 .text calcMtx__7J2DPaneFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void J2DPane::calcMtx() { nofralloc #include "asm/d/d_drawlist/calcMtx__7J2DPaneFv.s" } #pragma pop /* 80053C00-80053C3C 04E540 003C+00 0/0 8/0 0/0 .text makeMatrix__7J2DPaneFff */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void J2DPane::makeMatrix(f32 param_0, f32 param_1) { nofralloc #include "asm/d/d_drawlist/makeMatrix__7J2DPaneFff.s" } #pragma pop /* 80053C3C-80053C44 04E57C 0008+00 0/0 1/0 0/0 .text getTypeID__7J2DPaneCFv */ // s32 J2DPane::getTypeID() const { extern "C" s32 getTypeID__7J2DPaneCFv() { return 16; } /* 80053C44-80053C6C 04E584 0028+00 0/0 1/0 0/0 .text setWhite__10J2DPictureFQ28JUtility6TColor */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm bool J2DPicture::setWhite(JUtility::TColor param_0) { nofralloc #include "asm/d/d_drawlist/setWhite__10J2DPictureFQ28JUtility6TColor.s" } #pragma pop /* 80053C6C-80053C94 04E5AC 0028+00 0/0 1/0 0/0 .text setBlack__10J2DPictureFQ28JUtility6TColor */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm bool J2DPicture::setBlack(JUtility::TColor param_0) { nofralloc #include "asm/d/d_drawlist/setBlack__10J2DPictureFQ28JUtility6TColor.s" } #pragma pop /* 80053C94-80053CDC 04E5D4 0048+00 1/0 0/0 0/0 .text __dt__10J2DAnmBaseFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm J2DAnmBase::~J2DAnmBase() { extern "C" asm void __dt__10J2DAnmBaseFv() { nofralloc #include "asm/d/d_drawlist/__dt__10J2DAnmBaseFv.s" } #pragma pop /* 80053CDC-80053CEC 04E61C 0010+00 0/0 2/2 0/0 .text init__8cM_rnd_cFiii */ void cM_rnd_c::init(int s0, int s1, int s2) { seed0 = s0; seed1 = s1; seed2 = s2; } /* ############################################################################################## */ /* 80452034-80452038 000634 0004+00 1/1 0/0 0/0 .sdata2 @4791 */ SECTION_SDATA2 static f32 lit_4791 = 30323.0f; /* 80452038-8045203C 000638 0004+00 1/1 0/0 0/0 .sdata2 @4792 */ SECTION_SDATA2 static f32 lit_4792 = 30269.0f; /* 8045203C-80452040 00063C 0004+00 1/1 0/0 0/0 .sdata2 @4793 */ SECTION_SDATA2 static f32 lit_4793 = 30307.0f; /* 80452040-80452048 000640 0008+00 1/1 0/0 0/0 .sdata2 @4794 */ SECTION_SDATA2 static f64 lit_4794 = 1.0; /* 80053CEC-80053DE0 04E62C 00F4+00 2/2 0/0 0/0 .text get__8cM_rnd_cFv */ // matches with literals #ifdef NONMATCHING f32 cM_rnd_c::get() { seed0 = seed0 * 171 % 30269; seed1 = seed1 * 172 % 30307; seed2 = seed2 * 170 % 30323; f32 rm = fmodf((seed0 / 30269.0f) + (seed1 / 30307.0f) + (seed2 / 30323.0f), 1.0); return fabsf(rm); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm f32 cM_rnd_c::get() { nofralloc #include "asm/d/d_drawlist/get__8cM_rnd_cFv.s" } #pragma pop #endif /* 80053DE0-80053E18 04E720 0038+00 1/1 0/0 0/0 .text getF__8cM_rnd_cFf */ f32 cM_rnd_c::getF(f32 param_0) { return get() * param_0; } /* ############################################################################################## */ /* 80452048-8045204C 000648 0004+00 5/5 0/0 0/0 .sdata2 @4806 */ SECTION_SDATA2 static f32 lit_4806 = 2.0f; /* 80053E18-80053E60 04E758 0048+00 1/1 0/0 0/0 .text getFX__8cM_rnd_cFf */ f32 cM_rnd_c::getFX(f32 param_0) { return ((get() - lit_4072) * param_0) * lit_4806; } /* 80053E60-80053E9C 04E7A0 003C+00 1/1 0/0 0/0 .text getValue__8cM_rnd_cFff */ f32 cM_rnd_c::getValue(f32 param_0, f32 param_1) { return param_0 + getF(param_1); } /* ############################################################################################## */ /* 8045204C-80452050 00064C 0004+00 1/1 0/0 0/0 .sdata2 @4876 */ SECTION_SDATA2 static f32 lit_4876 = 32767.0f; /* 80053E9C-800541F4 04E7DC 0358+00 1/0 0/0 0/0 .text draw__18dDlst_effectLine_cFv */ // vtable data #ifdef NONMATCHING void dDlst_effectLine_c::draw() { GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetNumChans(1); GXSetChanCtrl(GX_COLOR0, 0, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_CLAMP, GX_AF_NONE); GXSetNumTexGens(0); GXSetNumTevStages(1); GXSetTevColor(GX_TEVREG0, mLineColor); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_C0); GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_A0); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV); GXSetZMode(GX_DISABLE, GX_LEQUAL, GX_DISABLE); GXSetBlendMode(GX_BM_BLEND, GX_BL_SRC_ALPHA, GX_BL_INV_SRC_ALPHA, GX_LO_CLEAR); GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0); GXSetCullMode(GX_CULL_NONE); GXLoadPosMtxImm(j3dSys.mViewMtx, GX_PNMTX0); GXSetClipMode(GX_CLIP_ENABLE); GXSetCurrentMtx(0); int r31 = getRndValue(field_0x20, field_0x22); cXyz local_68; cXyz local_74; for (int i = 0; i < r31; i++) { int r23 = getRndFX(32767.0f); float tmp = getRndValue(field_0x28, field_0x2c); local_68.x = field_0x10.x + tmp * cM_ssin(r23); local_68.y = field_0x10.y + tmp * cM_scos(r23); local_68.z = field_0x10.z; tmp = getRndValue(field_0x30, field_0x34); local_74.x = local_68.x + tmp * cM_ssin(r23); local_74.y = local_68.y + tmp * cM_scos(r23); local_74.z = field_0x10.z; cMtx_multVec(dComIfGd_getInvViewMtx(), &local_68, &local_68); cMtx_multVec(dComIfGd_getInvViewMtx(), &local_74, &local_74); GXSetLineWidth(getRndValue(field_0x24, field_0x26), GX_TO_ZERO); GXBegin(GX_LINES, GX_VTXFMT0, 2); GXPosition3f32(local_68.x, local_68.y, local_68.z); GXPosition3f32(local_74.x, local_74.y, local_74.z); GXEnd(); } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm void dDlst_effectLine_c::draw() { extern "C" asm void draw__18dDlst_effectLine_cFv() { nofralloc #include "asm/d/d_drawlist/draw__18dDlst_effectLine_cFv.s" } #pragma pop #endif /* 800541F4-80054288 04EB34 0094+00 0/0 1/1 0/0 .text * update__18dDlst_effectLine_cFR4cXyzR8_GXColorUsUsUsUsffff */ void dDlst_effectLine_c::update(cXyz& param_0, _GXColor& i_lineColor, u16 param_2, u16 param_3, u16 param_4, u16 param_5, f32 param_6, f32 param_7, f32 param_8, f32 param_9) { field_0x10 = param_0; mLineColor = i_lineColor; field_0x20 = param_2; field_0x22 = param_3; field_0x24 = param_4; field_0x26 = param_5; field_0x28 = param_6; field_0x2c = param_7; field_0x30 = param_8; field_0x34 = param_9; dComIfGd_set2DOpa(this); } /* 80054288-800543B4 04EBC8 012C+00 1/1 0/0 0/0 .text * set__18dDlst_shadowPoly_cFP10cBgD_Vtx_tUsUsUsP8cM3dGPla */ // matches with literals #ifdef NONMATCHING int dDlst_shadowPoly_c::set(cBgD_Vtx_t* i_vtx, u16 param_1, u16 param_2, u16 param_3, cM3dGPla* i_plane) { if (mCount >= getTriMax()) { return 0; } dDlst_shadowTri_c* dst = getTri() + mCount; cXyz b(i_plane->GetNP()); f32 temp_f3 = (1.0f - fabsf(b.y)); temp_f3 *= temp_f3; b.x *= temp_f3; b.z *= temp_f3; b *= 2.0f; VECAdd(&i_vtx[param_1], &b, &dst->mPos[0]); VECAdd(&i_vtx[param_2], &b, &dst->mPos[1]); VECAdd(&i_vtx[param_3], &b, &dst->mPos[2]); mCount++; return 1; } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm int dDlst_shadowPoly_c::set(cBgD_Vtx_t* param_0, u16 param_1, u16 param_2, u16 param_3, cM3dGPla* param_4) { nofralloc #include "asm/d/d_drawlist/set__18dDlst_shadowPoly_cFP10cBgD_Vtx_tUsUsUsP8cM3dGPla.s" } #pragma pop #endif /* 800543B4-80054478 04ECF4 00C4+00 1/1 0/0 0/0 .text draw__18dDlst_shadowPoly_cFv */ void dDlst_shadowPoly_c::draw() { dDlst_shadowTri_c* tri = getTri(); GXBegin(GX_TRIANGLES, GX_VTXFMT0, mCount * 3); for (int i = 0; i < mCount; i++) { GXPosition3f32(tri->mPos[2].x, tri->mPos[2].y, tri->mPos[2].z); GXPosition3f32(tri->mPos[1].x, tri->mPos[1].y, tri->mPos[1].z); GXPosition3f32(tri->mPos[0].x, tri->mPos[0].y, tri->mPos[0].z); tri++; } GXEnd(); } /* 80054478-800544F0 04EDB8 0078+00 1/1 0/0 0/0 .text J3DDrawBuffer__create__FUl */ static J3DDrawBuffer* J3DDrawBuffer__create(u32 size) { J3DDrawBuffer* buffer = new J3DDrawBuffer(); if (buffer) { if (buffer->allocBuffer(size) == kJ3DError_Success) { return buffer; } delete buffer; } return NULL; } /* 800544F0-80054500 04EE30 0010+00 2/2 0/0 0/0 .text reset__18dDlst_shadowReal_cFv */ void dDlst_shadowReal_c::reset() { mState = 0; mModelNum = 0; } /* 80054500-800545D4 04EE40 00D4+00 1/1 0/0 0/0 .text imageDraw__18dDlst_shadowReal_cFPA4_f */ void dDlst_shadowReal_c::imageDraw(Mtx param_0) { GXSetProjection(mRenderProjMtx, GX_ORTHOGRAPHIC); J3DModel** models = mpModels; for (u8 i = 0; i < mModelNum; i++) { J3DModelData* model_data = (*models)->getModelData(); model_data->getShapeNodePointer(0)->loadPreDrawSetting(); for (u16 j = 0; j < model_data->getShapeNum(); j++) { if (!model_data->getShapeNodePointer(j)->checkFlag(1)) { J3DShapePacket* shape_pkt = (*models)->getShapePacket(j); shape_pkt->setBaseMtxPtr(&mViewMtx); shape_pkt->drawFast(); shape_pkt->setBaseMtxPtr((Mtx*)param_0); } } models++; } } /* 800545D4-80054688 04EF14 00B4+00 1/1 0/0 0/0 .text draw__18dDlst_shadowReal_cFv */ void dDlst_shadowReal_c::draw() { static GXColor l_color = {0, 0, 0, 64}; l_color.a = field_0x1; GXSetTevColor(GX_TEVREG0, l_color); GXCallDisplayList(l_shadowProjMat, 0x40); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXSetCurrentMtx(GX_PNMTX0); GXLoadTexMtxImm(mReceiverProjMtx, GX_TEXMTX0, GX_MTX3x4); mShadowRealPoly.draw(); } /* ############################################################################################## */ /* 80452050-80452054 000650 0004+00 1/1 0/0 0/0 .sdata2 @5061 */ SECTION_SDATA2 static f32 lit_5061 = -1.0f / 5.0f; /* 80452054-80452058 000654 0004+00 1/1 0/0 0/0 .sdata2 @5062 */ SECTION_SDATA2 static f32 lit_5062 = -90.0f; /* 80054688-80054854 04EFC8 01CC+00 1/1 0/0 0/0 .text * psdRealCallBack__FP13cBgS_ShdwDrawP10cBgD_Vtx_tiiiP8cM3dGPla */ static int psdRealCallBack(cBgS_ShdwDraw* param_0, cBgD_Vtx_t* param_1, int param_2, int param_3, int param_4, cM3dGPla* param_5) { ShdwDrawPoly_c* shdwDrawPoly = (ShdwDrawPoly_c*)param_0; const cXyz* normal = param_5->GetNP(); if (shdwDrawPoly->getLightVec()->inprod(*normal) < -0.2f) { cXyz* center = shdwDrawPoly->getCenter(); if (normal->x * center->x + normal->y * center->y + normal->z * center->z + param_5->GetD() > -90.f) { const cXyz* min = shdwDrawPoly->GetBndP()->GetMinP(); const cXyz* max = shdwDrawPoly->GetBndP()->GetMaxP(); cBgD_Vtx_t* vert1 = param_1 + param_2; cBgD_Vtx_t* vert2 = param_1 + param_3; cBgD_Vtx_t* vert3 = param_1 + param_4; if ((vert1->y < min->y && vert2->y < min->y && vert3->y < min->y) || (vert1->y > max->y && vert2->y > max->y && vert3->y > max->y) || (vert1->x < min->x && vert2->x < min->x && vert3->x < min->x) || (vert1->x > max->x && vert2->x > max->x && vert3->x > max->x) || (vert1->z < min->z && vert2->z < min->z && vert3->z < min->z) || (vert1->z > max->z && vert2->z > max->z && vert3->z > max->z)) { return 1; } else { return shdwDrawPoly->getPoly()->set(param_1, param_2, param_3, param_4, param_5); } } } return 1; } /* ############################################################################################## */ /* 80452058-8045205C 000658 0004+00 1/1 0/0 0/0 .sdata2 @5127 */ SECTION_SDATA2 static f32 lit_5127 = 0.0020000000949949026f; /* 8045205C-80452060 00065C 0004+00 1/1 0/0 0/0 .sdata2 @5128 */ SECTION_SDATA2 static f32 lit_5128 = 120.0f; /* 80452060-80452064 000660 0004+00 1/1 0/0 0/0 .sdata2 @5129 */ SECTION_SDATA2 static f32 lit_5129 = 3.0f / 20.0f; /* 80452064-80452068 000664 0004+00 3/3 0/0 0/0 .sdata2 @5130 */ SECTION_SDATA2 static f32 lit_5130 = 10000.0f; /* 80054854-80054A6C 04F194 0218+00 1/1 0/0 0/0 .text * realPolygonCheck__FP4cXyzffP4cXyzP18dDlst_shadowPoly_c */ // vtable data #ifdef NONMATCHING static BOOL realPolygonCheck(cXyz* param_0, f32 param_1, f32 param_2, cXyz* param_3, dDlst_shadowPoly_c* param_4) { ShdwDrawPoly_c shdwDrawPoly; cXyz local_8c; cXyz local_98; f32 var1 = param_1 + param_2 - cLib_maxLimit(param_1 * param_1 * 0.002f, 120.0f); local_8c.y = param_0->y - var1; local_98.y = param_0->y + param_1 * 0.15f; local_98.x = param_0->x + param_3->x * var1; if (local_98.x < param_0->x) { local_8c.x = local_98.x; local_98.x = param_0->x; } else { local_8c.x = param_0->x; } local_8c.x -= param_1; local_98.x += param_1; var1 = param_0->z + param_3->z * var1; local_98.z = var1; if (var1 < param_0->z) { local_8c.z = local_98.z; local_98.z = param_0->z; } else { local_8c.z = param_0->z; } local_8c.z -= param_1; local_98.z += param_1; mDoLib_clipper::changeFar(mDoLib_clipper::getFovyRate() * 10000.0f); s32 clip = mDoLib_clipper::clip(j3dSys.getViewMtx(), &local_98, &local_8c); mDoLib_clipper::resetFar(); if (clip) { return FALSE; } shdwDrawPoly.Set(local_8c, local_98); shdwDrawPoly.SetCallback(psdRealCallBack); shdwDrawPoly.setCenter(param_0); shdwDrawPoly.setLightVec(param_3); shdwDrawPoly.setPoly(param_4); dComIfG_Bgsp().ShdwDraw(&shdwDrawPoly); return TRUE; } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm BOOL realPolygonCheck(cXyz* param_0, f32 param_1, f32 param_2, cXyz* param_3, dDlst_shadowPoly_c* param_4) { nofralloc #include "asm/d/d_drawlist/realPolygonCheck__FP4cXyzffP4cXyzP18dDlst_shadowPoly_c.s" } #pragma pop #endif /* 80054A6C-80054ACC 04F3AC 0060+00 1/0 0/0 0/0 .text __dt__14ShdwDrawPoly_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm ShdwDrawPoly_c::~ShdwDrawPoly_c() { extern "C" asm void __dt__14ShdwDrawPoly_cFv() { nofralloc #include "asm/d/d_drawlist/__dt__14ShdwDrawPoly_cFv.s" } #pragma pop /* ############################################################################################## */ /* 80452068-8045206C 000668 0004+00 1/1 0/0 0/0 .sdata2 @5155 */ SECTION_SDATA2 static f32 lit_5155 = 15.0f; /* 8045206C-80452070 00066C 0004+00 1/1 0/0 0/0 .sdata2 @5156 */ SECTION_SDATA2 static f32 lit_5156 = 13.0f / 20.0f; /* 80054ACC-80054BD0 04F40C 0104+00 2/2 0/0 0/0 .text setkankyoShadow__FP12dKy_tevstr_cPf */ // matches with literals #ifdef NONMATCHING static void setkankyoShadow(dKy_tevstr_c* param_0, f32* param_1) { dScnKy_env_light_c* env_light = dKy_getEnvlight(); if (param_0 != NULL) { *param_1 *= param_0->field_0x344; } else { *param_1 *= env_light->field_0x1238; } if ((env_light->mShadowMode & 4) && param_0 != NULL) { *param_1 *= param_0->field_0x344; } if (env_light->mThunderEff.mStateTimer != 0 && env_light->mThunderEff.mStateTimer < 10) { *param_1 += env_light->mThunderEff.field_0x8; } if (g_env_light.mSwordLight.mState == 2) { f32 fvar1 = g_env_light.mSwordLight.mFrame / 15.0f; if (fvar1 > 1.0f) { fvar1 = 1.0f; } *param_1 += (1.0f - fvar1) * (0.65f - *param_1); } if (*param_1 > 1.0f) { *param_1 = 1.0f; } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off static asm void setkankyoShadow(dKy_tevstr_c* param_0, f32* param_1) { nofralloc #include "asm/d/d_drawlist/setkankyoShadow__FP12dKy_tevstr_cPf.s" } #pragma pop #endif /* ############################################################################################## */ /* 80452070-80452074 000670 0004+00 1/1 0/0 0/0 .sdata2 @5267 */ SECTION_SDATA2 static f32 lit_5267 = 50.0f; /* 80452074-80452078 000674 0004+00 1/1 0/0 0/0 .sdata2 @5268 */ SECTION_SDATA2 static f32 lit_5268 = 4.0f / 5.0f; /* 80452078-80452080 000678 0004+04 1/1 0/0 0/0 .sdata2 @5269 */ SECTION_SDATA2 static f32 lit_5269[1 + 1 /* padding */] = { 255.0f, /* padding */ 0.0f, }; /* 80452080-80452088 000680 0008+00 1/1 0/0 0/0 .sdata2 @5270 */ SECTION_SDATA2 static f64 lit_5270 = 0.5; /* 80452088-80452090 000688 0008+00 1/1 0/0 0/0 .sdata2 @5271 */ SECTION_SDATA2 static f64 lit_5271 = 3.0; /* 80452090-80452098 000690 0008+00 1/1 0/0 0/0 .sdata2 @5272 */ SECTION_SDATA2 static u8 lit_5272[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, }; /* 80452098-8045209C 000698 0004+00 1/1 0/0 0/0 .sdata2 @5273 */ SECTION_SDATA2 static f32 lit_5273 = 2.0f / 5.0f; /* 8045209C-804520A0 00069C 0004+00 1/1 0/0 0/0 .sdata2 @5274 */ SECTION_SDATA2 static f32 lit_5274 = -1.0f; /* 804520A0-804520A4 0006A0 0004+00 1/1 0/0 0/0 .sdata2 @5275 */ SECTION_SDATA2 static f32 lit_5275 = -0.5f; /* 80054BD0-80055028 04F510 0458+00 1/1 0/0 0/0 .text * setShadowRealMtx__18dDlst_shadowReal_cFP4cXyzP4cXyzfffP12dKy_tevstr_c */ // Matches with literals #ifdef NONMATCHING u8 dDlst_shadowReal_c::setShadowRealMtx(cXyz* param_0, cXyz* param_1, f32 param_2, f32 param_3, f32 param_4, dKy_tevstr_c* param_5) { mShadowRealPoly.reset(); setkankyoShadow(param_5, ¶m_4); int r29 = g_envHIO.mOther.mShadowDensity * param_4; cXyz local_64 = *param_0 - *param_1; u8 r28 = 0; if (param_5) { cLib_chaseUC(¶m_5->field_0x385, param_3 > 50.0f ? 0 : 0xff, 60); r28 = param_5->field_0x385; } f32 f29 = local_64.abs2(); if (!cM3d_IsZero(f29)) { f32 tmp = JMAFastSqrt(f29); if (local_64.y / tmp < 0.8f) { local_64.y = tmp * 0.8f; f32 tmp2 = local_64.abs2XZ(); if (!cM3d_IsZero(tmp2)) { f32 tmp3 = JMAFastSqrt((f29 - local_64.y * local_64.y) / tmp2); local_64.x *= tmp3; local_64.z *= tmp3; } } if (r28 == 0) { local_64.x = 0.0f; local_64.z = 0.0f; } else if (r28 < 0xff) { f32 tmp4 = r28 / 255.0f; local_64.x *= tmp4; local_64.z *= tmp4; } f29 = local_64.abs(); if (!cM3d_IsZero(f29)) { f29 = (param_2 * 0.5f) / f29; } } local_64 *= f29; local_64 += *param_1; param_2 = param_2 * 0.4f; cXyz local_70 = *param_1 - local_64; if (local_70.isZero()) { local_70.y = -1.0f; local_64.y = param_1->y + 1.0f; } else { local_70.normalize(); } if (!realPolygonCheck(param_1, param_2, param_3, &local_70, &mShadowRealPoly)) { return 0; } cMtx_lookAt(mViewMtx, &local_64, param_1, 0); C_MTXOrtho(mRenderProjMtx, param_2, -param_2, -param_2, param_2, 1.0f, 10000.0f); C_MTXLightOrtho(mReceiverProjMtx, param_2, -param_2, -param_2, param_2, 0.5f, -0.5f, 0.5f, 0.5f); cMtx_concat(mReceiverProjMtx, mViewMtx, mReceiverProjMtx); return r29; } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm u8 dDlst_shadowReal_c::setShadowRealMtx(cXyz* param_0, cXyz* param_1, f32 param_2, f32 param_3, f32 param_4, dKy_tevstr_c* param_5) { nofralloc #include "asm/d/d_drawlist/setShadowRealMtx__18dDlst_shadowReal_cFP4cXyzP4cXyzfffP12dKy_tevstr_c.s" } #pragma pop #endif /* 80055028-800551D4 04F968 01AC+00 1/1 0/0 0/0 .text * set__18dDlst_shadowReal_cFUlP8J3DModelP4cXyzffP12dKy_tevstr_cff */ u32 dDlst_shadowReal_c::set(u32 i_key, J3DModel* i_model, cXyz* param_2, f32 param_3, f32 param_4, dKy_tevstr_c* param_5, f32 i_cameraZ, f32 param_7) { dScnKy_env_light_c* env_light = dKy_getEnvlight(); if (mModelNum == 0) { cXyz sp60; if (param_5 != NULL) { sp60 = param_5->mLightPosWorld; } else { sp60 = dKy_plight_near_pos(); if (!(env_light->mShadowMode & 4) && ((env_light->mShadowMode & 1) || (env_light->mShadowMode & 2))) { sp60 = g_env_light.field_0x10a0; param_5->mLightPosWorld = g_env_light.field_0x10a0; } } field_0x1 = setShadowRealMtx(&sp60, param_2, param_3, param_4, param_7, param_5); if (!field_0x1) { return 0; } mState = 1; mKey = i_key; mModelNum = 0; mCameraZ = i_cameraZ; mZsortPre = NULL; mZsortNext = NULL; } u8 last_model_num = mModelNum; mModelNum++; mpModels[last_model_num] = i_model; return mKey; } /* 800551D4-8005520C 04FB14 0038+00 1/1 0/0 0/0 .text add__18dDlst_shadowReal_cFP8J3DModel */ bool dDlst_shadowReal_c::add(J3DModel* i_model) { u8 cur_model_num = mModelNum; if (cur_model_num == 0 || i_model == NULL) { return false; } mModelNum++; mpModels[cur_model_num] = i_model; return true; } /* 8005520C-800553EC 04FB4C 01E0+00 1/1 0/0 0/0 .text draw__20dDlst_shadowSimple_cFv */ void dDlst_shadowSimple_c::draw() { static GXColor l_color = {0, 0, 0, 64}; l_color.a = mAlpha; GXSetTevColor(GX_TEVREG0, l_color); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX8); GXLoadPosMtxImm(mVolumeMtx, GX_PNMTX0); GXSetCurrentMtx(GX_PNMTX0); GXCallDisplayList(l_frontMat, 0x40); GXCallDisplayList(l_shadowVolumeDL, 0x40); GXCallDisplayList(l_backSubMat, 0x20); GXCallDisplayList(l_shadowVolumeDL, 0x40); GXLoadPosMtxImm(mMtx, GX_PNMTX1); GXSetCurrentMtx(GX_PNMTX1); if (mpTexObj != NULL) { GXLoadTexObj(mpTexObj, GX_TEXMAP0); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX8); GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT); GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO); GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_A2, GX_CA_ZERO); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); if (GXGetTexObjWidth(mpTexObj) == GXGetTexObjHeight(mpTexObj)) { GXCallDisplayList(l_shadowSealTexDL, 0x40); } else { GXCallDisplayList(l_shadowSealTex2DL, 0x40); } } GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX8); GXCallDisplayList(l_shadowSealDL, 0x60); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX8); GXSetCurrentMtx(GX_PNMTX0); GXCallDisplayList(l_clearMat, 0x40); GXCallDisplayList(l_shadowVolumeDL, 0x40); } /* ############################################################################################## */ /* 804520A4-804520A8 0006A4 0004+00 1/1 0/0 0/0 .sdata2 @5375 */ SECTION_SDATA2 static f32 lit_5375 = -255.0f; /* 804520A8-804520AC 0006A8 0004+00 1/1 0/0 0/0 .sdata2 @5376 */ SECTION_SDATA2 static f32 lit_5376 = 0.000699999975040555f; /* 804520AC-804520B0 0006AC 0004+00 1/1 0/0 0/0 .sdata2 @5377 */ SECTION_SDATA2 static f32 lit_5377 = 7.0f / 5.0f; /* 804520B0-804520B4 0006B0 0004+00 1/1 0/0 0/0 .sdata2 @5378 */ SECTION_SDATA2 static f32 lit_5378 = 16.0f; /* 800553EC-80055684 04FD2C 0298+00 1/1 0/0 0/0 .text * set__20dDlst_shadowSimple_cFP4cXyzffP4cXyzsfP9_GXTexObj */ // Matches with literals #ifdef NONMATCHING void dDlst_shadowSimple_c::set(cXyz* param_0, f32 param_1, f32 param_2, cXyz* param_3, s16 param_4, f32 param_5, _GXTexObj* param_6) { if (param_5 < 0.0f) { mAlpha = param_5 * -255.0f; param_5 = 1.0f; } else { float local_a4 = 1.0f - (param_0->y - param_1) * 0.0007f; if (local_a4 < 0.0f) { local_a4 = 0.0f; } else if (local_a4 > 1.0f) { local_a4 = 1.0f; } setkankyoShadow(NULL, &local_a4); local_a4 *= 1.4f; if (local_a4 > 1.0f) { local_a4 = 1.0f; } mAlpha = g_envHIO.mOther.mShadowDensity * local_a4; } f32 f30 = param_2 * 16.0f * (1.0f - param_3->y) + 2.0f; mDoMtx_stack_c::transS(param_0->x, param_1 + f30, param_0->z); mDoMtx_stack_c::YrotM(param_4); mDoMtx_stack_c::scaleM(param_2, f30 + f30 + 16.0f, param_2 * param_5); cMtx_concat(j3dSys.getViewMtx(), mDoMtx_stack_c::get(), mVolumeMtx); f32 f31 = JMAFastSqrt(1.0f - param_3->x * param_3->x); f32 f29; f32 f28; if (0.0f != f31) { f29 = param_3->y * f31; f28 = -param_3->z * f31; } else { f29 = 0.0f; f28 = 0.0f; } mDoMtx_stack_c::get()[0][0] = f31; mDoMtx_stack_c::get()[0][1] = param_3->x; mDoMtx_stack_c::get()[0][2] = 0.0f; mDoMtx_stack_c::get()[0][3] = param_0->x; mDoMtx_stack_c::get()[1][0] = -param_3->x * f29; mDoMtx_stack_c::get()[1][1] = param_3->y; mDoMtx_stack_c::get()[1][2] = f28; mDoMtx_stack_c::get()[1][3] = param_1; mDoMtx_stack_c::get()[2][0] = param_3->x * f28; mDoMtx_stack_c::get()[2][1] = param_3->z; mDoMtx_stack_c::get()[2][2] = f29; mDoMtx_stack_c::get()[2][3] = param_0->z; mDoMtx_stack_c::YrotM(param_4); mDoMtx_stack_c::scaleM(param_2, 1.0f, param_2 * param_5); cMtx_concat(j3dSys.getViewMtx(), mDoMtx_stack_c::get(), mMtx); mpTexObj = param_6; } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dDlst_shadowSimple_c::set(cXyz* param_0, f32 param_1, f32 param_2, cXyz* param_3, s16 param_4, f32 param_5, _GXTexObj* param_6) { nofralloc #include "asm/d/d_drawlist/set__20dDlst_shadowSimple_cFP4cXyzffP4cXyzsfP9_GXTexObj.s" } #pragma pop #endif /* ############################################################################################## */ /* 80450654-80450658 0000D4 0004+00 1/1 0/0 0/0 .sdata l_realImageSize$5383 */ SECTION_SDATA static u16 l_realImageSize[2] = {192, 64}; /* 80055684-80055768 04FFC4 00E4+00 1/1 0/0 0/0 .text init__21dDlst_shadowControl_cFv */ // matches with literals #ifdef NONMATCHING void dDlst_shadowControl_c::init() { for (int i = 0; i < 2; i++) { u16 size = l_realImageSize[i]; u32 buffer_size = GXGetTexBufferSize(size, size, 5, GX_DISABLE, 0); field_0x15ef0[i] = new (0x20) u8[buffer_size]; GXInitTexObj(&field_0x15eb0[i], field_0x15ef0[i], size, size, GX_TF_TGB5A3, GX_CLAMP, GX_CLAMP, GX_DISABLE); GXInitTexObjLOD(&field_0x15eb0[i], GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, GX_FALSE, GX_FALSE, GX_ANISO_1); } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dDlst_shadowControl_c::init() { nofralloc #include "asm/d/d_drawlist/init__21dDlst_shadowControl_cFv.s" } #pragma pop #endif /* 80055768-800557C8 0500A8 0060+00 1/1 0/0 0/0 .text reset__21dDlst_shadowControl_cFv */ void dDlst_shadowControl_c::reset() { dDlst_shadowReal_c* shadowReal = mReal; for (int i = 0; i < 8; i++) { shadowReal->reset(); shadowReal++; } mSimpleNum = 0; mRealNum = 0; field_0x4 = NULL; } /* 800557C8-80055A14 050108 024C+00 0/0 1/1 0/0 .text imageDraw__21dDlst_shadowControl_cFPA4_f */ // matches with literals #ifdef NONMATCHING void dDlst_shadowControl_c::imageDraw(Mtx param_0) { GXCallDisplayList(l_matDL, 0x60); GXSetZMode(GX_DISABLE, GX_LEQUAL, GX_DISABLE); GXSetZCompLoc(GX_TRUE); GXSetBlendMode(GX_BM_LOGIC, GX_BL_ONE, GX_BL_ONE, GX_LO_OR); GXSetClipMode(GX_CLIP_DISABLE); j3dSys.setDrawModeOpaTexEdge(); J3DShape::resetVcdVatCache(); dDlst_shadowReal_c* shadowReal = field_0x4; int r29 = 0; int tex = 0; u16 r27; u16 r26; for (; shadowReal; shadowReal = shadowReal->getZsortNext()) { if (shadowReal->isUse()) { if (r29 == 0) { r27 = GXGetTexObjWidth(field_0x15eb0 + tex); r26 = r27 * 2; GXSetViewport(0.0f, 0.0f, r26, r26, 0.0f, 1.0f); GXSetScissor(0, 0, r26, r26); } GXSetTevColor(GX_TEVREG0, l_imageDrawColor[r29]); if (r29 == 3) { GXSetColorUpdate(GX_DISABLE); GXSetAlphaUpdate(GX_ENABLE); } shadowReal->imageDraw(param_0); r29 = (r29 + 1) % 4; if (r29 == 0) { GXSetTexCopySrc(0, 0, r26, r26); GXSetTexCopyDst(r27, r27, GX_TF_TGB5A3, GX_TRUE); GXSetColorUpdate(GX_ENABLE); GXCopyTex(field_0x15ef0[tex++], GX_TRUE); GXPixModeSync(); GXSetAlphaUpdate(GX_DISABLE); } } } if (r29) { GXSetTexCopySrc(0, 0, r26, r26); GXSetTexCopyDst(r27, r27, GX_TF_TGB5A3, GX_TRUE); GXCopyTex(field_0x15ef0[tex], GX_TRUE); GXPixModeSync(); GXSetAlphaUpdate(GX_DISABLE); } GXSetClipMode(GX_CLIP_ENABLE); GXSetDither(GX_TRUE); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dDlst_shadowControl_c::imageDraw(Mtx param_0) { nofralloc #include "asm/d/d_drawlist/imageDraw__21dDlst_shadowControl_cFPA4_f.s" } #pragma pop #endif /* ############################################################################################## */ /* 80450658-8045065C 0000D8 0004+00 1/1 0/0 0/0 .sdata clearColor$5435 */ SECTION_SDATA static GXColor clearColor = {0x00, 0x00, 0x00, 0x40}; /* 804520B4-804520B8 0006B4 0004+00 1/1 0/0 0/0 .sdata2 @5433 */ SECTION_SDATA2 static u32 lit_5433 = 0x00000020; /* 80055A14-80055C74 050354 0260+00 0/0 1/1 0/0 .text draw__21dDlst_shadowControl_cFPA4_f */ // Matches with literals #ifdef NONMATCHING void dDlst_shadowControl_c::draw(Mtx param_0) { j3dSys.reinitGX(); GXSetNumIndStages(0); dKy_GxFog_set(); GXSetChanCtrl(GX_ALPHA0, GX_DISABLE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE); GXSetArray(GX_VA_POS, l_shadowVolPos, 12); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX3x4, GX_TG_POS, GX_TEXMTX0); GXSetNumTevStages(1); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); GXLoadPosMtxImm(param_0, GX_PNMTX0); GXColor matColor = {0, 0, 0, 0x20}; GXSetChanMatColor(GX_ALPHA0, matColor); clearColor.a = mDoGph_gInf_c::getBackColor().a; GXSetTevColor(GX_TEVREG1, clearColor); GXSetTevColor(GX_TEVREG2, g_whiteColor); dDlst_shadowReal_c* real = field_0x4; for (int i2 = 0, i3 = 0; real != NULL; real = real->getZsortNext()) { if (real->isUse()) { if (i2 == 0) { GXTexObj* obj = &field_0x15eb0[i3]; i3++; GXLoadTexObj(obj, GX_TEXMAP0); } GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, l_tevColorChan[i2]); real->draw(); i2 = (i2 + 1) % 4; } } GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_RGB8, 0); GXSetArray(GX_VA_POS, l_simpleShadowPos, 12); GXSetTexCoordGen(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, GX_IDENTITY); GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, GX_TEXMAP0, GX_COLOR_NULL); GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0); dDlst_shadowSimple_c* simple = mSimple; for (int i = 0; i < mSimpleNum; i++) { simple->draw(); simple++; } GXSetColorUpdate(GX_ENABLE); GXSetAlphaUpdate(GX_DISABLE); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dDlst_shadowControl_c::draw(Mtx param_0) { nofralloc #include "asm/d/d_drawlist/draw__21dDlst_shadowControl_cFPA4_f.s" } #pragma pop #endif /* ############################################################################################## */ /* 804520B8-804520BC 0006B8 0004+00 1/1 0/0 0/0 .sdata2 @5551 */ SECTION_SDATA2 static f32 lit_5551 = 0.003000000026077032f; /* 804520BC-804520C0 0006BC 0004+00 1/1 0/0 0/0 .sdata2 @5552 */ SECTION_SDATA2 static f32 lit_5552 = -1000.0f; /* 804520C0-804520C4 0006C0 0004+00 1/1 0/0 0/0 .sdata2 @5553 */ SECTION_SDATA2 static f32 lit_5553 = 0.0010000000474974513f; /* 80055C74-80055F1C 0505B4 02A8+00 0/0 1/1 1/1 .text * setReal__21dDlst_shadowControl_cFUlScP8J3DModelP4cXyzffP12dKy_tevstr_c */ // Matches with literals #ifdef NONMATCHING int dDlst_shadowControl_c::setReal(u32 param_1, s8 param_2, J3DModel* param_3, cXyz* param_4, f32 param_5, f32 param_6, dKy_tevstr_c* param_7) { f32 fVar1; f32 dVar16 = (param_2 == 0) ? 1.0f : (1.0f - 0.003000000026077032f * param_6); if (dVar16 <= 0.0f) { return 0; } if (dVar16 > 1.0f) { dVar16 = 1.0f; } cXyz acStack_94; cMtx_multVec(j3dSys.getViewMtx(), param_4, &acStack_94); if ((acStack_94.z - param_5) >= 0.0f) { return 0; } f32 dVar17 = acStack_94.z + param_5; if (dVar17 < -1000.0f) { f32 fVar1 = 0.0010000000474974513f * (-1000.0f - dVar17); if (fVar1 >= 1.0f) { return 0; } dVar16 = (dVar16 * (1.0f - fVar1)); } if (param_2 == 0) { dVar17 = FLT_MAX; } dDlst_shadowReal_c* pdVar11; dDlst_shadowReal_c* pdVar10 = NULL; dDlst_shadowReal_c* local_98 = field_0x4; pdVar11 = NULL; while (local_98 != NULL) { pdVar11 = local_98; if (dVar17 > local_98->getCameraZ()) { pdVar10 = local_98; local_98 = NULL; } else { local_98 = local_98->getZsortNext(); } } dDlst_shadowReal_c* pdVar12; if (mRealNum >= 8) { if (pdVar10 == NULL) { return 0; } pdVar12 = field_0x8; field_0x8 = pdVar12->getZsortPre(); field_0x8->setZsortNext(NULL); if (pdVar12 == pdVar10) { pdVar10 = NULL; pdVar11 = field_0x8; } pdVar12->reset(); mRealNum--; } else { pdVar12 = mReal; for (int i = 0; i < 8; i++, pdVar12++) { if (pdVar12->isNoUse()) { break; } } } do { } while (++mNextID == 0); u32 rv = pdVar12->set(mNextID, param_3, param_4, param_5, param_6, param_7, dVar17, dVar16); if (!rv) { return 0; } mRealNum++; if (pdVar10 == NULL) { if (pdVar11 == NULL) { field_0x4 = pdVar12; } else { pdVar11->setZsortNext(pdVar12); pdVar12->setZsortPre(pdVar11); } field_0x8 = pdVar12; } else { pdVar11 = pdVar10->getZsortPre(); if (pdVar11 == NULL) { field_0x4 = pdVar12; } else { pdVar11->setZsortNext(pdVar12); pdVar12->setZsortPre(pdVar11); } pdVar12->setZsortNext(pdVar10); pdVar10->setZsortPre(pdVar12); } return rv; } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm int dDlst_shadowControl_c::setReal(u32 param_0, s8 param_1, J3DModel* param_2, cXyz* param_3, f32 param_4, f32 param_5, dKy_tevstr_c* param_6) { nofralloc #include "asm/d/d_drawlist/setReal__21dDlst_shadowControl_cFUlScP8J3DModelP4cXyzffP12dKy_tevstr_c.s" } #pragma pop #endif /* 80055F1C-80055F84 05085C 0068+00 0/0 1/1 45/45 .text * addReal__21dDlst_shadowControl_cFUlP8J3DModel */ bool dDlst_shadowControl_c::addReal(u32 i_key, J3DModel* param_1) { if (i_key == 0) { return false; } for (dDlst_shadowReal_c* i = field_0x4; i != NULL; i = i->getZsortNext()) { if (!i->isNoUse() && i->checkKey(i_key)) { return i->add(param_1); } } return false; } /* 80055F84-80055FE8 0508C4 0064+00 0/0 1/1 10/10 .text * setSimple__21dDlst_shadowControl_cFP4cXyzffP4cXyzsfP9_GXTexObj */ int dDlst_shadowControl_c::setSimple(cXyz* param_0, f32 param_1, f32 param_2, cXyz* param_3, s16 param_4, f32 param_5, GXTexObj* param_6) { if (param_3 == NULL || mSimpleNum >= 128) { return 0; } mSimple[mSimpleNum].set(param_0, param_1, param_2, param_3, param_4, param_5, param_6); mSimpleNum++; return 1; } /* ############################################################################################## */ /* 804248D0-804248F0 0515F0 0020+00 1/1 6/6 173/173 .bss mSimpleTexObj__21dDlst_shadowControl_c */ GXTexObj dDlst_shadowControl_c::mSimpleTexObj; /* 80055FE8-80056018 050928 0030+00 0/0 1/1 0/0 .text * setSimpleTex__21dDlst_shadowControl_cFPC7ResTIMG */ void dDlst_shadowControl_c::setSimpleTex(ResTIMG const* i_timg) { mDoLib_setResTimgObj(i_timg, &mSimpleTexObj, 0, NULL); } /* 80056018-80056080 050958 0068+00 0/0 3/3 9/9 .text newData__13dDlst_peekZ_cFssPUl */ int dDlst_peekZ_c::newData(s16 x, s16 y, u32* dst) { if (mCount >= 64 || x < 0 || x > 607 || y < 0 || y > 447) { return 0; } dDlst_peekZ_entry* entry = &mEntries[mCount]; entry->x = x; entry->y = y; entry->dst = dst; mCount++; return 1; } /* 80056080-800560F0 0509C0 0070+00 0/0 1/1 0/0 .text peekData__13dDlst_peekZ_cFv */ void dDlst_peekZ_c::peekData() { dDlst_peekZ_entry* entry = mEntries; for (int i = 0; i < mCount; i++) { GXPeekZ(entry->x, entry->y, entry->dst); entry++; } mCount = 0; } /* 800560F0-800561C8 050A30 00D8+00 0/0 1/1 0/0 .text __ct__12dDlst_list_cFv */ // TU vtable data order has to be fixed #ifdef NONMATCHING dDlst_list_c::dDlst_list_c() { mpCopy2DEnd = &mpCopy2DDrawLists[4]; mp2DOpaTopEnd = &mp2DOpaTopDrawLists[16]; mp2DOpaEnd = &mp2DOpaDrawLists[64]; mp2DXluEnd = &mp2DXluDrawLists[32]; J3DDrawBuffer** buffer = mDrawBuffers; for (int i = 0; i < 21; i++) { *buffer = NULL; buffer++; } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm dDlst_list_c::dDlst_list_c() { nofralloc #include "asm/d/d_drawlist/__ct__12dDlst_list_cFv.s" } #pragma pop #endif /* 800561C8-800561F8 050B08 0030+00 1/1 0/0 0/0 .text __ct__26mDoExt_3DlineMatSortPacketFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm mDoExt_3DlineMatSortPacket::mDoExt_3DlineMatSortPacket() { extern "C" asm void __ct__26mDoExt_3DlineMatSortPacketFv() { nofralloc #include "asm/d/d_drawlist/__ct__26mDoExt_3DlineMatSortPacketFv.s" } #pragma pop /* 800561F8-80056270 050B38 0078+00 2/2 0/0 0/0 .text __dt__18dDlst_shadowReal_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm dDlst_shadowReal_c::~dDlst_shadowReal_c() { extern "C" asm void __dt__18dDlst_shadowReal_cFv() { nofralloc #include "asm/d/d_drawlist/__dt__18dDlst_shadowReal_cFv.s" } #pragma pop /* 80056270-800562D0 050BB0 0060+00 2/2 0/0 0/0 .text __dt__17dDlst_shadowTri_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm dDlst_shadowTri_c::~dDlst_shadowTri_c() { extern "C" asm void __dt__17dDlst_shadowTri_cFv() { nofralloc #include "asm/d/d_drawlist/__dt__17dDlst_shadowTri_cFv.s" } #pragma pop /* 800562D0-80056344 050C10 0074+00 1/1 0/0 0/0 .text __ct__18dDlst_shadowReal_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm dDlst_shadowReal_c::dDlst_shadowReal_c() { extern "C" asm void __ct__18dDlst_shadowReal_cFv() { nofralloc #include "asm/d/d_drawlist/__ct__18dDlst_shadowReal_cFv.s" } #pragma pop /* 80056344-8005638C 050C84 0048+00 1/1 0/0 0/0 .text __ct__17dDlst_shadowTri_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm dDlst_shadowTri_c::dDlst_shadowTri_c() { extern "C" asm void __ct__17dDlst_shadowTri_cFv() { nofralloc #include "asm/d/d_drawlist/__ct__17dDlst_shadowTri_cFv.s" } #pragma pop /* 8005638C-80056390 050CCC 0004+00 1/1 0/0 0/0 .text __ct__20dDlst_shadowSimple_cFv */ dDlst_shadowSimple_c::dDlst_shadowSimple_c() {} /* ############################################################################################## */ /* 8037A178-8037A1A4 0067D8 002A+02 1/1 0/0 0/0 .rodata l_drawlistSize$5656 */ static u16 const l_drawlistSize[21] = { 0x0001, 0x0001, 0x0001, 0x0080, 0x0001, 0x0001, 0x0001, 0x0080, 0x0100, 0x0001, 0x0100, 0x0001, 0x0020, 0x0010, 0x0010, 0x0020, 0x0020, 0x0100, 0x0001, 0x0004, 0x0004, }; /* 8037A1A4-8037A1B0 006804 0009+03 1/1 0/0 0/0 .rodata l_nonSortId$5662 */ static u8 const l_nonSortId[9] = { 0x00, 0x01, 0x02, 0x04, 0x05, 0x06, 0x09, 0x12, 0x0D, }; /* 804520C4-804520CC 0006C4 0006+02 1/1 0/0 0/0 .sdata2 l_zSortId$5668 */ static const u8 l_zSortId[6] = { 0x08, 0x0A, 0x0C, 0x0E, 0x10, 0x11, }; /* 80056390-8005648C 050CD0 00FC+00 0/0 1/1 0/0 .text init__12dDlst_list_cFv */ void dDlst_list_c::init() { J3DDrawBuffer** var_r30 = mDrawBuffers; const u16* var_r29 = l_drawlistSize; for (int i = 0; i < 21; i++) { *var_r30 = J3DDrawBuffer__create(*var_r29++); var_r30++; } const u8* var_r5 = l_nonSortId; for (int i = 0; i < 9; i++) { mDrawBuffers[*var_r5++]->setNonSort(); } const u8* var_r5_2 = l_zSortId; for (int i = 0; i < 6; i++) { mDrawBuffers[*var_r5_2++]->setZSort(); } setOpaList(); setXluList(); mpCopy2DStart = mpCopy2DDrawLists; mp2DOpaTopStart = mp2DOpaTopDrawLists; mp2DOpaStart = mp2DOpaDrawLists; mp2DXluStart = mp2DXluDrawLists; mShadowControl.init(); } /* 8005648C-80056538 050DCC 00AC+00 0/0 1/1 0/0 .text __dt__12dDlst_list_cFv */ // TU vtable data order has to be fixed #ifdef NONMATCHING dDlst_list_c::~dDlst_list_c() { J3DDrawBuffer** buffer = mDrawBuffers; for (int i = 0; i < 21; i++) { J3DDrawBuffer* tmp = *buffer; buffer++; delete tmp; } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm dDlst_list_c::~dDlst_list_c() { nofralloc #include "asm/d/d_drawlist/__dt__12dDlst_list_cFv.s" } #pragma pop #endif /* 80056538-800565EC 050E78 00B4+00 0/0 1/1 0/0 .text reset__12dDlst_list_cFv */ void dDlst_list_c::reset() { J3DDrawBuffer** buffer = mDrawBuffers; for (int i = 0; i < 21; i++) { J3DDrawBuffer* tmp = *buffer; buffer++; tmp->frameInit(); } setOpaList(); setXluList(); mpCopy2DStart = mpCopy2DDrawLists; mp2DOpaTopStart = mp2DOpaTopDrawLists; mp2DOpaStart = mp2DOpaDrawLists; mp2DXluStart = mp2DXluDrawLists; mShadowControl.reset(); for (int i = 0; i < 3; i++) { m3DLineMatSortPacket[i].reset(); } } /* ############################################################################################## */ /* 804520CC-804520D0 0006CC 0004+00 1/1 0/0 0/0 .sdata2 @5747 */ SECTION_SDATA2 static f32 lit_5747 = 9999.0f; /* 800565EC-800566D4 050F2C 00E8+00 0/0 2/2 0/0 .text * entryZSortXluDrawList__12dDlst_list_cFP13J3DDrawBufferP9J3DPacketR4cXyz */ // Matches with literals #ifdef NONMATCHING void dDlst_list_c::entryZSortXluDrawList(J3DDrawBuffer* param_0, J3DPacket* param_1, cXyz& param_2) { f32 z_value = -J3DCalcZValue(j3dSys.getViewMtx(), param_2); u32 size = param_0->getEntryTableSize(); f32 fsize = size; fsize = 9999.0f / fsize; u16 var_r0; if (fsize + 1.0f < z_value) { if (10000.0f - fsize > z_value) { var_r0 = z_value / fsize; } else { var_r0 = size - 1; } } else { var_r0 = 0; } var_r0 = (size - 1) - var_r0; param_0->entryImm(param_1, var_r0); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dDlst_list_c::entryZSortXluDrawList(J3DDrawBuffer* param_0, J3DPacket* param_1, cXyz& param_2) { nofralloc #include "asm/d/d_drawlist/entryZSortXluDrawList__12dDlst_list_cFP13J3DDrawBufferP9J3DPacketR4cXyz.s" } #pragma pop #endif /* 800566D4-80056710 051014 003C+00 1/1 1/1 0/0 .text * drawOpaDrawList__12dDlst_list_cFP13J3DDrawBuffer */ void dDlst_list_c::drawOpaDrawList(J3DDrawBuffer* pDrawBuf) { J3DShape::resetVcdVatCache(); j3dSys.setDrawModeOpaTexEdge(); pDrawBuf->draw(); } /* 80056710-8005674C 051050 003C+00 1/1 1/1 0/0 .text * drawXluDrawList__12dDlst_list_cFP13J3DDrawBuffer */ void dDlst_list_c::drawXluDrawList(J3DDrawBuffer* pDrawBuf) { J3DShape::resetVcdVatCache(); j3dSys.setDrawModeXlu(); pDrawBuf->draw(); } /* 8005674C-80056770 05108C 0024+00 0/0 1/1 0/0 .text drawOpaListItem3d__12dDlst_list_cFv */ void dDlst_list_c::drawOpaListItem3d() { drawOpaDrawList(mDrawBuffers[DB_OPA_LIST_ITEM3D]); } /* 80056770-80056794 0510B0 0024+00 0/0 1/1 0/0 .text drawXluListItem3d__12dDlst_list_cFv */ void dDlst_list_c::drawXluListItem3d() { drawXluDrawList(mDrawBuffers[DB_XLU_LIST_ITEM3D]); } /* 80056794-800567C4 0510D4 0030+00 2/2 35/35 6/6 .text * set__12dDlst_list_cFRPP12dDlst_base_cRPP12dDlst_base_cP12dDlst_base_c */ int dDlst_list_c::set(dDlst_base_c**& p_start, dDlst_base_c**& p_end, dDlst_base_c* p_newDlst) { if (p_start >= p_end) { return 0; } *p_start = p_newDlst; *p_start++; return 1; } /* 800567C4-8005681C 051104 0058+00 0/0 1/1 0/0 .text * draw__12dDlst_list_cFPP12dDlst_base_cPP12dDlst_base_c */ void dDlst_list_c::draw(dDlst_base_c** p_start, dDlst_base_c** p_end) { for (; p_start < p_end; p_start++) { dDlst_base_c* dlst = *p_start; dlst->draw(); } } /* ############################################################################################## */ /* 8037A1B0-8037A1B0 006810 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ #pragma push #pragma force_active on SECTION_DEAD static char const* const stringBase_8037A1B0 = "wipe_00.bti"; /* @stringBase0 padding */ SECTION_DEAD static char const* const pad_8037A1BC = "\0\0\0"; #pragma pop /* 804248F0-80424938 051610 0048+00 3/3 0/0 0/0 .bss mWipeDlst__12dDlst_list_c */ dDlst_2DT2_c dDlst_list_c::mWipeDlst; /* 8045065C-80450660 0000DC 0004+00 1/1 0/0 0/0 .sdata mWipeColor__12dDlst_list_c */ GXColor dDlst_list_c::mWipeColor = {0, 0, 0, 0}; /* 80450ED0-80450ED4 0003D0 0004+00 2/2 1/1 0/0 .sbss None */ u8 dDlst_list_c::mWipe; /* 80450ED4-80450ED8 0003D4 0004+00 2/2 1/1 0/0 .sbss mWipeRate__12dDlst_list_c */ f32 dDlst_list_c::mWipeRate; /* 80450ED8-80450EE0 0003D8 0004+04 2/2 0/0 0/0 .sbss mWipeSpeed__12dDlst_list_c */ f32 dDlst_list_c::mWipeSpeed; /* 804520D0-804520D4 0006D0 0004+00 1/1 0/0 0/0 .sdata2 @5809 */ SECTION_SDATA2 static f32 lit_5809 = 608.0f; /* 804520D4-804520D8 0006D4 0004+00 1/1 0/0 0/0 .sdata2 @5810 */ SECTION_SDATA2 static f32 lit_5810 = 448.0f; /* 804520D8-804520DC 0006D8 0004+00 1/1 0/0 0/0 .sdata2 @5811 */ SECTION_SDATA2 static f32 lit_5811 = 2.436000108718872f; /* 8005681C-800568D8 05115C 00BC+00 1/1 0/0 0/0 .text wipeIn__12dDlst_list_cFfR8_GXColor */ // matches with literals #ifdef NONMATCHING void dDlst_list_c::wipeIn(f32 i_wipeSpeed, GXColor& i_wipeColor) { mWipe = true; mWipeSpeed = i_wipeSpeed; mWipeColor = i_wipeColor; mWipeRate = i_wipeSpeed >= 0.0f ? 0.0f : 1.0f; JKRArchive* main2d = dComIfGp_getMain2DArchive(); ResTIMG* texture = (ResTIMG*)JKRArchive::getGlbResource('TIMG', "wipe_00.bti", main2d); mWipeDlst.init(texture, mDoGph_gInf_c::getMinX(), mDoGph_gInf_c::getMinY(), mDoGph_gInf_c::getWidth(), mDoGph_gInf_c::getHeight(), 0, 1, 1, 2.0f, 2.436f); } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dDlst_list_c::wipeIn(f32 i_wipeSpeed, GXColor& i_wipeColor) { nofralloc #include "asm/d/d_drawlist/wipeIn__12dDlst_list_cFfR8_GXColor.s" } #pragma pop #endif /* 800568D8-80056900 051218 0028+00 0/0 1/1 0/0 .text wipeIn__12dDlst_list_cFf */ void dDlst_list_c::wipeIn(f32 i_wipeSpeed) { wipeIn(-i_wipeSpeed, g_blackColor); } /* ############################################################################################## */ /* 804520DC-804520E0 0006DC 0004+00 1/1 0/0 0/0 .sdata2 @5838 */ SECTION_SDATA2 static f32 lit_5838 = 1.218000054359436f; /* 80056900-800569A0 051240 00A0+00 0/0 1/1 0/0 .text calcWipe__12dDlst_list_cFv */ // matches with literals #ifdef NONMATCHING void dDlst_list_c::calcWipe() { if (mWipe) { mWipeRate += mWipeSpeed; if (mWipeRate < 0.0f) { mWipeRate = 0.0f; } else if (mWipeRate > 1.0f) { mWipeRate = 1.0f; mWipe = false; } mWipeDlst.setScaleX(mWipeRate * 2.0f); mWipeDlst.setScaleY(mWipeDlst.getScaleX() * 1.218f); dComIfGd_set2DXlu(&mWipeDlst); } } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dDlst_list_c::calcWipe() { nofralloc #include "asm/d/d_drawlist/calcWipe__12dDlst_list_cFv.s" } #pragma pop #endif /* 800569A0-800569A8 0512E0 0008+00 1/0 0/0 0/0 .text getTri__22dDlst_shadowRealPoly_cFv */ // vtable data #ifdef NONMATCHING dDlst_shadowTri_c * dDlst_shadowRealPoly_c::getTri() { return mShadowTri; } #else #pragma push #pragma optimization_level 0 #pragma optimizewithasm off // asm dDlst_shadowTri_c * dDlst_shadowRealPoly_c::getTri() { extern "C" asm dDlst_shadowTri_c * getTri__22dDlst_shadowRealPoly_cFv() { nofralloc #include "asm/d/d_drawlist/getTri__22dDlst_shadowRealPoly_cFv.s" } #pragma pop #endif /* 800569A8-800569B0 0512E8 0008+00 1/0 0/0 0/0 .text getTriMax__22dDlst_shadowRealPoly_cFv */ s32 dDlst_shadowRealPoly_c::getTriMax() { return 256; } /* 800569B0-800569B4 0512F0 0004+00 1/0 7/0 0/0 .text * searchUpdateMaterialID__10J2DAnmBaseFP9J2DScreen */ // void J2DAnmBase::searchUpdateMaterialID(J2DScreen* param_0) { extern "C" void searchUpdateMaterialID__10J2DAnmBaseFP9J2DScreen() { /* empty function */ } /* ############################################################################################## */ /* 803A8E68-803A8E74 005F88 000C+00 0/0 0/0 0/0 .data __vt__11dDlst_2DT_c */ SECTION_DATA extern void* __vt__11dDlst_2DT_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)draw__11dDlst_2DT_cFv, }; /* 803A8E74-803A8E80 005F94 000C+00 0/0 0/0 0/0 .data __vt__15dDlst_2DPoint_c */ SECTION_DATA extern void* __vt__15dDlst_2DPoint_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)draw__15dDlst_2DPoint_cFv, }; /* 803A8E80-803A8E8C 005FA0 000C+00 0/0 0/0 0/0 .data __vt__14dDlst_2DQuad_c */ SECTION_DATA extern void* __vt__14dDlst_2DQuad_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)draw__14dDlst_2DQuad_cFv, }; /* 803A8E8C-803A8E98 005FAC 000C+00 0/0 0/0 0/0 .data __vt__13dDlst_2DTri_c */ SECTION_DATA extern void* __vt__13dDlst_2DTri_c[3] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)draw__13dDlst_2DTri_cFv, };