diff options
author | Diegoisawesome <Diegoisawesome@users.noreply.github.com> | 2018-02-14 22:23:11 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-02-14 22:23:11 -0600 |
commit | fcf3f97da94515a34eda2dc1b564f4bc01adc383 (patch) | |
tree | 1597ce7332dcd28b247ad1a7f13f8dc00cf48408 | |
parent | e706d89ff1af46df3fcee60e08d80990f2a8a681 (diff) | |
parent | 2fb78b5ca8e24e895b66170806871d60164df554 (diff) |
Merge pull request #210 from KDSKardabox/master
[Ready to Merge] fldeff_strength.s, fldeff_sweetscent.s
-rw-r--r-- | asm/fldeff_strength.s | 93 | ||||
-rw-r--r-- | asm/fldeff_sweetscent.s | 220 | ||||
-rw-r--r-- | data/party_menu.s | 2 | ||||
-rw-r--r-- | include/event_scripts.h | 3 | ||||
-rw-r--r-- | include/field_effect.h | 2 | ||||
-rw-r--r-- | include/field_player_avatar.h | 1 | ||||
-rw-r--r-- | include/field_screen.h | 2 | ||||
-rw-r--r-- | include/fldeff_groundshake.h | 7 | ||||
-rw-r--r-- | include/rom6.h | 2 | ||||
-rw-r--r-- | ld_script.txt | 4 | ||||
-rw-r--r-- | src/fldeff_strength.c | 44 | ||||
-rw-r--r-- | src/fldeff_sweetscent.c | 97 | ||||
-rw-r--r-- | src/fldeff_teleport.c | 7 |
13 files changed, 163 insertions, 321 deletions
diff --git a/asm/fldeff_strength.s b/asm/fldeff_strength.s deleted file mode 100644 index fdadd2aac..000000000 --- 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/asm/fldeff_sweetscent.s b/asm/fldeff_sweetscent.s deleted file mode 100644 index 2055f7069..000000000 --- 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/data/party_menu.s b/data/party_menu.s index 1319ce5d8..9eae24ab9 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/event_scripts.h b/include/event_scripts.h index a54e0e463..a835782ed 100644 --- a/include/event_scripts.h +++ b/include/event_scripts.h @@ -380,4 +380,7 @@ 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[]; +extern const u8 EventScript_290CAE[]; #endif //GUARD_EVENT_SCRIPTS_H diff --git a/include/field_effect.h b/include/field_effect.h index f59dfab9b..700256f30 100644 --- a/include/field_effect.h +++ b/include/field_effect.h @@ -80,5 +80,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/include/field_player_avatar.h b/include/field_player_avatar.h index 5b9a632fa..7517fb3b8 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/include/field_screen.h b/include/field_screen.h index cfc0d081f..02e0a0a91 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 000000000..685a6d27c --- /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/include/rom6.h b/include/rom6.h index f91b34b4a..058504fe2 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 7b1908fcd..b084d866e 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -193,7 +193,7 @@ SECTIONS { asm/pokedex_cry_screen.o(.text); src/coins.o(.text); src/landmark.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); @@ -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_strength.c b/src/fldeff_strength.c new file mode 100644 index 000000000..c1965d983 --- /dev/null +++ b/src/fldeff_strength.c @@ -0,0 +1,44 @@ +#include "global.h" +#include "event_data.h" +#include "event_scripts.h" +#include "field_effect.h" +#include "party_menu.h" +#include "rom6.h" +#include "script.h" +#include "task.h" + +void FldEff_UseStrength(void); +void sub_8145E74(void); + +bool8 SetUpFieldMove_Strength(void) +{ + if (npc_before_player_of_type(87) == TRUE) + { + gSpecialVar_Result = GetCursorSelectionMonId(); + gUnknown_03005DB0 = FieldCallback_Teleport; + gUnknown_0203CEEC = FldEff_UseStrength; + return TRUE; + } + return FALSE; +} + +void FldEff_UseStrength(void) +{ + gFieldEffectArguments[0] = GetCursorSelectionMonId(); + ScriptContext1_SetupScript(FieryPath_EventScript_2908FD); +} + +bool8 sub_8145E2C(void) +{ + u8 taskId = oei_task_add(); + gTasks[taskId].data[8] = (u32)sub_8145E74 >> 16; + gTasks[taskId].data[9] = (u32)sub_8145E74; + GetMonNickname(&gPlayerParty[gFieldEffectArguments[0]], gStringVar1); + return FALSE; +} + +void sub_8145E74(void) +{ + FieldEffectActiveListRemove(FLDEFF_USE_STRENGTH); + EnableBothScriptContexts(); +} diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c new file mode 100644 index 000000000..3dfcd640d --- /dev/null +++ b/src/fldeff_sweetscent.c @@ -0,0 +1,97 @@ +#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" +#include "script.h" +#include "sound.h" +#include "sprite.h" +#include "task.h" +#include "wild_encounter.h" + +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(SE_W230); + CpuFastSet(gPlttBufferUnfaded, gPaletteDecompressionBuffer, 0x100); + CpuFastSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x100); + 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); +} + +void sub_8159FEC(u8 taskId) +{ + if (!gPaletteFade.active) + { + sub_81BE72C(); + BlendPalettes(0x00000040, 8, RGB_RED); + 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, RGB_RED); + 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); + } +} diff --git a/src/fldeff_teleport.c b/src/fldeff_teleport.c index 5b3492db0..e675ef0a5 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; } |