finished fldeff_sweetscent
This commit is contained in:
@@ -137,7 +137,7 @@ _080D09AC: .4byte gTasks
|
||||
Transition_Phase1: @ 80D09B0
|
||||
push {r4,lr}
|
||||
adds r4, r0, 0
|
||||
bl sub_807B05C
|
||||
bl SetWeatherScreenFadeOut
|
||||
ldr r0, _080D09DC @ =gPlttBufferFaded
|
||||
ldr r1, _080D09E0 @ =gPlttBufferUnfaded
|
||||
ldr r2, _080D09E4 @ =0x04000100
|
||||
|
||||
+3
-3
@@ -2672,8 +2672,8 @@ _0807B054: .4byte gUnknown_2037F34
|
||||
_0807B058: .4byte 0x000006d3
|
||||
thumb_func_end sub_807B048
|
||||
|
||||
thumb_func_start sub_807B05C
|
||||
sub_807B05C: @ 807B05C
|
||||
thumb_func_start SetWeatherScreenFadeOut
|
||||
SetWeatherScreenFadeOut: @ 807B05C
|
||||
ldr r0, _0807B068 @ =gUnknown_2037F34
|
||||
ldr r1, _0807B06C @ =0x000006c6
|
||||
adds r0, r1
|
||||
@@ -2683,7 +2683,7 @@ sub_807B05C: @ 807B05C
|
||||
.align 2, 0
|
||||
_0807B068: .4byte gUnknown_2037F34
|
||||
_0807B06C: .4byte 0x000006c6
|
||||
thumb_func_end sub_807B05C
|
||||
thumb_func_end SetWeatherScreenFadeOut
|
||||
|
||||
thumb_func_start sub_807B070
|
||||
sub_807B070: @ 807B070
|
||||
|
||||
@@ -1,262 +0,0 @@
|
||||
.include "asm/macros.inc"
|
||||
.include "constants/constants.inc"
|
||||
|
||||
.syntax unified
|
||||
|
||||
.text
|
||||
|
||||
thumb_func_start sub_80DE0B4
|
||||
sub_80DE0B4: @ 80DE0B4
|
||||
push {lr}
|
||||
ldr r1, _080DE0C4 @ =gUnknown_203B0A0
|
||||
movs r0, 0
|
||||
strb r0, [r1, 0x9]
|
||||
bl hm2_sweet_scent
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080DE0C4: .4byte gUnknown_203B0A0
|
||||
thumb_func_end sub_80DE0B4
|
||||
|
||||
thumb_func_start sub_80DE0C8
|
||||
sub_80DE0C8: @ 80DE0C8
|
||||
ldr r1, _080DE0D8 @ =gFieldCallback2
|
||||
ldr r0, _080DE0DC @ =FieldCallback_PrepareFadeInFromMenu
|
||||
str r0, [r1]
|
||||
ldr r1, _080DE0E0 @ =gPostMenuFieldCallback
|
||||
ldr r0, _080DE0E4 @ =hm2_sweet_scent
|
||||
str r0, [r1]
|
||||
movs r0, 0x1
|
||||
bx lr
|
||||
.align 2, 0
|
||||
_080DE0D8: .4byte gFieldCallback2
|
||||
_080DE0DC: .4byte FieldCallback_PrepareFadeInFromMenu
|
||||
_080DE0E0: .4byte gPostMenuFieldCallback
|
||||
_080DE0E4: .4byte hm2_sweet_scent
|
||||
thumb_func_end sub_80DE0C8
|
||||
|
||||
thumb_func_start hm2_sweet_scent
|
||||
hm2_sweet_scent: @ 80DE0E8
|
||||
push {lr}
|
||||
movs r0, 0x33
|
||||
bl FieldEffectStart
|
||||
bl GetCursorSelectionMonId
|
||||
ldr r1, _080DE100 @ =gFieldEffectArguments
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
str r0, [r1]
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080DE100: .4byte gFieldEffectArguments
|
||||
thumb_func_end hm2_sweet_scent
|
||||
|
||||
thumb_func_start FldEff_SweetScent
|
||||
FldEff_SweetScent: @ 80DE104
|
||||
push {lr}
|
||||
bl sub_807B05C
|
||||
bl oei_task_add
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, _080DE12C @ =gTasks
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2
|
||||
ldr r2, _080DE130 @ =sub_80DE134
|
||||
lsrs r0, r2, 16
|
||||
strh r0, [r1, 0x18]
|
||||
strh r2, [r1, 0x1A]
|
||||
movs r0, 0
|
||||
pop {r1}
|
||||
bx r1
|
||||
.align 2, 0
|
||||
_080DE12C: .4byte gTasks
|
||||
_080DE130: .4byte sub_80DE134
|
||||
thumb_func_end FldEff_SweetScent
|
||||
|
||||
thumb_func_start sub_80DE134
|
||||
sub_80DE134: @ 80DE134
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x4
|
||||
movs r0, 0xE5
|
||||
bl PlaySE
|
||||
ldr r4, _080DE1B8 @ =gUnknown_203AAB0
|
||||
movs r0, 0x80
|
||||
lsls r0, 3
|
||||
bl Alloc
|
||||
adds r1, r0, 0
|
||||
str r1, [r4]
|
||||
ldr r4, _080DE1BC @ =gPlttBufferUnfaded
|
||||
movs r5, 0x80
|
||||
lsls r5, 1
|
||||
adds r0, r4, 0
|
||||
adds r2, r5, 0
|
||||
bl CpuFastSet
|
||||
ldr r0, _080DE1C0 @ =gPlttBufferFaded
|
||||
adds r1, r4, 0
|
||||
adds r2, r5, 0
|
||||
bl CpuFastSet
|
||||
bl GetPlayerAvatarObjectId
|
||||
ldr r2, _080DE1C4 @ =gSprites
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
lsls r1, r0, 4
|
||||
adds r1, r0
|
||||
lsls r1, 2
|
||||
adds r1, r2
|
||||
ldrb r1, [r1, 0x5]
|
||||
lsrs r1, 4
|
||||
adds r1, 0x10
|
||||
movs r0, 0x1
|
||||
lsls r0, r1
|
||||
mvns r0, r0
|
||||
movs r1, 0x1F
|
||||
str r1, [sp]
|
||||
movs r1, 0x4
|
||||
movs r2, 0
|
||||
movs r3, 0x8
|
||||
bl BeginNormalPaletteFade
|
||||
ldr r0, _080DE1C8 @ =sub_80DE1D0
|
||||
movs r1, 0
|
||||
bl CreateTask
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
ldr r2, _080DE1CC @ =gTasks
|
||||
lsls r1, r0, 2
|
||||
adds r1, r0
|
||||
lsls r1, 3
|
||||
adds r1, r2
|
||||
movs r0, 0
|
||||
strh r0, [r1, 0x8]
|
||||
movs r0, 0x33
|
||||
bl FieldEffectActiveListRemove
|
||||
add sp, 0x4
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080DE1B8: .4byte gUnknown_203AAB0
|
||||
_080DE1BC: .4byte gPlttBufferUnfaded
|
||||
_080DE1C0: .4byte gPlttBufferFaded
|
||||
_080DE1C4: .4byte gSprites
|
||||
_080DE1C8: .4byte sub_80DE1D0
|
||||
_080DE1CC: .4byte gTasks
|
||||
thumb_func_end sub_80DE134
|
||||
|
||||
thumb_func_start sub_80DE1D0
|
||||
sub_80DE1D0: @ 80DE1D0
|
||||
push {r4-r7,lr}
|
||||
sub sp, 0x4
|
||||
lsls r0, 24
|
||||
lsrs r4, r0, 24
|
||||
lsls r0, r4, 2
|
||||
adds r0, r4
|
||||
lsls r5, r0, 3
|
||||
ldr r6, _080DE21C @ =gTasks+0x8
|
||||
adds r2, r5, r6
|
||||
ldr r0, _080DE220 @ =gPaletteFade
|
||||
ldrb r1, [r0, 0x7]
|
||||
movs r0, 0x80
|
||||
ands r0, r1
|
||||
lsls r0, 24
|
||||
lsrs r1, r0, 24
|
||||
cmp r1, 0
|
||||
bne _080DE26C
|
||||
ldrh r3, [r2]
|
||||
movs r7, 0
|
||||
ldrsh r0, [r2, r7]
|
||||
cmp r0, 0x40
|
||||
bne _080DE268
|
||||
strh r1, [r2]
|
||||
bl sub_8082EC0
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
cmp r0, 0x1
|
||||
bne _080DE228
|
||||
ldr r0, _080DE224 @ =gUnknown_203AAB0
|
||||
ldr r0, [r0]
|
||||
bl Free
|
||||
adds r0, r4, 0
|
||||
bl DestroyTask
|
||||
b _080DE26C
|
||||
.align 2, 0
|
||||
_080DE21C: .4byte gTasks+0x8
|
||||
_080DE220: .4byte gPaletteFade
|
||||
_080DE224: .4byte gUnknown_203AAB0
|
||||
_080DE228:
|
||||
adds r0, r6, 0
|
||||
subs r0, 0x8
|
||||
adds r0, r5, r0
|
||||
ldr r1, _080DE260 @ =sub_80DE274
|
||||
str r1, [r0]
|
||||
bl GetPlayerAvatarObjectId
|
||||
ldr r2, _080DE264 @ =gSprites
|
||||
lsls r0, 24
|
||||
lsrs r0, 24
|
||||
lsls r1, r0, 4
|
||||
adds r1, r0
|
||||
lsls r1, 2
|
||||
adds r1, r2
|
||||
ldrb r1, [r1, 0x5]
|
||||
lsrs r1, 4
|
||||
adds r1, 0x10
|
||||
movs r0, 0x1
|
||||
lsls r0, r1
|
||||
mvns r0, r0
|
||||
movs r1, 0x1F
|
||||
str r1, [sp]
|
||||
movs r1, 0x4
|
||||
movs r2, 0x8
|
||||
movs r3, 0
|
||||
bl BeginNormalPaletteFade
|
||||
b _080DE26C
|
||||
.align 2, 0
|
||||
_080DE260: .4byte sub_80DE274
|
||||
_080DE264: .4byte gSprites
|
||||
_080DE268:
|
||||
adds r0, r3, 0x1
|
||||
strh r0, [r2]
|
||||
_080DE26C:
|
||||
add sp, 0x4
|
||||
pop {r4-r7}
|
||||
pop {r0}
|
||||
bx r0
|
||||
thumb_func_end sub_80DE1D0
|
||||
|
||||
thumb_func_start sub_80DE274
|
||||
sub_80DE274: @ 80DE274
|
||||
push {r4,r5,lr}
|
||||
lsls r0, 24
|
||||
lsrs r5, r0, 24
|
||||
ldr r0, _080DE2B0 @ =gPaletteFade
|
||||
ldrb r1, [r0, 0x7]
|
||||
movs r0, 0x80
|
||||
ands r0, r1
|
||||
cmp r0, 0
|
||||
bne _080DE2AA
|
||||
ldr r4, _080DE2B4 @ =gUnknown_203AAB0
|
||||
ldr r0, [r4]
|
||||
ldr r1, _080DE2B8 @ =gPlttBufferUnfaded
|
||||
movs r2, 0x80
|
||||
lsls r2, 1
|
||||
bl CpuFastSet
|
||||
bl sub_807B070
|
||||
ldr r0, [r4]
|
||||
bl Free
|
||||
ldr r0, _080DE2BC @ =gUnknown_81BE564
|
||||
bl ScriptContext1_SetupScript
|
||||
adds r0, r5, 0
|
||||
bl DestroyTask
|
||||
_080DE2AA:
|
||||
pop {r4,r5}
|
||||
pop {r0}
|
||||
bx r0
|
||||
.align 2, 0
|
||||
_080DE2B0: .4byte gPaletteFade
|
||||
_080DE2B4: .4byte gUnknown_203AAB0
|
||||
_080DE2B8: .4byte gPlttBufferUnfaded
|
||||
_080DE2BC: .4byte gUnknown_81BE564
|
||||
thumb_func_end sub_80DE274
|
||||
|
||||
.align 2, 0 @ Don't pad with nop.
|
||||
@@ -1020,8 +1020,8 @@ _08082EB6:
|
||||
_08082EBC: .4byte gSpecialVar_Result
|
||||
thumb_func_end sub_8082E54
|
||||
|
||||
thumb_func_start sub_8082EC0
|
||||
sub_8082EC0: @ 8082EC0
|
||||
thumb_func_start SweetScentWildEncounter
|
||||
SweetScentWildEncounter: @ 8082EC0
|
||||
push {r4,r5,lr}
|
||||
sub sp, 0x4
|
||||
mov r4, sp
|
||||
@@ -1108,7 +1108,7 @@ _08082F6E:
|
||||
pop {r4,r5}
|
||||
pop {r1}
|
||||
bx r1
|
||||
thumb_func_end sub_8082EC0
|
||||
thumb_func_end SweetScentWildEncounter
|
||||
|
||||
thumb_func_start sub_8082F78
|
||||
sub_8082F78: @ 8082F78
|
||||
|
||||
@@ -3575,7 +3575,7 @@ gUnknown_81BE2B7:: @ 81BE2B7
|
||||
gUnknown_81BE2FF:: @ 81BE2FF
|
||||
.incbin "baserom.gba", 0x1BE2FF, 0x265
|
||||
|
||||
gUnknown_81BE564:: @ 81BE564
|
||||
EventScript_FailSweetScent:: @ 81BE564
|
||||
.incbin "baserom.gba", 0x1BE564, 0x2A
|
||||
|
||||
Route2_EventScript_1BE58E:: @ 81BE58E
|
||||
|
||||
@@ -1145,5 +1145,6 @@ extern const u8 gUnknown_81BB0DF[];
|
||||
extern const u8 gUnknown_81BB156[];
|
||||
|
||||
extern const u8 EventScript_FldEffStrength[];
|
||||
extern const u8 EventScript_FailSweetScent[];
|
||||
|
||||
#endif //GUARD_EVENT_SCRIPTS_H
|
||||
|
||||
@@ -24,5 +24,6 @@ void sub_805DAE4(u8 direction);
|
||||
void SetPlayerAvatarTransitionFlags(u16 a);
|
||||
bool8 IsPlayerFacingSurfableFishableWater(void);
|
||||
void sub_805D2C0(u8 secondaryId);
|
||||
u8 GetPlayerAvatarObjectId(void);
|
||||
|
||||
#endif //GUARD_FIELD_PLAYER_AVATAR_H
|
||||
|
||||
@@ -14,5 +14,7 @@ void SetSav1WeatherFromCurrMapHeader(void);
|
||||
void sub_807B0C4(u16 *, u16 *, u32);
|
||||
void PlayRainStoppingSoundEffect(void);
|
||||
bool8 sub_807AA70(void);
|
||||
void SetWeatherScreenFadeOut(void);
|
||||
void sub_807B070(void);
|
||||
|
||||
#endif // GUARD_WEATHER_H
|
||||
|
||||
@@ -26,5 +26,8 @@ bool8 hm_prepare_dive_probably(void);
|
||||
void sub_80E56DC(u8 taskId);
|
||||
void sub_80E5724(u8 taskId);
|
||||
|
||||
// sweetscent
|
||||
bool8 SetUpFieldMove_SweetScent(void);
|
||||
bool8 FldEff_SweetScent(void);
|
||||
|
||||
#endif // GUARD_FLDEFF_H
|
||||
|
||||
+1
-1
@@ -43,7 +43,7 @@ struct PaletteFadeControl
|
||||
|
||||
extern struct PaletteFadeControl gPaletteFade;
|
||||
extern u32 gPlttBufferTransferPending;
|
||||
extern u8 gPaletteDecompressionBuffer[];
|
||||
extern u8 *gPaletteDecompressionBuffer;
|
||||
extern u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE];
|
||||
extern u16 gPlttBufferFaded[PLTT_BUFFER_SIZE];
|
||||
|
||||
|
||||
@@ -44,5 +44,6 @@ u16 GetLocalWaterMon(void);
|
||||
bool8 UpdateRepelCounter(void);
|
||||
void sub_8082740(u8);
|
||||
u8 GetUnownLetterByPersonalityLoByte(u32 personality);
|
||||
bool8 SweetScentWildEncounter(void);
|
||||
|
||||
#endif // GUARD_WILD_ENCOUNTER_H
|
||||
|
||||
+1
-1
@@ -202,7 +202,7 @@ SECTIONS {
|
||||
asm/field_effect_helpers.o(.text);
|
||||
asm/battle_anim_sound_tasks.o(.text);
|
||||
asm/battle_controller_safari.o(.text);
|
||||
asm/fldeff_sweetscent.o(.text);
|
||||
src/fldeff_sweetscent.o(.text);
|
||||
asm/battle_anim_effects_3.o(.text);
|
||||
asm/learn_move.o(.text);
|
||||
src/fldeff_softboiled.o(.text);
|
||||
|
||||
@@ -0,0 +1,102 @@
|
||||
#include "global.h"
|
||||
#include "field_player_avatar.h"
|
||||
#include "field_effect.h"
|
||||
#include "party_menu.h"
|
||||
#include "malloc.h"
|
||||
#include "event_data.h"
|
||||
#include "script.h"
|
||||
#include "fldeff.h"
|
||||
#include "event_scripts.h"
|
||||
#include "field_weather.h"
|
||||
#include "sound.h"
|
||||
#include "palette.h"
|
||||
#include "wild_encounter.h"
|
||||
#include "constants/songs.h"
|
||||
|
||||
static void FieldCallback_SweetScent(void);
|
||||
static void StartSweetScentFieldEffect(void);
|
||||
static void TrySweetScentEncounter(u8 taskId);
|
||||
static void FailSweetScentEncounter(u8 taskId);
|
||||
|
||||
static void Unused_StartSweetscentFldeff(void)
|
||||
{
|
||||
gUnknown_203B0A0.unk9 = 0;
|
||||
FieldCallback_SweetScent();
|
||||
}
|
||||
|
||||
bool8 SetUpFieldMove_SweetScent(void)
|
||||
{
|
||||
gFieldCallback2 = FieldCallback_PrepareFadeInFromMenu;
|
||||
gPostMenuFieldCallback = FieldCallback_SweetScent;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static void FieldCallback_SweetScent(void)
|
||||
{
|
||||
FieldEffectStart(FLDEFF_SWEET_SCENT);
|
||||
gFieldEffectArguments[0] = GetCursorSelectionMonId();
|
||||
}
|
||||
|
||||
bool8 FldEff_SweetScent(void)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
SetWeatherScreenFadeOut();
|
||||
taskId = oei_task_add();
|
||||
gTasks[taskId].data[8] = (u32)StartSweetScentFieldEffect >> 16;
|
||||
gTasks[taskId].data[9] = (u32)StartSweetScentFieldEffect;
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static void StartSweetScentFieldEffect(void)
|
||||
{
|
||||
u8 taskId;
|
||||
|
||||
PlaySE(SE_W260);
|
||||
gPaletteDecompressionBuffer = (u8 *)Alloc(0x400);
|
||||
CpuFastSet(gPlttBufferUnfaded, gPaletteDecompressionBuffer, 0x100);
|
||||
CpuFastSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x100);
|
||||
BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, RGB(31, 0, 0));
|
||||
taskId = CreateTask(TrySweetScentEncounter, 0);
|
||||
gTasks[taskId].data[0] = 0;
|
||||
FieldEffectActiveListRemove(FLDEFF_SWEET_SCENT);
|
||||
}
|
||||
|
||||
static void TrySweetScentEncounter(u8 taskId)
|
||||
{
|
||||
s16 *data = gTasks[taskId].data;
|
||||
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
if (data[0] == 64)
|
||||
{
|
||||
data[0] = 0;
|
||||
if (SweetScentWildEncounter() == TRUE)
|
||||
{
|
||||
Free(gPaletteDecompressionBuffer);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
else
|
||||
{
|
||||
gTasks[taskId].func = FailSweetScentEncounter;
|
||||
BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 8, 0, RGB(31, 0, 0));
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
data[0]++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
static void FailSweetScentEncounter(u8 taskId)
|
||||
{
|
||||
if (!gPaletteFade.active)
|
||||
{
|
||||
CpuFastSet(gPaletteDecompressionBuffer, gPlttBufferUnfaded, 0x100);
|
||||
sub_807B070();
|
||||
Free(gPaletteDecompressionBuffer);
|
||||
ScriptContext1_SetupScript(EventScript_FailSweetScent);
|
||||
DestroyTask(taskId);
|
||||
}
|
||||
}
|
||||
+1
-1
@@ -1091,7 +1091,7 @@ gUnknown_2039A34: @ 2039A34
|
||||
.include "src/save.o"
|
||||
.include "src/mystery_event_script.o"
|
||||
|
||||
gUnknown_203AAB0: @ 203AAB0
|
||||
gPaletteDecompressionBuffer: @ 203AAB0
|
||||
.space 0x4
|
||||
|
||||
gUnknown_203AAB4: @ 203AAB4
|
||||
|
||||
Reference in New Issue
Block a user