Merge pull request #265 from elijah-thomas774/nsmbw-symbol-update

Some Symbols From NSMBW
This commit is contained in:
Elijah Thomas
2025-11-16 09:48:45 -05:00
committed by GitHub
20 changed files with 269 additions and 262 deletions
+1 -1
View File
@@ -4904,7 +4904,7 @@ egg/gfx/eggCapTexture.cpp:
.text start:0x8049D7C0 end:0x8049DA28 align:16
.rodata start:0x804FBA30 end:0x804FBA48
.data start:0x8056ED70 end:0x8056ED80
.sdata2 start:0x8057F410 end:0x8057F418
.sdata2 start:0x8057F408 end:0x8057F418
.sbss2 start:0x8057FFC0 end:0x8057FFC8
egg/gfx/eggCpuTexture.cpp:
+41 -43
View File
@@ -17844,7 +17844,7 @@ XrotS__6mMtx_cFRC4mAng = .text:0x802F16B0; // type:function size:0xBC
XrotM__6mMtx_cFRC4mAng = .text:0x802F1770; // type:function size:0x4C
YrotS__6mMtx_cFRC4mAng = .text:0x802F17C0; // type:function size:0xBC
YrotM__6mMtx_cFRC4mAng = .text:0x802F1880; // type:function size:0x4C
mMtx__ZrotS = .text:0x802F18D0; // type:function size:0xBC
ZrotS__6mMtx_cF4mAng = .text:0x802F18D0; // type:function size:0xBC
ZrotM__6mMtx_cFRC4mAng = .text:0x802F1990; // type:function size:0x4C
ZXYrotS__6mMtx_cFRC4mAngRC4mAngRC4mAng = .text:0x802F19E0; // type:function size:0x60
ZXYrotM__6mMtx_cFRC4mAngRC4mAngRC4mAng = .text:0x802F1A40; // type:function size:0x60
@@ -17876,7 +17876,7 @@ normalizeRS__7mVec3_cFv = .text:0x802F2BF0; // type:function size:0x84
rotX__7mVec3_cFRC4mAng = .text:0x802F2C80; // type:function size:0xA8
rotY__7mVec3_cFRC4mAng = .text:0x802F2D30; // type:function size:0xAC
rotZ__7mVec3_cFRC4mAng = .text:0x802F2DE0; // type:function size:0xA8
mVec__sinit = .text:0x802F2E90; // type:function size:0x78
__sinit_\m_vec_cpp = .text:0x802F2E90; // type:function size:0x78
init__Q210homebutton15FrameControllerFifff = .text:0x802F2F10; // type:function size:0x38
initFrame__Q210homebutton15FrameControllerFv = .text:0x802F2F50; // type:function size:0x20
calc__Q210homebutton15FrameControllerFv = .text:0x802F2F70; // type:function size:0x14C
@@ -26430,7 +26430,7 @@ __dt__Q23EGG9AnalizeDLFv = .text:0x8049D780; // type:function size:0x40 scope:we
configure__Q23EGG10CapTextureFv = .text:0x8049D7C0; // type:function size:0x7C
capture__Q23EGG10CapTextureFUsUsbi = .text:0x8049D840; // type:function size:0x184
fn_8049D9D0__Q23EGG10CapTextureFUc = .text:0x8049D9D0; // type:function size:0x58
calcColorGradient__Q23EGG27@unnamed@eggCpuTexture_cpp@FR8_GXColorRC8_GXColorRC8_GXColorf = .text:0x8049DA30; // type:function size:0x188
blendColor__Q23EGG27@unnamed@eggCpuTexture_cpp@FR8_GXColorRC8_GXColorRC8_GXColorf = .text:0x8049DA30; // type:function size:0x188
makeGradient__Q23EGG27@unnamed@eggCpuTexture_cpp@FiP8_GXColorUsUsUsRC8_GXColorRC8_GXColor = .text:0x8049DBC0; // type:function size:0x450
__ct__Q23EGG10CpuTextureFv = .text:0x8049E010; // type:function size:0x44
__ct__Q23EGG10CpuTextureFUsUs9_GXTexFmt = .text:0x8049E060; // type:function size:0x40
@@ -26620,9 +26620,9 @@ InitGX__Q23EGG11LightObjectCFP11_GXLightObj = .text:0x804A9D40; // type:function
CopyToG3D_World__Q23EGG11LightObjectCFRQ34nw4r3g3d8LightObj = .text:0x804A9F40; // type:function size:0x150
CopyToG3D_View__Q23EGG11LightObjectCFRQ34nw4r3g3d8LightObjRCQ34nw4r4math5MTX34 = .text:0x804AA090; // type:function size:0x144
CopyFromG3D__Q23EGG11LightObjectFRCQ34nw4r3g3d11ResAnmLightfPQ23EGG11LightObjectb = .text:0x804AA1E0; // type:function size:0xD8
ApplyAnmResultInner__Q23EGG11LightObjectFRCQ34nw4r3g3d14LightAnmResult = .text:0x804AA2C0; // type:function size:0x9C
ApplyAnmResultA__Q23EGG11LightObjectFRCQ34nw4r3g3d14LightAnmResult = .text:0x804AA360; // type:function size:0x168
ApplyAnmResultB__Q23EGG11LightObjectFRCQ34nw4r3g3d14LightAnmResult = .text:0x804AA4D0; // type:function size:0xA8
ImportAnmG3D__Q23EGG11LightObjectFRCQ34nw4r3g3d14LightAnmResult = .text:0x804AA2C0; // type:function size:0x9C
ImportAnmG3D_Diff__Q23EGG11LightObjectFRCQ34nw4r3g3d14LightAnmResult = .text:0x804AA360; // type:function size:0x168
ImportAnmG3D_Spec__Q23EGG11LightObjectFRCQ34nw4r3g3d14LightAnmResult = .text:0x804AA4D0; // type:function size:0xA8
CalcDirDist__Q23EGG11LightObjectFv = .text:0x804AA580; // type:function size:0xD4
CalcAt__Q23EGG11LightObjectFv = .text:0x804AA660; // type:function size:0x44
SetPos__Q23EGG11LightObjectFRCQ34nw4r4math4VEC3 = .text:0x804AA6B0; // type:function size:0x1C
@@ -26634,10 +26634,10 @@ GetBinaryInner__Q23EGG11LightObjectCFPQ33EGG28IBinary<Q23EGG11LightObject>3Bin =
SetBinaryInner__Q23EGG11LightObjectFRCQ33EGG28IBinary<Q23EGG11LightObject>3BinRCQ33EGG28IBinary<Q23EGG11LightObject>3Binf = .text:0x804AAC60; // type:function size:0x5EC
GetBinaryType__Q23EGG29IBinary<Q23EGG12LightTexture>Fv = .text:0x804AB250; // type:function size:0x8
GetVersion__Q23EGG29IBinary<Q23EGG12LightTexture>Fv = .text:0x804AB260; // type:function size:0x8
fn_804AB270__Q23EGG12LightTextureFv = .text:0x804AB270; // type:function size:0x9C
fn_804AB310__Q23EGG12LightTextureFRC8_GXColor = .text:0x804AB310; // type:function size:0x124
fn_804AB440__Q23EGG12LightTextureFv = .text:0x804AB440; // type:function size:0x1B4
fn_804AB600__Q23EGG12LightTextureFv = .text:0x804AB600; // type:function size:0x180
setMaterialCommon__29@unnamed@eggLightTexture_cpp@Fv = .text:0x804AB270; // type:function size:0x9C
setMaterialAmbient__29@unnamed@eggLightTexture_cpp@FRC8_GXColor = .text:0x804AB310; // type:function size:0x124
setMaterialNormalSphere__29@unnamed@eggLightTexture_cpp@Fv = .text:0x804AB440; // type:function size:0x1B4
setMaterialCrossOver__29@unnamed@eggLightTexture_cpp@Fv = .text:0x804AB600; // type:function size:0x180
initialize__Q23EGG12LightTextureFUsPQ23EGG4Heap = .text:0x804AB780; // type:function size:0x26C
__ct__Q23EGG12LightTextureFPCcPCQ23EGG19LightTextureManager = .text:0x804AB9F0; // type:function size:0x284
__dt__Q23EGG12LightTextureFv = .text:0x804ABC80; // type:function size:0x90
@@ -26783,7 +26783,7 @@ GXSetAlphaUpdate___Q23EGG7StateGXFb = .text:0x804B50F0; // type:function size:0x
GXSetDither___Q23EGG7StateGXFb = .text:0x804B5140; // type:function size:0x4C
GXCopyTex___Q23EGG7StateGXFPvb = .text:0x804B5190; // type:function size:0x8
GXSetDstAlpha___Q23EGG7StateGXFbUc = .text:0x804B51A0; // type:function size:0x4C
CalculateScreenScissor__Q23EGG7StateGXFPCfPUl = .text:0x804B51F0; // type:function size:0x108
GetScissorSafeParam__Q23EGG7StateGXFPCfPUl = .text:0x804B51F0; // type:function size:0x108
GXSetProjection___Q23EGG7StateGXFPA4_f17_GXProjectionType = .text:0x804B5300; // type:function size:0x2C
GXSetProjectionv___Q23EGG7StateGXFPCf = .text:0x804B5330; // type:function size:0x2C
GXSetViewport___Q23EGG7StateGXFffffff = .text:0x804B5360; // type:function size:0x2C
@@ -29198,24 +29198,24 @@ gRMO_Pal60_640x456IntDf_4x3__22@unnamed@eggVideo_cpp@ = .rodata:0x804FB908; // t
gRMO_Pal50_640x456IntDf_4x3__22@unnamed@eggVideo_cpp@ = .rodata:0x804FB944; // type:object size:0x3C scope:local
gRMO_Ntsc_640x456Prog_4x3__22@unnamed@eggVideo_cpp@ = .rodata:0x804FB980; // type:object size:0x3C scope:local
gRMO_Ntsc_640x456IntDf_4x3__22@unnamed@eggVideo_cpp@ = .rodata:0x804FB9BC; // type:object size:0x3C scope:local
renderModes__3EGG = .rodata:0x804FB9F8; // type:object size:0x28 scope:local
gStandardRenderModeObjSet__22@unnamed@eggVideo_cpp@ = .rodata:0x804FB9F8; // type:object size:0x28 scope:local
@4804 = .rodata:0x804FBA20; // type:object size:0x10 scope:local data:4byte
copyArg2__3EGG = .rodata:0x804FBA30; // type:object size:0x18 scope:local
SAMPLE_PATTERN_OFF__27@unnamed@eggCapTexture_cpp@ = .rodata:0x804FBA30; // type:object size:0x18 scope:local
sVtxTypes__3EGG = .rodata:0x804FBA60; // type:object size:0x10
@LOCAL@SetVtxState__Q23EGG6DrawGXFQ33EGG6DrawGX7VtxType@sVtxDataType0 = .rodata:0x804FBA80; // type:object size:0x30 align:32
@LOCAL@SetVtxState__Q23EGG6DrawGXFQ33EGG6DrawGX7VtxType@sNrmDataType0@0 = .rodata:0x804FBAC0; // type:object size:0x24 align:32
@LOCAL@SetVtxState__Q23EGG6DrawGXFQ33EGG6DrawGX7VtxType@sVtxDataType7@1 = .rodata:0x804FBB00; // type:object size:0x10 align:32
@LOCAL@SetVtxState__Q23EGG6DrawGXFQ33EGG6DrawGX7VtxType@sVtxDataType9@4 = .rodata:0x804FBB20; // type:object size:0x18 align:32
s_ZMode__Q23EGG6DrawGX = .rodata:0x804FBB38; // type:object size:0x30
s_Blend__Q23EGG6DrawGX = .rodata:0x804FBB68; // type:object size:0xF0
@LOCAL@SetVtxState__Q23EGG6DrawGXFQ33EGG6DrawGX7VtxType@QUAD_VTX@1 = .rodata:0x804FBB00; // type:object size:0x10 align:32
@LOCAL@SetVtxState__Q23EGG6DrawGXFQ33EGG6DrawGX7VtxType@QUAD_VTX@4 = .rodata:0x804FBB20; // type:object size:0x18 align:32
@LOCAL@SetZMode__Q23EGG6DrawGXFQ33EGG6DrawGX5ZMode@Z_ARG = .rodata:0x804FBB38; // type:object size:0x30
@LOCAL@SetBlendMode__Q23EGG6DrawGXFQ33EGG6DrawGX5Blend@BLEND = .rodata:0x804FBB68; // type:object size:0xF0
lbl_804FBC58 = .rodata:0x804FBC58; // type:object size:0x18
lbl_804FBC70 = .rodata:0x804FBC70; // type:object size:0xC
lbl_804FBC7C = .rodata:0x804FBC7C; // type:object size:0xC
zeroVec__3EGG = .rodata:0x804FBC88; // type:object size:0xC align:4 data:float
sTevkColorArg__3EGG = .rodata:0x804FBC98; // type:object size:0xC scope:local data:4byte
ZERO_VEC__28@unnamed@eggLightObject_cpp@ = .rodata:0x804FBC88; // type:object size:0xC align:4 data:float
TEV_MAIN_COLOR__29@unnamed@eggLightTexture_cpp@ = .rodata:0x804FBC98; // type:object size:0xC scope:local data:4byte
...rodata.0 = .rodata:0x804FBC98; // type:label scope:local
sTevkColorSel__3EGG = .rodata:0x804FBCA4; // type:object size:0xC scope:local data:4byte
sIndTexMtxId__3EGG = .rodata:0x804FBCB0; // type:object size:0xC scope:local data:4byte
TEV_SUB_COLOR__29@unnamed@eggLightTexture_cpp@ = .rodata:0x804FBCA4; // type:object size:0xC scope:local data:4byte
TEV_MTX_ID__29@unnamed@eggLightTexture_cpp@ = .rodata:0x804FBCB0; // type:object size:0xC scope:local data:4byte
@LOCAL@initialize__Q23EGG12LightTextureFUsPQ23EGG4Heap@sCpuTexGradientOp = .rodata:0x804FBCC0; // type:object size:0x48 scope:local data:4byte
sFaceMin__3EGG = .rodata:0x804FBD08; // type:object size:0xC scope:local align:4 data:float
...rodata.0 = .rodata:0x804FBD08; // type:label scope:local
@@ -29227,10 +29227,10 @@ lbl_804FBD50 = .rodata:0x804FBD50; // type:object size:0x10 align:4 data:float
lbl_804FBD60 = .rodata:0x804FBD60; // type:object size:0x10 align:4 data:float
lbl_804FBD70 = .rodata:0x804FBD70; // type:object size:0x18
lbl_804FBD88 = .rodata:0x804FBD88; // type:object size:0x18 data:4byte
identity__24@unnamed@eggStateGX_cpp@ = .rodata:0x804FBDA0; // type:object size:0x30 scope:local
IDENTITY__24@unnamed@eggStateGX_cpp@ = .rodata:0x804FBDA0; // type:object size:0x30 scope:local
@LOCAL@setTMemLayout__Q23EGG7StateGXFi@numbers = .rodata:0x804FBDD0; // type:object size:0x10 scope:local
@LOCAL@setTMemLayout__Q23EGG7StateGXFi@offsets@0 = .rodata:0x804FBDE0; // type:object size:0x10 scope:local
@LOCAL@resetIndirect__Q23EGG7StateGXFv@ind = .rodata:0x804FBDF0; // type:object size:0x18 scope:local
@LOCAL@resetIndirect__Q23EGG7StateGXFv@offsetMtx = .rodata:0x804FBDF0; // type:object size:0x18 scope:local
lbl_804FBE08 = .rodata:0x804FBE08; // type:object size:0x10 data:4byte
lbl_804FBE18 = .rodata:0x804FBE18; // type:object size:0x40
lbl_804FBE58 = .rodata:0x804FBE58; // type:object size:0xC
@@ -39192,7 +39192,7 @@ __vt__Q23EGG12LookAtCamera = .data:0x8056ED30; // type:object size:0x30
__vt__Q23EGG9AnalizeDL = .data:0x8056ED60; // type:object size:0xC scope:weak
__vt__Q23EGG10CapTexture = .data:0x8056ED70; // type:object size:0x10
__vt__Q23EGG10CpuTexture = .data:0x8056ED80; // type:object size:0x10
DummyTexureData = .data:0x8056EDA0; // type:object size:0x40
@LOCAL@Initialize__Q23EGG6DrawGXFPQ23EGG4Heap@s_clear_z_TX = .data:0x8056EDA0; // type:object size:0x40
jumptable_8056EDE0 = .data:0x8056EDE0; // type:object size:0x38 scope:local
jumptable_8056EE18 = .data:0x8056EE18; // type:object size:0x48 scope:local
__vt__Q23EGG12DrawPathBase = .data:0x8056EE60; // type:object size:0x50
@@ -41660,13 +41660,13 @@ sWPADWorkSize__Q23EGG17CoreControllerMgr = .sdata:0x80574EE8; // type:object siz
@3877 = .sdata:0x80574F00; // type:object size:0x8 scope:local data:string
@3879 = .sdata:0x80574F08; // type:object size:0x8 scope:local data:string
@3880 = .sdata:0x80574F10; // type:object size:0x7 scope:local data:string
sLightMaskDefault__Q23EGG6DrawGX = .sdata:0x80574F18; // type:object size:0x4 data:4byte
LIGHTMASK_DEFAULT__23@unnamed@eggDrawGX_cpp@ = .sdata:0x80574F18; // type:object size:0x4 data:4byte
lbl_80574F20 = .sdata:0x80574F20; // type:object size:0x8
lbl_80574F28 = .sdata:0x80574F28; // type:object size:0x4
lbl_80574F2C = .sdata:0x80574F2C; // type:object size:0x4 data:4byte
DISABLE_STRING__29@unnamed@eggLightManager_cpp@ = .sdata:0x80574F2C; // type:object size:0x4 data:4byte
lbl_80574F30 = .sdata:0x80574F30; // type:object size:0x8
sTextureSize__Q23EGG12LightTexture = .sdata:0x80574F38; // type:object size:0x2 data:2byte
lbl_80574F3A__3EGG = .sdata:0x80574F3A; // type:object size:0x1 scope:local data:byte
sScaleExp__Q23EGG12LightTexture = .sdata:0x80574F3A; // type:object size:0x1 scope:local data:byte
@8921 = .sdata:0x80574F3C; // type:object size:0x5 scope:local data:string
sByteCodeCalcStr__Q23EGG7ModelEx = .sdata:0x80574F48; // type:object size:0x4 data:4byte
@5795 = .sdata:0x80574F50; // type:object size:0x8 scope:local data:string
@@ -42961,7 +42961,7 @@ sInstance__Q23EGG17CoreControllerMgr = .sbss:0x805767A8; // type:object size:0x4
sStaticDisposer__Q33EGG17CoreControllerMgr11T__Disposer = .sbss:0x805767AC; // type:object size:0x4 data:4byte
sCoreControllerFactory__Q23EGG17CoreControllerMgr = .sbss:0x805767B0; // type:object size:0x4 data:4byte
sConnectCallback__Q23EGG17CoreControllerMgr = .sbss:0x805767B4; // type:object size:0x4 data:4byte
sUseBuiltinWpadAllocator__Q23EGG17CoreControllerMgr = .sbss:0x805767B8; // type:object size:0x1 data:byte
sWPADRegisterAllocatorOFF__Q23EGG17CoreControllerMgr = .sbss:0x805767B8; // type:object size:0x1 data:byte
sAllocator__Q23EGG27@unnamed@eggController_cpp@ = .sbss:0x805767BC; // type:object size:0x4 scope:local data:4byte
zero__Q23EGG8Vector2f = .sbss:0x805767C0; // type:object size:0x8 align:4 data:float
ex__Q23EGG8Vector2f = .sbss:0x805767C8; // type:object size:0x8 align:4 data:float
@@ -42976,7 +42976,7 @@ sPtrOverride__Q23EGG6Assert = .sbss:0x80576800; // type:object size:0x4 data:4by
sInstantHalt__Q23EGG6Assert = .sbss:0x80576804; // type:object size:0x1 data:byte
sAssertOccurred__Q23EGG6Assert = .sbss:0x80576805; // type:object size:0x1 data:byte
s_flag__Q23EGG6DrawGX = .sbss:0x80576808; // type:object size:0x4 data:4byte
sTexMapDefault__Q23EGG6DrawGX = .sbss:0x8057680C; // type:object size:0x4 data:4byte
TEXMAP_DEFAULT__23@unnamed@eggDrawGX_cpp@ = .sbss:0x8057680C; // type:object size:0x4 data:4byte
sGlobalScale__Q23EGG7Frustum = .sbss:0x80576810; // type:object size:0x8 align:4 data:float
sGlobalOffset__Q23EGG7Frustum = .sbss:0x80576818; // type:object size:0x8 align:4 data:float
sId__Q23EGG10G3DUtility = .sbss:0x80576820; // type:object size:0x1 data:byte
@@ -50364,10 +50364,8 @@ FLT_EPSILON = .sdata2:0x8057F3A4; // type:object size:0x4 align:4 data:float
@2742 = .sdata2:0x8057F3F0; // type:object size:0x8 scope:local align:8 data:double
sArr1__3EGG = .sdata2:0x8057F3F8; // type:object size:0x4 scope:local
sArr2__3EGG = .sdata2:0x8057F3FC; // type:object size:0x6 scope:local
lbl_8057F408 = .sdata2:0x8057F408; // type:object size:0x4 data:4byte
lbl_8057F40C = .sdata2:0x8057F40C; // type:object size:0x2 data:2byte
lbl_8057F40E = .sdata2:0x8057F40E; // type:object size:0x1 data:byte
defaultFilter__3EGG = .sdata2:0x8057F410; // type:object size:0x7 scope:local data:byte
VFILTER_BLUR__Q23EGG10CapTexture = .sdata2:0x8057F408; // type:object size:0x7 scope:global data:byte
VFILTER_OFF__Q23EGG10CapTexture = .sdata2:0x8057F410; // type:object size:0x7 scope:global data:byte
lbl_8057F418 = .sdata2:0x8057F418; // type:object size:0x4 align:4 data:float
lbl_8057F41C = .sdata2:0x8057F41C; // type:object size:0x4 align:4 data:float
lbl_8057F420 = .sdata2:0x8057F420; // type:object size:0x8 align:8 data:double
@@ -50480,7 +50478,7 @@ lbl_8057F6BC = .sdata2:0x8057F6BC; // type:object size:0x4 align:4 data:float
@9007 = .sdata2:0x8057F6C0; // type:object size:0x4 scope:local align:4 data:float
@9008 = .sdata2:0x8057F6C4; // type:object size:0x4 scope:local align:4 data:float
@9044 = .sdata2:0x8057F6C8; // type:object size:0x4 scope:local align:4 data:float
@LOCAL@initDrawSetting__Q23EGG12LightTextureFUsUsUsUs@sVtxBuf = .sdata2:0x8057F6E0; // type:object size:0x8 scope:local
@LOCAL@initDrawSetting__Q23EGG12LightTextureFUsUsUsUs@vtx = .sdata2:0x8057F6E0; // type:object size:0x8 scope:local
@9079 = .sdata2:0x8057F6E8; // type:object size:0x8 scope:local align:8 data:double
@9165 = .sdata2:0x8057F6F0; // type:object size:0x4 scope:local align:4 data:float
@9170 = .sdata2:0x8057F6F8; // type:object size:0x8 scope:local align:8 data:double
@@ -50522,8 +50520,8 @@ lbl_8057F7BC = .sdata2:0x8057F7BC; // type:object size:0x4 align:4 data:float
lbl_8057F7C0 = .sdata2:0x8057F7C0; // type:object size:0x4 align:4 data:float
@5225 = .sdata2:0x8057F7C8; // type:object size:0x4 scope:local align:4 data:float
@5226 = .sdata2:0x8057F7CC; // type:object size:0x4 scope:local align:4 data:float
sColorNear__3EGG = .sdata2:0x8057F7D0; // type:object size:0x4
sColorFar__3EGG = .sdata2:0x8057F7D4; // type:object size:0x4
NEAR__34@unnamed@eggPostEffectMaskDOF_cpp@ = .sdata2:0x8057F7D0; // type:object size:0x4
FAR__34@unnamed@eggPostEffectMaskDOF_cpp@ = .sdata2:0x8057F7D4; // type:object size:0x4
lbl_8057F7D8 = .sdata2:0x8057F7D8; // type:object size:0x4 align:4 data:float
lbl_8057F7DC = .sdata2:0x8057F7DC; // type:object size:0x4 align:4 data:float
lbl_8057F7E0 = .sdata2:0x8057F7E0; // type:object size:0x4 align:4 data:float
@@ -50559,7 +50557,7 @@ lbl_8057F874 = .sdata2:0x8057F874; // type:object size:0x4 align:4 data:float
lbl_8057F878 = .sdata2:0x8057F878; // type:object size:0x4 align:4 data:float
lbl_8057F880 = .sdata2:0x8057F880; // type:object size:0x8 align:8 data:double
lbl_8057F888 = .sdata2:0x8057F888; // type:object size:0x4 align:4 data:float
white__24@unnamed@eggStateGX_cpp@ = .sdata2:0x8057F890; // type:object size:0x4 scope:local data:4byte
WHITE__24@unnamed@eggStateGX_cpp@ = .sdata2:0x8057F890; // type:object size:0x4 scope:local data:4byte
@4136 = .sdata2:0x8057F894; // type:object size:0x4 scope:local align:4 data:float
@4227 = .sdata2:0x8057F898; // type:object size:0x4 scope:local align:4 data:float
@4228 = .sdata2:0x8057F89C; // type:object size:0x4 scope:local align:4 data:float
@@ -50800,8 +50798,8 @@ lbl_8057FFA0 = .sbss2:0x8057FFA0; // type:object size:0x8 data:4byte
bta_dm_pm_cfg = .sbss2:0x8057FFA8; // type:object size:0x8
bd_addr_null = .sbss2:0x8057FFB0; // type:object size:0x8
DefaultBlackColor = .sbss2:0x8057FFB8; // type:object size:0x8 scope:local data:2byte
sBlack__3EGG = .sbss2:0x8057FFC0; // type:object size:0x4 scope:local data:byte
lbl_8057FFC8 = .sbss2:0x8057FFC8; // type:object size:0x4
DEFUALT_CLEAR_COLOR__27@unnamed@eggCapTexture_cpp@ = .sbss2:0x8057FFC0; // type:object size:0x4 scope:local data:byte
CENTER__34@unnamed@eggPostEffectMaskDOF_cpp@ = .sbss2:0x8057FFC8; // type:object size:0x4
sSavedErrorHandlers = .bss:0x80580000; // type:object size:0x14 scope:local data:4byte
@5782 = .bss:0x80580014; // type:object size:0xC scope:local
@LOCAL@exceptionCreate__FPQ23EGG4Heap@mapFile = .bss:0x80580020; // type:object size:0x14 scope:local data:4byte
@@ -52554,7 +52552,7 @@ ez__Q23EGG8Vector3f = .bss:0x80674C54; // type:object size:0xC data:float
buf__Q23EGG6Assert = .bss:0x80674C60; // type:object size:0x104
s_DL__Q23EGG6DrawGX = .bss:0x80674D68; // type:object size:0x90
s_cameraMtx__Q23EGG6DrawGX = .bss:0x80674DF8; // type:object size:0x30 align:4 data:float
sDummyTexObj__Q23EGG6DrawGX = .bss:0x80674E28; // type:object size:0x20
CLEAR_Z_TEX_OBJ__23@unnamed@eggDrawGX_cpp@ = .bss:0x80674E28; // type:object size:0x20
sMtx__Q23EGG15GlobalDrawState = .bss:0x80674E48; // type:object size:0x30
sCpuTexArray__3EGG = .bss:0x80674E78; // type:object size:0x48 scope:local data:4byte
sIdentityMtx__3EGG = .bss:0x80674EC0; // type:object size:0x30 scope:local align:4 data:float
@@ -52564,11 +52562,11 @@ sScreen__Q23EGG16ScreenEffectBase = .bss:0x80674F88; // type:object size:0x88
spBufferSet__Q23EGG8StateEfb = .bss:0x80675010; // type:object size:0x30
sWorkSpaceV__Q23EGG8StateEfb = .bss:0x80675040; // type:object size:0x18 align:4 data:float
sWorkSpaceHideV__Q23EGG8StateEfb = .bss:0x80675058; // type:object size:0x18 align:4 data:float
sUnkBuffer__Q23EGG8StateEfb = .bss:0x80675070; // type:object size:0x18 align:4 data:float
sDefaultTexObj__Q23EGG7StateGX = .bss:0x806750A0; // type:object size:0x20
sShiftViewPort__Q23EGG8StateEfb = .bss:0x80675070; // type:object size:0x18 align:4 data:float
DUMMY_TEX_OBJ__24@unnamed@eggStateGX_cpp@ = .bss:0x806750A0; // type:object size:0x20
s_tmem_layout__Q23EGG7StateGX = .bss:0x806750C0; // type:object size:0xA8 data:4byte
s_cacheGX__Q23EGG7StateGX = .bss:0x80675168; // type:object size:0x18
@LOCAL@initialize__Q23EGG7StateGXFUsUs8_GXColor11_GXPixelFmt@sDefaultTexObjData = .bss:0x80675180; // type:object size:0x10 scope:local
@LOCAL@initialize__Q23EGG7StateGXFUsUs8_GXColor11_GXPixelFmt@NullTexData = .bss:0x80675180; // type:object size:0x10 scope:local
spBufferTable__Q23EGG13TextureBuffer = .bss:0x80675190; // type:object size:0x200 data:4byte
sConnectTask__Q23EGG18AudioRmtSpeakerMgr = .bss:0x80675390; // type:object size:0xF0
sMoveParamMgr__Q23EGG12AudioUtility = .bss:0x80675480; // type:object size:0xC
+1 -1
View File
@@ -362,7 +362,7 @@ private:
static CoreControllerFactory sCoreControllerFactory;
static CoreControllerConnectCallback sConnectCallback;
static bool sUseBuiltinWpadAllocator;
static bool sWPADRegisterAllocatorOFF;
static s32 sWPADWorkSize;
};
+3
View File
@@ -43,6 +43,9 @@ public:
mCopyFilterArg = filt;
}
static const CopyFilter VFILTER_BLUR;
static const CopyFilter VFILTER_OFF;
private:
/* 0x18 */ u8 mCapFlags;
/* 0x19 */ GXColor mClearColor;
-8
View File
@@ -172,14 +172,6 @@ public:
static const DL s_DL7;
static const DL s_DL8;
static const ZModeConfig s_ZMode[ZMODE_MAX];
static const BlendModeConfig s_Blend[BLEND_MAX];
static GXTexObj sDummyTexObj;
// not sure end
static GXTexMapID sTexMapDefault;
static GXLightID sLightMaskDefault;
static nw4r::math::MTX34 s_cameraMtx;
static u32 s_flag;
+3 -3
View File
@@ -52,9 +52,9 @@ public:
void CopyToG3D_View(nw4r::g3d::LightObj &, const nw4r::math::MTX34 &) const;
void CopyFromG3D(const nw4r::g3d::ResAnmLight &, f32, EGG::LightObject *, bool);
void ApplyAnmResultInner(const nw4r::g3d::LightAnmResult &);
void ApplyAnmResultA(const nw4r::g3d::LightAnmResult &);
bool ApplyAnmResultB(const nw4r::g3d::LightAnmResult &);
void ImportAnmG3D(const nw4r::g3d::LightAnmResult &);
void ImportAnmG3D_Diff(const nw4r::g3d::LightAnmResult &);
bool ImportAnmG3D_Spec(const nw4r::g3d::LightAnmResult &);
void CalcAt();
void SetPos(const nw4r::math::VEC3 &);
+1 -5
View File
@@ -92,11 +92,6 @@ public:
static void getTexDimensions(u16 *, u16 *, u16 *, u16 *, u16);
private:
static void fn_804AB270();
static void fn_804AB310(const GXColor &color);
static void fn_804AB440();
static void fn_804AB600();
static void fn_804AC0A0(int, int *, int *);
static void loadTextureData(int index, void *data, GXTexFmt fmt);
@@ -125,6 +120,7 @@ private:
/* 0x9F */ u8 field_0x9F;
static u16 sTextureSize;
static s8 sScaleExp;
static u16 sDrawWidth;
static u16 sDrawHeight;
+6 -5
View File
@@ -22,27 +22,28 @@ public:
u32 userData;
u32 field_0x08;
};
private:
static Buffer spBufferSet[BUFFER_MAX];
static f32 sWorkSpaceV[6];
static f32 sWorkSpaceHideV[6];
static f32 sUnkBuffer[6]; // unk name
static f32 sShiftViewPort[6]; // unk name
static s32 sWorkBuffer;
static s32 sPushCount;
static u32 sFlag;
static bool isEnableDirtyBufferMode();
static bool GetUseTfRgb565();
public:
public:
static bool CheckFlag0x2() {
return (sFlag & 2) != 0;
}
static void Clean();
static TextureBuffer *captureEfb(BufferType type, bool, u32 userData);
static bool releaseEfb(BufferType type, u32 userData);
// Unknown names
static void fn_804B4270(BufferType type, u32 userData);
static void popWorkBuffer(bool b, u32 userData);
+1 -5
View File
@@ -87,15 +87,13 @@ public:
static bool GXSetDither_(bool);
static void GXCopyTex_(void *data, bool);
static CacheGX &GXSetDstAlpha_(bool, u8);
static void GetScissorSafeParam(const f32 src[4], u32 dst[4]);
static void GXSetProjection_(Mtx44, GXProjectionType);
static void GXSetProjectionv_(const f32 *);
static void GXSetViewport_(f32 ox, f32 oy, f32 sx, f32 sy, f32 near, f32 far);
static void GXSetScissor_(u32, u32, u32, u32);
static void GXSetScissorBoxOffset_(s32, s32);
// not sure
static void CalculateScreenScissor(const f32 src[4], u32 dst[4]);
static u16 s_widthEfb;
static u16 s_heightEfb;
static GXPixelFmt s_pixFormat;
@@ -105,8 +103,6 @@ public:
static u16 s_commandFlag;
static CacheGX s_cacheGX;
// Inofficial names
static GXTexObj sDefaultTexObj;
static MemLayout s_tmem_layout; // same name, different type
};
+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
+15 -8
View File
@@ -6,21 +6,27 @@
#include "rvl/GX/GXPixel.h"
#include "rvl/GX/GXTypes.h"
namespace {
static const GXColor DEFUALT_CLEAR_COLOR = {0, 0, 0, 0};
static const u8 SAMPLE_PATTERN_OFF[12][2] = {};
} // namespace
namespace EGG {
static const GXColor sBlack = {0, 0, 0, 0};
static const CopyFilter defaultFilter = {
{0, 0, 1, 0x3F, 0, 0, 0}
const CopyFilter CapTexture::VFILTER_BLUR = {
{0x15, 0, 0, 0x16, 0, 0x15, 0}
};
static const u8 copyArg2[12][2] = {};
const CopyFilter CapTexture::VFILTER_OFF = {
{0, 0, 1, 0x3F, 0, 0, 0}
};
void CapTexture::configure() {
CpuTexture::configure();
mCapFlags = 0;
mClearColor = sBlack;
mClearColor = DEFUALT_CLEAR_COLOR;
field_0x20 = 0xFFFFFF;
mCopyFilterArg = defaultFilter;
mCopyFilterArg = VFILTER_OFF;
}
void CapTexture::capture(u16 x, u16 y, bool upscale, int format) {
@@ -32,7 +38,8 @@ void CapTexture::capture(u16 x, u16 y, bool upscale, int format) {
GXSetTexCopyDst(mWidth, mHeight, fmt, upscale);
GXSetCopyFilter(
0, copyArg2, (mCapFlags & 8) ? true : false, (mCapFlags & 8) ? mCopyFilterArg.values : defaultFilter.values
0, SAMPLE_PATTERN_OFF, (mCapFlags & 8) ? true : false,
(mCapFlags & 8) ? mCopyFilterArg.values : VFILTER_OFF.values
);
StateGX::ScopedColor colorUpdate((mCapFlags & 1) != 0);
@@ -41,7 +48,7 @@ void CapTexture::capture(u16 x, u16 y, bool upscale, int format) {
GXSetCopyClear(mClearColor, field_0x20);
GXSetCopyClamp(3);
StateGX::GXCopyTex_(dataPtr, true);
GXSetCopyFilter(0, copyArg2, 0, defaultFilter.values);
GXSetCopyFilter(0, SAMPLE_PATTERN_OFF, 0, VFILTER_OFF.values);
if ((mCapFlags & 0x10) != 0) {
GXPixModeSync();
+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) {
+11 -7
View File
@@ -8,11 +8,15 @@
#include "rvl/GX/GXTypes.h"
#include "rvl/MTX/mtx.h"
namespace EGG {
namespace {
static const GXColor sColorNear = (GXColor){0x00, 0xFF, 0x00, 0xFF};
static const GXColor sColorFar = (GXColor){0xFF, 0x00, 0x00, 0x00};
static const GXColor sColorCenter = (GXColor){0x00, 0x00, 0x00, 0x00};
static const GXColor NEAR = (GXColor){0x00, 0xFF, 0x00, 0xFF};
static const GXColor FAR = (GXColor){0xFF, 0x00, 0x00, 0x00};
static const GXColor CENTER = (GXColor){0x00, 0x00, 0x00, 0x00};
} // namespace
namespace EGG {
PostEffectMaskDOF::PostEffectMaskDOF()
: field_0x2C(8),
@@ -234,13 +238,13 @@ void PostEffectMaskDOF::setMaterialInternal() {
}
const GXColor &PostEffectMaskDOF::getNearColor() {
return sColorNear;
return NEAR;
}
const GXColor &PostEffectMaskDOF::getFarColor() {
return sColorFar;
return FAR;
}
const GXColor &PostEffectMaskDOF::getCenterColor() {
return sColorCenter;
return CENTER;
}
} // namespace EGG
+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;
}
}