diff --git a/CMakeLists.txt b/CMakeLists.txt index 4f7ff4995e..2fa682f07b 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1351,7 +1351,6 @@ set(DUSK_FILES src/dusk/globals.cpp src/dusk/mtx.cpp src/dusk/J3DTransforms_C.cpp - src/dusk/m_Do_ext_dusk.cpp ) source_group("dolzel" FILES ${DOLZEL_FILES} ${Z2AUDIOLIB_FILES} ${SSYSTEM_FILES} ${JSYSTEM_FILES} ${REL_FILES}) diff --git a/src/dusk/m_Do_ext_dusk.cpp b/src/dusk/m_Do_ext_dusk.cpp deleted file mode 100644 index 7d16d08439..0000000000 --- a/src/dusk/m_Do_ext_dusk.cpp +++ /dev/null @@ -1,565 +0,0 @@ -// XXX Ripped these from a DEBUG block, rather than changing defines. -/** - * m_Do_ext.cpp - * Model, Animation, and Heap Functions - */ - -#include "d/dolzel.h" // IWYU pragma: keep - -#include -#include -#include "JSystem/J3DGraphAnimator/J3DMaterialAnm.h" -#include "JSystem/J3DGraphBase/J3DDrawBuffer.h" -#include "JSystem/J3DGraphBase/J3DMaterial.h" -#include "JSystem/J3DGraphLoader/J3DMaterialFactory.h" -#include "JSystem/JKernel/JKRAssertHeap.h" -#include "JSystem/JKernel/JKRExpHeap.h" -#include "JSystem/JKernel/JKRSolidHeap.h" -#include "JSystem/JUtility/JUTCacheFont.h" -#include "JSystem/JUtility/JUTResFont.h" -#include "Z2AudioLib/Z2Creature.h" -#include "d/d_com_inf_game.h" -#include "global.h" -#include "m_Do/m_Do_ext.h" -#include "m_Do/m_Do_main.h" -#include "m_Do/m_Do_mtx.h" -#include - -mDoExt_cube8pPacket::mDoExt_cube8pPacket(cXyz* i_points, const GXColor& i_color) { - cXyz* pnt_array = mPoints; - - for (int i = 0; i < 8; i++) { - *(pnt_array)++ = *(i_points)++; - } - - DCStoreRangeNoSync(mPoints, sizeof(cXyz) * 8); - mColor = i_color; -} - -void drawCube(MtxP mtx, cXyz* pos, const GXColor& color) { - GXSetArray(GX_VA_POS, pos, sizeof(cXyz)); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_INDEX8); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0, GX_DISABLE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_CLAMP, - GX_AF_NONE); - GXSetNumTexGens(0); - GXSetNumTevStages(1); - GXSetTevColor(GX_TEVREG0, color); - 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, GX_ENABLE, 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, GX_ENABLE, GX_TEVPREV); - GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE); - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR); - GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0); - GXSetCullMode(GX_CULL_BACK); - GXSetClipMode(GX_CLIP_ENABLE); - GXLoadPosMtxImm(mtx, 0); - GXSetCurrentMtx(0); - - GXBegin(GX_TRIANGLESTRIP, GX_VTXFMT0, 14); - GXPosition1x8(4); - GXPosition1x8(6); - GXPosition1x8(5); - GXPosition1x8(7); - GXPosition1x8(3); - GXPosition1x8(6); - GXPosition1x8(2); - GXPosition1x8(4); - GXPosition1x8(0); - GXPosition1x8(5); - GXPosition1x8(1); - GXPosition1x8(3); - GXPosition1x8(0); - GXPosition1x8(2); - GXEnd(); -} - -void mDoExt_cube8pPacket::draw() { - drawCube(j3dSys.getViewMtx(), mPoints, mColor); -} - -mDoExt_cubePacket::mDoExt_cubePacket(cXyz& i_position, cXyz& i_size, csXyz& i_angle, const GXColor& i_color) { - mPosition = i_position; - mSize = i_size; - mAngle = i_angle; - mColor = i_color; -} - -void mDoExt_cubePacket::draw() { - static cXyz l_pos[8] = { - cXyz(-1.0f, 1.0f, -1.0f), cXyz(1.0f, 1.0f, -1.0f), cXyz(-1.0f, 1.0f, 1.0f), - cXyz(1.0f, 1.0f, 1.0f), cXyz(-1.0f, -1.0f, -1.0f), cXyz(1.0f, -1.0f, -1.0f), - cXyz(-1.0f, -1.0f, 1.0f), cXyz(1.0f, -1.0f, 1.0f), - }; - - mDoMtx_stack_c::transS(mPosition.x, mPosition.y, mPosition.z); - mDoMtx_stack_c::XYZrotM(mAngle.x, mAngle.y, mAngle.z); - mDoMtx_stack_c::scaleM(mSize.x, mSize.y, mSize.z); - mDoMtx_stack_c::revConcat(j3dSys.getViewMtx()); - drawCube(mDoMtx_stack_c::get(), l_pos, mColor); -} - -mDoExt_quadPacket::mDoExt_quadPacket(cXyz* i_points, const GXColor& i_color, u8 i_clipZ) { - cXyz* pnt_array = mPoints; - - for (int i = 0; i < 4; i++) { - *(pnt_array)++ = *(i_points)++; - } - - DCStoreRangeNoSync(mPoints, sizeof(cXyz) * 4); - mColor = i_color; - mClipZ = i_clipZ; -} - -void mDoExt_quadPacket::draw() { - GXSetArray(GX_VA_POS, mPoints, sizeof(cXyz)); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_INDEX8); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0, GX_DISABLE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_CLAMP, - GX_AF_NONE); - GXSetNumTexGens(0); - GXSetNumTevStages(1); - GXSetTevColor(GX_TEVREG0, mColor); - 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, GX_ENABLE, 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, GX_ENABLE, GX_TEVPREV); - - if (mClipZ) { - GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE); - } else { - GXSetZMode(GX_DISABLE, GX_LEQUAL, GX_DISABLE); - } - - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR); - GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0); - GXSetCullMode(GX_CULL_BACK); - GXSetClipMode(GX_CLIP_ENABLE); - GXLoadPosMtxImm(j3dSys.getViewMtx(), 0); - GXSetCurrentMtx(0); - - GXBegin(GX_QUADS, GX_VTXFMT0, 4); - GXPosition1x8(0); - GXPosition1x8(1); - GXPosition1x8(2); - GXPosition1x8(3); - GXEnd(); -} - -mDoExt_trianglePacket::mDoExt_trianglePacket(cXyz* i_points, const GXColor& i_color, u8 i_clipZ) { - cXyz* pnt_array = mPoints; - - for (int i = 0; i < 3; i++) { - *(pnt_array)++ = *(i_points)++; - } - - DCStoreRangeNoSync(mPoints, sizeof(cXyz) * 3); - mColor = i_color; - mClipZ = i_clipZ; -} - -void mDoExt_trianglePacket::draw() { - j3dSys.reinitGX(); - - GXSetArray(GX_VA_POS, mPoints, sizeof(cXyz)); - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_INDEX8); - GXLoadPosMtxImm(j3dSys.getViewMtx(), 0); - GXSetCurrentMtx(0); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0, GX_DISABLE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_CLAMP, GX_AF_NONE); - GXSetNumTexGens(0); - GXSetNumTevStages(1); - GXSetTevColor(GX_TEVREG0, mColor); - 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, GX_ENABLE, 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, GX_ENABLE, GX_TEVPREV); - GXSetZCompLoc(GX_ENABLE); - - if (mClipZ) { - GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE); - } else { - GXSetZMode(GX_DISABLE, GX_LEQUAL, GX_DISABLE); - } - - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR); - GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0); - GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor); - GXSetFogRangeAdj(GX_DISABLE, 0, NULL); - GXSetCullMode(GX_CULL_NONE); - GXSetDither(GX_ENABLE); - GXSetClipMode(GX_CLIP_ENABLE); - GXSetNumIndStages(0); - - GXBegin(GX_TRIANGLES, GX_VTXFMT0, 3); - GXPosition1x8(0); - GXPosition1x8(1); - GXPosition1x8(2); - GXEnd(); - - J3DShape::resetVcdVatCache(); -} - -mDoExt_linePacket::mDoExt_linePacket(cXyz& i_start, cXyz& i_end, const GXColor& i_color, u8 i_clipZ, u8 i_width) { - mStart = i_start; - mEnd = i_end; - mColor = i_color; - mClipZ = i_clipZ; - mWidth = i_width; -} - -void mDoExt_linePacket::draw() { - j3dSys.reinitGX(); - - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXLoadPosMtxImm(j3dSys.getViewMtx(), 0); - GXSetCurrentMtx(0); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0, GX_DISABLE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_CLAMP, GX_AF_NONE); - GXSetNumTexGens(0); - GXSetNumTevStages(1); - GXSetTevColor(GX_TEVREG0, mColor); - 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, GX_ENABLE, 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, GX_ENABLE, GX_TEVPREV); - GXSetZCompLoc(GX_ENABLE); - - if (mClipZ) { - GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE); - } else { - GXSetZMode(GX_DISABLE, GX_LEQUAL, GX_DISABLE); - } - - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR); - GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0); - GXSetFog(GX_FOG_NONE, 0.0f, 0.0f, 0.0f, 0.0f, g_clearColor); - GXSetFogRangeAdj(GX_DISABLE, 0, NULL); - GXSetCullMode(GX_CULL_NONE); - GXSetDither(GX_ENABLE); - GXSetClipMode(GX_CLIP_ENABLE); - GXSetNumIndStages(0); - GXSetLineWidth(mWidth, GX_TO_ZERO); - - GXBegin(GX_LINES, GX_VTXFMT0, 2); - GXPosition3f32(mStart.x, mStart.y, mStart.z); - GXPosition3f32(mEnd.x, mEnd.y, mEnd.z); - GXEnd(); - - J3DShape::resetVcdVatCache(); -} - -mDoExt_ArrowPacket::mDoExt_ArrowPacket(cXyz& i_position, cXyz& param_1, const GXColor& i_color, u8 i_clipZ, u8 i_lineWidth) { - mStart = i_position; - mEnd = param_1; - mColor = i_color; - mClipZ = i_clipZ; - mLineWidth = i_lineWidth; -} - -void mDoExt_ArrowPacket::draw() { - Mtx sp28; - cXyz sp18; - - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0, GX_DISABLE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_CLAMP, GX_AF_NONE); - GXSetNumTexGens(0); - GXSetNumTevStages(1); - GXSetTevColor(GX_TEVREG0, mColor); - 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, GX_ENABLE, 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, GX_ENABLE, GX_TEVPREV); - - if (mClipZ) { - GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE); - } else { - GXSetZMode(GX_DISABLE, GX_LEQUAL, GX_DISABLE); - } - - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR); - GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0); - GXSetCullMode(GX_CULL_NONE); - GXSetClipMode(GX_CLIP_ENABLE); - GXSetLineWidth(mLineWidth, GX_TO_ZERO); - - sp18 = mEnd - mStart; - MtxTrans(mStart.x, mStart.y, mStart.z, 0); - cMtx_YrotM(*calc_mtx, sp18.atan2sX_Z()); - cMtx_XrotM(*calc_mtx, cM_atan2s(JMAFastSqrt(SQUARE(sp18.x) + SQUARE(sp18.z)), sp18.y)); - cMtx_concat(j3dSys.getViewMtx(), *calc_mtx, sp28); - - GXLoadPosMtxImm(sp28, 0); - GXSetCurrentMtx(0); - - GXBegin(GX_LINES, GX_VTXFMT0, 2); - GXPosition3f32(0.0f, 0.0f, 0.0f); - GXPosition3f32(0.0f, sp18.abs(), 0.0f); - GXEnd(); - - f32 var_f29 = sp18.abs(); - f32 var_f31 = var_f29 * 0.1f; - f32 var_f30 = var_f29 * 0.8f; - - GXBegin(GX_TRIANGLEFAN, GX_VTXFMT0, 6); - GXPosition3f32(0.0f, var_f29, 0.0f); - GXPosition3f32(0.0f, var_f30, var_f31); - GXPosition3f32(var_f31, var_f30, 0.0f); - GXPosition3f32(0.0f, var_f30, -var_f31); - GXPosition3f32(-var_f31, var_f30, 0.0f); - GXPosition3f32(0.0f, var_f30, var_f31); - GXEnd(); -} - -mDoExt_pointPacket::mDoExt_pointPacket(cXyz& i_position, const GXColor& i_color, u8 i_clipZ, u8 i_lineWidth) { - mPosition = i_position; - mColor = i_color; - mClipZ = i_clipZ; - mLineWidth = i_lineWidth; -} - -void mDoExt_pointPacket::draw() { - j3dSys.reinitGX(); - - GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0); - GXClearVtxDesc(); - GXSetVtxDesc(GX_VA_POS, GX_DIRECT); - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0, GX_DISABLE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_CLAMP, GX_AF_NONE); - GXSetNumTexGens(0); - GXSetNumTevStages(1); - GXSetTevColor(GX_TEVREG0, mColor); - 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, GX_ENABLE, 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, GX_ENABLE, GX_TEVPREV); - - if (mClipZ) { - GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE); - } else { - GXSetZMode(GX_DISABLE, GX_LEQUAL, GX_DISABLE); - } - - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR); - GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0); - GXSetCullMode(GX_CULL_NONE); - GXSetClipMode(GX_CLIP_ENABLE); - GXSetPointSize(mLineWidth, GX_TO_ZERO); - - GXLoadPosMtxImm(j3dSys.getViewMtx(), 0); - GXSetCurrentMtx(0); - - GXBegin(GX_POINTS, GX_VTXFMT0, 1); - GXPosition3f32(mPosition.x, mPosition.y, mPosition.z); - GXEnd(); - - j3dSys.reinitGX(); - J3DShape::resetVcdVatCache(); -} - -mDoExt_circlePacket::mDoExt_circlePacket(cXyz& i_position, f32 i_radius, const GXColor& i_color, u8 i_clipZ, u8 i_lineWidth) { - mPosition = i_position; - mRadius = i_radius; - mColor = i_color; - mClipZ = i_clipZ; - mLineWidth = i_lineWidth; -} - -void mDoExt_circlePacket::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, GX_DISABLE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_CLAMP, GX_AF_NONE); - GXSetNumTexGens(0); - GXSetNumTevStages(1); - GXSetTevColor(GX_TEVREG0, mColor); - 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, GX_ENABLE, 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, GX_ENABLE, GX_TEVPREV); - - if (mClipZ) { - GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE); - } else { - GXSetZMode(GX_DISABLE, GX_LEQUAL, GX_DISABLE); - } - - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR); - GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0); - GXSetCullMode(GX_CULL_NONE); - GXSetClipMode(GX_CLIP_ENABLE); - GXSetLineWidth(mLineWidth, GX_TO_ZERO); - GXLoadPosMtxImm(j3dSys.getViewMtx(), 0); - GXSetCurrentMtx(0); - - cXyz sp38; - cXyz sp44; - int numEdges = 36; - sp38.y = sp44.y = mPosition.y; - - GXBegin(GX_LINES, GX_VTXFMT0, numEdges * 2); - for (int i = 0; i < numEdges; i++) { - sp38.x = cM_fcos((i * 6.2831855f) / numEdges) * mRadius; - sp38.z = cM_fsin((i * 6.2831855f) / numEdges) * mRadius; - - sp44.x = cM_fcos(((i + 1) * 6.2831855f) / numEdges) * mRadius; - sp44.z = cM_fsin(((i + 1) * 6.2831855f) / numEdges) * mRadius; - - sp38.x += mPosition.x; - sp38.z += mPosition.z; - sp44.x += mPosition.x; - sp44.z += mPosition.z; - GXPosition3f32(sp38.x, sp38.y, sp38.z); - GXPosition3f32(sp44.x, sp44.y, sp44.z); - } - GXEnd(); -} - -mDoExt_spherePacket::mDoExt_spherePacket(cXyz& i_position, f32 i_size, const GXColor& i_color, u8 i_clipZ) { - mPosition = i_position; - mSize = i_size; - mColor = i_color; - mClipZ = i_clipZ; -} - -void mDoExt_spherePacket::draw() { - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0, GX_ENABLE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT0, GX_DF_CLAMP, GX_AF_NONE); - GXSetNumTexGens(0); - GXSetNumTevStages(1); - GXSetTevColor(GX_TEVREG0, mColor); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_RASC, GX_CC_C0, GX_CC_ZERO); - GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, 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, GX_ENABLE, GX_TEVPREV); - - if (mClipZ) { - GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE); - } else { - GXSetZMode(GX_DISABLE, GX_LEQUAL, GX_DISABLE); - } - - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR); - GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0); - GXSetCullMode(GX_CULL_BACK); - GXSetClipMode(GX_CLIP_ENABLE); - - mDoMtx_stack_c::copy(j3dSys.getViewMtx()); - mDoMtx_stack_c::transM(mPosition.x, mPosition.y, mPosition.z); - mDoMtx_stack_c::scaleM(mSize, mSize, mSize); - - GXLoadPosMtxImm(mDoMtx_stack_c::get(), 0); - mDoMtx_stack_c::inverseTranspose(); - - GXLoadNrmMtxImm(mDoMtx_stack_c::get(), 0); - GXSetCurrentMtx(0); - - GXDrawSphere(8, 8); -} - -mDoExt_cylinderPacket::mDoExt_cylinderPacket(cXyz& i_position, f32 i_radius, f32 i_height, const GXColor& i_color, u8 i_clipZ) { - mPosition = i_position; - mRadius = i_radius; - mHeight = i_height; - mColor = i_color; - mClipZ = i_clipZ; -} - -void mDoExt_cylinderPacket::draw() { - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0, GX_ENABLE, GX_SRC_REG, GX_SRC_REG, 1, GX_DF_CLAMP, GX_AF_NONE); - GXSetNumTexGens(0); - GXSetNumTevStages(1); - GXSetTevColor(GX_TEVREG0, mColor); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_RASC, GX_CC_C0, 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_ZERO, GX_CA_ZERO, GX_CA_A0); - GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_TRUE, GX_TEVPREV); - - if (mClipZ) { - GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE); - } else { - GXSetZMode(GX_DISABLE, GX_LEQUAL, GX_DISABLE); - } - - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR); - GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0); - GXSetCullMode(GX_CULL_BACK); - GXSetClipMode(GX_CLIP_ENABLE); - - f32 var_f31 = mHeight * 0.5f; - - mDoMtx_stack_c::copy(j3dSys.getViewMtx()); - mDoMtx_stack_c::transM(mPosition.x, mPosition.y + var_f31, mPosition.z); - mDoMtx_stack_c::scaleM(mRadius, var_f31, mRadius); - mDoMtx_stack_c::XrotM(0x4000); - - GXLoadPosMtxImm(mDoMtx_stack_c::get(), 0); - mDoMtx_stack_c::inverseTranspose(); - - GXLoadNrmMtxImm(mDoMtx_stack_c::get(), 0); - GXSetCurrentMtx(0); - GXDrawCylinder(8); -} - -mDoExt_cylinderMPacket::mDoExt_cylinderMPacket(Mtx i_mtx, const GXColor& i_color, u8 i_clipZ) { - cMtx_copy(i_mtx, mMatrix); - mColor = i_color; - mClipZ = i_clipZ; -} - -void mDoExt_cylinderMPacket::draw() { - GXSetNumChans(1); - GXSetChanCtrl(GX_COLOR0, GX_ENABLE, GX_SRC_REG, GX_SRC_REG, GX_LIGHT0, GX_DF_CLAMP, GX_AF_NONE); - GXSetNumTexGens(0); - GXSetNumTevStages(1); - GXSetTevColor(GX_TEVREG0, mColor); - GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR0A0); - GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_RASC, GX_CC_C0, GX_CC_ZERO); - GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, GX_ENABLE, 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, GX_ENABLE, GX_TEVPREV); - - if (mClipZ) { - GXSetZMode(GX_ENABLE, GX_LEQUAL, GX_ENABLE); - } else { - GXSetZMode(GX_DISABLE, GX_LEQUAL, GX_DISABLE); - } - - GXSetBlendMode(GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR); - GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_OR, GX_ALWAYS, 0); - GXSetCullMode(GX_CULL_BACK); - GXSetClipMode(GX_CLIP_ENABLE); - - cMtx_concat(j3dSys.getViewMtx(), mMatrix, mMatrix); - - GXLoadPosMtxImm(mMatrix, 0); - cMtx_inverseTranspose(mMatrix, mMatrix); - - GXLoadNrmMtxImm(mMatrix, 0); - GXSetCurrentMtx(0); - - GXDrawCylinder(8); -} diff --git a/src/m_Do/m_Do_ext.cpp b/src/m_Do/m_Do_ext.cpp index 7f4bf6f8f9..c8465b60a2 100644 --- a/src/m_Do/m_Do_ext.cpp +++ b/src/m_Do/m_Do_ext.cpp @@ -3006,7 +3006,7 @@ void mDoExt_3DlineMatSortPacket::draw() { J3DShape::resetVcdVatCache(); } -#if DEBUG +#if DEBUG || !__MWERKS__ mDoExt_cube8pPacket::mDoExt_cube8pPacket(cXyz* i_points, const GXColor& i_color) { cXyz* pnt_array = mPoints;