Skip to content

The first timecyc ambient field is actually reversed in PSP versions #3

@santiago046

Description

@santiago046

These ones in PSP are actually "read" as BGR in the PSP versions:

uint8 m_nAmbientRed[24][8];
uint8 m_nAmbientGreen[24][8];
uint8 m_nAmbientBlue[24][8];

For example, in the midnight entry for sunny weather, it should be 255 182 178 instead of 178 182 255 in the LCS PSP extracted timecyc.dat file.

lcs_cdr_timecyc.mp4

Also,

int16 m_nCurrentShadowStrength;
int16 m_nCurrentLightShadowStrength;
int16 m_nCurrentPoleShadowStrength;
int32 m_nCurrentFarClip;
int32 m_nCurrentFogStart;
#if defined(VCS) && defined(PS2)
int32 m_nCurrentRadiosityIntensity;
int32 m_nCurrentRadiosityLimit;
#endif
int32 m_nCurrentLightsOnGroundBrightness;
seems to be read as:

	int16 m_nCurrentShadowStrength; 
	int16 m_nCurrentLightShadowStrength; 
	int16 m_nCurrentPoleShadowStrength;
	uint8 Padding[2]; // Padding for alignment
	float m_nCurrentFarClip; 
	float m_nCurrentFogStart; 
#if defined(VCS) && defined(PS2) 
	int32 m_nCurrentRadiosityIntensity; 
	int32 m_nCurrentRadiosityLimit; 
#endif 
	float m_nCurrentLightsOnGroundBrightness

Assuming the current weather is sunny midnight:
Image

int32 m_nCurrentBlurRed;
int32 m_nCurrentBlurGreen;
int32 m_nCurrentBlurBlue;
int32 m_nCurrentWaterRed;
int32 m_nCurrentWaterGreen;
int32 m_nCurrentWaterBlue;
int32 m_nCurrentWaterAlpha;
#if defined(VCS) && defined(PS2)
float m_nCurrentBlurAlpha;
float m_nCurrentBlurOffset;
#endif
int32 m_nCurrentStoredValue;
int32 m_nFogReduction;
int32 m_nExtraColour;
int32 m_nExtraColourOn;
int32 m_nExtraColourInter;
int32 unk;
are read as:

	float m_nCurrentBlurRed; 
	float m_nCurrentBlurGreen; 
	float m_nCurrentBlurBlue; 
	float m_nCurrentWaterRed; 
	float m_nCurrentWaterGreen; 
	float m_nCurrentWaterBlue; 
	float m_nCurrentWaterAlpha;
#if defined(VCS) && defined(PS2)
	float m_nCurrentBlurAlpha;
	float m_nCurrentBlurOffset;
#endif
	int32 m_nCurrentStoredValue; // Loops continuously from 0 to 15.
	int32 m_nFogReduction;       // Increases by 1 when a cutscene starts, up to a maximum of 64, then stops.  
                                     // After the cutscene ends, it decreases by 1 until it reaches 0, then stops.
	int32 m_nExtraColour;        // Only takes effect if the next field is greater than 0.  Values greater
                                     // than 23 can cause extreme effects, such as a solid color overlay
                                     // (e.g., light yellow) or a tinted screen. For example, `0xEE`
                                     // applies a reddish overlay that affects the entire screen.
	int32 m_nExtraColourOn;      // When changed to a value greater than 0, it activates the effects of
                                     // `m_nExtraColour` and `m_nExtraColourInter`.
	float m_nExtraColourInter;   // If `m_nExtraColourOn` is greater than 0, this starts at `1.0`; otherwise,
                                     // it remains `0.0`. If set to `0x00000000` while `m_nExtraColourOn` > 0, 
                                     // it gradually increases until reaching `1.0`.
	int32 unk;                   // Always zeroed; has no observable effect.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions