Port field_weather_effects from emerald

This commit is contained in:
PikalaxALT 2020-03-16 21:43:49 -04:00
parent 21e4406ab9
commit 7610a2dfc2
24 changed files with 2396 additions and 5568 deletions

File diff suppressed because it is too large Load Diff

View File

@ -6,248 +6,3 @@
.include "constants/constants.inc"
.section .rodata
.align 2
gUnknown_83C65C8:: @ 83C65C8
.2byte 0x0000, 0x0042, 0x0005, 0x0049, 0x000a, 0x004e
gUnknown_83C65D4:: @ 83C65D4
obj_tiles gUnknown_83C3D40, 0x0800, 4608
gUnknown_83C65DC::
.4byte 0xc0000400, 0x00000c00
gUnknown_83C65E4::
obj_image_anim_frame 0x0000, 16
obj_image_anim_end
gUnknown_83C65EC::
.4byte gUnknown_83C65E4
gUnknown_83C65F0:: @ 83C65F0
spr_template 4608, 4608, gUnknown_83C65DC, gUnknown_83C65EC, NULL, gDummySpriteAffineAnimTable, sub_807B558
gUnknown_83C6608:: @ 83C6608
.2byte 0x0000, 0x0000
.2byte 0x0000, 0x00a0
.2byte 0x0000, 0x0040
.2byte 0x0090, 0x00e0
.2byte 0x0090, 0x0080
.2byte 0x0020, 0x0020
.2byte 0x0020, 0x00c0
.2byte 0x0020, 0x0060
.2byte 0x0048, 0x0080
.2byte 0x0048, 0x0020
.2byte 0x0048, 0x00c0
.2byte 0x00d8, 0x0060
.2byte 0x00d8, 0x0000
.2byte 0x0068, 0x00a0
.2byte 0x0068, 0x0040
.2byte 0x0068, 0x00e0
.2byte 0x0090, 0x0000
.2byte 0x0090, 0x00a0
.2byte 0x0090, 0x0040
.2byte 0x0020, 0x00e0
.2byte 0x0020, 0x0080
.2byte 0x0048, 0x0020
.2byte 0x0048, 0x00c0
.2byte 0x0030, 0x0060
gUnknown_83C6668::
.4byte 0x80008000, 0x00002400
gUnknown_83C6670::
obj_image_anim_frame 0x0000, 16
obj_image_anim_jump 0
gUnknown_83C6678::
obj_image_anim_frame 0x0008, 3
obj_image_anim_frame 0x0020, 2
obj_image_anim_frame 0x0028, 2
obj_image_anim_end
gUnknown_83C6688::
obj_image_anim_frame 0x0008, 3
obj_image_anim_frame 0x0010, 3
obj_image_anim_frame 0x0018, 4
obj_image_anim_end
gUnknown_83C6698::
.4byte gUnknown_83C6670
.4byte gUnknown_83C6678
.4byte gUnknown_83C6688
gUnknown_83C66A4:: @ 83C66A4
spr_template 4614, 4608, gUnknown_83C6668, gUnknown_83C6698, NULL, gDummySpriteAffineAnimTable, sub_807BA24
gUnknown_83C66BC:: @ 83C66BC
.2byte 0xff98, 0x00d0
.2byte 0xff60, 0x0140
gUnknown_83C66C4:: @ 83C66C4
.2byte 0x0012, 0x0007
.2byte 0x000c, 0x000a
gUnknown_83C66CC:: @ 83C66CC
obj_tiles gUnknown_83C55C0, 0x0600, 4614
gUnknown_83C66D4::
.4byte 0x00000000, 0x00000400
gUnknown_83C66DC::
obj_frame_tiles gUnknown_83C4540 + 0x00, 0x0020
obj_frame_tiles gUnknown_83C4540 + 0x20, 0x0020
gUnknown_83C66EC::
obj_image_anim_frame 0x0000, 16
obj_image_anim_end
gUnknown_83C66F4::
obj_image_anim_frame 0x0001, 16
obj_image_anim_end
gUnknown_83C66FC::
.4byte gUnknown_83C66EC
.4byte gUnknown_83C66F4
gUnknown_83C6704:: @ 83C6704
spr_template 65535, 4608, gUnknown_83C66D4, gUnknown_83C66FC, gUnknown_83C66DC, gDummySpriteAffineAnimTable, sub_807C1AC
gUnknown_83C671C::
.2byte 0x0000, 0x0006, 0x0006, 0x000c, 0x0012, 0x002a, 0x012c, 0x012c
gUnknown_83C672C::
.4byte 0xc0000400, 0x00000800
gUnknown_83C6734::
obj_image_anim_frame 0x0000, 16
obj_image_anim_end
gUnknown_83C673C::
obj_image_anim_frame 0x0020, 16
obj_image_anim_end
gUnknown_83C6744::
obj_image_anim_frame 0x0040, 16
obj_image_anim_end
gUnknown_83C674C::
obj_image_anim_frame 0x0060, 16
obj_image_anim_end
gUnknown_83C6754::
obj_image_anim_frame 0x0080, 16
obj_image_anim_end
gUnknown_83C675C::
obj_image_anim_frame 0x00a0, 16
obj_image_anim_end
gUnknown_83C6764::
.4byte gUnknown_83C6734
.4byte gUnknown_83C673C
.4byte gUnknown_83C6744
.4byte gUnknown_83C674C
.4byte gUnknown_83C6754
.4byte gUnknown_83C675C
gUnknown_83C677C::
obj_rot_scal_anim_frame 512, 512, 0, 0
obj_rot_scal_anim_end
gUnknown_83C678C::
.4byte gUnknown_83C677C
gUnknown_83C6790:: @ 83C6790
spr_template 4609, 4608, gUnknown_83C672C, gUnknown_83C6764, NULL, gUnknown_83C678C, Fog1SpriteCallback
gUnknown_83C67A8:: @ 83C67A8
obj_tiles gWeatherFog1Tiles, 0x0800, 4609
gUnknown_83C67B0:: @ 83C67B0
obj_tiles gUnknown_83C45C0, 0x1000, 4610
gUknown_83C67B8::
.4byte 0xc0000400, 0x0000f400
gUnknown_83C67C0::
obj_image_anim_frame 0x0000, 60
obj_image_anim_frame 0x0040, 60
obj_image_anim_jump 0
gUnknown_83C67CC::
.4byte gUnknown_83C67C0
gUnknown_83C67D0:: @ 83C67D0
spr_template 4610, 4608, gUknown_83C67B8, gUnknown_83C67CC, NULL, gDummySpriteAffineAnimTable, sub_807CF08
gUnknown_83C67E8:: @ 83C67E8
obj_tiles gUnknown_83C2D40, 0x0800, 4611
gUnknown_83C67F0::
.4byte 0xc0000400, 0x00000800
gUnknown_83C67F8::
obj_image_anim_frame 0x0000, 16
obj_image_anim_end
gUnknown_83C6800::
.4byte gUnknown_83C67F8
gUnknown_83C6804:: @ 83C6804
spr_template 4611, 4608, gUnknown_83C67F0, gUnknown_83C6800, NULL, gDummySpriteAffineAnimTable, Fog2SpriteCallback
gUnknown_83C681C::
.4byte 0xc0000400, 0x00000400
gUnknown_83C6824::
obj_image_anim_frame 0x0000, 3
obj_image_anim_end
gUnknown_83C682C::
obj_image_anim_frame 0x0040, 3
obj_image_anim_end
gUnknown_83C6834::
.4byte gUnknown_83C6824
.4byte gUnknown_83C682C
gUnknown_83C683C:: @ 83C683C
spr_template 4612, 4608, gUnknown_83C681C, gUnknown_83C6834, NULL, gDummySpriteAffineAnimTable, SandstormSpriteCallback1
gUnknown_83C6854:: @ 83C6854
obj_tiles gUnknown_83C5BC0, 0x0a00, 4612
gUnknown_83C685C:: @ 83C685C
.2byte 0x0000, 0x0078, 0x0050, 0x00a0, 0x0028, 0x0000
gUnknown_83C6868:: @ 83C6868
.byte 0x28, 0x5a, 0x3c, 0x5a, 0x02, 0x3c, 0x28, 0x1e
gUnknown_83C6870:: @ 83C6870
obj_tiles gUnknown_83C4580, 0x0040, 4613
gUnknown_83C6878:: @ 83C6878
.2byte 0x0078, 0x00a0
.2byte 0x0178, 0x00a0
.2byte 0x0028, 0x008c
.2byte 0x0128, 0x008c
.2byte 0x00b4, 0x0082
.2byte 0x01b4, 0x0082
.2byte 0x003c, 0x00a0
.2byte 0x01b4, 0x00a0
.2byte 0x00dc, 0x00b4
.2byte 0x01dc, 0x00b4
.2byte 0x000a, 0x005a
.2byte 0x010a, 0x005a
.2byte 0x0100, 0x00a0
gUnknown_83C68AC::
obj_image_anim_frame 0x0000, 16
obj_image_anim_frame 0x0001, 16
obj_image_anim_end
gUnknown_83C68B8::
.4byte gUnknown_83C68AC
gUnknown_83C68BC:: @ 83C68BC
spr_template 4613, 4608, gOamData_AffineOff_ObjNormal_8x8, gUnknown_83C68B8, NULL, gDummySpriteAffineAnimTable, unc_0807DAB4

View File

@ -1,19 +0,0 @@
JASC-PAL
0100
16
65 148 255
180 222 255
115 205 246
131 197 255
82 189 246
172 238 246
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0

View File

@ -1,19 +0,0 @@
JASC-PAL
0100
16
0 0 0
255 230 139
189 131 74
238 197 123
213 164 98
164 106 49
255 246 164
222 205 164
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0
0 0 0

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 179 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 271 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 366 B

After

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 653 B

After

Width:  |  Height:  |  Size: 640 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 941 B

After

Width:  |  Height:  |  Size: 928 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1018 B

BIN
graphics/weather/rain.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 603 B

After

Width:  |  Height:  |  Size: 590 B

BIN
graphics/weather/snow0.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 150 B

BIN
graphics/weather/snow1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

View File

@ -137,5 +137,28 @@ void PreservePaletteInWeather(u8 palIdx);
void SetNextWeather(u8 weather);
void SetCurrentAndNextWeather(u8 weather);
void Weather_SetBlendCoeffs(u8 eva, u8 evb);
void Weather_SetTargetBlendCoeffs(u8 eva, u8 evb, int delay);
bool8 Weather_UpdateBlend(void);
void LoadCustomWeatherSpritePalette(const u16 *palette);
void ResetDroughtWeatherPaletteLoading(void);
bool8 LoadDroughtWeatherPalettes(void);
void sub_807AC60(void);
void sub_807AC98(void);
void SetRainStrengthFromSoundEffect(u16 soundEffect);
void sub_807A790(s8 gammaIndex);
void sub_807A7C4(u8 gammaIndex, u8 gammaTargetIndex, u8 gammaStepDelay);
extern const u16 gCloudsWeatherPalette[];
extern const u16 gSandstormWeatherPalette[];
extern const u8 gWeatherFogDiagonalTiles[];
extern const u8 gWeatherFogHorizontalTiles[];
extern const u8 gWeatherCloudTiles[];
extern const u8 gWeatherSnow1Tiles[];
extern const u8 gWeatherSnow2Tiles[];
extern const u8 gWeatherBubbleTiles[];
extern const u8 gWeatherAshTiles[];
extern const u8 gWeatherRainTiles[];
extern const u8 gWeatherSandstormTiles[];
#endif // GUARD_WEATHER_H

View File

@ -4,15 +4,15 @@
bool8 Ash_Finish(void);
bool8 Bubbles_Finish(void);
bool8 Clouds_Finish(void);
bool8 Fog1_Finish(void);
bool8 Fog2_Finish(void);
bool8 LightRain_Finish(void);
bool8 FogHorizontal_Finish(void);
bool8 FogDiagonal_Finish(void);
bool8 Rain_Finish(void);
bool8 Thunderstorm_Finish(void);
bool8 Sandstorm_Finish(void);
bool8 Snow_Finish(void);
bool8 sub_807B434(void);
bool8 sub_807B6BC(void);
bool8 sub_807D8D0(void);
bool8 Sunny_Finish(void);
bool8 Drought_Finish(void);
bool8 Shade_Finish(void);
void Ash_InitAll(void);
void Ash_InitVars(void);
void Ash_Main(void);
@ -25,31 +25,31 @@ void Clouds_Main(void);
void Drought_InitAll(void);
void Drought_InitVars(void);
void Drought_Main(void);
void Fog1_InitAll(void);
void Fog1_InitVars(void);
void Fog1_Main(void);
void Fog2_InitAll(void);
void Fog2_InitVars(void);
void Fog2_Main(void);
void LightRain_InitAll(void);
void LightRain_InitVars(void);
void LightRain_Main(void);
void FogHorizontal_InitAll(void);
void FogHorizontal_InitVars(void);
void FogHorizontal_Main(void);
void FogDiagonal_InitAll(void);
void FogDiagonal_InitVars(void);
void FogDiagonal_Main(void);
void Rain_InitAll(void);
void Rain_InitVars(void);
void Rain_Main(void);
void Thunderstorm_Main(void);
void Sandstorm_InitAll(void);
void Sandstorm_InitVars(void);
void Sandstorm_Main(void);
void Snow_InitAll(void);
void Snow_InitVars(void);
void Weather11_InitAll(void);
void Weather11_InitVars(void);
void Weather2_InitAll(void);
void Weather2_InitVars(void);
void nullsub_48(void);
void nullsub_49(void);
void snowflakes_progress2(void);
void sub_807C2E4(void);
void sub_807C358(void);
void sub_807C388(void);
void sub_807C3F4(void);
void Shade_InitAll(void);
void Shade_InitVars(void);
void Sunny_InitAll(void);
void Sunny_InitVars(void);
void Sunny_Main(void);
void Shade_Main(void);
void Snow_Main(void);
void Thunderstorm_InitVars(void);
void Thunderstorm_InitAll(void);
void Downpour_InitVars(void);
void Downpour_InitAll(void);
#endif //GUARD_FIELD_WEATHER_EFFECTS_H

View File

@ -4322,7 +4322,7 @@ extern const u32 gSubstituteDollTilemap[];
extern const u32 gSubstituteDollPal[];
// ice
extern const u8 gWeatherFog1Tiles[];
extern const u8 gWeatherFogHorizontalTiles[];
extern const u32 gBattleAnimFogTilemap[];
extern const u16 gUnknown_83C2CE0[];

View File

@ -116,7 +116,7 @@ SECTIONS {
src/reset_save_heap.o(.text);
src/field_weather.o(.text);
src/field_weather_util.o(.text);
asm/field_weather_effects.o(.text);
src/field_weather_effects.o(.text);
src/field_fadetransition.o(.text);
src/field_screen_effect.o(.text);
src/battle_setup.o(.text);
@ -449,7 +449,7 @@ SECTIONS {
src/title_screen.o(.rodata);
src/field_weather.o(.rodata);
src/field_weather_util.o(.rodata);
data/field_weather.o(.rodata);
src/field_weather_effects.o(.rodata);
src/field_screen_effect.o(.rodata);
src/battle_setup.o(.rodata);
src/cable_club.o(.rodata);

View File

@ -62,25 +62,24 @@ bool8 FadeInScreen_FogHorizontal(void);
void DoNothing(void);
void ApplyFogBlend(u8 blendCoeff, u16 blendColor);
bool8 LightenSpritePaletteInFog(u8 paletteIndex);
void Weather_SetBlendCoeffs(u8, u8);
struct Weather *const gWeatherPtr = &gWeather;
const struct WeatherCallbacks sWeatherFuncs[] = {
{None_Init, None_Main, None_Init, None_Finish},
{Clouds_InitVars, Clouds_Main, Clouds_InitAll, Clouds_Finish},
{Weather2_InitVars, nullsub_48, Weather2_InitAll, sub_807B434},
{LightRain_InitVars, LightRain_Main, LightRain_InitAll, LightRain_Finish},
{Snow_InitVars, snowflakes_progress2, Snow_InitAll, Snow_Finish},
{sub_807C2E4, Rain_Main, sub_807C358, Rain_Finish},
{Fog1_InitVars, Fog1_Main, Fog1_InitAll, Fog1_Finish},
{Sunny_InitVars, Sunny_Main, Sunny_InitAll, Sunny_Finish},
{Rain_InitVars, Rain_Main, Rain_InitAll, Rain_Finish},
{Snow_InitVars, Snow_Main, Snow_InitAll, Snow_Finish},
{Thunderstorm_InitVars, Thunderstorm_Main, Thunderstorm_InitAll, Thunderstorm_Finish},
{FogHorizontal_InitVars, FogHorizontal_Main, FogHorizontal_InitAll, FogHorizontal_Finish},
{Ash_InitVars, Ash_Main, Ash_InitAll, Ash_Finish},
{Sandstorm_InitVars, Sandstorm_Main, Sandstorm_InitAll, Sandstorm_Finish},
{Fog2_InitVars, Fog2_Main, Fog2_InitAll, Fog2_Finish},
{Fog1_InitVars, Fog1_Main, Fog1_InitAll, Fog1_Finish},
{Weather11_InitVars, nullsub_49, Weather11_InitAll, sub_807D8D0},
{Drought_InitVars, Drought_Main, Drought_InitAll, sub_807B6BC},
{sub_807C388, Rain_Main, sub_807C3F4, Rain_Finish},
{FogDiagonal_InitVars, FogDiagonal_Main, FogDiagonal_InitAll, FogDiagonal_Finish},
{FogHorizontal_InitVars, FogHorizontal_Main, FogHorizontal_InitAll, FogHorizontal_Finish},
{Shade_InitVars, Shade_Main, Shade_InitAll, Shade_Finish},
{Drought_InitVars, Drought_Main, Drought_InitAll, Drought_Finish},
{Downpour_InitVars, Thunderstorm_Main, Downpour_InitAll, Thunderstorm_Finish},
{Bubbles_InitVars, Bubbles_Main, Bubbles_InitAll, Bubbles_Finish},
};
@ -129,6 +128,17 @@ const u8 sBasePaletteGammaTypes[32] = {
};
const u16 gUnknown_83C2CE0[] = INCBIN_U16("graphics/field_effects/unk_83C2CE0.gbapal");
const u16 gCloudsWeatherPalette[] = INCBIN_U16("graphics/weather/cloud.gbapal");
const u16 gSandstormWeatherPalette[] = INCBIN_U16("graphics/weather/sandstorm.gbapal");
const u8 gWeatherFogDiagonalTiles[] = INCBIN_U8("graphics/weather/fog_diagonal.4bpp");
const u8 gWeatherFogHorizontalTiles[] = INCBIN_U8("graphics/weather/fog_horizontal.4bpp");
const u8 gWeatherCloudTiles[] = INCBIN_U8("graphics/weather/cloud.4bpp");
const u8 gWeatherSnow1Tiles[] = INCBIN_U8("graphics/weather/snow0.4bpp");
const u8 gWeatherSnow2Tiles[] = INCBIN_U8("graphics/weather/snow1.4bpp");
const u8 gWeatherBubbleTiles[] = INCBIN_U8("graphics/weather/bubble.4bpp");
const u8 gWeatherAshTiles[] = INCBIN_U8("graphics/weather/ash.4bpp");
const u8 gWeatherRainTiles[] = INCBIN_U8("graphics/weather/rain.4bpp");
const u8 gWeatherSandstormTiles[] = INCBIN_U8("graphics/weather/sandstorm.4bpp");
// code
void StartWeather(void)

2321
src/field_weather_effects.c Normal file

File diff suppressed because it is too large Load Diff

View File

@ -6,17 +6,6 @@
u8 TranslateWeatherNum(u8 weather);
void UpdateRainCounter(u8 newWeather, u8 oldWeather);
const u16 gUnknown_83C2D00[] = INCBIN_U16("graphics/field_effects/unk_83C2D00.gbapal");
const u16 gUnknown_83C2D20[] = INCBIN_U16("graphics/field_effects/unk_83C2D20.gbapal");
const u16 gUnknown_83C2D40[] = INCBIN_U16("graphics/field_effects/unk_83C2D40.4bpp");
const u16 gWeatherFog1Tiles[] = INCBIN_U16("graphics/field_effects/unk_83C3540.4bpp");
const u16 gUnknown_83C3D40[] = INCBIN_U16("graphics/field_effects/unk_83C3D40.4bpp");
const u16 gUnknown_83C4540[] = INCBIN_U16("graphics/field_effects/unk_83C4540.4bpp");
const u16 gUnknown_83C4580[] = INCBIN_U16("graphics/field_effects/unk_83C4580.4bpp");
const u16 gUnknown_83C45C0[] = INCBIN_U16("graphics/field_effects/unk_83C45C0.4bpp");
const u16 gUnknown_83C55C0[] = INCBIN_U16("graphics/field_effects/unk_83C55C0.4bpp");
const u16 gUnknown_83C5BC0[] = INCBIN_U16("graphics/field_effects/unk_83C5BC0.4bpp");
void SetSav1Weather(u32 weather)
{
u8 oldWeather = gSaveBlock1Ptr->weather;

View File

@ -944,7 +944,7 @@ void AnimTask_Haze1(u8 taskId)
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
sub_80752A0(&animBg);
LoadBgTiles(animBg.bgId, gWeatherFog1Tiles, 0x800, animBg.tilesOffset);
LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset);
AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimFogTilemap);
LoadPalette(&gUnknown_83C2CE0, animBg.paletteId * 16, 32);
if (IsContest())
@ -1042,7 +1042,7 @@ void AnimTask_LoadMistTiles(u8 taskId)
SetGpuReg(REG_OFFSET_BG1HOFS, gBattle_BG1_X);
SetGpuReg(REG_OFFSET_BG1VOFS, gBattle_BG1_Y);
sub_80752A0(&animBg);
LoadBgTiles(animBg.bgId, gWeatherFog1Tiles, 0x800, animBg.tilesOffset);
LoadBgTiles(animBg.bgId, gWeatherFogHorizontalTiles, 0x800, animBg.tilesOffset);
AnimLoadCompressedBgTilemap(animBg.bgId, gBattleAnimFogTilemap);
LoadPalette(&gUnknown_83C2CE0, animBg.paletteId * 16, 32);
if (IsContest())