Files

46 lines
1.6 KiB
C++
Raw Permalink Normal View History

2022-03-12 10:47:20 -05:00
#include "CGX.hpp"
#include "Graphics/CTexture.hpp"
namespace metaforce::CGX {
SGXState sGXState{};
2022-07-29 16:16:55 -04:00
std::array<GXVtxDescList, 12> sVtxDescList{};
2022-03-12 10:47:20 -05:00
void SetLineWidth(u8 width, GXTexOffset offset) noexcept {
u16 flags = width | offset << 8;
if (flags != sGXState.x54_lineWidthAndOffset) {
sGXState.x54_lineWidthAndOffset = flags;
GXSetLineWidth(width, offset);
}
}
2022-03-12 10:47:20 -05:00
void ResetGXStates() noexcept {
sGXState.x48_descList = 0;
GXClearVtxDesc();
2022-03-12 10:47:20 -05:00
sGXState.x0_arrayPtrs.fill(nullptr);
2022-07-29 16:16:55 -04:00
for (GXTexMapID id = GX_TEXMAP0; id < GX_MAX_TEXMAP; id = static_cast<GXTexMapID>(id + 1)) {
2022-03-12 10:47:20 -05:00
CTexture::InvalidateTexMap(id);
}
2022-07-29 16:16:55 -04:00
for (GXTevKColorID id = GX_KCOLOR0; const auto& item : sGXState.x58_kColors) {
2022-03-12 10:47:20 -05:00
GXSetTevKColor(id, item);
2022-07-29 16:16:55 -04:00
id = static_cast<GXTevKColorID>(id + 1);
2022-03-12 10:47:20 -05:00
}
2022-07-29 16:16:55 -04:00
GXSetTevSwapModeTable(GX_TEV_SWAP1, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_RED);
GXSetTevSwapModeTable(GX_TEV_SWAP2, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_GREEN);
GXSetTevSwapModeTable(GX_TEV_SWAP3, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_BLUE);
SetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0);
GXSetCurrentMtx(GX_PNMTX0);
2022-03-12 10:47:20 -05:00
SetNumIndStages(0);
2026-02-21 16:43:32 -07:00
for (int i = 0; i < GX_MAX_INDTEXSTAGE; i++) {
GXSetIndTexCoordScale(static_cast<GXIndTexStageID>(i), GX_ITS_1, GX_ITS_1);
2022-03-12 10:47:20 -05:00
}
2026-02-21 16:43:32 -07:00
for (int i = 0; i < GX_MAX_TEVSTAGE; i++) {
SetTevDirect(static_cast<GXTevStageID>(i));
}
for (int i = 0; i < GX_MAX_TEXCOORD; i++) {
GXSetTexCoordScaleManually(static_cast<GXTexCoordID>(i), false, 0, 0);
}
GXSetZTexture(GX_ZT_DISABLE, GX_TF_Z8, 0);
2022-03-12 10:47:20 -05:00
}
} // namespace metaforce::CGX