// // 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 < unk2; unk++, i++) { #ifndef HYRULE_FIELD_SPEEDHACK if (i < unk2 - 1) { 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, GX_TRUE, GX_TEVPREV); GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); GXBegin(GX_LINESTRIP, GX_VTXFMT0, 2); GXPosition1x16(unk[0]); GXTexCoord2f32(0, 0); GXPosition1x16(unk[1]); GXTexCoord2f32(0, 0); } GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_KONST, GX_CC_TEXC, GX_CC_C1); 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_ZERO, GX_CA_ZERO, GX_CA_TEXA); GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); #endif GXBegin(GX_POINTS, GX_VTXFMT0, 1); GXPosition1x16(unk[0]); GXTexCoord2f32(0, 0); GXEnd(); } setTevSettingNonTextureDirectColor(); GXClearVtxDesc(); GXSetVtxDesc(GX_VA_POS, GX_INDEX16); GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGB, GX_F32, 0); } /* 8003D68C-8003D6B8 037FCC 002C+00 1/0 6/0 0/0 .text getDecoLineColor__18dRenderingFDAmap_cFii */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm GXColor* dRenderingFDAmap_c::getDecoLineColor(int param_0, int param_1) { nofralloc #include "asm/d/map/d_map_path/getDecoLineColor__18dRenderingFDAmap_cFii.s" } #pragma pop /* 8003D6B8-8003D6E4 037FF8 002C+00 1/0 6/0 0/0 .text * getDecorationLineWidth__18dRenderingFDAmap_cFi */ #pragma push #pragma optimization_level 0 #pragma optimizewithasm off asm s32 dRenderingFDAmap_c::getDecorationLineWidth(int param_0) { nofralloc #include "asm/d/map/d_map_path/getDecorationLineWidth__18dRenderingFDAmap_cFi.s" } #pragma pop /* ############################################################################################## */ /* 803A7C90-803A7CF8 004DB0 0068+00 0/0 12/12 0/0 .data __vt__18dRenderingFDAmap_c */ SECTION_DATA extern void* __vt__18dRenderingFDAmap_c[26] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)draw__12dDlst_base_cFv, (void*)__dt__18dRenderingFDAmap_cFv, (void*)isDrawType__11dDrawPath_cFi, (void*)NULL, (void*)getLineColor__11dDrawPath_cFii, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL, (void*)drawPath__11dDrawPath_cFv, (void*)rendering__11dDrawPath_cFPCQ211dDrawPath_c10line_class, (void*)rendering__11dDrawPath_cFPCQ211dDrawPath_c10poly_class, (void*)rendering__11dDrawPath_cFPCQ211dDrawPath_c10room_class, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL, (void*)preRenderingMap__18dRenderingFDAmap_cFv, (void*)postRenderingMap__18dRenderingFDAmap_cFv, (void*)NULL, (void*)getDecoLineColor__18dRenderingFDAmap_cFii, (void*)getDecorationLineWidth__18dRenderingFDAmap_cFi, }; /* 803A7CF8-803A7D38 004E18 0040+00 0/0 15/15 0/0 .data __vt__11dDrawPath_c */ SECTION_DATA extern void* __vt__11dDrawPath_c[16] = { (void*)NULL /* RTTI */, (void*)NULL, (void*)draw__12dDlst_base_cFv, (void*)__dt__11dDrawPath_cFv, (void*)isDrawType__11dDrawPath_cFi, (void*)NULL, (void*)getLineColor__11dDrawPath_cFii, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL, (void*)NULL, (void*)drawPath__11dDrawPath_cFv, (void*)rendering__11dDrawPath_cFPCQ211dDrawPath_c10line_class, (void*)rendering__11dDrawPath_cFPCQ211dDrawPath_c10poly_class, (void*)rendering__11dDrawPath_cFPCQ211dDrawPath_c10room_class, }; /* 80379C4C-80379C4C 0062AC 0000+00 0/0 0/0 0/0 .rodata @stringBase0 */