mirror of
https://github.com/zeldaret/ss
synced 2026-05-23 23:05:20 -04:00
548 lines
15 KiB
C++
548 lines
15 KiB
C++
#ifndef D_LIGHT_ENV_H
|
|
#define D_LIGHT_ENV_H
|
|
|
|
#include "common.h"
|
|
#include "m/m_color.h"
|
|
#include "m/m_vec.h"
|
|
#include "toBeSorted/tlist.h"
|
|
|
|
class ActorLighting {
|
|
public:
|
|
typedef TList<ActorLighting, 0> ListType;
|
|
/* 0x00 */ TListNode<ActorLighting> mNode;
|
|
static ListType sList;
|
|
static void fn_80026500();
|
|
static const mColor &getLightTev2Color();
|
|
static const mColor &getLightTev1Color();
|
|
static const mColor &getLightTev0Color();
|
|
static const mColor &getLightTevKColor();
|
|
|
|
public:
|
|
virtual ~ActorLighting();
|
|
|
|
void reset();
|
|
|
|
void setTev1Color(GXColor color) {
|
|
mTev1Color = color;
|
|
mUseTev1 = true;
|
|
}
|
|
|
|
public:
|
|
/* 0x0C */ f32 field_0x0C;
|
|
/* 0x10 */ f32 field_0x10;
|
|
/* 0x14 */ f32 field_0x14;
|
|
/* 0x18 */ f32 field_0x18;
|
|
/* 0x1C */ f32 field_0x1C;
|
|
/* 0x20 */ f32 field_0x20;
|
|
/* 0x24 */ f32 field_0x24;
|
|
/* 0x28 */ f32 field_0x28;
|
|
/* 0x2C */ f32 field_0x2C;
|
|
/* 0x30 */ f32 field_0x30;
|
|
/* 0x34 */ f32 field_0x34;
|
|
/* 0x38 */ f32 field_0x38;
|
|
/* 0x3C */ s32 mLightSetIdx;
|
|
/* 0x40 */ mColor mTev0Color;
|
|
/* 0x44 */ mColor mTev1Color;
|
|
/* 0x48 */ mColor mTev2Color;
|
|
/* 0x4C */ mColor mTevPrevColor;
|
|
/* 0x50 */ mColor mTevK0Color;
|
|
/* 0x54 */ mColor mTevK1Color;
|
|
/* 0x58 */ mColor mTevK2Color;
|
|
/* 0x5C */ mColor mTevK3Color;
|
|
/* 0x60 */ u8 mLightingCode;
|
|
/* 0x61 */ u8 field_0x61;
|
|
/* 0x62 */ u8 field_0x62;
|
|
/* 0x63 */ u8 field_0x63;
|
|
/* 0x64 */ u8 field_0x64;
|
|
/* 0x65 */ bool mUseTev0;
|
|
/* 0x66 */ bool mUseTev1;
|
|
/* 0x67 */ bool mUseTev2;
|
|
/* 0x68 */ bool mUseTevPrev;
|
|
/* 0x69 */ bool mUseTevK0;
|
|
/* 0x6A */ bool mUseTevK1;
|
|
/* 0x6B */ bool mUseTevK2;
|
|
/* 0x6C */ bool mUseTevK3;
|
|
};
|
|
|
|
struct LIGHT_INFLUENCE {
|
|
void SetColor(mColor clr) {
|
|
mClr = clr;
|
|
}
|
|
void SetScale(f32 scale) {
|
|
mScale = scale;
|
|
}
|
|
void SetPosition(const mVec3_c &pos) {
|
|
mPos.x = pos.x;
|
|
mPos.y = pos.y;
|
|
mPos.z = pos.z;
|
|
}
|
|
|
|
/* 0x00 */ mVec3_c mPos;
|
|
/* 0x0C */ mColor mClr;
|
|
/* 0x10 */ f32 mScale;
|
|
/* 0x14 */ s32 mIdx;
|
|
/* 0x18 */ bool field_0x18;
|
|
};
|
|
|
|
// This is a weird one - mColor / nw4r::ut::Color are assumed
|
|
// to be 4-byte-aligned so that all the u32 type punning works
|
|
// correctly, but field_0x1D5 is unaligned and uses a separate
|
|
// assignment operator! So we'll go with a separate type for now.
|
|
struct UnalignedColor {
|
|
UnalignedColor &operator=(const mColor &color) {
|
|
r = color.r;
|
|
g = color.g;
|
|
b = color.b;
|
|
a = color.a;
|
|
return *this;
|
|
}
|
|
u8 r, g, b, a;
|
|
};
|
|
|
|
struct PaletteDefaultMCF {
|
|
/* 0x00 */ mColor MA00_kColor3;
|
|
/* 0x04 */ mColor MA01_tevReg1;
|
|
/* 0x08 */ mColor MA01_kColor2;
|
|
/* 0x0C */ mColor MA02_tevReg1;
|
|
/* 0x10 */ mColor MA02_kColor2;
|
|
/* 0x14 */ mColor MA03_kColor3;
|
|
/* 0x18 */ mColor MA06_kColor3;
|
|
/* 0x1C */ mColor field_0x1C;
|
|
};
|
|
|
|
struct TwoPaletteDefaultMCF {
|
|
/* 0x00 */ PaletteDefaultMCF field_0x00;
|
|
/* 0x20 */ PaletteDefaultMCF field_0x20;
|
|
};
|
|
|
|
struct ActorPalette {
|
|
/* 0x000 */ mColor mAmbientClr;
|
|
/* 0x004 */ mColor mDiffuseClr;
|
|
/* 0x008 */ mColor mBrightnessClr;
|
|
/* 0x00C */ mColor mSpecularClr;
|
|
/* 0x010 */ mColor mDarkShadowClr;
|
|
/* 0x014 */ mColor mDarkLightClr;
|
|
/* 0x018 */ f32 mSpecular;
|
|
/* 0x01C */ mColor field_0x01C;
|
|
/* 0x020 */ f32 mTemperature; // -1 cool, 1 warm
|
|
/* 0x024 */ f32 field_0x24;
|
|
/* 0x028 */ mColor mShadowClr;
|
|
/* 0x02C */ mColor field_0x02C;
|
|
};
|
|
|
|
struct StagePalette {
|
|
/* 0x000 */ f32 mBrightness;
|
|
/* 0x004 */ mColor mShadowClr;
|
|
/* 0x008 */ mColor mLightClr;
|
|
/* 0x00C */ f32 mSunMoonAngle1;
|
|
/* 0x010 */ f32 mSunMoonAngle2;
|
|
|
|
/* 0x014 */ mColor field_0x014;
|
|
/* 0x018 */ u8 field_0x018[5];
|
|
/* 0x020 */ mColor field_0x020[5];
|
|
/* 0x034 */ f32 field_0x034[5];
|
|
/* 0x048 */ f32 field_0x048[5];
|
|
|
|
/* 0x05C */ f32 field_0x05C;
|
|
/* 0x060 */ mColor field_0x060;
|
|
/* 0x064 */ u8 field_0x064[5];
|
|
/* 0x06C */ mColor field_0x06C[5];
|
|
/* 0x080 */ f32 field_0x080[5];
|
|
/* 0x094 */ f32 field_0x094[5];
|
|
|
|
/* 0x0A8 */ f32 field_0x0A8;
|
|
/* 0x0AC */ mColor field_0x0AC;
|
|
/* 0x0B0 */ u8 field_0x0B0[5];
|
|
/* 0x0B8 */ mColor field_0x0B8[5];
|
|
/* 0x0CC */ f32 field_0x0CC[5];
|
|
/* 0x0E0 */ f32 field_0x0E0[5];
|
|
|
|
/* 0x0F4 */ f32 field_0x0F4;
|
|
/* 0x0F8 */ mColor field_0x0F8;
|
|
/* 0x0FC */ u8 field_0x0FC[5];
|
|
/* 0x104 */ mColor field_0x104[5];
|
|
/* 0x118 */ f32 field_0x118[5];
|
|
/* 0x12C */ f32 field_0x12C[5];
|
|
};
|
|
|
|
struct SkyPalette {
|
|
/* 0x000 */ mColor field_0x00;
|
|
/* 0x004 */ mColor field_0x04;
|
|
/* 0x008 */ mColor field_0x08;
|
|
/* 0x00C */ mColor mCloudColor;
|
|
/* 0x010 */ mColor mSkyColor;
|
|
/* 0x014 */ mColor field_0x14;
|
|
/* 0x018 */ mColor mSkyFilter;
|
|
/* 0x01C */ mVec3_c mSkyCenter;
|
|
/* 0x028 */ mVec3_c mSkyScale;
|
|
};
|
|
|
|
struct SffSub {
|
|
mColor field_0x00;
|
|
f32 field_0x04;
|
|
f32 field_0x08;
|
|
};
|
|
|
|
struct SpfSubUnk0 {
|
|
/* 0x00 */ SffSub field_0x00;
|
|
/* 0x0C */ f32 field_0x0C[3];
|
|
};
|
|
|
|
struct SpfSubUnk1 {
|
|
/* 0x00 */ u8 field_0x00;
|
|
/* 0x04 */ f32 field_0x04;
|
|
/* 0x08 */ f32 field_0x08;
|
|
/* 0x0C */ u8 field_0x0C;
|
|
/* 0x10 */ f32 field_0x10;
|
|
/* 0x14 */ f32 field_0x14;
|
|
/* 0x18 */ u8 field_0x18;
|
|
/* 0x19 */ UnalignedColor field_0x19; // Bloom Color
|
|
/* 0x1D */ u8 field_0x1D;
|
|
};
|
|
|
|
struct SpfSubUnk2 {
|
|
/* 0x00 */ f32 field_0x00; // Blur Dist
|
|
/* 0x04 */ f32 field_0x04; // Blur Diffuse
|
|
/* 0x08 */ f32 field_0x08; // Softness Distance
|
|
/* 0x0C */ f32 field_0x0C; // Softness diffuse
|
|
/* 0x10 */ u8 field_0x10;
|
|
/* 0x11 */ u8 field_0x11; // Turning this to not 0 disables effects
|
|
/* 0x12 */ u16 field_0x12;
|
|
/* 0x14 */ f32 field_0x14;
|
|
/* 0x18 */ f32 field_0x18;
|
|
/* 0x1C */ f32 field_0x1C; // Blur?
|
|
/* 0x20 */ f32 field_0x20; // Fog? Shadow?
|
|
};
|
|
|
|
// Broken up in a way to get the assignment operator to match.
|
|
// Not 100% certain
|
|
struct Spf {
|
|
/* 0x000 */ ActorPalette mActorPalette;
|
|
/* 0x030 */ StagePalette mStagePalette;
|
|
/* 0x170 */ SkyPalette mSkyPalette;
|
|
/* 0x1A4 */ SpfSubUnk0 field_0x1A4;
|
|
/* 0x1BC */ SpfSubUnk1 field_0x1BC;
|
|
/* 0x1DC */ SpfSubUnk2 field_0x1D4;
|
|
/* 0x200 */ mColor mParticleTransparentClr;
|
|
/* 0x204 */ mColor mParticleSolidClr;
|
|
};
|
|
|
|
struct Sff {
|
|
SffSub field_0x00[3];
|
|
};
|
|
|
|
struct EFLIGHT_PROC {
|
|
/* 0x00 */ u8 mState;
|
|
/* 0x01 */ u8 mFrame;
|
|
/* 0x04 */ int mLightType;
|
|
/* 0x08 */ LIGHT_INFLUENCE field_0x8;
|
|
};
|
|
|
|
// Deals with the direction wind particles go?
|
|
struct WIND_INFLUENCE {
|
|
/* 0x00 */ mVec3_c mVel;
|
|
/* 0x0C */ f32 field_0x0C;
|
|
/* 0x10 */ f32 field_0x10;
|
|
};
|
|
|
|
struct PaletteEAF_smol_entry {
|
|
mColor field_0x00;
|
|
mColor field_0x04;
|
|
mColor field_0x08;
|
|
mColor field_0x0C;
|
|
};
|
|
|
|
struct PaletteEAF_smol {
|
|
PaletteEAF_smol_entry field_0x00[8];
|
|
};
|
|
|
|
struct PaletteEAF_big_entry {
|
|
mColor field_0x00;
|
|
mColor field_0x04;
|
|
mColor field_0x08;
|
|
mColor field_0x0C;
|
|
u8 field_0x10;
|
|
};
|
|
|
|
struct PaletteEAF_big {
|
|
/* 0x00 */ PaletteEAF_big_entry field_0x00[8];
|
|
};
|
|
|
|
// Apparently particle color related
|
|
struct Bpm3 {
|
|
/* 0x00 */ PaletteEAF_smol field_0x00[0x20];
|
|
};
|
|
|
|
struct Bpm4 {
|
|
/* 0x00 */ PaletteEAF_big field_0x00[0x20];
|
|
};
|
|
|
|
struct SHADOW_INFLUENCE {
|
|
/* 0x00 */ mVec3_c mPos;
|
|
/* 0x0C */ f32 mRadius;
|
|
/* 0x10 */ s16 mIdx;
|
|
};
|
|
struct Bpm8 {
|
|
/* 0x00 */ mVec3_c mPos;
|
|
/* 0x0C */ f32 mRadius;
|
|
/* 0x10 */ s32 field_0x10;
|
|
};
|
|
|
|
struct Bpm9 {
|
|
/* 0x00 */ bool field_0x00;
|
|
/* 0x04 */ mVec3_c mPos;
|
|
/* 0x10 */ f32 mRadius;
|
|
};
|
|
|
|
struct Mist {
|
|
/* 0x00 */ u8 mMode;
|
|
/* 0x01 */ u8 mDecay;
|
|
/* 0x02 */ u8 mAlpha;
|
|
/* 0x04 */ f32 mDirection;
|
|
/* 0x08 */ f32 mSpeed;
|
|
};
|
|
|
|
struct SpfSetting {
|
|
s16 mIdxStart;
|
|
s16 mIdxEnd;
|
|
f32 mRatio;
|
|
};
|
|
|
|
struct SpfTransitionSetting {
|
|
s16 mIdxBefore;
|
|
s16 mIdxAfter;
|
|
s32 mNumFrames;
|
|
};
|
|
|
|
class dLightEnv_c {
|
|
public:
|
|
dLightEnv_c();
|
|
virtual ~dLightEnv_c();
|
|
|
|
static dLightEnv_c &GetInstance() {
|
|
return sInstance;
|
|
}
|
|
|
|
static dLightEnv_c *GetPInstance() {
|
|
return sPInstance;
|
|
}
|
|
|
|
void get_vectle_calc(const mVec3_c *, const mVec3_c *, mVec3_c *);
|
|
void sphere_to_cartesian(f32 ang_y, f32 ang_xz, mVec3_c *);
|
|
|
|
void efplight_set(LIGHT_INFLUENCE *pLightInfo);
|
|
void efplight_cut(LIGHT_INFLUENCE *pLightInfo);
|
|
LIGHT_INFLUENCE *eflight_influence(const mVec3_c *);
|
|
|
|
// Name is guess based on closest func in tp
|
|
void SordFlush_set(const mVec3_c *pPos, s32 lightType);
|
|
|
|
void plight_set(LIGHT_INFLUENCE *pLightInfo);
|
|
void plight_cut(LIGHT_INFLUENCE *pLightInfo);
|
|
LIGHT_INFLUENCE *light_influence(const mVec3_c *, bool param2);
|
|
LIGHT_INFLUENCE *light_influence2(const mVec3_c *, bool param2);
|
|
|
|
void shadow_set(SHADOW_INFLUENCE *pShadowInfo);
|
|
void shadow_cut(SHADOW_INFLUENCE *pShadowInfo);
|
|
SHADOW_INFLUENCE *shadow_influence(const mVec3_c *);
|
|
|
|
void setLightFilter(f32 ratio);
|
|
void set0x35B0(f32 f);
|
|
|
|
// Params are guesses
|
|
void setBPM8(const mVec3_c *pos, u32 type, f32 radius);
|
|
void setBPM8_Type4(const mVec3_c *pos);
|
|
void setBPM8_Type6(const mVec3_c *pos);
|
|
void setBPM8_Type10(const mVec3_c *pos);
|
|
void setBPM8_Type10_2(const mVec3_c *pos);
|
|
void setBPM8_Type6_2(const mVec3_c *pos);
|
|
bool check_BPM8(const mVec3_c *pos, mVec3_c *pOutPos);
|
|
bool check_BPM8_1001(const mVec3_c *pos, mVec3_c *pOutPos);
|
|
bool check_BPM8_501(const mVec3_c *pos, mVec3_c *pOutPos);
|
|
|
|
bool setUnk(const mVec3_c *pos, f32 radius);
|
|
void setBPM9(const mVec3_c *pos, f32 radius);
|
|
bool check_BPM9(const mVec3_c *pos);
|
|
|
|
s32 checkBPM9_Entity(mVec3_c *pOutPos);
|
|
|
|
void setAlternateRoomId(s32 roomId);
|
|
s32 getAlterateRoomId();
|
|
|
|
mColor color_ratio_set(const mColor &start, const mColor &end, f32 ratio);
|
|
mVec3_c vec_ratio_set(const mVec3_c &start, const mVec3_c &end, f32 ratio);
|
|
f32 f32_ratio_set(const f32 start, const f32 end, f32 ratio);
|
|
u16 u16_ratio_set(const u16 start, const u16 end, f32 ratio);
|
|
u8 u8_ratio_set(const u8 start, const u8 end, f32 ratio);
|
|
|
|
void spf_ratio_set(Spf &out, const Spf &start, const Spf &end, f32 ratio);
|
|
void light_influence_ratio_set(
|
|
LIGHT_INFLUENCE &out, const LIGHT_INFLUENCE &start, const LIGHT_INFLUENCE &end, f32 ratio
|
|
);
|
|
void sff_ratio_set(Sff &out, const Sff &start, const Sff &end, f32 ratio);
|
|
|
|
void set_override_spf(s16 start, s16 end, f32 ratio);
|
|
|
|
void setMist(u8 mode, u8 decay, u8 alpha, f32 dir, f32 speed);
|
|
void setMistMode3(const mVec3_c &vel, f32 value);
|
|
|
|
void setDOF(f32 dof);
|
|
void disableDOF();
|
|
|
|
void setWind(mVec3_c mPos, f32 f);
|
|
|
|
void setField_0x2F20(f32 arg) {
|
|
field_0x2F20 = arg;
|
|
}
|
|
|
|
void set_palette_transition(s16 before, s16 after, s32 numFrames);
|
|
|
|
// All related
|
|
void fn_80024740(u8, u8);
|
|
bool fn_80024770(u8);
|
|
bool fn_800247A0(u8);
|
|
|
|
u8 get0x2DE8() const {
|
|
return field_0x2DE8[0];
|
|
}
|
|
|
|
const PaletteDefaultMCF &GetCurrentDefaultMcf() const {
|
|
return field_0x5CE4;
|
|
}
|
|
|
|
const Spf &GetCurrentSpf() const {
|
|
return currentSpf;
|
|
}
|
|
|
|
SpfSetting &GetOverrideSpf() {
|
|
return mOverrideSpfSetting;
|
|
}
|
|
|
|
const PaletteEAF_smol_entry &getSmallEAF(s32 idx1, s32 idx2) {
|
|
return field_0x38E4.field_0x00[idx1].field_0x00[idx2];
|
|
}
|
|
|
|
f32 getfield_0x2F14() const {
|
|
return field_0x2F14;
|
|
}
|
|
|
|
f32 getfield_0x2F18() const {
|
|
return field_0x2F18;
|
|
}
|
|
|
|
f32 getfield_0x2F1C() const {
|
|
return field_0x2F1C;
|
|
}
|
|
|
|
bool getfield_0x38B0() const {
|
|
return field_0x38B0;
|
|
}
|
|
|
|
void setfield_0x38B0(bool val) {
|
|
field_0x38B0 = val;
|
|
}
|
|
|
|
f32 getfield_0x38C0() const {
|
|
return field_0x38C0;
|
|
}
|
|
|
|
const mVec3_c &getfield_0x38B4() const {
|
|
return field_0x38B4;
|
|
}
|
|
|
|
mVec3_c &getfield_0x38C8() {
|
|
return field_0x38C8;
|
|
}
|
|
|
|
void setfield_0x38C4(s32 val) {
|
|
field_0x38C4 = val;
|
|
}
|
|
|
|
s32 getField_0x38DC() const {
|
|
return field_0x38DC;
|
|
}
|
|
|
|
void setField_0x38DC(s32 v) {
|
|
field_0x38DC = v;
|
|
}
|
|
|
|
f32 getfield_0x5D44() const {
|
|
return field_0x5D44;
|
|
}
|
|
|
|
void setField_0x5D48(f32 val) {
|
|
field_0x5D48 = val;
|
|
}
|
|
|
|
private:
|
|
/* 0x0004 */ Spf currentSpf;
|
|
/* 0x020C */ Spf spfs[20];
|
|
/* 0x2AAC */ Sff currentSff;
|
|
/* 0x2AD0 */ Sff sffs[20];
|
|
/* 0x2DA0 */ SpfSetting mCurrentSpfSetting;
|
|
/* 0x2DA8 */ u8 field_0x2DA8[0x2DB4 - 0x2DA8];
|
|
/* 0x2DB4 */ SpfTransitionSetting mTransitionSpfSetting;
|
|
/* 0x2DBC */ u8 field_0x2DBC[0x2DC0 - 0x2DBC];
|
|
/* 0x2DC0 */ SpfSetting mOverrideSpfSetting;
|
|
/* 0x2DC8 */ Mist mMistInfo;
|
|
/* 0x2DD4 */ mVec3_c mMistPos;
|
|
/* 0x2DE0 */ bool mDofEnabled;
|
|
/* 0x2DE4 */ f32 mDof;
|
|
/* 0x2DE8 */ u8 field_0x2DE8[0x2DEC - 0x2DE8];
|
|
/* 0x2DEC */ mColor field_0x2DEC;
|
|
/* 0x2DF0 */ u8 field_0x2DF0[0x2DF4 - 0x2DF0];
|
|
/* 0x2DF4 */ mColor field_0x2DF4;
|
|
/* 0x2DF8 */ mVec3_c field_0x2DF8;
|
|
/* 0x2E04 */ u8 field_0x2E04[0x2E08 - 0x2E04];
|
|
/* 0x2E08 */ mVec3_c field_0x2E08[5];
|
|
/* 0x2E44 */ mVec3_c field_0x2E44[5];
|
|
/* 0x2E80 */ mVec3_c field_0x2E80[5];
|
|
/* 0x2EBC */ mVec3_c field_0x2EBC[5];
|
|
/* 0x2EF8 */ mColor field_0x2EF8;
|
|
/* 0x2EFC */ mColor field_0x2EFC;
|
|
/* 0x2F00 */ mVec3_c field_0x2F00;
|
|
/* 0x2F0C */ s16 field_0x2F0C;
|
|
/* 0x2F0E */ s16 field_0x2F0E;
|
|
/* 0x2F10 */ u8 field_0x2F10;
|
|
/* 0x2F14 */ f32 field_0x2F14;
|
|
/* 0x2F18 */ f32 field_0x2F18;
|
|
/* 0x2F1C */ f32 field_0x2F1C;
|
|
/* 0x2F20 */ f32 field_0x2F20;
|
|
/* 0x2F24 */ u8 field_0x2F24[4];
|
|
/* 0x2F28 */ LIGHT_INFLUENCE *efplight[5];
|
|
/* 0x2F3C */ LIGHT_INFLUENCE *pointlight[200];
|
|
/* 0x325C */ SHADOW_INFLUENCE *pshadow[200];
|
|
/* 0x357C */ EFLIGHT_PROC eflight;
|
|
/* 0x35A0 */ WIND_INFLUENCE mWind;
|
|
/* 0x35B4 */ SHADOW_INFLUENCE field_0x35B4[8];
|
|
/* 0x3654 */ Bpm8 field_0x3654[10];
|
|
/* 0x371C */ Bpm9 field_0x371C[20];
|
|
/* 0x387C */ u32 field_0x387C;
|
|
/* 0x38B0 */ bool field_0x38B0;
|
|
/* 0x38B4 */ mVec3_c field_0x38B4;
|
|
/* 0x38C0 */ f32 field_0x38C0;
|
|
/* 0x38C4 */ s32 field_0x38C4;
|
|
/* 0x38C8 */ mVec3_c field_0x38C8;
|
|
/* 0x38D4 */ u32 mPlayerRoomId;
|
|
/* 0x38D8 */ s32 mAlternateRoomId;
|
|
/* 0x38D8 */ u32 field_0x38DC;
|
|
/* 0x38D8 */ s32 field_0x38E0;
|
|
/* 0x38E4 */ Bpm3 field_0x38E4;
|
|
/* 0x48E4 */ Bpm4 field_0x48E4;
|
|
/* 0x5CE4 */ PaletteDefaultMCF field_0x5CE4;
|
|
/* 0x5D04 */ TwoPaletteDefaultMCF field_0x5D04;
|
|
/* 0x5D44 */ f32 field_0x5D44;
|
|
/* 0x5D48 */ f32 field_0x5D48;
|
|
/* 0x5D4C */ u8 field_0x5D4C[0x5D59 - 0x5D4C];
|
|
/* 0x5D59 */ struct { // Anonymous until more is known
|
|
bool mEnabled;
|
|
u8 mValue;
|
|
} field_0x5D59[9];
|
|
/* 0x5D6C */ u8 field_0x5D6C[0x5D70 - 0x5D6C];
|
|
|
|
static dLightEnv_c sInstance;
|
|
static dLightEnv_c *sPInstance;
|
|
};
|
|
|
|
#endif
|