finished primary tilesets and fixed grass effects
|
|
@ -40,3 +40,10 @@
|
|||
.4byte \palette_address
|
||||
.4byte \function_address
|
||||
.endm
|
||||
|
||||
@ TODO: refactor field effects/field moves
|
||||
.macro loadfadedpal_callnative_by_fldeff fldeff, function_address
|
||||
.byte 8
|
||||
.byte \fldeff
|
||||
.4byte \function_address
|
||||
.endm
|
||||
|
|
|
|||
|
|
@ -1,3 +1,4 @@
|
|||
#include "constants/field_effects.h"
|
||||
.include "asm/macros/field_effect_script.inc"
|
||||
.section script_data, "aw", %progbits
|
||||
.align 2
|
||||
|
|
@ -93,7 +94,7 @@ gFldEffScript_Shadow::
|
|||
end
|
||||
|
||||
gFldEffScript_TallGrass::
|
||||
loadfadedpal_callnative gSpritePalette_GeneralFieldEffect1, FldEff_TallGrass
|
||||
loadfadedpal_callnative_by_fldeff FLDEFF_TALL_GRASS, FldEff_TallGrass
|
||||
end
|
||||
|
||||
gFldEffScript_Ripple::
|
||||
|
|
@ -124,7 +125,7 @@ gFldEffScript_UseSecretPowerCave::
|
|||
end
|
||||
|
||||
gFldEffScript_JumpTallGrass::
|
||||
loadfadedpal_callnative gSpritePalette_GeneralFieldEffect1, FldEff_JumpTallGrass
|
||||
loadfadedpal_callnative_by_fldeff FLDEFF_JUMP_TALL_GRASS, FldEff_TallGrass
|
||||
end
|
||||
|
||||
gFldEffScript_SandFootprints::
|
||||
|
|
|
|||
|
|
@ -153,8 +153,12 @@
|
|||
"flag": "0"
|
||||
}
|
||||
],
|
||||
"warp_events": [],
|
||||
"coord_events": [],
|
||||
"warp_events": [
|
||||
|
||||
],
|
||||
"coord_events": [
|
||||
|
||||
],
|
||||
"bg_events": [
|
||||
{
|
||||
"type": "sign",
|
||||
|
|
|
|||
|
|
@ -142,7 +142,9 @@
|
|||
"dest_warp_id": "1"
|
||||
}
|
||||
],
|
||||
"coord_events": [],
|
||||
"coord_events": [
|
||||
|
||||
],
|
||||
"bg_events": [
|
||||
{
|
||||
"type": "sign",
|
||||
|
|
|
|||
|
|
@ -3,17 +3,17 @@ JASC-PAL
|
|||
16
|
||||
0 0 0
|
||||
242 166 90
|
||||
245 133 73
|
||||
105 41 6
|
||||
75 29 4
|
||||
213 115 17
|
||||
119 64 9
|
||||
71 39 6
|
||||
115 98 98
|
||||
65 57 49
|
||||
255 0 255
|
||||
247 203 122
|
||||
154 196 149
|
||||
75 124 68
|
||||
255 197 115
|
||||
238 131 106
|
||||
197 49 65
|
||||
255 213 131
|
||||
238 193 112
|
||||
238 193 128
|
||||
0 166 90
|
||||
185 214 182
|
||||
123 178 116
|
||||
94 156 87
|
||||
35 58 32
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ JASC-PAL
|
|||
123 123 131
|
||||
32 49 57
|
||||
230 238 238
|
||||
243 177 56
|
||||
94 156 87
|
||||
90 90 115
|
||||
238 213 197
|
||||
222 197 164
|
||||
|
|
@ -16,4 +16,4 @@ JASC-PAL
|
|||
148 106 106
|
||||
123 74 74
|
||||
90 57 65
|
||||
238 193 112
|
||||
123 178 116
|
||||
|
|
|
|||
|
|
@ -14,6 +14,6 @@ JASC-PAL
|
|||
238 230 139
|
||||
222 197 139
|
||||
213 189 106
|
||||
247 203 122
|
||||
247 203 122
|
||||
238 193 112
|
||||
154 196 149
|
||||
198 198 132
|
||||
123 178 116
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 8.9 KiB After Width: | Height: | Size: 8.9 KiB |
|
|
@ -2,18 +2,18 @@ JASC-PAL
|
|||
0100
|
||||
16
|
||||
0 0 0
|
||||
131 213 98
|
||||
57 148 49
|
||||
57 90 16
|
||||
31 72 20
|
||||
136 184 48
|
||||
106 144 37
|
||||
76 103 27
|
||||
46 63 16
|
||||
115 98 98
|
||||
65 57 49
|
||||
255 0 255
|
||||
151 216 123
|
||||
152 217 125
|
||||
73 146 43
|
||||
255 197 115
|
||||
238 131 106
|
||||
197 49 65
|
||||
181 227 161
|
||||
183 228 165
|
||||
121 205 86
|
||||
106 199 67
|
||||
93 184 55
|
||||
93 185 55
|
||||
34 67 20
|
||||
|
|
|
|||
|
|
@ -14,6 +14,6 @@ JASC-PAL
|
|||
238 230 139
|
||||
222 197 139
|
||||
213 189 106
|
||||
151 216 123
|
||||
152 217 125
|
||||
151 216 123
|
||||
121 205 86
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.9 KiB |
|
|
@ -3,17 +3,17 @@ JASC-PAL
|
|||
16
|
||||
0 0 0
|
||||
255 255 255
|
||||
255 255 255
|
||||
57 148 49
|
||||
57 90 16
|
||||
230 230 230
|
||||
76 103 27
|
||||
46 63 16
|
||||
115 98 98
|
||||
65 57 49
|
||||
255 0 255
|
||||
210 235 255
|
||||
230 230 255
|
||||
75 124 68
|
||||
255 197 115
|
||||
238 131 106
|
||||
197 49 65
|
||||
255 255 255
|
||||
255 255 255
|
||||
255 255 255
|
||||
255 255 255
|
||||
230 230 230
|
||||
35 58 32
|
||||
|
|
|
|||
|
Before Width: | Height: | Size: 8.5 KiB After Width: | Height: | Size: 8.9 KiB |
19
graphics/field_effects/palettes/general_1_autumn.pal
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
255 0 238
|
||||
185 214 182
|
||||
131 213 98
|
||||
75 124 68
|
||||
35 58 32
|
||||
49 65 0
|
||||
98 172 238
|
||||
98 172 197
|
||||
139 205 246
|
||||
148 230 255
|
||||
0 0 0
|
||||
0 0 0
|
||||
185 214 182
|
||||
123 178 116
|
||||
123 178 116
|
||||
24 164 106
|
||||
19
graphics/field_effects/palettes/general_1_summer.pal
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
255 0 238
|
||||
150 215 122
|
||||
131 213 98
|
||||
73 146 43
|
||||
34 67 20
|
||||
49 65 0
|
||||
98 172 238
|
||||
98 172 197
|
||||
139 205 246
|
||||
148 230 255
|
||||
0 0 0
|
||||
0 0 0
|
||||
183 228 165
|
||||
121 205 86
|
||||
93 185 55
|
||||
24 164 106
|
||||
19
graphics/field_effects/palettes/general_1_winter.pal
Normal file
|
|
@ -0,0 +1,19 @@
|
|||
JASC-PAL
|
||||
0100
|
||||
16
|
||||
255 0 238
|
||||
123 179 115
|
||||
131 213 98
|
||||
75 124 68
|
||||
35 58 32
|
||||
49 65 0
|
||||
98 172 238
|
||||
98 172 197
|
||||
139 205 246
|
||||
148 230 255
|
||||
0 0 0
|
||||
0 0 0
|
||||
255 255 255
|
||||
255 255 255
|
||||
230 230 230
|
||||
24 164 106
|
||||
BIN
graphics/field_effects/pics/tall_grass_autumn.png
Normal file
|
After Width: | Height: | Size: 395 B |
BIN
graphics/field_effects/pics/tall_grass_summer.png
Normal file
|
After Width: | Height: | Size: 395 B |
BIN
graphics/field_effects/pics/tall_grass_winter.png
Normal file
|
After Width: | Height: | Size: 395 B |
|
|
@ -76,6 +76,8 @@
|
|||
#define FLDEFF_TRACKS_SPOT 71
|
||||
#define FLDEFF_TRACKS_BUG 72
|
||||
|
||||
#define FLDEFF_COUNT 73
|
||||
|
||||
#define FLDEFF_PAL_TAG_GENERAL_0 0x1004
|
||||
#define FLDEFF_PAL_TAG_GENERAL_1 0x1005
|
||||
#define FLDEFF_PAL_TAG_POKEBALL_TRAIL 0x1009
|
||||
|
|
|
|||
|
|
@ -225,7 +225,12 @@ void FieldEffectFreeTilesIfUnused(u16 tileStart);
|
|||
|
||||
extern const struct SpriteTemplate *const gFieldEffectObjectTemplatePointers[];
|
||||
extern const struct SpritePalette gSpritePalette_GeneralFieldEffect1;
|
||||
extern const struct SpriteTemplate * const gFieldEffectObjectTemplatePointers[];
|
||||
extern const struct SpritePalette gSpritePalette_GeneralFieldEffect1Summer;
|
||||
extern const struct SpritePalette gSpritePalette_GeneralFieldEffect1Autumn;
|
||||
extern const struct SpritePalette gSpritePalette_GeneralFieldEffect1Winter;
|
||||
extern const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrassSummer;
|
||||
extern const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrassAutumn;
|
||||
extern const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrassWinter;
|
||||
extern const struct OamData gObjectEventBaseOam_32x32;
|
||||
extern const struct OamData gObjectEventBaseOam_64x64;
|
||||
extern const struct SubspriteTable sOamTables_32x32[];
|
||||
|
|
|
|||
|
|
@ -110,6 +110,7 @@ enum Season {
|
|||
};
|
||||
|
||||
extern struct Time gLocalTime;
|
||||
extern enum Season gLoadedSeason;
|
||||
|
||||
void RtcDisableInterrupts(void);
|
||||
void RtcRestoreInterrupts(void);
|
||||
|
|
@ -146,5 +147,6 @@ enum Season GetSeason(void);
|
|||
const u8* GetSeasonName(enum Season);
|
||||
u8 GetSeasonDay(void);
|
||||
u32 GetGen5TimeOfDayStart(enum TimeOfDay);
|
||||
void UpdateLoadedSeason();
|
||||
|
||||
#endif // GUARD_RTC_UTIL_H
|
||||
|
|
|
|||
|
|
@ -1,5 +1,8 @@
|
|||
const struct SpritePalette gSpritePalette_GeneralFieldEffect0 = { .data = gFieldEffectObjectPalette0, .tag = FLDEFF_PAL_TAG_GENERAL_0 };
|
||||
const struct SpritePalette gSpritePalette_GeneralFieldEffect1 = { .data = gFieldEffectObjectPalette1, .tag = FLDEFF_PAL_TAG_GENERAL_1 };
|
||||
const struct SpritePalette gSpritePalette_GeneralFieldEffect1Summer = { .data = gFieldEffectObjectPalette1Summer, .tag = FLDEFF_PAL_TAG_GENERAL_1 };
|
||||
const struct SpritePalette gSpritePalette_GeneralFieldEffect1Autumn = { .data = gFieldEffectObjectPalette1Autumn, .tag = FLDEFF_PAL_TAG_GENERAL_1 };
|
||||
const struct SpritePalette gSpritePalette_GeneralFieldEffect1Winter = { .data = gFieldEffectObjectPalette1Winter, .tag = FLDEFF_PAL_TAG_GENERAL_1 };
|
||||
|
||||
static const union AnimCmd sAnim_Shadow[] =
|
||||
{
|
||||
|
|
@ -70,6 +73,33 @@ static const struct SpriteFrameImage sPicTable_TallGrass[] =
|
|||
overworld_frame(gFieldEffectObjectPic_TallGrass, 2, 2, 4),
|
||||
};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_TallGrassSummer[] =
|
||||
{
|
||||
overworld_frame(gFieldEffectObjectPic_TallGrassSummer, 2, 2, 0),
|
||||
overworld_frame(gFieldEffectObjectPic_TallGrassSummer, 2, 2, 1),
|
||||
overworld_frame(gFieldEffectObjectPic_TallGrassSummer, 2, 2, 2),
|
||||
overworld_frame(gFieldEffectObjectPic_TallGrassSummer, 2, 2, 3),
|
||||
overworld_frame(gFieldEffectObjectPic_TallGrassSummer, 2, 2, 4),
|
||||
};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_TallGrassAutumn[] =
|
||||
{
|
||||
overworld_frame(gFieldEffectObjectPic_TallGrassAutumn, 2, 2, 0),
|
||||
overworld_frame(gFieldEffectObjectPic_TallGrassAutumn, 2, 2, 1),
|
||||
overworld_frame(gFieldEffectObjectPic_TallGrassAutumn, 2, 2, 2),
|
||||
overworld_frame(gFieldEffectObjectPic_TallGrassAutumn, 2, 2, 3),
|
||||
overworld_frame(gFieldEffectObjectPic_TallGrassAutumn, 2, 2, 4),
|
||||
};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_TallGrassWinter[] =
|
||||
{
|
||||
overworld_frame(gFieldEffectObjectPic_TallGrassWinter, 2, 2, 0),
|
||||
overworld_frame(gFieldEffectObjectPic_TallGrassWinter, 2, 2, 1),
|
||||
overworld_frame(gFieldEffectObjectPic_TallGrassWinter, 2, 2, 2),
|
||||
overworld_frame(gFieldEffectObjectPic_TallGrassWinter, 2, 2, 3),
|
||||
overworld_frame(gFieldEffectObjectPic_TallGrassWinter, 2, 2, 4),
|
||||
};
|
||||
|
||||
static const union AnimCmd sAnim_TallGrass[] =
|
||||
{
|
||||
ANIMCMD_FRAME(1, 10),
|
||||
|
|
@ -96,6 +126,39 @@ const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrass =
|
|||
.callback = UpdateTallGrassFieldEffect,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrassSummer =
|
||||
{
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = FLDEFF_PAL_TAG_GENERAL_1,
|
||||
.oam = &gObjectEventBaseOam_16x16,
|
||||
.anims = sAnimTable_TallGrass,
|
||||
.images = sPicTable_TallGrassSummer,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = UpdateTallGrassFieldEffect,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrassAutumn =
|
||||
{
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = FLDEFF_PAL_TAG_GENERAL_1,
|
||||
.oam = &gObjectEventBaseOam_16x16,
|
||||
.anims = sAnimTable_TallGrass,
|
||||
.images = sPicTable_TallGrassAutumn,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = UpdateTallGrassFieldEffect,
|
||||
};
|
||||
|
||||
const struct SpriteTemplate gFieldEffectObjectTemplate_TallGrassWinter =
|
||||
{
|
||||
.tileTag = TAG_NONE,
|
||||
.paletteTag = FLDEFF_PAL_TAG_GENERAL_1,
|
||||
.oam = &gObjectEventBaseOam_16x16,
|
||||
.anims = sAnimTable_TallGrass,
|
||||
.images = sPicTable_TallGrassWinter,
|
||||
.affineAnims = gDummySpriteAffineAnimTable,
|
||||
.callback = UpdateTallGrassFieldEffect,
|
||||
};
|
||||
|
||||
static const struct SpriteFrameImage sPicTable_Ripple[] =
|
||||
{
|
||||
overworld_frame(gFieldEffectObjectPic_Ripple, 2, 2, 0),
|
||||
|
|
|
|||
|
|
@ -199,6 +199,9 @@ const u16 gFieldEffectObjectPic_Ash[] = INCBIN_U16("graphics/field_effects/pics/
|
|||
const u16 gFieldEffectObjectPic_Arrow[] = INCBIN_U16("graphics/field_effects/pics/arrow.4bpp");
|
||||
const u16 gFieldEffectObjectPalette0[] = INCBIN_U16("graphics/field_effects/palettes/general_0.gbapal");
|
||||
const u16 gFieldEffectObjectPalette1[] = INCBIN_U16("graphics/field_effects/palettes/general_1.gbapal");
|
||||
const u16 gFieldEffectObjectPalette1Summer[] = INCBIN_U16("graphics/field_effects/palettes/general_1_summer.gbapal");
|
||||
const u16 gFieldEffectObjectPalette1Autumn[] = INCBIN_U16("graphics/field_effects/palettes/general_1_autumn.gbapal");
|
||||
const u16 gFieldEffectObjectPalette1Winter[] = INCBIN_U16("graphics/field_effects/palettes/general_1_winter.gbapal");
|
||||
const u16 sFiller2[0x10] = {};
|
||||
const u16 gFieldEffectObjectPic_GroundImpactDust[] = INCBIN_U16("graphics/field_effects/pics/ground_impact_dust.4bpp");
|
||||
const u16 gFieldEffectObjectPic_UnusedGrass3[] = INCBIN_U16("graphics/field_effects/pics/unused_grass_3.4bpp"); // Unused
|
||||
|
|
@ -209,6 +212,9 @@ const u16 gFieldEffectObjectPic_UnusedGrass[] = INCBIN_U16("graphics/field_effec
|
|||
const u16 gFieldEffectObjectPic_UnusedGrass2[] = INCBIN_U16("graphics/field_effects/pics/unused_grass_2.4bpp");
|
||||
const u16 gFieldEffectObjectPic_LongGrass[] = INCBIN_U16("graphics/field_effects/pics/long_grass.4bpp");
|
||||
const u16 gFieldEffectObjectPic_TallGrass[] = INCBIN_U16("graphics/field_effects/pics/tall_grass.4bpp");
|
||||
const u16 gFieldEffectObjectPic_TallGrassSummer[] = INCBIN_U16("graphics/field_effects/pics/tall_grass_summer.4bpp");
|
||||
const u16 gFieldEffectObjectPic_TallGrassAutumn[] = INCBIN_U16("graphics/field_effects/pics/tall_grass_autumn.4bpp");
|
||||
const u16 gFieldEffectObjectPic_TallGrassWinter[] = INCBIN_U16("graphics/field_effects/pics/tall_grass_winter.4bpp");
|
||||
const u16 gFieldEffectObjectPic_ShortGrass[] = INCBIN_U16("graphics/field_effects/pics/short_grass.4bpp");
|
||||
const u16 gFieldEffectObjectPic_SandFootprints[] = INCBIN_U16("graphics/field_effects/pics/sand_footprints.4bpp");
|
||||
const u16 gFieldEffectObjectPic_DeepSandFootprints[] = INCBIN_U16("graphics/field_effects/pics/deep_sand_footprints.4bpp");
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@
|
|||
#include "party_menu.h"
|
||||
#include "pokemon_storage_system.h"
|
||||
#include "quest_log.h"
|
||||
#include "rtc.h"
|
||||
#include "script.h"
|
||||
#include "special_field_anim.h"
|
||||
#include "task.h"
|
||||
|
|
@ -47,8 +48,10 @@ static bool8 FieldEffectCmd_end(const u8 **script, u32 *result);
|
|||
static bool8 FieldEffectCmd_loadgfx_callnative(const u8 **script, u32 *result);
|
||||
static bool8 FieldEffectCmd_loadtiles_callnative(const u8 **script, u32 *result);
|
||||
static bool8 FieldEffectCmd_loadfadedpal_callnative(const u8 **script, u32 *result);
|
||||
static bool8 FieldEffectCmd_loadfadedpal_callnative_by_fldeff(const u8 **script, u32 *result);
|
||||
static void FieldEffectScript_LoadTiles(const u8 **script);
|
||||
static void FieldEffectScript_LoadFadedPal(const u8 **script);
|
||||
static void FieldEffectScript_LoadFadedPalByFldeff(const u8 **script);
|
||||
static void FieldEffectScript_LoadPal(const u8 **script);
|
||||
static void FieldEffectScript_CallNative(const u8 **script, u32 *result);
|
||||
static void Task_PokecenterHeal(u8 taskId);
|
||||
|
|
@ -87,7 +90,26 @@ static bool8 (*const sFldEffScrcmdTable[])(const u8 **script, u32 *result) = {
|
|||
FieldEffectCmd_end,
|
||||
FieldEffectCmd_loadgfx_callnative,
|
||||
FieldEffectCmd_loadtiles_callnative,
|
||||
FieldEffectCmd_loadfadedpal_callnative
|
||||
FieldEffectCmd_loadfadedpal_callnative,
|
||||
FieldEffectCmd_loadfadedpal_callnative_by_fldeff
|
||||
};
|
||||
|
||||
static const struct SpritePalette* const gFieldEffectPalettes[FLDEFF_COUNT][SEASON_WINTER + 1] =
|
||||
{
|
||||
[FLDEFF_TALL_GRASS] =
|
||||
{
|
||||
[SEASON_SPRING] = &gSpritePalette_GeneralFieldEffect1,
|
||||
[SEASON_SUMMER] = &gSpritePalette_GeneralFieldEffect1Summer,
|
||||
[SEASON_AUTUMN] = &gSpritePalette_GeneralFieldEffect1Autumn,
|
||||
[SEASON_WINTER] = &gSpritePalette_GeneralFieldEffect1Winter,
|
||||
},
|
||||
[FLDEFF_JUMP_TALL_GRASS] =
|
||||
{
|
||||
[SEASON_SPRING] = &gSpritePalette_GeneralFieldEffect1,
|
||||
[SEASON_SUMMER] = &gSpritePalette_GeneralFieldEffect1Summer,
|
||||
[SEASON_AUTUMN] = &gSpritePalette_GeneralFieldEffect1Autumn,
|
||||
[SEASON_WINTER] = &gSpritePalette_GeneralFieldEffect1Winter,
|
||||
},
|
||||
};
|
||||
|
||||
static const struct OamData sNewGameOakOamAttributes = {
|
||||
|
|
@ -418,6 +440,15 @@ static bool8 FieldEffectCmd_loadfadedpal_callnative(const u8 **script, u32 *resu
|
|||
return TRUE;
|
||||
}
|
||||
|
||||
static bool8 FieldEffectCmd_loadfadedpal_callnative_by_fldeff(const u8 **script, u32 *result)
|
||||
{
|
||||
(*script)++;
|
||||
FieldEffectScript_LoadFadedPalByFldeff(script);
|
||||
FieldEffectScript_CallNative(script, result);
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
|
||||
static u32 FieldEffectScript_ReadWord(const u8 **script)
|
||||
{
|
||||
return T2_READ_32(*script);
|
||||
|
|
@ -464,6 +495,26 @@ static void FieldEffectScript_LoadFadedPal(const u8 **script)
|
|||
*script += sizeof(u32);
|
||||
}
|
||||
|
||||
static const struct SpritePalette* GetFieldEffectPalette(u32 fldEff)
|
||||
{
|
||||
if (gFieldEffectPalettes[fldEff][gLoadedSeason] != NULL)
|
||||
return gFieldEffectPalettes[fldEff][gLoadedSeason];
|
||||
return gFieldEffectPalettes[fldEff][SEASON_SPRING];
|
||||
}
|
||||
|
||||
static void FieldEffectScript_LoadFadedPalByFldeff(const u8 **script)
|
||||
{
|
||||
u8 fldEff = *script[0];
|
||||
const struct SpritePalette* spritePalette = GetFieldEffectPalette(fldEff);
|
||||
|
||||
u8 idx = IndexOfSpritePaletteTag(spritePalette->tag);
|
||||
LoadSpritePalette(spritePalette);
|
||||
if (idx == 0xFF)
|
||||
ApplyGlobalFieldPaletteTint(IndexOfSpritePaletteTag(spritePalette->tag));
|
||||
UpdateSpritePaletteWithWeather(IndexOfSpritePaletteTag(spritePalette->tag), TRUE);
|
||||
*script += sizeof(u8);
|
||||
}
|
||||
|
||||
static void FieldEffectScript_LoadPal(const u8 **script)
|
||||
{
|
||||
const struct SpritePalette * spritePalette = (const struct SpritePalette * )FieldEffectScript_ReadWord(script);
|
||||
|
|
|
|||
|
|
@ -7,6 +7,7 @@
|
|||
#include "field_weather.h"
|
||||
#include "fieldmap.h"
|
||||
#include "metatile_behavior.h"
|
||||
#include "rtc.h"
|
||||
#include "constants/field_effects.h"
|
||||
#include "constants/event_objects.h"
|
||||
#include "constants/songs.h"
|
||||
|
|
@ -397,7 +398,23 @@ u32 FldEff_TallGrass(void)
|
|||
x = gFieldEffectArguments[0];
|
||||
y = gFieldEffectArguments[1];
|
||||
SetSpritePosToOffsetMapCoords(&x, &y, 8, 8);
|
||||
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TALL_GRASS], x, y, 0);
|
||||
switch(gLoadedSeason)
|
||||
{
|
||||
case SEASON_SPRING:
|
||||
default:
|
||||
spriteId = CreateSpriteAtEnd(gFieldEffectObjectTemplatePointers[FLDEFFOBJ_TALL_GRASS], x, y, 0);
|
||||
break;
|
||||
case SEASON_SUMMER:
|
||||
spriteId = CreateSpriteAtEnd(&gFieldEffectObjectTemplate_TallGrassSummer, x, y, 0);
|
||||
break;
|
||||
case SEASON_AUTUMN:
|
||||
spriteId = CreateSpriteAtEnd(&gFieldEffectObjectTemplate_TallGrassAutumn, x, y, 0);
|
||||
break;
|
||||
case SEASON_WINTER:
|
||||
spriteId = CreateSpriteAtEnd(&gFieldEffectObjectTemplate_TallGrassWinter, x, y, 0);
|
||||
break;
|
||||
}
|
||||
|
||||
if (spriteId != MAX_SPRITES)
|
||||
{
|
||||
sprite = &gSprites[spriteId];
|
||||
|
|
|
|||
|
|
@ -1,10 +1,11 @@
|
|||
#include "global.h"
|
||||
#include "gflib.h"
|
||||
#include "overworld.h"
|
||||
#include "script.h"
|
||||
#include "menu.h"
|
||||
#include "quest_log.h"
|
||||
#include "fieldmap.h"
|
||||
#include "menu.h"
|
||||
#include "overworld.h"
|
||||
#include "quest_log.h"
|
||||
#include "rtc.h"
|
||||
#include "script.h"
|
||||
|
||||
struct ConnectionFlags
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1956,6 +1956,7 @@ static bool32 LoadMapInStepsLink(u8 *state)
|
|||
switch (*state)
|
||||
{
|
||||
case 0:
|
||||
UpdateLoadedSeason();
|
||||
InitOverworldBgs();
|
||||
ScriptContext_Init();
|
||||
UnlockPlayerFieldControls();
|
||||
|
|
@ -2033,6 +2034,7 @@ static bool32 LoadMapInStepsLocal(u8 *state, bool32 inLink)
|
|||
switch (*state)
|
||||
{
|
||||
case 0:
|
||||
UpdateLoadedSeason();
|
||||
InitOverworldBgs();
|
||||
FieldClearVBlankHBlankCallbacks();
|
||||
LoadMapFromWarp(inLink);
|
||||
|
|
|
|||
|
|
@ -14,6 +14,8 @@ static u16 sSavedIme;
|
|||
// iwram common
|
||||
struct Time gLocalTime;
|
||||
|
||||
EWRAM_DATA enum Season gLoadedSeason = SEASON_SPRING;
|
||||
|
||||
// const rom
|
||||
static const u8 sText_SpringName[] = _("Spring");
|
||||
static const u8 sText_SummerName[] = _("Summer");
|
||||
|
|
@ -514,3 +516,9 @@ u32 GetGen5TimeOfDayStart(enum TimeOfDay timeOfDay)
|
|||
{
|
||||
return sTimeOfDayStarts[GetSeason()][timeOfDay];
|
||||
}
|
||||
|
||||
void UpdateLoadedSeason()
|
||||
{
|
||||
DebugPrintfLevel(MGBA_LOG_ERROR, "UpdateLoadedSeason");
|
||||
gLoadedSeason = GetSeason();
|
||||
}
|
||||
|
|
|
|||
|
|
@ -41,17 +41,14 @@ static const struct Tileset* const gSeasonTilesetsSecondary[][SEASON_WINTER + 1]
|
|||
const struct Tileset* GetPrimaryTileset(const struct MapLayout* mapLayout)
|
||||
{
|
||||
u32 i;
|
||||
enum Season season;
|
||||
|
||||
if (!OW_SEASONS)
|
||||
return mapLayout->primaryTileset;
|
||||
|
||||
season = GetSeason();
|
||||
for (i = 0; gSeasonTilesetsPrimary[i][SEASON_SPRING] != NULL; i++) {
|
||||
if (mapLayout->primaryTileset == gSeasonTilesetsPrimary[i][SEASON_SPRING])
|
||||
{
|
||||
if (gSeasonTilesetsPrimary[i][season] != NULL)
|
||||
return gSeasonTilesetsPrimary[i][season];
|
||||
if (gSeasonTilesetsPrimary[i][gLoadedSeason] != NULL)
|
||||
return gSeasonTilesetsPrimary[i][gLoadedSeason];
|
||||
else
|
||||
return mapLayout->primaryTileset;
|
||||
}
|
||||
|
|
@ -62,17 +59,15 @@ const struct Tileset* GetPrimaryTileset(const struct MapLayout* mapLayout)
|
|||
const struct Tileset* GetSecondaryTileset(const struct MapLayout* mapLayout)
|
||||
{
|
||||
u32 i;
|
||||
enum Season season;
|
||||
|
||||
if (!OW_SEASONS)
|
||||
return mapLayout->secondaryTileset;
|
||||
|
||||
season = GetSeason();
|
||||
for (i = 0; gSeasonTilesetsSecondary[i][SEASON_SPRING] != NULL; i++) {
|
||||
if (mapLayout->secondaryTileset == gSeasonTilesetsSecondary[i][SEASON_SPRING])
|
||||
{
|
||||
if (gSeasonTilesetsSecondary[i][season] != NULL)
|
||||
return gSeasonTilesetsSecondary[i][season];
|
||||
if (gSeasonTilesetsSecondary[i][gLoadedSeason] != NULL)
|
||||
return gSeasonTilesetsSecondary[i][gLoadedSeason];
|
||||
else
|
||||
return mapLayout->secondaryTileset;
|
||||
}
|
||||
|
|
|
|||