Changed fog to be compatible with transparent shadows.
|
Before Width: | Height: | Size: 152 B After Width: | Height: | Size: 5.1 KiB |
|
Before Width: | Height: | Size: 144 B After Width: | Height: | Size: 4.8 KiB |
|
Before Width: | Height: | Size: 143 B After Width: | Height: | Size: 4.7 KiB |
|
Before Width: | Height: | Size: 143 B After Width: | Height: | Size: 4.7 KiB |
@ -10,7 +10,7 @@ JASC-PAL
|
|||||||
213 213 213
|
213 213 213
|
||||||
222 222 222
|
222 222 222
|
||||||
164 164 164
|
164 164 164
|
||||||
255 0 255
|
0 0 0
|
||||||
255 0 255
|
255 0 255
|
||||||
255 0 255
|
255 0 255
|
||||||
180 180 180
|
180 180 180
|
||||||
|
|||||||
@ -32,13 +32,13 @@ const struct SpriteFrameImage gFieldEffectObjectPicTable_BallLight[] = {
|
|||||||
obj_frame_tiles(gFieldEffectObjectPic_BallLight),
|
obj_frame_tiles(gFieldEffectObjectPic_BallLight),
|
||||||
};
|
};
|
||||||
|
|
||||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_8x8, sAnimTable_Shadow, sPicTable_ShadowSmall, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
|
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowSmall = {0xFFFF, TAG_WEATHER_START, &gObjectEventBaseOam_8x8, sAnimTable_Shadow, sPicTable_ShadowSmall, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
|
||||||
|
|
||||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_16x8, sAnimTable_Shadow, sPicTable_ShadowMedium, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
|
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowMedium = {0xFFFF, TAG_WEATHER_START, &gObjectEventBaseOam_16x8, sAnimTable_Shadow, sPicTable_ShadowMedium, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
|
||||||
|
|
||||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_32x8, sAnimTable_Shadow, sPicTable_ShadowLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
|
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowLarge = {0xFFFF, TAG_WEATHER_START, &gObjectEventBaseOam_32x8, sAnimTable_Shadow, sPicTable_ShadowLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
|
||||||
|
|
||||||
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = {0xFFFF, OBJ_EVENT_PAL_TAG_MAY, &gObjectEventBaseOam_64x32, sAnimTable_Shadow, sPicTable_ShadowExtraLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
|
const struct SpriteTemplate gFieldEffectObjectTemplate_ShadowExtraLarge = {0xFFFF, TAG_WEATHER_START, &gObjectEventBaseOam_64x32, sAnimTable_Shadow, sPicTable_ShadowExtraLarge, gDummySpriteAffineAnimTable, UpdateShadowFieldEffect};
|
||||||
|
|
||||||
const struct SpriteTemplate gFieldEffectObjectTemplate_BallLight = {0xFFFF, OBJ_EVENT_PAL_TAG_LIGHT, &gObjectEventBaseOam_32x32, sAnimTable_Inanimate, gFieldEffectObjectPicTable_BallLight, gDummySpriteAffineAnimTable, UpdateLightSprite};
|
const struct SpriteTemplate gFieldEffectObjectTemplate_BallLight = {0xFFFF, OBJ_EVENT_PAL_TAG_LIGHT, &gObjectEventBaseOam_32x32, sAnimTable_Inanimate, gFieldEffectObjectPicTable_BallLight, gDummySpriteAffineAnimTable, UpdateLightSprite};
|
||||||
|
|
||||||
|
|||||||
@ -7,11 +7,13 @@
|
|||||||
#include "script.h"
|
#include "script.h"
|
||||||
#include "constants/weather.h"
|
#include "constants/weather.h"
|
||||||
#include "constants/songs.h"
|
#include "constants/songs.h"
|
||||||
|
#include "constants/rgb.h"
|
||||||
#include "sound.h"
|
#include "sound.h"
|
||||||
#include "sprite.h"
|
#include "sprite.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include "trig.h"
|
#include "trig.h"
|
||||||
#include "gpu_regs.h"
|
#include "gpu_regs.h"
|
||||||
|
#include "palette.h"
|
||||||
|
|
||||||
// EWRAM
|
// EWRAM
|
||||||
EWRAM_DATA static u8 gCurrentAbnormalWeather = 0;
|
EWRAM_DATA static u8 gCurrentAbnormalWeather = 0;
|
||||||
@ -1372,6 +1374,9 @@ void FogHorizontal_Main(void);
|
|||||||
static void CreateFogHorizontalSprites(void);
|
static void CreateFogHorizontalSprites(void);
|
||||||
static void DestroyFogHorizontalSprites(void);
|
static void DestroyFogHorizontalSprites(void);
|
||||||
|
|
||||||
|
// Within the weather palette, shadow sprites' color index
|
||||||
|
#define SHADOW_COLOR_INDEX 9
|
||||||
|
|
||||||
void FogHorizontal_InitVars(void)
|
void FogHorizontal_InitVars(void)
|
||||||
{
|
{
|
||||||
gWeatherPtr->initStep = 0;
|
gWeatherPtr->initStep = 0;
|
||||||
@ -1385,7 +1390,7 @@ void FogHorizontal_InitVars(void)
|
|||||||
gWeatherPtr->fogHScrollPosX = 0;
|
gWeatherPtr->fogHScrollPosX = 0;
|
||||||
Weather_SetBlendCoeffs(0, 16);
|
Weather_SetBlendCoeffs(0, 16);
|
||||||
}
|
}
|
||||||
gWeatherPtr->noShadows = TRUE; // TODO: Can fog be made compatible with shadows?
|
gWeatherPtr->noShadows = FALSE;
|
||||||
}
|
}
|
||||||
|
|
||||||
void FogHorizontal_InitAll(void)
|
void FogHorizontal_InitAll(void)
|
||||||
@ -1407,9 +1412,14 @@ void FogHorizontal_Main(void)
|
|||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
CreateFogHorizontalSprites();
|
CreateFogHorizontalSprites();
|
||||||
if (gWeatherPtr->currWeather == WEATHER_FOG_HORIZONTAL)
|
if (gWeatherPtr->currWeather == WEATHER_FOG_HORIZONTAL) {
|
||||||
Weather_SetTargetBlendCoeffs(12, 8, 3);
|
u8 paletteNum = IndexOfSpritePaletteTag(TAG_WEATHER_START);
|
||||||
else
|
Weather_SetTargetBlendCoeffs(12, 8, 3);
|
||||||
|
if (paletteNum != 0xFF) { // Lighten shadow color to match
|
||||||
|
u16 index = (paletteNum+16)*16+SHADOW_COLOR_INDEX; // Shadow color index
|
||||||
|
gPlttBufferUnfaded[index] = gPlttBufferFaded[index] = 0x3DEF; // Gray
|
||||||
|
}
|
||||||
|
} else
|
||||||
Weather_SetTargetBlendCoeffs(4, 16, 0);
|
Weather_SetTargetBlendCoeffs(4, 16, 0);
|
||||||
gWeatherPtr->initStep++;
|
gWeatherPtr->initStep++;
|
||||||
break;
|
break;
|
||||||
@ -1425,6 +1435,7 @@ void FogHorizontal_Main(void)
|
|||||||
|
|
||||||
bool8 FogHorizontal_Finish(void)
|
bool8 FogHorizontal_Finish(void)
|
||||||
{
|
{
|
||||||
|
u8 paletteNum = IndexOfSpritePaletteTag(TAG_WEATHER_START);
|
||||||
gWeatherPtr->fogHScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->fogHScrollOffset) & 0xFF;
|
gWeatherPtr->fogHScrollPosX = (gSpriteCoordOffsetX - gWeatherPtr->fogHScrollOffset) & 0xFF;
|
||||||
if (++gWeatherPtr->fogHScrollCounter > 3)
|
if (++gWeatherPtr->fogHScrollCounter > 3)
|
||||||
{
|
{
|
||||||
@ -1447,6 +1458,10 @@ bool8 FogHorizontal_Finish(void)
|
|||||||
gWeatherPtr->finishStep++;
|
gWeatherPtr->finishStep++;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
|
if (paletteNum != 0xFF) { // Change shadow color back to black
|
||||||
|
u16 index = (paletteNum+16)*16+SHADOW_COLOR_INDEX;
|
||||||
|
gPlttBufferUnfaded[index] = gPlttBufferFaded[index] = RGB_BLACK;
|
||||||
|
}
|
||||||
return FALSE;
|
return FALSE;
|
||||||
}
|
}
|
||||||
return TRUE;
|
return TRUE;
|
||||||
|
|||||||