diff options
author | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-28 22:14:47 -0500 |
---|---|---|
committer | PikalaxALT <pikalaxalt@gmail.com> | 2017-12-28 22:14:47 -0500 |
commit | 9d2ee97519aa8ee3c5e5c0d11f49f5a77e4f870e (patch) | |
tree | 763431b9969206b11c5c42c7154c19ad5d21f421 /src/field | |
parent | 857b166086756ccc92e58981493513a7f00920ff (diff) | |
parent | 86a36767dba19e84297047addf1d1d776e2efdec (diff) |
Merge branch 'master' into slot_machine
Diffstat (limited to 'src/field')
-rw-r--r-- | src/field/bard_music.c | 174 | ||||
-rw-r--r-- | src/field/battle_tower.c | 20 | ||||
-rw-r--r-- | src/field/coord_event_weather.c | 87 | ||||
-rw-r--r-- | src/field/decoration.c | 270 | ||||
-rw-r--r-- | src/field/event_data.c | 2 | ||||
-rw-r--r-- | src/field/field_control_avatar.c | 4 | ||||
-rw-r--r-- | src/field/field_effect.c | 257 | ||||
-rw-r--r-- | src/field/field_effect_helpers.c | 84 | ||||
-rw-r--r-- | src/field/field_map_obj.c | 38 | ||||
-rw-r--r-- | src/field/field_map_obj_helpers.c | 115 | ||||
-rw-r--r-- | src/field/field_special_scene.c | 12 | ||||
-rw-r--r-- | src/field/field_specials.c | 121 | ||||
-rw-r--r-- | src/field/field_tasks.c | 20 | ||||
-rw-r--r-- | src/field/field_weather.c | 25 | ||||
-rw-r--r-- | src/field/field_weather_effects.c | 1 | ||||
-rw-r--r-- | src/field/fldeff_secret_base_pc.c | 2 | ||||
-rw-r--r-- | src/field/item_use.c | 7 | ||||
-rw-r--r-- | src/field/lottery_corner.c | 16 | ||||
-rw-r--r-- | src/field/map_name_popup.c | 2 | ||||
-rw-r--r-- | src/field/mauville_man.c | 3 | ||||
-rw-r--r-- | src/field/overworld.c | 28 | ||||
-rw-r--r-- | src/field/party_menu.c | 67 | ||||
-rw-r--r-- | src/field/player_pc.c | 22 | ||||
-rw-r--r-- | src/field/secret_base.c | 30 | ||||
-rw-r--r-- | src/field/trainer_see.c | 96 | ||||
-rw-r--r-- | src/field/tv.c | 18 |
26 files changed, 862 insertions, 659 deletions
diff --git a/src/field/bard_music.c b/src/field/bard_music.c index daf003233..5c48749cf 100644 --- a/src/field/bard_music.c +++ b/src/field/bard_music.c @@ -11,29 +11,185 @@ struct BardSound /*0x06*/ u16 var06; }; -extern const struct BardSound (*const gBardMusicTable[])[][6]; -extern s16 *gUnknown_08417068[]; -extern u32 gUnknown_084170F4[]; +static const s16 Unknown_8416F08[] = {-768, 6144}; +static const s16 Unknown_8416F0C[] = {2304, 6144}; +static const s16 Unknown_8416F10[] = {256, 6144}; +static const s16 Unknown_8416F14[] = {1024, 6144}; +static const s16 Unknown_8416F18[] = {2816, 6144}; +static const s16 Unknown_8416F1C[] = {-768, -256, 6144}; +static const s16 Unknown_8416F22[] = {-768, 512, 6144}; +static const s16 Unknown_8416F28[] = {512, 1024, 6144}; +static const s16 Unknown_8416F2E[] = {1536, 2048, 6144}; +static const s16 Unknown_8416F34[] = {2304, 2048, 6144}; +static const s16 Unknown_8416F3A[] = {-768, -256, -768, 6144}; +static const s16 Unknown_8416F42[] = {1024, -768, 1024, 6144}; +static const s16 Unknown_8416F4A[] = {2304, 2048, 1536, 6144}; +static const s16 Unknown_8416F52[] = {256, 512, 1024, 6144}; +static const s16 Unknown_8416F5A[] = {1536, 4096, 3328, 6144}; +static const s16 Unknown_8416F62[] = {1024, 2304, 1024, 2304, 6144}; +static const s16 Unknown_8416F6C[] = {2304, 1024, 3328, 1024, 6144}; +static const s16 Unknown_8416F76[] = {256, 512, 1024, 1536, 6144}; +static const s16 Unknown_8416F80[] = {2048, 1536, 1024, 512, 6144}; +static const s16 Unknown_8416F8A[] = {3840, 3328, 2816, 2560, 6144}; +static const s16 Unknown_8416F94[] = {-768, -256, 256, 512, 1024, 6144}; +static const s16 Unknown_8416FA0[] = {2304, 2048, 1536, 1024, 512, 6144}; +static const s16 Unknown_8416FAC[] = {256, 1024, 2304, 1024, 256, 6144}; +static const s16 Unknown_8416FB8[] = {2304, 1024, 2304, 1024, -768, 6144}; +static const s16 Unknown_8416FC4[] = {2816, 2048, 1024, 1024, 1536, 6144}; +static const s16 Unknown_8416FD0[] = {-768, -256, 256, 512, 1024, 1536, 6144}; +static const s16 Unknown_8416FDE[] = {2048, 1536, 1024, 512, 256, -256, 6144}; +static const s16 Unknown_8416FEC[] = {256, 512, 1024, 256, 512, 4096, 6144}; +static const s16 Unknown_8416FFA[] = {1024, -768, 2304, 1024, 2304, 1024, 6144}; +static const s16 Unknown_8417008[] = {2048, 2304, 2048, 2304, 2048, 2304, 6144}; +static const s16 Unknown_8417016[] = {512, 256, 512, 256, 512, 1024, 512, 6144}; +static const s16 Unknown_8417026[] = {256, 256, -256, -256, -768, 1024, -768, 6144}; +static const s16 Unknown_8417036[] = {2048, 2304, 2816, 3328, 3584, 3328, 2816, 6144}; +static const s16 Unknown_8417046[] = {2048, 1536, 1024, 512, 3328, 2816, 2304, 6144}; +static const s16 Unknown_8417056[] = {768, 1024, 1536, 2048, 1792, 2048, 1024, 6144}; + +static const s16 *const sWordPitches[] = { + Unknown_8416F08, + Unknown_8416F0C, + Unknown_8416F10, + Unknown_8416F14, + Unknown_8416F18, + Unknown_8416F1C, + Unknown_8416F22, + Unknown_8416F28, + Unknown_8416F2E, + Unknown_8416F34, + Unknown_8416F3A, + Unknown_8416F42, + Unknown_8416F4A, + Unknown_8416F52, + Unknown_8416F5A, + Unknown_8416F62, + Unknown_8416F6C, + Unknown_8416F76, + Unknown_8416F80, + Unknown_8416F8A, + Unknown_8416F94, + Unknown_8416FA0, + Unknown_8416FAC, + Unknown_8416FB8, + Unknown_8416FC4, + Unknown_8416FD0, + Unknown_8416FDE, + Unknown_8416FEC, + Unknown_8416FFA, + Unknown_8417008, + Unknown_8417016, + Unknown_8417026, + Unknown_8417036, + Unknown_8417046, + Unknown_8417056 +}; + +static const u32 sBardSoundLengthDeltas[] = { + 9, + 22, + 15, + 16, + 39, + 21, + 9, + 30, + 24, + 15, + 25, + 12, + 22, + 45, + 24, + 15, + 40, + 9, + 21, + 42, + 18, + 9, + 22, + 15, + 27, + 48, + 18, + 27, + 33, + 24, + 25, + 39, + 19, + 16, + 54, + 18, + 9, + 45, + 15, + 12, + 39, + 23, + 5, + 45, + 12, + 21, + 48, + 12, + 21, + 69, + 18, + 15 +}; + +#if ENGLISH +#include "../src/data/bard_music_en.h" +#elif GERMAN +#include "../src/data/bard_music_de.h" +#endif // ENGLISH/GERMAN + +static const struct BardSound (*const gBardMusicTable[])[6] = { + BardMusic_POKEMON, + BardMusic_TRAINER, + BardMusic_STATUS, + BardMusic_BATTLE, + BardMusic_GREETINGS, + BardMusic_PEOPLE, + BardMusic_VOICES, + BardMusic_SPEECH, + BardMusic_ENDINGS, + BardMusic_FEELINGS, + BardMusic_CONDITIONS, + BardMusic_ACTIONS, + BardMusic_LIFESTYLE, + BardMusic_HOBBIES, + BardMusic_TIME, + BardMusic_MISC, + BardMusic_ADJECTIVES, + BardMusic_EVENTS, + BardMusic_MOVE_1, + BardMusic_MOVE_2, + BardMusic_TRENDY_SAYING, + BardMusic_POKEMON_2 +}; static s16 CalcWordPitch(u32 arg0, u32 songPos) { - return gUnknown_08417068[arg0][songPos]; + return sWordPitches[arg0][songPos]; } #if ENGLISH const struct BardSound *GetWordSounds(u16 group, u16 word) { - const struct BardSound (*sounds)[][6] = gBardMusicTable[group]; + const struct BardSound (*sounds)[6] = gBardMusicTable[group]; - return (*sounds)[word]; + return sounds[word]; } #elif GERMAN const struct BardSound *GetWordSounds(u16 group, u16 word) { - const struct BardSound (*sounds)[][6] = gBardMusicTable[group]; + const struct BardSound (*sounds)[6] = gBardMusicTable[group]; u32 index = de_sub_80EB748(group, word); - return (*sounds)[index]; + return sounds[index]; } #endif @@ -48,7 +204,7 @@ s32 GetWordPhonemes(struct BardSong *song, const struct BardSound *src, u16 arg2 song->phonemes[i].sound = src[i].var00; if (src[i].var00 != 0xFF) { - s32 length = src[i].var01 + gUnknown_084170F4[src[i].var00]; + s32 length = src[i].var01 + sBardSoundLengthDeltas[src[i].var00]; song->phonemes[i].length = length; song->phonemes[i].volume = src[i].volume; diff --git a/src/field/battle_tower.c b/src/field/battle_tower.c index 6b6064c16..12337631f 100644 --- a/src/field/battle_tower.c +++ b/src/field/battle_tower.c @@ -294,24 +294,24 @@ void sub_8134548(void) ResetBattleTowerStreak(levelType); if (!var1) { - VarSet(VAR_0x4000, 5); + VarSet(VAR_TEMP_0, 5); } break; case 1: ResetBattleTowerStreak(levelType); - VarSet(VAR_0x4000, 1); + VarSet(VAR_TEMP_0, 1); var1++; break; case 4: - VarSet(VAR_0x4000, 2); + VarSet(VAR_TEMP_0, 2); var1++; break; case 5: - VarSet(VAR_0x4000, 3); + VarSet(VAR_TEMP_0, 3); var1++; break; case 2: - VarSet(VAR_0x4000, 4); + VarSet(VAR_TEMP_0, 4); var1++; break; case 3: @@ -323,7 +323,7 @@ void sub_8134548(void) if ((gSaveBlock2.battleTower.var_4AE[0] == 3 || gSaveBlock2.battleTower.var_4AE[0] == 6) && (gSaveBlock2.battleTower.var_4AE[1] == 3 || gSaveBlock2.battleTower.var_4AE[1] == 6)) { - VarSet(VAR_0x4000, 5); + VarSet(VAR_TEMP_0, 5); } ValidateBattleTowerRecordChecksums(); @@ -801,7 +801,7 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex) if (i != 30) { u8 trainerObjectGfxId = sMaleTrainerGfxIds[i]; - VarSet(0x4010, trainerObjectGfxId); + VarSet(VAR_OBJ_GFX_ID_0, trainerObjectGfxId); return; } @@ -809,11 +809,11 @@ void SetBattleTowerTrainerGfxId(u8 trainerIndex) if (i != 20) { u8 trainerObjectGfxId = sFemaleTrainerGfxIds[i]; - VarSet(0x4010, trainerObjectGfxId); + VarSet(VAR_OBJ_GFX_ID_0, trainerObjectGfxId); return; } - VarSet(0x4010, MAP_OBJ_GFX_BOY_1); + VarSet(VAR_OBJ_GFX_ID_0, MAP_OBJ_GFX_BOY_1); } void SetEReaderTrainerGfxId(void) @@ -1976,7 +1976,7 @@ void sub_8135BA0(void) gSaveBlock2.battleTower.var_4AE[battleTowerLevelType] = gSpecialVar_0x8004; } - VarSet(VAR_0x4000, 0); + VarSet(VAR_TEMP_0, 0); gSaveBlock2.battleTower.unk_554 = 1; TrySavingData(EREADER_SAVE); } diff --git a/src/field/coord_event_weather.c b/src/field/coord_event_weather.c index 9c5a1ca4d..db4e9c161 100644 --- a/src/field/coord_event_weather.c +++ b/src/field/coord_event_weather.c @@ -1,115 +1,116 @@ #include "global.h" +#include "constants/weather.h" #include "coord_event_weather.h" #include "field_weather.h" struct CoordEventWeather { - u8 weather; + u8 coordEventWeather; void (*func)(void); }; -static void CoordEventWeather_Indoor(void); +static void CoordEventWeather_Clouds(void); static void CoordEventWeather_Sunny(void); -static void CoordEventWeather_Rain(void); -static void CoordEventWeather_Snowflakes(void); +static void CoordEventWeather_LightRain(void); +static void CoordEventWeather_Snow(void); static void CoordEventWeather_Thunderstorm(void); static void CoordEventWeather_Fog(void); static void CoordEventWeather_DiagonalFog(void); -static void CoordEventWeather_Snow(void); +static void CoordEventWeather_Ash(void); static void CoordEventWeather_Sandstorm(void); -static void CoordEventWeather_Cloudy(void); +static void CoordEventWeather_Dark(void); static void CoordEventWeather_Drought(void); -static void CoordEventWeather_UnderwaterFog(void); -static void CoordEventWeather_UnderwaterBubbles(void); +static void CoordEventWeather_Route119Cycle(void); +static void CoordEventWeather_Route123Cycle(void); static const struct CoordEventWeather sCoordEventWeatherFuncs[] = { - { 0x1, CoordEventWeather_Indoor }, - { 0x2, CoordEventWeather_Sunny }, - { 0x3, CoordEventWeather_Rain }, - { 0x4, CoordEventWeather_Snowflakes }, - { 0x5, CoordEventWeather_Thunderstorm }, - { 0x6, CoordEventWeather_Fog }, - { 0x7, CoordEventWeather_DiagonalFog }, - { 0x8, CoordEventWeather_Snow }, - { 0x9, CoordEventWeather_Sandstorm }, - { 0xa, CoordEventWeather_Cloudy }, - { 0xb, CoordEventWeather_Drought }, - { 0x14, CoordEventWeather_UnderwaterFog }, - { 0x15, CoordEventWeather_UnderwaterBubbles }, + { COORD_EVENT_WEATHER_CLOUDS, CoordEventWeather_Clouds }, + { COORD_EVENT_WEATHER_SUNNY, CoordEventWeather_Sunny }, + { COORD_EVENT_WEATHER_RAIN_LIGHT, CoordEventWeather_LightRain }, + { COORD_EVENT_WEATHER_SNOW, CoordEventWeather_Snow }, + { COORD_EVENT_WEATHER_RAIN_MED, CoordEventWeather_Thunderstorm }, + { COORD_EVENT_WEATHER_FOG_1, CoordEventWeather_Fog }, + { COORD_EVENT_WEATHER_FOG_2, CoordEventWeather_DiagonalFog }, + { COORD_EVENT_WEATHER_ASH, CoordEventWeather_Ash }, + { COORD_EVENT_WEATHER_SANDSTORM, CoordEventWeather_Sandstorm }, + { COORD_EVENT_WEATHER_DARK, CoordEventWeather_Dark }, + { COORD_EVENT_WEATHER_DROUGHT, CoordEventWeather_Drought }, + { COORD_EVENT_WEATHER_ROUTE119_CYCLE, CoordEventWeather_Route119Cycle }, + { COORD_EVENT_WEATHER_ROUTE123_CYCLE, CoordEventWeather_Route123Cycle }, }; -static void CoordEventWeather_Indoor(void) +static void CoordEventWeather_Clouds(void) { - SetWeather(1); + SetWeather(WEATHER_CLOUDS); } static void CoordEventWeather_Sunny(void) { - SetWeather(2); + SetWeather(WEATHER_SUNNY); } -static void CoordEventWeather_Rain(void) +static void CoordEventWeather_LightRain(void) { - SetWeather(3); + SetWeather(WEATHER_RAIN_LIGHT); } -static void CoordEventWeather_Snowflakes(void) +static void CoordEventWeather_Snow(void) { - SetWeather(4); + SetWeather(WEATHER_SNOW); } static void CoordEventWeather_Thunderstorm(void) { - SetWeather(5); + SetWeather(WEATHER_RAIN_MED); } static void CoordEventWeather_Fog(void) { - SetWeather(6); + SetWeather(WEATHER_FOG_1); } static void CoordEventWeather_DiagonalFog(void) { - SetWeather(9); + SetWeather(WEATHER_FOG_2); } -static void CoordEventWeather_Snow(void) +static void CoordEventWeather_Ash(void) { - SetWeather(7); + SetWeather(WEATHER_ASH); } static void CoordEventWeather_Sandstorm(void) { - SetWeather(8); + SetWeather(WEATHER_SANDSTORM); } -static void CoordEventWeather_Cloudy(void) +static void CoordEventWeather_Dark(void) { - SetWeather(11); + SetWeather(WEATHER_DARK); } static void CoordEventWeather_Drought(void) { - SetWeather(12); + SetWeather(WEATHER_DROUGHT); } -static void CoordEventWeather_UnderwaterFog(void) +static void CoordEventWeather_Route119Cycle(void) { - SetWeather(20); + SetWeather(WEATHER_ROUTE119_CYCLE); } -static void CoordEventWeather_UnderwaterBubbles(void) +static void CoordEventWeather_Route123Cycle(void) { - SetWeather(21); + SetWeather(WEATHER_ROUTE123_CYCLE); } -void DoCoordEventWeather(u8 n) +void DoCoordEventWeather(u8 coordEventWeather) { u8 i; for (i = 0; i < ARRAY_COUNT(sCoordEventWeatherFuncs); i++) { - if (sCoordEventWeatherFuncs[i].weather == n) + if (sCoordEventWeatherFuncs[i].coordEventWeather == coordEventWeather) { sCoordEventWeatherFuncs[i].func(); return; diff --git a/src/field/decoration.c b/src/field/decoration.c index 8b774afc3..87a9d8028 100644 --- a/src/field/decoration.c +++ b/src/field/decoration.c @@ -1426,139 +1426,6 @@ const struct YesNoFuncTable gUnknown_083EC634[] = { {sub_8109D04, sub_80FF058} }; -const u16 gUnknown_083EC654[] = {0x6318, 0x739C, 0x7FFF}; -const u8 gUnknown_083EC65A[] = _("{PALETTE 13}{STR_VAR_1}"); - -const u8 Unknown_3EC660[] = {0, 1, 2, 3}; -const u8 Unknown_3EC664[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13}; -const u8 Unknown_3EC670[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; -const u8 Unknown_3EC680[] = {0, 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21}; -const u8 Unknown_3EC68C[] = {0, 1, 2, 3, 4, 5, 6, 7}; -const u8 Unknown_3EC694[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; -const u8 Unknown_3EC6B4[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45}; -const u8 Unknown_3EC6D8[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29}; - -const u8 Unknown_3EC6F0[] = {0, 0, 0, 0}; -const u8 Unknown_3EC6F4[] = {0, 0, 1, 1, 0, 0, 1, 1}; -const u8 Unknown_3EC6FC[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2}; -const u8 Unknown_3EC708[] = {0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 4, 4, 5, 5, 6, 6, 7, 7}; -const u8 Unknown_3EC728[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3}; -const u8 Unknown_3EC738[] = {0, 0, 0, 0, 1, 1, 1, 1}; -const u8 Unknown_3EC740[] = {0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2}; -const u8 Unknown_3EC74C[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3, 4, 4, 5, 5, 4, 4, 5, 5, 6, 6, 7, 7, 6, 6, 7, 7}; -const u8 Unknown_3EC76C[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 6, 6, 7, 7, 8, 8}; -const u8 Unknown_3EC790[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5}; - -const u8 Unknown_3EC7A8[] = {4, 5, 6, 7}; -const u8 Unknown_3EC7AC[] = {4, 5, 4, 5, 6, 7, 6, 7}; -const u8 Unknown_3EC7B4[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7}; -const u8 Unknown_3EC7C0[] = {4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7}; -const u8 Unknown_3EC7E0[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7}; -const u8 Unknown_3EC7F0[] = {4, 5, 6, 7, 4, 5, 6, 7}; -const u8 Unknown_3EC7F8[] = {4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7}; -const u8 Unknown_3EC804[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7}; -const u8 Unknown_3EC824[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7}; -const u8 Unknown_3EC848[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7}; - -const struct UnkStruct_803EC860 gUnknown_083EC860[] = { - {Unknown_3EC660, Unknown_3EC6F0, Unknown_3EC7A8, 0x4}, - {Unknown_3EC68C, Unknown_3EC6F4, Unknown_3EC7AC, 0x8}, - {Unknown_3EC664, Unknown_3EC6FC, Unknown_3EC7B4, 0xc}, - {Unknown_3EC694, Unknown_3EC708, Unknown_3EC7C0, 0x20}, - {Unknown_3EC670, Unknown_3EC728, Unknown_3EC7E0, 0x10}, - {Unknown_3EC68C, Unknown_3EC738, Unknown_3EC7F0, 0x8}, - {Unknown_3EC680, Unknown_3EC740, Unknown_3EC7F8, 0xc}, - {Unknown_3EC694, Unknown_3EC74C, Unknown_3EC804, 0x20}, - {Unknown_3EC6B4, Unknown_3EC76C, Unknown_3EC824, 0x24}, - {Unknown_3EC6D8, Unknown_3EC790, Unknown_3EC848, 0x18} -}; - -const struct UnkStruct_083EC900 gUnknown_083EC900[] = { - {0, 1, 0x78, 0x4e}, - {1, 2, 0x80, 0x4e}, - {1, 3, 0x90, 0x56}, - {1, 3, 0x90, 0x46}, - {0, 2, 0x80, 0x46}, - {2, 2, 0x78, 0x46}, - {2, 3, 0x80, 0x56}, - {2, 3, 0x80, 0x36}, - {0, 3, 0x90, 0x46}, - {1, 3, 0x90, 0x46} -}; - -const union AnimCmd gSpriteAnim_83EC928[] = { - ANIMCMD_FRAME(.imageValue = 0, .duration = 0), - ANIMCMD_END -}; - -const union AnimCmd *const gSpriteAnimTable_83EC930[] = { - gSpriteAnim_83EC928 -}; - -const struct SpriteFrameImage gSpriteImageTable_83EC934[] = { - {.data = gUnknown_02038900.image, .size = sizeof(gUnknown_02038900.image)} -}; - -const struct SpriteTemplate gSpriteTemplate_83EC93C = { - .tileTag = 0xffff, - .paletteTag = 3000, - .oam = &gUnknown_020391AC, - .anims = gSpriteAnimTable_83EC930, - .images = gSpriteImageTable_83EC934, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_81009A8 -}; - -const struct SpritePalette gUnknown_083EC954 = {.data = (u16 *)&gUnknown_02038900.palette, .tag = 3000}; - -const struct YesNoFuncTable gUnknown_083EC95C = {.yesFunc = sub_81000C4, .noFunc = sub_810065C}; -const struct YesNoFuncTable gUnknown_083EC964 = {.yesFunc = sub_810026C, .noFunc = sub_810065C}; -const struct YesNoFuncTable gUnknown_083EC96C[] = { - {.yesFunc = sub_80FFAB0, .noFunc = sub_80FFB08}, - {.yesFunc = sub_8100F88, .noFunc = sub_8100FB4} -}; - -const u8 gUnknown_083EC97C[] = {4, 4, 4, 4, 0, 3, 3, 0}; -const u8 gUnknown_083EC984[] = {4, 4, 4, 4, 0, 4, 3, 0}; - -const u16 gUnknown_083EC98C[] = INCBIN_U16("graphics/unknown/83EC98C.gbapal"); -const u16 Unknown_3EC9AC[] = INCBIN_U16("graphics/unknown/83EC9AC.gbapal"); -const struct YesNoFuncTable gUnknown_083EC9CC = {.yesFunc = sub_810153C, .noFunc = sub_8100EEC}; -const struct YesNoFuncTable gUnknown_083EC9D4 = {.yesFunc = sub_8101590, .noFunc = sub_8100EEC}; -const u32 gSpriteImage_83EC9DC[] = INCBIN_U32("graphics/unknown_sprites/83EC9DC.4bpp"); -const struct SpritePalette gUnknown_083ECA5C = {.data = gUnknown_083EC98C, .tag = 8}; -const struct SpritePalette gUnknown_083ECA64 = {.data = Unknown_3EC9AC, .tag = 8}; -const struct OamData gOamData_83ECA6C = { - .size = 1, .priority = 1 -}; - -const union AnimCmd gSpriteAnim_83ECA74[] = { - ANIMCMD_FRAME(.imageValue = 0, .duration = 0), - ANIMCMD_END -}; - -const union AnimCmd *const gSpriteAnimTable_83ECA7C[] = { - gSpriteAnim_83ECA74 -}; - -const struct SpriteFrameImage gSpriteImageTable_83ECA80[] = { - obj_frame_tiles(gSpriteImage_83EC9DC) -}; - -const struct SpriteTemplate gSpriteTemplate_83ECA88 = { - .tileTag = 0xffff, - .paletteTag = 8, - .oam = &gOamData_83ECA6C, - .anims = gSpriteAnimTable_83ECA7C, - .images = gSpriteImageTable_83ECA80, - .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8101698 -}; - -const struct YesNoFuncTable gUnknown_083ECAA0 = {.yesFunc = sub_8101848, .noFunc = sub_80FED3C}; - -u8 *const unref_label_083ECAA8[] = {gSharedMem}; - // text extern u8 gUnknown_0815F399[]; @@ -1605,8 +1472,9 @@ void DoPlayerPCDecoration(u8 taskId) void sub_80FE2B4(void) { - u16 palettes[3]; - memcpy(palettes, gUnknown_083EC654, sizeof gUnknown_083EC654); + u16 palettes[3] = {RGB(24, 24, 24), + RGB(28, 28, 28), + RGB(31, 31, 31)}; LoadPalette(&palettes[2], 0xdf, 2); LoadPalette(&palettes[1], 0xd1, 2); LoadPalette(&palettes[0], 0xd8, 2); @@ -1908,6 +1776,8 @@ void sub_80FE948(u8 taskId) } } +const u8 gUnknown_083EC65A[] = _("{PALETTE 13}{STR_VAR_1}"); + void sub_80FEABC(u8 taskId, u8 dummy1) { u16 i; @@ -3568,6 +3438,136 @@ u16 sub_810089C(u16 a0) return ((u16 *)gMapHeader.mapData->secondaryTileset->metatiles)[a0] & 0xfff; } +const u8 Unknown_3EC660[] = {0, 1, 2, 3}; +const u8 Unknown_3EC664[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13}; +const u8 Unknown_3EC670[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; +const u8 Unknown_3EC680[] = {0, 1, 4, 5, 8, 9, 12, 13, 16, 17, 20, 21}; +const u8 Unknown_3EC68C[] = {0, 1, 2, 3, 4, 5, 6, 7}; +const u8 Unknown_3EC694[] = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31}; +const u8 Unknown_3EC6B4[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29, 32, 33, 34, 35, 36, 37, 40, 41, 42, 43, 44, 45}; +const u8 Unknown_3EC6D8[] = {0, 1, 2, 3, 4, 5, 8, 9, 10, 11, 12, 13, 16, 17, 18, 19, 20, 21, 24, 25, 26, 27, 28, 29}; + +const u8 Unknown_3EC6F0[] = {0, 0, 0, 0}; +const u8 Unknown_3EC6F4[] = {0, 0, 1, 1, 0, 0, 1, 1}; +const u8 Unknown_3EC6FC[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2}; +const u8 Unknown_3EC708[] = {0, 0, 1, 1, 2, 2, 3, 3, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 4, 4, 5, 5, 6, 6, 7, 7}; +const u8 Unknown_3EC728[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3}; +const u8 Unknown_3EC738[] = {0, 0, 0, 0, 1, 1, 1, 1}; +const u8 Unknown_3EC740[] = {0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2}; +const u8 Unknown_3EC74C[] = {0, 0, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3, 2, 2, 3, 3, 4, 4, 5, 5, 4, 4, 5, 5, 6, 6, 7, 7, 6, 6, 7, 7}; +const u8 Unknown_3EC76C[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 6, 6, 7, 7, 8, 8}; +const u8 Unknown_3EC790[] = {0, 0, 1, 1, 2, 2, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 3, 3, 4, 4, 5, 5}; + +const u8 Unknown_3EC7A8[] = {4, 5, 6, 7}; +const u8 Unknown_3EC7AC[] = {4, 5, 4, 5, 6, 7, 6, 7}; +const u8 Unknown_3EC7B4[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7}; +const u8 Unknown_3EC7C0[] = {4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 6, 7}; +const u8 Unknown_3EC7E0[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7}; +const u8 Unknown_3EC7F0[] = {4, 5, 6, 7, 4, 5, 6, 7}; +const u8 Unknown_3EC7F8[] = {4, 5, 6, 7, 4, 5, 6, 7, 4, 5, 6, 7}; +const u8 Unknown_3EC804[] = {4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7, 4, 5, 4, 5, 6, 7, 6, 7}; +const u8 Unknown_3EC824[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7}; +const u8 Unknown_3EC848[] = {4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7, 4, 5, 4, 5, 4, 5, 6, 7, 6, 7, 6, 7}; + +const struct UnkStruct_803EC860 gUnknown_083EC860[] = { + {Unknown_3EC660, Unknown_3EC6F0, Unknown_3EC7A8, 0x4}, + {Unknown_3EC68C, Unknown_3EC6F4, Unknown_3EC7AC, 0x8}, + {Unknown_3EC664, Unknown_3EC6FC, Unknown_3EC7B4, 0xc}, + {Unknown_3EC694, Unknown_3EC708, Unknown_3EC7C0, 0x20}, + {Unknown_3EC670, Unknown_3EC728, Unknown_3EC7E0, 0x10}, + {Unknown_3EC68C, Unknown_3EC738, Unknown_3EC7F0, 0x8}, + {Unknown_3EC680, Unknown_3EC740, Unknown_3EC7F8, 0xc}, + {Unknown_3EC694, Unknown_3EC74C, Unknown_3EC804, 0x20}, + {Unknown_3EC6B4, Unknown_3EC76C, Unknown_3EC824, 0x24}, + {Unknown_3EC6D8, Unknown_3EC790, Unknown_3EC848, 0x18} +}; + +const struct UnkStruct_083EC900 gUnknown_083EC900[] = { + {0, 1, 0x78, 0x4e}, + {1, 2, 0x80, 0x4e}, + {1, 3, 0x90, 0x56}, + {1, 3, 0x90, 0x46}, + {0, 2, 0x80, 0x46}, + {2, 2, 0x78, 0x46}, + {2, 3, 0x80, 0x56}, + {2, 3, 0x80, 0x36}, + {0, 3, 0x90, 0x46}, + {1, 3, 0x90, 0x46} +}; + +const union AnimCmd gSpriteAnim_83EC928[] = { + ANIMCMD_FRAME(.imageValue = 0, .duration = 0), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_83EC930[] = { + gSpriteAnim_83EC928 +}; + +const struct SpriteFrameImage gSpriteImageTable_83EC934[] = { + {.data = gUnknown_02038900.image, .size = sizeof(gUnknown_02038900.image)} +}; + +const struct SpriteTemplate gSpriteTemplate_83EC93C = { + .tileTag = 0xffff, + .paletteTag = 3000, + .oam = &gUnknown_020391AC, + .anims = gSpriteAnimTable_83EC930, + .images = gSpriteImageTable_83EC934, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_81009A8 +}; + +const struct SpritePalette gUnknown_083EC954 = {.data = (u16 *)&gUnknown_02038900.palette, .tag = 3000}; + +const struct YesNoFuncTable gUnknown_083EC95C = {.yesFunc = sub_81000C4, .noFunc = sub_810065C}; +const struct YesNoFuncTable gUnknown_083EC964 = {.yesFunc = sub_810026C, .noFunc = sub_810065C}; +const struct YesNoFuncTable gUnknown_083EC96C[] = { + {.yesFunc = sub_80FFAB0, .noFunc = sub_80FFB08}, + {.yesFunc = sub_8100F88, .noFunc = sub_8100FB4} +}; + +const u8 gUnknown_083EC97C[] = {4, 4, 4, 4, 0, 3, 3, 0}; +const u8 gUnknown_083EC984[] = {4, 4, 4, 4, 0, 4, 3, 0}; + +const u16 gUnknown_083EC98C[] = INCBIN_U16("graphics/unknown/83EC98C.gbapal"); +const u16 Unknown_3EC9AC[] = INCBIN_U16("graphics/unknown/83EC9AC.gbapal"); +const struct YesNoFuncTable gUnknown_083EC9CC = {.yesFunc = sub_810153C, .noFunc = sub_8100EEC}; +const struct YesNoFuncTable gUnknown_083EC9D4 = {.yesFunc = sub_8101590, .noFunc = sub_8100EEC}; +const u32 gSpriteImage_83EC9DC[] = INCBIN_U32("graphics/unknown_sprites/83EC9DC.4bpp"); +const struct SpritePalette gUnknown_083ECA5C = {.data = gUnknown_083EC98C, .tag = 8}; +const struct SpritePalette gUnknown_083ECA64 = {.data = Unknown_3EC9AC, .tag = 8}; +const struct OamData gOamData_83ECA6C = { + .size = 1, .priority = 1 +}; + +const union AnimCmd gSpriteAnim_83ECA74[] = { + ANIMCMD_FRAME(.imageValue = 0, .duration = 0), + ANIMCMD_END +}; + +const union AnimCmd *const gSpriteAnimTable_83ECA7C[] = { + gSpriteAnim_83ECA74 +}; + +const struct SpriteFrameImage gSpriteImageTable_83ECA80[] = { + obj_frame_tiles(gSpriteImage_83EC9DC) +}; + +const struct SpriteTemplate gSpriteTemplate_83ECA88 = { + .tileTag = 0xffff, + .paletteTag = 8, + .oam = &gOamData_83ECA6C, + .anims = gSpriteAnimTable_83ECA7C, + .images = gSpriteImageTable_83ECA80, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_8101698 +}; + +const struct YesNoFuncTable gUnknown_083ECAA0 = {.yesFunc = sub_8101848, .noFunc = sub_80FED3C}; + +u8 *const unref_label_083ECAA8[] = {gSharedMem}; + void sub_81008BC(struct UnkStruct_02038900 *unk_02038900) { u8 i; diff --git a/src/field/event_data.c b/src/field/event_data.c index 587da8138..86045df15 100644 --- a/src/field/event_data.c +++ b/src/field/event_data.c @@ -138,7 +138,7 @@ bool8 VarSet(u16 id, u16 value) u8 VarGetFieldObjectGraphicsId(u8 id) { - return VarGet(0x4010 + id); + return VarGet(VAR_OBJ_GFX_ID_0 + id); } u8 *GetFlagPointer(u16 id) diff --git a/src/field/field_control_avatar.c b/src/field/field_control_avatar.c index cd7d3a2e2..947dc3e56 100644 --- a/src/field/field_control_avatar.c +++ b/src/field/field_control_avatar.c @@ -355,7 +355,7 @@ static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *position, u8 unuse case 5: case 6: case 7: - gSpecialVar_0x8004 = ((u32)bgEvent->bgUnion.script >> 16) + 0x258; + gSpecialVar_0x8004 = ((u32)bgEvent->bgUnion.script >> 16) + FLAG_HIDDEN_ITEMS_START; gSpecialVar_0x8005 = (u32)bgEvent->bgUnion.script; if (FlagGet(gSpecialVar_0x8004) == TRUE) return NULL; @@ -363,7 +363,7 @@ static u8 *TryGetInvisibleMapObjectScript(struct MapPosition *position, u8 unuse case 8: if (c == 2) { - gSpecialVar_0x8004 = (u32)bgEvent->bgUnion.script; + gSpecialVar_0x8004 = bgEvent->bgUnion.secretBaseId; if (sub_80BC050()) return gUnknown_081A2C51; } diff --git a/src/field/field_effect.c b/src/field/field_effect.c index 4337300da..1e2aaa4ed 100644 --- a/src/field/field_effect.c +++ b/src/field/field_effect.c @@ -310,114 +310,6 @@ void (*const gUnknown_0839F378[])(struct Task *) = { sub_8087914 }; -const u8 gUnknown_0839F380[] = {1, 3, 4, 2, 1}; - -void (*const gUnknown_0839F388[])(struct Task *) = { - sub_8087AA4, - sub_8087AC8 -}; - -void (*const gUnknown_0839F390[])(struct Task *) = { - sub_8087BEC, - sub_8087C14, - sub_8087CA4, - sub_8087D78 -}; - -void (*const gUnknown_0839F3A0[])(struct Task *) = { - sub_8087E4C, - sub_8087ED8, - sub_8087FDC -}; - -void (*const gUnknown_0839F3AC[])(struct Task *) = { - sub_8088150, - sub_80881C0, - sub_8088228, - sub_80882B4, - sub_80882E4, - sub_8088338, - sub_8088380 -}; - -void (*const gUnknown_0839F3C8[])(struct Task *) = { - sub_80884AC, - sub_80884E8, - sub_8088554, - sub_80885A8, - sub_80885D8, - sub_808860C, - sub_808862C -}; - -void (*const gUnknown_0839F3E4[])(struct Task *) = { - sub_8088984, - sub_80889E4, - sub_8088A30, - sub_8088A78, - sub_8088AF4 -}; - -void (*const gUnknown_0839F3F8[])(struct Task *) = { - sub_8088CA0, - sub_8088CF8, - sub_8088D3C, - sub_8088D94, - sub_8088DD8, - sub_8088E2C, - sub_8088EB4, - sub_8088F10, - sub_8088F30 -}; - -const union AffineAnimCmd SpriteAffineAnim_839F41C[] = { - AFFINEANIMCMD_FRAME(8, 8, -30, 0), - AFFINEANIMCMD_FRAME(28, 28, 0, 30), - AFFINEANIMCMD_END -}; - -const union AffineAnimCmd SpriteAffineAnim_839F434[] = { - AFFINEANIMCMD_FRAME(256, 256, 64, 0), - AFFINEANIMCMD_FRAME(-10, -10, 0, 22), - AFFINEANIMCMD_END -}; - -const union AffineAnimCmd *const gSpriteAffineAnimTable_0839F44C[] = { - SpriteAffineAnim_839F41C, - SpriteAffineAnim_839F434 -}; - -void (*const gUnknown_0839F454[])(struct Task *) = { - sub_80892A0, - sub_8089354, - sub_80893C0, - sub_8089414, - sub_808948C, - sub_80894C4, - fishE -}; - -const s16 gUnknown_0839F470[] = { - -2, - -4, - -5, - -6, - -7, - -8, - -8, - -8, - -7, - -7, - -6, - -5, - -3, - -2, - 0, - 2, - 4, - 8 -}; - static u8 sActiveList[32]; extern u8 *gFieldEffectScriptPointers[]; @@ -2100,8 +1992,7 @@ void sub_80878F4(struct Task *task) void sub_8087914(struct Task *task) { struct MapObject *mapObject; - u8 unknown_0839F380[5]; - memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380); + u8 unknown_0839F380[5] = {1, 3, 4, 2, 1}; if (task->data[14] != 0 && (--task->data[14]) == 0) { sub_8053FF8(); @@ -2130,6 +2021,11 @@ void sub_8087914(struct Task *task) } } +void (*const gUnknown_0839F388[])(struct Task *) = { + sub_8087AA4, + sub_8087AC8 +}; + void sub_8087A74(u8); void mapldr_080859D4(void) @@ -2159,10 +2055,8 @@ void sub_8087AA4(struct Task *task) void sub_8087AC8(struct Task *task) { - struct MapObject *mapObject; - u8 unknown_0839F380[5]; - memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380); - mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; + u8 unknown_0839F380[5] = {1, 3, 4, 2, 1}; + struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; if (task->data[1] == 0 || (--task->data[1]) == 0) { if (FieldObjectIsSpecialAnimOrDirectionSequenceAnimActive(mapObject) && !FieldObjectClearAnimIfSpecialAnimFinished(mapObject)) @@ -2195,6 +2089,13 @@ void sub_8087BA8(void) CreateTask(sub_8087BBC, 0); } +void (*const gUnknown_0839F390[])(struct Task *) = { + sub_8087BEC, + sub_8087C14, + sub_8087CA4, + sub_8087D78 +}; + void sub_8087BBC(u8 taskId) { gUnknown_0839F390[gTasks[taskId].data[0]](&gTasks[taskId]); @@ -2211,10 +2112,8 @@ void sub_8087BEC(struct Task *task) void sub_8087C14(struct Task *task) { - struct MapObject *mapObject; - u8 unknown_0839F380[5]; - memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380); - mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; + u8 unknown_0839F380[5] = {1, 3, 4, 2, 1}; + struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; if (task->data[1] == 0 || (--task->data[1]) == 0) { FieldObjectTurn(mapObject, unknown_0839F380[mapObject->mapobj_unk_18]); @@ -2233,12 +2132,9 @@ void sub_8087C14(struct Task *task) void sub_8087CA4(struct Task *task) { - struct MapObject *mapObject; - struct Sprite *sprite; - u8 unknown_0839F380[5]; - memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380); - mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; - sprite = &gSprites[gPlayerAvatar.spriteId]; + u8 unknown_0839F380[5] = {1, 3, 4, 2, 1}; + struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; + struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId]; if ((--task->data[1]) <= 0) { task->data[1] = 4; @@ -2288,6 +2184,12 @@ void mapldr_08085D88(void) CreateTask(sub_8087E1C, 0); } +void (*const gUnknown_0839F3A0[])(struct Task *) = { + sub_8087E4C, + sub_8087ED8, + sub_8087FDC +}; + void sub_8087E1C(u8 taskId) { gUnknown_0839F3A0[gTasks[taskId].data[0]](&gTasks[taskId]); @@ -2314,12 +2216,9 @@ void sub_8087E4C(struct Task *task) void sub_8087ED8(struct Task *task) { - u8 unknown_0839F380[5]; - struct MapObject *mapObject; - struct Sprite *sprite; - memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380); - mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; - sprite = &gSprites[gPlayerAvatar.spriteId]; + u8 unknown_0839F380[5] = {1, 3, 4, 2, 1}; + struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; + struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId]; if ((sprite->pos2.y += task->data[1]) >= -8) { if (task->data[13] == 0) @@ -2356,10 +2255,8 @@ void sub_8087ED8(struct Task *task) void sub_8087FDC(struct Task *task) { - u8 unknown_0839F380[5]; - struct MapObject *mapObject; - memcpy(unknown_0839F380, gUnknown_0839F380, sizeof gUnknown_0839F380); - mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; + u8 unknown_0839F380[5] = {1, 3, 4, 2, 1}; + struct MapObject *mapObject = &gMapObjects[gPlayerAvatar.mapObjectId]; if ((--task->data[1]) == 0) { FieldObjectTurn(mapObject, unknown_0839F380[mapObject->mapobj_unk_18]); @@ -2409,6 +2306,16 @@ bool8 FldEff_FieldMoveShowMonInit(void) return FALSE; } +void (*const gUnknown_0839F3AC[])(struct Task *) = { + sub_8088150, + sub_80881C0, + sub_8088228, + sub_80882B4, + sub_80882E4, + sub_8088338, + sub_8088380 +}; + void sub_8088120(u8 taskId) { gUnknown_0839F3AC[gTasks[taskId].data[0]](&gTasks[taskId]); @@ -2565,6 +2472,16 @@ bool8 sub_8088708(struct Task *); void sub_80886F8(struct Task *); bool8 sub_80887C0(struct Task *); +void (*const gUnknown_0839F3C8[])(struct Task *) = { + sub_80884AC, + sub_80884E8, + sub_8088554, + sub_80885A8, + sub_80885D8, + sub_808860C, + sub_808862C +}; + void sub_808847C(u8 taskId) { gUnknown_0839F3C8[gTasks[taskId].data[0]](&gTasks[taskId]); @@ -2884,6 +2801,14 @@ u8 FldEff_UseSurf(void) return FALSE; } +void (*const gUnknown_0839F3E4[])(struct Task *) = { + sub_8088984, + sub_80889E4, + sub_8088A30, + sub_8088A78, + sub_8088AF4 +}; + void sub_8088954(u8 taskId) { gUnknown_0839F3E4[gTasks[taskId].data[0]](&gTasks[taskId]); @@ -3012,6 +2937,18 @@ u8 FldEff_UseFly(void) return 0; } +void (*const gUnknown_0839F3F8[])(struct Task *) = { + sub_8088CA0, + sub_8088CF8, + sub_8088D3C, + sub_8088D94, + sub_8088DD8, + sub_8088E2C, + sub_8088EB4, + sub_8088F10, + sub_8088F30 +}; + void sub_8088C70(u8 taskId) { gUnknown_0839F3F8[gTasks[taskId].data[0]](&gTasks[taskId]); @@ -3170,6 +3107,23 @@ void sub_8088FFC(u8 a0, u8 a1) gSprites[a0].data[6] = a1; } +const union AffineAnimCmd SpriteAffineAnim_839F41C[] = { + AFFINEANIMCMD_FRAME(8, 8, -30, 0), + AFFINEANIMCMD_FRAME(28, 28, 0, 30), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd SpriteAffineAnim_839F434[] = { + AFFINEANIMCMD_FRAME(256, 256, 64, 0), + AFFINEANIMCMD_FRAME(-10, -10, 0, 22), + AFFINEANIMCMD_END +}; + +const union AffineAnimCmd *const gSpriteAffineAnimTable_0839F44C[] = { + SpriteAffineAnim_839F41C, + SpriteAffineAnim_839F434 +}; + void sub_8089018(struct Sprite *sprite) { if (sprite->data[7] == 0) @@ -3282,6 +3236,16 @@ u8 FldEff_FlyIn(void) return 0; } +void (*const gUnknown_0839F454[])(struct Task *) = { + sub_80892A0, + sub_8089354, + sub_80893C0, + sub_8089414, + sub_808948C, + sub_80894C4, + fishE +}; + void sub_8089270(u8 taskId) { gUnknown_0839F454[gTasks[taskId].data[0]](&gTasks[taskId]); @@ -3333,10 +3297,27 @@ void sub_8089354(struct Task *task) void sub_80893C0(struct Task *task) { - s16 unknown_0839F470[18]; - struct Sprite *sprite; - memcpy(unknown_0839F470, gUnknown_0839F470, sizeof gUnknown_0839F470); - sprite = &gSprites[gPlayerAvatar.spriteId]; + s16 unknown_0839F470[18] = { + -2, + -4, + -5, + -6, + -7, + -8, + -8, + -8, + -7, + -7, + -6, + -5, + -3, + -2, + 0, + 2, + 4, + 8 + }; + struct Sprite *sprite = &gSprites[gPlayerAvatar.spriteId]; sprite->pos2.y = unknown_0839F470[task->data[2]]; if ((++task->data[2]) >= 18) { diff --git a/src/field/field_effect_helpers.c b/src/field/field_effect_helpers.c index 1d831d2e9..165829a55 100644 --- a/src/field/field_effect_helpers.c +++ b/src/field/field_effect_helpers.c @@ -31,50 +31,6 @@ static u32 ShowDisguiseFieldEffect(u8, u8, u8); const u8 UnusedEggString_8401E28[] = _("タマゴ"); -const u16 gUnknown_08401E2C[] = { - 0x0c, - 0x1c, - 0x2c -}; - -const u8 gUnknown_08401E32[] = { - 0, - 1, - 2, - 3 -}; - -const u16 gUnknown_08401E36[] = { - 4, - 4, - 4, - 16 -}; - -void (*const gUnknown_08401E40[])(struct Sprite *) = { - sub_81275A0, - sub_81275C4 -}; - -void (*const gUnknown_08401E48[])(struct Sprite *) = { - sub_8127DA0, - sub_8127DD0, - sub_8127E30 -}; - -const u8 gUnknown_08401E54[] = { - 0, - 0, - 1, - 2, - 3 -}; - -const u16 gUnknown_08401E5A[] = { - 3, - 7 -}; - void SetUpReflection(struct MapObject *mapObject, struct Sprite *sprite, bool8 flag) { struct Sprite *newSprite; @@ -107,9 +63,7 @@ static s16 sub_81268D0(struct MapObject *mapObject) static void npc_pal_op(struct MapObject *mapObject, struct Sprite *sprite) { u8 whichElement; - u16 unk_8041e2c[ARRAY_COUNT(gUnknown_08401E2C)]; - - memcpy(unk_8041e2c, gUnknown_08401E2C, sizeof gUnknown_08401E2C); + u16 unk_8041e2c[] = {0x0c, 0x1c, 0x2c}; sprite->data[2] = 0; if (!GetFieldObjectGraphicsInfo(mapObject->graphicsId)->disableReflectionPaletteLoad && ((whichElement = sub_8057450(mapObject->mapobj_unk_1F)) || (whichElement = sub_8057450(mapObject->mapobj_unk_1E)))) { @@ -237,6 +191,20 @@ void sub_8126BC4(u8 spriteId, u8 animNum, s16 x, s16 y) } } +const u8 gUnknown_08401E32[] = { + 0, + 1, + 2, + 3 +}; + +const u16 gUnknown_08401E36[] = { + 4, + 4, + 4, + 16 +}; + u32 FldEff_Shadow(void) { u8 mapObjectId; @@ -589,6 +557,11 @@ u32 FldEff_BikeTireTracks(void) return spriteId; } +void (*const gUnknown_08401E40[])(struct Sprite *) = { + sub_81275A0, + sub_81275C4 +}; + void sub_8127584(struct Sprite *sprite) { gUnknown_08401E40[sprite->data[0]](sprite); @@ -917,6 +890,12 @@ u32 FldEff_Ash(void) return 0; } +void (*const gUnknown_08401E48[])(struct Sprite *) = { + sub_8127DA0, + sub_8127DD0, + sub_8127E30 +}; + void sub_8127D84(struct Sprite *sprite) { gUnknown_08401E48[sprite->data[0]](sprite); @@ -1018,9 +997,7 @@ void sub_8127F7C(struct Sprite *sprite) static void sub_8127FD4(struct MapObject *mapObject, struct Sprite *sprite) { - u8 unk_8041E54[ARRAY_COUNT(gUnknown_08401E54)]; - - memcpy(unk_8041E54, gUnknown_08401E54, sizeof gUnknown_08401E54); + u8 unk_8041E54[] = {0, 0, 1, 2, 3}; if (sub_8127F64(sprite) == 0) { StartSpriteAnimIfDifferent(sprite, unk_8041E54[mapObject->placeholder18]); @@ -1134,11 +1111,8 @@ __attribute__((naked)) static void sub_812800C(struct MapObject *mapObject, stru static void sub_81280A0(struct MapObject *mapObject, struct Sprite *linkedSprite, struct Sprite *sprite) { - u16 unk_8401E5A[ARRAY_COUNT(gUnknown_08401E5A)]; - u8 v0; - - memcpy(unk_8401E5A, gUnknown_08401E5A, sizeof gUnknown_08401E5A); - v0 = sub_8127F5C(sprite); + u16 unk_8401E5A[] = {3, 7}; + u8 v0 = sub_8127F5C(sprite); if (v0 != 0) { if (((u16)(++ sprite->data[4]) & unk_8401E5A[sprite->data[5]]) == 0) diff --git a/src/field/field_map_obj.c b/src/field/field_map_obj.c index 81c0c5854..ba7c3d68e 100644 --- a/src/field/field_map_obj.c +++ b/src/field/field_map_obj.c @@ -2020,7 +2020,7 @@ u8 GetFieldObjectIdByLocalId(u8 localId) #ifdef NONMATCHING u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 c) { - struct MapObject2 *mapObj; //TODO: resolve the mapobj_unk_19b weirdness + struct MapObject *mapObj; //TODO: resolve the mapobj_unk_19b weirdness u8 var; u16 r3; u16 r2; @@ -2029,8 +2029,8 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 if (GetAvailableFieldObjectSlot(template->localId, b, c, &var) != 0) return 16; //_0805ACCE - mapObj = (struct MapObject2 *)&gMapObjects[var]; - npc_clear_ids_and_state((struct MapObject *)mapObj); + mapObj = &gMapObjects[var]; + npc_clear_ids_and_state(mapObj); r3 = template->x + 7; r2 = template->y + 7; mapObj->active = TRUE; @@ -2048,8 +2048,8 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 mapObj->coords3.y = r2; mapObj->mapobj_unk_0B_0 = template->elevation; mapObj->elevation = template->elevation; - mapObj->mapobj_unk_19 = template->unkA_0; - mapObj->mapobj_unk_19b = template->unkA_4; + mapObj->range.as_nybbles.x = template->unkA_0; + mapObj->range.as_nybbles.y = template->unkA_4; mapObj->trainerType = template->unkC; mapObj->trainerRange_berryTreeId = template->unkE; mapObj->mapobj_unk_20 = gUnknown_0836DC09[template->movementType]; @@ -2058,10 +2058,10 @@ u8 InitFieldObjectStateFromTemplate(struct MapObjectTemplate *template, u8 b, u8 //asm("":::"r5","r6"); if (gUnknown_0836DBBC[mapObj->animPattern] != 0) { - if (mapObj->mapobj_unk_19 == 0) - mapObj->mapobj_unk_19++; - if (mapObj->mapobj_unk_19b == 0) - mapObj->mapobj_unk_19b++; + if (mapObj->range.as_nybbles.x == 0) + mapObj->range.as_nybbles.x++; + if (mapObj->range.as_nybbles.y == 0) + mapObj->range.as_nybbles.y++; } return var; } @@ -5464,7 +5464,7 @@ u8 sub_805FF20(struct MapObject *mapObject, u8 direction) return npc_block_way(mapObject, x, y, direction); } -bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y); +bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject *mapObject, s16 x, s16 y); static bool8 DoesObjectCollideWithObjectAt(struct MapObject *mapObject, s16 x, s16 y); bool8 IsMetatileDirectionallyImpassable(struct MapObject *mapObject, s16 x, s16 y, u8 direction); @@ -5472,7 +5472,7 @@ u8 npc_block_way(struct MapObject *mapObject, s16 x, s16 y, u32 dirn) { u8 direction; direction = dirn; - if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y)) + if (IsCoordOutsideFieldObjectMovementRect(mapObject, x, y)) return 1; else if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction)) return 2; @@ -5489,7 +5489,7 @@ u8 sub_8060024(struct MapObject *mapObject, s16 x, s16 y, u8 direction) { u8 flags = 0; - if (IsCoordOutsideFieldObjectMovementRect((struct MapObject2 *)mapObject, x, y)) + if (IsCoordOutsideFieldObjectMovementRect(mapObject, x, y)) flags |= 1; if (MapGridIsImpassableAt(x, y) || GetMapBorderIdAt(x, y) == -1 || IsMetatileDirectionallyImpassable(mapObject, x, y, direction) || (mapObject->mapobj_bit_15 && !CanCameraMoveInDirection(direction))) flags |= 2; @@ -5500,22 +5500,22 @@ u8 sub_8060024(struct MapObject *mapObject, s16 x, s16 y, u8 direction) return flags; } -bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject2 *mapObject, s16 x, s16 y) +bool8 IsCoordOutsideFieldObjectMovementRect(struct MapObject *mapObject, s16 x, s16 y) { s16 minv; s16 maxv; - if (mapObject->mapobj_unk_19 != 0) + if (mapObject->range.as_nybbles.x != 0) { - minv = mapObject->coords1.x - (mapObject->mapobj_unk_19); - maxv = mapObject->coords1.x + (mapObject->mapobj_unk_19); + minv = mapObject->coords1.x - (mapObject->range.as_nybbles.x); + maxv = mapObject->coords1.x + (mapObject->range.as_nybbles.x); if (minv > x || maxv < x) return TRUE; } - if (mapObject->mapobj_unk_19b != 0) + if (mapObject->range.as_nybbles.y != 0) { - minv = mapObject->coords1.y - (mapObject->mapobj_unk_19b); - maxv = mapObject->coords1.y + (mapObject->mapobj_unk_19b); + minv = mapObject->coords1.y - (mapObject->range.as_nybbles.y); + maxv = mapObject->coords1.y + (mapObject->range.as_nybbles.y); if (minv > y || maxv < y) return TRUE; } diff --git a/src/field/field_map_obj_helpers.c b/src/field/field_map_obj_helpers.c index f1a113d44..328b66ed2 100644 --- a/src/field/field_map_obj_helpers.c +++ b/src/field/field_map_obj_helpers.c @@ -7,13 +7,92 @@ typedef void (*SpriteStepFunc)(struct Sprite *sprite, u8 dir); -extern s16 gUnknown_08376194[]; -extern SpriteStepFunc *gUnknown_08376180[]; -extern s8 *gUnknown_083761D0[]; -extern s16 gUnknown_083761DC[]; -extern u8 gUnknown_083761E2[]; -extern s16 gUnknown_083761E6[]; -extern u8 gUnknown_083761EC[]; +void Step1(struct Sprite *sprite, u8 dir); +void Step2(struct Sprite *sprite, u8 dir); +void Step3(struct Sprite *sprite, u8 dir); +void Step4(struct Sprite *sprite, u8 dir); +void Step8(struct Sprite *sprite, u8 dir); + +const SpriteStepFunc Unknown_83760F0[] = { + Step1, + Step1, + Step1, + Step1, + Step1, + Step1, + Step1, + Step1, + Step1, + Step1, + Step1, + Step1, + Step1, + Step1, + Step1, + Step1 +}; + +const SpriteStepFunc Unknown_8376130[] = { + Step2, + Step2, + Step2, + Step2, + Step2, + Step2, + Step2, + Step2 +}; + +const SpriteStepFunc Unknown_8376150[] = { + Step2, + Step3, + Step3, + Step2, + Step3, + Step3 +}; + +const SpriteStepFunc Unknown_8376168[] = { + Step4, + Step4, + Step4, + Step4 +}; + +const SpriteStepFunc Unknown_8376178[] = { + Step8, + Step8 +}; + +const SpriteStepFunc *const gUnknown_08376180[] = { + Unknown_83760F0, + Unknown_8376130, + Unknown_8376150, + Unknown_8376168, + Unknown_8376178 +}; + +const s16 gUnknown_08376194[] = { + 16, 8, 6, 4, 2 +}; + +const s8 Unknown_837619E[] = { + -4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0 +}; + +const s8 Unknown_83761AE[] = { + 0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0 +}; + +const s8 Unknown_83761BE[] = { + -2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0 +}; + +const s8 *const gUnknown_083761D0[] = { + Unknown_837619E, + Unknown_83761AE, + Unknown_83761BE +}; bool8 FreezeMapObject(struct MapObject *mapObject) { @@ -156,14 +235,9 @@ void sub_80646E4(struct Sprite *sprite, u8 a2, u8 a3, u8 a4) u8 sub_8064704(struct Sprite *sprite) { - u8 v2; - s16 v5[3]; - u8 v6[3]; - - memcpy(v5, gUnknown_083761DC, 6); - memcpy(v6, gUnknown_083761E2, 3); - - v2 = 0; + s16 v5[3] = {0x10, 0x10, 0x20}; + u8 v6[3] = {0, 0, 1}; + u8 v2 = 0; if (sprite->data[4]) Step1(sprite, sprite->data[3]); @@ -186,14 +260,9 @@ u8 sub_8064704(struct Sprite *sprite) u8 sub_806478C(struct Sprite *sprite) { - u8 v2; - s16 v5[3]; - u8 v6[3]; - - memcpy(v5, gUnknown_083761E6, 6); - memcpy(v6, gUnknown_083761EC, 3); - - v2 = 0; + s16 v5[3] = {0x20, 0x20, 0x40}; + u8 v6[3] = {1, 1, 2}; + u8 v2 = 0; if (sprite->data[4] && !(sprite->data[6] & 1)) Step1(sprite, sprite->data[3]); diff --git a/src/field/field_special_scene.c b/src/field/field_special_scene.c index 0b7fe336e..67b652a57 100644 --- a/src/field/field_special_scene.c +++ b/src/field/field_special_scene.c @@ -291,7 +291,7 @@ bool8 sub_80C7754(void) void Task_HandlePorthole(u8 taskId) { s16 *data = gTasks[taskId].data; - u16 *var = GetVarPointer(VAR_PORTHOLE); + u16 *var = GetVarPointer(VAR_PORTHOLE_STATE); struct WarpData *location = &gSaveBlock1.location; switch (data[0]) @@ -337,8 +337,8 @@ void Task_HandlePorthole(u8 taskId) } break; case EXIT_PORTHOLE: // exit porthole. - FlagClear(0x4001); - FlagClear(0x4000); + FlagClear(FLAG_SPECIAL_FLAG_1); + FlagClear(FLAG_SPECIAL_FLAG_0); copy_saved_warp2_bank_and_enter_x_to_warp1(0); sp13E_warp_to_last_warp(); DestroyTask(taskId); @@ -352,7 +352,7 @@ void sub_80C78A0(void) gSprites[spriteId].coordOffsetEnabled = FALSE; - if (VarGet(0x40B4) == 2) + if (VarGet(VAR_PORTHOLE_STATE) == 2) { StartSpriteAnim(&gSprites[spriteId], FieldObjectDirectionToImageAnimId(4)); } @@ -374,8 +374,8 @@ void sub_80C791C(void) void sub_80C7958(void) { FlagSet(FLAG_SYS_CRUISE_MODE); - FlagSet(0x4001); - FlagSet(0x4000); + FlagSet(FLAG_SPECIAL_FLAG_1); + FlagSet(FLAG_SPECIAL_FLAG_0); saved_warp2_set(0, gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1); sub_80C7754(); sub_8080F9C(); diff --git a/src/field/field_specials.c b/src/field/field_specials.c index 87a9e2d5d..1a4ebe1af 100644 --- a/src/field/field_specials.c +++ b/src/field/field_specials.c @@ -99,13 +99,13 @@ u16 GetPlayerAvatarBike(void) return 0; } -static void DetermineCyclingRoadResults(u32 arg0, u8 arg1) +static void DetermineCyclingRoadResults(u32 numFrames, u8 numBikeCollisions) { u8 result; - if (arg1 <= 99) + if (numBikeCollisions <= 99) { - ConvertIntToDecimalStringN(gStringVar1, arg1, STR_CONV_MODE_LEFT_ALIGN, 2); + ConvertIntToDecimalStringN(gStringVar1, numBikeCollisions, STR_CONV_MODE_LEFT_ALIGN, 2); StringAppend(gStringVar1, gOtherText_Times); } else @@ -113,11 +113,11 @@ static void DetermineCyclingRoadResults(u32 arg0, u8 arg1) StringCopy(gStringVar1, gOtherText_99Times); } - if (arg0 < 3600) + if (numFrames < 3600) { - ConvertIntToDecimalStringN(gStringVar2, arg0 / 60, STR_CONV_MODE_RIGHT_ALIGN, 2); + ConvertIntToDecimalStringN(gStringVar2, numFrames / 60, STR_CONV_MODE_RIGHT_ALIGN, 2); gStringVar2[2] = CHAR_DECIMAL_SEPARATOR; - ConvertIntToDecimalStringN(&gStringVar2[3], ((arg0 % 60) * 100) / 60, STR_CONV_MODE_LEADING_ZEROS, 2); + ConvertIntToDecimalStringN(&gStringVar2[3], ((numFrames % 60) * 100) / 60, STR_CONV_MODE_LEADING_ZEROS, 2); StringAppend(gStringVar2, gOtherText_Seconds); } else @@ -126,44 +126,44 @@ static void DetermineCyclingRoadResults(u32 arg0, u8 arg1) } result = 0; - if (arg1 == 0) + if (numBikeCollisions == 0) { result = 5; } - else if (arg1 < 4) + else if (numBikeCollisions < 4) { result = 4; } - else if (arg1 < 10) + else if (numBikeCollisions < 10) { result = 3; } - else if (arg1 < 20) + else if (numBikeCollisions < 20) { result = 2; } - else if (arg1 < 100) + else if (numBikeCollisions < 100) { result = 1; } - if (arg0 / 60 <= 10) + if (numFrames / 60 <= 10) { result += 5; } - else if (arg0 / 60 <= 15) + else if (numFrames / 60 <= 15) { result += 4; } - else if (arg0 / 60 <= 20) + else if (numFrames / 60 <= 20) { result += 3; } - else if (arg0 / 60 <= 40) + else if (numFrames / 60 <= 40) { result += 2; } - else if (arg0 / 60 < 60) + else if (numFrames / 60 < 60) { result += 1; } @@ -173,36 +173,36 @@ static void DetermineCyclingRoadResults(u32 arg0, u8 arg1) } void FinishCyclingRoadChallenge(void) { - const u32 time = gMain.vblankCounter1 - gBikeCyclingTimer; + const u32 numFrames = gMain.vblankCounter1 - gBikeCyclingTimer; - DetermineCyclingRoadResults(time, gBikeCollisions); - RecordCyclingRoadResults(time, gBikeCollisions); + DetermineCyclingRoadResults(numFrames, gBikeCollisions); + RecordCyclingRoadResults(numFrames, gBikeCollisions); } -static void RecordCyclingRoadResults(u32 arg0, u8 arg1) { - u16 high = VarGet(0x4028); - u16 low = VarGet(0x4029); - u32 record = high + (low << 16); +static void RecordCyclingRoadResults(u32 numFrames, u8 numBikeCollisions) { + u16 low = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_L); + u16 high = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_H); + u32 framesRecord = low + (high << 16); - if (record > arg0 || record == 0) + if (framesRecord > numFrames || framesRecord == 0) { - VarSet(0x4028, arg0); - VarSet(0x4029, arg0 >> 16); - VarSet(0x4027, arg1); + VarSet(VAR_CYCLING_ROAD_RECORD_TIME_L, numFrames); + VarSet(VAR_CYCLING_ROAD_RECORD_TIME_H, numFrames >> 16); + VarSet(VAR_CYCLING_ROAD_RECORD_COLLISIONS, numBikeCollisions); } } u16 GetRecordedCyclingRoadResults(void) { - u16 high = VarGet(0x4028); - u16 low = VarGet(0x4029); - u32 record = high + (low << 16); + u16 low = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_L); + u16 high = VarGet(VAR_CYCLING_ROAD_RECORD_TIME_H); + u32 framesRecord = low + (high << 16); - if (record == 0) + if (framesRecord == 0) { return FALSE; } - DetermineCyclingRoadResults(record, VarGet(0x4027)); + DetermineCyclingRoadResults(framesRecord, VarGet(VAR_CYCLING_ROAD_RECORD_COLLISIONS)); return TRUE; } @@ -212,9 +212,9 @@ void UpdateCyclingRoadState(void) { return; } - if (VarGet(0x40a9) == 2 || VarGet(0x40a9) == 3) + if (VarGet(VAR_CYCLING_CHALLENGE_STATE) == 2 || VarGet(VAR_CYCLING_CHALLENGE_STATE) == 3) { - VarSet(0x40a9, 0); + VarSet(VAR_CYCLING_CHALLENGE_STATE, 0); Overworld_SetSavedMusic(SE_STOP); } } @@ -242,7 +242,7 @@ bool32 CountSSTidalStep(u16 delta) u8 GetSSTidalLocation(s8 *mapGroup, s8 *mapNum, s16 *x, s16 *y) { u16 *varCruiseStepCount = GetVarPointer(VAR_CRUISE_STEP_COUNT); - switch (*GetVarPointer(VAR_PORTHOLE)) + switch (*GetVarPointer(VAR_PORTHOLE_STATE)) { case 1: case 8: @@ -312,28 +312,23 @@ u8 GetLinkPartnerNames(void) return nLinkPlayers; } -const u8 gUnknown_083F8358[4] = {7, 9, 8, 10}; -const s8 gUnknown_083F835C[4][2] = { - { 0, 1}, - { 1, 0}, - { 0, -1}, - {-1, 0} -}; - void SpawnBerryBlenderLinkPlayerSprites(void) { - u8 unknown_083F8358[4]; - u8 unknown_083F835C[4][2]; + u8 j = 0; + s16 x = 0; + s16 y = 0; + u8 unknown_083F8358[] = {7, 9, 8, 10}; + s8 unknown_083F835C[][2] = { + { 0, 1}, + { 1, 0}, + { 0, -1}, + {-1, 0} + }; u8 myLinkPlayerNumber; u8 playerDirectionLowerNybble; u8 rivalAvatarGraphicsId; u8 i; - u8 j = 0; - s16 x = 0; - s16 y = 0; - memcpy(unknown_083F8358, gUnknown_083F8358, sizeof gUnknown_083F8358); - memcpy(unknown_083F835C, gUnknown_083F835C, sizeof gUnknown_083F835C); myLinkPlayerNumber = sub_8008218(); playerDirectionLowerNybble = player_get_direction_lower_nybble(); switch (playerDirectionLowerNybble) @@ -362,7 +357,7 @@ void SpawnBerryBlenderLinkPlayerSprites(void) if (myLinkPlayerNumber != i) { rivalAvatarGraphicsId = GetRivalAvatarGraphicsIdByStateIdAndGender(0, gLinkPlayers[i].gender); - SpawnSpecialFieldObjectParametrized(rivalAvatarGraphicsId, unknown_083F8358[j], 0xf0 - i, (s8)unknown_083F835C[j][0] + x + 7, (s8)unknown_083F835C[j][1] + y + 7, 0); + SpawnSpecialFieldObjectParametrized(rivalAvatarGraphicsId, unknown_083F8358[j], 0xf0 - i, unknown_083F835C[j][0] + x + 7, unknown_083F835C[j][1] + y + 7, 0); j++; if (j == 4) { @@ -1885,12 +1880,12 @@ u8 sub_810F5BC(void) { if (FlagGet(FLAG_HIDE_RUSTURF_TUNNEL_ROCK_1)) { - VarSet(VAR_0x409a, 4); + VarSet(VAR_RUSTURF_TUNNEL_STATE, 4); return TRUE; } else if (FlagGet(FLAG_HIDE_RUSTURF_TUNNEL_ROCK_2)) { - VarSet(VAR_0x409a, 5); + VarSet(VAR_RUSTURF_TUNNEL_STATE, 5); return TRUE; } } @@ -1919,7 +1914,7 @@ void PutZigzagoonInPlayerParty(void) bool8 IsStarterInParty(void) { u8 i; - u16 starter = GetStarterPokemon(VarGet(VAR_FIRST_POKE)); + u16 starter = GetStarterPokemon(VarGet(VAR_STARTER_MON)); u8 partyCount = CalculatePlayerPartyCount(); for (i = 0; i < partyCount; i++) { @@ -2000,9 +1995,9 @@ static void sub_810F814(u8 taskId) EnableBothScriptContexts(); } -bool8 sub_810F828(void) +bool8 FoundBlackGlasses(void) { - return FlagGet(FLAG_UNKNOWN_2B8); + return FlagGet(FLAG_HIDDEN_ITEM_BLACK_GLASSES); } void SetRoute119Weather(void) @@ -2047,8 +2042,8 @@ void sub_810F8FC(void) u16 sub_810F908(void) { - u16 var40c2 = VarGet(VAR_0x40C2); - if (gLocalTime.days - var40c2 >= 7) + u16 tmReceivedDay = VarGet(VAR_PACIFIDLOG_TM_RECEIVED_DAY); + if (gLocalTime.days - tmReceivedDay >= 7) { return 0; } @@ -2056,12 +2051,12 @@ u16 sub_810F908(void) { return 8; } - return 7 - (gLocalTime.days - var40c2); + return 7 - (gLocalTime.days - tmReceivedDay); } u16 sub_810F950(void) { - VarSet(VAR_0x40C2, gLocalTime.days); + VarSet(VAR_PACIFIDLOG_TM_RECEIVED_DAY, gLocalTime.days); return gLocalTime.days; } @@ -2146,13 +2141,13 @@ void sub_810FAA0(void) FlagClear(0x316); FlagClear(0x317); FlagClear(0x318); - VarSet(VAR_0x4095, 1); + VarSet(VAR_LILYCOVE_FAN_CLUB_STATE, 1); } } u8 sub_810FB10(u8 a0) { - if (VarGet(VAR_0x4095) == 2) + if (VarGet(VAR_LILYCOVE_FAN_CLUB_STATE) == 2) { if ((gSaveBlock1.vars[0x41] & 0x7f) + gUnknown_083F8404[a0] >= 20) { @@ -2355,7 +2350,7 @@ void sub_810FE1C(void *linkRecords, u8 a, u8 b) void sub_810FEFC(void) { - if (VarGet(VAR_0x4095) == 2) + if (VarGet(VAR_LILYCOVE_FAN_CLUB_STATE) == 2) { sub_810FA74(); if (gBattleOutcome == 1) diff --git a/src/field/field_tasks.c b/src/field/field_tasks.c index 108ba64ba..393c7d75a 100644 --- a/src/field/field_tasks.c +++ b/src/field/field_tasks.c @@ -554,20 +554,20 @@ const u16 gUnknown_083763E4[] = { 0, 0, 0, - VAR_0x4001, - VAR_0x4002, - VAR_0x4003, - VAR_0x4004, + VAR_TEMP_1, + VAR_TEMP_2, + VAR_TEMP_3, + VAR_TEMP_4, 0, 0, - VAR_0x4005, - VAR_0x4006, - VAR_0x4007, + VAR_TEMP_5, + VAR_TEMP_6, + VAR_TEMP_7, 0, 0, - VAR_0x4008, - VAR_0x4009, - VAR_0x400A, + VAR_TEMP_8, + VAR_TEMP_9, + VAR_TEMP_A, 0, 0, 0, diff --git a/src/field/field_weather.c b/src/field/field_weather.c index 19ccca3bf..4a819bddf 100644 --- a/src/field/field_weather.c +++ b/src/field/field_weather.c @@ -5,6 +5,7 @@ #include "palette.h" #include "random.h" #include "script.h" +#include "constants/weather.h" #include "constants/songs.h" #include "sound.h" #include "sprite.h" @@ -397,31 +398,31 @@ void sub_807CCAC(void) case WEATHER_RAIN_MED: case WEATHER_RAIN_HEAVY: case WEATHER_SNOW: - case 11: + case WEATHER_DARK: if (sub_807CDC4() == 0) { gWeatherPtr->unknown_6C0 = 3; gWeatherPtr->unknown_6C6 = 3; } break; - case 12: + case WEATHER_DROUGHT: if (sub_807CE24() == 0) { gWeatherPtr->unknown_6C0 = -6; gWeatherPtr->unknown_6C6 = 3; } break; - case 6: + case WEATHER_FOG_1: if (sub_807CE7C() == 0) { gWeatherPtr->unknown_6C0 = 0; gWeatherPtr->unknown_6C6 = 3; } break; - case 7: - case 8: - case 9: - case 10: + case WEATHER_ASH: + case WEATHER_SANDSTORM: + case WEATHER_FOG_2: + case WEATHER_FOG_3: default: if (!gPaletteFade.active) { @@ -807,9 +808,9 @@ void fade_screen(u8 a, u8 delay) case WEATHER_RAIN_MED: case WEATHER_RAIN_HEAVY: case WEATHER_SNOW: - case 6: - case 11: - case 12: + case WEATHER_FOG_1: + case WEATHER_DARK: + case WEATHER_DROUGHT: r2 = 1; break; default: @@ -854,7 +855,7 @@ void sub_807D78C(u8 a) case 1: if (gWeatherPtr->unknown_6CA != 0) { - if (gWeatherPtr->currWeather == 6) + if (gWeatherPtr->currWeather == WEATHER_FOG_1) sub_807D540(r4); r4 *= 16; for (i = 0; i < 16; i++) @@ -867,7 +868,7 @@ void sub_807D78C(u8 a) BlendPalette(r4, 16, gPaletteFade.y, gPaletteFade.blendColor); break; default: - if (gWeatherPtr->currWeather != 6) + if (gWeatherPtr->currWeather != WEATHER_FOG_1) { sub_807CEBC(r4, 1, gWeatherPtr->unknown_6C0); } diff --git a/src/field/field_weather_effects.c b/src/field/field_weather_effects.c index 31eda4393..5a59d6c2a 100644 --- a/src/field/field_weather_effects.c +++ b/src/field/field_weather_effects.c @@ -4,6 +4,7 @@ #include "overworld.h" #include "random.h" #include "script.h" +#include "constants/weather.h" #include "constants/songs.h" #include "sound.h" #include "sprite.h" diff --git a/src/field/fldeff_secret_base_pc.c b/src/field/fldeff_secret_base_pc.c index 8d71a4fb9..394c4bc56 100644 --- a/src/field/fldeff_secret_base_pc.c +++ b/src/field/fldeff_secret_base_pc.c @@ -60,7 +60,7 @@ void DoSecretBasePCTurnOffEffect(void) GetXYCoordsOneStepInFrontOfPlayer(&x, &y); PlaySE(SE_PC_OFF); - if (!VarGet(VAR_0x4054)) + if (!VarGet(VAR_CURRENT_SECRET_BASE)) MapGridSetMetatileIdAt(x, y, 3616); else MapGridSetMetatileIdAt(x, y, 3617); diff --git a/src/field/item_use.c b/src/field/item_use.c index 37cd8ba78..e1fdddce0 100644 --- a/src/field/item_use.c +++ b/src/field/item_use.c @@ -14,6 +14,7 @@ #include "fieldmap.h" #include "item.h" #include "item_menu.h" +#include "constants/flags.h" #include "constants/items.h" #include "mail.h" #include "main.h" @@ -328,7 +329,7 @@ bool8 ItemfinderCheckForHiddenItems(struct MapEvents *events, u8 taskId) for (i = 0; i < events->bgEventCount; i++) { - if ((events -> bgEvents[i].kind == 7) && !FlagGet(events -> bgEvents[i].bgUnion.hiddenItem.hiddenItemId + 600)) + if ((events -> bgEvents[i].kind == 7) && !FlagGet(events -> bgEvents[i].bgUnion.hiddenItem.hiddenItemId + FLAG_HIDDEN_ITEMS_START)) { // do a distance lookup of each item so long as the index remains less than the objects on the current map. distanceX = (u16)events -> bgEvents[i].x + 7; @@ -360,7 +361,7 @@ bool8 HiddenItemAtPos(struct MapEvents *events, s16 x, s16 y) { if (bgEvent[i].kind == 7 && x == (u16)bgEvent[i].x && y == (u16)bgEvent[i].y) // hidden item and coordinates matches x and y passed? { - if (!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + 600)) + if (!FlagGet(bgEvent[i].bgUnion.hiddenItem.hiddenItemId + FLAG_HIDDEN_ITEMS_START)) return TRUE; else return FALSE; @@ -921,7 +922,7 @@ static void PrepareItemUseMessage(void) void ItemUseOutOfBattle_Repel(u8 var) { - if (VarGet(VAR_REPEL_STEP_COUNT) == FALSE) + if (VarGet(VAR_REPEL_STEP_COUNT) == 0) { VarSet(VAR_REPEL_STEP_COUNT, ItemId_GetHoldEffectParam(gSpecialVar_ItemId)); PrepareItemUseMessage(); diff --git a/src/field/lottery_corner.c b/src/field/lottery_corner.c index 83febc56e..03de26054 100644 --- a/src/field/lottery_corner.c +++ b/src/field/lottery_corner.c @@ -30,7 +30,7 @@ void ResetLotteryCorner(void) u16 rand = Random(); SetLotteryNumber((Random() << 16) | rand); - VarSet(VAR_POKELOT_PRIZE, 0); + VarSet(VAR_LOTTERY_PRIZE, 0); } void SetRandomLotteryNumber(u16 i) @@ -152,19 +152,19 @@ static u8 GetMatchingDigits(u16 winNumber, u16 otId) // lottery numbers go from 0 to 99999, not 65535 (0xFFFF). interestingly enough, the function that calls GetLotteryNumber shifts to u16, so it cant be anything above 65535 anyway. void SetLotteryNumber(u32 lotteryNum) { - u16 lowNum = lotteryNum >> 16; - u16 highNum = lotteryNum; + u16 high = lotteryNum >> 16; + u16 low = lotteryNum; - VarSet(VAR_POKELOT_RND1, highNum); - VarSet(VAR_POKELOT_RND2, lowNum); + VarSet(VAR_LOTTERY_RND_L, low); + VarSet(VAR_LOTTERY_RND_H, high); } u32 GetLotteryNumber(void) { - u16 highNum = VarGet(VAR_POKELOT_RND1); - u16 lowNum = VarGet(VAR_POKELOT_RND2); + u16 low = VarGet(VAR_LOTTERY_RND_L); + u16 high = VarGet(VAR_LOTTERY_RND_H); - return (lowNum << 16) | highNum; + return (high << 16) | low; } // interestingly, this may have been the original lottery number set function, but GF tried to change it to 32-bit later but didnt finish changing all calls as one GetLotteryNumber still shifts to u16. diff --git a/src/field/map_name_popup.c b/src/field/map_name_popup.c index 01105d0db..2e2dfc72e 100644 --- a/src/field/map_name_popup.c +++ b/src/field/map_name_popup.c @@ -19,7 +19,7 @@ bool8 unref_sub_80A2F44(void) void ShowMapNamePopup(void) { - if (FlagGet(0x4000) != TRUE) + if (FlagGet(FLAG_SPECIAL_FLAG_0) != TRUE) { if (!FuncIsActiveTask(Task_MapNamePopup)) { diff --git a/src/field/mauville_man.c b/src/field/mauville_man.c index 30f6f5233..4db513f65 100644 --- a/src/field/mauville_man.c +++ b/src/field/mauville_man.c @@ -10,6 +10,7 @@ #include "overworld.h" #include "random.h" #include "script.h" +#include "constants/map_objects.h" #include "constants/songs.h" #include "sound.h" #include "string_util.h" @@ -974,7 +975,7 @@ static void Task_BardSong(u8 taskId) void sub_80F83D0(void) { - VarSet(0x4010, 0x45 + GetCurrentMauvilleOldMan()); + VarSet(VAR_OBJ_GFX_ID_0, MAP_OBJ_GFX_BARD + GetCurrentMauvilleOldMan()); } struct Story diff --git a/src/field/overworld.c b/src/field/overworld.c index 834a2afa4..d0e40eac3 100644 --- a/src/field/overworld.c +++ b/src/field/overworld.c @@ -287,7 +287,7 @@ void LoadMapObjTemplatesFromHeader(void) { // Clear map object templates CpuFill32(0, gSaveBlock1.mapObjectTemplates, sizeof(gSaveBlock1.mapObjectTemplates)); - + // Copy map header events to save block CpuCopy32(gMapHeader.events->mapObjects, gSaveBlock1.mapObjectTemplates, @@ -816,7 +816,7 @@ static bool16 ShouldLegendaryMusicPlayAtLocation(struct WarpData *warp) static bool16 IsInfiltratedWeatherInstitute(struct WarpData *warp) { - if (VarGet(VAR_WEATHER_INSTITUTE_CLEARED)) + if (VarGet(VAR_WEATHER_INSTITUTE_STATE)) return FALSE; if (warp->mapGroup != MAP_GROUP(ROUTE119_WEATHER_INSTITUTE_1F)) return FALSE; @@ -981,7 +981,7 @@ static void PlayAmbientCry(void) s16 x, y; s8 pan; s8 volume; - + PlayerGetDestCoords(&x, &y); if (sIsAmbientCryWaterMon == TRUE && !MetatileBehavior_IsSurfableWaterOrUnderwater(MapGridGetMetatileBehaviorAt(x, y))) @@ -1158,7 +1158,7 @@ void OverworldBasic(void) sub_8072EDC(); } -// This CB2 is used when starting +// This CB2 is used when starting void CB2_OverworldBasic(void) { OverworldBasic(); @@ -2430,7 +2430,7 @@ void SpawnLinkPlayerMapObject(u8 linkPlayerId, s16 x, s16 y, u8 a4) mapObj->active = 1; mapObj->mapobj_bit_1 = a4; - mapObj->mapobj_unk_19 = 2; + mapObj->range.as_byte = 2; mapObj->spriteId = 64; InitLinkPlayerMapObjectPos(mapObj, x, y); @@ -2453,7 +2453,7 @@ void unref_sub_8055A6C(u8 linkPlayerId, u8 a2) { u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId; struct MapObject *mapObj = &gMapObjects[mapObjId]; - mapObj->mapobj_unk_19 = a2; + mapObj->range.as_byte = a2; } } @@ -2487,7 +2487,7 @@ u8 sub_8055B30(u8 linkPlayerId) { u8 mapObjId = gLinkPlayerMapObjects[linkPlayerId].mapObjId; struct MapObject *mapObj = &gMapObjects[mapObjId]; - return mapObj->mapobj_unk_19; + return mapObj->range.as_byte; } u8 sub_8055B50(u8 linkPlayerId) @@ -2559,10 +2559,10 @@ static u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapOb { s16 x, y; - mapObj->mapobj_unk_19 = npc_something3(a3, mapObj->mapobj_unk_19); - FieldObjectMoveDestCoords(mapObj, mapObj->mapobj_unk_19, &x, &y); + mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte); + FieldObjectMoveDestCoords(mapObj, mapObj->range.as_byte, &x, &y); - if (LinkPlayerDetectCollision(linkPlayerMapObj->mapObjId, mapObj->mapobj_unk_19, x, y)) + if (LinkPlayerDetectCollision(linkPlayerMapObj->mapObjId, mapObj->range.as_byte, x, y)) { return 0; } @@ -2577,7 +2577,7 @@ static u8 sub_8055CB0(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapOb static u8 sub_8055D18(struct LinkPlayerMapObject *linkPlayerMapObj, struct MapObject *mapObj, u8 a3) { - mapObj->mapobj_unk_19 = npc_something3(a3, mapObj->mapobj_unk_19); + mapObj->range.as_byte = npc_something3(a3, mapObj->range.as_byte); return 0; } @@ -2590,7 +2590,7 @@ static void sub_8055D38(struct LinkPlayerMapObject *linkPlayerMapObj, struct Map { mapObj->mapobj_unk_21--; linkPlayerMapObj->mode = 1; - MoveCoords(mapObj->mapobj_unk_19, &mapObj->coords1.x, &mapObj->coords1.y); + MoveCoords(mapObj->range.as_byte, &mapObj->coords1.x, &mapObj->coords1.y); if (!mapObj->mapobj_unk_21) { npc_coords_shift_still(mapObj); @@ -2662,9 +2662,9 @@ void SpriteCB_LinkPlayer(struct Sprite *sprite) SetObjectSubpriorityByZCoord(mapObj->elevation, sprite, 1); sprite->oam.priority = ZCoordToPriority(mapObj->elevation); if (!linkPlayerMapObj->mode) - StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObj->mapobj_unk_19)); + StartSpriteAnim(sprite, FieldObjectDirectionToImageAnimId(mapObj->range.as_byte)); else - StartSpriteAnimIfDifferent(sprite, get_go_image_anim_num(mapObj->mapobj_unk_19)); + StartSpriteAnimIfDifferent(sprite, get_go_image_anim_num(mapObj->range.as_byte)); sub_806487C(sprite, 0); if (mapObj->mapobj_bit_2) { diff --git a/src/field/party_menu.c b/src/field/party_menu.c index 089f93f9e..9c1150515 100644 --- a/src/field/party_menu.c +++ b/src/field/party_menu.c @@ -436,34 +436,6 @@ static const struct PartyMenuHandlersStruct PartyMenuHandlers[] = { {HandleMoveTutorPartyMenu, SetupMoveTutorPartyMenu, 0}, // PARTY_MENU_TYPE_MOVE_TUTOR }; -static const u16 gUnknown_08376CD4[] = { - 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, - 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, -}; - -static const u16 gUnknown_08376CEC[] = { - 0x2A, 0x0B, 0x0C, 0x0D, 0x0E, 0x2F, - 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, -}; - -static const u8 *const StatNames[] = { - gOtherText_HP, - gOtherText_Attack, - gOtherText_Defense, - gOtherText_SpAtk, - gOtherText_SpDef, - gOtherText_Speed, -}; - -static const u8 StatDataTypes[] = { - MON_DATA_MAX_HP, - MON_DATA_ATK, - MON_DATA_DEF, - MON_DATA_SPATK, - MON_DATA_SPDEF, - MON_DATA_SPEED, -}; - struct Unk201C000 { /*0x00*/ struct Pokemon *pokemon; @@ -1227,12 +1199,11 @@ void sub_806BB3C(s16 a, u16 b) void sub_806BB9C(u8 a) { u8 i; - u16 *vramPtr; - const u16 arr[12]; - - memcpy(&arr, gUnknown_08376CD4, sizeof gUnknown_08376CD4); - - vramPtr = (u16 *)(BG_VRAM + 0x3C30); + u16 arr[12] = { + 0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F, + 0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F, + }; + u16 *vramPtr = (u16 *)(BG_VRAM + 0x3C30); for (i = 0; i < PARTY_SIZE; i++) { vramPtr[i] = arr[i] + (a << 12); @@ -1243,12 +1214,11 @@ void sub_806BB9C(u8 a) void sub_806BBEC(u8 a) { u8 i; - u16 *vramPtr; - const u16 arr[12]; - - memcpy(&arr, gUnknown_08376CEC, sizeof gUnknown_08376CEC); - - vramPtr = (u16 *)(BG_VRAM + 0x3CB0); + u16 arr[12] = { + 0x2A, 0x0B, 0x0C, 0x0D, 0x0E, 0x2F, + 0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F, + }; + u16 *vramPtr = (u16 *)(BG_VRAM + 0x3CB0); for (i = 0; i < PARTY_SIZE; i++) { vramPtr[i] = arr[i] + (a << 12); @@ -4910,6 +4880,23 @@ void DoPPUpItemEffect(u8 taskId, u16 b, TaskFunc c) gMain.newKeys = 0; } +static const u8 *const StatNames[] = { + gOtherText_HP, + gOtherText_Attack, + gOtherText_Defense, + gOtherText_SpAtk, + gOtherText_SpDef, + gOtherText_Speed, +}; + +static const u8 StatDataTypes[] = { + MON_DATA_MAX_HP, + MON_DATA_ATK, + MON_DATA_DEF, + MON_DATA_SPATK, + MON_DATA_SPDEF, + MON_DATA_SPEED, +}; void DoRareCandyItemEffect(u8 taskId, u16 b, TaskFunc c) { u8 i; diff --git a/src/field/player_pc.c b/src/field/player_pc.c index d92d13ce4..4fef09386 100644 --- a/src/field/player_pc.c +++ b/src/field/player_pc.c @@ -171,15 +171,6 @@ static const u8 gNonSelectedItemQuantityFormatText[] = _("{STR_VAR_1}"); static const u8 gSelectedItemQuantityFormatText[] = _("{COLOR RED}{STR_VAR_1}"); static const u8 gUnknown_08406330[] = _("{CLEAR_TO 32}"); -static const u16 gUnknown_08406334[3] = -{ - 0x5294, - 0x6B5A, - 0x7FFF -}; - -static const u8 gHighlightedMoveToBagFormatText[] = _("{COLOR RED}{STR_VAR_1}"); - extern u8 *gUnknown_02039314; extern struct MenuAction gUnknown_08406298[]; @@ -205,8 +196,8 @@ void NewGameInitPCItems(void) u8 i; // because Game Freak don't know how to use a struct or a 2d array - for(i = 0, ClearItemSlots(gSaveBlock1.pcItems, ARRAY_COUNT(gSaveBlock1.pcItems)); NEW_GAME_PC_ITEMS(i, ITEM_ID) && NEW_GAME_PC_ITEMS(i, QUANTITY) && - AddPCItem(NEW_GAME_PC_ITEMS(i, ITEM_ID), NEW_GAME_PC_ITEMS(i, QUANTITY)) == TRUE; i++) + for(i = 0, ClearItemSlots(gSaveBlock1.pcItems, ARRAY_COUNT(gSaveBlock1.pcItems)); NEW_GAME_PC_ITEMS(i, PC_ITEM_ID) && NEW_GAME_PC_ITEMS(i, PC_QUANTITY) && + AddPCItem(NEW_GAME_PC_ITEMS(i, PC_ITEM_ID), NEW_GAME_PC_ITEMS(i, PC_QUANTITY)) == TRUE; i++) ; } @@ -1007,9 +998,12 @@ static void ItemStorage_GoBackToItemPCMenu(u8 taskId, u8 var) static void ItemStorage_LoadPalette(void) { - u16 arr[3]; + u16 arr[] = { + 0x5294, + 0x6B5A, + 0x7FFF + }; - memcpy(arr, gUnknown_08406334, sizeof(arr)); LoadPalette(&arr[2], 0xDF, 2); LoadPalette(&arr[1], 0xD1, 2); LoadPalette(&arr[0], 0xD8, 2); @@ -1261,6 +1255,8 @@ static void Mailbox_ReturnToFieldFromReadMail(void) SetMainCallback2(c2_exit_to_overworld_2_switch); } +static const u8 gHighlightedMoveToBagFormatText[] = _("{COLOR RED}{STR_VAR_1}"); + static void Mailbox_MoveToBag(u8 taskId) { HandleDestroyMenuCursors(); diff --git a/src/field/secret_base.c b/src/field/secret_base.c index 7589ab1e3..400074604 100644 --- a/src/field/secret_base.c +++ b/src/field/secret_base.c @@ -180,7 +180,7 @@ void sub_80BB5E4(void) if (gUnknown_020387DC != gSaveBlock1.secretBases[i].secretBaseId) continue; gSpecialVar_Result = 1; - VarSet(VAR_0x4054, i); + VarSet(VAR_CURRENT_SECRET_BASE, i); break; } } @@ -284,7 +284,7 @@ void sub_80BB8CC(void) for (idx=0; idx<4; idx++) { gSaveBlock1.secretBases[0].trainerId[idx] = gSaveBlock2.playerTrainerId[idx]; } - VarSet(VAR_0x4054, 0); + VarSet(VAR_CURRENT_SECRET_BASE, 0); nameLength = sub_80BB8A8(gSaveBlock2.playerName); memset(gSaveBlock1.secretBases[0].playerName, 0xFF, OT_NAME_LENGTH); StringCopyN(gSaveBlock1.secretBases[0].playerName, gSaveBlock2.playerName, nameLength); @@ -333,7 +333,7 @@ void sub_80BBA48(u8 taskid) } break; case 2: - curbaseid = VarGet(VAR_0x4054); + curbaseid = VarGet(VAR_CURRENT_SECRET_BASE); if (gSaveBlock1.secretBases[curbaseid].sbr_field_10 < 0xff) gSaveBlock1.secretBases[curbaseid].sbr_field_10++; sub_80BBA14(); @@ -412,7 +412,7 @@ void sub_80BBCCC(u8 flagIn) u16 curBaseId; u16 x, y; if (CurrentMapIsSecretBase()) { - curBaseId = VarGet(VAR_0x4054); + curBaseId = VarGet(VAR_CURRENT_SECRET_BASE); for (x=0; x<16; x++) { if (gSaveBlock1.secretBases[curBaseId].decorations[x] > 0 && gSaveBlock1.secretBases[curBaseId].decorations[x] <= 0x78 && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].permission != DECORPERM_SOLID_MAT) { sub_80FF394((gSaveBlock1.secretBases[curBaseId].decorationPos[x] >> 4) + 7, (gSaveBlock1.secretBases[curBaseId].decorationPos[x] & 0xF) + 7, gSaveBlock1.secretBases[curBaseId].decorations[x]); @@ -437,7 +437,7 @@ void sub_80BBDD0(void) u8 metatile; u8 permission; u8 ndecor; - u16 curBase = VarGet(VAR_0x4054); + u16 curBase = VarGet(VAR_CURRENT_SECRET_BASE); if (!CurrentMapIsSecretBase()) { roomdecor = gSaveBlock1.playerRoomDecor; roomdecorpos = gSaveBlock1.playerRoomDecorPos; @@ -478,8 +478,8 @@ void sub_80BBDD0(void) void sub_80BBFA4(void) { - int curBase = VarGet(VAR_0x4054); - VarSet(VAR_0x401F, gUnknown_083D13EC[sub_80BCCA4(curBase)]); + int curBase = VarGet(VAR_CURRENT_SECRET_BASE); + VarSet(VAR_OBJ_GFX_ID_F, gUnknown_083D13EC[sub_80BCCA4(curBase)]); } void sub_80BBFD8(struct MapPosition *position, struct MapEvents *events) @@ -571,12 +571,12 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190 } u8 *GetSecretBaseMapName(u8 *dest) { - gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_0x4054)].secretBaseId; - return sub_80BC190(dest, VarGet(VAR_0x4054)); + gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].secretBaseId; + return sub_80BC190(dest, VarGet(VAR_CURRENT_SECRET_BASE)); } void sub_80BC224(void) { - u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(VAR_0x4054)].playerName; + u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(VAR_CURRENT_SECRET_BASE)].playerName; u8 *var1 = gStringVar1; u8 var2 = sub_80BB8A8(var0); u8 *var3 = StringCopyN(var1, var0, var2); @@ -1173,7 +1173,7 @@ void sub_80BCBF8(u8 taskId) void sub_80BCC54(u8 taskId) { - u16 curBaseIndex = VarGet(VAR_0x4054); + u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE); BuyMenuFreeMemory(); DestroyVerticalScrollIndicator(0); @@ -1199,7 +1199,7 @@ u8 sub_80BCCA4(u8 secretBaseIndex) const u8 *sub_80BCCE8(void) { - u8 param = sub_80BCCA4(VarGet(VAR_0x4054)); + u8 param = sub_80BCCA4(VarGet(VAR_CURRENT_SECRET_BASE)); if (param == 0) return UnknownString_81A1BB2; if (param == 1) return UnknownString_81A1F67; if (param == 2) return UnknownString_81A2254; @@ -1229,7 +1229,7 @@ void unref_sub_80BCD7C(u8 secretBaseIndex) void sub_80BCE1C(void) { - u16 curBaseIndex = VarGet(VAR_0x4054); + u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE); sub_810FB10(1); CreateSecretBaseEnemyParty(&gSaveBlock1.secretBases[curBaseIndex]); @@ -1237,12 +1237,12 @@ void sub_80BCE1C(void) void sub_80BCE4C() { - gSaveBlock1.secretBases[VarGet(VAR_0x4054)].sbr_field_1_5 = gSpecialVar_Result; + gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].sbr_field_1_5 = gSpecialVar_Result; } void sub_80BCE90() { - u16 curBaseIndex = VarGet(VAR_0x4054); + u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE); if (!FlagGet(FLAG_DAILY_UNKNOWN_8C2)) { diff --git a/src/field/trainer_see.c b/src/field/trainer_see.c index 38bc6971c..3034b2b65 100644 --- a/src/field/trainer_see.c +++ b/src/field/trainer_see.c @@ -9,14 +9,22 @@ #include "task.h" #include "util.h" +static bool8 CheckTrainer(u8); +static void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3); +static void objc_exclamation_mark_probably(struct Sprite *sprite); +static bool8 TrainerCanApproachPlayer(struct MapObject *); +static void sub_80842C8(struct MapObject *, u8); +static bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject *trainerObj, u8 approachDistance, u8 direction); +static void RunTrainerSeeFuncList(u8 taskId); + const u8 gSpriteImage_839B308[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/0.4bpp"); const u8 gSpriteImage_839B388[] = INCBIN_U8("graphics/unknown_sprites/839B4E0/1.4bpp"); const u8 gSpriteImage_839B408[] = INCBIN_U8("graphics/unknown_sprites/839B408.4bpp"); -u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y); -u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y); -u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y); -u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y); +static u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y); +static u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y); +static u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y); +static u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y); static u8 (*const sDirectionalApproachDistanceFuncs[])(struct MapObject *, s16, s16, s16) = { @@ -26,9 +34,6 @@ static u8 (*const sDirectionalApproachDistanceFuncs[])(struct MapObject *, s16, GetTrainerApproachDistanceEast, }; -extern struct SpriteTemplate gSpriteTemplate_839B510; -extern struct SpriteTemplate gSpriteTemplate_839B528; - bool8 CheckTrainers(void) { u8 mapObjId; @@ -43,7 +48,7 @@ bool8 CheckTrainers(void) return FALSE; } -bool8 CheckTrainer(u8 mapObjId) +static bool8 CheckTrainer(u8 mapObjId) { u8 *scriptPtr = GetFieldObjectScriptPointerByFieldObjectId(mapObjId); @@ -69,7 +74,7 @@ bool8 CheckTrainer(u8 mapObjId) } } -bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj) +static bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj) { s16 x, y; u8 i; @@ -79,14 +84,14 @@ bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj) if (trainerObj->trainerType == 1) // can only see in one direction { approachDistance = sDirectionalApproachDistanceFuncs[trainerObj->mapobj_unk_18 - 1](trainerObj, trainerObj->trainerRange_berryTreeId, x, y); - return CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, approachDistance, trainerObj->mapobj_unk_18); + return CheckPathBetweenTrainerAndPlayer(trainerObj, approachDistance, trainerObj->mapobj_unk_18); } else // can see in all directions { for (i = 0; i < 4; i++) { approachDistance = sDirectionalApproachDistanceFuncs[i](trainerObj, trainerObj->trainerRange_berryTreeId, x, y); - if (CheckPathBetweenTrainerAndPlayer((struct MapObject2 *)trainerObj, approachDistance, i + 1)) // directions are 1-4 instead of 0-3. south north west east + if (CheckPathBetweenTrainerAndPlayer(trainerObj, approachDistance, i + 1)) // directions are 1-4 instead of 0-3. south north west east return approachDistance; } } @@ -94,7 +99,7 @@ bool8 TrainerCanApproachPlayer(struct MapObject *trainerObj) } // Returns how far south the player is from trainer. 0 if out of trainer's sight. -u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y) +static u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 x, s16 y) { if (trainerObj->coords2.x == x && y > trainerObj->coords2.y @@ -105,7 +110,7 @@ u8 GetTrainerApproachDistanceSouth(struct MapObject *trainerObj, s16 range, s16 } // Returns how far north the player is from trainer. 0 if out of trainer's sight. -u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y) +static u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 x, s16 y) { if (trainerObj->coords2.x == x && y < trainerObj->coords2.y @@ -116,7 +121,7 @@ u8 GetTrainerApproachDistanceNorth(struct MapObject *trainerObj, s16 range, s16 } // Returns how far west the player is from trainer. 0 if out of trainer's sight. -u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y) +static u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x, s16 y) { if (trainerObj->coords2.y == y && x < trainerObj->coords2.x @@ -127,7 +132,7 @@ u8 GetTrainerApproachDistanceWest(struct MapObject *trainerObj, s16 range, s16 x } // Returns how far east the player is from trainer. 0 if out of trainer's sight. -u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y) +static u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x, s16 y) { if (trainerObj->coords2.y == y && x > trainerObj->coords2.x @@ -143,7 +148,7 @@ u8 GetTrainerApproachDistanceEast(struct MapObject *trainerObj, s16 range, s16 x #define COLLISION_MASK 1 #endif -bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 approachDistance, u8 direction) +static bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject *trainerObj, u8 approachDistance, u8 direction) { s16 x, y; u8 unk19_temp; @@ -159,21 +164,21 @@ bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 approac for (i = 0; i <= approachDistance - 1; i++, MoveCoords(direction, &x, &y)) { - collision = sub_8060024((struct MapObject *)trainerObj, x, y, direction); + collision = sub_8060024(trainerObj, x, y, direction); if (collision != 0 && (collision & COLLISION_MASK)) return FALSE; } // preserve mapobj_unk_19 before clearing. - unk19_temp = trainerObj->mapobj_unk_19; - unk19b_temp = trainerObj->mapobj_unk_19b; - trainerObj->mapobj_unk_19 = 0; - trainerObj->mapobj_unk_19b = 0; + unk19_temp = trainerObj->range.as_nybbles.x; + unk19b_temp = trainerObj->range.as_nybbles.y; + trainerObj->range.as_nybbles.x = 0; + trainerObj->range.as_nybbles.y = 0; collision = npc_block_way((struct MapObject *)trainerObj, x, y, direction); - trainerObj->mapobj_unk_19 = unk19_temp; - trainerObj->mapobj_unk_19b = unk19b_temp; + trainerObj->range.as_nybbles.x = unk19_temp; + trainerObj->range.as_nybbles.y = unk19b_temp; if (collision == 4) return approachDistance; @@ -183,7 +188,7 @@ bool8 CheckPathBetweenTrainerAndPlayer(struct MapObject2 *trainerObj, u8 approac #define tTrainerObjHi data[1] #define tTrainerObjLo data[2] -void sub_80842C8(struct MapObject *trainerObj, u8 b) +static void sub_80842C8(struct MapObject *trainerObj, u8 b) { u8 taskId = CreateTask(RunTrainerSeeFuncList, 0x50); struct Task *task = &gTasks[taskId]; @@ -193,7 +198,7 @@ void sub_80842C8(struct MapObject *trainerObj, u8 b) task->data[3] = b; } -void sub_80842FC(TaskFunc followupFunc) +static void sub_80842FC(TaskFunc followupFunc) { TaskFunc taskFunc = RunTrainerSeeFuncList; u8 taskId = FindTaskIdByFunc(taskFunc); @@ -232,7 +237,7 @@ static bool8 (*const gTrainerSeeFuncList[])(u8 taskId, struct Task *task, struct sub_80846C8, }; -void RunTrainerSeeFuncList(u8 taskId) +static void RunTrainerSeeFuncList(u8 taskId) { struct Task *task = &gTasks[taskId]; struct MapObject *trainerObj = (struct MapObject *)((task->tTrainerObjHi << 16) | (task->tTrainerObjLo)); @@ -450,6 +455,41 @@ static void Task_DestroyTrainerApproachTask(u8 taskId) EnableBothScriptContexts(); } +static const struct OamData gOamData_839B4D8 = { + .size = 1, .priority = 1 +}; + +static const struct SpriteFrameImage gSpriteImageTable_839B4E0[] = { + { gSpriteImage_839B308, sizeof gSpriteImage_839B308 }, + { gSpriteImage_839B388, sizeof gSpriteImage_839B388 } +}; + +static const struct SpriteFrameImage gSpriteImageTable_839B4F0[] = { + { gSpriteImage_839B408, sizeof gSpriteImage_839B408 } +}; + +static const union AnimCmd gSpriteAnim_839B4F8[] = { + ANIMCMD_FRAME(0, 60), + ANIMCMD_END +}; + +static const union AnimCmd gSpriteAnim_839B500[] = { + ANIMCMD_FRAME(1, 60), + ANIMCMD_END +}; + +static const union AnimCmd *const gSpriteAnimTable_839B508[] = { + gSpriteAnim_839B4F8, + gSpriteAnim_839B500 +}; + +static const struct SpriteTemplate gSpriteTemplate_839B510 = { + 0xffff, 0xffff, &gOamData_839B4D8, gSpriteAnimTable_839B508, gSpriteImageTable_839B4E0, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably +}; +static const struct SpriteTemplate gSpriteTemplate_839B528 = { + 0xffff, 4100, &gOamData_839B4D8, gSpriteAnimTable_839B508, gSpriteImageTable_839B4F0, gDummySpriteAffineAnimTable, objc_exclamation_mark_probably +}; + u8 FldEff_ExclamationMarkIcon1(void) { u8 spriteId = CreateSpriteAtEnd(&gSpriteTemplate_839B510, 0, 0, 0x53); @@ -480,7 +520,7 @@ u8 FldEff_HeartIcon(void) return 0; } -void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3) +static void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3) { sprite->oam.priority = 1; sprite->coordOffsetEnabled = 1; @@ -494,7 +534,7 @@ void sub_8084894(struct Sprite *sprite, u16 a2, u8 a3) StartSpriteAnim(sprite, a3); } -void objc_exclamation_mark_probably(struct Sprite *sprite) +static void objc_exclamation_mark_probably(struct Sprite *sprite) { u8 mapObjId; diff --git a/src/field/tv.c b/src/field/tv.c index 1d5bf929c..c38da1f4c 100644 --- a/src/field/tv.c +++ b/src/field/tv.c @@ -2149,7 +2149,7 @@ void GetMomOrDadStringForTVMessage(void) if (gSaveBlock1.location.mapNum == MAP_NUM(LITTLEROOT_TOWN_BRENDANS_HOUSE_1F)) { StringCopy(gStringVar1, gOtherText_Mom); - VarSet(VAR_0x4003, 1); + VarSet(VAR_TEMP_3, 1); } } else @@ -2157,21 +2157,21 @@ void GetMomOrDadStringForTVMessage(void) if (gSaveBlock1.location.mapNum == MAP_NUM(LITTLEROOT_TOWN_MAYS_HOUSE_1F)) { StringCopy(gStringVar1, gOtherText_Mom); - VarSet(VAR_0x4003, 1); + VarSet(VAR_TEMP_3, 1); } } } - if (VarGet(VAR_0x4003) == 1) + if (VarGet(VAR_TEMP_3) == 1) { StringCopy(gStringVar1, gOtherText_Mom); } - else if (VarGet(VAR_0x4003) == 2) + else if (VarGet(VAR_TEMP_3) == 2) { StringCopy(gStringVar1, gOtherText_Dad); } - else if (VarGet(VAR_0x4003) > 2) + else if (VarGet(VAR_TEMP_3) > 2) { - if (VarGet(VAR_0x4003) % 2 == 0) + if (VarGet(VAR_TEMP_3) % 2 == 0) StringCopy(gStringVar1, gOtherText_Mom); else StringCopy(gStringVar1, gOtherText_Dad); @@ -2181,19 +2181,19 @@ void GetMomOrDadStringForTVMessage(void) if (Random() % 2 != 0) { StringCopy(gStringVar1, gOtherText_Mom); - VarSet(VAR_0x4003, 1); + VarSet(VAR_TEMP_3, 1); } else { StringCopy(gStringVar1, gOtherText_Dad); - VarSet(VAR_0x4003, 2); + VarSet(VAR_TEMP_3, 2); } } } void sub_80BFD20(void) { - VarSet(VAR_0x40BC, 0); + VarSet(VAR_BRAVO_TRAINER_BATTLE_TOWER_ON, 0); RemoveFieldObjectByLocalIdAndMap(5, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup); } |