Some Symbols

This commit is contained in:
elijah-thomas774
2025-11-15 02:00:54 -05:00
parent cd4f0d74de
commit 02efcf0a65
16 changed files with 232 additions and 237 deletions
+2 -2
View File
@@ -20,7 +20,7 @@ CoreControllerMgr::T__Disposer *CoreControllerMgr::T__Disposer::sStaticDisposer;
CoreControllerFactory CoreControllerMgr::sCoreControllerFactory;
CoreControllerConnectCallback CoreControllerMgr::sConnectCallback;
// This controls whether EggController registers an allocator within the WPAD driver
bool CoreControllerMgr::sUseBuiltinWpadAllocator;
bool CoreControllerMgr::sWPADRegisterAllocatorOFF;
s32 CoreControllerMgr::sWPADWorkSize = 0x32000;
void CoreStatus::init() {
@@ -356,7 +356,7 @@ void CoreControllerMgr::connectCallback(s32 a1, s32 a2) {
/* 0x80499D10 */
CoreControllerMgr::CoreControllerMgr() {
const int idxes[] = {0, 1, 2, 3};
if (sUseBuiltinWpadAllocator == false) {
if (sWPADRegisterAllocatorOFF == false) {
Heap *heap = ExpHeap::create(sWPADWorkSize, BaseSystem::mConfigData->mRootHeapMem2, 0);
heap->mName = "EGG::CoreControllerMgr";
sAllocator = new Allocator(heap, 0x20);
+5 -6
View File
@@ -296,16 +296,15 @@ const GXRenderModeObj gRMO_Ntsc_640x456IntDf_4x3 = {
{0, 0, 21, 22, 21, 0, 0} // vFilter
};
} // namespace
namespace EGG {
const EGG::Video::RenderModeObjSet renderModes = {
const EGG::Video::RenderModeObjSet gStandardRenderModeObjSet = {
{&gRMO_Pal60_640x456Prog_16x9, &gRMO_Pal60_640x456IntDf_16x9, &gRMO_Pal50_640x456IntDf_16x9,
&gRMO_Ntsc_640x456Prog_16x9, &gRMO_Ntsc_640x456IntDf_16x9, &gRMO_Pal60_640x456Prog_4x3,
&gRMO_Pal60_640x456IntDf_4x3, &gRMO_Pal50_640x456IntDf_4x3, &gRMO_Ntsc_640x456Prog_4x3,
&gRMO_Ntsc_640x456IntDf_4x3}
};
} // namespace
namespace EGG {
void Video::initialize(GXRenderModeObj *obj, const RenderModeObjSet *set) {
VIInit();
@@ -315,7 +314,7 @@ void Video::initialize(GXRenderModeObj *obj, const RenderModeObjSet *set) {
GXRenderModeObj *Video::configure(GXRenderModeObj *obj, const RenderModeObjSet *set) {
GXRenderModeObj *oldMode = pRenderMode;
if (set == nullptr) {
set = &renderModes;
set = &gStandardRenderModeObjSet;
}
if (obj == nullptr) {
// Cast away constness. In an incredibly cursed way, adding proper
+2 -2
View File
@@ -14,7 +14,7 @@ namespace EGG {
namespace {
void calcColorGradient(GXColor &outColor, const GXColor &c1, const GXColor &c2, f32 amount) {
void blendColor(GXColor &outColor, const GXColor &c1, const GXColor &c2, f32 amount) {
if (amount <= 0.0f) {
outColor = c1;
} else if (amount >= 1.0f) {
@@ -62,7 +62,7 @@ void makeGradient(int op, GXColor *outColor, u16 size, u16 start, u16 end, const
ratio = -ratio * ratio * ratio * ratio + 1.0f;
break;
}
calcColorGradient(outColor[i], c1, c2, ratio);
blendColor(outColor[i], c1, c2, ratio);
}
}
+85 -81
View File
@@ -36,12 +36,8 @@ const DrawGX::DL DrawGX::s_DL0 = DrawGX::DL_0;
const DrawGX::DL DrawGX::s_DL7 = DrawGX::DL_7;
const DrawGX::DL DrawGX::s_DL8 = DrawGX::DL_8;
GXTexMapID DrawGX::sTexMapDefault;
GXLightID DrawGX::sLightMaskDefault = GX_LIGHT0;
nw4r::math::MTX34 DrawGX::s_cameraMtx;
DrawGX::DLData DrawGX::s_DL[DL_MAX];
GXTexObj DrawGX::sDummyTexObj;
u32 DrawGX::s_flag;
@@ -49,6 +45,10 @@ u32 DrawGX::s_flag;
namespace {
static GXTexObj CLEAR_Z_TEX_OBJ;
static GXLightID LIGHTMASK_DEFAULT = GX_LIGHT0;
static GXTexMapID TEXMAP_DEFAULT;
static void DrawQuadNormal(u8 x1, u8 x2, u8 x3, u8 x4, u8 y) {
GXPosition2u8(x1, y);
GXPosition2u8(x2, y);
@@ -118,42 +118,42 @@ namespace EGG {
static DrawGX sDrawGX;
static u8 DummyTextureData[64] = {
// clang-format off
0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
// clang-format on
};
void DrawGX::Initialize(Heap *pHeap_) {
2.0f; // cool
2.0f; // cool+
static u8 s_clear_z_TX[64] = {
// clang-format off
0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00, 0xFF,
0x00, 0xFF, 0x00, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF,
// clang-format on
};
Heap *pHeap = pHeap_ == nullptr ? Heap::getCurrentHeap() : pHeap_;
GXInitTexObj(&sDummyTexObj, DummyTextureData, 4, 4, GX_TF_Z24X8, GX_REPEAT, GX_REPEAT, false);
GXInitTexObjLOD(&sDummyTexObj, GX_NEAR, GX_NEAR, 0.0, 0.0, 0.0, 0, 0, GX_ANISO_1);
GXInitTexObj(&CLEAR_Z_TEX_OBJ, s_clear_z_TX, 4, 4, GX_TF_Z24X8, GX_REPEAT, GX_REPEAT, false);
GXInitTexObjLOD(&CLEAR_Z_TEX_OBJ, GX_NEAR, GX_NEAR, 0.0, 0.0, 0.0, 0, 0, GX_ANISO_1);
PSMTXIdentity(s_cameraMtx.m);
CreateDisplayList(pHeap);
}
GXTexMapID DrawGX::GetTexMapDefault() {
return sTexMapDefault;
return TEXMAP_DEFAULT;
}
GXLightID DrawGX::GetLightMaskDefault() {
return sLightMaskDefault;
return LIGHTMASK_DEFAULT;
}
void DrawGX::BeginDrawLine(ColorChannel chan, ZMode zMode) {
@@ -240,7 +240,7 @@ void DrawGX::ClearEfb(
GXSetCullMode(GX_CULL_NONE);
if (b3) {
SetMat_TexGen(TEXGEN_1);
GXLoadTexObj(&sDummyTexObj, sTexMapDefault);
GXLoadTexObj(&CLEAR_Z_TEX_OBJ, TEXMAP_DEFAULT);
} else {
SetMat_TexGen(TEXGEN_0);
}
@@ -252,7 +252,7 @@ void DrawGX::ClearEfb(
GXSetTevSwapMode(GX_TEVSTAGE0, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA);
if (b3) {
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, sTexMapDefault, GX_COLOR_NULL);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, TEXMAP_DEFAULT, GX_COLOR_NULL);
} else {
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD_NULL, GX_TEXMAP_NULL, GX_COLOR_NULL);
}
@@ -336,7 +336,7 @@ void DrawGX::SetMat_Tev(GXTevStageID stageId, enum TevSetting setting) {
break;
case TEV_2:
GXSetTevDirect(stageId);
GXSetTevOrder(stageId, GX_TEXCOORD0, sTexMapDefault, GX_COLOR0A0);
GXSetTevOrder(stageId, GX_TEXCOORD0, TEXMAP_DEFAULT, GX_COLOR0A0);
GXSetTevSwapMode(stageId, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetTevColorIn(stageId, GX_CC_ZERO, GX_CC_TEXC, GX_CC_RASC, GX_CC_ZERO);
GXSetTevColorOp(stageId, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV);
@@ -345,7 +345,7 @@ void DrawGX::SetMat_Tev(GXTevStageID stageId, enum TevSetting setting) {
break;
case TEV_1:
GXSetTevDirect(stageId);
GXSetTevOrder(stageId, GX_TEXCOORD0, sTexMapDefault, GX_COLOR0A0);
GXSetTevOrder(stageId, GX_TEXCOORD0, TEXMAP_DEFAULT, GX_COLOR0A0);
GXSetTevSwapMode(stageId, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetTevColorIn(stageId, GX_CC_ZERO, GX_CC_ZERO, GX_CC_ZERO, GX_CC_TEXC);
GXSetTevColorOp(stageId, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV);
@@ -377,7 +377,7 @@ void DrawGX::LoadTexture(nw4r::g3d::ResTex tex, GXTexMapID texMapId) {
void DrawGX::SetVtxState(EGG::DrawGX::VtxType type) {
GXClearVtxDesc();
switch (type) {
case VTX_TYPE_0:
case VTX_TYPE_0: {
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0xe);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_S16, 0xe);
// clang-format off
@@ -405,16 +405,18 @@ void DrawGX::SetVtxState(EGG::DrawGX::VtxType type) {
GXSetVtxDesc(GX_VA_POS, GX_INDEX8);
GXSetVtxDesc(GX_VA_NRM, GX_INDEX8);
break;
}
case VTX_TYPE_2:
case VTX_TYPE_3:
case VTX_TYPE_4:
case VTX_TYPE_5:
case VTX_TYPE_5: {
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxDesc(GX_VA_NRM, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0);
break;
case VTX_TYPE_6:
}
case VTX_TYPE_6: {
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxDesc(GX_VA_NRM, GX_DIRECT);
GXSetVtxDesc(GX_VA_CLR0, GX_DIRECT);
@@ -422,23 +424,25 @@ void DrawGX::SetVtxState(EGG::DrawGX::VtxType type) {
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_F32, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_CLR0, GX_CLR_RGBA, GX_RGBA8, 0);
break;
case VTX_TYPE_1:
}
case VTX_TYPE_1: {
GXSetVtxDesc(GX_VA_POS, GX_DIRECT);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_F32, 0);
break;
}
case VTX_TYPE_7:
case VTX_TYPE_8:
case VTX_TYPE_8: {
// clang-format off
static const ALIGN_DECL(32) s16 sVtxDataType7[][2] = {
static const ALIGN_DECL(32) s16 QUAD_VTX[][2] = {
{0xE000, 0x2000},
{0x2000, 0x2000},
{0x2000, 0xE000},
{0xE000, 0xE000},
};
static const ALIGN_DECL(32) s16 sNrmDataType7[][3] = {
static const ALIGN_DECL(32) s16 QUAD_NRM[][3] = {
{0x0000, 0x0000, 0x4000}
};
static const ALIGN_DECL(32) u8 sTexDataType7[][2] = {
static const ALIGN_DECL(32) u8 QUAD_UV[][2] = {
{0x00, 0x00},
{0x01, 0x00},
{0x01, 0x01},
@@ -455,21 +459,22 @@ void DrawGX::SetVtxState(EGG::DrawGX::VtxType type) {
if (type == VTX_TYPE_7) {
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_TEX_ST, GX_U8, 0);
}
GXSetArray(GX_VA_POS, sVtxDataType7, 4);
GXSetArray(GX_VA_NRM, sNrmDataType7, 6);
GXSetArray(GX_VA_POS, QUAD_VTX, 4);
GXSetArray(GX_VA_NRM, QUAD_NRM, 6);
if (type == VTX_TYPE_7) {
GXSetArray(GX_VA_TEX0, sTexDataType7, 2);
GXSetArray(GX_VA_TEX0, QUAD_UV, 2);
}
break;
case VTX_TYPE_9:
}
case VTX_TYPE_9: {
// clang-format off
static const ALIGN_DECL(32) s16 sVtxDataType9[][3] = {
static const ALIGN_DECL(32) s16 QUAD_VTX[][3] = {
{0xE000, 0x0000, 0xE000},
{0x2000, 0x0000, 0xE000},
{0x2000, 0x0000, 0x2000},
{0xE000, 0x0000, 0x2000},
};
static const ALIGN_DECL(32) s16 sNrmDataType9[][3] = {
static const ALIGN_DECL(32) s16 QUAD_NRM[][3] = {
{0x0000, 0x4000, 0x0000}
};
// clang-format on
@@ -477,21 +482,22 @@ void DrawGX::SetVtxState(EGG::DrawGX::VtxType type) {
GXSetVtxDesc(GX_VA_NRM, GX_INDEX8);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XYZ, GX_S16, 0xe);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_NRM, GX_NRM_XYZ, GX_S16, 0xe);
GXSetArray(GX_VA_POS, sVtxDataType9, 6);
GXSetArray(GX_VA_NRM, sNrmDataType9, 6);
GXSetArray(GX_VA_POS, QUAD_VTX, 6);
GXSetArray(GX_VA_NRM, QUAD_NRM, 6);
break;
}
case VTX_TYPE_10:
case VTX_TYPE_11:
case VTX_TYPE_12:
case VTX_TYPE_13: {
// clang-format off
static const ALIGN_DECL(32) u8 sPosDataType10[][2] = {
static const ALIGN_DECL(32) u8 SCREEN_VTX[][2] = {
{0x00, 0x01},
{0x01, 0x01},
{0x01, 0x00},
{0x00, 0x00},
};
static const ALIGN_DECL(32) u8 sTexDataType10[][2] = {
static const ALIGN_DECL(32) u8 SCREEN_VTX_LU[][2] = {
{0x00, 0x00},
{0x01, 0x00},
{0x01, 0x01},
@@ -504,9 +510,9 @@ void DrawGX::SetVtxState(EGG::DrawGX::VtxType type) {
if (bVar2) {
GXSetVtxDesc(GX_VA_TEX0, GX_INDEX8);
}
GXSetArray(GX_VA_POS, bVar1 ? sTexDataType10 : sPosDataType10, 2);
GXSetArray(GX_VA_POS, bVar1 ? SCREEN_VTX_LU : SCREEN_VTX, 2);
if (bVar2) {
GXSetArray(GX_VA_TEX0, sTexDataType10, 2);
GXSetArray(GX_VA_TEX0, SCREEN_VTX_LU, 2);
}
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_POS_XY, GX_U8, 0);
if (bVar2) {
@@ -683,38 +689,36 @@ void DrawGX::DrawDL(enum DL dl, const nw4r::math::MTX34 &mtx, GXColor clr) {
GXCallDisplayList(s_DL[dl].mpList, s_DL[dl].mLen);
}
const DrawGX::ZModeConfig DrawGX::s_ZMode[ZMODE_MAX] = {
{false, GX_ALWAYS, false},
{ true, GX_LEQUAL, true},
{ true, GX_LEQUAL, false},
{ true, GX_ALWAYS, true},
};
void DrawGX::SetZMode(enum ZMode mode) {
GXSetZMode(s_ZMode[mode].mTest, s_ZMode[mode].mCompare, s_ZMode[mode].mUpdate);
static const DrawGX::ZModeConfig Z_ARG[ZMODE_MAX] = {
{false, GX_ALWAYS, false},
{ true, GX_LEQUAL, true},
{ true, GX_LEQUAL, false},
{ true, GX_ALWAYS, true},
};
GXSetZMode(Z_ARG[mode].mTest, Z_ARG[mode].mCompare, Z_ARG[mode].mUpdate);
}
const DrawGX::BlendModeConfig DrawGX::s_Blend[BLEND_MAX] = {
{ GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_INVSRCALPHA, GX_BL_SRCALPHA, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_ONE, GX_BL_ONE, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_SRCCLR, GX_BL_ONE, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_INVSRCCLR, GX_BL_ONE, GX_LO_CLEAR},
{GX_BM_SUBTRACT, GX_BL_ONE, GX_BL_ONE, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_ZERO, GX_BL_SRCCLR, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVSRCCLR, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_ONE, GX_BL_ZERO, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_DSTALPHA, GX_BL_INVDSTALPHA, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_INVDSTALPHA, GX_BL_DSTALPHA, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_DSTALPHA, GX_BL_ONE, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_INVDSTALPHA, GX_BL_ONE, GX_LO_CLEAR},
{ GX_BM_NONE, GX_BL_ONE, GX_BL_ONE, GX_LO_CLEAR},
};
void DrawGX::SetBlendMode(enum Blend mode) {
static const DrawGX::BlendModeConfig BLEND[BLEND_MAX] = {
{ GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_INVSRCALPHA, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_INVSRCALPHA, GX_BL_SRCALPHA, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_ONE, GX_BL_ONE, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_SRCALPHA, GX_BL_ONE, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_SRCCLR, GX_BL_ONE, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_INVSRCCLR, GX_BL_ONE, GX_LO_CLEAR},
{GX_BM_SUBTRACT, GX_BL_ONE, GX_BL_ONE, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_ZERO, GX_BL_SRCCLR, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_ZERO, GX_BL_INVSRCCLR, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_ONE, GX_BL_ZERO, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_DSTALPHA, GX_BL_INVDSTALPHA, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_INVDSTALPHA, GX_BL_DSTALPHA, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_DSTALPHA, GX_BL_ONE, GX_LO_CLEAR},
{ GX_BM_BLEND, GX_BL_INVDSTALPHA, GX_BL_ONE, GX_LO_CLEAR},
{ GX_BM_NONE, GX_BL_ONE, GX_BL_ONE, GX_LO_CLEAR},
};
GXSetBlendMode(
s_Blend[mode].mBlendMode, s_Blend[mode].mBlendFactorSrc, s_Blend[mode].mBlendFactorDst, s_Blend[mode].mLogicOp
BLEND[mode].mBlendMode, BLEND[mode].mBlendFactorSrc, BLEND[mode].mBlendFactorDst, BLEND[mode].mLogicOp
);
}
+15 -12
View File
@@ -31,12 +31,15 @@ int IBinary<LightObject>::GetVersion() {
}
// why
static const f32 zeroVec[3] = {0.0f, 0.0f, 0.0f};
namespace {
static const f32 ZERO_VEC[3] = {0.0f, 0.0f, 0.0f};
}
LightObject::LightObject()
: mIndex(0),
field_0x06(0),
mAt(zeroVec),
mAt(ZERO_VEC),
mPos(-10000.0f, 10000.0f, 10000.0f),
mDir(0.0f, -1.0f, 0.0f),
mWhite(DrawGX::WHITE),
@@ -54,7 +57,7 @@ LightObject::LightObject()
mFlags(0x661) {}
void LightObject::Reset() {
SetPosAt(nw4r::math::VEC3(-10000.0f, 10000.0f, 10000.0f), zeroVec);
SetPosAt(nw4r::math::VEC3(-10000.0f, 10000.0f, 10000.0f), ZERO_VEC);
mFlags = 0x661;
mWhite = DrawGX::WHITE;
mBlack = DrawGX::BLACK;
@@ -149,12 +152,12 @@ void LightObject::InitGX(GXLightObj *obj) const {
case 1: {
nw4r::math::VEC3 tmp = field_0x94 * -1e10f;
GXInitLightPos(obj, tmp.x, tmp.y, tmp.z);
GXInitLightDir(obj, zeroVec[0], zeroVec[1], zeroVec[2]);
GXInitLightDir(obj, ZERO_VEC[0], ZERO_VEC[1], ZERO_VEC[2]);
break;
}
case 0: {
GXInitLightPos(obj, mViewPos.x, mViewPos.y, mViewPos.z);
GXInitLightDir(obj, zeroVec[0], zeroVec[1], zeroVec[2]);
GXInitLightDir(obj, ZERO_VEC[0], ZERO_VEC[1], ZERO_VEC[2]);
break;
}
case 2: {
@@ -259,8 +262,8 @@ void LightObject::CopyFromG3D(
g3dLight.GetAnmResult(&result, frame);
if (!skipDoingSomething || (result.flags & nw4r::g3d::LightAnmResult::FLAG_LIGHT_ENABLE) != 0) {
if ((result.flags & nw4r::g3d::LightAnmResult::FLAG_LIGHT_ENABLE) != 0) {
ApplyAnmResultA(result);
if (optObj != nullptr && optObj->ApplyAnmResultB(result)) {
ImportAnmG3D_Diff(result);
if (optObj != nullptr && optObj->ImportAnmG3D_Spec(result)) {
optObj->field_0x06 = mIndex;
optObj->mFlags |= 2;
}
@@ -273,7 +276,7 @@ void LightObject::CopyFromG3D(
}
}
void LightObject::ApplyAnmResultInner(const nw4r::g3d::LightAnmResult &res) {
void LightObject::ImportAnmG3D(const nw4r::g3d::LightAnmResult &res) {
// TODO
mFlags = mFlags & 0xF07E;
mCutoff = 90.0f;
@@ -298,8 +301,8 @@ void LightObject::ApplyAnmResultInner(const nw4r::g3d::LightAnmResult &res) {
}
}
void LightObject::ApplyAnmResultA(const nw4r::g3d::LightAnmResult &res) {
ApplyAnmResultInner(res);
void LightObject::ImportAnmG3D_Diff(const nw4r::g3d::LightAnmResult &res) {
ImportAnmG3D(res);
switch ((int)(res.flags & nw4r::g3d::LightAnmResult::FLAG_LIGHT_TYPE_MASK)) {
case 0: {
field_0x3D = 0;
@@ -334,9 +337,9 @@ void LightObject::ApplyAnmResultA(const nw4r::g3d::LightAnmResult &res) {
}
}
bool LightObject::ApplyAnmResultB(const nw4r::g3d::LightAnmResult &res) {
bool LightObject::ImportAnmG3D_Spec(const nw4r::g3d::LightAnmResult &res) {
if ((res.flags & nw4r::g3d::LightAnmResult::FLAG_SPECULAR_ENABLE) != 0) {
ApplyAnmResultInner(res);
ImportAnmG3D(res);
field_0x3D = 1;
mWhite = res.specColor;
SetPosAt(res.pos, res.aim);
+38 -33
View File
@@ -42,7 +42,7 @@ bool LightTexture::sUseDebug;
u16 LightTexture::sTextureSize = 0x20;
static s8 lbl_80574F3A = 0xFE;
s8 LightTexture::sScaleExp = 0xFE;
template <>
const char *IBinary<LightTexture>::GetBinaryType() {
@@ -53,18 +53,25 @@ template <>
int IBinary<LightTexture>::GetVersion() {
return 3;
}
} // namespace EGG
void LightTexture::fn_804AB270() {
namespace {
static const GXTevColorArg TEV_MAIN_COLOR[3] = {GX_CC_C0, GX_CC_C1, GX_CC_C2};
static const GXTevKColorSel TEV_SUB_COLOR[3] = {GX_TEV_KCSEL_K0, GX_TEV_KCSEL_K1, GX_TEV_KCSEL_K2};
static const GXIndTexMtxID TEV_MTX_ID[3] = {GX_ITM_0, GX_ITM_1, GX_ITM_2};
void setMaterialCommon() {
GXSetNumChans(1);
GXSetCullMode(GX_CULL_BACK);
GXSetChanCtrl(GX_COLOR0A0, false, GX_SRC_VTX, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_SIGN, GX_AF_NONE);
GXSetChanCtrl(GX_COLOR1A1, false, GX_SRC_VTX, GX_SRC_VTX, GX_LIGHT_NULL, GX_DF_NONE, GX_AF_NONE);
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0);
GXSetZMode(false, GX_LEQUAL, false);
EGG::DrawGX::SetBlendMode(DrawGX::BLEND_14);
EGG::DrawGX::SetBlendMode(EGG::DrawGX::BLEND_14);
}
void LightTexture::fn_804AB310(const GXColor &color) {
void setMaterialAmbient(const GXColor &color) {
GXSetNumTexGens(0);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3c, 0, 0x7d);
GXSetNumIndStages(0);
@@ -79,14 +86,9 @@ void LightTexture::fn_804AB310(const GXColor &color) {
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, 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, true, GX_TEVPREV);
EGG::DrawGX::SetBlendMode(DrawGX::BLEND_14);
EGG::DrawGX::SetBlendMode(EGG::DrawGX::BLEND_14);
}
static const GXTevColorArg sTevkColorArg[3] = {GX_CC_C0, GX_CC_C1, GX_CC_C2};
static const GXTevKColorSel sTevkColorSel[3] = {GX_TEV_KCSEL_K0, GX_TEV_KCSEL_K1, GX_TEV_KCSEL_K2};
static const GXIndTexMtxID sIndTexMtxId[3] = {GX_ITM_0, GX_ITM_1, GX_ITM_2};
void LightTexture::fn_804AB440() {
void setMaterialNormalSphere() {
GXSetNumTexGens(1);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3c, 0, 0x7d);
GXSetNumIndStages(1);
@@ -101,20 +103,20 @@ void LightTexture::fn_804AB440() {
GXSetTevSwapMode(id, GX_TEV_SWAP0, GX_TEV_SWAP0);
GXSetTevOrder(id, GX_TEXCOORD_NULL, static_cast<GXTexMapID>(GX_TEXMAP1 + i), GX_COLOR_NULL);
GXSetTevKColorSel(id, sTevkColorSel[i]);
GXSetTevKColorSel(id, TEV_SUB_COLOR[i]);
GXSetTevKAlphaSel(id, GX_TEV_KASEL_1);
GXSetTevColorIn(id, GX_CC_KONST, sTevkColorArg[i], GX_CC_TEXC, tevColorArg);
GXSetTevColorIn(id, GX_CC_KONST, TEV_MAIN_COLOR[i], GX_CC_TEXC, tevColorArg);
GXSetTevColorOp(id, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV);
GXSetTevAlphaIn(id, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST);
GXSetTevAlphaOp(id, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, true, GX_TEVPREV);
GXSetTevIndirect(
id, GX_INDTEXSTAGE0, GX_ITF_8, GX_ITB_STU, sIndTexMtxId[i], GX_ITW_0, GX_ITW_0, false, false, GX_ITBA_OFF
id, GX_INDTEXSTAGE0, GX_ITF_8, GX_ITB_STU, TEV_MTX_ID[i], GX_ITW_0, GX_ITW_0, false, false, GX_ITBA_OFF
);
}
EGG::DrawGX::SetBlendMode(DrawGX::BLEND_2);
EGG::DrawGX::SetBlendMode(EGG::DrawGX::BLEND_2);
}
void LightTexture::fn_804AB600() {
void setMaterialCrossOver() {
GXSetNumTexGens(2);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x3c, 0, 0x7d);
GXSetTexCoordGen2(GX_TEXCOORD1, GX_TG_MTX2x4, GX_TG_TEX0, 0x1e, 0, 0x7d);
@@ -128,17 +130,20 @@ void LightTexture::fn_804AB600() {
GXSetTevOrder(
id, static_cast<GXTexCoordID>(GX_TEXCOORD0 + i), static_cast<GXTexMapID>(GX_TEXMAP0 + i), GX_COLOR_NULL
);
GXSetTevKColorSel(id, sTevkColorSel[i]);
GXSetTevKColorSel(id, TEV_SUB_COLOR[i]);
GXSetTevKAlphaSel(id, GX_TEV_KASEL_1);
GXSetTevColorIn(id, GX_CC_KONST, sTevkColorArg[i], GX_CC_TEXC, tevColorArg);
GXSetTevColorIn(id, GX_CC_KONST, TEV_MAIN_COLOR[i], GX_CC_TEXC, tevColorArg);
GXSetTevColorOp(id, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, 1, GX_TEVPREV);
GXSetTevAlphaIn(id, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST);
GXSetTevAlphaOp(id, GX_TEV_ADD, GX_TB_ZERO, GX_CS_SCALE_1, true, GX_TEVPREV);
GXSetTevDirect(id);
}
EGG::DrawGX::SetBlendMode(DrawGX::BLEND_2);
EGG::DrawGX::SetBlendMode(EGG::DrawGX::BLEND_2);
}
} // namespace
namespace EGG {
void LightTexture::initialize(u16 textureSize, Heap *pHeap) {
static const int sCpuTexGradientOp[NUM_CPU_TEX] = {0, 0, 0, 1, 2, 3, 4, 0, 5, 5, 0, 0, 0, 0, 0, 0, 0, 0};
@@ -174,19 +179,19 @@ void LightTexture::initialize(u16 textureSize, Heap *pHeap) {
tex->fillGradient(sCpuTexGradientOp[i], 0x73, a + 1, b - 1, DrawGX::BLACK, DrawGX::WHITE, true, true);
}
if (sTextureSize == 0x100) {
lbl_80574F3A = 1;
sScaleExp = 1;
} else if (sTextureSize == 0x80) {
lbl_80574F3A = 0;
sScaleExp = 0;
} else if (sTextureSize == 0x40) {
lbl_80574F3A = -1;
sScaleExp = -1;
} else if (sTextureSize == 0x20) {
lbl_80574F3A = -2;
sScaleExp = -2;
} else if (sTextureSize == 0x10) {
lbl_80574F3A = -3;
sScaleExp = -3;
} else if (sTextureSize == 0x8) {
lbl_80574F3A = -4;
sScaleExp = -4;
} else if (sTextureSize == 0x4) {
lbl_80574F3A = -5;
sScaleExp = -5;
}
spNormalEnvironment = new (pHeap) CpuTexture(sTextureSize, sTextureSize, GX_TF_RGBA8);
@@ -274,7 +279,7 @@ void LightTexture::loadTextureFromResTimg(int index, EGG::ResTIMG *img) {
}
void LightTexture::initDrawSetting(u16 u1, u16 u2, u16 u3, u16 u4) {
static const u8 ALIGN_DECL(32) sVtxBuf[] = {0, 0, 0, 1, 1, 1, 1, 0};
static const u8 ALIGN_DECL(32) vtx[] = {0, 0, 0, 1, 1, 1, 1, 0};
nw4r::math::MTX44 mtx;
C_MTXOrtho(mtx, u4, 0.0f, 0.0f, u3, 0.0f, 1.0f);
@@ -285,7 +290,7 @@ void LightTexture::initDrawSetting(u16 u1, u16 u2, u16 u3, u16 u4) {
GXClearVtxDesc();
GXSetVtxDesc(GX_VA_POS, GX_INDEX8);
GXSetVtxDesc(GX_VA_TEX0, GX_DIRECT);
GXSetArray(GX_VA_POS, sVtxBuf, 2);
GXSetArray(GX_VA_POS, vtx, 2);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_POS, GX_CLR_RGB, GX_RGB565, 0);
GXSetVtxAttrFmt(GX_VTXFMT0, GX_VA_TEX0, GX_CLR_RGBA, GX_F32, 0);
@@ -298,7 +303,7 @@ void LightTexture::initDrawSetting(u16 u1, u16 u2, u16 u3, u16 u4) {
sDrawPosX = u1;
sDrawPosY = u2;
fn_804AB270();
setMaterialCommon();
GXSetCurrentMtx(0);
GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA);
}
@@ -352,7 +357,7 @@ void LightTexture::fn_804AC0E0(int i, const GXColor &color, bool b) {
c = DrawGX::BLACK;
}
fn_804AB310(c);
setMaterialAmbient(c);
f32 origin = 0.0f;
GXBegin(GX_QUADS, GX_VTXFMT0, 4);
@@ -374,13 +379,13 @@ void LightTexture::fn_804AC0E0(int i, const GXColor &color, bool b) {
case 0:
case 2:
spNormalEnvironment->load(GX_TEXMAP0);
fn_804AB440();
setMaterialNormalSphere();
field_0x9D = 3;
field_0x9E = 1;
break;
case 1:
fn_804AB600();
setMaterialCrossOver();
field_0x9D = 2;
field_0x9E = 0;
break;
@@ -568,7 +573,7 @@ void LightTexture::addLight(const EGG::LightObject &obj) {
mtx[1][1] = 0.0f;
mtx[1][2] = 0.0f;
GXSetIndTexMtx(sIndTexMtxId[remainder], mtx, -1);
GXSetIndTexMtx(TEV_MTX_ID[remainder], mtx, -1);
}
if (remainder == field_0x9D - 1) {
+12 -10
View File
@@ -15,7 +15,7 @@ namespace EGG {
StateEfb::Buffer StateEfb::spBufferSet[BUFFER_MAX];
f32 StateEfb::sWorkSpaceV[6];
f32 StateEfb::sWorkSpaceHideV[6];
f32 StateEfb::sUnkBuffer[6];
f32 StateEfb::sShiftViewPort[6];
u32 StateEfb::sFlag = 4;
s32 StateEfb::sWorkBuffer = -1;
@@ -204,18 +204,20 @@ void StateEfb::popWorkBuffer(bool b, u32 userData) {
f32 *StateEfb::fn_804B4550() {
const Screen::DataEfb &efb = GlobalDrawState::getScreen().GetDataEfb();
sUnkBuffer[0] = sWorkSpaceV[0];
sUnkBuffer[1] = sWorkSpaceV[1];
sUnkBuffer[2] = efb.vp.x2;
sUnkBuffer[3] = efb.vp.y2;
sUnkBuffer[4] = efb.vp.z1;
sUnkBuffer[5] = efb.vp.z2;
StateGX::GXSetViewport_(sUnkBuffer[0], sUnkBuffer[1], sUnkBuffer[2], sUnkBuffer[3], sUnkBuffer[4], sUnkBuffer[5]);
sShiftViewPort[0] = sWorkSpaceV[0];
sShiftViewPort[1] = sWorkSpaceV[1];
sShiftViewPort[2] = efb.vp.x2;
sShiftViewPort[3] = efb.vp.y2;
sShiftViewPort[4] = efb.vp.z1;
sShiftViewPort[5] = efb.vp.z2;
StateGX::GXSetViewport_(
sShiftViewPort[0], sShiftViewPort[1], sShiftViewPort[2], sShiftViewPort[3], sShiftViewPort[4], sShiftViewPort[5]
);
u32 f[4];
StateGX::CalculateScreenScissor(sUnkBuffer, f);
StateGX::GetScissorSafeParam(sShiftViewPort, f);
StateGX::GXSetScissor_(f[0], f[1], f[2], f[3]);
StateGX::GXSetScissorBoxOffset_(0, 0);
return sUnkBuffer;
return sShiftViewPort;
}
bool StateEfb::isEnableDirtyBufferMode() {
+18 -19
View File
@@ -21,10 +21,11 @@ namespace {
static GXTexRegion *texRegionCallback(const GXTexObj *pObj, GXTexMapID map) {
return &EGG::StateGX::s_tmem_layout.mRegions[map % EGG::StateGX::s_tmem_layout.numRegions];
}
static GXTexObj ALIGN_DECL(32) DUMMY_TEX_OBJ;
static const GXColor white = {0xFF, 0xFF, 0xFF, 0xFF};
static const GXColor WHITE = {0xFF, 0xFF, 0xFF, 0xFF};
static const f32 identity[3][4] = {
static const f32 IDENTITY[3][4] = {
{1.0f, 0.0f, 0.0f, 0.0f},
{0.0f, 1.0f, 0.0f, 0.0f},
{0.0f, 0.0f, 1.0f, 0.0f},
@@ -33,8 +34,6 @@ static const f32 identity[3][4] = {
} // namespace
namespace EGG {
GXTexObj ALIGN_DECL(32) StateGX::sDefaultTexObj;
StateGX::MemLayout StateGX::s_tmem_layout;
StateGX::CacheGX StateGX::s_cacheGX;
@@ -56,10 +55,10 @@ void StateGX::initialize(u16 width, u16 height, GXColor color, GXPixelFmt pixelF
BaseSystem::getDisplay()->setClearColor(color);
}
static u8 sDefaultTexObjData[16] = {0};
static u8 NullTexData[16] = {0};
GXInitTexObj(&sDefaultTexObj, sDefaultTexObjData, 4, 4, GX_TF_IA8, GX_CLAMP, GX_CLAMP, 0);
GXInitTexObjLOD(&sDefaultTexObj, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1);
GXInitTexObj(&DUMMY_TEX_OBJ, NullTexData, 4, 4, GX_TF_IA8, GX_CLAMP, GX_CLAMP, 0);
GXInitTexObjLOD(&DUMMY_TEX_OBJ, GX_LINEAR, GX_LINEAR, 0.0f, 0.0f, 0.0f, 0, 0, GX_ANISO_1);
invalidateTexAllGX();
frameInit();
setTMemLayout(nw4r::g3d::tmem::TMEM_LAYOUT_1);
@@ -137,12 +136,12 @@ void StateGX::resetVtx() {
void StateGX::resetColorChannel() {
GXSetNumChans(1);
GXSetChanAmbColor(GX_COLOR0A0, white);
GXSetChanAmbColor(GX_COLOR1A1, white);
GXSetChanAmbColor(GX_COLOR0A0, WHITE);
GXSetChanAmbColor(GX_COLOR1A1, WHITE);
GXSetChanMatColor(GX_COLOR0A0, white);
GXSetChanMatColor(GX_COLOR0A0, WHITE);
GXSetChanMatColor(GX_COLOR1A1, white);
GXSetChanMatColor(GX_COLOR1A1, WHITE);
GXSetCullMode(GX_CULL_BACK);
GXSetChanCtrl(GX_COLOR0A0, false, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_CLAMP, GX_AF_NONE);
GXSetChanCtrl(GX_COLOR1A1, false, GX_SRC_REG, GX_SRC_REG, GX_LIGHT_NULL, GX_DF_CLAMP, GX_AF_NONE);
@@ -150,12 +149,12 @@ void StateGX::resetColorChannel() {
void StateGX::resetIndirect() {
GXSetNumIndStages(0);
static const f32 ind[2][3] = {
static const f32 offsetMtx[2][3] = {
{0.5f, 0.0f, 0.0f},
{0.0f, 0.5f, 0.0f},
};
for (u32 i = 0; i < 3; i++) {
GXSetIndTexMtx(static_cast<GXIndTexMtxID>(i + GX_ITM_0), ind, 1);
GXSetIndTexMtx(static_cast<GXIndTexMtxID>(i + GX_ITM_0), offsetMtx, 1);
}
for (u32 i = 0; i < 4; i++) {
GXSetIndTexCoordScale(static_cast<GXIndTexStageID>(i + GX_INDTEXSTAGE0), GX_ITS_1, GX_ITS_1);
@@ -164,7 +163,7 @@ void StateGX::resetIndirect() {
void StateGX::resetTexture() {
for (u32 i = 0; i < s_tmem_layout.numRegions; i++) {
GXLoadTexObj(&sDefaultTexObj, static_cast<GXTexMapID>(i + GX_TEXMAP0));
GXLoadTexObj(&DUMMY_TEX_OBJ, static_cast<GXTexMapID>(i + GX_TEXMAP0));
}
}
@@ -172,7 +171,7 @@ void StateGX::resetTexGen() {
GXSetNumTexGens(1);
for (u32 i = 0; i < 10; i++) {
GXLoadTexMtxImm(identity, i * 3 + 0x1E, GX_MTX3x4);
GXLoadTexMtxImm(IDENTITY, i * 3 + 0x1E, GX_MTX3x4);
}
for (u32 i = 0; i < GX_MAX_TEXCOORD; i++) {
@@ -198,12 +197,12 @@ void StateGX::resetTev() {
for (u32 i = 0; i < GX_MAX_KCOLOR; i++) {
GXTevKColorID id = static_cast<GXTevKColorID>(i);
GXSetTevKColor(id, white);
GXSetTevKColor(id, WHITE);
}
for (u32 i = 0; i < GX_MAX_TEVREG; i++) {
GXTevRegID id = static_cast<GXTevRegID>(i);
GXSetTevColor(id, white);
GXSetTevColor(id, WHITE);
}
GXSetTevSwapModeTable(GX_TEV_SWAP0, GX_CH_RED, GX_CH_GREEN, GX_CH_BLUE, GX_CH_ALPHA);
@@ -217,7 +216,7 @@ void StateGX::resetPE() {
GXSetAlphaCompare(GX_ALWAYS, 0, GX_AOP_AND, GX_ALWAYS, 0);
GXSetZTexture(0, GX_TF_Z24X8, 0);
GXSetZMode(true, GX_LEQUAL, true);
GXSetFog(GX_FOG_NONE, white, 0.0f, 1.0f, 0.1f, 1.0f);
GXSetFog(GX_FOG_NONE, WHITE, 0.0f, 1.0f, 0.1f, 1.0f);
GXSetFogRangeAdj(false, 0, nullptr);
GXSetZCompLoc(true);
GXSetDstAlpha(false, 0);
@@ -288,7 +287,7 @@ StateGX::CacheGX &StateGX::GXSetDstAlpha_(bool enable, u8 alpha) {
return s_cacheGX;
}
void StateGX::CalculateScreenScissor(const f32 src[4], u32 dst[4]) {
void StateGX::GetScissorSafeParam(const f32 src[4], u32 dst[4]) {
dst[0] = src[0] >= 0.0f ? src[0] : 0.0f;
dst[1] = src[1] >= 0.0f ? src[1] : 0.0f;
dst[2] = dst[0] + src[2] > 640.0f ? 640 - dst[0] : src[2];
+9 -11
View File
@@ -2,6 +2,7 @@
#include "common.h"
#include "d/a/obj/d_a_obj_base.h"
#include "d/d_gfx.h"
#include "d/d_light_env.h"
#include "d/d_sc_game.h"
#include "d/t/d_t_siren.h"
@@ -25,7 +26,7 @@
namespace d3d {
static EGG::Screen sSomeScreen;
static SomeList sSomeList;
static SomeList l_list;
AnmMdlWrapper::AnmMdlWrapper() : mpSoundSource(nullptr), mpSoundData(nullptr) {}
@@ -210,22 +211,19 @@ bool AnmMdlWrapper2::setAnm(const char *anmFile, m3d::playMode_e mode, f32 frame
return false;
}
extern "C" f32 lbl_80575150;
extern "C" f32 lbl_8057514C;
extern "C" f32 lbl_80576A0C;
void insertNode(SomeListNode *node, f32 a, f32 b) {
node->field_0x04 = ((a * lbl_80575150) - 0.5f) + lbl_8057514C;
node->field_0x06 = (lbl_80575150 - 0.5f) - b;
sSomeList.append(node);
node->field_0x04 =
((a * dGfx_c::getCurrentScreenTo4x3WidthScaleF()) - 0.5f) + dGfx_c::getCurrentScreenWidthLimitF();
node->field_0x06 = (dGfx_c::getCurrentScreenHeightLimitF() - 0.5f) - b;
l_list.append(node);
}
void clearList() {
// TODO
for (SomeList::Iterator it = sSomeList.GetBeginIter(); it != sSomeList.GetEndIter(); ++it) {
for (SomeList::Iterator it = l_list.GetBeginIter(); it != l_list.GetEndIter(); ++it) {
SomeListNode *nd = &*it;
SomeList::Iterator itCopy = sSomeList.GetPosition(nd);
sSomeList.remove(nd);
SomeList::Iterator itCopy = l_list.GetPosition(nd);
l_list.remove(nd);
it = itCopy;
}
}