Fly field effect
This commit is contained in:
@@ -5,192 +5,6 @@
|
|||||||
|
|
||||||
.text
|
.text
|
||||||
|
|
||||||
thumb_func_start ReturnToFieldFromFlyMapSelect
|
|
||||||
ReturnToFieldFromFlyMapSelect: @ 80842C8
|
|
||||||
push {lr}
|
|
||||||
ldr r0, _080842DC @ =CB2_ReturnToField
|
|
||||||
bl SetMainCallback2
|
|
||||||
ldr r1, _080842E0 @ =gFieldCallback
|
|
||||||
ldr r0, _080842E4 @ =FieldCallback_Fly
|
|
||||||
str r0, [r1]
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080842DC: .4byte CB2_ReturnToField
|
|
||||||
_080842E0: .4byte gFieldCallback
|
|
||||||
_080842E4: .4byte FieldCallback_Fly
|
|
||||||
thumb_func_end ReturnToFieldFromFlyMapSelect
|
|
||||||
|
|
||||||
thumb_func_start FieldCallback_Fly
|
|
||||||
FieldCallback_Fly: @ 80842E8
|
|
||||||
push {lr}
|
|
||||||
bl FadeInFromBlack
|
|
||||||
ldr r0, _08084308 @ =Task_FlyOut
|
|
||||||
movs r1, 0
|
|
||||||
bl CreateTask
|
|
||||||
bl ScriptContext2_Enable
|
|
||||||
bl FreezeObjectEvents
|
|
||||||
ldr r1, _0808430C @ =gFieldCallback
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [r1]
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_08084308: .4byte Task_FlyOut
|
|
||||||
_0808430C: .4byte gFieldCallback
|
|
||||||
thumb_func_end FieldCallback_Fly
|
|
||||||
|
|
||||||
thumb_func_start Task_FlyOut
|
|
||||||
Task_FlyOut: @ 8084310
|
|
||||||
push {r4-r6,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r5, r0, 24
|
|
||||||
lsls r0, r5, 2
|
|
||||||
adds r0, r5
|
|
||||||
lsls r0, 3
|
|
||||||
ldr r1, _0808437C @ =gTasks
|
|
||||||
adds r4, r0, r1
|
|
||||||
movs r0, 0x8
|
|
||||||
ldrsh r6, [r4, r0]
|
|
||||||
cmp r6, 0
|
|
||||||
bne _08084350
|
|
||||||
bl IsWeatherNotFadingIn
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
beq _08084376
|
|
||||||
bl GetCursorSelectionMonId
|
|
||||||
ldr r1, _08084380 @ =gFieldEffectArguments
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
str r0, [r1]
|
|
||||||
cmp r0, 0x5
|
|
||||||
ble _08084344
|
|
||||||
str r6, [r1]
|
|
||||||
_08084344:
|
|
||||||
movs r0, 0x1F
|
|
||||||
bl FieldEffectStart
|
|
||||||
ldrh r0, [r4, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x8]
|
|
||||||
_08084350:
|
|
||||||
movs r0, 0x1F
|
|
||||||
bl FieldEffectActiveListContains
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08084376
|
|
||||||
bl Overworld_ResetStateAfterFly
|
|
||||||
bl WarpIntoMap
|
|
||||||
ldr r0, _08084384 @ =CB2_LoadMap
|
|
||||||
bl SetMainCallback2
|
|
||||||
ldr r1, _08084388 @ =gFieldCallback
|
|
||||||
ldr r0, _0808438C @ =FieldCallback_FlyArrive
|
|
||||||
str r0, [r1]
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl DestroyTask
|
|
||||||
_08084376:
|
|
||||||
pop {r4-r6}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0808437C: .4byte gTasks
|
|
||||||
_08084380: .4byte gFieldEffectArguments
|
|
||||||
_08084384: .4byte CB2_LoadMap
|
|
||||||
_08084388: .4byte gFieldCallback
|
|
||||||
_0808438C: .4byte FieldCallback_FlyArrive
|
|
||||||
thumb_func_end Task_FlyOut
|
|
||||||
|
|
||||||
thumb_func_start FieldCallback_FlyArrive
|
|
||||||
FieldCallback_FlyArrive: @ 8084390
|
|
||||||
push {r4,lr}
|
|
||||||
bl Overworld_PlaySpecialMapMusic
|
|
||||||
bl FadeInFromBlack
|
|
||||||
ldr r0, _080843E8 @ =Task_FlyIn
|
|
||||||
movs r1, 0
|
|
||||||
bl CreateTask
|
|
||||||
ldr r4, _080843EC @ =gObjectEvents
|
|
||||||
ldr r3, _080843F0 @ =gPlayerAvatar
|
|
||||||
ldrb r1, [r3, 0x5]
|
|
||||||
lsls r0, r1, 3
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r4
|
|
||||||
ldrb r1, [r0, 0x1]
|
|
||||||
movs r2, 0x20
|
|
||||||
orrs r1, r2
|
|
||||||
strb r1, [r0, 0x1]
|
|
||||||
ldrb r1, [r3]
|
|
||||||
movs r0, 0x8
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
beq _080843D2
|
|
||||||
ldrb r1, [r3, 0x5]
|
|
||||||
lsls r0, r1, 3
|
|
||||||
adds r0, r1
|
|
||||||
lsls r0, 2
|
|
||||||
adds r0, r4
|
|
||||||
movs r1, 0x3
|
|
||||||
bl ObjectEventTurn
|
|
||||||
_080843D2:
|
|
||||||
bl ScriptContext2_Enable
|
|
||||||
bl FreezeObjectEvents
|
|
||||||
ldr r1, _080843F4 @ =gFieldCallback
|
|
||||||
movs r0, 0
|
|
||||||
str r0, [r1]
|
|
||||||
pop {r4}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_080843E8: .4byte Task_FlyIn
|
|
||||||
_080843EC: .4byte gObjectEvents
|
|
||||||
_080843F0: .4byte gPlayerAvatar
|
|
||||||
_080843F4: .4byte gFieldCallback
|
|
||||||
thumb_func_end FieldCallback_FlyArrive
|
|
||||||
|
|
||||||
thumb_func_start Task_FlyIn
|
|
||||||
Task_FlyIn: @ 80843F8
|
|
||||||
push {r4,r5,lr}
|
|
||||||
lsls r0, 24
|
|
||||||
lsrs r0, 24
|
|
||||||
adds r5, r0, 0
|
|
||||||
lsls r0, r5, 2
|
|
||||||
adds r0, r5
|
|
||||||
lsls r0, 3
|
|
||||||
ldr r1, _0808444C @ =gTasks
|
|
||||||
adds r4, r0, r1
|
|
||||||
movs r1, 0x8
|
|
||||||
ldrsh r0, [r4, r1]
|
|
||||||
cmp r0, 0
|
|
||||||
bne _0808442A
|
|
||||||
ldr r0, _08084450 @ =gPaletteFade
|
|
||||||
ldrb r1, [r0, 0x7]
|
|
||||||
movs r0, 0x80
|
|
||||||
ands r0, r1
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08084444
|
|
||||||
movs r0, 0x20
|
|
||||||
bl FieldEffectStart
|
|
||||||
ldrh r0, [r4, 0x8]
|
|
||||||
adds r0, 0x1
|
|
||||||
strh r0, [r4, 0x8]
|
|
||||||
_0808442A:
|
|
||||||
movs r0, 0x20
|
|
||||||
bl FieldEffectActiveListContains
|
|
||||||
lsls r0, 24
|
|
||||||
cmp r0, 0
|
|
||||||
bne _08084444
|
|
||||||
bl ScriptContext2_Disable
|
|
||||||
bl UnfreezeObjectEvents
|
|
||||||
adds r0, r5, 0
|
|
||||||
bl DestroyTask
|
|
||||||
_08084444:
|
|
||||||
pop {r4,r5}
|
|
||||||
pop {r0}
|
|
||||||
bx r0
|
|
||||||
.align 2, 0
|
|
||||||
_0808444C: .4byte gTasks
|
|
||||||
_08084450: .4byte gPaletteFade
|
|
||||||
thumb_func_end Task_FlyIn
|
|
||||||
|
|
||||||
thumb_func_start FieldCB_FallWarpExit
|
thumb_func_start FieldCB_FallWarpExit
|
||||||
FieldCB_FallWarpExit: @ 8084454
|
FieldCB_FallWarpExit: @ 8084454
|
||||||
push {lr}
|
push {lr}
|
||||||
|
|||||||
@@ -9,7 +9,6 @@ void sub_80B0244(void);
|
|||||||
void sub_807E3EC(void);
|
void sub_807E3EC(void);
|
||||||
void DoOutwardBarnDoorWipe(void);
|
void DoOutwardBarnDoorWipe(void);
|
||||||
void Task_BarnDoorWipe(u8 taskId);
|
void Task_BarnDoorWipe(u8 taskId);
|
||||||
void FadeInFromBlack(void);
|
|
||||||
void sub_807F5F0(void);
|
void sub_807F5F0(void);
|
||||||
|
|
||||||
#endif // GUARD_FIELD_SCREEN_EFFECT_H
|
#endif // GUARD_FIELD_SCREEN_EFFECT_H
|
||||||
|
|||||||
@@ -177,6 +177,7 @@ void sub_805546C(u8 a0);
|
|||||||
bool32 sub_80582E0(void);
|
bool32 sub_80582E0(void);
|
||||||
bool32 sub_8058274(void);
|
bool32 sub_8058274(void);
|
||||||
u8 GetCurrentMapBattleScene(void);
|
u8 GetCurrentMapBattleScene(void);
|
||||||
|
void Overworld_ResetStateAfterFly(void);
|
||||||
|
|
||||||
extern u16 gHeldKeyCodeToSend;
|
extern u16 gHeldKeyCodeToSend;
|
||||||
|
|
||||||
|
|||||||
@@ -2,11 +2,15 @@
|
|||||||
#include "gflib.h"
|
#include "gflib.h"
|
||||||
#include "data.h"
|
#include "data.h"
|
||||||
#include "decompress.h"
|
#include "decompress.h"
|
||||||
|
#include "event_object_movement.h"
|
||||||
#include "field_effect.h"
|
#include "field_effect.h"
|
||||||
#include "field_effect_scripts.h"
|
#include "field_effect_scripts.h"
|
||||||
|
#include "field_fadetransition.h"
|
||||||
#include "field_weather.h"
|
#include "field_weather.h"
|
||||||
#include "overworld.h"
|
#include "overworld.h"
|
||||||
|
#include "party_menu.h"
|
||||||
#include "quest_log.h"
|
#include "quest_log.h"
|
||||||
|
#include "script.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include "trainer_pokemon_sprites.h"
|
#include "trainer_pokemon_sprites.h"
|
||||||
#include "constants/songs.h"
|
#include "constants/songs.h"
|
||||||
@@ -982,3 +986,83 @@ void SpriteCB_HallOfFameMonitor(struct Sprite * sprite)
|
|||||||
if (sprite->animEnded)
|
if (sprite->animEnded)
|
||||||
FieldEffectFreeGraphicsResources(sprite);
|
FieldEffectFreeGraphicsResources(sprite);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FieldCallback_Fly(void);
|
||||||
|
void Task_FlyOut(u8 taskId);
|
||||||
|
void FieldCallback_FlyArrive(void);
|
||||||
|
void Task_FlyIn(u8 taskId);
|
||||||
|
|
||||||
|
void ReturnToFieldFromFlyMapSelect(void)
|
||||||
|
{
|
||||||
|
SetMainCallback2(CB2_ReturnToField);
|
||||||
|
gFieldCallback = FieldCallback_Fly;
|
||||||
|
}
|
||||||
|
|
||||||
|
void FieldCallback_Fly(void)
|
||||||
|
{
|
||||||
|
FadeInFromBlack();
|
||||||
|
CreateTask(Task_FlyOut, 0);
|
||||||
|
ScriptContext2_Enable();
|
||||||
|
FreezeObjectEvents();
|
||||||
|
gFieldCallback = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Task_FlyOut(u8 taskId)
|
||||||
|
{
|
||||||
|
struct Task * task;
|
||||||
|
task = &gTasks[taskId];
|
||||||
|
if (task->data[0] == 0)
|
||||||
|
{
|
||||||
|
if (!IsWeatherNotFadingIn())
|
||||||
|
return;
|
||||||
|
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||||
|
if ((int)gFieldEffectArguments[0] >= PARTY_SIZE)
|
||||||
|
gFieldEffectArguments[0] = 0;
|
||||||
|
FieldEffectStart(FLDEFF_USE_FLY);
|
||||||
|
task->data[0]++;
|
||||||
|
}
|
||||||
|
if (!FieldEffectActiveListContains(FLDEFF_USE_FLY))
|
||||||
|
{
|
||||||
|
Overworld_ResetStateAfterFly();
|
||||||
|
WarpIntoMap();
|
||||||
|
SetMainCallback2(CB2_LoadMap);
|
||||||
|
gFieldCallback = FieldCallback_FlyArrive;
|
||||||
|
DestroyTask(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void FieldCallback_FlyArrive(void)
|
||||||
|
{
|
||||||
|
Overworld_PlaySpecialMapMusic();
|
||||||
|
FadeInFromBlack();
|
||||||
|
CreateTask(Task_FlyIn, 0);
|
||||||
|
gObjectEvents[gPlayerAvatar.objectEventId].invisible = TRUE;
|
||||||
|
if (gPlayerAvatar.flags & PLAYER_AVATAR_FLAG_SURFING)
|
||||||
|
{
|
||||||
|
ObjectEventTurn(&gObjectEvents[gPlayerAvatar.objectEventId], DIR_WEST);
|
||||||
|
}
|
||||||
|
ScriptContext2_Enable();
|
||||||
|
FreezeObjectEvents();
|
||||||
|
gFieldCallback = NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
void Task_FlyIn(u8 taskId)
|
||||||
|
{
|
||||||
|
struct Task *task;
|
||||||
|
task = &gTasks[taskId];
|
||||||
|
if (task->data[0] == 0)
|
||||||
|
{
|
||||||
|
if (gPaletteFade.active)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
FieldEffectStart(FLDEFF_FLY_IN);
|
||||||
|
task->data[0]++;
|
||||||
|
}
|
||||||
|
if (!FieldEffectActiveListContains(FLDEFF_FLY_IN))
|
||||||
|
{
|
||||||
|
ScriptContext2_Disable();
|
||||||
|
UnfreezeObjectEvents();
|
||||||
|
DestroyTask(taskId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
+2
-9
@@ -1,5 +1,5 @@
|
|||||||
#include "global.h"
|
#include "global.h"
|
||||||
#include "malloc.h"
|
#include "gflib.h"
|
||||||
#include "battle.h"
|
#include "battle.h"
|
||||||
#include "battle_anim.h"
|
#include "battle_anim.h"
|
||||||
#include "battle_controllers.h"
|
#include "battle_controllers.h"
|
||||||
@@ -7,7 +7,6 @@
|
|||||||
#include "battle_interface.h"
|
#include "battle_interface.h"
|
||||||
#include "battle_tower.h"
|
#include "battle_tower.h"
|
||||||
#include "berry_pouch.h"
|
#include "berry_pouch.h"
|
||||||
#include "bg.h"
|
|
||||||
#include "data.h"
|
#include "data.h"
|
||||||
#include "decompress.h"
|
#include "decompress.h"
|
||||||
#include "easy_chat.h"
|
#include "easy_chat.h"
|
||||||
@@ -15,11 +14,10 @@
|
|||||||
#include "evolution_scene.h"
|
#include "evolution_scene.h"
|
||||||
#include "field_effect.h"
|
#include "field_effect.h"
|
||||||
#include "field_player_avatar.h"
|
#include "field_player_avatar.h"
|
||||||
#include "field_screen_effect.h"
|
#include "field_fadetransition.h"
|
||||||
#include "field_weather.h"
|
#include "field_weather.h"
|
||||||
#include "fieldmap.h"
|
#include "fieldmap.h"
|
||||||
#include "fldeff.h"
|
#include "fldeff.h"
|
||||||
#include "gpu_regs.h"
|
|
||||||
#include "graphics.h"
|
#include "graphics.h"
|
||||||
#include "help_system.h"
|
#include "help_system.h"
|
||||||
#include "item.h"
|
#include "item.h"
|
||||||
@@ -36,7 +34,6 @@
|
|||||||
#include "new_menu_helpers.h"
|
#include "new_menu_helpers.h"
|
||||||
#include "metatile_behavior.h"
|
#include "metatile_behavior.h"
|
||||||
#include "overworld.h"
|
#include "overworld.h"
|
||||||
#include "palette.h"
|
|
||||||
#include "party_menu.h"
|
#include "party_menu.h"
|
||||||
#include "player_pc.h"
|
#include "player_pc.h"
|
||||||
#include "pokedex.h"
|
#include "pokedex.h"
|
||||||
@@ -50,19 +47,15 @@
|
|||||||
#include "reshow_battle_screen.h"
|
#include "reshow_battle_screen.h"
|
||||||
#include "scanline_effect.h"
|
#include "scanline_effect.h"
|
||||||
#include "script.h"
|
#include "script.h"
|
||||||
#include "sound.h"
|
|
||||||
#include "sprite.h"
|
|
||||||
#include "start_menu.h"
|
#include "start_menu.h"
|
||||||
#include "string_util.h"
|
#include "string_util.h"
|
||||||
#include "strings.h"
|
#include "strings.h"
|
||||||
#include "task.h"
|
#include "task.h"
|
||||||
#include "teachy_tv.h"
|
#include "teachy_tv.h"
|
||||||
#include "text.h"
|
|
||||||
#include "text_window.h"
|
#include "text_window.h"
|
||||||
#include "tm_case.h"
|
#include "tm_case.h"
|
||||||
#include "trade.h"
|
#include "trade.h"
|
||||||
#include "union_room.h"
|
#include "union_room.h"
|
||||||
#include "window.h"
|
|
||||||
#include "constants/battle.h"
|
#include "constants/battle.h"
|
||||||
#include "constants/easy_chat.h"
|
#include "constants/easy_chat.h"
|
||||||
#include "constants/field_effects.h"
|
#include "constants/field_effects.h"
|
||||||
|
|||||||
Reference in New Issue
Block a user