Simple match

This commit is contained in:
robojumper
2025-03-20 19:59:10 +01:00
parent 2c2d5849b4
commit a26b40083f
5 changed files with 71 additions and 8 deletions
+2
View File
@@ -2304,6 +2304,8 @@ egg/gfx/eggPostEffectMaskDOF.cpp:
egg/gfx/eggPostEffectSimple.cpp:
.text start:0x804B1BF0 end:0x804B1E58
.data start:0x8056F210 end:0x8056F230
.sdata2 start:0x8057F810 end:0x8057F818
egg/gfx/eggScreen.cpp:
.text start:0x804B1E60 end:0x804B30B4
+5 -5
View File
@@ -26487,7 +26487,7 @@ scnProcDraw__Q23EGG12DrawPathBaseFUs = .text:0x804A0E60; // type:function size:0
FUN_804a0ea0 = .text:0x804A0EA0; // type:function size:0x188
__dt__Q23EGG14PostEffectMaskFv = .text:0x804A1030; // type:function size:0x40
__dt__Q23EGG14PostEffectUnk1Fv = .text:0x804A1070; // type:function size:0x40
FUN_804a10b0 = .text:0x804A10B0; // type:function size:0x40
__dt__Q23EGG16PostEffectSimpleFv = .text:0x804A10B0; // type:function size:0x40
FUN_804a10f0 = .text:0x804A10F0; // type:function size:0x60
FUN_804a1150 = .text:0x804A1150; // type:function size:0x21C
FUN_804a1370 = .text:0x804A1370; // type:function size:0x7A4
@@ -26720,8 +26720,8 @@ FUN_804b1570 = .text:0x804B1570; // type:function size:0x64C
FUN_804b1bc0 = .text:0x804B1BC0; // type:function size:0x8
FUN_804b1bd0 = .text:0x804B1BD0; // type:function size:0x8
FUN_804b1be0 = .text:0x804B1BE0; // type:function size:0x8
FUN_804b1bf0 = .text:0x804B1BF0; // type:function size:0x5C
FUN_804b1c50 = .text:0x804B1C50; // type:function size:0x208
__ct__Q23EGG16PostEffectSimpleFv = .text:0x804B1BF0; // type:function size:0x5C
setMaterialInternal__Q23EGG16PostEffectSimpleFv = .text:0x804B1C50; // type:function size:0x208
Initialize__Q23EGG6ScreenFPCUsPCUsPQ23EGG6Screen = .text:0x804B1E60; // type:function size:0x1DC
__ct__Q23EGG6ScreenFv = .text:0x804B2040; // type:function size:0xCC
__ct__Q23EGG6ScreenFffffPCQ23EGG6ScreenQ33EGG7Frustum10CanvasMode = .text:0x804B2110; // type:function size:0xBC
@@ -37380,8 +37380,8 @@ __vt__Q23EGG14PostEffectBlur = .data:0x8056F170; // type:object size:0x1C
__vt__Q23EGG14PostEffectUnk1 = .data:0x8056F190; // type:object size:0x20
__vt__Q23EGG14PostEffectUnk2 = .data:0x8056F1B0; // type:object size:0x1C
__vt__Q23EGG14PostEffectMask = .data:0x8056F1D0; // type:object size:0x1C
lbl_8056F1F0 = .data:0x8056F1F0; // type:object size:0x20
lbl_8056F210 = .data:0x8056F210; // type:object size:0x20
lbl_8056F1F0 = .data:0x8056F1F0; // type:object size:0x1C
__vt__Q23EGG16PostEffectSimple = .data:0x8056F210; // type:object size:0x1C
sTVModeInfo__Q23EGG6Screen = .data:0x8056F230; // type:object size:0x24 data:2byte
EGG__Screen__vtable = .data:0x8056F254; // type:object size:0x14
__vt__Q23EGG16ScreenEffectBase = .data:0x8056F268; // type:object size:0xC
+1 -1
View File
@@ -895,7 +895,7 @@ config.libs = [
Object(NonMatching, "egg/gfx/eggPostEffectUnk2.cpp"), # Unknown
Object(Matching, "egg/gfx/eggPostEffectMask.cpp"),
Object(NonMatching, "egg/gfx/eggPostEffectMaskDOF.cpp"),
Object(NonMatching, "egg/gfx/eggPostEffectSimple.cpp"),
Object(Matching, "egg/gfx/eggPostEffectSimple.cpp"),
Object(NonMatching, "egg/gfx/eggScreen.cpp"),
Object(Matching, "egg/gfx/eggScreenEffectBase.cpp"),
Object(NonMatching, "egg/gfx/eggScreenEffectBlur.cpp"), # Unknown Guess
+17 -1
View File
@@ -1,6 +1,22 @@
#ifndef EGG_POST_EFFECT_SIMPLE_H
#define EGG_POST_EFFECT_SIMPLE_H
namespace EGG {} // namespace EGG
#include "egg/gfx/eggPostEffectBase.h"
#include "rvl/GX/GXTypes.h"
namespace EGG {
class PostEffectSimple : public PostEffectBase {
public:
PostEffectSimple();
virtual void setMaterialInternal() override;
private:
/* 0x2C */ GXColor field_0x2C;
/* 0x30 */ f32 field_0x30;
/* 0x34 */ GXTevScale field_0x34;
/* 0x38 */ s32 field_0x38;
};
} // namespace EGG
#endif
+46 -1
View File
@@ -1,3 +1,48 @@
#include "egg/gfx/eggPostEffectSimple.h"
namespace EGG {} // namespace EGG
#include "egg/gfx/eggDrawGX.h"
#include "nw4r/math/math_types.h"
#include "rvl/GX/GXTypes.h"
namespace EGG {
PostEffectSimple::PostEffectSimple()
: field_0x2C(DrawGX::WHITE), field_0x30(1.0f), field_0x34(GX_CS_SCALE_1), field_0x38(1) {}
void PostEffectSimple::setMaterialInternal() {
loadTextureInternal();
GXColor c = field_0x2C;
if (field_0x30 < 1.0f) {
scaleColor(c, c, true, field_0x30);
}
setMatColorChannel();
GXSetNumTexGens(1);
GXSetTexCoordGen2(GX_TEXCOORD0, GX_TG_MTX2x4, GX_TG_TEX0, 0x1e, 0, 0x7d);
nw4r::math::MTX34 mtx;
getBaseTexMtx(&mtx);
GXLoadTexMtxImm(mtx, 0x1e, GX_MTX_2x4);
setMatInd();
GXSetNumTevStages(1);
GXSetTevDirect(GX_TEVSTAGE0);
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);
GXSetTevKColorSel(GX_TEVSTAGE0, GX_TEV_KCSEL_K0);
GXSetTevKAlphaSel(GX_TEVSTAGE0, GX_TEV_KASEL_K0_A);
GXSetTevKColor(GX_KCOLOR0, c);
GXSetTevOrder(GX_TEVSTAGE0, GX_TEXCOORD0, mTexMapId, GX_COLOR_NULL);
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXC, GX_CC_KONST, GX_CC_ZERO);
GXSetTevColorOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, field_0x34, 1, GX_TEVPREV);
switch (field_0x38) {
case 0: GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST); break;
case 1: GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_TEXA, GX_CA_KONST, GX_CA_ZERO); break;
case 2:
GXSetTevColorIn(GX_TEVSTAGE0, GX_CC_ZERO, GX_CC_TEXA, GX_CC_KONST, GX_CC_ZERO);
GXSetTevAlphaIn(GX_TEVSTAGE0, GX_CA_ZERO, GX_CA_ZERO, GX_CA_ZERO, GX_CA_KONST);
break;
}
GXSetTevAlphaOp(GX_TEVSTAGE0, GX_TEV_ADD, GX_TB_ZERO, field_0x34, true, GX_TEVPREV);
setMatPE();
}
} // namespace EGG