diff options
Diffstat (limited to 'src/battle_2.c')
-rw-r--r-- | src/battle_2.c | 828 |
1 files changed, 414 insertions, 414 deletions
diff --git a/src/battle_2.c b/src/battle_2.c index 451c4f108..2b13fc45d 100644 --- a/src/battle_2.c +++ b/src/battle_2.c @@ -140,46 +140,46 @@ extern u8 ewram[]; #define ewram1D000 ((struct Pokemon *)(ewram + 0x1D000)) extern struct UnknownPokemonStruct2 gUnknown_02023A00[]; -extern u8 gUnknown_02024260[][0x200]; -extern u8 gUnknown_02024A60; -extern u32 gUnknown_02024A64; -extern u8 gUnknown_02024A68; -extern u16 gUnknown_02024A6A[]; -extern u8 gUnknown_02024A7F; -extern u8 gUnknown_02024A7A[]; +extern u8 gBattleBufferB[][0x200]; +extern u8 gActiveBank; +extern u32 gBattleExecBuffer; +extern u8 gNoOfAllBanks; +extern u16 gBattlePartyID[]; +extern u8 gFightStateTracker; +extern u8 gTurnOrder[]; extern struct UnknownStruct12 gUnknown_02024AD0[]; -extern u8 gUnknown_02024BE0[]; -extern u16 gUnknown_02024BE6; -extern u8 byte_2024C06; -extern u8 gUnknown_02024C0B; -extern u8 gUnknown_02024C0C; -extern u8 gUnknown_02024C0E; -extern u8 gUnknown_02024C18[]; +extern u8 gObjectBankIDs[]; +extern u16 gCurrentMove; +extern u8 gLastUsedAbility; +extern u8 gStringBank; +extern u8 gAbsentBankFlags; +extern u8 gMultiHitCounter; +extern u8 gActionForBanks[]; extern u16 gUnknown_02024C2C[]; -extern u16 gUnknown_02024C34[]; -extern u16 gUnknown_02024C3C[]; +extern u16 gLastUsedMove[]; +extern u16 gMoveHitWith[]; extern u16 gUnknown_02024C44[]; extern u16 gUnknown_02024C4C[]; -extern u16 gUnknown_02024C54[]; +extern u16 gLockedMove[]; extern u8 gUnknown_02024C5C[]; -extern u16 gUnknown_02024C60[]; -extern u32 gUnknown_02024C6C; +extern u16 gChosenMovesByBanks[]; +extern u32 gHitMarker; extern u8 gUnknown_02024C70[]; -extern u16 gUnknown_02024C7A[]; -extern u8 gUnknown_02024C80[][12]; -extern u32 gUnknown_02024C98[]; -//extern u8 gUnknown_02024CA8[][0x1C]; -extern u16 gUnknown_02024D18; -extern u16 gUnknown_02024D1A; -extern u16 gUnknown_02024D1C; -extern u8 gUnknown_02024D1E[]; +extern u16 gSideAffecting[]; +extern u8 gSideTimer[][12]; +extern u32 gStatuses3[]; +//extern u8 gDisableStructs[][0x1C]; +extern u16 gPauseCounterBattle; +extern u16 gPaydayMoney; +extern u16 gRandomTurnNumber; +extern u8 gBattleCommunication[]; extern u8 gUnknown_02024D1F[]; // I don't actually know what type this is. -extern u8 gUnknown_02024D26; -extern struct UnknownStruct13 gUnknown_02024D28[]; -extern u8 gUnknown_02024DBC[]; +extern u8 gBattleOutcome; +extern struct UnknownStruct13 gProtectStructs[]; +extern u8 gWishFutureKnock[]; extern u16 gUnknown_02024DE8; -extern u8 gUnknown_02024E60[]; -extern u8 gUnknown_02024E64[]; +extern u8 gActionSelectionCursor[]; +extern u8 gMoveSelectionCursor[]; extern u8 gUnknown_02038470[]; extern u16 gUnknown_030041B0; extern u16 gUnknown_030041B4; @@ -197,12 +197,12 @@ extern u16 gUnknown_030042A0; extern u16 gUnknown_030042A4; extern u16 gUnknown_030042C0; extern u16 gUnknown_030042C4; -extern MainCallback gUnknown_030042D0; -extern void (*gUnknown_030042D4)(void); -extern struct Struct30042E0 gUnknown_030042E0; -extern u8 gUnknown_03004324; -extern void (*gUnknown_03004330[])(void); -extern u8 gUnknown_03004340[]; +extern MainCallback gPreBattleCallback1; +extern void (*gBattleMainFunc)(void); +extern struct Struct30042E0 gBattleResults; +extern u8 gLeveledUpInBattle; +extern void (*gBattleBankFunc[])(void); +extern u8 gHealthboxIDs[]; extern struct UnknownStruct6 gUnknown_03004DE0; //extern u16 gUnknown_03004DE0[][0xA0]; // possibly? extern u16 gBattleTypeFlags; @@ -212,8 +212,8 @@ extern u16 gTrainerBattleOpponent; extern struct BattleEnigmaBerry gEnigmaBerries[]; extern u16 gBlockRecvBuffer[MAX_LINK_PLAYERS][BLOCK_BUFFER_SIZE / 2]; extern u8 gBattleMonForms[]; -extern u8 gPlayerMonIndex; -extern u8 gEnemyMonIndex; +extern u8 gBankAttacker; +extern u8 gBankTarget; extern u16 gBattleWeather; extern u32 gBattleMoveDamage; extern struct BattlePokemon gBattleMons[]; @@ -226,7 +226,7 @@ void sub_800E7C4(void) { sub_800B858(); SetMainCallback2(sub_800F104); - gUnknown_02024D1E[0] = 0; + gBattleCommunication[0] = 0; } else { @@ -299,7 +299,7 @@ void InitBattle(void) gMain.inBattle = TRUE; for (i = 0; i < 6; i++) AdjustFriendship(&gPlayerParty[i], 3); - gUnknown_02024D1E[0] = 0; + gBattleCommunication[0] = 0; } void sub_800E9EC(void) @@ -421,7 +421,7 @@ void sub_800EC9C(void) ewram160CB = playerId; enemyId = playerId ^ 1; - switch (gUnknown_02024D1E[0]) + switch (gBattleCommunication[0]) { case 0: if (gBattleTypeFlags & BATTLE_TYPE_LINK) @@ -433,13 +433,13 @@ void sub_800EC9C(void) sub_800E9EC(); sub_800EAAC(); SendBlock(bitmask_all_link_players_but_self(), &ewram0, 32); - gUnknown_02024D1E[0] = 1; + gBattleCommunication[0] = 1; } } else { gBattleTypeFlags |= BATTLE_TYPE_WILD; - gUnknown_02024D1E[0] = 8; + gBattleCommunication[0] = 8; sub_800EB08(); } break; @@ -490,14 +490,14 @@ void sub_800EC9C(void) gTasks[taskId].data[5] = 0; gTasks[taskId].data[3] = ewram0.unk2 | (ewram0.unk3 << 8); gTasks[taskId].data[4] = gBlockRecvBuffer[enemyId][1]; - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; } break; case 2: if (sub_8007ECC()) { SendBlock(bitmask_all_link_players_but_self(), gPlayerParty, sizeof(*gPlayerParty) * 2); - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; } break; case 3: @@ -505,14 +505,14 @@ void sub_800EC9C(void) { ResetBlockReceivedFlags(); memcpy(gEnemyParty, gBlockRecvBuffer[enemyId], sizeof(*gEnemyParty) * 2); - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; } break; case 4: if (sub_8007ECC()) { SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 2, sizeof(*gPlayerParty) * 2); - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; } break; case 5: @@ -520,14 +520,14 @@ void sub_800EC9C(void) { ResetBlockReceivedFlags(); memcpy(gEnemyParty + 2, gBlockRecvBuffer[enemyId], sizeof(*gEnemyParty) * 2); - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; } break; case 6: if (sub_8007ECC()) { SendBlock(bitmask_all_link_players_but_self(), gPlayerParty + 4, sizeof(*gPlayerParty) * 2); - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; } break; case 7: @@ -541,19 +541,19 @@ void sub_800EC9C(void) shedinja_something(&gEnemyParty[3]); shedinja_something(&gEnemyParty[4]); shedinja_something(&gEnemyParty[5]); - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; } break; case 8: sub_800B950(); - gUnknown_02024D1E[0]++; - gUnknown_02024D1E[1] = 0; - gUnknown_02024D1E[2] = 0; + gBattleCommunication[0]++; + gBattleCommunication[1] = 0; + gBattleCommunication[2] = 0; break; case 9: if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0) { - gUnknown_030042D0 = gMain.callback1; + gPreBattleCallback1 = gMain.callback1; gMain.callback1 = sub_8010824; SetMainCallback2(sub_800F808); if (gBattleTypeFlags & BATTLE_TYPE_LINK) @@ -606,14 +606,14 @@ void sub_800F104(void) AnimateSprites(); BuildOamBuffer(); - switch (gUnknown_02024D1E[0]) + switch (gBattleCommunication[0]) { case 0: if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) { sub_800F02C(); SendBlock(bitmask_all_link_players_but_self(), ewram, 0x60); - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; } break; case 1: @@ -631,7 +631,7 @@ void sub_800F104(void) memcpy(gUnknown_02023A00, gBlockRecvBuffer[i], 0x60); } } - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; *pSavedCallback = gMain.savedCallback; *pSavedBattleTypeFlags = gBattleTypeFlags; gMain.savedCallback = sub_800F104; @@ -641,7 +641,7 @@ void sub_800F104(void) case 2: if (!gPaletteFade.active) { - gUnknown_02024D1E[0] = 3; + gBattleCommunication[0] = 3; sub_800832C(); } break; @@ -666,7 +666,7 @@ void sub_800F298(void) RunTasks(); AnimateSprites(); BuildOamBuffer(); - switch (gUnknown_02024D1E[0]) + switch (gBattleCommunication[0]) { case 0: if (gReceivedRemoteLinkPlayers != 0 && sub_8007ECC()) @@ -676,7 +676,7 @@ void sub_800F298(void) sub_800E9EC(); sub_800EAAC(); SendBlock(bitmask_all_link_players_but_self(), ewram, 0x20); - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; } break; case 1: @@ -756,7 +756,7 @@ void sub_800F298(void) } ZeroPlayerPartyMons(); ZeroEnemyPartyMons(); - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; goto step_2; } break; @@ -765,7 +765,7 @@ void sub_800F298(void) if (sub_8007ECC()) { SendBlock(bitmask_all_link_players_but_self(), ewram1D000, sizeof(struct Pokemon) * 2); - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; } break; case 3: @@ -821,14 +821,14 @@ void sub_800F298(void) } } } - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; } break; case 4: if (sub_8007ECC()) { SendBlock(bitmask_all_link_players_but_self(), ewram1D000 + 2, sizeof(struct Pokemon)); - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; } break; case 5: @@ -899,19 +899,19 @@ void sub_800F298(void) shedinja_something(&gEnemyParty[4]); shedinja_something(&gEnemyParty[5]); - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; } break; case 6: sub_800B950(); - gUnknown_02024D1E[0]++; - gUnknown_02024D1E[1] = 0; - gUnknown_02024D1E[2] = 0; + gBattleCommunication[0]++; + gBattleCommunication[1] = 0; + gBattleCommunication[2] = 0; break; case 7: if (battle_load_something(gUnknown_02024D1F, gUnknown_02024D1F + 1) != 0) { - gUnknown_030042D0 = gMain.callback1; + gPreBattleCallback1 = gMain.callback1; gMain.callback1 = sub_8010824; SetMainCallback2(sub_800F808); if (gBattleTypeFlags & BATTLE_TYPE_LINK) @@ -1270,7 +1270,7 @@ void c2_8011A1C(void) gTasks[taskId].data[5] = 1; sub_800FE40(taskId); SetMainCallback2(sub_80101B8); - gUnknown_02024D1E[0] = 0; + gBattleCommunication[0] = 0; } void sub_80101B8(void) @@ -1284,18 +1284,18 @@ void sub_80101B8(void) void c2_081284E0(void) { - switch (gUnknown_02024D1E[0]) + switch (gBattleCommunication[0]) { case 0: - gUnknown_02024D1E[1] = 0xFF; - gUnknown_02024D1E[0]++; + gBattleCommunication[1] = 0xFF; + gBattleCommunication[0]++; break; case 1: - gUnknown_02024D1E[1]--; - if (gUnknown_02024D1E[1] == 0) + gBattleCommunication[1]--; + if (gBattleCommunication[1] == 0) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0); - gUnknown_02024D1E[0]++; + gBattleCommunication[0]++; } break; case 2: @@ -1330,7 +1330,7 @@ void sub_80102AC(struct Sprite *sprite) if (sprite->animEnded) { sub_804777C(sprite->data0); - sub_8043DFC(gUnknown_03004340[sprite->data0]); + sub_8043DFC(gHealthboxIDs[sprite->data0]); sprite->callback = nullsub_37; StartSpriteAnimIfDifferent(sprite, 0); BeginNormalPaletteFade(0x00020000, 0, 10, 0, 0x3DEF); @@ -1376,11 +1376,11 @@ void sub_8010384(struct Sprite *sprite) else species = sprite->data2; - GetMonData(&gEnemyParty[gUnknown_02024A6A[r6]], MON_DATA_PERSONALITY); // Unused return value + GetMonData(&gEnemyParty[gBattlePartyID[r6]], MON_DATA_PERSONALITY); // Unused return value if (species == SPECIES_UNOWN) { - u32 personalityValue = GetMonData(&gEnemyParty[gUnknown_02024A6A[r6]], MON_DATA_PERSONALITY); + u32 personalityValue = GetMonData(&gEnemyParty[gBattlePartyID[r6]], MON_DATA_PERSONALITY); u16 unownForm = ((((personalityValue & 0x3000000) >> 18) | ((personalityValue & 0x30000) >> 12) | ((personalityValue & 0x300) >> 6) | (personalityValue & 3)) % 0x1C); u16 unownSpecies; @@ -1426,7 +1426,7 @@ void sub_8010494(struct Sprite *sprite) } else { - u8 *dst = (u8 *)gUnknown_081FAF4C[battle_get_per_side_status(sprite->data0)] + (gBattleMonForms[sprite->data0] << 11) + (sprite->data3 << 8); + u8 *dst = (u8 *)gUnknown_081FAF4C[GetBankIdentity(sprite->data0)] + (gBattleMonForms[sprite->data0] << 11) + (sprite->data3 << 8); for (i = 0; i < 0x100; i++) *(dst++) = 0; @@ -1514,14 +1514,14 @@ void dp11b_obj_instanciate(u8 a, u8 b, s8 c, s8 d) spriteId = CreateInvisibleSpriteWithCallback(objc_dp11b_pingpong); if (b == TRUE) { - r7 = gUnknown_03004340[a]; + r7 = gHealthboxIDs[a]; ewram17810[a].unk2 = spriteId; ewram17810[a].unk0_1 = 1; gSprites[spriteId].data0 = 0x80; } else { - r7 = gUnknown_02024BE0[a]; + r7 = gObjectBankIDs[a]; ewram17810[a].unk3 = spriteId; ewram17810[a].unk0_2 = 1; gSprites[spriteId].data0 = 0xC0; @@ -1579,17 +1579,17 @@ void nullsub_41(void) void sub_8010800(void) { sub_8010874(); - gUnknown_02024D1E[1] = 0; - gUnknown_030042D4 = bc_8012FAC; + gBattleCommunication[1] = 0; + gBattleMainFunc = bc_8012FAC; } void sub_8010824(void) { - gUnknown_030042D4(); - gUnknown_02024A60 = 0; + gBattleMainFunc(); + gActiveBank = 0; - for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++) - gUnknown_03004330[gUnknown_02024A60](); + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) + gBattleBankFunc[gActiveBank](); } void sub_8010874(void) @@ -1598,65 +1598,65 @@ void sub_8010874(void) s32 j; u8 *r4; - sub_801365C(0); - sub_801377C(); + TurnValuesCleanUp(0); + SpecialStatusesClear(); for (i = 0; i < 4; i++) { - gUnknown_02024C98[i] = 0; + gStatuses3[i] = 0; - r4 = (u8 *)&gUnknown_02024CA8[i]; + r4 = (u8 *)&gDisableStructs[i]; for (j = 0; j < (u32)0x1C; j++) r4[j] = 0; - gUnknown_02024CA8[i].unk16 = 2; + gDisableStructs[i].unk16 = 2; gUnknown_02024C70[i] = 0; - gUnknown_02024C34[i] = 0; - gUnknown_02024C3C[i] = 0; + gLastUsedMove[i] = 0; + gMoveHitWith[i] = 0; gUnknown_02024C44[i] = 0; gUnknown_02024C4C[i] = 0; gUnknown_02024C5C[i] = 0xFF; - gUnknown_02024C54[i] = 0; + gLockedMove[i] = 0; gUnknown_02024C2C[i] = 0; ewram17100[i] = 0; } for (i = 0; i < 2; i++) { - gUnknown_02024C7A[i] = 0; + gSideAffecting[i] = 0; - r4 = (u8 *)&gUnknown_02024C80[i]; + r4 = (u8 *)&gSideTimer[i]; for (j = 0; j < (u32)12; j++) r4[j] = 0; } - gPlayerMonIndex = 0; - gEnemyMonIndex = 0; + gBankAttacker = 0; + gBankTarget = 0; gBattleWeather = 0; - r4 = (u8 *)&gUnknown_02024DBC; + r4 = (u8 *)&gWishFutureKnock; for (i = 0; i < (u32)0x2C; i++) r4[i] = 0; - gUnknown_02024C6C = 0; + gHitMarker = 0; if ((gBattleTypeFlags & 2) == 0 && gSaveBlock2.optionsBattleSceneOff == TRUE) - gUnknown_02024C6C = 0x80; + gHitMarker = 0x80; ewram16084 = gSaveBlock2.optionsBattleStyle; - gUnknown_02024C0E = 0; - gUnknown_02024D26 = 0; - gUnknown_02024A64 = 0; - gUnknown_02024D1A = 0; + gMultiHitCounter = 0; + gBattleOutcome = 0; + gBattleExecBuffer = 0; + gPaydayMoney = 0; ewram17130 = 0; ewram17160 = 0; for (i = 0; i < 8; i++) - gUnknown_02024D1E[i] = 0; - gUnknown_02024D18 = 0; + gBattleCommunication[i] = 0; + gPauseCounterBattle = 0; gBattleMoveDamage = 0; gUnknown_02024DE8 = 0; ewram16002 = 0; ewram160A1 = 0; - gUnknown_03004324 = 0; - gUnknown_02024C0C = 0; + gLeveledUpInBattle = 0; + gAbsentBankFlags = 0; ewram16078 = 0; ewram16086 = 0; ewram16087 = 0; @@ -1679,208 +1679,208 @@ void sub_8010874(void) ewram160C9 = 6; ewram16113 = 0; for (i = 0; i < 11; i++) - gUnknown_030042E0.unk36[i] = 0; - gUnknown_030042E0.unk13 = 0; - gUnknown_030042E0.unk0 = 0; - gUnknown_030042E0.unk1 = 0; - gUnknown_030042E0.unk2 = 0; - gUnknown_030042E0.unk3 = 0; - gUnknown_030042E0.unk4 = 0; - gUnknown_030042E0.unk5_0 = 0; - gUnknown_030042E0.unk5_1 = 0; - gUnknown_030042E0.unk20 = 0; - gUnknown_030042E0.unk22 = 0; - gUnknown_030042E0.unk24 = 0; - gUnknown_030042E0.unk6 = 0; - gUnknown_030042E0.unk26 = 0; - gUnknown_030042E0.unk28 = 0; + gBattleResults.unk36[i] = 0; + gBattleResults.unk13 = 0; + gBattleResults.unk0 = 0; + gBattleResults.unk1 = 0; + gBattleResults.unk2 = 0; + gBattleResults.unk3 = 0; + gBattleResults.unk4 = 0; + gBattleResults.unk5_0 = 0; + gBattleResults.unk5_1 = 0; + gBattleResults.unk20 = 0; + gBattleResults.unk22 = 0; + gBattleResults.unk24 = 0; + gBattleResults.unk6 = 0; + gBattleResults.unk26 = 0; + gBattleResults.unk28 = 0; for (i = 0; i < 10; i++) { - gUnknown_030042E0.unk8[i] = 0; - gUnknown_030042E0.unk14[i] = 0; - gUnknown_030042E0.unk2A[i] = 0; + gBattleResults.unk8[i] = 0; + gBattleResults.unk14[i] = 0; + gBattleResults.unk2A[i] = 0; } } void sub_8010B88(void) { - struct UnkBattleStruct4 sp0 = gUnknown_02024CA8[gUnknown_02024A60]; + struct UnkBattleStruct4 sp0 = gDisableStructs[gActiveBank]; s32 i; u8 *ptr; u32 *ptr2; - if (gBattleMoves[gUnknown_02024BE6].effect != 0x7F) + if (gBattleMoves[gCurrentMove].effect != 0x7F) { for (i = 0; i < 8; i++) - gBattleMons[gUnknown_02024A60].statStages[i] = 6; - for (i = 0; i < gUnknown_02024A68; i++) + gBattleMons[gActiveBank].statStages[i] = 6; + for (i = 0; i < gNoOfAllBanks; i++) { struct UnknownStruct12 *sp20 = &gUnknown_02024AD0[i]; - if ((sp20->unk0 & 0x04000000) && gUnknown_02024CA8[i].unk14 == gUnknown_02024A60) + if ((sp20->unk0 & 0x04000000) && gDisableStructs[i].unk14 == gActiveBank) sp20->unk0 &= ~0x04000000; - if ((gUnknown_02024C98[i] & 0x18) && gUnknown_02024CA8[i].unk15 == gUnknown_02024A60) + if ((gStatuses3[i] & 0x18) && gDisableStructs[i].unk15 == gActiveBank) { - gUnknown_02024C98[i] &= ~0x18; - gUnknown_02024CA8[i].unk15 = 0; + gStatuses3[i] &= ~0x18; + gDisableStructs[i].unk15 = 0; } } } - if (gBattleMoves[gUnknown_02024BE6].effect == 0x7F) + if (gBattleMoves[gCurrentMove].effect == 0x7F) { - gBattleMons[gUnknown_02024A60].status2 &= 0x15100007; - gUnknown_02024C98[gUnknown_02024A60] &= 0x3043F; + gBattleMons[gActiveBank].status2 &= 0x15100007; + gStatuses3[gActiveBank] &= 0x3043F; - for (i = 0; i < gUnknown_02024A68; i++) + for (i = 0; i < gNoOfAllBanks; i++) { - if (battle_side_get_owner(gUnknown_02024A60) != battle_side_get_owner(i) - && (gUnknown_02024C98[i] & 0x18) != 0 - && (gUnknown_02024CA8[i].unk15 == gUnknown_02024A60)) + if (GetBankSide(gActiveBank) != GetBankSide(i) + && (gStatuses3[i] & 0x18) != 0 + && (gDisableStructs[i].unk15 == gActiveBank)) { - gUnknown_02024C98[i] &= ~0x18; - gUnknown_02024C98[i] |= 0x10; + gStatuses3[i] &= ~0x18; + gStatuses3[i] |= 0x10; } } } else { - gBattleMons[gUnknown_02024A60].status2 = 0; - gUnknown_02024C98[gUnknown_02024A60] = 0; + gBattleMons[gActiveBank].status2 = 0; + gStatuses3[gActiveBank] = 0; } - for (i = 0; i < gUnknown_02024A68; i++) + for (i = 0; i < gNoOfAllBanks; i++) { - if (gUnknown_02024AD0[i].unk0 & (gBitTable[gUnknown_02024A60] << 16)) - gUnknown_02024AD0[i].unk0 &= ~(gBitTable[gUnknown_02024A60] << 16); - if ((gUnknown_02024AD0[i].unk0 & 0xE000) && ewram[0x16020 + i] == gUnknown_02024A60) + if (gUnknown_02024AD0[i].unk0 & (gBitTable[gActiveBank] << 16)) + gUnknown_02024AD0[i].unk0 &= ~(gBitTable[gActiveBank] << 16); + if ((gUnknown_02024AD0[i].unk0 & 0xE000) && ewram[0x16020 + i] == gActiveBank) gUnknown_02024AD0[i].unk0 &= ~0xE000; } - gUnknown_02024E60[gUnknown_02024A60] = 0; - gUnknown_02024E64[gUnknown_02024A60] = 0; + gActionSelectionCursor[gActiveBank] = 0; + gMoveSelectionCursor[gActiveBank] = 0; - ptr = (u8 *)&gUnknown_02024CA8[gUnknown_02024A60]; + ptr = (u8 *)&gDisableStructs[gActiveBank]; for (i = 0; i < (u32)0x1C; i++) ptr[i] = 0; - if (gBattleMoves[gUnknown_02024BE6].effect == 0x7F) + if (gBattleMoves[gCurrentMove].effect == 0x7F) { - gUnknown_02024CA8[gUnknown_02024A60].unkA = sp0.unkA; - gUnknown_02024CA8[gUnknown_02024A60].unk15 = sp0.unk15; - gUnknown_02024CA8[gUnknown_02024A60].unkF_0 = sp0.unkF_0; - gUnknown_02024CA8[gUnknown_02024A60].unkF_4 = sp0.unkF_4; + gDisableStructs[gActiveBank].unkA = sp0.unkA; + gDisableStructs[gActiveBank].unk15 = sp0.unk15; + gDisableStructs[gActiveBank].unkF_0 = sp0.unkF_0; + gDisableStructs[gActiveBank].unkF_4 = sp0.unkF_4; } - gUnknown_02024CA8[gUnknown_02024A60].unk16 = 2; - gUnknown_02024C34[gUnknown_02024A60] = 0; - gUnknown_02024C3C[gUnknown_02024A60] = 0; - gUnknown_02024C44[gUnknown_02024A60] = 0; - gUnknown_02024C4C[gUnknown_02024A60] = 0; - gUnknown_02024C2C[gUnknown_02024A60] = 0; - gUnknown_02024C5C[gUnknown_02024A60] = 0xFF; + gDisableStructs[gActiveBank].unk16 = 2; + gLastUsedMove[gActiveBank] = 0; + gMoveHitWith[gActiveBank] = 0; + gUnknown_02024C44[gActiveBank] = 0; + gUnknown_02024C4C[gActiveBank] = 0; + gUnknown_02024C2C[gActiveBank] = 0; + gUnknown_02024C5C[gActiveBank] = 0xFF; - ewram[0x160AC + gUnknown_02024A60 * 2 + 0] = 0; - ewram[0x160AC + gUnknown_02024A60 * 2 + 1] = 0; - ewram[0x16100 + gUnknown_02024A60 * 4 + 0] = 0; - ewram[0x16100 + gUnknown_02024A60 * 4 + 1] = 0; - ewram[0x16100 + gUnknown_02024A60 * 4 + 2] = 0; - ewram[0x16100 + gUnknown_02024A60 * 4 + 3] = 0; - ewram[0x160E8 + gUnknown_02024A60 * 2 + 0] = 0; - ewram[0x160E8 + gUnknown_02024A60 * 2 + 1] = 0; + ewram[0x160AC + gActiveBank * 2 + 0] = 0; + ewram[0x160AC + gActiveBank * 2 + 1] = 0; + ewram[0x16100 + gActiveBank * 4 + 0] = 0; + ewram[0x16100 + gActiveBank * 4 + 1] = 0; + ewram[0x16100 + gActiveBank * 4 + 2] = 0; + ewram[0x16100 + gActiveBank * 4 + 3] = 0; + ewram[0x160E8 + gActiveBank * 2 + 0] = 0; + ewram[0x160E8 + gActiveBank * 2 + 1] = 0; ptr2 = (u32 *)(ewram + 0x17100); - ptr2[gUnknown_02024A60] = 0; + ptr2[gActiveBank] = 0; - gUnknown_02024BE6 = 0; + gCurrentMove = 0; } -void sub_8010F48(void) +void UndoEffectsAfterFainting(void) { s32 i; u8 *ptr; u32 *ptr2; for (i = 0; i < 8; i++) - gBattleMons[gUnknown_02024A60].statStages[i] = 6; - gBattleMons[gUnknown_02024A60].status2 = 0; - gUnknown_02024C98[gUnknown_02024A60] = 0; - for (i = 0; i < gUnknown_02024A68; i++) + gBattleMons[gActiveBank].statStages[i] = 6; + gBattleMons[gActiveBank].status2 = 0; + gStatuses3[gActiveBank] = 0; + for (i = 0; i < gNoOfAllBanks; i++) { - if ((gBattleMons[i].status2 & 0x4000000) && gUnknown_02024CA8[i].unk14 == gUnknown_02024A60) + if ((gBattleMons[i].status2 & 0x4000000) && gDisableStructs[i].unk14 == gActiveBank) gBattleMons[i].status2 &= ~0x4000000; - if (gBattleMons[i].status2 & (gBitTable[gUnknown_02024A60] << 16)) - gBattleMons[i].status2 &= ~(gBitTable[gUnknown_02024A60] << 16); - if ((gBattleMons[i].status2 & 0xE000) && ewram[0x16020 + i] == gUnknown_02024A60) + if (gBattleMons[i].status2 & (gBitTable[gActiveBank] << 16)) + gBattleMons[i].status2 &= ~(gBitTable[gActiveBank] << 16); + if ((gBattleMons[i].status2 & 0xE000) && ewram[0x16020 + i] == gActiveBank) gBattleMons[i].status2 &= ~0xE000; } - gUnknown_02024E60[gUnknown_02024A60] = 0; - gUnknown_02024E64[gUnknown_02024A60] = 0; + gActionSelectionCursor[gActiveBank] = 0; + gMoveSelectionCursor[gActiveBank] = 0; - ptr = (u8 *)&gUnknown_02024CA8[gUnknown_02024A60]; + ptr = (u8 *)&gDisableStructs[gActiveBank]; for (i = 0; i < (u32)0x1C; i++) ptr[i] = 0; - gUnknown_02024D28[gUnknown_02024A60].unk0_0 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk0_1 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk0_2 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk0_3 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk0_4 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk0_5 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk0_6 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk0_7 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk1_0 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk1_1 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk1_2 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk1_3 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk1_5 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk1_6 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk1_7 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk2_0 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk2_1 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk2_2 = 0; - gUnknown_02024D28[gUnknown_02024A60].unk2_3 = 0; - - gUnknown_02024CA8[gUnknown_02024A60].unk16 = 2; - gUnknown_02024C34[gUnknown_02024A60] = 0; - gUnknown_02024C3C[gUnknown_02024A60] = 0; - gUnknown_02024C44[gUnknown_02024A60] = 0; - gUnknown_02024C4C[gUnknown_02024A60] = 0; - gUnknown_02024C2C[gUnknown_02024A60] = 0; - gUnknown_02024C5C[gUnknown_02024A60] = 0xFF; - - ewram[0x160E8 + gUnknown_02024A60 * 2 + 0] = 0; - ewram[0x160E8 + gUnknown_02024A60 * 2 + 1] = 0; - ewram[0x160AC + gUnknown_02024A60 * 2 + 0] = 0; - ewram[0x160AC + gUnknown_02024A60 * 2 + 1] = 0; - ewram[0x16100 + gUnknown_02024A60 * 4 + 0] = 0; - ewram[0x16100 + gUnknown_02024A60 * 4 + 1] = 0; - ewram[0x16100 + gUnknown_02024A60 * 4 + 2] = 0; - ewram[0x16100 + gUnknown_02024A60 * 4 + 3] = 0; + gProtectStructs[gActiveBank].unk0_0 = 0; + gProtectStructs[gActiveBank].unk0_1 = 0; + gProtectStructs[gActiveBank].unk0_2 = 0; + gProtectStructs[gActiveBank].unk0_3 = 0; + gProtectStructs[gActiveBank].unk0_4 = 0; + gProtectStructs[gActiveBank].unk0_5 = 0; + gProtectStructs[gActiveBank].unk0_6 = 0; + gProtectStructs[gActiveBank].unk0_7 = 0; + gProtectStructs[gActiveBank].unk1_0 = 0; + gProtectStructs[gActiveBank].unk1_1 = 0; + gProtectStructs[gActiveBank].unk1_2 = 0; + gProtectStructs[gActiveBank].unk1_3 = 0; + gProtectStructs[gActiveBank].unk1_5 = 0; + gProtectStructs[gActiveBank].unk1_6 = 0; + gProtectStructs[gActiveBank].unk1_7 = 0; + gProtectStructs[gActiveBank].unk2_0 = 0; + gProtectStructs[gActiveBank].unk2_1 = 0; + gProtectStructs[gActiveBank].unk2_2 = 0; + gProtectStructs[gActiveBank].unk2_3 = 0; + + gDisableStructs[gActiveBank].unk16 = 2; + gLastUsedMove[gActiveBank] = 0; + gMoveHitWith[gActiveBank] = 0; + gUnknown_02024C44[gActiveBank] = 0; + gUnknown_02024C4C[gActiveBank] = 0; + gUnknown_02024C2C[gActiveBank] = 0; + gUnknown_02024C5C[gActiveBank] = 0xFF; + + ewram[0x160E8 + gActiveBank * 2 + 0] = 0; + ewram[0x160E8 + gActiveBank * 2 + 1] = 0; + ewram[0x160AC + gActiveBank * 2 + 0] = 0; + ewram[0x160AC + gActiveBank * 2 + 1] = 0; + ewram[0x16100 + gActiveBank * 4 + 0] = 0; + ewram[0x16100 + gActiveBank * 4 + 1] = 0; + ewram[0x16100 + gActiveBank * 4 + 2] = 0; + ewram[0x16100 + gActiveBank * 4 + 3] = 0; ptr2 = (u32 *)(ewram + 0x17100); - ptr2[gUnknown_02024A60] = 0; + ptr2[gActiveBank] = 0; - gBattleMons[gUnknown_02024A60].type1 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type1; - gBattleMons[gUnknown_02024A60].type2 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type2; + gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1; + gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2; } void bc_8012FAC(void) { - switch (gUnknown_02024D1E[0]) + switch (gBattleCommunication[0]) { case 0: - gUnknown_02024A60 = gUnknown_02024D1E[1]; - dp01_build_cmdbuf_x00_a_b_0(0, 0, 0); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); - gUnknown_02024D1E[0]++; + gActiveBank = gBattleCommunication[1]; + EmitGetAttributes(0, 0, 0); + MarkBufferBankForExecution(gActiveBank); + gBattleCommunication[0]++; break; case 1: - if (gUnknown_02024A64 == 0) + if (gBattleExecBuffer == 0) { - gUnknown_02024D1E[1]++; - if (gUnknown_02024D1E[1] == gUnknown_02024A68) - gUnknown_030042D4 = bc_load_battlefield; + gBattleCommunication[1]++; + if (gBattleCommunication[1] == gNoOfAllBanks) + gBattleMainFunc = bc_load_battlefield; else - gUnknown_02024D1E[0] = 0; + gBattleCommunication[0] = 0; } break; } @@ -1888,14 +1888,14 @@ void bc_8012FAC(void) void bc_load_battlefield(void) { - if (gUnknown_02024A64 == 0) + if (gBattleExecBuffer == 0) { - gUnknown_02024A60 = battle_get_side_with_given_state(0); - dp01_build_cmdbuf_x2E_a(0, gBattleTerrain); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); - gUnknown_030042D4 = sub_8011384; - gUnknown_02024D1E[0] = 0; - gUnknown_02024D1E[1] = 0; + gActiveBank = GetBankByPlayerAI(0); + EmitBattleIntroSlide(0, gBattleTerrain); + MarkBufferBankForExecution(gActiveBank); + gBattleMainFunc = sub_8011384; + gBattleCommunication[0] = 0; + gBattleCommunication[1] = 0; } } @@ -1904,14 +1904,14 @@ void sub_8011384(void) u8 *ptr; s32 i; - if (gUnknown_02024A64 == 0) + if (gBattleExecBuffer == 0) { - for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++) + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) { if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI) - && battle_side_get_owner(gUnknown_02024A60) == 0) + && GetBankSide(gActiveBank) == 0) { - ptr = (u8 *)&gBattleMons[gUnknown_02024A60]; + ptr = (u8 *)&gBattleMons[gActiveBank]; for (i = 0; i < (u32)0x58; i++) ptr[i] = 0; } @@ -1919,59 +1919,59 @@ void sub_8011384(void) { u8 r0; - ptr = (u8 *)&gBattleMons[gUnknown_02024A60]; + ptr = (u8 *)&gBattleMons[gActiveBank]; for (i = 0; i < (u32)0x58; i++) - ptr[i] = gUnknown_02024260[gUnknown_02024A60][4 + i]; + ptr[i] = gBattleBufferB[gActiveBank][4 + i]; - gBattleMons[gUnknown_02024A60].type1 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type1; - gBattleMons[gUnknown_02024A60].type2 = gBaseStats[gBattleMons[gUnknown_02024A60].species].type2; - gBattleMons[gUnknown_02024A60].ability = GetAbilityBySpecies(gBattleMons[gUnknown_02024A60].species, gBattleMons[gUnknown_02024A60].altAbility); - r0 = battle_side_get_owner(gUnknown_02024A60); - ewram160BC[r0] = gBattleMons[gUnknown_02024A60].hp; + gBattleMons[gActiveBank].type1 = gBaseStats[gBattleMons[gActiveBank].species].type1; + gBattleMons[gActiveBank].type2 = gBaseStats[gBattleMons[gActiveBank].species].type2; + gBattleMons[gActiveBank].ability = GetAbilityBySpecies(gBattleMons[gActiveBank].species, gBattleMons[gActiveBank].altAbility); + r0 = GetBankSide(gActiveBank); + ewram160BC[r0] = gBattleMons[gActiveBank].hp; for (i = 0; i < 8; i++) - gBattleMons[gUnknown_02024A60].statStages[i] = 6; - gBattleMons[gUnknown_02024A60].status2 = 0; + gBattleMons[gActiveBank].statStages[i] = 6; + gBattleMons[gActiveBank].status2 = 0; } - if (battle_get_per_side_status(gUnknown_02024A60) == 0) + if (GetBankIdentity(gActiveBank) == 0) { dp01_build_cmdbuf_x07_7_7_7(0); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + MarkBufferBankForExecution(gActiveBank); } if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) { - if (battle_get_per_side_status(gUnknown_02024A60) == 1) + if (GetBankIdentity(gActiveBank) == 1) { dp01_build_cmdbuf_x07_7_7_7(0); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + MarkBufferBankForExecution(gActiveBank); } - if (battle_side_get_owner(gUnknown_02024A60) == 1 + if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2); + GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); } else { - if (battle_side_get_owner(gUnknown_02024A60) == 1 + if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) { - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2); + GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); dp01_build_cmdbuf_x04_4_4_4(0); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + MarkBufferBankForExecution(gActiveBank); } } if (gBattleTypeFlags & BATTLE_TYPE_MULTI) { - if (battle_get_per_side_status(gUnknown_02024A60) == 2 - || battle_get_per_side_status(gUnknown_02024A60) == 3) + if (GetBankIdentity(gActiveBank) == 2 + || GetBankIdentity(gActiveBank) == 3) { dp01_build_cmdbuf_x07_7_7_7(0); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + MarkBufferBankForExecution(gActiveBank); } } } - gUnknown_030042D4 = bc_801333C; + gBattleMainFunc = bc_801333C; } } @@ -1979,7 +1979,7 @@ void bc_801333C(void) { s32 i; - if (gUnknown_02024A64 == 0) + if (gBattleExecBuffer == 0) { struct { @@ -2003,9 +2003,9 @@ void bc_801333C(void) sp0[i].status = GetMonData(&gEnemyParty[i], MON_DATA_STATUS); } } - gUnknown_02024A60 = battle_get_side_with_given_state(1); + gActiveBank = GetBankByPlayerAI(1); dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + MarkBufferBankForExecution(gActiveBank); for (i = 0; i < 6; i++) { @@ -2021,11 +2021,11 @@ void bc_801333C(void) sp0[i].status = GetMonData(&gPlayerParty[i], MON_DATA_STATUS); } } - gUnknown_02024A60 = battle_get_side_with_given_state(0); + gActiveBank = GetBankByPlayerAI(0); dp01_build_cmdbuf_x30_TODO(0, (u8 *)sp0, 0x80); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + MarkBufferBankForExecution(gActiveBank); - gUnknown_030042D4 = bc_battle_begin_message; + gBattleMainFunc = bc_battle_begin_message; } else { @@ -2047,198 +2047,198 @@ void bc_801333C(void) } } - gUnknown_030042D4 = bc_8013568; + gBattleMainFunc = bc_8013568; } } } void bc_battle_begin_message(void) { - if (gUnknown_02024A64 == 0) + if (gBattleExecBuffer == 0) { - gUnknown_02024A60 = battle_get_side_with_given_state(1); - b_std_message(0, gUnknown_02024A60); - gUnknown_030042D4 = sub_8011800; + gActiveBank = GetBankByPlayerAI(1); + PrepareStringBattle(0, gActiveBank); + gBattleMainFunc = sub_8011800; } } void bc_8013568(void) { - if (gUnknown_02024A64 == 0) + if (gBattleExecBuffer == 0) { - gUnknown_030042D4 = sub_8011970; - b_std_message(0, 0); + gBattleMainFunc = sub_8011970; + PrepareStringBattle(0, 0); } } void sub_8011800(void) { - if (gUnknown_02024A64 == 0) + if (gBattleExecBuffer == 0) { - b_std_message(1, battle_get_side_with_given_state(1)); - gUnknown_030042D4 = sub_8011834; + PrepareStringBattle(1, GetBankByPlayerAI(1)); + gBattleMainFunc = sub_8011834; } } void sub_8011834(void) { - if (gUnknown_02024A64 == 0) + if (gBattleExecBuffer == 0) { - for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++) + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) { - if (battle_get_per_side_status(gUnknown_02024A60) == 1) + if (GetBankIdentity(gActiveBank) == 1) { dp01_build_cmdbuf_x2F_2F_2F_2F(0); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + MarkBufferBankForExecution(gActiveBank); } if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) - && battle_get_per_side_status(gUnknown_02024A60) == 3) + && GetBankIdentity(gActiveBank) == 3) { dp01_build_cmdbuf_x2F_2F_2F_2F(0); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + MarkBufferBankForExecution(gActiveBank); } } - gUnknown_030042D4 = bc_801362C; + gBattleMainFunc = bc_801362C; } } void bc_801362C(void) { - if (gUnknown_02024A64 == 0) + if (gBattleExecBuffer == 0) { - for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++) + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) { - if (battle_side_get_owner(gUnknown_02024A60) == 1 + if (GetBankSide(gActiveBank) == 1 && !(gBattleTypeFlags & (BATTLE_TYPE_EREADER_TRAINER | BATTLE_TYPE_BATTLE_TOWER | BATTLE_TYPE_LINK))) - GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gUnknown_02024A60].species), 2); + GetNationalPokedexFlag(SpeciesToNationalPokedexNum(gBattleMons[gActiveBank].species), 2); } - gUnknown_030042D4 = sub_8011970; + gBattleMainFunc = sub_8011970; } } void unref_sub_8011950(void) { - if (gUnknown_02024A64 == 0) - gUnknown_030042D4 = sub_8011970; + if (gBattleExecBuffer == 0) + gBattleMainFunc = sub_8011970; } void sub_8011970(void) { - if (gUnknown_02024A64 == 0) + if (gBattleExecBuffer == 0) { if (!(gBattleTypeFlags & BATTLE_TYPE_SAFARI)) - b_std_message(1, battle_get_side_with_given_state(0)); - gUnknown_030042D4 = sub_80119B4; + PrepareStringBattle(1, GetBankByPlayerAI(0)); + gBattleMainFunc = sub_80119B4; } } void sub_80119B4(void) { - if (gUnknown_02024A64 == 0) + if (gBattleExecBuffer == 0) { - for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++) + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) { - if (battle_get_per_side_status(gUnknown_02024A60) == 0) + if (GetBankIdentity(gActiveBank) == 0) { dp01_build_cmdbuf_x2F_2F_2F_2F(0); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + MarkBufferBankForExecution(gActiveBank); } if ((gBattleTypeFlags & BATTLE_TYPE_MULTI) - && battle_get_per_side_status(gUnknown_02024A60) == 2) + && GetBankIdentity(gActiveBank) == 2) { dp01_build_cmdbuf_x2F_2F_2F_2F(0); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + MarkBufferBankForExecution(gActiveBank); } } ewram16058 = 0; ewram160F9 = 0; ewram160E6 = 0; - gUnknown_030042D4 = sub_8011B00; + gBattleMainFunc = BattleBeginFirstTurn; } } void unref_sub_8011A68(void) { - if (gUnknown_02024A64 == 0) + if (gBattleExecBuffer == 0) { - for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++) + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) { - if (battle_side_get_owner(gUnknown_02024A60) == 0) + if (GetBankSide(gActiveBank) == 0) { - sub_800C704(0, gUnknown_02024A6A[gUnknown_02024A60], 0); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); + sub_800C704(0, gBattlePartyID[gActiveBank], 0); + MarkBufferBankForExecution(gActiveBank); } } ewram16058 = 0; ewram160F9 = 0; ewram160E6 = 0; - gUnknown_030042D4 = sub_8011B00; + gBattleMainFunc = BattleBeginFirstTurn; } } -void sub_8011B00(void) +void BattleBeginFirstTurn(void) { s32 i; s32 j; u8 r9 = 0; - if (gUnknown_02024A64 == 0) + if (gBattleExecBuffer == 0) { if (ewram16058 == 0) { - for (i = 0; i < gUnknown_02024A68; i++) - gUnknown_02024A7A[i] = i; - for (i = 0; i < gUnknown_02024A68 - 1; i++) + for (i = 0; i < gNoOfAllBanks; i++) + gTurnOrder[i] = i; + for (i = 0; i < gNoOfAllBanks - 1; i++) { - for (j = i + 1; j < gUnknown_02024A68; j++) + for (j = i + 1; j < gNoOfAllBanks; j++) { - if (b_first_side(gUnknown_02024A7A[i], gUnknown_02024A7A[j], 1) != 0) + if (b_first_side(gTurnOrder[i], gTurnOrder[j], 1) != 0) sub_8012FBC(i, j); } } } - if (ewram160E6 == 0 && sub_8018324(0, 0, 0, 0xFF, 0) != 0) + if (ewram160E6 == 0 && AbilityBattleEffects(0, 0, 0, 0xFF, 0) != 0) { ewram160E6 = 1; return; } - while (ewram16058 < gUnknown_02024A68) + while (ewram16058 < gNoOfAllBanks) { - if (sub_8018324(0, gUnknown_02024A7A[ewram16058], 0, 0, 0) != 0) + if (AbilityBattleEffects(0, gTurnOrder[ewram16058], 0, 0, 0) != 0) r9++; ewram16058++; if (r9 != 0) return; } - if (sub_8018324(9, 0, 0, 0, 0) != 0) + if (AbilityBattleEffects(9, 0, 0, 0, 0) != 0) return; - if (sub_8018324(11, 0, 0, 0, 0) != 0) + if (AbilityBattleEffects(11, 0, 0, 0, 0) != 0) return; - while (ewram160F9 < gUnknown_02024A68) + while (ewram160F9 < gNoOfAllBanks) { - if (sub_801A02C(0, gUnknown_02024A7A[ewram160F9], 0) != 0) + if (sub_801A02C(0, gTurnOrder[ewram160F9], 0) != 0) r9++; ewram160F9++; if (r9 != 0) return; } // Absolutely pointless for-loop that somehow doesn't get optimized out - for (i = 0; i < gUnknown_02024A68; i++) + for (i = 0; i < gNoOfAllBanks; i++) ; for (i = 0; i < 4; i++) { ewram[0x16068 + i] = 6; - gUnknown_02024C18[i] = 0xFF; - gUnknown_02024C60[i] = 0; + gActionForBanks[i] = 0xFF; + gChosenMovesByBanks[i] = 0; } - sub_801365C(0); - sub_801377C(); - ewram160A6 = gUnknown_02024C0C; - gUnknown_030042D4 = sub_8012324; + TurnValuesCleanUp(0); + SpecialStatusesClear(); + ewram160A6 = gAbsentBankFlags; + gBattleMainFunc = sub_8012324; sub_80156DC(); for (i = 0; i < 8; i++) - gUnknown_02024D1E[i] = 0; - for (i = 0; i < gUnknown_02024A68; i++) + gBattleCommunication[i] = 0; + for (i = 0; i < gNoOfAllBanks; i++) gBattleMons[i].status2 &= ~8; ewram16000 = 0; ewram16001 = 0; @@ -2248,7 +2248,7 @@ void sub_8011B00(void) ewram16059 = 0; ewram1600E = 0; gBattleMoveFlags = 0; - gUnknown_02024D1C = Random(); + gRandomTurnNumber = Random(); } } @@ -2256,16 +2256,16 @@ void bc_8013B1C(void) { s32 i; - if (gUnknown_02024A64 == 0) + if (gBattleExecBuffer == 0) { - gUnknown_030042D4 = sub_8011E8C; + gBattleMainFunc = BattleTurnPassed; for (i = 0; i < 8; i++) - gUnknown_02024D1E[i] = 0; - for (i = 0; i < gUnknown_02024A68; i++) + gBattleCommunication[i] = 0; + for (i = 0; i < gNoOfAllBanks; i++) { gBattleMons[i].status2 &= ~8; if ((gBattleMons[i].status1 & 7) && (gBattleMons[i].status2 & 0x1000)) - b_cancel_multi_turn_move_maybe(i); + CancelMultiTurnMoves(i); } ewram16000 = 0; ewram16001 = 0; @@ -2276,16 +2276,16 @@ void bc_8013B1C(void) } } -void sub_8011E8C(void) +void BattleTurnPassed(void) { s32 i; - sub_801365C(1); - if (gUnknown_02024D26 == 0) + TurnValuesCleanUp(1); + if (gBattleOutcome == 0) { - if (sub_8015DFC() != 0) + if (UpdateTurnCounters() != 0) return; - if (sub_8016558() != 0) + if (TurnBasedEffects() != 0) return; } if (sub_80173A4() != 0) @@ -2293,94 +2293,94 @@ void sub_8011E8C(void) ewram16059 = 0; if (sub_80170DC() != 0) return; - sub_801365C(0); - gUnknown_02024C6C &= ~0x200; - gUnknown_02024C6C &= ~0x80000; - gUnknown_02024C6C &= ~0x400000; - gUnknown_02024C6C &= ~0x100000; + TurnValuesCleanUp(0); + gHitMarker &= ~0x200; + gHitMarker &= ~0x80000; + gHitMarker &= ~0x400000; + gHitMarker &= ~0x100000; ewram16002 = 0; ewram160A1 = 0; ewram1600C = 0; gBattleMoveDamage = 0; gBattleMoveFlags = 0; for (i = 0; i < 5; i++) - gUnknown_02024D1E[i] = 0; - if (gUnknown_02024D26 != 0) + gBattleCommunication[i] = 0; + if (gBattleOutcome != 0) { - gUnknown_02024A7F = 12; - gUnknown_030042D4 = sub_80138F0; + gFightStateTracker = 12; + gBattleMainFunc = sub_80138F0; return; } - if (gUnknown_030042E0.unk13 < 0xFF) - gUnknown_030042E0.unk13++; - for (i = 0; i < gUnknown_02024A68; i++) + if (gBattleResults.unk13 < 0xFF) + gBattleResults.unk13++; + for (i = 0; i < gNoOfAllBanks; i++) { - gUnknown_02024C18[i] = 0xFF; - gUnknown_02024C60[i] = 0; + gActionForBanks[i] = 0xFF; + gChosenMovesByBanks[i] = 0; } for (i = 0; i < 4; i++) ewram[0x16068 + i] = 6; - ewram160A6 = gUnknown_02024C0C; - gUnknown_030042D4 = sub_8012324; - gUnknown_02024D1C = Random(); + ewram160A6 = gAbsentBankFlags; + gBattleMainFunc = sub_8012324; + gRandomTurnNumber = Random(); } -u8 sub_8012028(void) +u8 CanRunFromBattle(void) { u8 r2; u8 r6; s32 i; - if (gBattleMons[gUnknown_02024A60].item == 0xAF) - r2 = gEnigmaBerries[gUnknown_02024A60].holdEffect; + if (gBattleMons[gActiveBank].item == 0xAF) + r2 = gEnigmaBerries[gActiveBank].holdEffect; else - r2 = ItemId_GetHoldEffect(gBattleMons[gUnknown_02024A60].item); - gUnknown_02024C0B = gUnknown_02024A60; + r2 = ItemId_GetHoldEffect(gBattleMons[gActiveBank].item); + gStringBank = gActiveBank; if (r2 == 0x25) return 0; if (gBattleTypeFlags & BATTLE_TYPE_LINK) return 0; - if (gBattleMons[gUnknown_02024A60].ability == ABILITY_RUN_AWAY) + if (gBattleMons[gActiveBank].ability == ABILITY_RUN_AWAY) return 0; - r6 = battle_side_get_owner(gUnknown_02024A60); - for (i = 0; i < gUnknown_02024A68; i++) + r6 = GetBankSide(gActiveBank); + for (i = 0; i < gNoOfAllBanks; i++) { - if (r6 != battle_side_get_owner(i) + if (r6 != GetBankSide(i) && gBattleMons[i].ability == 0x17) { ewram16003 = i; - byte_2024C06 = gBattleMons[i].ability; - gUnknown_02024D1E[5] = 2; + gLastUsedAbility = gBattleMons[i].ability; + gBattleCommunication[5] = 2; return 2; } - if (r6 != battle_side_get_owner(i) - && gBattleMons[gUnknown_02024A60].ability != ABILITY_LEVITATE - && gBattleMons[gUnknown_02024A60].type1 != 2 - && gBattleMons[gUnknown_02024A60].type2 != 2 + if (r6 != GetBankSide(i) + && gBattleMons[gActiveBank].ability != ABILITY_LEVITATE + && gBattleMons[gActiveBank].type1 != 2 + && gBattleMons[gActiveBank].type2 != 2 && gBattleMons[i].ability == 0x47) { ewram16003 = i; - byte_2024C06 = gBattleMons[i].ability; - gUnknown_02024D1E[5] = 2; + gLastUsedAbility = gBattleMons[i].ability; + gBattleCommunication[5] = 2; return 2; } } - i = sub_8018324(15, gUnknown_02024A60, 0x2A, 0, 0); - if (i != 0 && (gBattleMons[gUnknown_02024A60].type1 == 8 || gBattleMons[gUnknown_02024A60].type2 == 8)) + i = AbilityBattleEffects(15, gActiveBank, 0x2A, 0, 0); + if (i != 0 && (gBattleMons[gActiveBank].type1 == 8 || gBattleMons[gActiveBank].type2 == 8)) { ewram16003 = i - 1; - byte_2024C06 = gBattleMons[i - 1].ability; - gUnknown_02024D1E[5] = 2; + gLastUsedAbility = gBattleMons[i - 1].ability; + gBattleCommunication[5] = 2; return 2; } - if ((gBattleMons[gUnknown_02024A60].status2 & 0x0400E000) || (gUnknown_02024C98[gUnknown_02024A60] & 0x400)) + if ((gBattleMons[gActiveBank].status2 & 0x0400E000) || (gStatuses3[gActiveBank] & 0x400)) { - gUnknown_02024D1E[5] = 0; + gBattleCommunication[5] = 0; return 1; } if (gBattleTypeFlags & BATTLE_TYPE_FIRST_BATTLE) { - gUnknown_02024D1E[5] = 1; + gBattleCommunication[5] = 1; return 1; } return 0; @@ -2394,7 +2394,7 @@ void sub_8012258(u8 a) for (i = 0; i < 3; i++) gUnknown_02038470[i] = ewram[0x1606C + i + a * 3]; - r4 = pokemon_order_func(gUnknown_02024A6A[a]); + r4 = pokemon_order_func(gBattlePartyID[a]); r1 = pokemon_order_func(ewram[0x16068 + a]); sub_8094C98(r4, r1); if (gBattleTypeFlags & BATTLE_TYPE_DOUBLE) @@ -2419,44 +2419,44 @@ void sub_8012324(void) { u8 r5; - gUnknown_02024D1E[4] = 0; + gBattleCommunication[4] = 0; // inverted loop //_0801234C - for (gUnknown_02024A60 = 0; gUnknown_02024A60 < gUnknown_02024A68; gUnknown_02024A60++) + for (gActiveBank = 0; gActiveBank < gNoOfAllBanks; gActiveBank++) { - r5 = battle_get_per_side_status(gUnknown_02024A60); - switch (gUnknown_02024D1E[gUnknown_02024A60]) + r5 = GetBankIdentity(gActiveBank); + switch (gBattleCommunication[gActiveBank]) { case 0: - ewram[0x016068 + gUnknown_02024A60] = 6; + ewram[0x016068 + gActiveBank] = 6; if (!(gBattleTypeFlags & 0x40) && (r5 & 2) - && !(ewram160A6 & gBitTable[battle_get_side_with_given_state(r5 ^ 2)]) - && gUnknown_02024D1E[battle_get_side_with_given_state(r5)] != 4) + && !(ewram160A6 & gBitTable[GetBankByPlayerAI(r5 ^ 2)]) + && gBattleCommunication[GetBankByPlayerAI(r5)] != 4) break; //_080123F8 - if (ewram160A6 & gBitTable[gUnknown_02024A60]) + if (ewram160A6 & gBitTable[gActiveBank]) { - gUnknown_02024C18[gUnknown_02024A60] = 13; + gActionForBanks[gActiveBank] = 13; if (!(gBattleTypeFlags & 0x40)) - gUnknown_02024D1E[gUnknown_02024A60] = 4; + gBattleCommunication[gActiveBank] = 4; //_08012454 else - gUnknown_02024D1E[gUnknown_02024A60] = 3; + gBattleCommunication[gActiveBank] = 3; break; } //_08012468 - if ((gBattleMons[gUnknown_02024A60].status2 & 0x1000) - || (gBattleMons[gUnknown_02024A60].status2 & 0x10000000)) + if ((gBattleMons[gActiveBank].status2 & 0x1000) + || (gBattleMons[gActiveBank].status2 & 0x10000000)) { - gUnknown_02024C18[gUnknown_02024A60] = 0; - gUnknown_02024D1E[gUnknown_02024A60] = 3; + gActionForBanks[gActiveBank] = 0; + gBattleCommunication[gActiveBank] = 3; } else { - dp01_build_cmdbuf_x12_a_bb(0, gUnknown_02024C18[0], gUnknown_02024260[0][1] | (gUnknown_02024260[0][2] << 8)); - dp01_battle_side_mark_buffer_for_execution(gUnknown_02024A60); - gUnknown_02024D1E[gUnknown_02024A60]++; + dp01_build_cmdbuf_x12_a_bb(0, gActionForBanks[0], gBattleBufferB[0][1] | (gBattleBufferB[0][2] << 8)); + MarkBufferBankForExecution(gActiveBank); + gBattleCommunication[gActiveBank]++; } break; case 1: |