summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2021-06-29 21:31:19 -0400
committerPikalaxALT <pikalaxalt@gmail.com>2021-06-29 21:31:19 -0400
commitfe2897c8a49579e6aac147d5d365b7fa6c6cdb72 (patch)
tree0154143abc4812cb2797077501bd889988b265db
parent7929bdf80b174f31c512970b2fa64652f222a09b (diff)
Define BSTRUCT_OFF for gBattleStruct macro hacks
-rw-r--r--include/ewram.h63
-rw-r--r--src/battle_ai_script_commands.c2
-rw-r--r--src/battle_interface.c4
-rw-r--r--src/battle_main.c4
-rw-r--r--src/battle_script_commands.c6
5 files changed, 38 insertions, 41 deletions
diff --git a/include/ewram.h b/include/ewram.h
index 947fa274e..0f5abd9c7 100644
--- a/include/ewram.h
+++ b/include/ewram.h
@@ -89,40 +89,37 @@ extern u8 gSharedMem[];
// Battle Struct
// For matching purposes, the struct is placed at 0x02000000 and
// there's a ton of filler.
-#define ewram16004arr(i, battler) (gSharedMem[0x16004 + i + battler * 2])
-#define ewram16010arr(battler) (gSharedMem[0x16010 + battler])
-#define ewram16020arr(i) (gSharedMem[0x16020 + i])
-#define ewram16058 (gSharedMem[0x16058])
-#define ewram16060(battler) (gSharedMem[0x16060 + battler])
-#define BATTLE_PARTY_ID(battler) (gSharedMem[0x16064 + battler])
-#define ewram16064arr(battler) (gSharedMem[0x16064 + battler])
-#define ewram16068arr(i) (gSharedMem[0x16068 + i])
-#define ewram1606Carr(i, a) (gSharedMem[0x1606C + i + a * 3])
-#define ewram16088 (gSharedMem[0x16088])
-#define ewram16089 (gSharedMem[0x16089])
-
-#define ewram1608Carr(battler) (gSharedMem[0x1608C + battler])
-#define ewram16094arr(battler) (gSharedMem[0x16094 + battler])
-#define eLastTakenMove_flat(i) (gSharedMem[0x160AC + i])
-#define eLastTakenMove_2d(i, battler) (gSharedMem[0x160AC + i + battler * 2])
-#define eHpOnSwitchout(battler) (gSharedMem[0x160BC + battler * 2])
-#define ewram160C8arr(battler) (gSharedMem[0x160C8 + (battler / 2)])
-#define ewram160CCarr(i) (gSharedMem[0x160CC + i])
-#define USED_HELD_ITEM(battler) ((((u16*)(&gSharedMem[0x160CC + battler * 2]))))
-#define USED_HELD_ITEMS(battler) (*(u16 *)&gSharedMem[0x160CC + 2 * (battler)])
-#define ewram160D4(battler) (gSharedMem[0x160D4 + (battler / 2) * 2])
-#define ewram160D8(battler) (gSharedMem[0x160D8 + (battler / 2)])
-#define ewram160DA(battler) (gSharedMem[0x160DA + (battler >> 1)])
-#define ewram160E0(i) (gSharedMem[0x160E0 + i])
-#define CHOICED_MOVE(battler) (((u16*)(&gSharedMem[0x160E8 + battler * 2])))
-#define ewram160E8arr(i) (gSharedMem[0x160E8 + i])
-#define ewram160E8arr2(i, battler) (gSharedMem[0x160E8 + i + battler * 2])
-#define ewram160F0arr(i) (gSharedMem[0x160F0 + i])
-#define ewram16100arr(i) (gSharedMem[0x16100 + i])
-#define ewram16100arr2(i, battler) (gSharedMem[0x16100 + i + battler * 4])
-#define ewram16108arr(i) (gSharedMem[0x16108 + i])
+#define BSTRUCT_OFF(member) (offsetof(struct BattleStruct, member) + ((u8 *)gBattleStruct - gSharedMem))
+
+#define ewram16004arr(i, battler) (gSharedMem[BSTRUCT_OFF(wrappedMove) + i + battler * 2])
+#define ewram16010arr(battler) (gSharedMem[BSTRUCT_OFF(moveTarget) + battler])
+#define ewram16020arr(i) (gSharedMem[BSTRUCT_OFF(wrappedBy) + i])
+#define ewram16060(battler) (gSharedMem[BSTRUCT_OFF(unk16060) + battler])
+#define BATTLE_PARTY_ID(battler) (gSharedMem[BSTRUCT_OFF(unk16064) + battler])
+#define ewram16068arr(i) (gSharedMem[BSTRUCT_OFF(monToSwitchIntoId) + i])
+#define ewram1606Carr(i, a) (gSharedMem[BSTRUCT_OFF(unk1606C) + i + a * 3])
+#define ewram1608Carr(battler) (gSharedMem[BSTRUCT_OFF(ChosenMoveID) + battler])
+#define ewram16094arr(battler) (gSharedMem[BSTRUCT_OFF(unk16094) + battler])
+#define eLastTakenMove_flat(i) (gSharedMem[BSTRUCT_OFF(lastTakenMove) + i])
+#define eLastTakenMove_2d(i, battler) (gSharedMem[BSTRUCT_OFF(lastTakenMove) + i + battler * 2])
+#define eHpOnSwitchout(battler) (gSharedMem[BSTRUCT_OFF(HP_OnSwitchout) + battler * 2])
+#define ewram160C8arr(battler) (gSharedMem[BSTRUCT_OFF(AI_monToSwitchIntoId) + (battler / 2)])
+#define ewram160CCarr(i) (gSharedMem[BSTRUCT_OFF(usedHeldItems) + i])
+#define USED_HELD_ITEM(battler) ((((u16*)(&gSharedMem[BSTRUCT_OFF(usedHeldItems) + battler * 2]))))
+#define USED_HELD_ITEMS(battler) (*(u16 *)&gSharedMem[BSTRUCT_OFF(usedHeldItems) + 2 * (battler)])
+#define AI_ARRAY_160CC(i) (gSharedMem[BSTRUCT_OFF(usedHeldItems) + i * 2])
+#define ewram160D4(battler) (gSharedMem[BSTRUCT_OFF(unk160D4) + (battler / 2) * 2])
+#define ewram160D8(battler) (gSharedMem[BSTRUCT_OFF(unk160D8) + (battler / 2)])
+#define ewram160DA(battler) (gSharedMem[BSTRUCT_OFF(unk160DA) + (battler >> 1)])
+#define ewram160E0(i) (gSharedMem[BSTRUCT_OFF(unk160E0) + i])
+#define CHOICED_MOVE(battler) (((u16*)(&gSharedMem[BSTRUCT_OFF(choicedMove) + battler * 2])))
+#define ewram160E8arr(i) (gSharedMem[BSTRUCT_OFF(choicedMove) + i])
+#define ewram160E8arr2(i, battler) (gSharedMem[BSTRUCT_OFF(choicedMove) + i + battler * 2])
+#define ewram160F0arr(i) (gSharedMem[BSTRUCT_OFF(changedItems) + i])
+#define ewram16100arr(i) (gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + i])
+#define ewram16100arr2(i, battler) (gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + i + battler * 4])
+#define ewram16108arr(i) (gSharedMem[BSTRUCT_OFF(lastTakenMoveFrom) + 8 + i])
#define ewram16400 (gSharedMem + 0x16400)
-#define AI_ARRAY_160CC(i) (gSharedMem[0x160CC + i * 2])
// gBattleResources
#define AI_THINKING_STRUCT ((struct AI_ThinkingStruct *)(gSharedMem + 0x16800))
diff --git a/src/battle_ai_script_commands.c b/src/battle_ai_script_commands.c
index 9f0cc406d..0d1a4c351 100644
--- a/src/battle_ai_script_commands.c
+++ b/src/battle_ai_script_commands.c
@@ -1758,7 +1758,7 @@ static void BattleAICmd_get_used_item(void)
else
index = gBattlerTarget;
- AI_THINKING_STRUCT->funcResult = AI_ARRAY_160CC(index);
+ AI_THINKING_STRUCT->funcResult = gSharedMem[offsetof(struct BattleStruct, usedHeldItems) + 2 * index];
gAIScriptPtr += 2;
}
diff --git a/src/battle_interface.c b/src/battle_interface.c
index 3d17bedd8..7b27b3997 100644
--- a/src/battle_interface.c
+++ b/src/battle_interface.c
@@ -1121,8 +1121,8 @@ void sub_8044338(u8 a, struct Pokemon *pkmn)
}
//_08044486
r5 = gSprites[a].data[5];
- ConvertIntToDecimalStringN(str + 6, ewram16089, 1, 2);
- ConvertIntToDecimalStringN(str + 9, ewram16088, 1, 2);
+ ConvertIntToDecimalStringN(str + 6, gBattleStruct->safariCatchFactor, 1, 2);
+ ConvertIntToDecimalStringN(str + 9, gBattleStruct->safariFleeRate, 1, 2);
str[5] = 0;
str[8] = 0xBA;
sub_80034D4(eBattleInterfaceGfxBuffer, str);
diff --git a/src/battle_main.c b/src/battle_main.c
index e8978b01c..4988fe660 100644
--- a/src/battle_main.c
+++ b/src/battle_main.c
@@ -4338,7 +4338,7 @@ void sub_8012324(void)
}
break;
case B_ACTION_SWITCH:
- ewram16064arr(gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
+ BATTLE_PARTY_ID(gActiveBattler) = gBattlerPartyIndexes[gActiveBattler];
if (gBattleMons[gActiveBattler].status2 & (STATUS2_WRAPPED | STATUS2_ESCAPE_PREVENTION)
|| gStatuses3[gActiveBattler] & STATUS3_ROOTED)
{
@@ -5367,7 +5367,7 @@ void HandleAction_Switch(void)
gActionSelectionCursor[gBattlerAttacker] = 0;
gMoveSelectionCursor[gBattlerAttacker] = 0;
- PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, ewram16064arr(gBattlerAttacker))
+ PREPARE_MON_NICK_BUFFER(gBattleTextBuff1, gBattlerAttacker, BATTLE_PARTY_ID(gBattlerAttacker))
gBattleStruct->scriptingActive = gBattlerAttacker;
gBattlescriptCurrInstr = BattleScript_ActionSwitch;
diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c
index 270151d17..a41c7678e 100644
--- a/src/battle_script_commands.c
+++ b/src/battle_script_commands.c
@@ -10303,7 +10303,7 @@ static bool8 sub_80264C0(void)
{
if (gBattleMons[gBattlerAttacker].level >= gBattleMons[gBattlerTarget].level)
{
- ewram16064arr(gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
+ BATTLE_PARTY_ID(gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
}
else
{
@@ -10313,7 +10313,7 @@ static bool8 sub_80264C0(void)
gBattlescriptCurrInstr = T1_READ_PTR(gBattlescriptCurrInstr + 1);
return 0;
}
- ewram16064arr(gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
+ BATTLE_PARTY_ID(gBattlerTarget) = gBattlerPartyIndexes[gBattlerTarget];
}
gBattlescriptCurrInstr = BattleScript_SuccessForceOut;
return 1;
@@ -13122,7 +13122,7 @@ static void atkE2_switchoutabilities(void)
{
case ABILITY_NATURAL_CURE:
gBattleMons[gActiveBattler].status1 = 0;
- BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[ewram16064arr(gActiveBattler)], 4, &gBattleMons[gActiveBattler].status1);
+ BtlController_EmitSetMonData(0, REQUEST_STATUS_BATTLE, gBitTable[BATTLE_PARTY_ID(gActiveBattler)], 4, &gBattleMons[gActiveBattler].status1);
MarkBattlerForControllerExec(gActiveBattler);
break;
}