Merge pull request #279 from PikalaxALT/field_effect

Field effect
This commit is contained in:
PikalaxALT
2020-03-02 12:11:22 -05:00
committed by GitHub
51 changed files with 4132 additions and 10303 deletions
+2 -1
View File
@@ -1,4 +1,5 @@
const struct CompressedSpritePalette gMonPaletteTable[] =
// A dirty hack because field_effect.c requires this not be const
__attribute__((section(".rodata"))) struct CompressedSpritePalette gMonPaletteTable[] =
{
SPECIES_PAL(NONE, gMonPalette_CircledQuestionMark),
SPECIES_PAL(BULBASAUR, gMonPalette_Bulbasaur),
+3907
View File
File diff suppressed because it is too large Load Diff
+33 -33
View File
@@ -50,7 +50,7 @@ void palette_bg_faded_fill_black(void)
CpuFastFill16(RGB_BLACK, gPlttBufferFaded, 0x400);
}
void pal_fill_for_maplights(void)
void WarpFadeInScreen(void)
{
switch (sub_80C9DCC(get_map_light_from_warp0(), GetCurrentMapType()))
{
@@ -84,14 +84,14 @@ static void sub_807DBAC(void)
}
}
void sub_807DC00(void)
void FadeInFromBlack(void)
{
palette_bg_faded_fill_black();
FadeScreen(0, 0);
palette_bg_faded_fill_black();
}
void sub_807DC18(void)
void WarpFadeOutScreen(void)
{
const struct MapHeader *header = warp1_get_mapheader();
if (header->regionMapSectionId != gMapHeader.regionMapSectionId && sub_80F8110(header->regionMapSectionId, FALSE))
@@ -138,7 +138,7 @@ void sub_807DCE4(void)
{
ScriptContext2_Enable();
Overworld_PlaySpecialMapMusic();
sub_807DC00();
FadeInFromBlack();
CreateTask(task0A_nop_for_a_while, 10);
}
@@ -155,14 +155,14 @@ void FieldCallback_ReturnToEventScript2(void)
{
ScriptContext2_Enable();
Overworld_PlaySpecialMapMusic();
sub_807DC00();
FadeInFromBlack();
CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10);
}
void sub_807DD44(void)
{
ScriptContext2_Enable();
sub_807DC00();
FadeInFromBlack();
CreateTask(task0A_asap_script_env_2_enable_and_set_ctx_running, 10);
}
@@ -178,7 +178,7 @@ static void task_mpl_807DD60(u8 taskId)
case 1:
if (gTasks[task->data[1]].isActive != TRUE)
{
pal_fill_for_maplights();
WarpFadeInScreen();
task->data[0]++;
}
break;
@@ -212,7 +212,7 @@ static void sub_807DDF0(u8 taskId)
case 1:
if (IsLinkTaskFinished())
{
pal_fill_for_maplights();
WarpFadeInScreen();
task->data[0]++;
}
break;
@@ -278,9 +278,9 @@ static void sub_807DE78(bool8 a0)
static void sub_807DF4C(bool8 a0)
{
if (!a0)
pal_fill_for_maplights();
WarpFadeInScreen();
else
sub_807DC00();
FadeInFromBlack();
}
void sub_807DF64(void)
@@ -302,7 +302,7 @@ void sub_807DF7C(void)
static void sub_807DF94(void)
{
Overworld_PlaySpecialMapMusic();
pal_fill_for_maplights();
WarpFadeInScreen();
sub_8111CF0();
PlaySE(SE_TK_WARPOUT);
CreateTask(sub_807E31C, 10);
@@ -485,7 +485,7 @@ static void Task_WaitFadeAndCreateStartMenuTask(u8 taskId)
void FadeTransition_FadeInOnReturnToStartMenu(void)
{
sub_807DC00();
FadeInFromBlack();
CreateTask(Task_WaitFadeAndCreateStartMenuTask, 80);
ScriptContext2_Enable();
}
@@ -510,7 +510,7 @@ void sub_807E3EC(void)
{
ScriptContext2_Enable();
Overworld_PlaySpecialMapMusic();
sub_807DC00();
FadeInFromBlack();
CreateTask(task_mpl_807E3C8, 10);
}
@@ -530,8 +530,8 @@ bool32 sub_807E418(void)
void DoWarp(void)
{
ScriptContext2_Enable();
sub_8055F88();
sub_807DC18();
TryFadeOutOldMapMusic();
WarpFadeOutScreen();
PlayRainStoppingSoundEffect();
PlaySE(SE_KAIDAN);
gFieldCallback = sub_807DF64;
@@ -541,8 +541,8 @@ void DoWarp(void)
void DoDiveWarp(void)
{
ScriptContext2_Enable();
sub_8055F88();
sub_807DC18();
TryFadeOutOldMapMusic();
WarpFadeOutScreen();
PlayRainStoppingSoundEffect();
gFieldCallback = sub_807DF64;
CreateTask(sub_807E718, 10);
@@ -580,31 +580,31 @@ void sub_807E524(void)
void DoFallWarp(void)
{
DoDiveWarp();
gFieldCallback = sub_8084454;
gFieldCallback = FieldCB_FallWarpExit;
}
void sub_807E560(u8 a0)
{
ScriptContext2_Enable();
sub_8084784(a0, 10);
StartEscalatorWarp(a0, 10);
}
void sub_807E57C(void)
{
ScriptContext2_Enable();
sub_8084F2C(10);
StartLavaridgeGymB1FWarp(10);
}
void sub_807E58C(void)
{
ScriptContext2_Enable();
sub_80853CC(10);
StartLavaridgeGym1FWarp(10);
}
void sub_807E59C(void)
{
ScriptContext2_Enable();
sub_8055F88();
TryFadeOutOldMapMusic();
CreateTask(sub_807E784, 10);
gFieldCallback = sub_807DF94;
}
@@ -612,7 +612,7 @@ void sub_807E59C(void)
void sub_807E5C4(void)
{
ScriptContext2_Enable();
sub_807DC18();
WarpFadeOutScreen();
CreateTask(sub_807E718, 10);
gFieldCallback = nullsub_60;
}
@@ -641,8 +641,8 @@ static void sub_807E5EC(u8 taskId)
void DoCableClubWarp(void)
{
ScriptContext2_Enable();
sub_8055F88();
sub_807DC18();
TryFadeOutOldMapMusic();
WarpFadeOutScreen();
PlaySE(SE_KAIDAN);
CreateTask(sub_807E5EC, 10);
}
@@ -655,7 +655,7 @@ static void sub_807E678(u8 taskId)
case 0:
ClearLinkCallback_2();
FadeScreen(1, 0);
sub_8055F88();
TryFadeOutOldMapMusic();
PlaySE(SE_KAIDAN);
data[0]++;
break;
@@ -719,7 +719,7 @@ static void sub_807E784(u8 taskId)
case 1:
if (!sub_805DAD0())
{
sub_807DC18();
WarpFadeOutScreen();
task->data[0]++;
}
break;
@@ -773,14 +773,14 @@ static void sub_807E80C(u8 taskId)
}
break;
case 4:
sub_8055F88();
sub_807DC18();
TryFadeOutOldMapMusic();
WarpFadeOutScreen();
PlayRainStoppingSoundEffect();
task->data[0] = 0;
task->func = sub_807E718;
break;
case 5:
sub_8055F88();
TryFadeOutOldMapMusic();
PlayRainStoppingSoundEffect();
task->data[0] = 0;
task->func = sub_807E718;
@@ -808,7 +808,7 @@ static void sub_807E980(u8 taskId)
data[15]--;
else
{
sub_8055F88();
TryFadeOutOldMapMusic();
PlayRainStoppingSoundEffect();
playerSpr->oam.priority = 1;
sub_807EB64(data[1], &data[2], &data[3]);
@@ -822,7 +822,7 @@ static void sub_807E980(u8 taskId)
data[15]++;
if (data[15] >= 12)
{
sub_807DC18();
WarpFadeOutScreen();
data[0]++;
}
break;
@@ -906,7 +906,7 @@ static void sub_807EC34(u8 taskId)
break;
case 0:
Overworld_PlaySpecialMapMusic();
pal_fill_for_maplights();
WarpFadeInScreen();
ScriptContext2_Enable();
sub_807ECBC(&data[1], &data[2], &data[3], &data[4], &data[5]);
data[0]++;
+1 -1
View File
@@ -430,7 +430,7 @@ static void sub_807F45C(u8 taskId)
CopyWindowToVram(windowId, 1);
RemoveWindow(windowId);
palette_bg_faded_fill_black();
sub_807DC00();
FadeInFromBlack();
++gTasks[taskId].data[0];
break;
case 3:
+2 -2
View File
@@ -2389,13 +2389,13 @@ static void MoveDeoxysObject(u8 num)
gFieldEffectArguments[5] = 60;
else
gFieldEffectArguments[5] = 5;
FieldEffectStart(FLDEFF_UNK_43);
FieldEffectStart(FLDEFF_MOVE_DEOXYS_ROCK);
Overworld_SetMapObjTemplateCoords(1, sDeoxysCoords[num][0], sDeoxysCoords[num][1]);
}
static void Task_WaitDeoxysFieldEffect(u8 taskId)
{
if (!FieldEffectActiveListContains(FLDEFF_UNK_43))
if (!FieldEffectActiveListContains(FLDEFF_MOVE_DEOXYS_ROCK))
{
EnableBothScriptContexts();
DestroyTask(taskId);
+3 -3
View File
@@ -48,7 +48,7 @@ static void Task_FieldEffectShowMon_Init(u8 taskId)
u8 mapObjId;
ScriptContext2_Enable();
gPlayerAvatar.unk6 = TRUE;
gPlayerAvatar.preventStep = TRUE;
mapObjId = gPlayerAvatar.objectEventId;
if (!ObjectEventIsMovementOverridden(&gObjectEvents[mapObjId])
|| ObjectEventClearHeldMovementIfFinished(&gObjectEvents[mapObjId]))
@@ -62,7 +62,7 @@ static void Task_FieldEffectShowMon_Init(u8 taskId)
else
{
sub_805CB70();
ObjectEventSetHeldMovement(&gObjectEvents[mapObjId], MOVEMENT_ACTION_UNKNOWN_STEP_45);
ObjectEventSetHeldMovement(&gObjectEvents[mapObjId], MOVEMENT_ACTION_START_ANIM_IN_DIRECTION);
gTasks[taskId].func = Task_FieldEffectShowMon_WaitPlayerAnim;
}
}
@@ -100,7 +100,7 @@ static void Task_FieldEffectShowMon_WaitFldeff(u8 taskId)
static void Task_FieldEffectShowMon_Cleanup(u8 taskId)
{
FLDEFF_CALL_FUNC_IN_DATA();
gPlayerAvatar.unk6 = FALSE;
gPlayerAvatar.preventStep = FALSE;
DestroyTask(taskId);
}
+7 -7
View File
@@ -8,8 +8,8 @@
#include "event_scripts.h"
#include "constants/event_objects.h"
static void FldEff_UseStrength(void);
static void sub_80D08A8(void);
static void FieldCB_UseStrength(void);
static void ShowMonCB_UseStrength(void);
bool8 SetUpFieldMove_Strength(void)
{
@@ -21,25 +21,25 @@ bool8 SetUpFieldMove_Strength(void)
{
gSpecialVar_Result = GetCursorSelectionMonId();
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
gPostMenuFieldCallback = FldEff_UseStrength;
gPostMenuFieldCallback = FieldCB_UseStrength;
return TRUE;
}
}
static void FldEff_UseStrength(void)
static void FieldCB_UseStrength(void)
{
gFieldEffectArguments[0] = GetCursorSelectionMonId();
ScriptContext1_SetupScript(EventScript_FldEffStrength);
}
bool8 sub_80D0860(void)
bool8 FldEff_UseStrength(void)
{
u8 taskId = CreateFieldEffectShowMon();
FLDEFF_SET_FUNC_TO_DATA(sub_80D08A8);
FLDEFF_SET_FUNC_TO_DATA(ShowMonCB_UseStrength);
GetMonNickname(&gPlayerParty[gFieldEffectArguments[0]], gStringVar1);
return FALSE;
}
static void sub_80D08A8(void)
static void ShowMonCB_UseStrength(void)
{
FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH);
EnableBothScriptContexts();
+3 -3
View File
@@ -170,7 +170,7 @@ static void sub_80A103C(u8 taskId)
static void sub_80A1084(void)
{
sub_807DC00();
FadeInFromBlack();
CreateTask(sub_80A109C, 8);
}
@@ -223,7 +223,7 @@ static bool8 sub_80A1194(void)
{
FreezeObjectEvents();
ScriptContext2_Enable();
sub_807DC00();
FadeInFromBlack();
CreateTask(sub_80A11C0, 10);
gUnknown_2031DE0 = 0;
return TRUE;
@@ -646,7 +646,7 @@ static void sub_80A1C08(u8 taskId)
void sub_80A1C44(u8 taskId)
{
ResetInitialPlayerAvatarState();
sub_8085620();
StartEscapeRopeFieldEffect();
DestroyTask(taskId);
}
+2 -4
View File
@@ -20,6 +20,7 @@
#include "battle_controllers.h"
#include "scanline_effect.h"
#include "save_failed_screen.h"
#include "quest_log.h"
extern u32 intr_main[];
@@ -77,9 +78,6 @@ static IntrFunc * const sTimerIntrFunc = gIntrTable + 0x7;
EWRAM_DATA u8 gDecompressionBuffer[0x4000] = {0};
EWRAM_DATA u16 gTrainerId = 0;
extern bool8 gWirelessCommType;
extern bool8 gUnknown_3005E88;
static void UpdateLinkAndCallCallbacks(void);
static void InitMainCallbacks(void);
static void CallCallbacks(void);
@@ -178,7 +176,7 @@ static void InitMainCallbacks(void)
gSaveBlock2Ptr = &gSaveBlock2;
gSaveBlock1Ptr = &gSaveBlock1;
gSaveBlock2.encryptionKey = 0;
gUnknown_3005E88 = FALSE;
gUnknown_3005E88 = 0;
}
static void CallCallbacks(void)
+1 -1
View File
@@ -490,7 +490,7 @@ static void sub_80F83D0(u8 taskId)
case 1:
if (!IsDma3ManagerBusyWithBgCopy())
{
sub_807DC00();
FadeInFromBlack();
data[0]++;
}
break;
+4 -11
View File
@@ -1,5 +1,5 @@
#include "global.h"
#include "malloc.h"
#include "gflib.h"
#include "battle.h"
#include "battle_anim.h"
#include "battle_controllers.h"
@@ -7,7 +7,6 @@
#include "battle_interface.h"
#include "battle_tower.h"
#include "berry_pouch.h"
#include "bg.h"
#include "data.h"
#include "decompress.h"
#include "easy_chat.h"
@@ -15,11 +14,10 @@
#include "evolution_scene.h"
#include "field_effect.h"
#include "field_player_avatar.h"
#include "field_screen_effect.h"
#include "field_fadetransition.h"
#include "field_weather.h"
#include "fieldmap.h"
#include "fldeff.h"
#include "gpu_regs.h"
#include "graphics.h"
#include "help_system.h"
#include "item.h"
@@ -36,7 +34,6 @@
#include "new_menu_helpers.h"
#include "metatile_behavior.h"
#include "overworld.h"
#include "palette.h"
#include "party_menu.h"
#include "player_pc.h"
#include "pokedex.h"
@@ -50,19 +47,15 @@
#include "reshow_battle_screen.h"
#include "scanline_effect.h"
#include "script.h"
#include "sound.h"
#include "sprite.h"
#include "start_menu.h"
#include "string_util.h"
#include "strings.h"
#include "task.h"
#include "teachy_tv.h"
#include "text.h"
#include "text_window.h"
#include "tm_case.h"
#include "trade.h"
#include "union_room.h"
#include "window.h"
#include "constants/battle.h"
#include "constants/easy_chat.h"
#include "constants/field_effects.h"
@@ -4044,7 +4037,7 @@ static void Task_HandleFieldMoveExitAreaYesNoInput(u8 taskId)
bool8 FieldCallback_PrepareFadeInFromMenu(void)
{
sub_807DC00();
FadeInFromBlack();
CreateTask(Task_FieldMoveWaitForFade, 8);
return TRUE;
}
@@ -6361,7 +6354,7 @@ void ChoosePartyMonByMenuType(u8 menuType)
static bool8 CB2_FadeFromPartyMenu(void)
{
sub_807DC00();
FadeInFromBlack();
CreateTask(Task_PartyMenuWaitForFade, 10);
return TRUE;
}
+4 -4
View File
@@ -347,7 +347,7 @@ static void CB2_ReturnFromDepositMenu(void)
DrawDialogueFrame(0, TRUE);
taskId = CreateTask(Task_ReturnToItemStorageSubmenu, 0);
Task_CreateItemStorageSubmenu(taskId, 1);
sub_807DC00();
FadeInFromBlack();
}
static void Task_PlayerPcWithdrawItem(u8 taskId)
@@ -376,7 +376,7 @@ static void CB2_ReturnFromWithdrawMenu(void)
DrawDialogueFrame(0, TRUE);
taskId = CreateTask(Task_ReturnToItemStorageSubmenu, 0);
Task_CreateItemStorageSubmenu(taskId, 0);
sub_807DC00();
FadeInFromBlack();
}
static void Task_WithdrawItem_WaitFadeAndGoToItemStorage(u8 taskId)
@@ -590,7 +590,7 @@ static void CB2_ReturnToMailbox(void)
Task_DrawMailboxPcMenu(taskId);
else
DestroyTask(taskId);
sub_807DC00();
FadeInFromBlack();
}
static void CB2_SetCbToReturnToMailbox(void)
@@ -705,7 +705,7 @@ static void CB2_ReturnToMailboxPc_UpdateScrollVariables(void)
Task_DrawMailboxPcMenu(taskId);
else
DestroyTask(taskId);
sub_807DC00();
FadeInFromBlack();
}
void Mailbox_ReturnToMailListAfterDeposit(void)
+1 -1
View File
@@ -2761,7 +2761,7 @@ static bool8 TrySetTrainerBattleQuestLogEvent(u16 eventId, const u16 *eventData)
return FALSE;
sub_81138F8();
if (gUnknown_3005E88 || FlagGet(FLAG_SYS_GAME_CLEAR) || sub_81137E4(eventId, eventData) != TRUE)
if (gUnknown_3005E88 != 0 || FlagGet(FLAG_SYS_GAME_CLEAR) || sub_81137E4(eventId, eventData) != TRUE)
{
gUnknown_203B024.unk_00 = eventId;
memcpy(gUnknown_203B024.unk_04, eventData, 8);
+3 -3
View File
@@ -80,7 +80,7 @@ static void sub_8150530(void)
{
u8 taskId;
ScriptContext2_Enable();
gPlayerAvatar.unk6 = 1;
gPlayerAvatar.preventStep = TRUE;
taskId = CreateTask(sub_81505C4, 0xFF);
gTasks[taskId].data[0] = 0;
}
@@ -156,13 +156,13 @@ static void sub_8150708(void)
static void sub_815077C(void)
{
FieldEffectStart(FLDEFF_UNK_41);
FieldEffectStart(FLDEFF_USE_VS_SEEKER);
CreateTask(sub_8150794, 0x00);
}
static void sub_8150794(u8 taskId)
{
if (!FieldEffectActiveListContains(0x41))
if (!FieldEffectActiveListContains(FLDEFF_USE_VS_SEEKER))
{
UnfreezeObjectEvents();
ScriptContext2_Disable();
+1 -1
View File
@@ -4395,5 +4395,5 @@ static void sub_80C527C(u16 mapsec)
{
warp1_set_2(sMapsecToSpawn[idx][0], sMapsecToSpawn[idx][1], -1);
}
sub_80842C8();
ReturnToFieldFromFlyMapSelect();
}
+4 -4
View File
@@ -1022,7 +1022,7 @@ static void Task_ScriptShowMonPic(u8 taskId)
case 1:
break;
case 2:
sub_8083A5C(&gSprites[task->data[2]], task->data[2]);
FreeResourcesAndDestroySprite(&gSprites[task->data[2]], task->data[2]);
task->data[0]++;
break;
case 3:
@@ -1040,7 +1040,7 @@ bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y)
return TRUE;
if (FindTaskIdByFunc(Task_ScriptShowMonPic) != 0xFF)
return FALSE;
spriteId = sub_8083970(species, 8 * x + 40, 8 * y + 40, FALSE);
spriteId = CreateMonSprite_PicBox(species, 8 * x + 40, 8 * y + 40, FALSE);
taskId = CreateTask(Task_ScriptShowMonPic, 80);
gTasks[taskId].data[5] = CreateWindowFromRect(x, y, 8, 8);
gTasks[taskId].data[0] = 0;
@@ -1082,7 +1082,7 @@ void sub_809D424(void)
case 0:
case 1:
case 2:
sub_8083A5C(&gSprites[task->data[2]], task->data[2]);
FreeResourcesAndDestroySprite(&gSprites[task->data[2]], task->data[2]);
DestroyScriptMenuWindow(task->data[5]);
DestroyTask(taskId);
break;
@@ -1183,7 +1183,7 @@ void QLPlaybackCB_DestroyScriptMenuMonPicSprites(void)
{
data = gTasks[taskId].data;
if (data[0] < 2)
sub_8083A5C(&gSprites[data[2]], data[2]);
FreeResourcesAndDestroySprite(&gSprites[data[2]], data[2]);
}
taskId = FindTaskIdByFunc(Task_WaitMuseumFossilPic);
if (taskId != 0xFF)
+1 -1
View File
@@ -295,7 +295,7 @@ static void Task_Seagallop_1(u8 taskId)
if (++task->data[1] == 140)
{
Overworld_FadeOutMapMusic();
sub_807DC18();
WarpFadeOutScreen();
task->func = Task_Seagallop_2;
}
}
+1 -1
View File
@@ -336,7 +336,7 @@ static void Task_GoToBuyOrSellMenu(u8 taskId)
static void MapPostLoadHook_ReturnToShopMenu(void)
{
sub_807DC00();
FadeInFromBlack();
CreateTask(Task_ReturnToShopMenu, 8);
}
+2 -2
View File
@@ -748,7 +748,7 @@ void Task_VsSeeker_0(u8 taskId)
else if (respval == 2)
{
ItemUse_SetQuestLogEvent(QL_EVENT_USED_ITEM, 0, gSpecialVar_ItemId, 0xffff);
FieldEffectStart(FLDEFF_UNK_41); // TODO: name this enum
FieldEffectStart(FLDEFF_USE_VS_SEEKER);
gTasks[taskId].func = Task_VsSeeker_1;
gTasks[taskId].data[0] = 15;
}
@@ -774,7 +774,7 @@ static void Task_VsSeeker_2(u8 taskId)
data[2]++;
}
if (!FieldEffectActiveListContains(FLDEFF_UNK_41))
if (!FieldEffectActiveListContains(FLDEFF_USE_VS_SEEKER))
{
data[1] = 0;
data[2] = 0;