diff options
author | Cameron Hall <cameronghall@cox.net> | 2018-02-16 22:51:19 -0600 |
---|---|---|
committer | Cameron Hall <cameronghall@cox.net> | 2018-02-16 22:51:19 -0600 |
commit | 051af13fe7f92644f2bacc9c225dd7ff52b6cc56 (patch) | |
tree | 846b661819497ab3ba76bae238bc7f2f00771f9a /src | |
parent | 0c189f3efb02f9d8e485c55b36c1ed86883ea1fe (diff) |
decompile more debug code
Diffstat (limited to 'src')
-rw-r--r-- | src/field/field_player_avatar.c | 221 | ||||
-rw-r--r-- | src/field/fldeff_flash.c | 30 | ||||
-rw-r--r-- | src/field/fldeff_secretpower.c | 128 | ||||
-rw-r--r-- | src/field/party_menu.c | 1531 | ||||
-rw-r--r-- | src/field/secret_base.c | 511 |
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 |