finished fldeff_sweetscent

This commit is contained in:
jiangzhengwenjz
2019-06-29 06:38:36 +08:00
parent d09d78dca3
commit 38febc8baf
14 changed files with 121 additions and 273 deletions
+1 -1
View File
@@ -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
View File
@@ -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
-262
View File
@@ -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.
+3 -3
View File
@@ -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
+1 -1
View File
@@ -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
+1
View File
@@ -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
+1
View File
@@ -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
+2
View File
@@ -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
+3
View File
@@ -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
View File
@@ -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];
+1
View File
@@ -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
View File
@@ -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);
+102
View File
@@ -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
View File
@@ -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