Files
tp/src/d/map/d_map_path.cpp
T
2022-01-17 20:00:12 -07:00

433 lines
15 KiB
C++

//
// 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 */