From e375606810395d3941f2866505c6516949393d2b Mon Sep 17 00:00:00 2001 From: KDSKardabox Date: Tue, 13 Feb 2018 21:52:33 +0530 Subject: [PATCH 1/4] [Do not Merge] fldeff_strength.s --- asm/fldeff_strength.s | 88 +++++++++++++++++----------------- include/rom6.h | 2 + ld_script.txt | 1 + src/fldeff_strength.c | 109 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 156 insertions(+), 44 deletions(-) create mode 100644 src/fldeff_strength.c diff --git a/asm/fldeff_strength.s b/asm/fldeff_strength.s index fdadd2aacb..a0a3f932d6 100644 --- a/asm/fldeff_strength.s +++ b/asm/fldeff_strength.s @@ -5,51 +5,51 @@ .text - thumb_func_start hm_prepare_rocksmash -hm_prepare_rocksmash: @ 8145DC4 - push {r4,lr} - movs r0, 0x57 - bl npc_before_player_of_type - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - beq _08145DD8 - movs r0, 0 - b _08145DF2 -_08145DD8: - ldr r4, =gSpecialVar_Result - bl GetCursorSelectionMonId - lsls r0, 24 - lsrs r0, 24 - strh r0, [r4] - ldr r1, =gUnknown_03005DB0 - ldr r0, =FieldCallback_Teleport - str r0, [r1] - ldr r1, =gUnknown_0203CEEC - ldr r0, =sub_8145E0C - str r0, [r1] - movs r0, 0x1 -_08145DF2: - pop {r4} - pop {r1} - bx r1 - .pool - thumb_func_end hm_prepare_rocksmash +// thumb_func_start hm_prepare_rocksmash +//hm_prepare_rocksmash: @ 8145DC4 +// push {r4,lr} +// movs r0, 0x57 +// bl npc_before_player_of_type +// lsls r0, 24 +// lsrs r0, 24 +// cmp r0, 0x1 +// beq _08145DD8 +// movs r0, 0 +// b _08145DF2 +//_08145DD8: +// ldr r4, =gSpecialVar_Result +// bl GetCursorSelectionMonId +// lsls r0, 24 +// lsrs r0, 24 +// strh r0, [r4] +// ldr r1, =gUnknown_03005DB0 +// ldr r0, =FieldCallback_Teleport +// str r0, [r1] +// ldr r1, =gUnknown_0203CEEC +// ldr r0, =sub_8145E0C +// str r0, [r1] +// movs r0, 0x1 +//_08145DF2: +// pop {r4} +// pop {r1} +// bx r1 +// .pool +// thumb_func_end hm_prepare_rocksmash - thumb_func_start sub_8145E0C -sub_8145E0C: @ 8145E0C - push {lr} - bl GetCursorSelectionMonId - ldr r1, =gFieldEffectArguments - lsls r0, 24 - lsrs r0, 24 - str r0, [r1] - ldr r0, =FieryPath_EventScript_2908FD - bl ScriptContext1_SetupScript - pop {r0} - bx r0 - .pool - thumb_func_end sub_8145E0C +// thumb_func_start sub_8145E0C +//sub_8145E0C: @ 8145E0C +// push {lr} +// bl GetCursorSelectionMonId +// ldr r1, =gFieldEffectArguments +// lsls r0, 24 +// lsrs r0, 24 +// str r0, [r1] +// ldr r0, =FieryPath_EventScript_2908FD +// bl ScriptContext1_SetupScript +// pop {r0} +// bx r0 +// .pool +// thumb_func_end sub_8145E0C thumb_func_start sub_8145E2C sub_8145E2C: @ 8145E2C diff --git a/include/rom6.h b/include/rom6.h index f91b34b4a7..058504fe24 100644 --- a/include/rom6.h +++ b/include/rom6.h @@ -11,6 +11,8 @@ void UpdateBirchState(u16 days); void UpdateFrontierManiac(u16 days); void UpdateFrontierGambler(u16 days); void SetShoalItemFlag(u16 days); + +bool8 npc_before_player_of_type(u8); u8 oei_task_add(void); #endif //GUARD_ROM6_H diff --git a/ld_script.txt b/ld_script.txt index 838c468adb..fcecdd4beb 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -193,6 +193,7 @@ SECTIONS { asm/pokedex_cry_screen.o(.text); src/coins.o(.text); src/landmark.o(.text); + src/fldeff_strength.o(.text); asm/fldeff_strength.o(.text); src/battle_transition.o(.text); src/battle_controller_link_partner.o(.text); diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c new file mode 100644 index 0000000000..77fa0db359 --- /dev/null +++ b/src/fldeff_strength.c @@ -0,0 +1,109 @@ +#include "global.h" +#include "field_effect.h" +#include "rom6.h" +#include "party_menu.h" + +#include "script.h" + +extern u16 gSpecialVar_Result; +extern void (*gUnknown_0203CEEC)(void); +extern bool8 (*gUnknown_03005DB0)(void); +static void sub_8145E0C(void); + +extern u8 FieryPath_EventScript_2908FD[]; + +bool8 hm_prepare_rocksmash(void) +{ + if (npc_before_player_of_type(87) == TRUE) + { + gSpecialVar_Result = GetCursorSelectionMonId(); + gUnknown_03005DB0 = FieldCallback_Teleport; + gUnknown_0203CEEC = sub_8145E0C; + return TRUE; + } + return FALSE; +} + +static void sub_8145E0C(void) +{ + gFieldEffectArguments[0] = GetCursorSelectionMonId(); + ScriptContext1_SetupScript(FieryPath_EventScript_2908FD); +} + +/* +#include "braille_puzzles.h" +#include "field_effect.h" +#include "party_menu.h" +#include "pokemon.h" +#include "pokemon_menu.h" + +#include "script.h" +#include "task.h" +#include "text.h" + +static void sub_811AA18(void); +static void sub_811AA38(void); +static void sub_811AA9C(void); + +extern u8 gLastFieldPokeMenuOpened; +extern u16 gSpecialVar_Result; +extern void (*gFieldCallback)(void); +extern void (*gUnknown_03005CE4)(void); + +extern u8 S_UseStrength[]; + +bool8 SetUpFieldMove_Strength(void) +{ + if (ShouldDoBrailleStrengthEffect()) + { + gSpecialVar_Result = gLastFieldPokeMenuOpened; + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_811AA38; + } + else + { + if (npc_before_player_of_type(87) != TRUE) + return 0; + gSpecialVar_Result = gLastFieldPokeMenuOpened; + gFieldCallback = FieldCallback_Teleport; + gUnknown_03005CE4 = sub_811AA18; + } + + return TRUE; +} + +static void sub_811AA18(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + ScriptContext1_SetupScript(S_UseStrength); +} + +static void sub_811AA38(void) +{ + gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; + FieldEffectStart(FLDEFF_USE_STRENGTH); +} + +bool8 FldEff_UseStrength(void) +{ + u8 taskId = oei_task_add(); + + gTasks[taskId].data[8] = (u32)sub_811AA9C >> 16; + gTasks[taskId].data[9] = (u32)sub_811AA9C; + GetMonNickname(&gPlayerParty[gFieldEffectArguments[0]], gStringVar1); + return FALSE; +} + +static void sub_811AA9C(void) +{ + if (ShouldDoBrailleStrengthEffect()) + { + DoBrailleStrengthEffect(); + } + else + { + FieldEffectActiveListRemove(40); + EnableBothScriptContexts(); + } +} +*/ From c959dc11748f3548d5356526f29bc64e355deca9 Mon Sep 17 00:00:00 2001 From: KDSKardabox Date: Tue, 13 Feb 2018 23:08:54 +0530 Subject: [PATCH 2/4] Finish fldeff_strength.s --- asm/fldeff_strength.s | 93 ----------------------------------------- include/event_scripts.h | 2 + include/field_effect.h | 2 + ld_script.txt | 3 +- src/fldeff_strength.c | 91 ++++++---------------------------------- src/fldeff_teleport.c | 7 +--- 6 files changed, 20 insertions(+), 178 deletions(-) delete mode 100644 asm/fldeff_strength.s diff --git a/asm/fldeff_strength.s b/asm/fldeff_strength.s deleted file mode 100644 index a0a3f932d6..0000000000 --- a/asm/fldeff_strength.s +++ /dev/null @@ -1,93 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - -// thumb_func_start hm_prepare_rocksmash -//hm_prepare_rocksmash: @ 8145DC4 -// push {r4,lr} -// movs r0, 0x57 -// bl npc_before_player_of_type -// lsls r0, 24 -// lsrs r0, 24 -// cmp r0, 0x1 -// beq _08145DD8 -// movs r0, 0 -// b _08145DF2 -//_08145DD8: -// ldr r4, =gSpecialVar_Result -// bl GetCursorSelectionMonId -// lsls r0, 24 -// lsrs r0, 24 -// strh r0, [r4] -// ldr r1, =gUnknown_03005DB0 -// ldr r0, =FieldCallback_Teleport -// str r0, [r1] -// ldr r1, =gUnknown_0203CEEC -// ldr r0, =sub_8145E0C -// str r0, [r1] -// movs r0, 0x1 -//_08145DF2: -// pop {r4} -// pop {r1} -// bx r1 -// .pool -// thumb_func_end hm_prepare_rocksmash - -// thumb_func_start sub_8145E0C -//sub_8145E0C: @ 8145E0C -// push {lr} -// bl GetCursorSelectionMonId -// ldr r1, =gFieldEffectArguments -// lsls r0, 24 -// lsrs r0, 24 -// str r0, [r1] -// ldr r0, =FieryPath_EventScript_2908FD -// bl ScriptContext1_SetupScript -// pop {r0} -// bx r0 -// .pool -// thumb_func_end sub_8145E0C - - thumb_func_start sub_8145E2C -sub_8145E2C: @ 8145E2C - push {lr} - bl oei_task_add - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r2, =sub_8145E74 - lsrs r0, r2, 16 - strh r0, [r1, 0x18] - strh r2, [r1, 0x1A] - ldr r0, =gFieldEffectArguments - ldr r1, [r0] - movs r0, 0x64 - muls r0, r1 - ldr r1, =gPlayerParty - adds r0, r1 - ldr r1, =gStringVar1 - bl GetMonNickname - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end sub_8145E2C - - thumb_func_start sub_8145E74 -sub_8145E74: @ 8145E74 - push {lr} - movs r0, 0x28 - bl FieldEffectActiveListRemove - bl EnableBothScriptContexts - pop {r0} - bx r0 - thumb_func_end sub_8145E74 - - .align 2, 0 @ Don't pad with nop. diff --git a/include/event_scripts.h b/include/event_scripts.h index a54e0e463a..1038791019 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -380,4 +380,6 @@ extern const u8 SecretBase_RedCave1_Text_274E75[]; extern const u8 SecretBase_RedCave1_Text_2751E1[]; extern const u8 SecretBase_RedCave1_Text_2754F6[]; extern const u8 SecretBase_RedCave1_Text_2758CC[]; + +extern const u8 FieryPath_EventScript_2908FD[]; #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/field_effect.h b/include/field_effect.h index 7395270f91..6f5a9886f2 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -79,5 +79,7 @@ u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buf void sub_80B7FC8(void); void FieldEffectActiveListRemove(u8 id); void MultiplyInvertedPaletteRGBComponents(u16, u8, u8, u8); +extern void (*gUnknown_0203CEEC)(void); +extern bool8 (*gUnknown_03005DB0)(void); #endif //GUARD_FIELD_EFFECTS_H diff --git a/ld_script.txt b/ld_script.txt index fcecdd4beb..386d631271 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -193,8 +193,7 @@ SECTIONS { asm/pokedex_cry_screen.o(.text); src/coins.o(.text); src/landmark.o(.text); - src/fldeff_strength.o(.text); - asm/fldeff_strength.o(.text); + src/fldeff_strength.o(.text); src/battle_transition.o(.text); src/battle_controller_link_partner.o(.text); src/battle_message.o(.text); diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c index 77fa0db359..9f649f56cc 100644 --- a/src/fldeff_strength.c +++ b/src/fldeff_strength.c @@ -1,16 +1,14 @@ #include "global.h" +#include "event_data.h" +#include "event_scripts.h" #include "field_effect.h" -#include "rom6.h" #include "party_menu.h" - +#include "rom6.h" #include "script.h" +#include "task.h" -extern u16 gSpecialVar_Result; -extern void (*gUnknown_0203CEEC)(void); -extern bool8 (*gUnknown_03005DB0)(void); -static void sub_8145E0C(void); - -extern u8 FieryPath_EventScript_2908FD[]; +void sub_8145E0C(void); +void sub_8145E74(void); bool8 hm_prepare_rocksmash(void) { @@ -24,86 +22,23 @@ bool8 hm_prepare_rocksmash(void) return FALSE; } -static void sub_8145E0C(void) +void sub_8145E0C(void) { gFieldEffectArguments[0] = GetCursorSelectionMonId(); ScriptContext1_SetupScript(FieryPath_EventScript_2908FD); } -/* -#include "braille_puzzles.h" -#include "field_effect.h" -#include "party_menu.h" -#include "pokemon.h" -#include "pokemon_menu.h" - -#include "script.h" -#include "task.h" -#include "text.h" - -static void sub_811AA18(void); -static void sub_811AA38(void); -static void sub_811AA9C(void); - -extern u8 gLastFieldPokeMenuOpened; -extern u16 gSpecialVar_Result; -extern void (*gFieldCallback)(void); -extern void (*gUnknown_03005CE4)(void); - -extern u8 S_UseStrength[]; - -bool8 SetUpFieldMove_Strength(void) -{ - if (ShouldDoBrailleStrengthEffect()) - { - gSpecialVar_Result = gLastFieldPokeMenuOpened; - gFieldCallback = FieldCallback_Teleport; - gUnknown_03005CE4 = sub_811AA38; - } - else - { - if (npc_before_player_of_type(87) != TRUE) - return 0; - gSpecialVar_Result = gLastFieldPokeMenuOpened; - gFieldCallback = FieldCallback_Teleport; - gUnknown_03005CE4 = sub_811AA18; - } - - return TRUE; -} - -static void sub_811AA18(void) -{ - gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; - ScriptContext1_SetupScript(S_UseStrength); -} - -static void sub_811AA38(void) -{ - gFieldEffectArguments[0] = gLastFieldPokeMenuOpened; - FieldEffectStart(FLDEFF_USE_STRENGTH); -} - -bool8 FldEff_UseStrength(void) +bool8 sub_8145E2C(void) { u8 taskId = oei_task_add(); - - gTasks[taskId].data[8] = (u32)sub_811AA9C >> 16; - gTasks[taskId].data[9] = (u32)sub_811AA9C; + gTasks[taskId].data[8] = (u32)sub_8145E74 >> 16; + gTasks[taskId].data[9] = (u32)sub_8145E74; GetMonNickname(&gPlayerParty[gFieldEffectArguments[0]], gStringVar1); return FALSE; } -static void sub_811AA9C(void) +void sub_8145E74(void) { - if (ShouldDoBrailleStrengthEffect()) - { - DoBrailleStrengthEffect(); - } - else - { - FieldEffectActiveListRemove(40); - EnableBothScriptContexts(); - } + FieldEffectActiveListRemove(40); + EnableBothScriptContexts(); } -*/ diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c index 5b3492db03..e675ef0a58 100644 --- a/src/fldeff_teleport.c +++ b/src/fldeff_teleport.c @@ -7,17 +7,14 @@ #include "rom6.h" #include "task.h" -extern bool8 (*gUnknown_03005DB0)(void); -extern void (*gUnknown_0203CEEC)(void); - bool8 SetUpFieldMove_Teleport(void) { if (Overworld_MapTypeAllowsTeleportAndFly(gMapHeader.mapType) == TRUE) { gUnknown_03005DB0 = FieldCallback_Teleport; - gUnknown_0203CEEC = hm_teleport_run_dp02scr; + gUnknown_0203CEEC = hm_teleport_run_dp02scr; return TRUE; - } + } return FALSE; } From deeaac2bf17479b671d989cd50e236dd39f6e52c Mon Sep 17 00:00:00 2001 From: KDSKardabox Date: Wed, 14 Feb 2018 17:24:31 +0530 Subject: [PATCH 3/4] Decompile fldeff_sweetsecent.c --- asm/fldeff_sweetscent.s | 220 ---------------------------------- include/event_scripts.h | 1 + include/field_player_avatar.h | 1 + ld_script.txt | 2 +- src/fldeff_sweetscent.c | 98 +++++++++++++++ 5 files changed, 101 insertions(+), 221 deletions(-) delete mode 100644 asm/fldeff_sweetscent.s create mode 100644 src/fldeff_sweetscent.c diff --git a/asm/fldeff_sweetscent.s b/asm/fldeff_sweetscent.s deleted file mode 100644 index 2055f70696..0000000000 --- a/asm/fldeff_sweetscent.s +++ /dev/null @@ -1,220 +0,0 @@ - .include "asm/macros.inc" - .include "constants/constants.inc" - - .syntax unified - - .text - - thumb_func_start SetUpFieldMove_SweetScent -SetUpFieldMove_SweetScent: @ 8159EF0 - ldr r1, =gUnknown_03005DB0 - ldr r0, =FieldCallback_Teleport - str r0, [r1] - ldr r1, =gUnknown_0203CEEC - ldr r0, =hm2_sweet_scent - str r0, [r1] - movs r0, 0x1 - bx lr - .pool - thumb_func_end SetUpFieldMove_SweetScent - - thumb_func_start hm2_sweet_scent -hm2_sweet_scent: @ 8159F10 - push {lr} - movs r0, 0x33 - bl FieldEffectStart - bl GetCursorSelectionMonId - ldr r1, =gFieldEffectArguments - lsls r0, 24 - lsrs r0, 24 - str r0, [r1] - pop {r0} - bx r0 - .pool - thumb_func_end hm2_sweet_scent - - thumb_func_start FldEff_SweetScent -FldEff_SweetScent: @ 8159F2C - push {lr} - bl sub_80AC3D0 - bl oei_task_add - lsls r0, 24 - lsrs r0, 24 - ldr r2, =gTasks - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 3 - adds r1, r2 - ldr r2, =sub_8159F5C - lsrs r0, r2, 16 - strh r0, [r1, 0x18] - strh r2, [r1, 0x1A] - movs r0, 0 - pop {r1} - bx r1 - .pool - thumb_func_end FldEff_SweetScent - - thumb_func_start sub_8159F5C -sub_8159F5C: @ 8159F5C - push {r4,r5,lr} - sub sp, 0x4 - movs r0, 0xEC - bl PlaySE - ldr r5, =gPlttBufferUnfaded - ldr r1, =gPaletteDecompressionBuffer - movs r4, 0x80 - lsls r4, 1 - adds r0, r5, 0 - adds r2, r4, 0 - bl CpuFastSet - ldr r0, =gPlttBufferFaded - adds r1, r5, 0 - adds r2, r4, 0 - bl CpuFastSet - bl GetPlayerAvatarObjectId - ldr r2, =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, =sub_8159FEC - movs r1, 0 - bl CreateTask - lsls r0, 24 - lsrs r0, 24 - ldr r2, =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 - .pool - thumb_func_end sub_8159F5C - - thumb_func_start sub_8159FEC -sub_8159FEC: @ 8159FEC - push {r4-r6,lr} - sub sp, 0x4 - lsls r0, 24 - lsrs r5, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - lsls r0, 24 - lsrs r6, r0, 24 - cmp r6, 0 - bne _0815A088 - bl sub_81BE72C - movs r0, 0x40 - movs r1, 0x8 - movs r2, 0x1F - bl BlendPalettes - ldr r0, =gTasks - lsls r1, r5, 2 - adds r1, r5 - lsls r1, 3 - adds r4, r1, r0 - ldrh r1, [r4, 0x8] - movs r2, 0x8 - ldrsh r0, [r4, r2] - cmp r0, 0x40 - bne _0815A084 - strh r6, [r4, 0x8] - bl SweetScentWildEncounter - lsls r0, 24 - lsrs r0, 24 - cmp r0, 0x1 - bne _0815A044 - adds r0, r5, 0 - bl DestroyTask - b _0815A088 - .pool -_0815A044: - ldr r0, =sub_815A090 - str r0, [r4] - bl GetPlayerAvatarObjectId - ldr r2, =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 - bl sub_81BE6B8 - b _0815A088 - .pool -_0815A084: - adds r0, r1, 0x1 - strh r0, [r4, 0x8] -_0815A088: - add sp, 0x4 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8159FEC - - thumb_func_start sub_815A090 -sub_815A090: @ 815A090 - push {r4,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r0, =gPaletteFade - ldrb r1, [r0, 0x7] - movs r0, 0x80 - ands r0, r1 - cmp r0, 0 - bne _0815A0BE - ldr r0, =gPaletteDecompressionBuffer - ldr r1, =gPlttBufferUnfaded - movs r2, 0x80 - lsls r2, 1 - bl CpuFastSet - bl sub_80AC3E4 - ldr r0, =EventScript_290CAE - bl ScriptContext1_SetupScript - adds r0, r4, 0 - bl DestroyTask -_0815A0BE: - pop {r4} - pop {r0} - bx r0 - .pool - thumb_func_end sub_815A090 - - .align 2, 0 @ Don't pad with nop. - diff --git a/include/event_scripts.h b/include/event_scripts.h index 1038791019..a835782ed2 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -382,4 +382,5 @@ extern const u8 SecretBase_RedCave1_Text_2754F6[]; extern const u8 SecretBase_RedCave1_Text_2758CC[]; extern const u8 FieryPath_EventScript_2908FD[]; +extern const u8 EventScript_290CAE[]; #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/field_player_avatar.h b/include/field_player_avatar.h index 5b9a632fa3..7517fb3b85 100644 --- a/include/field_player_avatar.h +++ b/include/field_player_avatar.h @@ -5,6 +5,7 @@ void ClearPlayerAvatarInfo(void); void SetPlayerAvatarExtraStateTransition(u8, u8); u8 GetPlayerAvatarGenderByGraphicsId(u8); bool8 TestPlayerAvatarFlags(u8); +u8 GetPlayerAvatarObjectId(void); void PlayerGetDestCoords(s16 *, s16 *); u8 player_get_direction_lower_nybble(void); u8 player_get_direction_upper_nybble(void); diff --git a/ld_script.txt b/ld_script.txt index 386d631271..7b8e27e476 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -207,7 +207,7 @@ SECTIONS { asm/contest_ai.o(.text); asm/battle_anim_sound_tasks.o(.text); src/battle_controller_safari.o(.text); - asm/fldeff_sweetscent.o(.text); + src/fldeff_sweetscent.o(.text); asm/battle_anim_815A0D4.o(.text); asm/learn_move.o(.text); asm/fldeff_softboiled.o(.text); diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c new file mode 100644 index 0000000000..ee5a393433 --- /dev/null +++ b/src/fldeff_sweetscent.c @@ -0,0 +1,98 @@ +#include "global.h" +#include "event_data.h" +#include "event_scripts.h" +#include "field_effect.h" +#include "field_player_avatar.h" +#include "palette.h" +#include "party_menu.h" +#include "rom6.h" +#include "script.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "wild_encounter.h" + +extern void sub_81BE72C(void); +extern void sub_81BE6B8(void); +extern void sub_80AC3D0(void); +extern void sub_80AC3E4(void); + +void hm2_sweet_scent(void); +void sub_8159F5C(void); +void sub_8159FEC(u8 taskId); +void sub_815A090(u8 taskId); + +bool8 SetUpFieldMove_SweetScent(void) +{ + gUnknown_03005DB0 = FieldCallback_Teleport; + gUnknown_0203CEEC = hm2_sweet_scent; + return TRUE; +} + +void hm2_sweet_scent(void) +{ + FieldEffectStart(FLDEFF_SWEET_SCENT); + gFieldEffectArguments[0] = GetCursorSelectionMonId(); +} + +bool8 FldEff_SweetScent() +{ + u8 taskId; + + sub_80AC3D0(); + taskId = oei_task_add(); + gTasks[taskId].data[8] = (u32)sub_8159F5C >> 16; + gTasks[taskId].data[9] = (u32)sub_8159F5C; + return FALSE; +} + +void sub_8159F5C(void) +{ + u8 taskId; + + PlaySE(0xEC); + CpuFastSet(gPlttBufferUnfaded, gPaletteDecompressionBuffer, 0x100); + CpuFastSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x100); + BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, 0x1F); + taskId = CreateTask(sub_8159FEC, 0); + gTasks[taskId].data[0] = 0; + FieldEffectActiveListRemove(FLDEFF_SWEET_SCENT); +} + +void sub_8159FEC(u8 taskId) +{ + if (!gPaletteFade.active) + { + sub_81BE72C(); + BlendPalettes(64, 8, 0x1F); + if (gTasks[taskId].data[0] == 64) + { + gTasks[taskId].data[0] = 0; + if (SweetScentWildEncounter() == TRUE) + { + DestroyTask(taskId); + } + else + { + gTasks[taskId].func = sub_815A090; + BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 8, 0, 0x1F); + sub_81BE6B8(); + } + } + else + { + gTasks[taskId].data[0]++; + } + } +} + +void sub_815A090(u8 taskId) +{ + if (!gPaletteFade.active) + { + CpuFastSet(gPaletteDecompressionBuffer, gPlttBufferUnfaded, 0x100); + sub_80AC3E4(); + ScriptContext1_SetupScript(EventScript_290CAE); + DestroyTask(taskId); + } +} From 2fb78b5ca8e24e895b66170806871d60164df554 Mon Sep 17 00:00:00 2001 From: KDSKardabox Date: Thu, 15 Feb 2018 09:47:42 +0530 Subject: [PATCH 4/4] Fix reviewed points. --- data/party_menu.s | 2 +- include/field_screen.h | 2 ++ include/fldeff_groundshake.h | 7 +++++++ src/fldeff_strength.c | 10 +++++----- src/fldeff_sweetscent.c | 17 ++++++++--------- 5 files changed, 23 insertions(+), 15 deletions(-) create mode 100644 include/fldeff_groundshake.h diff --git a/data/party_menu.s b/data/party_menu.s index 1319ce5d80..9eae24ab9c 100644 --- a/data/party_menu.s +++ b/data/party_menu.s @@ -434,7 +434,7 @@ gUnknown_08615D9C:: @ 8615D9C .4byte sub_80D3718, 0x00000007 .4byte SetUpFieldMove_Flash, 0x0000000d .4byte sub_8135654, 0x0000000d - .4byte hm_prepare_rocksmash, 0x0000000d + .4byte SetUpFieldMove_Strength, 0x0000000d .4byte sub_81B5820, 0x00000008 .4byte sub_81B5884, 0x0000000d .4byte sub_81B5974, 0x0000000d diff --git a/include/field_screen.h b/include/field_screen.h index cfc0d081f5..02e0a0a918 100644 --- a/include/field_screen.h +++ b/include/field_screen.h @@ -10,5 +10,7 @@ void pal_fill_black(void); bool8 sub_80ABDFC(void); void sub_80AF168(void); void UpdateWeatherPerDay(u16 days); +void sub_80AC3D0(void); +void sub_80AC3E4(void); #endif //GUARD_FIELD_SCREEN_H diff --git a/include/fldeff_groundshake.h b/include/fldeff_groundshake.h new file mode 100644 index 0000000000..685a6d27cd --- /dev/null +++ b/include/fldeff_groundshake.h @@ -0,0 +1,7 @@ +#ifndef GUARD_FLDEFF_GROUNDSHAKE_H +#define GUARD_FLDEFF_GROUNDSHAKE_H + +void sub_81BE6B8(void); +void sub_81BE72C(void); + +#endif // GUARD_FLDEFF_GROUNDSHAKE_H diff --git a/src/fldeff_strength.c b/src/fldeff_strength.c index 9f649f56cc..c1965d9839 100644 --- a/src/fldeff_strength.c +++ b/src/fldeff_strength.c @@ -7,22 +7,22 @@ #include "script.h" #include "task.h" -void sub_8145E0C(void); +void FldEff_UseStrength(void); void sub_8145E74(void); -bool8 hm_prepare_rocksmash(void) +bool8 SetUpFieldMove_Strength(void) { if (npc_before_player_of_type(87) == TRUE) { gSpecialVar_Result = GetCursorSelectionMonId(); gUnknown_03005DB0 = FieldCallback_Teleport; - gUnknown_0203CEEC = sub_8145E0C; + gUnknown_0203CEEC = FldEff_UseStrength; return TRUE; } return FALSE; } -void sub_8145E0C(void) +void FldEff_UseStrength(void) { gFieldEffectArguments[0] = GetCursorSelectionMonId(); ScriptContext1_SetupScript(FieryPath_EventScript_2908FD); @@ -39,6 +39,6 @@ bool8 sub_8145E2C(void) void sub_8145E74(void) { - FieldEffectActiveListRemove(40); + FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH); EnableBothScriptContexts(); } diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c index ee5a393433..3dfcd640d9 100644 --- a/src/fldeff_sweetscent.c +++ b/src/fldeff_sweetscent.c @@ -1,8 +1,12 @@ #include "global.h" +#include "constants/rgb.h" +#include "constants/songs.h" #include "event_data.h" #include "event_scripts.h" #include "field_effect.h" #include "field_player_avatar.h" +#include "field_screen.h" +#include "fldeff_groundshake.h" #include "palette.h" #include "party_menu.h" #include "rom6.h" @@ -12,11 +16,6 @@ #include "task.h" #include "wild_encounter.h" -extern void sub_81BE72C(void); -extern void sub_81BE6B8(void); -extern void sub_80AC3D0(void); -extern void sub_80AC3E4(void); - void hm2_sweet_scent(void); void sub_8159F5C(void); void sub_8159FEC(u8 taskId); @@ -50,10 +49,10 @@ void sub_8159F5C(void) { u8 taskId; - PlaySE(0xEC); + PlaySE(SE_W230); CpuFastSet(gPlttBufferUnfaded, gPaletteDecompressionBuffer, 0x100); CpuFastSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x100); - BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, 0x1F); + BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, RGB_RED); taskId = CreateTask(sub_8159FEC, 0); gTasks[taskId].data[0] = 0; FieldEffectActiveListRemove(FLDEFF_SWEET_SCENT); @@ -64,7 +63,7 @@ void sub_8159FEC(u8 taskId) if (!gPaletteFade.active) { sub_81BE72C(); - BlendPalettes(64, 8, 0x1F); + BlendPalettes(0x00000040, 8, RGB_RED); if (gTasks[taskId].data[0] == 64) { gTasks[taskId].data[0] = 0; @@ -75,7 +74,7 @@ void sub_8159FEC(u8 taskId) else { gTasks[taskId].func = sub_815A090; - BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 8, 0, 0x1F); + BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 8, 0, RGB_RED); sub_81BE6B8(); } }