summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/battle/battle_2.c36
-rw-r--r--src/battle/battle_ai.c21
-rw-r--r--src/battle/battle_controller_linkopponent.c15
-rw-r--r--src/battle/battle_controller_linkpartner.c14
-rw-r--r--src/battle/battle_controller_opponent.c21
-rw-r--r--src/battle/battle_controller_player.c24
-rw-r--r--src/battle/battle_controller_wally.c8
7 files changed, 52 insertions, 87 deletions
diff --git a/src/battle/battle_2.c b/src/battle/battle_2.c
index ecd0c677d..e6bad0d6b 100644
--- a/src/battle/battle_2.c
+++ b/src/battle/battle_2.c
@@ -1375,6 +1375,7 @@ void sub_8010384(struct Sprite *sprite)
void sub_8010494(struct Sprite *sprite)
{
s32 i;
+ u8 *dst;
sprite->data4--;
if (sprite->data4 == 0)
@@ -1389,8 +1390,8 @@ void sub_8010494(struct Sprite *sprite)
}
else
{
- u8 *dst = (u8 *)gUnknown_081FAF4C[GetBankIdentity(sprite->data0)] + (gBattleMonForms[sprite->data0] << 11) + (sprite->data3 << 8);
-
+ // this should use a BAD_MEMSET, but *(dst++) wont match with it.
+ dst = (u8 *)gUnknown_081FAF4C[GetBankIdentity(sprite->data0)] + (gBattleMonForms[sprite->data0] << 11) + (sprite->data3 << 8);
for (i = 0; i < 0x100; i++)
*(dst++) = 0;
StartSpriteAnim(sprite, gBattleMonForms[sprite->data0]);
@@ -1567,10 +1568,7 @@ void sub_8010874(void)
{
gStatuses3[i] = 0;
- r4 = (u8 *)&gDisableStructs[i];
- for (j = 0; j < (u32)0x1C; j++)
- r4[j] = 0;
-
+ BAD_MEMSET(&gDisableStructs[i], 0, 0x1C, j, r4)
gDisableStructs[i].isFirstTurn= 2;
gUnknown_02024C70[i] = 0;
gLastUsedMove[i] = 0;
@@ -1586,19 +1584,14 @@ void sub_8010874(void)
for (i = 0; i < 2; i++)
{
gSideAffecting[i] = 0;
-
- r4 = (u8 *)&gSideTimer[i];
- for (j = 0; j < 12; j++)
- r4[j] = 0;
+ BAD_MEMSET(&gSideTimer[i], 0, 12, j, r4)
}
gBankAttacker = 0;
gBankTarget = 0;
gBattleWeather = 0;
- r4 = (u8 *)&gWishFutureKnock;
- for (i = 0; i < (u32)0x2C; i++)
- r4[i] = 0;
+ BAD_MEMSET(&gWishFutureKnock, 0, 0x2C, i, r4)
gHitMarker = 0;
if ((gBattleTypeFlags & BATTLE_TYPE_LINK) == 0 && gSaveBlock2.optionsBattleSceneOff == TRUE)
@@ -1721,9 +1714,7 @@ void SwitchInClearStructs(void)
gActionSelectionCursor[gActiveBank] = 0;
gMoveSelectionCursor[gActiveBank] = 0;
- ptr = (u8 *)&gDisableStructs[gActiveBank];
- for (i = 0; i < (u32)0x1C; i++)
- ptr[i] = 0;
+ BAD_MEMSET(&gDisableStructs[gActiveBank], 0, 0x1C, i, ptr)
if (gBattleMoves[gCurrentMove].effect == EFFECT_BATON_PASS)
{
@@ -1778,9 +1769,7 @@ void UndoEffectsAfterFainting(void)
gActionSelectionCursor[gActiveBank] = 0;
gMoveSelectionCursor[gActiveBank] = 0;
- ptr = (u8 *)&gDisableStructs[gActiveBank];
- for (i = 0; i < (u32)0x1C; i++)
- ptr[i] = 0;
+ BAD_MEMSET(&gDisableStructs[gActiveBank], 0, 0x1C, i, ptr)
gProtectStructs[gActiveBank].protected = 0;
gProtectStructs[gActiveBank].endured = 0;
gProtectStructs[gActiveBank].onlyStruggle = 0;
@@ -1873,18 +1862,13 @@ void sub_8011384(void)
if ((gBattleTypeFlags & BATTLE_TYPE_SAFARI)
&& GetBankSide(gActiveBank) == 0)
{
- ptr = (u8 *)&gBattleMons[gActiveBank];
- for (i = 0; i < (u32)0x58; i++)
- ptr[i] = 0;
+ BAD_MEMSET(&gBattleMons[gActiveBank], 0, 0x58, i, ptr)
}
else
{
u8 r0;
- ptr = (u8 *)&gBattleMons[gActiveBank];
- for (i = 0; i < (u32)0x58; i++)
- ptr[i] = gBattleBufferB[gActiveBank][4 + i];
-
+ BAD_MEMSET(&gBattleMons[gActiveBank], gBattleBufferB[gActiveBank][4 + i], 0x58, i, ptr)
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);
diff --git a/src/battle/battle_ai.c b/src/battle/battle_ai.c
index 1869bbe36..a8bd7aa19 100644
--- a/src/battle/battle_ai.c
+++ b/src/battle/battle_ai.c
@@ -267,10 +267,9 @@ const u16 sDiscouragedPowerfulMoveEffects[] =
void BattleAI_HandleItemUseBeforeAISetup(void)
{
s32 i;
- u8 *data = (u8 *)UNK_2016A00_STRUCT;
+ u8 *data;
- for (i = 0; (u32)i < sizeof(struct UnkBattleStruct1); i++)
- data[i] = 0;
+ BAD_MEMSET(UNK_2016A00_STRUCT, 0, sizeof(struct UnkBattleStruct1), i, data)
if ((gBattleTypeFlags & BATTLE_TYPE_TRAINER)
&& gTrainerBattleOpponent != 0x400
@@ -292,21 +291,23 @@ void BattleAI_HandleItemUseBeforeAISetup(void)
void BattleAI_SetupAIData(void)
{
s32 i;
- u8 *data = (u8 *)AI_THINKING_STRUCT;
- u8 r7;
+ u8 limitations;
+ u8 *data;
// clear AI data and set default move score to 100. strange that they didn't use memset here.
- for (i = 0; (u32)i < sizeof(struct AI_ThinkingStruct); i++)
- data[i] = 0;
+ BAD_MEMSET(AI_THINKING_STRUCT, 0, sizeof(struct AI_ThinkingStruct), i, data)
+
for (i = 0; i < MAX_MON_MOVES; i++)
AI_THINKING_STRUCT->score[i] = 100;
- r7 = CheckMoveLimitations(gActiveBank, 0, 0xFF);
+ limitations = CheckMoveLimitations(gActiveBank, 0, 0xFF);
- // probably sets up the moves to consider and ignores non-valid moves such as NO_MOVE or glitch moves.
+ // do not consider moves the AI cannot select
+ // also, roll simulated RNG for moves that have a degree of
+ // randomness.
for (i = 0; i < MAX_MON_MOVES; i++)
{
- if (gBitTable[i] & r7)
+ if (gBitTable[i] & limitations)
AI_THINKING_STRUCT->score[i] = 0;
AI_THINKING_STRUCT->simulatedRNG[i] = 100 - (Random() % 16);
diff --git a/src/battle/battle_controller_linkopponent.c b/src/battle/battle_controller_linkopponent.c
index f2b11ae3d..4845988e8 100644
--- a/src/battle/battle_controller_linkopponent.c
+++ b/src/battle/battle_controller_linkopponent.c
@@ -637,9 +637,8 @@ u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer)
GetMonData(&gEnemyParty[a], MON_DATA_NICKNAME, nickname);
StringCopy10(battlePokemon.nickname, nickname);
GetMonData(&gEnemyParty[a], MON_DATA_OT_NAME, battlePokemon.otName);
- src = (u8 *)&battlePokemon;
- for (size = 0; size < sizeof(battlePokemon); size++)
- buffer[size] = src[size];
+
+ BAD_MEMSET_REVERSE(&battlePokemon, buffer, sizeof(battlePokemon), size, src)
break;
case 1:
data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPECIES);
@@ -660,9 +659,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon__(u8 a, u8 *buffer)
moveData.pp[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + size);
}
moveData.ppBonuses = GetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES);
- src = (u8 *)&moveData;
- for (size = 0; size < sizeof(moveData); size++)
- buffer[size] = src[size];
+ BAD_MEMSET_REVERSE(&moveData, buffer, sizeof(moveData), size, src)
break;
case 4:
case 5:
@@ -1145,9 +1142,9 @@ void LinkOpponentHandlecmd3(void)
u8 *dst;
u8 i;
- dst = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = gBattleBufferA[gActiveBank][3 + i];
+ BAD_MEMSET(&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1],
+ gBattleBufferA[gActiveBank][3 + i], gBattleBufferA[gActiveBank][2], i, dst)
+
LinkOpponentBufferExecCompleted();
}
diff --git a/src/battle/battle_controller_linkpartner.c b/src/battle/battle_controller_linkpartner.c
index 60e9599f8..6d7c3115f 100644
--- a/src/battle/battle_controller_linkpartner.c
+++ b/src/battle/battle_controller_linkpartner.c
@@ -593,9 +593,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer)
GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, nickname);
StringCopy10(battlePokemon.nickname, nickname);
GetMonData(&gPlayerParty[a], MON_DATA_OT_NAME, battlePokemon.otName);
- src = (u8 *)&battlePokemon;
- for (size = 0; size < sizeof(battlePokemon); size++)
- buffer[size] = src[size];
+ BAD_MEMSET_REVERSE(&battlePokemon, buffer, sizeof(battlePokemon), size, src)
break;
case 1:
data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
@@ -616,9 +614,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon(u8 a, u8 *buffer)
moveData.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
}
moveData.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
- src = (u8 *)&moveData;
- for (size = 0; size < sizeof(moveData); size++)
- buffer[size] = src[size];
+ BAD_MEMSET_REVERSE(&moveData, buffer, sizeof(moveData), size, src)
break;
case 4:
case 5:
@@ -1103,9 +1099,9 @@ void LinkPartnerHandlecmd3(void)
u8 *dst;
u8 i;
- dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = gBattleBufferA[gActiveBank][3 + i];
+ BAD_MEMSET(&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1],
+ gBattleBufferA[gActiveBank][3 + i], gBattleBufferA[gActiveBank][2], i, dst)
+
LinkPartnerBufferExecCompleted();
}
diff --git a/src/battle/battle_controller_opponent.c b/src/battle/battle_controller_opponent.c
index 85c0f4c52..8ad4075e5 100644
--- a/src/battle/battle_controller_opponent.c
+++ b/src/battle/battle_controller_opponent.c
@@ -601,9 +601,7 @@ u32 sub_8033598(u8 a, u8 *buffer)
GetMonData(&gEnemyParty[a], MON_DATA_NICKNAME, nickname);
StringCopy10(battlePokemon.nickname, nickname);
GetMonData(&gEnemyParty[a], MON_DATA_OT_NAME, battlePokemon.otName);
- src = (u8 *)&battlePokemon;
- for (size = 0; size < sizeof(battlePokemon); size++)
- buffer[size] = src[size];
+ BAD_MEMSET_REVERSE(&battlePokemon, buffer, sizeof(battlePokemon), size, src)
break;
case 1:
data16 = GetMonData(&gEnemyParty[a], MON_DATA_SPECIES);
@@ -624,9 +622,7 @@ u32 sub_8033598(u8 a, u8 *buffer)
moveData.pp[size] = GetMonData(&gEnemyParty[a], MON_DATA_PP1 + size);
}
moveData.ppBonuses = GetMonData(&gEnemyParty[a], MON_DATA_PP_BONUSES);
- src = (u8 *)&moveData;
- for (size = 0; size < sizeof(moveData); size++)
- buffer[size] = src[size];
+ BAD_MEMSET_REVERSE(&moveData, buffer, sizeof(moveData), size, src)
break;
case 4:
case 5:
@@ -864,12 +860,12 @@ u32 sub_8033598(u8 a, u8 *buffer)
void OpponentHandlecmd1(void)
{
struct BattlePokemon buffer;
- u8 *src = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
- u8 *dst = (u8 *)&buffer + gBattleBufferA[gActiveBank][1];
u8 i;
+ // TODO: Maybe fix this. Integrating this into BAD_MEMSET is too hard.
+ u8 *src = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 *dst;
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = src[i];
+ BAD_MEMSET(&buffer + gBattleBufferA[gActiveBank][1], src[i], gBattleBufferA[gActiveBank][2], i, dst)
Emitcmd29(1, gBattleBufferA[gActiveBank][2], dst);
OpponentBufferExecCompleted();
}
@@ -1117,9 +1113,8 @@ void OpponentHandlecmd3(void)
u8 *dst;
u8 i;
- dst = (u8 *)&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = gBattleBufferA[gActiveBank][3 + i];
+ BAD_MEMSET(&gEnemyParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][3 + i],
+ gBattleBufferA[gActiveBank][2], i, dst)
OpponentBufferExecCompleted();
}
diff --git a/src/battle/battle_controller_player.c b/src/battle/battle_controller_player.c
index ad266d415..423d036df 100644
--- a/src/battle/battle_controller_player.c
+++ b/src/battle/battle_controller_player.c
@@ -1773,9 +1773,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer)
GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, nickname);
StringCopy10(battlePokemon.nickname, nickname);
GetMonData(&gPlayerParty[a], MON_DATA_OT_NAME, battlePokemon.otName);
- src = (u8 *)&battlePokemon;
- for (size = 0; size < sizeof(battlePokemon); size++)
- buffer[size] = src[size];
+ BAD_MEMSET_REVERSE(&battlePokemon, buffer, sizeof(battlePokemon), size, src)
break;
case 1:
data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
@@ -1796,9 +1794,7 @@ u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer)
moveData.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
}
moveData.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
- src = (u8 *)&moveData;
- for (size = 0; size < sizeof(moveData); size++)
- buffer[size] = src[size];
+ BAD_MEMSET_REVERSE(&moveData, buffer, sizeof(moveData), size, src)
break;
case 4:
case 5:
@@ -2035,13 +2031,13 @@ u32 dp01_getattr_by_ch1_for_player_pokemon_(u8 a, u8 *buffer)
void PlayerHandlecmd1(void)
{
- struct BattlePokemon battleMon; // I think this is a BattlePokemon
- u8 *src = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
- u8 *dst = (u8 *)&battleMon + gBattleBufferA[gActiveBank][1];
+ struct BattlePokemon battleMon;
u8 i;
+ // TODO: Maybe fix this. Integrating this into BAD_MEMSET is too hard.
+ u8 *src = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
+ u8 *dst;
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = src[i];
+ BAD_MEMSET(&battleMon + gBattleBufferA[gActiveBank][1], src[i], gBattleBufferA[gActiveBank][2], i, dst)
Emitcmd29(1, gBattleBufferA[gActiveBank][2], dst);
PlayerBufferExecCompleted();
}
@@ -2288,11 +2284,11 @@ void dp01_setattr_by_ch1_for_player_pokemon(u8 a)
void PlayerHandlecmd3(void)
{
- u8 *dst = (u8 *)&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1];
u8 i;
+ u8 *dst;
- for (i = 0; i < gBattleBufferA[gActiveBank][2]; i++)
- dst[i] = gBattleBufferA[gActiveBank][3 + i];
+ BAD_MEMSET(&gPlayerParty[gBattlePartyID[gActiveBank]] + gBattleBufferA[gActiveBank][1], gBattleBufferA[gActiveBank][3 + i],
+ gBattleBufferA[gActiveBank][2], i, dst)
PlayerBufferExecCompleted();
}
diff --git a/src/battle/battle_controller_wally.c b/src/battle/battle_controller_wally.c
index cd371bc6f..838e99c83 100644
--- a/src/battle/battle_controller_wally.c
+++ b/src/battle/battle_controller_wally.c
@@ -569,9 +569,7 @@ u32 sub_8137A84(u8 a, u8 *buffer)
GetMonData(&gPlayerParty[a], MON_DATA_NICKNAME, nickname);
StringCopy10(battlePokemon.nickname, nickname);
GetMonData(&gPlayerParty[a], MON_DATA_OT_NAME, battlePokemon.otName);
- src = (u8 *)&battlePokemon;
- for (size = 0; size < sizeof(battlePokemon); size++)
- buffer[size] = src[size];
+ BAD_MEMSET_REVERSE(&battlePokemon, buffer, sizeof(battlePokemon), size, src)
break;
case 1:
data16 = GetMonData(&gPlayerParty[a], MON_DATA_SPECIES);
@@ -592,9 +590,7 @@ u32 sub_8137A84(u8 a, u8 *buffer)
moveData.pp[size] = GetMonData(&gPlayerParty[a], MON_DATA_PP1 + size);
}
moveData.ppBonuses = GetMonData(&gPlayerParty[a], MON_DATA_PP_BONUSES);
- src = (u8 *)&moveData;
- for (size = 0; size < sizeof(moveData); size++)
- buffer[size] = src[size];
+ BAD_MEMSET_REVERSE(&moveData, buffer, sizeof(moveData), size, src)
break;
case 4:
case 5: