// // Generated By: dol2asm // Translation Unit: d/map/d_map_path // #include "d/map/d_map_path.h" #include "dol2asm.h" #include "dolphin/types.h" // // Types: // struct dRes_info_c {}; struct dRes_control_c { /* 8003C2EC */ void getRes(char const*, s32, dRes_info_c*, int); }; struct dMpath_n { struct dTexObjAggregate_c { /* 8003C85C */ void create(); /* 8003C8F4 */ void remove(); /* 8003D740 */ ~dTexObjAggregate_c() {remove();}; inline dTexObjAggregate_c() { for(int i = 0;i<7;i++) { mTexObjs[i] = NULL; } } GXTexObj* mTexObjs[7]; }; static dTexObjAggregate_c m_texObjAgg; }; STATIC_ASSERT(sizeof(dMpath_n::dTexObjAggregate_c)==28); // // Forward References: // extern "C" void create__Q28dMpath_n18dTexObjAggregate_cFv(); extern "C" void remove__Q28dMpath_n18dTexObjAggregate_cFv(); extern "C" void rendering__11dDrawPath_cFPCQ211dDrawPath_c10line_class(); extern "C" void rendering__11dDrawPath_cFPCQ211dDrawPath_c10poly_class(); extern "C" void rendering__11dDrawPath_cFPCQ211dDrawPath_c11group_class(); extern "C" void rendering__11dDrawPath_cFPCQ211dDrawPath_c11floor_class(); extern "C" void rendering__11dDrawPath_cFPCQ211dDrawPath_c10room_class(); extern "C" void drawPath__11dDrawPath_cFv(); extern "C" void makeResTIMG__15dRenderingMap_cCFP7ResTIMGUsUsPUcPUcUs(); extern "C" void renderingMap__15dRenderingMap_cFv(); extern "C" void setTevSettingNonTextureDirectColor__18dRenderingFDAmap_cCFv(); extern "C" void setTevSettingIntensityTextureToCI__18dRenderingFDAmap_cCFv(); extern "C" void drawBack__18dRenderingFDAmap_cCFv(); extern "C" void preRenderingMap__18dRenderingFDAmap_cFv(); extern "C" void postRenderingMap__18dRenderingFDAmap_cFv(); extern "C" void renderingDecoration__18dRenderingFDAmap_cFPCQ211dDrawPath_c10line_class(); extern "C" void getDecoLineColor__18dRenderingFDAmap_cFii(); extern "C" void getDecorationLineWidth__18dRenderingFDAmap_cFi(); extern "C" void __sinit_d_map_path_cpp(); extern "C" void __dt__Q28dMpath_n18dTexObjAggregate_cFv(); extern "C" extern char const* const d_map_d_map_path__stringBase0; extern "C" extern void* __vt__18dRenderingFDAmap_c[26]; extern "C" extern void* __vt__11dDrawPath_c[16]; extern "C" u8 m_texObjAgg__8dMpath_n[28]; // // External References: // extern "C" void mDoLib_setResTimgObj__FPC7ResTIMGP9_GXTexObjUlP10_GXTlutObj(); extern "C" void draw__12dDlst_base_cFv(); extern "C" bool isDrawType__11dDrawPath_cFi(); extern "C" void __dt__18dRenderingFDAmap_cFv(); extern "C" void __dt__11dDrawPath_cFv(); extern "C" void getLineColor__11dDrawPath_cFii(); extern "C" void getRes__14dRes_control_cFPCclP11dRes_info_ci(); extern "C" void* __nw__FUl(); extern "C" void __dl__FPv(); extern "C" void GXClearVtxDesc(); extern "C" void GXPixModeSync(); extern "C" void __register_global_object(); extern "C" void _savegpr_26(); extern "C" void _savegpr_27(); extern "C" void _savegpr_28(); extern "C" void _restgpr_26(); extern "C" void _restgpr_27(); extern "C" void _restgpr_28(); extern "C" extern Mtx g_mDoMtx_identity; extern "C" extern u8 g_dComIfG_gameInfo[122384]; extern "C" extern GXColor g_clearColor; // // Declarations: // /* ############################################################################################## */ /* 80379C30-80379C4C 006290 001C+00 1/1 0/0 0/0 .rodata data$3644 */ SECTION_RODATA static u8 const data[28] = { 0x00, 0x00, 0x00, 0x4F, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4D, 0x00, 0x00, 0x00, 0x4E, 0x00, 0x00, 0x00, 0x4C, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x52, }; COMPILER_STRIP_GATE(0x80379C30, &data); /* 80379C4C-80379C4C 0062AC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */ #pragma push #pragma force_active on SECTION_DEAD static char const* const stringBase_80379C4C = "Always"; /* @stringBase0 padding */ SECTION_DEAD static char const* const pad_80379C53 = "\0\0\0\0"; #pragma pop /* 8003C85C-8003C8F4 03719C 0098+00 0/0 1/1 0/0 .text create__Q28dMpath_n18dTexObjAggregate_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dMpath_n::dTexObjAggregate_c::create() { nofralloc #include "asm/d/map/d_map_path/create__Q28dMpath_n18dTexObjAggregate_cFv.s" } #pragma pop /* 8003C8F4-8003C94C 037234 0058+00 1/1 1/1 0/0 .text remove__Q28dMpath_n18dTexObjAggregate_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dMpath_n::dTexObjAggregate_c::remove() { nofralloc #include "asm/d/map/d_map_path/remove__Q28dMpath_n18dTexObjAggregate_cFv.s" } #pragma pop /* 8003C94C-8003CA40 03728C 00F4+00 2/0 9/2 0/0 .text * rendering__11dDrawPath_cFPCQ211dDrawPath_c10line_class */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dDrawPath_c::rendering(dDrawPath_c::line_class const* param_0) { nofralloc #include "asm/d/map/d_map_path/rendering__11dDrawPath_cFPCQ211dDrawPath_c10line_class.s" } #pragma pop /* 8003CA40-8003CB00 037380 00C0+00 2/0 9/1 0/0 .text * rendering__11dDrawPath_cFPCQ211dDrawPath_c10poly_class */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dDrawPath_c::rendering(dDrawPath_c::poly_class const* param_0) { nofralloc #include "asm/d/map/d_map_path/rendering__11dDrawPath_cFPCQ211dDrawPath_c10poly_class.s" } #pragma pop /* 8003CB00-8003CBBC 037440 00BC+00 1/1 0/0 0/0 .text * rendering__11dDrawPath_cFPCQ211dDrawPath_c11group_class */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dDrawPath_c::rendering(dDrawPath_c::group_class const* param_0) { nofralloc #include "asm/d/map/d_map_path/rendering__11dDrawPath_cFPCQ211dDrawPath_c11group_class.s" } #pragma pop /* 8003CBBC-8003CC24 0374FC 0068+00 1/1 0/0 0/0 .text * rendering__11dDrawPath_cFPCQ211dDrawPath_c11floor_class */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dDrawPath_c::rendering(dDrawPath_c::floor_class const* param_0) { nofralloc #include "asm/d/map/d_map_path/rendering__11dDrawPath_cFPCQ211dDrawPath_c11floor_class.s" } #pragma pop /* 8003CC24-8003CCC4 037564 00A0+00 2/0 9/1 0/0 .text * rendering__11dDrawPath_cFPCQ211dDrawPath_c10room_class */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dDrawPath_c::rendering(dDrawPath_c::room_class const* param_0) { nofralloc #include "asm/d/map/d_map_path/rendering__11dDrawPath_cFPCQ211dDrawPath_c10room_class.s" } #pragma pop /* 8003CCC4-8003CD38 037604 0074+00 2/0 9/1 0/0 .text drawPath__11dDrawPath_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dDrawPath_c::drawPath() { nofralloc #include "asm/d/map/d_map_path/drawPath__11dDrawPath_cFv.s" } #pragma pop /* 8003CD38-8003CDAC 037678 0074+00 0/0 3/3 0/0 .text * makeResTIMG__15dRenderingMap_cCFP7ResTIMGUsUsPUcPUcUs */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dRenderingMap_c::makeResTIMG(ResTIMG* param_0, u16 param_1, u16 param_2, u8* param_3, u8* param_4, u16 param_5) const { nofralloc #include "asm/d/map/d_map_path/makeResTIMG__15dRenderingMap_cCFP7ResTIMGUsUsPUcPUcUs.s" } #pragma pop /* 8003CDAC-8003CE78 0376EC 00CC+00 0/0 2/2 0/0 .text renderingMap__15dRenderingMap_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dRenderingMap_c::renderingMap() { nofralloc #include "asm/d/map/d_map_path/renderingMap__15dRenderingMap_cFv.s" } #pragma pop /* 8003CE78-8003CF40 0377B8 00C8+00 2/2 3/3 0/0 .text * setTevSettingNonTextureDirectColor__18dRenderingFDAmap_cCFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dRenderingFDAmap_c::setTevSettingNonTextureDirectColor() const { nofralloc #include "asm/d/map/d_map_path/setTevSettingNonTextureDirectColor__18dRenderingFDAmap_cCFv.s" } #pragma pop /* 8003CF40-8003D0AC 037880 016C+00 1/1 3/3 0/0 .text * setTevSettingIntensityTextureToCI__18dRenderingFDAmap_cCFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dRenderingFDAmap_c::setTevSettingIntensityTextureToCI() const { nofralloc #include "asm/d/map/d_map_path/setTevSettingIntensityTextureToCI__18dRenderingFDAmap_cCFv.s" } #pragma pop /* 8003D0AC-8003D188 0379EC 00DC+00 1/1 0/0 0/0 .text drawBack__18dRenderingFDAmap_cCFv */ void dRenderingFDAmap_c::drawBack() const { GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS,GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_POS,GX_CLR_RGBA,GX_F32,0); GXColor* colorPtr = getBackColor(); GXSetTevColor(GX_TEVREG0,*colorPtr); GXBegin(GX_QUADS,GX_VTXFMT0,4); GXPosition3f32(-field_0x8,-field_0xc,0); GXPosition3f32(field_0x8,-field_0xc,0); GXPosition3f32(field_0x8,field_0xc,0); GXPosition3f32(-field_0x8,field_0xc,0); GXEnd(); } /* 8003D188-8003D320 037AC8 0198+00 1/0 8/0 0/0 .text preRenderingMap__18dRenderingFDAmap_cFv */ void dRenderingFDAmap_c::preRenderingMap() { GXSetViewport(0.0f,0.0f,field_0x1c,field_0x1e,0.0f,1.0f); GXSetScissor(0,0,field_0x1c,field_0x1e); GXSetNumChans(1); GXSetNumTevStages(1); GXSetChanCtrl(GX_COLOR0A0,GX_FALSE,GX_SRC_REG,GX_SRC_REG,GX_LIGHT_NULL,GX_DF_NONE,GX_AF_NONE); GXSetAlphaCompare(GX_ALWAYS,0,GX_AOP_OR,GX_ALWAYS,0); GXSetZCompLoc(GX_TRUE); GXSetZMode(GX_FALSE,GX_ALWAYS,GX_FALSE); GXSetBlendMode(GX_BM_NONE,GX_BL_SRC_ALPHA,GX_BL_INV_SRC_ALPHA,GX_LO_CLEAR); GXColor color = g_clearColor; GXSetFog(GX_FOG_NONE,0.0f,0.0f,0.0f,0.0f,color); GXSetCullMode(GX_CULL_NONE); GXSetDither(GX_FALSE); GXSetNumIndStages(0); GXSetClipMode(GX_FALSE); setTevSettingNonTextureDirectColor(); float right = field_0x8*0.5f; float top = field_0xc*0.5f; Mtx44 matrix; C_MTXOrtho(matrix,top,-top,-right,right,0.0f,10000.0f); GXSetProjection(matrix,GX_ORTHOGRAPHIC); GXLoadPosMtxImm(g_mDoMtx_identity,GX_PNMTX0); GXSetCurrentMtx(0); drawBack(); } /* 8003D320-8003D3C0 037C60 00A0+00 1/0 7/1 0/0 .text postRenderingMap__18dRenderingFDAmap_cFv */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm void dRenderingFDAmap_c::postRenderingMap() { nofralloc #include "asm/d/map/d_map_path/postRenderingMap__18dRenderingFDAmap_cFv.s" } #pragma pop /* 80424684-804246A0 0513A4 001C+00 2/2 5/5 0/0 .bss m_texObjAgg__8dMpath_n */ dMpath_n::dTexObjAggregate_c dMpath_n::m_texObjAgg; /* Enabling the following definition will modify the following function to * make the map look worse for extra speed in the emulator, especially in large * areas such as hyrule field. */ //#define HYRULE_FIELD_SPEEDHACK /* 8003D3C0-8003D68C 037D00 02CC+00 0/0 2/2 0/0 .text * renderingDecoration__18dRenderingFDAmap_cFPCQ211dDrawPath_c10line_class */ void dRenderingFDAmap_c::renderingDecoration(dDrawPath_c::line_class const* line) { s32 width = getDecorationLineWidth(line->unk1); if (width<=0) { return; } setTevSettingIntensityTextureToCI(); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS,GX_INDEX16); GXSetVtxDesc(GX_VA_TEX0,GX_DIRECT); GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_POS,GX_POS_XY,GX_F32,0); GXSetVtxAttrFmt(GX_VTXFMT0,GX_VA_TEX0,GX_POS_XYZ,GX_F32,0); GXSetNumTevStages(1); GXLoadTexObj(dMpath_n::m_texObjAgg.mTexObjs[6],GX_TEXMAP0); u16* unk = line->unk4; s32 unk2 = line->unk2; GXSetLineWidth(width,GX_TO_ONE); GXSetPointSize(width,GX_TO_ONE); GXColor* lineColorPtr = getDecoLineColor(line->unk0&0x3f,line->unk1); GXColor lineColor = *lineColorPtr; GXSetTevColor(GX_TEVREG0,lineColor); lineColor.r = lineColor.r-4; GXSetTevColor(GX_TEVREG1,lineColor); for (int i = 0; i