summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCameron Hall <cameronghall@cox.net>2018-02-16 22:51:19 -0600
committerCameron Hall <cameronghall@cox.net>2018-02-16 22:51:19 -0600
commit051af13fe7f92644f2bacc9c225dd7ff52b6cc56 (patch)
tree846b661819497ab3ba76bae238bc7f2f00771f9a /src
parent0c189f3efb02f9d8e485c55b36c1ed86883ea1fe (diff)
decompile more debug code
Diffstat (limited to 'src')
-rw-r--r--src/field/field_player_avatar.c221
-rw-r--r--src/field/fldeff_flash.c30
-rw-r--r--src/field/fldeff_secretpower.c128
-rw-r--r--src/field/party_menu.c1531
-rw-r--r--src/field/secret_base.c511
5 files changed, 667 insertions, 1754 deletions
diff --git a/src/field/field_player_avatar.c b/src/field/field_player_avatar.c
index a7594372d..079fe38d7 100644
--- a/src/field/field_player_avatar.c
+++ b/src/field/field_player_avatar.c
@@ -12,6 +12,7 @@
#include "constants/map_objects.h"
#include "menu.h"
#include "metatile_behavior.h"
+#include "new_game.h"
#include "party_menu.h"
#include "random.h"
#include "overworld.h"
@@ -32,9 +33,9 @@ static void npc_clear_strange_bits(struct MapObject *a);
static void MovePlayerAvatarUsingKeypadInput(u8 a, u16 b, u16 c);
static void PlayerAllowForcedMovementIfMovingSameDirection(void);
static bool8 TryDoMetatileBehaviorForcedMovement(void);
-/*static*/ u8 GetForcedMovementByMetatileBehavior(void);
+static u8 GetForcedMovementByMetatileBehavior(void);
static void MovePlayerNotOnBike(u8 a, u16 b);
-/*static*/ u8 CheckMovementInputNotOnBike(u8 a);
+static u8 CheckMovementInputNotOnBike(u8 a);
static u8 CheckForPlayerAvatarCollision(u8 a);
static u8 sub_8058EF0(s16 a, s16 b, u8 c);
static bool8 ShouldJumpLedge(s16 a, s16 b, u8 c);
@@ -51,6 +52,8 @@ static void sub_8059D60(struct MapObject *a);
static void StartStrengthAnim(u8 a, u8 b);
static void DoPlayerMatJump(void);
static void sub_805A06C(void);
+u8 debug_sub_805F2B0(u8);
+u8 debug_sub_805F2DC(u8);
static bool8 (*const gUnknown_0830FB58[])(u8) =
{
@@ -260,59 +263,16 @@ static void PlayerAllowForcedMovementIfMovingSameDirection(void)
gPlayerAvatar.flags &= ~PLAYER_AVATAR_FLAG_5;
}
-#if DEBUG
-__attribute__((naked))
-u8 TryDoMetatileBehaviorForcedMovement()
-{
- asm(
- " push {r4, lr}\n"
- " ldr r0, ._27 @ gUnknown_020297ED\n"
- " ldrb r0, [r0]\n"
- " cmp r0, #0\n"
- " beq ._25 @cond_branch\n"
- " ldr r0, ._27 + 4 @ gMain\n"
- " ldrh r1, [r0, #0x2c]\n"
- " mov r0, #0x80\n"
- " lsl r0, r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " beq ._25 @cond_branch\n"
- " mov r0, #0x0\n"
- " b ._26\n"
- "._28:\n"
- " .align 2, 0\n"
- "._27:\n"
- " .word gUnknown_020297ED\n"
- " .word gMain\n"
- "._25:\n"
- " ldr r4, ._29 @ gUnknown_0830FBA0\n"
- " bl GetForcedMovementByMetatileBehavior\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x16\n"
- " add r0, r0, r4\n"
- " ldr r0, [r0]\n"
- " bl _call_via_r0\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- "._26:\n"
- " pop {r4}\n"
- " pop {r1}\n"
- " bx r1\n"
- "._30:\n"
- " .align 2, 0\n"
- "._29:\n"
- " .word gUnknown_0830FBA0\n"
- "\n"
- );
-}
-#else
static bool8 TryDoMetatileBehaviorForcedMovement(void)
{
+#if DEBUG
+ if (gUnknown_020297ED != 0 && (gMain.heldKeys & 0x100))
+ return 0;
+#endif
return gUnknown_0830FBA0[GetForcedMovementByMetatileBehavior()]();
}
-#endif
-/*static*/ u8 GetForcedMovementByMetatileBehavior(void)
+static u8 GetForcedMovementByMetatileBehavior(void)
{
u8 i;
@@ -483,57 +443,16 @@ bool8 ForcedMovement_MuddySlope(void)
}
}
-#if DEBUG
-__attribute__((naked))
-void MovePlayerNotOnBike(u8 u81, u16 u161)
-{
- asm(
- " push {r4, r5, r6, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r2, r0, #0x18\n"
- " add r5, r2, #0\n"
- " lsl r1, r1, #0x10\n"
- " lsr r6, r1, #0x10\n"
- " ldr r0, ._84 @ gUnknown_020297ED\n"
- " ldrb r0, [r0]\n"
- " cmp r0, #0\n"
- " beq ._82 @cond_branch\n"
- " add r0, r2, #0\n"
- " bl debug_sub_805F2B0\n"
- " lsl r0, r0, #0x18\n"
- " cmp r0, #0\n"
- " bne ._83 @cond_branch\n"
- "._82:\n"
- " ldr r4, ._84 + 4 @ gUnknown_0830FBEC\n"
- " add r0, r5, #0\n"
- " bl CheckMovementInputNotOnBike\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x16\n"
- " add r0, r0, r4\n"
- " ldr r2, [r0]\n"
- " add r0, r5, #0\n"
- " add r1, r6, #0\n"
- " bl _call_via_r2\n"
- "._83:\n"
- " pop {r4, r5, r6}\n"
- " pop {r0}\n"
- " bx r0\n"
- "._85:\n"
- " .align 2, 0\n"
- "._84:\n"
- " .word gUnknown_020297ED\n"
- " .word gUnknown_0830FBEC\n"
- "\n"
- );
-}
-#else
static void MovePlayerNotOnBike(u8 direction, u16 heldKeys)
{
+#if DEBUG
+ if (gUnknown_020297ED != 0 && debug_sub_805F2B0(direction) != 0)
+ return;
+#endif
gUnknown_0830FBEC[CheckMovementInputNotOnBike(direction)](direction, heldKeys);
}
-#endif
-/*static*/ u8 CheckMovementInputNotOnBike(u8 direction)
+static u8 CheckMovementInputNotOnBike(u8 direction)
{
if (direction == DIR_NONE)
{
@@ -1857,96 +1776,24 @@ static void sub_805A954(void)
}
#if DEBUG
-__attribute__((naked))
-void debug_sub_805F2B0()
-{
- asm(
- " push {lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r2, r0, #0x18\n"
- " ldr r0, ._422 @ gMain\n"
- " ldrh r1, [r0, #0x2c]\n"
- " mov r0, #0x80\n"
- " lsl r0, r0, #0x1\n"
- " and r0, r0, r1\n"
- " cmp r0, #0\n"
- " bne ._420 @cond_branch\n"
- " mov r0, #0x0\n"
- " b ._421\n"
- "._423:\n"
- " .align 2, 0\n"
- "._422:\n"
- " .word gMain\n"
- "._420:\n"
- " add r0, r2, #0\n"
- " bl debug_sub_805F2DC\n"
- " lsl r0, r0, #0x18\n"
- " lsr r0, r0, #0x18\n"
- "._421:\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
-}
-
-__attribute__((naked))
-void debug_sub_805F2DC()
-{
- asm(
- " push {r4, lr}\n"
- " lsl r0, r0, #0x18\n"
- " lsr r4, r0, #0x18\n"
- " cmp r4, #0\n"
- " bne ._424 @cond_branch\n"
- " ldr r2, ._426 @ gMapObjects\n"
- " ldr r0, ._426 + 4 @ gPlayerAvatar\n"
- " ldrb r1, [r0, #0x5]\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r2\n"
- " ldrb r0, [r0, #0x18]\n"
- " lsr r0, r0, #0x4\n"
- " bl PlayerFaceDirection\n"
- " b ._430\n"
- "._427:\n"
- " .align 2, 0\n"
- "._426:\n"
- " .word gMapObjects\n"
- " .word gPlayerAvatar\n"
- "._424:\n"
- " ldr r2, ._431 @ gMapObjects\n"
- " ldr r0, ._431 + 4 @ gPlayerAvatar\n"
- " ldrb r1, [r0, #0x5]\n"
- " lsl r0, r1, #0x3\n"
- " add r0, r0, r1\n"
- " lsl r0, r0, #0x2\n"
- " add r0, r0, r2\n"
- " ldrb r0, [r0, #0x1]\n"
- " lsr r0, r0, #0x7\n"
- " cmp r0, #0\n"
- " beq ._429 @cond_branch\n"
- " add r0, r4, #0\n"
- " bl CanCameraMoveInDirection\n"
- " cmp r0, #0\n"
- " bne ._429 @cond_branch\n"
- " add r0, r4, #0\n"
- " bl PlayerOnBikeCollide\n"
- " b ._430\n"
- "._432:\n"
- " .align 2, 0\n"
- "._431:\n"
- " .word gMapObjects\n"
- " .word gPlayerAvatar\n"
- "._429:\n"
- " add r0, r4, #0\n"
- " bl PlayerGoSpeed4\n"
- "._430:\n"
- " mov r0, #0x1\n"
- " pop {r4}\n"
- " pop {r1}\n"
- " bx r1\n"
- "\n"
- );
+
+u8 debug_sub_805F2B0(u8 a)
+{
+ if (gMain.heldKeys & 0x100)
+ return debug_sub_805F2DC(a);
+ else
+ return 0;
}
+
+u8 debug_sub_805F2DC(u8 a)
+{
+ if (a == 0)
+ PlayerFaceDirection(gMapObjects[gPlayerAvatar.mapObjectId].placeholder18);
+ else if (gMapObjects[gPlayerAvatar.mapObjectId].mapobj_bit_15 && !CanCameraMoveInDirection(a))
+ PlayerOnBikeCollide(a);
+ else
+ PlayerGoSpeed4(a);
+ return 1;
+}
+
#endif
diff --git a/src/field/fldeff_flash.c b/src/field/fldeff_flash.c
index 8c0f09bd9..30ddd0f6c 100644
--- a/src/field/fldeff_flash.c
+++ b/src/field/fldeff_flash.c
@@ -72,33 +72,15 @@ static const u16 gCaveTransitionTilemap[] = INCBIN_U16("graphics/misc/cave_trans
static const u8 gCaveTransitionTiles[] = INCBIN_U8("graphics/misc/cave_transition.4bpp.lz");
#if DEBUG
-__attribute__((naked))
+
void debug_sub_8122080(void)
{
- asm("\
- push {lr}\n\
- ldr r0, ._4 @ gMapHeader\n\
- ldrb r0, [r0, #0x15]\n\
- cmp r0, #0x1\n\
- bne ._2 @cond_branch\n\
- ldr r0, ._4 + 4 @ 0x828\n\
- bl FlagGet\n\
- lsl r0, r0, #0x18\n\
- cmp r0, #0\n\
- bne ._2 @cond_branch\n\
- bl sub_810CBFC\n\
- b ._3\n\
-._5:\n\
- .align 2, 0\n\
-._4:\n\
- .word gMapHeader\n\
- .word 0x828\n\
-._2:\n\
- bl ScriptContext2_Disable\n\
-._3:\n\
- pop {r0}\n\
- bx r0");
+ if (gMapHeader.cave == 1 && !FlagGet(FLAG_SYS_USE_FLASH))
+ sub_810CBFC();
+ else
+ ScriptContext2_Disable();
}
+
#endif
bool8 SetUpFieldMove_Flash(void)
diff --git a/src/field/fldeff_secretpower.c b/src/field/fldeff_secretpower.c
index 0e91bb55c..c998448a4 100644
--- a/src/field/fldeff_secretpower.c
+++ b/src/field/fldeff_secretpower.c
@@ -245,98 +245,44 @@ void sub_80C6280(void)
#if DEBUG
-__attribute__((naked))
-void debug_sub_80D93F4()
-{
- asm("\
- push {r4, lr}\n\
- bl sub_80BB63C\n\
- ldr r0, ._98 @ gSpecialVar_Result\n\
- ldrh r0, [r0]\n\
- cmp r0, #0x1\n\
- beq ._95 @cond_branch\n\
- bl player_get_direction_lower_nybble\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x2\n\
- beq ._96 @cond_branch\n\
-._95:\n\
- bl ScriptContext2_Disable\n\
- b ._109\n\
-._99:\n\
- .align 2, 0\n\
-._98:\n\
- .word gSpecialVar_Result\n\
-._96:\n\
- ldr r4, ._102 @ gUnknown_0203923C\n\
- add r1, r4, #2\n\
- add r0, r4, #0\n\
- bl GetXYCoordsOneStepInFrontOfPlayer\n\
- mov r1, #0x0\n\
- ldsh r0, [r4, r1]\n\
- mov r2, #0x2\n\
- ldsh r1, [r4, r2]\n\
- bl MapGridGetMetatileBehaviorAt\n\
- lsl r0, r0, #0x18\n\
- lsr r4, r0, #0x18\n\
- add r0, r4, #0\n\
- bl MetatileBehavior_IsSecretBaseCave\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x1\n\
- bne ._100 @cond_branch\n\
- bl sub_80C6264\n\
- ldr r1, ._102 + 4 @ gLastFieldPokeMenuOpened\n\
- mov r0, #0x0\n\
- strb r0, [r1]\n\
- bl sub_80C639C\n\
- b ._109\n\
-._103:\n\
- .align 2, 0\n\
-._102:\n\
- .word gUnknown_0203923C\n\
- .word gLastFieldPokeMenuOpened\n\
-._100:\n\
- add r0, r4, #0\n\
- bl MetatileBehavior_IsSecretBaseTree\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x1\n\
- bne ._104 @cond_branch\n\
- bl sub_80C6264\n\
- ldr r1, ._106 @ gLastFieldPokeMenuOpened\n\
- mov r0, #0x0\n\
- strb r0, [r1]\n\
- bl sub_80C64A8\n\
- b ._109\n\
-._107:\n\
- .align 2, 0\n\
-._106:\n\
- .word gLastFieldPokeMenuOpened\n\
-._104:\n\
- add r0, r4, #0\n\
- bl MetatileBehavior_IsSecretBaseShrub\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x1\n\
- bne ._108 @cond_branch\n\
- bl sub_80C6264\n\
- ldr r1, ._110 @ gLastFieldPokeMenuOpened\n\
- mov r0, #0x0\n\
- strb r0, [r1]\n\
- bl sub_80C660C\n\
- b ._109\n\
-._111:\n\
- .align 2, 0\n\
-._110:\n\
- .word gLastFieldPokeMenuOpened\n\
-._108:\n\
- bl ScriptContext2_Disable\n\
-._109:\n\
- pop {r4}\n\
- pop {r0}\n\
- bx r0");
+void debug_sub_80D93F4(void)
+{
+ u8 metatile;
+
+ sub_80BB63C();
+
+ if (gSpecialVar_Result == 1 || player_get_direction_lower_nybble() != 2)
+ {
+ ScriptContext2_Disable();
+ return;
+ }
+
+ GetXYCoordsOneStepInFrontOfPlayer(&gUnknown_0203923C.x, &gUnknown_0203923C.y);
+ metatile = MapGridGetMetatileBehaviorAt(gUnknown_0203923C.x, gUnknown_0203923C.y);
+ if (MetatileBehavior_IsSecretBaseCave(metatile) == TRUE)
+ {
+ sub_80C6264();
+ gLastFieldPokeMenuOpened = 0;
+ sub_80C639C();
+ }
+ else if (MetatileBehavior_IsSecretBaseTree(metatile) == TRUE)
+ {
+ sub_80C6264();
+ gLastFieldPokeMenuOpened = 0;
+ sub_80C64A8();
+ }
+ else if (MetatileBehavior_IsSecretBaseShrub(metatile) == TRUE)
+ {
+ sub_80C6264();
+ gLastFieldPokeMenuOpened = 0;
+ sub_80C660C();
+ }
+ else
+ {
+ ScriptContext2_Disable();
+ }
}
+
#endif
bool8 SetUpFieldMove_SecretPower(void)
diff --git a/src/field/party_menu.c b/src/field/party_menu.c
index 66e7e2319..c492307d3 100644
--- a/src/field/party_menu.c
+++ b/src/field/party_menu.c
@@ -1,4 +1,8 @@
#include "global.h"
+#include "constants/items.h"
+#include "constants/moves.h"
+#include "constants/songs.h"
+#include "constants/species.h"
#include "party_menu.h"
#include "battle.h"
#include "battle_interface.h"
@@ -11,12 +15,11 @@
#include "item.h"
#include "item_use.h"
#include "item_menu.h"
-#include "constants/items.h"
+#include "link.h"
#include "mail_data.h"
#include "main.h"
#include "menu.h"
#include "menu_helpers.h"
-#include "constants/moves.h"
#include "palette.h"
#include "pokemon.h"
#include "pokemon_icon.h"
@@ -25,9 +28,7 @@
#include "pokemon_summary_screen.h"
#include "rom_8077ABC.h"
#include "rom_8094928.h"
-#include "constants/songs.h"
#include "sound.h"
-#include "constants/species.h"
#include "sprite.h"
#include "string_util.h"
#include "strings.h"
@@ -397,7 +398,8 @@ static const u16 PartyMonOAMSettings_RightColumn[] = {
};
// Controls where and how the mons' text appears in the party menu screen (nickname, HP, and level).
-static struct PartyMonTextSettingsStruct const PartyMonTextSettings[4][6] = {
+static struct PartyMonTextSettingsStruct const PartyMonTextSettings[4][6] =
+{
{ // PARTY_MENU_LAYOUT_STANDARD
{ 1, 4, PartyMonOAMSettings_LeftColumn},
{12, 1, PartyMonOAMSettings_RightColumn},
@@ -432,7 +434,8 @@ static struct PartyMonTextSettingsStruct const PartyMonTextSettings[4][6] = {
},
};
-static const struct PartyMenuHandlersStruct PartyMenuHandlers[] = {
+static const struct PartyMenuHandlersStruct PartyMenuHandlers[] =
+{
{HandleDefaultPartyMenu, SetupDefaultPartyMenu, 0}, // PARTY_MENU_TYPE_STANDARD
{HandleBattlePartyMenu, SetUpBattlePartyMenu, 0}, // PARTY_MENU_TYPE_BATTLE
{HandleSelectPartyMenu, SetupContestPartyMenu, 0}, // PARTY_MENU_TYPE_CONTEST
@@ -493,71 +496,6 @@ extern const u8 gStatusPal_Icons[];
#define WINDOW_RIGHT (29)
#endif
-#if DEBUG
-__attribute__((naked))
-void CB2_PartyMenuMain(void)
-{
- asm("\
- push {r4, r5, r6, lr}\n\
- add sp, sp, #0xfffffffc\n\
- bl AnimateSprites\n\
- bl BuildOamBuffer\n\
- ldr r0, ._3 @ gPartyMenuType\n\
- ldrb r1, [r0]\n\
- lsl r0, r1, #0x1\n\
- add r0, r0, r1\n\
- lsl r0, r0, #0x4\n\
- ldr r1, ._3 + 4 @ PartyMonTextSettings\n\
- add r5, r0, r1\n\
- mov r6, #0x0\n\
-._1:\n\
- ldrb r0, [r5]\n\
- lsl r0, r0, #0x3\n\
- ldrb r1, [r5, #0x1]\n\
- lsl r1, r1, #0x3\n\
- ldr r2, [r5, #0x4]\n\
- lsl r3, r6, #0x5\n\
- mov r4, #0x80\n\
- lsl r4, r4, #0x2\n\
- orr r3, r3, r4\n\
- str r3, [sp]\n\
- mov r3, #0x0\n\
- bl DrawPartyMenuMonText\n\
- add r5, r5, #0x8\n\
- add r6, r6, #0x1\n\
- cmp r6, #0x5\n\
- ble ._1 @cond_branch\n\
- bl RunTasks\n\
- bl UpdatePaletteFade\n\
- ldr r0, ._3 + 8 @ gLinkOpen\n\
- ldrb r0, [r0]\n\
- cmp r0, #0x1\n\
- bne ._2 @cond_branch\n\
- ldr r0, ._3 + 12 @ gLink\n\
- ldr r1, ._3 + 16 @ 0xfbd\n\
- add r0, r0, r1\n\
- ldrb r0, [r0]\n\
- mov r1, #0x2\n\
- str r1, [sp]\n\
- mov r1, #0x1\n\
- mov r2, #0x1\n\
- mov r3, #0x2\n\
- bl debug_sub_8008264\n\
-._2:\n\
- add sp, sp, #0x4\n\
- pop {r4, r5, r6}\n\
- pop {r0}\n\
- bx r0\n\
-._4:\n\
- .align 2, 0\n\
-._3:\n\
- .word gPartyMenuType\n\
- .word PartyMonTextSettings\n\
- .word gLinkOpen\n\
- .word gLink\n\
- .word 0xfbd");
-}
-#else
void CB2_PartyMenuMain(void)
{
const struct PartyMonTextSettingsStruct *textSettings;
@@ -581,8 +519,12 @@ void CB2_PartyMenuMain(void)
RunTasks();
UpdatePaletteFade();
-}
+
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008264(gLink.recvQueue.count, 1, 1, 2, 2);
#endif
+}
void VBlankCB_PartyMenu(void)
{
@@ -621,14 +563,16 @@ bool8 SetupDefaultPartyMenu(void)
switch (ewram1B000_alt.setupState)
{
case 0:
- if (ewram1B000_alt.monIndex < gPlayerPartyCount) {
+ if (ewram1B000_alt.monIndex < gPlayerPartyCount)
+ {
TryCreatePartyMenuMonIcon(ewram1B000_alt.menuHandlerTaskId, ewram1B000_alt.monIndex, &gPlayerParty[ewram1B000_alt.monIndex]);
ewram1B000_alt.monIndex++;
- } else {
+ }
+ else
+ {
ewram1B000_alt.monIndex = 0;
ewram1B000_alt.setupState++;
}
-
break;
case 1:
LoadHeldItemIconGraphics();
@@ -648,7 +592,6 @@ bool8 SetupDefaultPartyMenu(void)
ewram1B000_alt.monIndex = 0;
ewram1B000_alt.setupState++;
}
-
break;
case 4:
PartyMenuPrintMonsLevelOrStatus();
@@ -687,425 +630,6 @@ bool8 SetupDefaultPartyMenu(void)
return FALSE;
}
-#if DEBUG
-__attribute__((naked))
-bool8 InitPartyMenu(void)
-{
- asm("\
- push {r4, r5, r6, r7, lr}\n\
- mov r7, r8\n\
- push {r7}\n\
- add sp, sp, #0xfffffff4\n\
- ldr r0, ._55 @ gMain\n\
- ldr r1, ._55 + 4 @ 0x43c\n\
- add r0, r0, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, #0x11\n\
- bls ._53 @cond_branch\n\
- b ._125\n\
-._53:\n\
- lsl r0, r0, #0x2\n\
- ldr r1, ._55 + 8 @ \n\
- add r0, r0, r1\n\
- ldr r0, [r0]\n\
- mov pc, r0\n\
-._56:\n\
- .align 2, 0\n\
-._55:\n\
- .word gMain\n\
- .word 0x43c\n\
- .word ._57\n\
-._57:\n\
- .word ._58\n\
- .word ._59\n\
- .word ._60\n\
- .word ._61\n\
- .word ._62\n\
- .word ._63\n\
- .word ._64\n\
- .word ._65\n\
- .word ._66\n\
- .word ._67\n\
- .word ._68\n\
- .word ._69\n\
- .word ._70\n\
- .word ._71\n\
- .word ._72\n\
- .word ._73\n\
- .word ._74\n\
- .word ._75\n\
-._58:\n\
- mov r0, #0x0\n\
- bl SetVBlankCallback\n\
- mov r3, #0xc0\n\
- lsl r3, r3, #0x13\n\
- mov r4, #0xc0\n\
- lsl r4, r4, #0x9\n\
- add r2, sp, #0x8\n\
- mov r8, r2\n\
- add r2, sp, #0x4\n\
- mov r6, #0x0\n\
- ldr r1, ._78 @ 0x40000d4\n\
- mov r5, #0x80\n\
- lsl r5, r5, #0x5\n\
- ldr r7, ._78 + 4 @ 0x81000800\n\
- mov r0, #0x81\n\
- lsl r0, r0, #0x18\n\
- mov ip, r0\n\
-._76:\n\
- strh r6, [r2]\n\
- add r0, sp, #0x4\n\
- str r0, [r1]\n\
- str r3, [r1, #0x4]\n\
- str r7, [r1, #0x8]\n\
- ldr r0, [r1, #0x8]\n\
- add r3, r3, r5\n\
- sub r4, r4, r5\n\
- cmp r4, r5\n\
- bhi ._76 @cond_branch\n\
- strh r6, [r2]\n\
- add r2, sp, #0x4\n\
- str r2, [r1]\n\
- str r3, [r1, #0x4]\n\
- lsr r0, r4, #0x1\n\
- mov r3, ip\n\
- orr r0, r0, r3\n\
- str r0, [r1, #0x8]\n\
- ldr r0, [r1, #0x8]\n\
- mov r0, #0xe0\n\
- lsl r0, r0, #0x13\n\
- mov r3, #0x80\n\
- lsl r3, r3, #0x3\n\
- mov r4, #0x0\n\
- str r4, [sp, #0x8]\n\
- ldr r2, ._78 @ 0x40000d4\n\
- mov r1, r8\n\
- str r1, [r2]\n\
- str r0, [r2, #0x4]\n\
- lsr r0, r3, #0x2\n\
- mov r1, #0x85\n\
- lsl r1, r1, #0x18\n\
- orr r0, r0, r1\n\
- str r0, [r2, #0x8]\n\
- ldr r0, [r2, #0x8]\n\
- mov r1, #0xa0\n\
- lsl r1, r1, #0x13\n\
- add r0, sp, #0x4\n\
- strh r4, [r0]\n\
- str r0, [r2]\n\
- str r1, [r2, #0x4]\n\
- lsr r3, r3, #0x1\n\
- mov r0, #0x81\n\
- lsl r0, r0, #0x18\n\
- orr r3, r3, r0\n\
- str r3, [r2, #0x8]\n\
- ldr r0, [r2, #0x8]\n\
- ldr r2, ._78 + 8 @ gPaletteFade\n\
- ldrb r0, [r2, #0x8]\n\
- mov r1, #0x80\n\
- orr r0, r0, r1\n\
- strb r0, [r2, #0x8]\n\
- ldr r1, ._78 + 12 @ gMain\n\
- ldr r2, ._78 + 16 @ 0x43c\n\
- add r1, r1, r2\n\
- b ._122\n\
-._79:\n\
- .align 2, 0\n\
-._78:\n\
- .word 0x40000d4\n\
- .word 0x81000800\n\
- .word gPaletteFade\n\
- .word gMain\n\
- .word 0x43c\n\
-._59:\n\
- bl ScanlineEffect_Stop\n\
- b ._115\n\
-._60:\n\
- bl sub_806B4A8\n\
- ldr r1, ._82 @ \n\
- mov r2, #0x99\n\
- lsl r2, r2, #0x2\n\
- add r0, r1, r2\n\
- mov r2, #0x0\n\
- strh r2, [r0]\n\
- ldr r3, ._82 + 4 @ \n\
- add r0, r1, r3\n\
- strh r2, [r0]\n\
- mov r0, #0x9a\n\
- lsl r0, r0, #0x2\n\
- add r1, r1, r0\n\
- strh r2, [r1]\n\
- ldr r1, ._82 + 8 @ \n\
- ldr r2, ._82 + 12 @ \n\
- add r1, r1, r2\n\
- b ._122\n\
-._83:\n\
- .align 2, 0\n\
-._82:\n\
- .word +0x201b000\n\
- .word 0x266\n\
- .word gMain\n\
- .word 0x43c\n\
-._61:\n\
- bl ResetSpriteData\n\
- b ._115\n\
-._62:\n\
- ldr r0, ._88 @ \n\
- mov r1, #0x96\n\
- lsl r1, r1, #0x2\n\
- add r0, r0, r1\n\
- ldrb r0, [r0]\n\
- cmp r0, #0x1\n\
- beq ._86 @cond_branch\n\
- cmp r0, #0x5\n\
- beq ._86 @cond_branch\n\
- bl ResetTasks\n\
-._86:\n\
- ldr r1, ._88 + 4 @ \n\
- ldr r2, ._88 + 8 @ \n\
- add r1, r1, r2\n\
- b ._122\n\
-._89:\n\
- .align 2, 0\n\
-._88:\n\
- .word +0x201b000\n\
- .word gMain\n\
- .word 0x43c\n\
-._63:\n\
- bl FreeAllSpritePalettes\n\
- b ._115\n\
-._64:\n\
- ldr r4, ._92 @ \n\
- mov r1, #0x97\n\
- lsl r1, r1, #0x2\n\
- add r0, r4, r1\n\
- ldr r0, [r0]\n\
- mov r1, #0x0\n\
- bl CreateTask\n\
- mov r2, #0x98\n\
- lsl r2, r2, #0x2\n\
- add r1, r4, r2\n\
- strb r0, [r1]\n\
- b ._115\n\
-._93:\n\
- .align 2, 0\n\
-._92:\n\
- .word +0x201b000\n\
-._65:\n\
- ldr r0, ._95 @ gWindowTemplate_81E6C90\n\
- bl Text_LoadWindowTemplate\n\
- ldr r1, ._95 + 4 @ gMain\n\
- ldr r0, ._95 + 8 @ 0x43c\n\
- add r1, r1, r0\n\
- b ._122\n\
-._96:\n\
- .align 2, 0\n\
-._95:\n\
- .word gWindowTemplate_81E6C90\n\
- .word gMain\n\
- .word 0x43c\n\
-._66:\n\
- ldr r4, ._98 @ gUnknown_03004210\n\
- ldr r1, ._98 + 4 @ gWindowTemplate_81E6C90\n\
- add r0, r4, #0\n\
- bl Text_InitWindowWithTemplate\n\
- add r0, r4, #0\n\
- mov r1, #0x1\n\
- bl MultistepInitWindowTileData\n\
- ldr r1, ._98 + 8 @ gMain\n\
- ldr r2, ._98 + 12 @ 0x43c\n\
- add r1, r1, r2\n\
- b ._122\n\
-._99:\n\
- .align 2, 0\n\
-._98:\n\
- .word gUnknown_03004210\n\
- .word gWindowTemplate_81E6C90\n\
- .word gMain\n\
- .word 0x43c\n\
-._67:\n\
- bl MultistepLoadFont\n\
- cmp r0, #0\n\
- bne ._100 @cond_branch\n\
- b ._125\n\
-._100:\n\
- ldr r0, ._103 @ \n\
- mov r3, #0x99\n\
- lsl r3, r3, #0x2\n\
- add r0, r0, r3\n\
- mov r1, #0x1\n\
- strh r1, [r0]\n\
- ldr r1, ._103 + 4 @ \n\
- ldr r0, ._103 + 8 @ \n\
- add r1, r1, r0\n\
- b ._122\n\
-._104:\n\
- .align 2, 0\n\
-._103:\n\
- .word +0x201b000\n\
- .word gMain\n\
- .word 0x43c\n\
-._68:\n\
- ldr r0, ._107 @ \n\
- mov r1, #0x99\n\
- lsl r1, r1, #0x2\n\
- add r4, r0, r1\n\
- ldrb r0, [r4]\n\
- bl LoadPartyMenuGraphics\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x1\n\
- bne ._105 @cond_branch\n\
- mov r0, #0x0\n\
- strh r0, [r4]\n\
- ldr r1, ._107 + 4 @ \n\
- ldr r2, ._107 + 8 @ \n\
- add r1, r1, r2\n\
- b ._122\n\
-._108:\n\
- .align 2, 0\n\
-._107:\n\
- .word +0x201b000\n\
- .word gMain\n\
- .word 0x43c\n\
-._105:\n\
- ldrh r0, [r4]\n\
- add r0, r0, #0x1\n\
- strh r0, [r4]\n\
- b ._125\n\
-._69:\n\
- bl sub_809D51C\n\
- b ._115\n\
-._70:\n\
- ldr r2, ._113 @ PartyMenuHandlers\n\
- ldr r0, ._113 + 4 @ \n\
- mov r1, #0x96\n\
- lsl r1, r1, #0x2\n\
- add r0, r0, r1\n\
- ldrb r1, [r0]\n\
- lsl r0, r1, #0x1\n\
- add r0, r0, r1\n\
- lsl r0, r0, #0x2\n\
- add r2, r2, #0x4\n\
- add r0, r0, r2\n\
- ldr r0, [r0]\n\
- bl _call_via_r0\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x1\n\
- bne ._125 @cond_branch\n\
- ldr r1, ._113 + 8 @ \n\
- ldr r2, ._113 + 12 @ \n\
- add r1, r1, r2\n\
- b ._122\n\
-._114:\n\
- .align 2, 0\n\
-._113:\n\
- .word PartyMenuHandlers\n\
- .word +0x201b000\n\
- .word gMain\n\
- .word 0x43c\n\
-._71:\n\
- ldr r0, ._116 @ gWindowTemplate_81E6CC8\n\
- bl MultistepInitMenuWindowBegin\n\
- b ._115\n\
-._117:\n\
- .align 2, 0\n\
-._116:\n\
- .word gWindowTemplate_81E6CC8\n\
-._72:\n\
- bl MultistepInitMenuWindowContinue\n\
- cmp r0, #0\n\
- beq ._125 @cond_branch\n\
- ldr r1, ._120 @ gMain\n\
- ldr r0, ._120 + 4 @ 0x43c\n\
- add r1, r1, r0\n\
- b ._122\n\
-._121:\n\
- .align 2, 0\n\
-._120:\n\
- .word gMain\n\
- .word 0x43c\n\
-._73:\n\
- ldr r0, ._123 @ \n\
- ldr r1, ._123 + 4 @ \n\
- add r0, r0, r1\n\
- ldrb r0, [r0]\n\
- mov r1, #0x0\n\
- bl PrintPartyMenuPromptText\n\
- ldr r1, ._123 + 8 @ \n\
- ldr r2, ._123 + 12 @ \n\
- add r1, r1, r2\n\
- b ._122\n\
-._124:\n\
- .align 2, 0\n\
-._123:\n\
- .word +0x201b000\n\
- .word 0x259\n\
- .word gMain\n\
- .word 0x43c\n\
-._74:\n\
- mov r0, #0x1\n\
- neg r0, r0\n\
- mov r1, #0x0\n\
- str r1, [sp]\n\
- mov r2, #0x10\n\
- mov r3, #0x0\n\
- bl BeginNormalPaletteFade\n\
- ldr r2, ._126 @ gPaletteFade\n\
- ldrb r1, [r2, #0x8]\n\
- mov r0, #0x7f\n\
- and r0, r0, r1\n\
- strb r0, [r2, #0x8]\n\
-._115:\n\
- ldr r1, ._126 + 4 @ gMain\n\
- ldr r3, ._126 + 8 @ 0x43c\n\
- add r1, r1, r3\n\
-._122:\n\
- ldrb r0, [r1]\n\
- add r0, r0, #0x1\n\
- strb r0, [r1]\n\
- b ._125\n\
-._127:\n\
- .align 2, 0\n\
-._126:\n\
- .word gPaletteFade\n\
- .word gMain\n\
- .word 0x43c\n\
-._75:\n\
- ldr r0, ._130 @ VBlankCB_PartyMenu\n\
- bl SetVBlankCallback\n\
- ldr r0, ._130 + 4 @ gLinkOpen\n\
- ldrb r0, [r0]\n\
- cmp r0, #0x1\n\
- bne ._128 @cond_branch\n\
- ldr r0, ._130 + 8 @ 0x600e5e0\n\
- mov r1, #0x80\n\
- lsl r1, r1, #0x8\n\
- ldr r2, ._130 + 12 @ 0x6007800\n\
- mov r3, #0x2\n\
- bl debug_sub_8008218\n\
-._128:\n\
- mov r0, #0x1\n\
- b ._129\n\
-._131:\n\
- .align 2, 0\n\
-._130:\n\
- .word VBlankCB_PartyMenu+1\n\
- .word gLinkOpen\n\
- .word 0x600e5e0\n\
- .word 0x6007800\n\
-._125:\n\
- mov r0, #0x0\n\
-._129:\n\
- add sp, sp, #0xc\n\
- pop {r3}\n\
- mov r8, r3\n\
- pop {r4, r5, r6, r7}\n\
- pop {r1}\n\
- bx r1");
-}
-#else
bool8 InitPartyMenu(void)
{
switch (gMain.state)
@@ -1115,7 +639,6 @@ bool8 InitPartyMenu(void)
DmaFill16Large(3, 0, (void *)(VRAM + 0x0), VRAM_SIZE, 0x1000);
DmaClear32(3, OAM, OAM_SIZE);
DmaClear16(3, PLTT, PLTT_SIZE);
-
gPaletteFade.bufferTransferDisabled = 1;
gMain.state++;
break;
@@ -1136,10 +659,7 @@ bool8 InitPartyMenu(void)
break;
case 4:
if (ewram1B000.menuType != PARTY_MENU_TYPE_BATTLE && ewram1B000.menuType != PARTY_MENU_TYPE_LINK_MULTI_BATTLE)
- {
ResetTasks();
- }
-
gMain.state++;
break;
case 5:
@@ -1183,9 +703,7 @@ bool8 InitPartyMenu(void)
break;
case 12:
if (PartyMenuHandlers[ewram1B000.menuType].menuSetup() == TRUE)
- {
gMain.state++;
- }
break;
case 13:
MultistepInitMenuWindowBegin(&gWindowTemplate_81E6CC8);
@@ -1193,9 +711,7 @@ bool8 InitPartyMenu(void)
break;
case 14:
if (MultistepInitMenuWindowContinue())
- {
gMain.state++;
- }
break;
case 15:
PrintPartyMenuPromptText(ewram1B000.promptTextId, 0);
@@ -1208,27 +724,26 @@ bool8 InitPartyMenu(void)
break;
case 17:
SetVBlankCallback(VBlankCB_PartyMenu);
+#if DEBUG
+ if (gLinkOpen == TRUE)
+ debug_sub_8008218((void *)(VRAM + 0xE5E0), (void *)0x8000, (void *)(VRAM + 0x7800), 2);
+#endif
return TRUE;
}
return FALSE;
}
-#endif
void CB2_InitPartyMenu(void)
{
while (InitPartyMenu() != TRUE)
{
if (sub_80F9344() == TRUE)
- {
return;
- }
}
if (ewram1B000.menuType != PARTY_MENU_TYPE_LINK_MULTI_BATTLE)
- {
ChangePartyMenuSelection(ewram1B000.menuHandlerTaskId, 0);
- }
SetMainCallback2(CB2_PartyMenuMain);
}
@@ -1269,9 +784,7 @@ void ReDrawPartyMonBackgrounds(void)
DmaCopy16Defvars(3, gBGTilemapBuffers[2], (void *)(BG_VRAM + 0x3000), 0x800);
if (ewram1B000.unk261 == 2)
- {
ewram1B000.unk261 = 0;
- }
}
}
@@ -1298,119 +811,172 @@ bool8 DrawPartyMonBackground(u8 monIndex)
sub_806BF24(&arr[0], 0, 3, 0);
break;
case 2:
- if (!IsDoubleBattle()) {
- if (gPlayerPartyCount > 1) {
+ if (!IsDoubleBattle())
+ {
+ if (gPlayerPartyCount > 1)
+ {
sub_806BA94(arr[2], arr[3], 0, 3);
sub_806BF24(&arr[2], 1, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[2], arr[3], 1, 3);
}
- } else if (IsLinkDoubleBattle() == TRUE) {
+ }
+ else if (IsLinkDoubleBattle() == TRUE)
+ {
sub_806B9A4(arr[2], arr[3], 4);
sub_806BF24(&arr[2], 1, 4, 0);
- } else {
+ }
+ else
+ {
sub_806B9A4(arr[2], arr[3], 3);
sub_806BF24(&arr[2], 1, 3, 0);
}
-
break;
case 3:
- if (!IsDoubleBattle()) {
- if (gPlayerPartyCount > 2) {
+ if (!IsDoubleBattle())
+ {
+ if (gPlayerPartyCount > 2)
+ {
sub_806BA94(arr[4], arr[5], 0, 3);
sub_806BF24(&arr[4], 2, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[4], arr[5], 1, 3);
}
- } else if (IsLinkDoubleBattle() == TRUE) {
- if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES)) {
+ }
+ else if (IsLinkDoubleBattle() == TRUE)
+ {
+ if (GetMonData(&gPlayerParty[2], MON_DATA_SPECIES))
+ {
sub_806BA94(arr[4], arr[5], 0, 3);
sub_806BF24(&arr[4], 2, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[4], arr[5], 1, 3);
}
- } else if (gPlayerPartyCount > 2) {
+ }
+ else if (gPlayerPartyCount > 2)
+ {
sub_806BA94(arr[4], arr[5], 0, 3);
sub_806BF24(&arr[4], 2, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[4], arr[5], 1, 3);
}
-
break;
case 4:
- if (!IsDoubleBattle()) {
- if (gPlayerPartyCount > 3) {
+ if (!IsDoubleBattle())
+ {
+ if (gPlayerPartyCount > 3)
+ {
sub_806BA94(arr[6], arr[7], 0, 3);
sub_806BF24(&arr[6], 3, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[6], arr[7], 1, 3);
}
- } else if (IsLinkDoubleBattle() == TRUE) {
- if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES)) {
+ }
+ else if (IsLinkDoubleBattle() == TRUE)
+ {
+ if (GetMonData(&gPlayerParty[3], MON_DATA_SPECIES))
+ {
sub_806BA94(arr[6], arr[7], 0, 3);
sub_806BF24(&arr[6], 3, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[6], arr[7], 1, 3);
}
- } else if (gPlayerPartyCount > 3) {
+ }
+ else if (gPlayerPartyCount > 3)
+ {
sub_806BA94(arr[6], arr[7], 0, 3);
sub_806BF24(&arr[6], 3, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[6], arr[7], 1, 3);
}
-
break;
case 5:
- if (!IsDoubleBattle()) {
- if (gPlayerPartyCount > 4) {
+ if (!IsDoubleBattle())
+ {
+ if (gPlayerPartyCount > 4)
+ {
sub_806BA94(arr[8], arr[9], 0, 3);
sub_806BF24(&arr[8], 4, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[8], arr[9], 1, 3);
}
- } else if (IsLinkDoubleBattle() == TRUE) {
- if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES)) {
+ }
+ else if (IsLinkDoubleBattle() == TRUE)
+ {
+ if (GetMonData(&gPlayerParty[4], MON_DATA_SPECIES))
+ {
sub_806BA94(arr[8], arr[9], 0, 4);
sub_806BF24(&arr[8], 4, 4, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[8], arr[9], 1, 4);
}
- } else if (gPlayerPartyCount > 4) {
+ }
+ else if (gPlayerPartyCount > 4)
+ {
sub_806BA94(arr[8], arr[9], 0, 3);
sub_806BF24(&arr[8], 4, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[8], arr[9], 1, 3);
}
-
break;
case 6:
- if (!IsDoubleBattle()) {
- if (gPlayerPartyCount > 5) {
+ if (!IsDoubleBattle())
+ {
+ if (gPlayerPartyCount > 5)
+ {
sub_806BA94(arr[10], arr[11], 0, 3);
sub_806BF24(&arr[10], 5, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[10], arr[11], 1, 3);
}
- } else if (IsLinkDoubleBattle() == TRUE) {
- if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES)) {
+ }
+ else if (IsLinkDoubleBattle() == TRUE)
+ {
+ if (GetMonData(&gPlayerParty[5], MON_DATA_SPECIES))
+ {
sub_806BA94(arr[10], arr[11], 0, 4);
sub_806BF24(&arr[10], 5, 4, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[10], arr[11], 1, 4);
}
- } else if (gPlayerPartyCount > 5) {
+ }
+ else if (gPlayerPartyCount > 5)
+ {
sub_806BA94(arr[10], arr[11], 0, 3);
sub_806BF24(&arr[10], 5, 3, 0);
- } else {
+ }
+ else
+ {
sub_806BA94(arr[10], arr[11], 1, 3);
}
-
break;
case 7:
- if (ewram1B000.menuType == PARTY_MENU_TYPE_BATTLE_TOWER) {
+ if (ewram1B000.menuType == PARTY_MENU_TYPE_BATTLE_TOWER)
sub_806BB9C(1);
- }
-
sub_806BBEC(1);
break;
case 8:
@@ -1533,9 +1099,7 @@ void sub_806B9A4(s16 a, u16 b, u8 c)
for (; j <= 10 && a + j <= 0x1F; j++)
{
if (a + j >= 0)
- {
gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = (c << 12) | gUnknown_083769D8[i * 11 + j];
- }
}
}
}
@@ -1555,9 +1119,7 @@ void sub_806BA34(s16 a, u16 b)
for (; j <= 10 && a + j <= 0x1F; j++)
{
if (a + j >= 0)
- {
gBGTilemapBuffers[2][var1 + (i * 32) + (a + j)] = 0;
- }
}
}
}
@@ -1569,15 +1131,13 @@ void sub_806BA94(s16 a, u16 b, u8 c, u8 d)
const u8 *arr;
u16 var1;
- arr = gUnknown_08376A5E;
if (c == 0)
- {
arr = gUnknown_08376A25;
- }
+ else
+ arr = gUnknown_08376A5E;
var1 = b * 32;
-
for (i = 0; i < 3; i++)
{
u8 j = 0;
@@ -1622,11 +1182,13 @@ void sub_806BB3C(s16 a, u16 b)
void sub_806BB9C(u8 a)
{
u8 i;
- u16 arr[12] = {
+ u16 arr[12] =
+ {
0x2A, 0x2B, 0x2C, 0x2D, 0x2E, 0x2F,
0x3A, 0x3B, 0x3C, 0x3D, 0x3E, 0x3F,
};
u16 *vramPtr = (u16 *)(BG_VRAM + 0x3C30);
+
for (i = 0; i < PARTY_SIZE; i++)
{
vramPtr[i] = arr[i] + (a << 12);
@@ -1637,11 +1199,13 @@ void sub_806BB9C(u8 a)
void sub_806BBEC(u8 a)
{
u8 i;
- u16 arr[12] = {
+ u16 arr[12] =
+ {
0x2A, 0x0B, 0x0C, 0x0D, 0x0E, 0x2F,
0x1A, 0x1B, 0x1C, 0x1D, 0x1E, 0x1F,
};
u16 *vramPtr = (u16 *)(BG_VRAM + 0x3CB0);
+
for (i = 0; i < PARTY_SIZE; i++)
{
vramPtr[i] = arr[i] + (a << 12);
@@ -1671,9 +1235,7 @@ void unref_sub_806BCB8(u8 a)
u8 i;
for (i = 0; i < gPlayerPartyCount; i++)
- {
sub_806BC3C(i, a);
- }
}
// This is ultimately unreferenced, since it's caller is unreferenced.
@@ -1685,8 +1247,7 @@ void sub_806BCE8()
{
if (!GetMonData(&gPlayerParty[i], MON_DATA_IS_EGG))
{
- u8 gender = GetMonGender(&gPlayerParty[i]);
- switch (gender)
+ switch (GetMonGender(&gPlayerParty[i]))
{
case MON_MALE:
sub_806BC3C(i, 0x54);
@@ -1893,8 +1454,7 @@ u16 HandleBattleTowerPartyMenuInput(u8 taskId)
if (menuDirectionPressed == 0)
{
- u8 var1 = sub_80F92BC();
- switch (var1)
+ switch (sub_80F92BC())
{
case 1:
menuDirectionPressed = 0xFF;
@@ -1923,9 +1483,7 @@ u16 HandleBattleTowerPartyMenuInput(u8 taskId)
if (gMain.newKeys & A_BUTTON)
{
if (gSprites[sub_806CA00(taskId)].data[0] == 7)
- {
return B_BUTTON;
- }
}
}
}
@@ -1989,31 +1547,19 @@ void ChangePartyMenuSelection(u8 taskId, s8 directionPressed)
u8 isDoubleBattle = IsDoubleBattle();
if (menuIndex < PARTY_SIZE)
- {
sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + menuIndex * 2], menuIndex, 3, 0);
- }
else
- {
sub_806BBEC(1);
- }
if (!isDoubleBattle)
- {
ChangeDefaultPartyMenuSelection(spriteId, menuIndex, directionPressed);
- }
else
- {
ChangeDoubleBattlePartyMenuSelection(spriteId, menuIndex, directionPressed);
- }
if (gSprites[spriteId].data[0] < PARTY_SIZE)
- {
sub_806BF24(&gUnknown_083769A8[isDoubleBattle * 12 + gSprites[spriteId].data[0] * 2], gSprites[spriteId].data[0], 3, 1);
- }
else
- {
sub_806BBEC(2);
- }
ewram1B000.unk261 = 2;
@@ -2024,9 +1570,7 @@ void ChangePartyMenuSelection(u8 taskId, s8 directionPressed)
UpdateMonIconFrame_806DA44(taskId, gSprites[spriteId].data[0], 1);
if (menuIndex != gSprites[spriteId].data[0])
- {
- PlaySE(5);
- }
+ PlaySE(SE_SELECT);
}
void ChangeDefaultPartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPressed)
@@ -2040,27 +1584,35 @@ void ChangeDefaultPartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPres
gSprites[spriteId].data[1] = 0;
break;
case 1: // moving up
- if (menuIndex == 0) {
+ if (menuIndex == 0)
+ {
gSprites[spriteId].data[0] = 7;
- } else if (menuIndex == 7) {
+ }
+ else if (menuIndex == 7)
+ {
gSprites[spriteId].data[0] = gPlayerPartyCount - 1;
- } else {
+ }
+ else
+ {
s8 diff = directionPressed;
gSprites[spriteId].data[0] += diff;
}
-
gSprites[spriteId].data[1] = 0;
break;
case 3: // moving down
- if (menuIndex == gPlayerPartyCount - 1) {
+ if (menuIndex == gPlayerPartyCount - 1)
+ {
gSprites[spriteId].data[0] = 7;
- } else if (menuIndex == 7) {
+ }
+ else if (menuIndex == 7)
+ {
gSprites[spriteId].data[0] = 0;
- } else {
+ }
+ else
+ {
s8 diff = directionPressed;
gSprites[spriteId].data[0] += diff;
}
-
gSprites[spriteId].data[1] = 0;
break;
case 4: // moving right
@@ -2068,14 +1620,14 @@ void ChangeDefaultPartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directionPres
{
if (gSprites[spriteId].data[1] == 0)
gSprites[spriteId].data[1] = 1;
-
gSprites[spriteId].data[0] = gSprites[spriteId].data[1];
}
break;
case 0: // moving left
// Only move the selection to the left side if one of the mons in the right-hand column are currently selected
nextIndex = menuIndex - 1;
- if (nextIndex <= 4) {
+ if (nextIndex <= 4)
+ {
gSprites[spriteId].data[0] = 0;
gSprites[spriteId].data[1] = menuIndex;
}
@@ -2094,32 +1646,42 @@ void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directio
gSprites[spriteId].data[1] = 0;
break;
case 3: // moving down
- if (menuIndex == 7) {
+ if (menuIndex == 7)
+ {
gSprites[spriteId].data[0] = 0;
- } else if (menuIndex == gPlayerPartyCount - 1) {
+ }
+ else if (menuIndex == gPlayerPartyCount - 1)
+ {
gSprites[spriteId].data[0] = 7;
- } else {
+ }
+ else
+ {
s8 diff = directionPressed;
gSprites[spriteId].data[0] += diff;
}
-
gSprites[spriteId].data[1] = 0;
break;
case 1: // moving up
- if (menuIndex == 0) {
+ if (menuIndex == 0)
+ {
gSprites[spriteId].data[0] = 7;
- } else if (menuIndex == 7) {
+ }
+ else if (menuIndex == 7)
+ {
gSprites[spriteId].data[0] = gPlayerPartyCount - 1;
- } else {
+ }
+ else
+ {
s8 diff = directionPressed;
gSprites[spriteId].data[0] += diff;
}
-
gSprites[spriteId].data[1] = 0;
break;
case 4: // moving right
- if (menuIndex == 0) {
- if (gPlayerPartyCount > 2) {
+ if (menuIndex == 0)
+ {
+ if (gPlayerPartyCount > 2)
+ {
u16 var1 = gSprites[spriteId].data[1] - 2;
if (var1 > 1)
gSprites[spriteId].data[0] = 2;
@@ -2127,8 +1689,10 @@ void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directio
gSprites[spriteId].data[0] = gSprites[spriteId].data[1];
}
}
- else if (menuIndex == 1) {
- if (gPlayerPartyCount > 4) {
+ else if (menuIndex == 1)
+ {
+ if (gPlayerPartyCount > 4)
+ {
u16 var1 = gSprites[spriteId].data[1] - 4;
if (var1 <= 1)
gSprites[spriteId].data[0] = gSprites[spriteId].data[1];
@@ -2139,12 +1703,16 @@ void ChangeDoubleBattlePartyMenuSelection(u8 spriteId, u8 menuIndex, s8 directio
break;
case 0: // moving left
var1 = menuIndex - 2;
- if (var1 <= 1) {
+ if (var1 <= 1)
+ {
gSprites[spriteId].data[0] = 0;
gSprites[spriteId].data[1] = menuIndex;
- } else {
+ }
+ else
+ {
u8 var2 = menuIndex - 4;
- if (var2 <= 1) {
+ if (var2 <= 1)
+ {
gSprites[spriteId].data[0] = 1;
gSprites[spriteId].data[1] = menuIndex;
}
@@ -2497,54 +2065,41 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed)
UpdateMonIconFrame_806DA44(taskId, menuIndex, 0);
if (menuIndex < PARTY_SIZE)
- {
sub_806BF24(&gUnknown_083769A8[menuIndex * 2], menuIndex, 3, 0);
- }
else if (menuIndex == PARTY_SIZE)
- {
sub_806BB9C(1);
- }
else
- {
sub_806BBEC(1);
- }
menuMovement = directionPressed + 2;
-
switch (menuMovement)
{
case 2: // no movement
gSprites[spriteId].data[1] = 0;
break;
case 1: // moving up
- if (menuIndex == 0) {
+ if (menuIndex == 0)
gSprites[spriteId].data[0] = 7;
- } else if (menuIndex == PARTY_SIZE) {
+ else if (menuIndex == PARTY_SIZE)
gSprites[spriteId].data[0] = gPlayerPartyCount - 1;
- } else {
+ else
gSprites[spriteId].data[0] += directionPressed;
- }
-
gSprites[spriteId].data[1] = 0;
break;
case 3: // moving down
- if (menuIndex == gPlayerPartyCount - 1) {
+ if (menuIndex == gPlayerPartyCount - 1)
gSprites[spriteId].data[0] = 6;
- } else if (menuIndex == 7) {
+ else if (menuIndex == 7)
gSprites[spriteId].data[0] = 0;
- } else {
+ else
gSprites[spriteId].data[0] += directionPressed;
- }
-
gSprites[spriteId].data[1] = 0;
break;
case 4: // moving right
if (gPlayerPartyCount > 1 && menuIndex == 0)
{
- if (gSprites[spriteId].data[1] == 0) {
+ if (gSprites[spriteId].data[1] == 0)
gSprites[spriteId].data[1] = 1;
- }
-
gSprites[spriteId].data[0] = gSprites[spriteId].data[1];
}
break;
@@ -2564,17 +2119,11 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed)
newMenuIndex = gSprites[spriteId].data[0];
if (gSprites[spriteId].data[0] < PARTY_SIZE)
- {
sub_806BF24(&gUnknown_083769A8[gSprites[spriteId].data[0] * 2], newMenuIndex, 3, 1);
- }
else if (gSprites[spriteId].data[0] == PARTY_SIZE)
- {
sub_806BB9C(2);
- }
else
- {
sub_806BBEC(2);
- }
ewram1B000.unk261 = 2;
@@ -2582,9 +2131,7 @@ void ChangeBattleTowerPartyMenuSelection(u8 taskId, s8 directionPressed)
UpdateMonIconFrame_806DA44(taskId, newMenuIndex2, 1);
if (menuIndex != gSprites[spriteId].data[0])
- {
- PlaySE(5);
- }
+ PlaySE(SE_SELECT);
}
// Selects the "OK" button in the Battle Tower party menu.
@@ -2598,13 +2145,9 @@ void SelectBattleTowerOKButton(u8 taskId)
UpdateMonIconFrame_806DA44(taskId, menuIndex, 0);
if (menuIndex < PARTY_SIZE)
- {
sub_806BF24(&gUnknown_083769A8[menuIndex * 2], menuIndex, 3, 0);
- }
else
- {
sub_806BBEC(1);
- }
gSprites[spriteId].data[1] = 0;
gSprites[spriteId].data[0] = 6;
@@ -2614,7 +2157,7 @@ void SelectBattleTowerOKButton(u8 taskId)
sub_806BB9C(2);
ewram1B000.unk261 = 2;
- PlaySE(5);
+ PlaySE(SE_SELECT);
}
}
@@ -2625,24 +2168,28 @@ void sub_806C92C(u8 spriteId)
if (!IsDoubleBattle())
{
- if (menuIndex1 < 1) {
- if (menuIndex2 < 1) {
+ if (menuIndex1 < 1)
+ {
+ if (menuIndex2 < 1)
menuIndex2 = 1;
- }
- } else {
- if (menuIndex2 >= 1) {
+ }
+ else
+ {
+ if (menuIndex2 >= 1)
menuIndex2 = 0;
- }
}
- } else {
- if (menuIndex1 < 2) {
- if (menuIndex2 < 2) {
+ }
+ else
+ {
+ if (menuIndex1 < 2)
+ {
+ if (menuIndex2 < 2)
menuIndex2 = 2;
- }
- } else {
- if (menuIndex2 >= 2) {
+ }
+ else
+ {
+ if (menuIndex2 >= 2)
menuIndex2 = 0;
- }
}
}
@@ -2709,13 +2256,9 @@ void ChangePartyMenuSwitchPokemonSelection(u8 taskId, s16 menuDirectionPressed)
ChangePartyMenuSelection(taskId, menuDirectionPressed);
if (sprite1->data[0] != sprite2->data[0])
- {
sub_806BF24(&gUnknown_083769A8[sprite1->data[0] * 2], sprite1->data[0], 6, 1);
- }
else
- {
sub_806BF24(&gUnknown_083769A8[sprite1->data[0] * 2], sprite1->data[0], 6, 0);
- }
}
void HandlePartyMenuSwitchPokemonInput(u8 taskId)
@@ -2772,14 +2315,9 @@ void sub_806CCE4()
u8 monIndex2 = gSprites[ewram01000.unk2].data[0];
if (monIndex1 <= 5)
- {
sub_806BF24(&gUnknown_083769A8[monIndex1 * 2], monIndex1, 3, 0);
- }
-
if (monIndex2 <= 5)
- {
sub_806BF24(&gUnknown_083769A8[monIndex2 * 2], monIndex2, 3, 1);
- }
}
void sub_806CD44(u8 taskId)
@@ -2988,9 +2526,7 @@ void sub_806D05C(u8 taskId)
sub_806CFA0(taskId, 1);
if (ewram01000.unk8 == 0 && ewram01000.unkA == 11)
- {
gTasks[taskId].func = sub_806D198;
- }
}
void sub_806D098(u8 a, u8 b)
@@ -3032,9 +2568,7 @@ void sub_806D15C(u8 taskId)
sub_806D098(taskId, 1);
if (ewram01000.unk8 == 11 && ewram01000.unkA == 11)
- {
gTasks[taskId].func = sub_806D198;
- }
}
void sub_806D198(u8 taskId)
@@ -3104,22 +2638,14 @@ void sub_806D3B4(u8 taskId, u16 species1, u16 species2)
sub_806B9A4(var1[2] + gTasks[taskId].data[0], var1[3], 4);
if (species1)
- {
sub_806BA94(var1[8] + gTasks[taskId].data[0], var1[9], 0, 4);
- }
else
- {
sub_806BA94(var1[8] + gTasks[taskId].data[0], var1[9], 1, 4);
- }
if (species2)
- {
sub_806BA94(var1[10] + gTasks[taskId].data[0], var1[11], 0, 4);
- }
else
- {
sub_806BA94(var1[10] + gTasks[taskId].data[0], var1[11], 1, 4);
- }
}
void sub_806D4AC(u8 taskId, u16 species, u8 c)
@@ -3203,19 +2729,13 @@ bool8 LoadPartyMenuGraphics(u8 a)
bool8 retVal = FALSE;
if (a < 2)
- {
LZDecompressVram(gPartyMenuMisc_Gfx, (void *)BG_VRAM);
- }
if (a == 2 || a == 0)
- {
LZDecompressVram(gPartyMenuMisc_Tilemap, (void *)(BG_VRAM + 0x3800));
- }
if (a == 3 || a == 0)
- {
LoadCompressedPalette(gPartyMenuMisc_Pal, 0, 0x160);
- }
if (a == 4 || a == 0)
{
@@ -3224,19 +2744,13 @@ bool8 LoadPartyMenuGraphics(u8 a)
}
if (a == 5 || a == 0)
- {
LZDecompressVram(gPartyMenuHpBar_Gfx, (void *)(BG_VRAM + 0x6000));
- }
if (a == 6 || a == 0)
- {
LZDecompressVram(gPartyMenuOrderText_Gfx, (void *)(BG_VRAM + 0x6180));
- }
if (a == 7 || a == 0)
- {
LZDecompressVram(gStatusGfx_Icons, (void *)(BG_VRAM + 0x7180));
- }
if (a == 8 || a == 0)
{
@@ -3255,21 +2769,13 @@ void SetMonIconAnimByHP(u8 spriteId, u16 currentHP, u16 maxHP)
if (currentHP != maxHP)
{
if (hpBarLevel == 3)
- {
animNum = 1;
- }
else if (hpBarLevel == 2)
- {
animNum = 2;
- }
else if (hpBarLevel == 1)
- {
animNum = 3;
- }
else
- {
animNum = 4;
- }
}
sub_809D824(&gSprites[spriteId], animNum);
@@ -3300,25 +2806,19 @@ void TryCreatePartyMenuMonIcon(u8 taskId, u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES))
{
- bool8 isLinkDoubleBattle = IsLinkDoubleBattle();
- if (isLinkDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
CreatePartyMenuMonIcon(taskId, monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon);
- }
else
- {
CreatePartyMenuMonIcon(taskId, monIndex, IsDoubleBattle(), pokemon);
- }
}
}
void unref_sub_806D964(u8 taskId)
{
u8 i;
+
for (i = 0; i < gPlayerPartyCount; i++)
- {
TryCreatePartyMenuMonIcon(taskId, i, &gPlayerParty[i]);
- }
}
void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct UnknownPokemonStruct2 *pokemon)
@@ -3333,19 +2833,14 @@ void CreateMonIcon_LinkMultiBattle(u8 taskId, u8 monIndex, u8 menuType, struct U
void UpdateMonIconFrame_806DA0C(struct Sprite *sprite)
{
- u8 var1;
+ u8 var1 = UpdateMonIconFrame(sprite);
- var1 = UpdateMonIconFrame(sprite);
if (var1)
{
if (var1 & 1)
- {
sprite->pos2.y = -3;
- }
else
- {
sprite->pos2.y = 1;
- }
}
}
@@ -3365,13 +2860,9 @@ void UpdateMonIconFrame_806DA44(u8 taskId, u8 monIndex, u8 c)
gSprites[spriteId].data[0] = 0;
if (!c)
- {
gSprites[spriteId].callback = UpdateMonIconFrame_806DA38;
- }
else
- {
gSprites[spriteId].callback = UpdateMonIconFrame_806DA0C;
- }
}
}
@@ -3383,8 +2874,8 @@ void LoadHeldItemIconGraphics(void)
void SpriteCB_HeldItemIcon(struct Sprite *sprite)
{
-
u8 data7 = sprite->data[7];
+
if (gSprites[data7].invisible)
{
sprite->invisible = 1;
@@ -3422,29 +2913,19 @@ void CreateHeldItemIcons(u8 *a, u8 *b, u8 c)
switch (c)
{
case 0:
- i = 0;
- while (i < a[0])
+ for (i = 0; i < a[0]; i++)
{
heldItem = GetMonData(&gPlayerParty[i], MON_DATA_HELD_ITEM);
if (heldItem)
- {
CreateHeldItemIcon(b[i], ItemIsMail(heldItem));
- }
-
- i++;
}
break;
case 1:
- i = 0;
- while (i < a[1])
+ for (i = 0; i < a[1]; i++)
{
heldItem = GetMonData(&gEnemyParty[i], MON_DATA_HELD_ITEM);
if (heldItem)
- {
CreateHeldItemIcon(b[i + 6], ItemIsMail(heldItem));
- }
-
- i++;
}
break;
}
@@ -3495,13 +2976,9 @@ void CreateHeldItemIcon_806DCD4(u8 taskId, u8 monIndex, u16 item)
else
{
if (ItemIsMail(item))
- {
StartSpriteAnim(&gSprites[heldItemSpriteId], 1);
- }
else
- {
StartSpriteAnim(&gSprites[heldItemSpriteId], 0);
- }
gSprites[heldItemSpriteId].invisible = 0;
}
@@ -3611,25 +3088,25 @@ u8 GetMonIconSpriteId(u8 taskId, u8 monIndex)
{
switch (monIndex)
{
- case 1:
- return gTasks[taskId].data[0];
- break;
- case 2:
- return gTasks[taskId].data[1] >> 8;
- break;
- case 3:
- return gTasks[taskId].data[1];
- break;
- case 4:
- return gTasks[taskId].data[2] >> 8;
- break;
- case 5:
- return gTasks[taskId].data[2];
- break;
- case 0:
- default:
- return gTasks[taskId].data[0] >> 8;
- break;
+ case 1:
+ return gTasks[taskId].data[0];
+ break;
+ case 2:
+ return gTasks[taskId].data[1] >> 8;
+ break;
+ case 3:
+ return gTasks[taskId].data[1];
+ break;
+ case 4:
+ return gTasks[taskId].data[2] >> 8;
+ break;
+ case 5:
+ return gTasks[taskId].data[2];
+ break;
+ case 0:
+ default:
+ return gTasks[taskId].data[0] >> 8;
+ break;
}
}
@@ -3637,24 +3114,24 @@ void SetMonIconSpriteId(u8 taskId, u8 monIndex, u8 spriteId)
{
switch (monIndex)
{
- case 0:
- gTasks[taskId].data[0] = (u8)gTasks[taskId].data[0] | (spriteId << 8);
- break;
- case 1:
- gTasks[taskId].data[0] = (gTasks[taskId].data[0] & -0x100) | spriteId;
- break;
- case 2:
- gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1] | (spriteId << 8);
- break;
- case 3:
- gTasks[taskId].data[1] = (gTasks[taskId].data[1] & -0x100) | spriteId;
- break;
- case 4:
- gTasks[taskId].data[2] = (u8)gTasks[taskId].data[2] | (spriteId << 8);
- break;
- case 5:
- gTasks[taskId].data[2] = (gTasks[taskId].data[2] & -0x100) | spriteId;
- break;
+ case 0:
+ gTasks[taskId].data[0] = (u8)gTasks[taskId].data[0] | (spriteId << 8);
+ break;
+ case 1:
+ gTasks[taskId].data[0] = (gTasks[taskId].data[0] & -0x100) | spriteId;
+ break;
+ case 2:
+ gTasks[taskId].data[1] = (u8)gTasks[taskId].data[1] | (spriteId << 8);
+ break;
+ case 3:
+ gTasks[taskId].data[1] = (gTasks[taskId].data[1] & -0x100) | spriteId;
+ break;
+ case 4:
+ gTasks[taskId].data[2] = (u8)gTasks[taskId].data[2] | (spriteId << 8);
+ break;
+ case 5:
+ gTasks[taskId].data[2] = (gTasks[taskId].data[2] & -0x100) | spriteId;
+ break;
}
}
@@ -3799,15 +3276,10 @@ void TryPrintPartyMenuMonNickname(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES))
{
- bool8 isLinkDoubleBattle = IsLinkDoubleBattle();
- if (isLinkDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
PrintPartyMenuMonNickname(monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon);
- }
else
- {
PrintPartyMenuMonNickname(monIndex, IsDoubleBattle(), pokemon);
- }
}
}
@@ -3816,9 +3288,7 @@ void PrintPartyMenuMonNicknames(void)
u8 i;
for (i = 0; i < PARTY_SIZE; i++)
- {
TryPrintPartyMenuMonNickname(i, &gPlayerParty[i]);
- }
}
u8 *GetMonNickname(struct Pokemon *pokemon, u8 *stringBuffer)
@@ -3836,38 +3306,28 @@ void PartyMenuPutStatusTilemap(u8 monIndex, u8 menuLayout, u8 status)
u8 var1 = status * 4;
for (i = 0; i < 4; i++)
- {
vramPtr[i] = (0x18C + var1 + i) | -0x5000;
- }
}
static void PartyMenuClearLevelStatusTilemap(u8 monIndex)
{
- bool8 isLinkDoubleBattle;
u8 menuLayout;
u8 x;
u8 y;
u16 *vramPtr;
u8 i;
- isLinkDoubleBattle = IsLinkDoubleBattle();
- if (isLinkDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
menuLayout = PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE;
- }
else
- {
menuLayout = IsDoubleBattle();
- }
x = gUnknown_08376738[menuLayout][monIndex].x - 1;
y = gUnknown_08376738[menuLayout][monIndex].y + 1;
vramPtr = (u16*)(VRAM + 0xF000) + (x + y * 32);
for (i = 0; i < 4; i++)
- {
vramPtr[i] = 0;
- }
}
static void PartyMenuWriteTilemap(u8 a, u8 x, u8 y)
@@ -3908,30 +3368,18 @@ void PartyMenuPrintMonLevelOrStatus(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG))
{
- u8 statusAndPkrs;
- bool8 isLinkDoubleBattle;
+ u8 statusAndPkrs = GetMonStatusAndPokerus(pokemon);
u8 menuLayout;
- statusAndPkrs = GetMonStatusAndPokerus(pokemon);
-
- isLinkDoubleBattle = IsLinkDoubleBattle();
- if (isLinkDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
menuLayout = PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE;
- }
else
- {
menuLayout = IsDoubleBattle();
- }
if (statusAndPkrs != 0 && statusAndPkrs != 6)
- {
PartyMenuPutStatusTilemap(monIndex, menuLayout, statusAndPkrs - 1);
- }
else
- {
PartyMenuPrintLevel(monIndex, menuLayout, pokemon);
- }
PartyMenuPrintGenderIcon(monIndex, menuLayout, pokemon);
}
@@ -3942,9 +3390,7 @@ void PartyMenuPrintMonsLevelOrStatus(void)
u8 i;
for (i = 0; i < PARTY_SIZE; i++)
- {
PartyMenuPrintMonLevelOrStatus(i, &gPlayerParty[i]);
- }
}
void PartyMenuDoPrintGenderIcon(u16 species, u8 gender, u8 menuLayout, u8 monIndex, u8 *nickname)
@@ -3956,12 +3402,12 @@ void PartyMenuDoPrintGenderIcon(u16 species, u8 gender, u8 menuLayout, u8 monInd
switch (gender)
{
- case MON_MALE:
- PartyMenuWriteTilemap(0x42, x, y);
- break;
- case MON_FEMALE:
- PartyMenuWriteTilemap(0x44, x, y);
- break;
+ case MON_MALE:
+ PartyMenuWriteTilemap(0x42, x, y);
+ break;
+ case MON_FEMALE:
+ PartyMenuWriteTilemap(0x44, x, y);
+ break;
}
}
}
@@ -3994,11 +3440,8 @@ void PartyMenuDoPrintHP(u8 monIndex, u8 b, u16 currentHP, u16 maxHP)
void PartyMenuPrintHP(u8 monIndex, u8 b, struct Pokemon *pokemon)
{
- u16 currentHP;
- u16 maxHP;
-
- currentHP = GetMonData(pokemon, MON_DATA_HP);
- maxHP = GetMonData(pokemon, MON_DATA_MAX_HP);
+ u16 currentHP = GetMonData(pokemon, MON_DATA_HP);
+ u16 maxHP = GetMonData(pokemon, MON_DATA_MAX_HP);
PartyMenuDoPrintHP(monIndex, b, currentHP, maxHP);
}
@@ -4007,15 +3450,10 @@ void PartyMenuTryPrintHP(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG))
{
- bool8 isLinkDoubleBattle = IsLinkDoubleBattle();
- if (isLinkDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
PartyMenuPrintHP(monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon);
- }
else
- {
PartyMenuPrintHP(monIndex, IsDoubleBattle(), pokemon);
- }
}
}
@@ -4024,9 +3462,7 @@ void PartyMenuTryPrintMonsHP(void)
u8 i;
for (i = 0; i < PARTY_SIZE; i++)
- {
PartyMenuTryPrintHP(i, &gPlayerParty[i]);
- }
}
void unref_sub_806E564(void) { }
@@ -4046,17 +3482,11 @@ void PartyMenuDoDrawHPBar(u8 monIndex, u8 menuLayout, u16 currentHP, u16 maxHP)
hpBarLevel = GetHPBarLevel(currentHP, maxHP);
if (hpBarLevel > 2)
- {
battleInterface.unkC_0 = 4;
- }
if (hpBarLevel == 2)
- {
battleInterface.unkC_0 = 5;
- }
if (hpBarLevel < 2)
- {
battleInterface.unkC_0 = 6;
- }
battleInterface.unk10 = 0x100;
@@ -4082,15 +3512,10 @@ void PartyMenuTryDrawHPBar(u8 monIndex, struct Pokemon *pokemon)
{
if (GetMonData(pokemon, MON_DATA_SPECIES) && !GetMonData(pokemon, MON_DATA_IS_EGG))
{
- bool8 isDoubleBattle = IsLinkDoubleBattle();
- if (isDoubleBattle == TRUE)
- {
+ if (IsLinkDoubleBattle() == TRUE)
PartyMenuDrawHPBar(monIndex, PARTY_MENU_LAYOUT_LINK_DOUBLE_BATTLE, pokemon);
- }
else
- {
PartyMenuDrawHPBar(monIndex, IsDoubleBattle(), pokemon);
- }
}
}
@@ -4099,9 +3524,7 @@ void PartyMenuDrawHPBars(void)
u8 i;
for (i = 0; i < PARTY_SIZE; i++)
- {
PartyMenuTryDrawHPBar(i, &gPlayerParty[i]);
- }
}
void SwapPokemon(struct Pokemon *a, struct Pokemon *b)
@@ -4871,64 +4294,64 @@ void GetMedicineItemEffectMessage(u16 item)
{
switch (GetItemEffectType(item))
{
- case 3:
- StringExpandPlaceholders(gStringVar4, gOtherText_CuredPoisoning);
- break;
- case 4:
- StringExpandPlaceholders(gStringVar4, gOtherText_WokeUp);
- break;
- case 5:
- StringExpandPlaceholders(gStringVar4, gOtherText_BurnHealed);
- break;
- case 6:
- StringExpandPlaceholders(gStringVar4, gOtherText_ThawedOut);
- break;
- case 7:
- StringExpandPlaceholders(gStringVar4, gOtherText_CuredParalysis);
- break;
- case 8:
- StringExpandPlaceholders(gStringVar4, gOtherText_SnapConfusion);
- break;
- case 9:
- StringExpandPlaceholders(gStringVar4, gOtherText_GotOverLove);
- break;
- case 11:
- StringExpandPlaceholders(gStringVar4, gOtherText_BecameHealthy);
- break;
- case 13:
- StringCopy(gStringVar2, gOtherText_Hp2);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 12:
- StringCopy(gStringVar2, gOtherText_Attack);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 17:
- StringCopy(gStringVar2, gOtherText_Defense);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 16:
- StringCopy(gStringVar2, gOtherText_Speed);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 14:
- StringCopy(gStringVar2, gOtherText_SpAtk2);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 15:
- StringCopy(gStringVar2, gOtherText_SpDef2);
- StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
- break;
- case 19:
- case 20:
- StringExpandPlaceholders(gStringVar4, gOtherText_PPIncreased);
- break;
- case 21:
- StringExpandPlaceholders(gStringVar4, gOtherText_PPRestored);
- break;
- default:
- StringExpandPlaceholders(gStringVar4, gOtherText_WontHaveAnyEffect);
- break;
+ case 3:
+ StringExpandPlaceholders(gStringVar4, gOtherText_CuredPoisoning);
+ break;
+ case 4:
+ StringExpandPlaceholders(gStringVar4, gOtherText_WokeUp);
+ break;
+ case 5:
+ StringExpandPlaceholders(gStringVar4, gOtherText_BurnHealed);
+ break;
+ case 6:
+ StringExpandPlaceholders(gStringVar4, gOtherText_ThawedOut);
+ break;
+ case 7:
+ StringExpandPlaceholders(gStringVar4, gOtherText_CuredParalysis);
+ break;
+ case 8:
+ StringExpandPlaceholders(gStringVar4, gOtherText_SnapConfusion);
+ break;
+ case 9:
+ StringExpandPlaceholders(gStringVar4, gOtherText_GotOverLove);
+ break;
+ case 11:
+ StringExpandPlaceholders(gStringVar4, gOtherText_BecameHealthy);
+ break;
+ case 13:
+ StringCopy(gStringVar2, gOtherText_Hp2);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 12:
+ StringCopy(gStringVar2, gOtherText_Attack);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 17:
+ StringCopy(gStringVar2, gOtherText_Defense);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 16:
+ StringCopy(gStringVar2, gOtherText_Speed);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 14:
+ StringCopy(gStringVar2, gOtherText_SpAtk2);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 15:
+ StringCopy(gStringVar2, gOtherText_SpDef2);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WasRaised);
+ break;
+ case 19:
+ case 20:
+ StringExpandPlaceholders(gStringVar4, gOtherText_PPIncreased);
+ break;
+ case 21:
+ StringExpandPlaceholders(gStringVar4, gOtherText_PPRestored);
+ break;
+ default:
+ StringExpandPlaceholders(gStringVar4, gOtherText_WontHaveAnyEffect);
+ break;
}
}
@@ -5025,9 +4448,9 @@ void UseMedicine(u8 taskId, u16 item, TaskFunc func)
bool8 IsBlueYellowRedFlute(u16 item)
{
- if (item == 0x27
- || item == 0x29
- || item == 0x28)
+ if (item == ITEM_BLUE_FLUTE
+ || item == ITEM_RED_FLUTE
+ || item == ITEM_YELLOW_FLUTE)
return TRUE;
else
return FALSE;
@@ -5339,7 +4762,6 @@ void Task_RareCandy2(u8 taskId)
}
}
-#if ENGLISH
void PrintStatGrowthsInLevelUpWindow(u8 taskId)
{
u8 i;
@@ -5351,6 +4773,9 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId)
u8 x;
u8 y;
u32 stat;
+#if GERMAN
+ u8 *ptr;
+#endif
stat = GetMonData(ewram1C000.pokemon, StatDataTypes[i]);
@@ -5360,142 +4785,31 @@ void PrintStatGrowthsInLevelUpWindow(u8 taskId)
x = (i / 3) * 9 + 11;
y = ((i % 3) << 1) + 1;
+#if GERMAN
+ ptr = StringCopy(gStringVar1, StatNames[i]);
+ *ptr++ = EXT_CTRL_CODE_BEGIN;
+ *ptr++ = 0x13;
+ *ptr++ = 0x2E;
+ ptr = StringCopy(ptr, gOtherText_TallPlusAndRightArrow);
+ *ptr++ = EXT_CTRL_CODE_BEGIN;
+ *ptr++ = 0x13;
+ *ptr++ = 0x34;
+ ConvertIntToDecimalStringN(ptr, ewram1B000.statGrowths[i], 1, 2);
+ Menu_PrintText(gStringVar1, x + 1, y);
+#else
Menu_PrintTextPixelCoords(StatNames[i], (x + 1) * 8, y * 8, 1);
-
if (i == 2)
Menu_PrintTextPixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 0);
else
Menu_PrintTextPixelCoords(gOtherText_TallPlusAndRightArrow, (x + 6) * 8 + 6, y * 8, 1);
-
gStringVar1[0] = EXT_CTRL_CODE_BEGIN;
gStringVar1[1] = 0x14;
gStringVar1[2] = 0x06;
-
ConvertIntToDecimalStringN(gStringVar1 + 3, ewram1B000.statGrowths[i], 1, 2);
-
Menu_PrintTextPixelCoords(gStringVar1, (x + 6) * 8 + 12, y * 8, 0);
+#endif
}
}
-#elif GERMAN
-__attribute__((naked))
-void PrintStatGrowthsInLevelUpWindow(u8 taskId) {
- asm(".syntax unified\n\
- push {r4-r7,lr}\n\
- mov r7, r10\n\
- mov r6, r9\n\
- mov r5, r8\n\
- push {r5-r7}\n\
- movs r0, 0xB\n\
- movs r1, 0\n\
- movs r2, 0x1D\n\
- movs r3, 0x7\n\
- bl Menu_DrawStdWindowFrame\n\
- movs r7, 0\n\
- ldr r0, _0807092C @ =gStringVar1\n\
- mov r10, r0\n\
- movs r1, 0xFC\n\
- mov r9, r1\n\
- movs r2, 0x13\n\
- mov r8, r2\n\
-_0807086C:\n\
- ldr r1, _08070930 @ =gSharedMem + 0x1C000\n\
- ldr r0, [r1]\n\
- ldr r1, _08070934 @ =StatDataTypes\n\
- adds r1, r7, r1\n\
- ldrb r1, [r1]\n\
- bl GetMonData\n\
- adds r1, r7, 0x6\n\
- lsls r1, 1\n\
- ldr r2, _08070938 @ =gSharedMem + 0x1B264\n\
- adds r1, r2, r1\n\
- strh r0, [r1]\n\
- lsls r6, r7, 1\n\
- adds r6, r2, r6\n\
- ldrh r1, [r6]\n\
- subs r0, r1\n\
- strh r0, [r6]\n\
- adds r0, r7, 0\n\
- movs r1, 0x3\n\
- bl __udivsi3\n\
- lsls r0, 24\n\
- lsrs r0, 24\n\
- lsls r4, r0, 3\n\
- adds r4, r0\n\
- adds r4, 0xB\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- adds r0, r7, 0\n\
- movs r1, 0x3\n\
- bl __umodsi3\n\
- adds r5, r0, 0\n\
- lsls r5, 1\n\
- adds r5, 0x1\n\
- lsls r5, 24\n\
- lsrs r5, 24\n\
- ldr r1, _0807093C @ =StatNames\n\
- lsls r0, r7, 2\n\
- adds r0, r1\n\
- ldr r1, [r0]\n\
- mov r0, r10\n\
- bl StringCopy\n\
- adds r2, r0, 0\n\
- mov r0, r9\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
- mov r1, r8\n\
- strb r1, [r2]\n\
- adds r2, 0x1\n\
- movs r0, 0x2E\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
- adds r0, r2, 0\n\
- ldr r1, _08070940 @ =gOtherText_TallPlusAndRightArrow\n\
- bl StringCopy\n\
- adds r2, r0, 0\n\
- mov r0, r9\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
- mov r1, r8\n\
- strb r1, [r2]\n\
- adds r2, 0x1\n\
- movs r0, 0x34\n\
- strb r0, [r2]\n\
- adds r2, 0x1\n\
- movs r0, 0\n\
- ldrsh r1, [r6, r0]\n\
- adds r0, r2, 0\n\
- movs r2, 0x1\n\
- movs r3, 0x2\n\
- bl ConvertIntToDecimalStringN\n\
- adds r4, 0x1\n\
- lsls r4, 24\n\
- lsrs r4, 24\n\
- mov r0, r10\n\
- adds r1, r4, 0\n\
- adds r2, r5, 0\n\
- bl Menu_PrintText\n\
- adds r0, r7, 0x1\n\
- lsls r0, 24\n\
- lsrs r7, r0, 24\n\
- cmp r7, 0x5\n\
- bls _0807086C\n\
- pop {r3-r5}\n\
- mov r8, r3\n\
- mov r9, r4\n\
- mov r10, r5\n\
- pop {r4-r7}\n\
- pop {r0}\n\
- bx r0\n\
- .align 2, 0\n\
-_0807092C: .4byte gStringVar1\n\
-_08070930: .4byte gSharedMem + 0x1C000\n\
-_08070934: .4byte StatDataTypes\n\
-_08070938: .4byte gSharedMem + 0x1B264\n\
-_0807093C: .4byte StatNames\n\
-_08070940: .4byte gOtherText_TallPlusAndRightArrow\n\
- .syntax divided\n");
-}
-#endif
void PrintNewStatsInLevelUpWindow(u8 taskId)
{
@@ -5526,24 +4840,13 @@ void PrintNewStatsInLevelUpWindow(u8 taskId)
void RedrawPokemonInfoInMenu(u8 monIndex, struct Pokemon *pokemon)
{
- u8 statusAndPkrs;
- bool8 isDoubleBattle;
- u16 currentHP;
- u16 maxHP;
+ u8 statusAndPkrs = GetMonStatusAndPokerus(pokemon);
u8 icon;
- statusAndPkrs = GetMonStatusAndPokerus(pokemon);
if (statusAndPkrs == 0 || statusAndPkrs == 6)
- {
PartyMenuUpdateLevelOrStatus(pokemon, monIndex);
- }
-
- isDoubleBattle = IsDoubleBattle();
- currentHP = GetMonData(pokemon, MON_DATA_HP);
- maxHP = GetMonData(pokemon, MON_DATA_MAX_HP);
-
- PartyMenuDoPrintHP(monIndex, isDoubleBattle, currentHP, maxHP);
+ PartyMenuDoPrintHP(monIndex, IsDoubleBattle(), GetMonData(pokemon, MON_DATA_HP), GetMonData(pokemon, MON_DATA_MAX_HP));
PartyMenuTryDrawHPBar(monIndex, pokemon);
icon = GetMonIconSpriteId(ewram1C000.unk4, monIndex);
@@ -5569,45 +4872,45 @@ void Task_RareCandy3(u8 taskId)
switch (learnedMove)
{
- case 0:
- // No move is learned.
- evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0);
- if (evolutionSpecies != 0)
- {
- gCB2_AfterEvolution = sub_80A53F8;
- BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5);
- DestroyTask(taskId);
- }
- else
- {
- sub_8070D90(taskId);
- }
- break;
- case 0xFFFF:
- // Mon already knows 4 moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
-
- StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
- sub_806E834(gStringVar4, 1);
-
- ewram1C000.unk8 = gMoveToLearn;
- gTasks[taskId].func = sub_806F358;
- break;
- case 0xFFFE:
- // Move was already known by the mon.
- gTasks[taskId].func = TeachMonMoveInPartyMenu;
- break;
- default:
- // Mon automatically learned a move because it knew less than four moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[learnedMove]);
-
- StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
- sub_806E834(gStringVar4, 1);
-
- gTasks[taskId].func = Task_TeamMonTMMove3;
- break;
+ case 0:
+ // No move is learned.
+ evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0);
+ if (evolutionSpecies != 0)
+ {
+ gCB2_AfterEvolution = sub_80A53F8;
+ BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5);
+ DestroyTask(taskId);
+ }
+ else
+ {
+ sub_8070D90(taskId);
+ }
+ break;
+ case 0xFFFF:
+ // Mon already knows 4 moves.
+ GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
+
+ StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
+ sub_806E834(gStringVar4, 1);
+
+ ewram1C000.unk8 = gMoveToLearn;
+ gTasks[taskId].func = sub_806F358;
+ break;
+ case 0xFFFE:
+ // Move was already known by the mon.
+ gTasks[taskId].func = TeachMonMoveInPartyMenu;
+ break;
+ default:
+ // Mon automatically learned a move because it knew less than four moves.
+ GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[learnedMove]);
+
+ StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
+ sub_806E834(gStringVar4, 1);
+
+ gTasks[taskId].func = Task_TeamMonTMMove3;
+ break;
}
}
}
@@ -5621,45 +4924,45 @@ void TeachMonMoveInPartyMenu(u8 taskId)
learnedMove = MonTryLearningNewMove(ewram1C000.pokemon, FALSE);
switch (learnedMove)
{
- case 0:
- // No move is learned.
- evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0);
- if (evolutionSpecies != 0)
- {
- gCB2_AfterEvolution = sub_80A53F8;
- BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5);
- DestroyTask(taskId);
- }
- else
- {
- sub_8070D90(taskId);
- }
- break;
- case 0xFFFF:
- // Mon already knows 4 moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
+ case 0:
+ // No move is learned.
+ evolutionSpecies = GetEvolutionTargetSpecies(ewram1C000.pokemon, 0, 0);
+ if (evolutionSpecies != 0)
+ {
+ gCB2_AfterEvolution = sub_80A53F8;
+ BeginEvolutionScene(ewram1C000.pokemon, evolutionSpecies, TRUE, ewram1C000.unk5);
+ DestroyTask(taskId);
+ }
+ else
+ {
+ sub_8070D90(taskId);
+ }
+ break;
+ case 0xFFFF:
+ // Mon already knows 4 moves.
+ GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[gMoveToLearn]);
- StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
- sub_806E834(gStringVar4, 1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_WantsToLearn);
+ sub_806E834(gStringVar4, 1);
- ewram1C000.unk8 = gMoveToLearn;
- gTasks[taskId].func = sub_806F358;
- break;
- case 0xFFFE:
- // Move was already known by the mon. Go on the the next move to be learned.
- TeachMonMoveInPartyMenu(taskId);
- break;
- default:
- // Mon automatically learned a move because it knew less than four moves.
- GetMonNickname(ewram1C000.pokemon, gStringVar1);
- StringCopy(gStringVar2, gMoveNames[learnedMove]);
+ ewram1C000.unk8 = gMoveToLearn;
+ gTasks[taskId].func = sub_806F358;
+ break;
+ case 0xFFFE:
+ // Move was already known by the mon. Go on the the next move to be learned.
+ TeachMonMoveInPartyMenu(taskId);
+ break;
+ default:
+ // Mon automatically learned a move because it knew less than four moves.
+ GetMonNickname(ewram1C000.pokemon, gStringVar1);
+ StringCopy(gStringVar2, gMoveNames[learnedMove]);
- StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
- sub_806E834(gStringVar4, 1);
+ StringExpandPlaceholders(gStringVar4, gOtherText_LearnedMove);
+ sub_806E834(gStringVar4, 1);
- gTasks[taskId].func = Task_TeamMonTMMove3;
- break;
+ gTasks[taskId].func = Task_TeamMonTMMove3;
+ break;
}
}
diff --git a/src/field/secret_base.c b/src/field/secret_base.c
index 8b67a2cd9..210d49835 100644
--- a/src/field/secret_base.c
+++ b/src/field/secret_base.c
@@ -23,6 +23,7 @@
#include "menu.h"
#include "menu_helpers.h"
#include "metatile_behavior.h"
+#include "new_game.h"
#include "palette.h"
#include "pokemon.h"
#include "overworld.h"
@@ -127,10 +128,11 @@ void ClearSecretBase(struct SecretBaseRecord *record)
{
u16 i;
u16 j;
+
record->secretBaseId = 0;
- for (i=0; i<OT_NAME_LENGTH; i++)
+ for (i = 0; i < OT_NAME_LENGTH; i++)
record->playerName[i] = 0xff;
- for (i=0; i<4; i++)
+ for (i = 0; i < 4; i++)
record->trainerId[i] = 0x00;
record->sbr_field_e = 0;
record->sbr_field_10 = 0;
@@ -139,14 +141,15 @@ void ClearSecretBase(struct SecretBaseRecord *record)
record->gender = 0;
record->sbr_field_1_5 = 0;
record->sbr_field_1_6 = 0;
- for (i=0; i<16; i++) {
+ for (i = 0; i < 16; i++)
+ {
record->decorations[i] = 0;
record->decorationPos[i] = 0;
}
- for (i=0; i<6; i++) {
- for (j=0; j<4; j++) {
+ for (i = 0; i < 6; i++)
+ {
+ for (j = 0; j < 4; j++)
record->partyMoves[i * 4 + j] = 0;
- }
record->partyPersonality[i] = 0;
record->partyEVs[i] = 0;
record->partySpecies[i] = 0;
@@ -175,17 +178,20 @@ void sub_80BB5D0(void)
void sub_80BB5E4(void)
{
u16 i;
+
gSpecialVar_Result = 0;
- for (i = 0; i < MAX_SECRET_BASES; i++) {
- if (gUnknown_020387DC != gSaveBlock1.secretBases[i].secretBaseId)
- continue;
- gSpecialVar_Result = 1;
- VarSet(VAR_CURRENT_SECRET_BASE, i);
- break;
+ for (i = 0; i < MAX_SECRET_BASES; i++)
+ {
+ if (gUnknown_020387DC == gSaveBlock1.secretBases[i].secretBaseId)
+ {
+ gSpecialVar_Result = 1;
+ VarSet(VAR_CURRENT_SECRET_BASE, i);
+ break;
+ }
}
}
-void sub_80BB63C(void) // 80bb63c
+void sub_80BB63C(void)
{
if (gSaveBlock1.secretBases[0].secretBaseId)
gSpecialVar_Result = 1;
@@ -193,7 +199,7 @@ void sub_80BB63C(void) // 80bb63c
gSpecialVar_Result = 0;
}
-u8 sub_80BB66C(void) // 80bb66c
+u8 sub_80BB66C(void)
{
s16 x, y;
s16 v0;
@@ -214,7 +220,7 @@ u8 sub_80BB66C(void) // 80bb66c
return 0;
}
-void sub_80BB70C(void) // 80bb70c
+void sub_80BB70C(void)
{
gSpecialVar_0x8007 = sub_80BB66C();
}
@@ -222,9 +228,11 @@ void sub_80BB70C(void) // 80bb70c
s16 unref_sub_80BB724(u16 *a0, u8 a1)
{
u16 v2;
- for (v2=0; v2<0x200; v2++) {
+
+ for (v2 = 0; v2 < 0x200; v2++)
+ {
if ((a0[v2] & 0xFFF) == a1)
- return (s16)v2;
+ return v2;
}
return -1;
}
@@ -232,9 +240,13 @@ s16 unref_sub_80BB724(u16 *a0, u8 a1)
void sub_80BB764(s16 *arg1, s16 *arg2, u16 arg3)
{
s16 x, y;
- for (y=0; y<gMapHeader.mapData->height; y++) {
- for (x=0; x<gMapHeader.mapData->width; x++) {
- if ((gMapHeader.mapData->map[y * gMapHeader.mapData->width + x] & 0x3ff) == arg3) {
+
+ for (y=0; y<gMapHeader.mapData->height; y++)
+ {
+ for (x=0; x<gMapHeader.mapData->width; x++)
+ {
+ if ((gMapHeader.mapData->map[y * gMapHeader.mapData->width + x] & 0x3ff) == arg3)
+ {
*arg1 = x;
*arg2 = y;
return;
@@ -248,17 +260,22 @@ void sub_80BB800(void)
s16 x, y;
s16 tile_id;
u16 idx;
+
GetXYCoordsOneStepInFrontOfPlayer(&x, &y);
tile_id = MapGridGetMetatileIdAt(x, y);
- for (idx=0; idx<7; idx++) {
- if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) {
+ for (idx = 0; idx < 7; idx++)
+ {
+ if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id)
+ {
MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00);
CurrentMapDrawMetatileAt(x, y);
return;
}
}
- for (idx=0; idx<7; idx++) {
- if (gUnknown_083D1358[idx].unk_083D1358_1 == tile_id) {
+ for (idx = 0; idx < 7; idx++)
+ {
+ if (gUnknown_083D1358[idx].unk_083D1358_1 == tile_id)
+ {
MapGridSetMetatileIdAt(x, y, gUnknown_083D1358[idx].unk_083D1358_0 | 0xc00);
CurrentMapDrawMetatileAt(x, y);
return;
@@ -269,7 +286,9 @@ void sub_80BB800(void)
u8 sub_80BB8A8(u8 *arg1)
{
u8 idx;
- for (idx=0; idx<7; idx++) {
+
+ for (idx=0; idx<7; idx++)
+ {
if (arg1[idx] == EOS)
return idx;
}
@@ -280,10 +299,10 @@ void sub_80BB8CC(void)
{
u8 nameLength;
u16 idx;
+
gSaveBlock1.secretBases[0].secretBaseId = gUnknown_020387DC;
- for (idx=0; idx<4; idx++) {
+ for (idx=0; idx<4; idx++)
gSaveBlock1.secretBases[0].trainerId[idx] = gSaveBlock2.playerTrainerId[idx];
- }
VarSet(VAR_CURRENT_SECRET_BASE, 0);
nameLength = sub_80BB8A8(gSaveBlock2.playerName);
memset(gSaveBlock1.secretBases[0].playerName, 0xFF, OT_NAME_LENGTH);
@@ -296,13 +315,20 @@ void sub_80BB970(struct MapEvents *events)
{
u16 bgevidx, idx, jdx;
s16 tile_id;
- for (bgevidx=0; bgevidx<events->bgEventCount; bgevidx++) {
- if (events->bgEvents[bgevidx].kind == 8) {
- for (jdx=0; jdx<MAX_SECRET_BASES; jdx++) {
- if (gSaveBlock1.secretBases[jdx].secretBaseId == events->bgEvents[bgevidx].bgUnion.secretBaseId) {
+
+ for (bgevidx = 0; bgevidx < events->bgEventCount; bgevidx++)
+ {
+ if (events->bgEvents[bgevidx].kind == 8)
+ {
+ for (jdx = 0; jdx < MAX_SECRET_BASES; jdx++)
+ {
+ if (gSaveBlock1.secretBases[jdx].secretBaseId == events->bgEvents[bgevidx].bgUnion.secretBaseId)
+ {
tile_id = MapGridGetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7);
- for (idx=0; idx<7; idx++) {
- if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id) {
+ for (idx = 0; idx < 7; idx++)
+ {
+ if (gUnknown_083D1358[idx].unk_083D1358_0 == tile_id)
+ {
MapGridSetMetatileIdAt(events->bgEvents[bgevidx].x + 7, events->bgEvents[bgevidx].y + 7, gUnknown_083D1358[idx].unk_083D1358_1 | 0xc00);
break;
}
@@ -323,14 +349,14 @@ void sub_80BBA14(void)
void sub_80BBA48(u8 taskid)
{
u16 curbaseid;
- switch (gTasks[taskid].data[0]) {
+ switch (gTasks[taskid].data[0])
+ {
case 0:
gTasks[taskid].data[0] = 1;
break;
case 1:
- if (!gPaletteFade.active) {
+ if (!gPaletteFade.active)
gTasks[taskid].data[0] = 2;
- }
break;
case 2:
curbaseid = VarGet(VAR_CURRENT_SECRET_BASE);
@@ -362,7 +388,8 @@ bool8 sub_80BBB24(void)
void sub_80BBB50(u8 taskid)
{
FieldObjectTurn(&(gMapObjects[gPlayerAvatar.mapObjectId]), 2);
- if (IsWeatherNotFadingIn() == 1) {
+ if (IsWeatherNotFadingIn() == 1)
+ {
EnableBothScriptContexts();
DestroyTask(taskid);
}
@@ -371,6 +398,7 @@ void sub_80BBB50(u8 taskid)
void sub_80BBB90(void)
{
s16 x, y;
+
ScriptContext2_Enable();
HideMapNamePopup();
sub_80BB764(&x, &y, 0x220);
@@ -383,7 +411,9 @@ void sub_80BBB90(void)
void sub_80BBBEC(u8 taskid)
{
s8 idx;
- if (!gPaletteFade.active) {
+
+ if (!gPaletteFade.active)
+ {
idx = 4 * (gUnknown_020387DC / 10);
Overworld_SetWarpDestination(gSaveBlock1.location.mapGroup, gSaveBlock1.location.mapNum, -1, gUnknown_083D1374[idx + 2], gUnknown_083D1374[idx + 3]);
warp_in();
@@ -411,17 +441,29 @@ void sub_80BBCCC(u8 flagIn)
{
u16 curBaseId;
u16 x, y;
- if (CurrentMapIsSecretBase()) {
+
+ if (CurrentMapIsSecretBase())
+ {
curBaseId = VarGet(VAR_CURRENT_SECRET_BASE);
- for (x=0; x<16; x++) {
- if (gSaveBlock1.secretBases[curBaseId].decorations[x] > 0 && gSaveBlock1.secretBases[curBaseId].decorations[x] <= 0x78 && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].permission != DECORPERM_SOLID_MAT) {
- sub_80FF394((gSaveBlock1.secretBases[curBaseId].decorationPos[x] >> 4) + 7, (gSaveBlock1.secretBases[curBaseId].decorationPos[x] & 0xF) + 7, gSaveBlock1.secretBases[curBaseId].decorations[x]);
+ for (x = 0; x < 16; x++)
+ {
+ if (gSaveBlock1.secretBases[curBaseId].decorations[x] > 0
+ && gSaveBlock1.secretBases[curBaseId].decorations[x] <= 0x78
+ && gDecorations[gSaveBlock1.secretBases[curBaseId].decorations[x]].permission != DECORPERM_SOLID_MAT)
+ {
+ sub_80FF394(
+ (gSaveBlock1.secretBases[curBaseId].decorationPos[x] >> 4) + 7,
+ (gSaveBlock1.secretBases[curBaseId].decorationPos[x] & 0xF) + 7,
+ gSaveBlock1.secretBases[curBaseId].decorations[x]);
}
}
- if (curBaseId != 0) {
+ if (curBaseId != 0)
+ {
sub_80BB764(&x, &y, 0x220);
MapGridSetMetatileIdAt(x + 7, y + 7, 0xe21);
- } else if (flagIn == 1 && VarGet(VAR_0x4089) == 1) {
+ }
+ else if (flagIn == 1 && VarGet(VAR_0x4089) == 1)
+ {
sub_80BB764(&x, &y, 0x220);
MapGridSetMetatileIdAt(x + 7, y + 7, 0xe0a);
}
@@ -438,38 +480,47 @@ void sub_80BBDD0(void)
u8 permission;
u8 ndecor;
u16 curBase = VarGet(VAR_CURRENT_SECRET_BASE);
- if (!CurrentMapIsSecretBase()) {
+
+ if (!CurrentMapIsSecretBase())
+ {
roomdecor = gSaveBlock1.playerRoomDecor;
roomdecorpos = gSaveBlock1.playerRoomDecorPos;
ndecor = 12;
- } else {
+ }
+ else
+ {
roomdecor = gSaveBlock1.secretBases[curBase].decorations;
roomdecorpos = gSaveBlock1.secretBases[curBase].decorationPos;
ndecor = 16;
}
- for (decidx=0; decidx<ndecor; decidx++) {
- if (roomdecor[decidx] != DECOR_NONE) {
+ for (decidx = 0; decidx < ndecor; decidx++)
+ {
+ if (roomdecor[decidx] != DECOR_NONE)
+ {
permission = gDecorations[roomdecor[decidx]].permission;
if (permission == DECORPERM_SOLID_MAT)
{
- for (objid=0; objid<gMapHeader.events->mapObjectCount; objid++) {
+ for (objid = 0; objid < gMapHeader.events->mapObjectCount; objid++)
+ {
if (gMapHeader.events->mapObjects[objid].flagId == gSpecialVar_0x8004 + 0xAE)
break;
}
- if (objid == gMapHeader.events->mapObjectCount)
- continue;
- gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4;
- gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF;
- metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7);
- if (sub_80572D8(metatile) == TRUE || sub_80572EC(metatile) == TRUE) {
- gSpecialVar_Result = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20;
- VarSet(gSpecialVar_Result, gDecorations[roomdecor[decidx]].tiles[0]);
- gSpecialVar_Result = gMapHeader.events->mapObjects[objid].localId;
- FlagClear(gSpecialVar_0x8004 + 0xAE);
- show_sprite(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
- sub_805C0F8(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
- sub_805C78C(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
- gSpecialVar_0x8004 ++;
+ if (objid != gMapHeader.events->mapObjectCount)
+ {
+ gSpecialVar_0x8006 = roomdecorpos[decidx] >> 4;
+ gSpecialVar_0x8007 = roomdecorpos[decidx] & 0xF;
+ metatile = MapGridGetMetatileBehaviorAt(gSpecialVar_0x8006 + 7, gSpecialVar_0x8007 + 7);
+ if (sub_80572D8(metatile) == TRUE || sub_80572EC(metatile) == TRUE)
+ {
+ gSpecialVar_Result = gMapHeader.events->mapObjects[objid].graphicsId + VAR_0x3F20;
+ VarSet(gSpecialVar_Result, gDecorations[roomdecor[decidx]].tiles[0]);
+ gSpecialVar_Result = gMapHeader.events->mapObjects[objid].localId;
+ FlagClear(gSpecialVar_0x8004 + 0xAE);
+ show_sprite(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ sub_805C0F8(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup, gSpecialVar_0x8006, gSpecialVar_0x8007);
+ sub_805C78C(gSpecialVar_Result, gSaveBlock1.location.mapNum, gSaveBlock1.location.mapGroup);
+ gSpecialVar_0x8004 ++;
+ }
}
}
}
@@ -485,8 +536,12 @@ void sub_80BBFA4(void)
void sub_80BBFD8(struct MapPosition *position, struct MapEvents *events)
{
s16 bgevtidx;
- for (bgevtidx=0; bgevtidx<events->bgEventCount; bgevtidx++) {
- if (events->bgEvents[bgevtidx].kind == 8 && position->x == events->bgEvents[bgevtidx].x + 7 && position->y == events->bgEvents[bgevtidx].y + 7) {
+
+ for (bgevtidx = 0; bgevtidx < events->bgEventCount; bgevtidx++)
+ {
+ if (events->bgEvents[bgevtidx].kind == 8 && position->x == events->bgEvents[bgevtidx].x + 7
+ && position->y == events->bgEvents[bgevtidx].y + 7)
+ {
gUnknown_020387DC = events->bgEvents[bgevtidx].bgUnion.secretBaseId;
break;
}
@@ -511,15 +566,15 @@ bool8 sub_80BC050(void)
void sub_80BC074(u8 taskid)
{
- switch (gTasks[taskid].data[0]) {
+ switch (gTasks[taskid].data[0])
+ {
case 0:
ScriptContext2_Enable();
gTasks[taskid].data[0] = 1;
break;
case 1:
- if (!gPaletteFade.active) {
+ if (!gPaletteFade.active)
gTasks[taskid].data[0] = 2;
- }
break;
case 2:
copy_saved_warp2_bank_and_enter_x_to_warp1(0x7E);
@@ -532,12 +587,14 @@ void sub_80BC074(u8 taskid)
}
}
-void sub_80BC0F8(void) {
+void sub_80BC0F8(void)
+{
CreateTask(sub_80BC074, 0);
FadeScreen(1, 0);
}
-void sub_80BC114(void) {
+void sub_80BC114(void)
+{
if (gSaveBlock1.secretBases[0].secretBaseId != gUnknown_020387DC)
gSpecialVar_Result = 1;
else
@@ -547,14 +604,17 @@ void sub_80BC114(void) {
u8 sub_80BC14C(u8 sbid)
{
s16 idx;
- for (idx=0; idx<MAX_SECRET_BASES; idx++) {
+
+ for (idx = 0; idx < MAX_SECRET_BASES; idx++)
+ {
if (gSaveBlock1.secretBases[idx].secretBaseId == sbid)
return idx;
}
return 0;
}
-u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190
+u8 *sub_80BC190(u8 *dest, u8 arg1)
+{
u8 local1;
u8 *str;
@@ -570,12 +630,14 @@ u8 *sub_80BC190(u8 *dest, u8 arg1) { // 80bc190
#endif
}
-u8 *GetSecretBaseMapName(u8 *dest) {
+u8 *GetSecretBaseMapName(u8 *dest)
+{
gUnknown_020387DC = gSaveBlock1.secretBases[VarGet(VAR_CURRENT_SECRET_BASE)].secretBaseId;
return sub_80BC190(dest, VarGet(VAR_CURRENT_SECRET_BASE));
}
-void BufferSecretBaseOwnerName(void) {
+void BufferSecretBaseOwnerName(void)
+{
u8 *var0 = gSaveBlock1.secretBases[(u8)VarGet(VAR_CURRENT_SECRET_BASE)].playerName;
u8 *var1 = gStringVar1;
u8 var2 = sub_80BB8A8(var0);
@@ -583,13 +645,16 @@ void BufferSecretBaseOwnerName(void) {
*var3 = EOS;
}
-bool8 sub_80BC268(u8 i) { // 80bc268
+bool8 sub_80BC268(u8 i)
+{
if (gSaveBlock1.secretBases[i].sbr_field_1_6)
return TRUE;
- return FALSE;
+ else
+ return FALSE;
}
-u8 sub_80BC298(struct Pokemon *mon) { // 80bc298
+u8 sub_80BC298(struct Pokemon *mon)
+{
u16 evsum = GetMonData(mon, MON_DATA_HP_EV);
evsum += GetMonData(mon, MON_DATA_ATK_EV);
evsum += GetMonData(mon, MON_DATA_DEF_EV);
@@ -804,10 +869,11 @@ void sub_80BC474(void)
{
u16 eventId;
struct MapEvents *mapEvents = gMapHeader.events;
+
for (eventId = 0; eventId < mapEvents->bgEventCount; eventId++)
{
if (mapEvents->bgEvents[eventId].kind == 8
- && gSaveBlock1.secretBases[0].secretBaseId == mapEvents->bgEvents[eventId].bgUnion.secretBaseId)
+ && gSaveBlock1.secretBases[0].secretBaseId == mapEvents->bgEvents[eventId].bgUnion.secretBaseId)
{
u16 i;
s16 tileId = MapGridGetMetatileIdAt(mapEvents->bgEvents[eventId].x + 7, mapEvents->bgEvents[eventId].y + 7);
@@ -845,33 +911,23 @@ u8 sub_80BC538(void)
{
s16 secretBaseIndex;
u8 retVal = 0;
-
+
for (secretBaseIndex = 1; secretBaseIndex < MAX_SECRET_BASES; secretBaseIndex++)
{
if (sub_80BC268(secretBaseIndex) == TRUE)
- {
retVal++;
- }
}
-
return retVal;
}
void sub_80BC56C(void)
{
- u8 secretBaseIndex = sub_80BC14C(gUnknown_020387DC);
- if (sub_80BC268(secretBaseIndex) == TRUE)
- {
+ if (sub_80BC268(sub_80BC14C(gUnknown_020387DC)) == TRUE)
gSpecialVar_Result = 1;
- }
else if (sub_80BC538() > 9)
- {
gSpecialVar_Result = 2;
- }
else
- {
gSpecialVar_Result = 0;
- }
}
void sub_80BC5BC(void)
@@ -897,18 +953,15 @@ void Task_SecretBasePC_Registry(u8 taskId)
ScriptContext2_Enable();
ClearVerticalScrollIndicatorPalettes();
LoadScrollIndicatorPalette();
-
+
taskData = gTasks[taskId].data;
taskData[0] = sub_80BC538();
if (taskData[0] != 0)
{
- if (taskData[0] > 7) {
+ if (taskData[0] > 7)
taskData[3] = 7;
- }
else
- {
taskData[3] = taskData[0];
- }
taskData[1] = 0;
taskData[2] = 0;
@@ -964,7 +1017,9 @@ void sub_80BC6B0(u8 taskId)
Menu_BlankWindowRect(18, ((n << 25) + (1 << 26)) >> 24, 28, 18); // the shifts are needed to match
}
else
+ {
CreateVerticalScrollIndicators(BOTTOM_ARROW, 0xbc, 0x98);
+ }
if (taskData[2] == 0)
DestroyVerticalScrollIndicator(TOP_ARROW);
@@ -989,12 +1044,12 @@ void sub_80BC824(u8 taskId)
{
if (taskData[1])
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
taskData[1] = Menu_MoveCursor(-1);
}
else if (taskData[2])
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
taskData[2]--;
sub_80BC6B0(taskId);
}
@@ -1005,20 +1060,20 @@ void sub_80BC824(u8 taskId)
{
if (taskData[2] + taskData[1] != taskData[0])
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
taskData[2]++;
sub_80BC6B0(taskId);
}
}
else
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
taskData[1] = Menu_MoveCursor(1);
}
}
else if (gMain.newKeys & A_BUTTON)
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
if (taskData[1] + taskData[2] == taskData[0])
{
Menu_DestroyCursor();
@@ -1034,7 +1089,7 @@ void sub_80BC824(u8 taskId)
}
else if (gMain.newKeys & B_BUTTON)
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
Menu_DestroyCursor();
Menu_EraseWindowRect(0, 0, 29, 19);
sub_80BCC54(taskId);
@@ -1078,7 +1133,7 @@ void sub_80BC9E4(u8 taskId)
{
if (Menu_GetCursorPos())
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
Menu_MoveCursor(-1);
}
}
@@ -1086,18 +1141,18 @@ void sub_80BC9E4(u8 taskId)
{
if (Menu_GetCursorPos() != 1)
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
Menu_MoveCursor(1);
}
}
else if (gMain.newKeys & A_BUTTON)
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
gUnknown_083D13D4[Menu_GetCursorPos()].func(taskId);
}
else if (gMain.newKeys & B_BUTTON)
{
- PlaySE(5);
+ PlaySE(SE_SELECT);
sub_80BCBF8(taskId);
}
}
@@ -1132,14 +1187,10 @@ void sub_80BCB10(u8 taskId)
taskData[0]--;
if (taskData[2] > 0)
- {
taskData[2]--;
- }
if (taskData[0] < 8)
- {
taskData[3]--;
- }
sub_80BC7D8(taskId);
gTasks[taskId].func = sub_80BC824;
@@ -1180,13 +1231,9 @@ void sub_80BCC54(u8 taskId)
DestroyVerticalScrollIndicator(BOTTOM_ARROW);
if (curBaseIndex == 0)
- {
ScriptContext1_SetupScript(gUnknown_0815F399);
- }
else
- {
ScriptContext1_SetupScript(gUnknown_0815F49A);
- }
DestroyTask(taskId);
}
@@ -1216,7 +1263,8 @@ const u8 *GetSecretBaseTrainerLoseText(void)
void unref_sub_80BCD7C(u8 secretBaseIndex)
{
u16 i;
- for (i = 0; i == 0; i++)
+
+ for (i = 0; i < 1; i++)
{
gSaveBlock1.secretBases[secretBaseIndex].partyPersonality[i] = i + 1;
gSaveBlock1.secretBases[secretBaseIndex].partyMoves[i * 4] = i + 1;
@@ -1230,8 +1278,8 @@ void unref_sub_80BCD7C(u8 secretBaseIndex)
void sub_80BCE1C(void)
{
u16 curBaseIndex = VarGet(VAR_CURRENT_SECRET_BASE);
- sub_810FB10(1);
+ sub_810FB10(1);
CreateSecretBaseEnemyParty(&gSaveBlock1.secretBases[curBaseIndex]);
}
@@ -1249,9 +1297,7 @@ void sub_80BCE90()
u8 i;
for (i = 0; i < MAX_SECRET_BASES; i++)
- {
gSaveBlock1.secretBases[i].sbr_field_1_5 = 0;
- }
FlagSet(FLAG_DAILY_UNKNOWN_8C2);
}
@@ -1281,28 +1327,18 @@ void sub_80BCF1C(u8 taskId)
behavior = MapGridGetMetatileBehaviorAt(x, y);
if (sub_8057350(behavior) == TRUE)
- {
DoYellowCave4Sparkle();
- }
else if (sub_8057314(behavior) == TRUE)
- {
sub_80C68A4(MapGridGetMetatileIdAt(x, y), x, y);
- }
else if (sub_8057328(behavior) == TRUE)
- {
sub_80C6A54(x, y);
- }
else if (sub_805733C(behavior) == TRUE)
- {
DoDecorationSoundEffect(MapGridGetMetatileIdAt(x, y));
- }
}
break;
case 2:
if (!FieldEffectActiveListContains(taskData[4]))
- {
taskData[1] = 1;
- }
break;
}
}
@@ -1320,9 +1356,7 @@ bool8 sub_80BD070(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB
for (i = 0; i < 4; i++)
{
if (baseA->trainerId[i] != baseB->trainerId[i])
- {
return FALSE;
- }
}
return TRUE;
@@ -1335,9 +1369,7 @@ bool8 sub_80BD0A0(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB
for (i = 0; i < OT_NAME_LENGTH && (baseA->playerName[i] != 0xFF || baseB->playerName[i] != 0xFF); i++)
{
if (baseA->playerName[i] != baseB->playerName[i])
- {
return FALSE;
- }
}
return TRUE;
@@ -1346,12 +1378,9 @@ bool8 sub_80BD0A0(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB
bool8 sub_80BD0EC(struct SecretBaseRecord *baseA, struct SecretBaseRecord *baseB)
{
if (baseA->gender == baseB->gender && sub_80BD070(baseA, baseB) && sub_80BD0A0(baseA, baseB))
- {
return TRUE;
- }
-
-
- return FALSE;
+ else
+ return FALSE;
}
s16 sub_80BD12C(u8 secretBaseId)
@@ -1361,9 +1390,7 @@ s16 sub_80BD12C(u8 secretBaseId)
for (i = 0; i < MAX_SECRET_BASES; i++)
{
if (gSaveBlock1.secretBases[i].secretBaseId == secretBaseId)
- {
return i;
- }
}
return -1;
@@ -1376,9 +1403,7 @@ u8 sub_80BD170(void)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
if (gSaveBlock1.secretBases[i].secretBaseId == 0)
- {
return i;
- }
}
return 0;
@@ -1391,9 +1416,7 @@ u8 sub_80BD1B0(void)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
if (gSaveBlock1.secretBases[i].sbr_field_1_6 == 0 && gSaveBlock1.secretBases[i].sbr_field_1_0 == 0)
- {
return i;
- }
}
return 0;
@@ -1404,9 +1427,7 @@ u8 sub_80BD1FC(struct SecretBaseRecord *secretBase)
s16 secretBaseIndex;
if (secretBase->secretBaseId == 0)
- {
return 0;
- }
secretBaseIndex = sub_80BD12C(secretBase->secretBaseId);
if (secretBaseIndex != 0)
@@ -1414,11 +1435,9 @@ u8 sub_80BD1FC(struct SecretBaseRecord *secretBase)
if (secretBaseIndex != -1)
{
if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_0 == 1)
- {
return 0;
- }
if (gSaveBlock1.secretBases[secretBaseIndex].sbr_field_1_6 != 2
- || secretBase->sbr_field_1_0 == 1)
+ || secretBase->sbr_field_1_0 == 1)
{
sub_80BD034(secretBaseIndex, secretBase);
return secretBaseIndex;
@@ -1456,7 +1475,7 @@ void sub_80BD280(void)
for (j = i + 1; j < MAX_SECRET_BASES; j++)
{
if ((!secretBases[i].sbr_field_1_6 && secretBases[j].sbr_field_1_6 == 1)
- || (secretBases[i].sbr_field_1_6 == 2 && secretBases[j].sbr_field_1_6 != 2))
+ || (secretBases[i].sbr_field_1_6 == 2 && secretBases[j].sbr_field_1_6 != 2))
{
temp = secretBases[i];
secretBases[i] = secretBases[j];
@@ -1473,9 +1492,7 @@ void sub_80BD328(struct SecretBaseRecord *secretBases, u8 b)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
if (secretBases[i].sbr_field_1_6 == b)
- {
sub_80BD1FC(&secretBases[i]);
- }
}
}
@@ -1540,9 +1557,7 @@ void sub_80BD3DC(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
}
if (var1 == 7)
- {
break;
- }
}
}
@@ -1588,16 +1603,12 @@ void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
if (basesA[i].secretBaseId)
{
if (basesA[i].sbr_field_1_6 == 1)
- {
basesA[i].sbr_field_1_0 = 1;
- }
if (!sub_80BD494(&basesA[i], basesB, i))
{
if (!sub_80BD494(&basesA[i], basesC, i))
- {
sub_80BD494(&basesA[i], basesD, i);
- }
}
}
}
@@ -1609,9 +1620,7 @@ void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
basesB[i].sbr_field_1_5 = 0;
if (!sub_80BD494(&basesB[i], basesC, i))
- {
sub_80BD494(&basesB[i], basesD, i);
- }
}
}
@@ -1624,9 +1633,7 @@ void sub_80BD514(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
}
if (basesD[i].secretBaseId)
- {
basesD[i].sbr_field_1_5 = 0;
- }
}
}
@@ -1648,183 +1655,16 @@ void sub_80BD610(struct SecretBaseRecord *basesA, struct SecretBaseRecord *bases
sub_80BD328(basesC, 0);
}
-#if DEBUG
-__attribute__((naked))
-void sub_80BD674(void *playerRecords, u32 size, u8 c)
-{
- asm("\
- push {r4, r5, r6, r7, lr}\n\
- add r6, r0, #0\n\
- add r5, r1, #0\n\
- lsl r2, r2, #0x18\n\
- lsr r7, r2, #0x18\n\
- ldr r0, ._503 @ gUnknown_020297ED\n\
- ldrb r0, [r0]\n\
- cmp r0, #0\n\
- bne ._498 @cond_branch\n\
- mov r0, #0x60\n\
- bl FlagGet\n\
- lsl r0, r0, #0x18\n\
- cmp r0, #0\n\
- bne ._498 @cond_branch\n\
- b ._520\n\
-._498:\n\
- bl GetLinkPlayerCount\n\
- lsl r0, r0, #0x18\n\
- lsr r0, r0, #0x18\n\
- cmp r0, #0x2\n\
- beq ._500 @cond_branch\n\
- cmp r0, #0x3\n\
- beq ._501 @cond_branch\n\
- b ._505\n\
-._504:\n\
- .align 2, 0\n\
-._503:\n\
- .word gUnknown_020297ED\n\
-._500:\n\
- lsl r4, r5, #0x1\n\
- add r0, r6, r4\n\
- mov r1, #0x0\n\
- add r2, r5, #0\n\
- bl memset\n\
- add r4, r4, r5\n\
- add r4, r6, r4\n\
- add r0, r4, #0\n\
- mov r1, #0x0\n\
- add r2, r5, #0\n\
- bl memset\n\
- b ._505\n\
-._501:\n\
- lsl r0, r5, #0x1\n\
- add r0, r0, r5\n\
- add r0, r6, r0\n\
- mov r1, #0x0\n\
- add r2, r5, #0\n\
- bl memset\n\
-._505:\n\
- cmp r7, #0x1\n\
- beq ._506 @cond_branch\n\
- cmp r7, #0x1\n\
- bgt ._507 @cond_branch\n\
- cmp r7, #0\n\
- beq ._508 @cond_branch\n\
- b ._515\n\
-._507:\n\
- cmp r7, #0x2\n\
- beq ._510 @cond_branch\n\
- cmp r7, #0x3\n\
- beq ._511 @cond_branch\n\
- b ._515\n\
-._508:\n\
- add r0, r6, r5\n\
- lsl r2, r5, #0x1\n\
- add r1, r6, r2\n\
- add r2, r2, r5\n\
- add r2, r6, r2\n\
- bl sub_80BD610\n\
- b ._515\n\
-._506:\n\
- lsl r1, r5, #0x1\n\
- add r0, r6, r1\n\
- add r1, r1, r5\n\
- add r1, r6, r1\n\
- add r2, r6, #0\n\
- bl sub_80BD610\n\
- b ._515\n\
-._510:\n\
- lsl r0, r5, #0x1\n\
- add r0, r0, r5\n\
- add r0, r6, r0\n\
- add r2, r6, r5\n\
- add r1, r6, #0\n\
- bl sub_80BD610\n\
- b ._515\n\
-._511:\n\
- add r1, r6, r5\n\
- lsl r2, r5, #0x1\n\
- add r2, r6, r2\n\
- add r0, r6, #0\n\
- bl sub_80BD610\n\
-._515:\n\
- mov r3, #0x1\n\
- ldr r6, ._521 @ gSaveBlock1\n\
- mov r5, #0x10\n\
- neg r5, r5\n\
- ldr r4, ._521 + 4 @ 0x1a09\n\
-._517:\n\
- lsl r0, r3, #0x2\n\
- add r0, r0, r3\n\
- lsl r0, r0, #0x5\n\
- add r0, r0, r6\n\
- add r2, r0, r4\n\
- ldrb r1, [r2]\n\
- lsl r0, r1, #0x1c\n\
- lsr r0, r0, #0x1c\n\
- cmp r0, #0x1\n\
- bne ._516 @cond_branch\n\
- mov r0, #0x3f\n\
- and r0, r0, r1\n\
- mov r1, #0x40\n\
- orr r0, r0, r1\n\
- and r0, r0, r5\n\
- strb r0, [r2]\n\
-._516:\n\
- add r0, r3, #1\n\
- lsl r0, r0, #0x10\n\
- lsr r3, r0, #0x10\n\
- cmp r3, #0x13\n\
- bls ._517 @cond_branch\n\
- bl sub_80BD280\n\
- mov r3, #0x1\n\
- ldr r4, ._521 @ gSaveBlock1\n\
- ldr r6, ._521 + 4 @ 0x1a09\n\
- add r7, r4, #0\n\
- mov r5, #0x3f\n\
-._519:\n\
- lsl r0, r3, #0x2\n\
- add r0, r0, r3\n\
- lsl r0, r0, #0x5\n\
- add r0, r0, r4\n\
- add r2, r0, r6\n\
- ldrb r1, [r2]\n\
- lsr r0, r1, #0x6\n\
- cmp r0, #0x2\n\
- bne ._518 @cond_branch\n\
- add r0, r5, #0\n\
- and r0, r0, r1\n\
- strb r0, [r2]\n\
-._518:\n\
- add r0, r3, #1\n\
- lsl r0, r0, #0x10\n\
- lsr r3, r0, #0x10\n\
- cmp r3, #0x13\n\
- bls ._519 @cond_branch\n\
- ldr r0, ._521 + 8 @ 0x1a16\n\
- add r2, r7, r0\n\
- ldrh r1, [r2]\n\
- ldr r0, ._521 + 12 @ 0xffff\n\
- cmp r1, r0\n\
- beq ._520 @cond_branch\n\
- add r0, r1, #1\n\
- strh r0, [r2]\n\
-._520:\n\
- pop {r4, r5, r6, r7}\n\
- pop {r0}\n\
- bx r0\n\
-._522:\n\
- .align 2, 0\n\
-._521:\n\
- .word gSaveBlock1\n\
- .word 0x1a09\n\
- .word 0x1a16\n\
- .word 0xffff");
-}
-#else
void sub_80BD674(void *playerRecords, u32 size, u8 c)
{
- if (FlagGet(FLAG_RECEIVED_SECRET_POWER))
+ if (
+#if DEBUG
+ gUnknown_020297ED != 0 ||
+#endif
+ FlagGet(FLAG_RECEIVED_SECRET_POWER))
{
u16 i;
+
u8 numLinkedPlayers = GetLinkPlayerCount();
switch (numLinkedPlayers)
{
@@ -1867,15 +1707,10 @@ void sub_80BD674(void *playerRecords, u32 size, u8 c)
for (i = 1; i < MAX_SECRET_BASES; i++)
{
if (gSaveBlock1.secretBases[i].sbr_field_1_6 == 2)
- {
gSaveBlock1.secretBases[i].sbr_field_1_6 = 0;
- }
}
if (gSaveBlock1.secretBases[0].sbr_field_e != 0xFFFF)
- {
gSaveBlock1.secretBases[0].sbr_field_e++;
- }
}
}
-#endif