summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorMarcus Huderle <huderlem@gmail.com>2017-10-21 19:51:28 -0700
committerMarcus Huderle <huderlem@gmail.com>2017-10-21 19:51:28 -0700
commit13c196eda57ebbdb3c7e14bebd2985f1edceae34 (patch)
treed1213f63cc5376b86d7e71ee12ec939d1ce52de5 /src
parentda48c3037762f19493280ca45800ba5d8e57b83d (diff)
More battle_tower work
Diffstat (limited to 'src')
-rw-r--r--src/battle/battle_records.c4
-rw-r--r--src/battle_tower.c1062
-rw-r--r--src/debug/unknown_debug_menu.c9
-rw-r--r--src/engine/mystery_event_script.c2
-rw-r--r--src/engine/record_mixing.c12
-rw-r--r--src/engine/trainer_card.c56
-rw-r--r--src/field/choose_party.c2
-rw-r--r--src/field/tv.c8
8 files changed, 1108 insertions, 47 deletions
diff --git a/src/battle/battle_records.c b/src/battle/battle_records.c
index d848a10b8..59da6ba73 100644
--- a/src/battle/battle_records.c
+++ b/src/battle/battle_records.c
@@ -295,13 +295,13 @@ static void PrintWinStreak(const u8 *str, u16 streak, u8 left, u8 top)
static void PrintRecordWinStreak(u8 level, u8 left, u8 top)
{
struct SaveBlock2_Sub *sb2sub = &gSaveBlock2.filler_A8;
- u16 winStreak = sb2sub->recordWinStreak[level];
+ u16 winStreak = sb2sub->recordWinStreaks[level];
PrintWinStreak(gOtherText_Record, winStreak, left, top);
}
static u16 GetLastWinStreak(u8 level)
{
- u16 result = gSaveBlock2.filler_A8.winStreak[level];
+ u16 result = gSaveBlock2.filler_A8.currentWinStreaks[level];
if (result > 9999)
result = 9999;
return result;
diff --git a/src/battle_tower.c b/src/battle_tower.c
index 51f4ca93d..90884ec98 100644
--- a/src/battle_tower.c
+++ b/src/battle_tower.c
@@ -1,11 +1,21 @@
#include "global.h"
#include "battle_tower.h"
#include "event_data.h"
+#include "map_object_constants.h"
+#include "rng.h"
#include "vars.h"
+extern u8 gTrainerClassToPicIndex[];
+extern u8 gTrainerClassToNameIndex[];
+extern u8 gUnknown_08405EB0[];
+extern u8 gUnknown_08405E7E[];
+extern u8 gUnknown_08405E92[];
+extern u8 gUnknown_08405E60[];
+extern struct BattleTowerTrainer gBattleTowerTrainers[];
-extern void sub_813461C(u8 levelType);
extern void sub_8135C44(void);
+extern void sub_813601C(void);
+extern void sub_81349FC(u8);
void sub_8134548(void)
@@ -56,3 +66,1053 @@ void sub_8134548(void)
sub_8135C44();
}
+
+void sub_813461C(u8 levelType)
+{
+ gSaveBlock2.filler_A8.var_4AE[levelType] = 0;
+ gSaveBlock2.filler_A8.var_4B0[levelType] = 1;
+ gSaveBlock2.filler_A8.var_4B4[levelType] = 1;
+}
+
+// u8 sub_8134650(u8 levelType, u16 b)
+// {
+// u8 trainerTeamLevel;
+// s32 i;
+// u32 numValid = 0;
+
+// sub_813601C();
+
+// if (gScriptResult || gSaveBlock2.filler_A8.ereaderTrainer.unk2 != b)
+// {
+// return 0;
+// }
+
+// trainerTeamLevel = 50;
+// if (levelType != 0)
+// {
+// trainerTeamLevel = 100;
+// }
+
+// for (i = 0; i < 3; i++)
+// {
+// if (!gSaveBlock2.filler_A8.ereaderTrainer.party[i].level != trainerTeamLevel)
+// {
+// return 0;
+// }
+
+// CheckMonBattleTowerBanlist(gSaveBlock2.filler_A8.ereaderTrainer.party[i].unk0, gSaveBlock2.filler_A8.ereaderTrainer.party[i].unk2, 1, levelType, &numValid);
+// }
+
+// return numValid == 3;
+// }
+
+__attribute__((naked))
+u8 sub_8134650(u8 levelType, u16 b)
+{
+ asm(".syntax unified\n\
+ push {r4-r7,lr}\n\
+ mov r7, r8\n\
+ push {r7}\n\
+ sub sp, 0x2C\n\
+ lsls r0, 24\n\
+ lsrs r5, r0, 24\n\
+ lsls r1, 16\n\
+ lsrs r6, r1, 16\n\
+ add r4, sp, 0x28\n\
+ movs r0, 0\n\
+ strb r0, [r4]\n\
+ bl sub_813601C\n\
+ ldr r0, _08134684 @ =gScriptResult\n\
+ ldrh r0, [r0]\n\
+ adds r7, r4, 0\n\
+ cmp r0, 0\n\
+ bne _08134680\n\
+ ldr r1, _08134688 @ =gSaveBlock2\n\
+ ldr r2, _0813468C @ =0x0000049a\n\
+ adds r0, r1, r2\n\
+ ldrh r0, [r0]\n\
+ cmp r0, r6\n\
+ beq _08134690\n\
+_08134680:\n\
+ movs r0, 0\n\
+ b _081346E2\n\
+ .align 2, 0\n\
+_08134684: .4byte gScriptResult\n\
+_08134688: .4byte gSaveBlock2\n\
+_0813468C: .4byte 0x0000049a\n\
+_08134690:\n\
+ movs r6, 0x32\n\
+ cmp r5, 0\n\
+ beq _08134698\n\
+ movs r6, 0x64\n\
+_08134698:\n\
+ movs r4, 0\n\
+ mov r8, r1\n\
+_0813469C:\n\
+ movs r0, 0x2C\n\
+ muls r0, r4\n\
+ mov r3, r8\n\
+ adds r1, r0, r3\n\
+ movs r2, 0x9B\n\
+ lsls r2, 3\n\
+ adds r0, r1, r2\n\
+ ldrb r2, [r0]\n\
+ cmp r2, r6\n\
+ bne _08134680\n\
+ ldr r3, _081346F0 @ =0x000004cc\n\
+ adds r0, r1, r3\n\
+ ldrh r0, [r0]\n\
+ adds r3, 0x2\n\
+ adds r1, r3\n\
+ ldrh r1, [r1]\n\
+ str r2, [sp]\n\
+ add r2, sp, 0x10\n\
+ str r2, [sp, 0x4]\n\
+ add r2, sp, 0x1C\n\
+ str r2, [sp, 0x8]\n\
+ str r7, [sp, 0xC]\n\
+ movs r2, 0x1\n\
+ adds r3, r5, 0\n\
+ bl CheckMonBattleTowerBanlist\n\
+ adds r4, 0x1\n\
+ cmp r4, 0x2\n\
+ ble _0813469C\n\
+ movs r1, 0\n\
+ ldrb r0, [r7]\n\
+ cmp r0, 0x3\n\
+ bne _081346E0\n\
+ movs r1, 0x1\n\
+_081346E0:\n\
+ adds r0, r1, 0\n\
+_081346E2:\n\
+ add sp, 0x2C\n\
+ pop {r3}\n\
+ mov r8, r3\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_081346F0: .4byte 0x000004cc\n\
+.syntax divided\n");
+}
+
+// bool8 sub_81346F4(void)
+// {
+// s32 i;
+// u32 j;
+// u32 arr[4];
+// u16 var2 = sub_8135D3C(gSaveBlock2.filler_A8.battleTowerLevelType);
+
+// if (sub_8134650(gSaveBlock2.filler_A8.battleTowerLevelType))
+// {
+// gSaveBlock2.filler_A8.battleTowerTrainerId = 0xC8;
+// return TRUE;
+// }
+
+// for (i = 0; i < 5; i++)
+// {
+// u32 var_or = 0;
+// u32 var_add = 0;
+// for (j = 0; j < 40; j++)
+// {
+// var_or |= gSaveBlock2.filler_A8.var_0A4[i][j];
+// var_add += gSaveBlock2.filler_A8.var_0A4[i][j];
+// }
+
+
+// }
+// }
+
+__attribute__((naked))
+bool8 sub_81346F4(void)
+{
+ 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\
+ sub sp, 0x18\n\
+ movs r0, 0\n\
+ mov r9, r0\n\
+ ldr r4, _08134738 @ =gSaveBlock2\n\
+ ldr r1, _0813473C @ =0x00000554\n\
+ adds r0, r4, r1\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 31\n\
+ lsrs r7, r0, 31\n\
+ adds r0, r7, 0\n\
+ bl sub_8135D3C\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r8, r0\n\
+ adds r0, r7, 0\n\
+ mov r1, r8\n\
+ bl sub_8134650\n\
+ lsls r0, 24\n\
+ adds r1, r4, 0\n\
+ cmp r0, 0\n\
+ beq _08134744\n\
+ ldr r2, _08134740 @ =0x00000564\n\
+ adds r1, r2\n\
+ movs r0, 0xC8\n\
+ strb r0, [r1]\n\
+ b _081347DE\n\
+ .align 2, 0\n\
+_08134738: .4byte gSaveBlock2\n\
+_0813473C: .4byte 0x00000554\n\
+_08134740: .4byte 0x00000564\n\
+_08134744:\n\
+ movs r5, 0\n\
+ movs r3, 0xA4\n\
+ mov r12, r3\n\
+ mov r10, sp\n\
+_0813474C:\n\
+ mov r0, r12\n\
+ muls r0, r5\n\
+ movs r4, 0\n\
+ movs r1, 0\n\
+ movs r2, 0\n\
+ adds r6, r5, 0x1\n\
+ str r6, [sp, 0x14]\n\
+ ldr r6, _081347B4 @ =gSaveBlock2 + 0x14C\n\
+ adds r3, r0, r6\n\
+_0813475E:\n\
+ ldm r3!, {r0}\n\
+ orrs r4, r0\n\
+ adds r1, r0\n\
+ adds r2, 0x1\n\
+ cmp r2, 0x27\n\
+ bls _0813475E\n\
+ mov r3, r12\n\
+ muls r3, r5\n\
+ ldr r0, _081347B8 @ =gSaveBlock2\n\
+ adds r2, r3, r0\n\
+ movs r6, 0xA7\n\
+ lsls r6, 1\n\
+ adds r0, r2, r6\n\
+ ldrh r0, [r0]\n\
+ cmp r0, r8\n\
+ bne _081347A4\n\
+ subs r6, 0x2\n\
+ adds r0, r2, r6\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r7\n\
+ bne _081347A4\n\
+ cmp r4, 0\n\
+ beq _081347A4\n\
+ ldr r2, _081347BC @ =gSaveBlock2 + 0x1EC\n\
+ adds r0, r3, r2\n\
+ ldr r0, [r0]\n\
+ cmp r0, r1\n\
+ bne _081347A4\n\
+ mov r3, r10\n\
+ adds r3, 0x4\n\
+ mov r10, r3\n\
+ subs r3, 0x4\n\
+ stm r3!, {r5}\n\
+ movs r6, 0x1\n\
+ add r9, r6\n\
+_081347A4:\n\
+ ldr r5, [sp, 0x14]\n\
+ cmp r5, 0x4\n\
+ ble _0813474C\n\
+ mov r0, r9\n\
+ cmp r0, 0\n\
+ bne _081347C0\n\
+ movs r0, 0\n\
+ b _081347E0\n\
+ .align 2, 0\n\
+_081347B4: .4byte gSaveBlock2 + 0x14C\n\
+_081347B8: .4byte gSaveBlock2\n\
+_081347BC: .4byte gSaveBlock2 + 0x1EC\n\
+_081347C0:\n\
+ bl Random\n\
+ ldr r4, _081347F0 @ =gSaveBlock2\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ mov r1, r9\n\
+ bl __modsi3\n\
+ lsls r0, 2\n\
+ add r0, sp\n\
+ ldr r0, [r0]\n\
+ adds r0, 0x64\n\
+ ldr r1, _081347F4 @ =0x00000564\n\
+ adds r4, r1\n\
+ strb r0, [r4]\n\
+_081347DE:\n\
+ movs r0, 0x1\n\
+_081347E0:\n\
+ add sp, 0x18\n\
+ pop {r3-r5}\n\
+ mov r8, r3\n\
+ mov r9, r4\n\
+ mov r10, r5\n\
+ pop {r4-r7}\n\
+ pop {r1}\n\
+ bx r1\n\
+ .align 2, 0\n\
+_081347F0: .4byte gSaveBlock2\n\
+_081347F4: .4byte 0x00000564\n\
+.syntax divided\n");
+}
+
+// void sub_81347F8(void)
+// {
+// bool8 levelType = gSaveBlock2.filler_A8.battleTowerLevelType;
+// if (sub_81346F4())
+// {
+// sub_81349FC(gSaveBlock2.filler_A8.battleTowerTrainerId);
+// gSaveBlock2.filler_A8.var_4C1[gSaveBlock2.filler_A8.var_4B0[levelType]] = gSaveBlock2.filler_A8.battleTowerTrainerId;
+// }
+// else
+// {
+// u16 var1;
+
+// if (gSaveBlock2.filler_A8.var_4B4[levelType] > 7)
+// {
+// while (1)
+// {
+// s32 i;
+// u32 temp = ((Random() & 0xFF) * 30) >> 8;
+// var1 = temp + 70;
+// for (i = 0; i < gSaveBlock2.filler_A8.var_4B0[levelType] - 1 && var1 != gSaveBlock2.filler_A8.var_4C1[i]; i++) // TODO: [i + 1]???
+// { }
+
+// if (i == gSaveBlock2.filler_A8.var_4B0[levelType] - 1)
+// {
+// break;
+// }
+// }
+// }
+// else
+// {
+// if (gSaveBlock2.filler_A8.var_4B0[levelType] == 7)
+// {
+// while (1)
+// {
+// s32 i;
+// u32 temp = ((Random() & 0xFF) * 5);
+// u32 temp2 = (((gSaveBlock2.filler_A8.var_4B4[levelType] - 1) * 10) + 20);
+// var1 = temp / 128 + temp2;
+// for (i = 0; i < gSaveBlock2.filler_A8.var_4B0[levelType] - 1 && gSaveBlock2.filler_A8.var_4C1[i] != var1; i++) // TODO: [i + 1]????
+// { }
+
+// if (i == gSaveBlock2.filler_A8.var_4B0[levelType] - 1)
+// {
+// break;
+// }
+// }
+// }
+// else
+// {
+// while (1)
+// {
+// s32 i;
+// u32 temp = ((Random() & 0xFF) * 320);
+// u32 temp2 = ((gSaveBlock2.filler_A8.var_4B4[levelType] - 1) * 10);
+// var1 = temp + temp2;
+// for (i = 0; i < gSaveBlock2.filler_A8.var_4B0[levelType] - 1 && gSaveBlock2.filler_A8.var_4C1[i] != var1; i++)
+// { }
+
+// if (i == gSaveBlock2.filler_A8.var_4B0[levelType] - 1)
+// {
+// break;
+// }
+// }
+// }
+// }
+
+// gSaveBlock2.filler_A8.battleTowerTrainerId = var1;
+// sub_81349FC(gSaveBlock2.filler_A8.battleTowerTrainerId);
+
+// if (gSaveBlock2.filler_A8.var_4B0[levelType] < 7)
+// {
+// gSaveBlock2.filler_A8.var_4C1[gSaveBlock2.filler_A8.var_4B0[levelType]] = gSaveBlock2.filler_A8.battleTowerTrainerId;
+// }
+// }
+// }
+
+__attribute__((naked))
+void sub_81347F8(void)
+{
+ 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\
+ ldr r5, _08134838 @ =gSaveBlock2\n\
+ ldr r1, _0813483C @ =0x00000554\n\
+ adds r0, r5, r1\n\
+ ldrb r0, [r0]\n\
+ lsls r0, 31\n\
+ lsrs r6, r0, 31\n\
+ bl sub_81346F4\n\
+ lsls r0, 24\n\
+ cmp r0, 0\n\
+ beq _08134848\n\
+ ldr r2, _08134840 @ =0x00000564\n\
+ adds r4, r5, r2\n\
+ ldrb r0, [r4]\n\
+ bl sub_81349FC\n\
+ lsls r0, r6, 1\n\
+ movs r3, 0xAB\n\
+ lsls r3, 3\n\
+ adds r1, r5, r3\n\
+ adds r0, r1\n\
+ ldrh r0, [r0]\n\
+ adds r0, r5, r0\n\
+ ldr r1, _08134844 @ =0x00000569\n\
+ adds r0, r1\n\
+ ldrb r1, [r4]\n\
+ b _081349DC\n\
+ .align 2, 0\n\
+_08134838: .4byte gSaveBlock2\n\
+_0813483C: .4byte 0x00000554\n\
+_08134840: .4byte 0x00000564\n\
+_08134844: .4byte 0x00000569\n\
+_08134848:\n\
+ lsls r0, r6, 1\n\
+ ldr r2, _081348D8 @ =0x0000055c\n\
+ adds r1, r5, r2\n\
+ adds r1, r0, r1\n\
+ ldrh r1, [r1]\n\
+ adds r7, r0, 0\n\
+ cmp r1, 0x7\n\
+ bls _0813485A\n\
+ b _0813495C\n\
+_0813485A:\n\
+ movs r3, 0xAB\n\
+ lsls r3, 3\n\
+ adds r0, r5, r3\n\
+ adds r1, r7, r0\n\
+ ldrh r0, [r1]\n\
+ cmp r0, 0x7\n\
+ bne _081348E4\n\
+ adds r6, r5, 0\n\
+ mov r9, r7\n\
+ adds r5, r1, 0\n\
+ ldr r0, _081348DC @ =0x0000056a\n\
+ adds r0, r6\n\
+ mov r10, r0\n\
+ mov r8, r5\n\
+_08134876:\n\
+ bl Random\n\
+ movs r1, 0xFF\n\
+ ands r1, r0\n\
+ lsls r2, r1, 2\n\
+ adds r2, r1\n\
+ ldr r1, _081348D8 @ =0x0000055c\n\
+ adds r4, r6, r1\n\
+ mov r3, r9\n\
+ adds r0, r3, r4\n\
+ ldrh r1, [r0]\n\
+ subs r1, 0x1\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 1\n\
+ adds r0, 0x14\n\
+ lsrs r2, 7\n\
+ adds r2, r0\n\
+ lsls r2, 16\n\
+ lsrs r2, 16\n\
+ movs r1, 0\n\
+ ldrh r0, [r5]\n\
+ subs r0, 0x1\n\
+ cmp r1, r0\n\
+ bge _081348C8\n\
+ mov r3, r10\n\
+ ldrb r0, [r3]\n\
+ cmp r0, r2\n\
+ beq _081348C8\n\
+ subs r0, r4, 0x4\n\
+ adds r0, r7, r0\n\
+ ldrh r0, [r0]\n\
+ subs r3, r0, 0x1\n\
+ adds r4, 0xE\n\
+_081348BA:\n\
+ adds r1, 0x1\n\
+ cmp r1, r3\n\
+ bge _081348C8\n\
+ adds r0, r1, r4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r2\n\
+ bne _081348BA\n\
+_081348C8:\n\
+ mov r3, r8\n\
+ ldrh r0, [r3]\n\
+ subs r0, 0x1\n\
+ ldr r4, _081348E0 @ =gSaveBlock2\n\
+ cmp r1, r0\n\
+ bne _08134876\n\
+ b _081349B6\n\
+ .align 2, 0\n\
+_081348D8: .4byte 0x0000055c\n\
+_081348DC: .4byte 0x0000056a\n\
+_081348E0: .4byte gSaveBlock2\n\
+_081348E4:\n\
+ adds r6, r5, 0\n\
+ mov r9, r7\n\
+ adds r5, r1, 0\n\
+ ldr r2, _08134950 @ =0x0000056a\n\
+ adds r2, r6\n\
+ mov r10, r2\n\
+ mov r8, r5\n\
+_081348F2:\n\
+ bl Random\n\
+ movs r1, 0xFF\n\
+ ands r1, r0\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsrs r2, r0, 6\n\
+ ldr r3, _08134954 @ =0x0000055c\n\
+ adds r4, r6, r3\n\
+ mov r1, r9\n\
+ adds r0, r1, r4\n\
+ ldrh r1, [r0]\n\
+ subs r1, 0x1\n\
+ lsls r0, r1, 2\n\
+ adds r0, r1\n\
+ lsls r0, 1\n\
+ adds r0, r2, r0\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ movs r1, 0\n\
+ ldrh r0, [r5]\n\
+ subs r0, 0x1\n\
+ cmp r1, r0\n\
+ bge _08134942\n\
+ mov r3, r10\n\
+ ldrb r0, [r3]\n\
+ cmp r0, r2\n\
+ beq _08134942\n\
+ subs r0, r4, 0x4\n\
+ adds r0, r7, r0\n\
+ ldrh r0, [r0]\n\
+ subs r3, r0, 0x1\n\
+ adds r4, 0xE\n\
+_08134934:\n\
+ adds r1, 0x1\n\
+ cmp r1, r3\n\
+ bge _08134942\n\
+ adds r0, r1, r4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r2\n\
+ bne _08134934\n\
+_08134942:\n\
+ mov r3, r8\n\
+ ldrh r0, [r3]\n\
+ subs r0, 0x1\n\
+ ldr r4, _08134958 @ =gSaveBlock2\n\
+ cmp r1, r0\n\
+ bne _081348F2\n\
+ b _081349B6\n\
+ .align 2, 0\n\
+_08134950: .4byte 0x0000056a\n\
+_08134954: .4byte 0x0000055c\n\
+_08134958: .4byte gSaveBlock2\n\
+_0813495C:\n\
+ movs r2, 0xAB\n\
+ lsls r2, 3\n\
+ adds r0, r5, r2\n\
+ adds r6, r7, r0\n\
+ ldr r3, _081349EC @ =0x0000056a\n\
+ adds r3, r5\n\
+ mov r8, r3\n\
+ adds r5, r6, 0\n\
+_0813496C:\n\
+ bl Random\n\
+ movs r1, 0xFF\n\
+ ands r1, r0\n\
+ lsls r0, r1, 4\n\
+ subs r0, r1\n\
+ lsls r0, 1\n\
+ asrs r0, 8\n\
+ adds r0, 0x46\n\
+ lsls r0, 16\n\
+ lsrs r2, r0, 16\n\
+ movs r1, 0\n\
+ ldrh r0, [r6]\n\
+ subs r0, 0x1\n\
+ cmp r1, r0\n\
+ bge _081349AC\n\
+ mov r3, r8\n\
+ ldrb r0, [r3]\n\
+ ldr r4, _081349F0 @ =gSaveBlock2\n\
+ cmp r0, r2\n\
+ beq _081349AC\n\
+ ldrh r0, [r5]\n\
+ subs r3, r0, 0x1\n\
+ ldr r0, _081349EC @ =0x0000056a\n\
+ adds r4, r0\n\
+_0813499E:\n\
+ adds r1, 0x1\n\
+ cmp r1, r3\n\
+ bge _081349AC\n\
+ adds r0, r1, r4\n\
+ ldrb r0, [r0]\n\
+ cmp r0, r2\n\
+ bne _0813499E\n\
+_081349AC:\n\
+ ldrh r0, [r6]\n\
+ subs r0, 0x1\n\
+ ldr r4, _081349F0 @ =gSaveBlock2\n\
+ cmp r1, r0\n\
+ bne _0813496C\n\
+_081349B6:\n\
+ ldr r1, _081349F4 @ =0x00000564\n\
+ adds r0, r4, r1\n\
+ strb r2, [r0]\n\
+ ldr r2, _081349F4 @ =0x00000564\n\
+ adds r5, r4, r2\n\
+ ldrb r0, [r5]\n\
+ bl sub_81349FC\n\
+ movs r3, 0xAB\n\
+ lsls r3, 3\n\
+ adds r0, r4, r3\n\
+ adds r1, r7, r0\n\
+ ldrh r0, [r1]\n\
+ cmp r0, 0x6\n\
+ bhi _081349DE\n\
+ adds r0, r4, r0\n\
+ ldr r1, _081349F8 @ =0x00000569\n\
+ adds r0, r1\n\
+ ldrb r1, [r5]\n\
+_081349DC:\n\
+ strb r1, [r0]\n\
+_081349DE:\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\
+_081349EC: .4byte 0x0000056a\n\
+_081349F0: .4byte gSaveBlock2\n\
+_081349F4: .4byte 0x00000564\n\
+_081349F8: .4byte 0x00000569\n\
+.syntax divided\n");
+}
+
+void sub_81349FC(u8 trainerIndex)
+{
+ u32 i;
+ u8 trainerClass;
+
+ if (trainerIndex < 100)
+ {
+ trainerClass = gBattleTowerTrainers[trainerIndex].trainerClass;
+ }
+ else if (trainerIndex < 200)
+ {
+ trainerClass = gSaveBlock2.filler_A8.var_14C[trainerIndex - 100].trainerClass;
+ }
+ else
+ {
+ trainerClass = gSaveBlock2.filler_A8.ereaderTrainer.trainerClass;
+ }
+
+ for (i = 0; i < 30 && gUnknown_08405E60[i] != trainerClass; i++);
+ if (i != 30)
+ {
+ u8 trainerObjectGfxId = gUnknown_08405E92[i];
+ VarSet(0x4010, trainerObjectGfxId);
+ return;
+ }
+
+ for (i = 0; i < 20 && gUnknown_08405E7E[i] != trainerClass; i++);
+ if (i != 20)
+ {
+ u8 trainerObjectGfxId = gUnknown_08405EB0[i];
+ VarSet(0x4010, trainerObjectGfxId);
+ return;
+ }
+
+ VarSet(0x4010, MAP_OBJ_GFX_BOY_1);
+}
+
+void sub_8134AB4()
+{
+ sub_81349FC(200);
+}
+
+// void sub_8134AC0(struct BattleTowerRecord *record)
+// {
+// u16 var1[5];
+// u16 var2[5];
+// s32 i, j, k;
+// s16 l = 0;
+
+// for (i = 0; i < 5; i++)
+// {
+// k = 0;
+// for (j = 0; j < 4 && gSaveBlock2.filler_A8.var_14C[i].var_C[i] != record->var_C[j]; j++);
+// if (j == 4)
+// {
+// for (k = 0; k < 7 && gSaveBlock2.filler_A8.var_14C[i].var_8 == record->var_8; k++)
+// {
+// if (record->var_8 == 0xFF)
+// {
+// k = 7;
+// break;
+// }
+// }
+// }
+
+// if (k == 7)
+// {
+// break;
+// }
+// }
+
+// if (i < 5)
+// {
+// gSaveBlock2.filler_A8.var_14C[i] = *record;
+// return;
+// }
+
+// i = 0;
+// while (i < 5)
+// {
+// if (gSaveBlock2.filler_A8.var_14C[i].var_2 == 0)
+// {
+// if (i > 4)
+// {
+// break;
+// }
+
+// gSaveBlock2.filler_A8.var_14C[i] = *record;
+// return;
+// }
+
+// i++;
+// }
+
+// var1[0] = gSaveBlock2.filler_A8.var_14C[0].var_2;
+// var2[0] = 0;
+// l++;
+
+// for (i = 1; i < 5; i++)
+// {
+// for (j = 0; gSaveBlock2.filler_A8.var_14C[i].var_2 <= var1[0] && j < l; j++)
+// {
+// if (gSaveBlock2.filler_A8.var_14C[i].var_2 < var1[0])
+// {
+// j = 0;
+// l = 1;
+// var1[0] = gSaveBlock2.filler_A8.var_14C[i].var_2;
+// var2[0] = i;
+// break;
+// }
+// }
+
+// if (j == l)
+// {
+// var1[l] = gSaveBlock2.filler_A8.var_14C[i].var_2;
+// var2[l] = i;
+// l++;
+// }
+// }
+
+// gSaveBlock2.filler_A8.var_14C[var2[(Random() % l)]] = *record;
+// }
+
+__attribute__((naked))
+void sub_8134AC0(struct BattleTowerRecord *record)
+{
+ 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\
+ sub sp, 0x1C\n\
+ movs r7, 0\n\
+ mov r8, r0\n\
+ movs r5, 0\n\
+ ldr r0, _08134B3C @ =gSaveBlock2\n\
+ mov r12, r0\n\
+ mov r1, r8\n\
+ ldrb r1, [r1, 0xC]\n\
+ str r1, [sp, 0x18]\n\
+ movs r2, 0xAA\n\
+ lsls r2, 1\n\
+ add r2, r12\n\
+ mov r10, r2\n\
+ mov r9, r5\n\
+_08134AE6:\n\
+ movs r6, 0\n\
+ movs r3, 0\n\
+ ldr r0, _08134B40 @ =gSaveBlock2 + 0x158\n\
+ add r0, r9\n\
+ ldrb r0, [r0]\n\
+ ldr r1, [sp, 0x18]\n\
+ cmp r0, r1\n\
+ bne _08134B14\n\
+ movs r0, 0xA4\n\
+ muls r0, r5\n\
+ ldr r1, _08134B40 @ =gSaveBlock2 + 0x158\n\
+ adds r2, r0, r1\n\
+ mov r4, r8\n\
+ adds r4, 0xC\n\
+_08134B02:\n\
+ adds r2, 0x1\n\
+ adds r3, 0x1\n\
+ cmp r3, 0x3\n\
+ bgt _08134B14\n\
+ adds r1, r4, r3\n\
+ ldrb r0, [r2]\n\
+ ldrb r1, [r1]\n\
+ cmp r0, r1\n\
+ beq _08134B02\n\
+_08134B14:\n\
+ cmp r3, 0x4\n\
+ bne _08134B54\n\
+ movs r6, 0\n\
+ mov r2, r10\n\
+ ldrb r0, [r2]\n\
+ mov r3, r8\n\
+ ldrb r3, [r3, 0x8]\n\
+ cmp r0, r3\n\
+ bne _08134B54\n\
+ adds r1, r0, 0\n\
+ movs r0, 0xA4\n\
+ muls r0, r5\n\
+ adds r0, 0x4\n\
+ ldr r3, _08134B44 @ =gSaveBlock2 + 0x150\n\
+ adds r2, r0, r3\n\
+_08134B32:\n\
+ cmp r1, 0xFF\n\
+ bne _08134B48\n\
+ movs r6, 0x7\n\
+ b _08134B54\n\
+ .align 2, 0\n\
+_08134B3C: .4byte gSaveBlock2\n\
+_08134B40: .4byte gSaveBlock2 + 0x158\n\
+_08134B44: .4byte gSaveBlock2 + 0x150\n\
+_08134B48:\n\
+ adds r6, 0x1\n\
+ cmp r6, 0x6\n\
+ bgt _08134B54\n\
+ ldrb r0, [r2]\n\
+ cmp r0, r1\n\
+ beq _08134B32\n\
+_08134B54:\n\
+ cmp r6, 0x7\n\
+ beq _08134B64\n\
+ movs r0, 0xA4\n\
+ add r10, r0\n\
+ add r9, r0\n\
+ adds r5, 0x1\n\
+ cmp r5, 0x4\n\
+ ble _08134AE6\n\
+\n\
+_08134B64:\n\
+ cmp r5, 0x4\n\
+ bgt _08134B76\n\
+ movs r0, 0xA4\n\
+ muls r0, r5\n\
+ add r0, r12\n\
+ movs r1, 0xA6\n\
+ lsls r1, 1\n\
+ adds r0, r1\n\
+ b _08134B9E\n\
+_08134B76:\n\
+ movs r5, 0\n\
+ movs r1, 0xA7\n\
+ lsls r1, 1\n\
+ add r1, r12\n\
+ b _08134B88\n\
+_08134B80:\n\
+ adds r1, 0xA4\n\
+ adds r5, 0x1\n\
+ cmp r5, 0x4\n\
+ bgt _08134BA8\n\
+_08134B88:\n\
+ ldrh r0, [r1]\n\
+ cmp r0, 0\n\
+ bne _08134B80\n\
+ cmp r5, 0x4\n\
+ bgt _08134BA8\n\
+ movs r0, 0xA4\n\
+ muls r0, r5\n\
+ add r0, r12\n\
+ movs r2, 0xA6\n\
+ lsls r2, 1\n\
+ adds r0, r2\n\
+_08134B9E:\n\
+ mov r1, r8\n\
+ movs r2, 0xA4\n\
+ bl memcpy\n\
+ b _08134C5E\n\
+\n\
+_08134BA8:\n\
+ mov r2, sp\n\
+ movs r3, 0xA7\n\
+ lsls r3, 1\n\
+ mov r1, r12\n\
+ adds r0, r1, r3\n\
+ ldrh r0, [r0]\n\
+ movs r1, 0\n\
+ strh r0, [r2]\n\
+ add r0, sp, 0xC\n\
+ strh r1, [r0]\n\
+ adds r7, 0x1\n\
+ movs r5, 0x1\n\
+ add r2, sp, 0xC @var2 = r2\n\
+ mov r9, r2\n\
+ mov r10, r3\n\
+_08134BC6:\n\
+ movs r3, 0\n\
+ adds r0, r5, 0x1\n\
+ mov r12, r0\n\
+ cmp r3, r7\n\
+ bge _08134C0A\n\
+ movs r1, 0xA4\n\
+ adds r0, r5, 0\n\
+ muls r0, r1\n\
+ ldr r2, _08134BFC @ =gSaveBlock2\n\
+ adds r0, r2\n\
+ mov r1, r10\n\
+ adds r4, r0, r1\n\
+ mov r6, sp\n\
+_08134BE0:\n\
+ lsls r0, r3, 1\n\
+ add r0, sp\n\
+ ldrh r2, [r4]\n\
+ adds r1, r2, 0\n\
+ ldrh r0, [r0]\n\
+ cmp r1, r0\n\
+ bcs _08134C00\n\
+ movs r3, 0\n\
+ movs r7, 0x1\n\
+ strh r2, [r6]\n\
+ mov r2, r9\n\
+ strh r5, [r2]\n\
+ b _08134C0A\n\
+ .align 2, 0\n\
+_08134BFC: .4byte gSaveBlock2\n\
+_08134C00:\n\
+ cmp r1, r0\n\
+ bhi _08134C0A\n\
+ adds r3, 0x1\n\
+ cmp r3, r7\n\
+ blt _08134BE0\n\
+_08134C0A:\n\
+ cmp r3, r7\n\
+ bne _08134C2A\n\
+ lsls r1, r7, 1\n\
+ mov r3, sp\n\
+ adds r2, r3, r1\n\
+ movs r3, 0xA4\n\
+ adds r0, r5, 0\n\
+ muls r0, r3\n\
+ ldr r3, _08134C70 @ =gSaveBlock2\n\
+ adds r0, r3\n\
+ add r0, r10\n\
+ ldrh r0, [r0]\n\
+ strh r0, [r2]\n\
+ add r1, r9\n\
+ strh r5, [r1]\n\
+ adds r7, 0x1\n\
+_08134C2A:\n\
+ mov r5, r12\n\
+ cmp r5, 0x4\n\
+ ble _08134BC6\n\
+ bl Random\n\
+ lsls r0, 16\n\
+ lsrs r0, 16\n\
+ adds r1, r7, 0\n\
+ bl __modsi3\n\
+ adds r5, r0, 0\n\
+ ldr r2, _08134C70 @ =gSaveBlock2\n\
+ lsls r0, r5, 1\n\
+ add r0, sp\n\
+ adds r0, 0xC\n\
+ ldrh r1, [r0]\n\
+ movs r0, 0xA4\n\
+ muls r0, r1\n\
+ adds r0, r2\n\
+ movs r1, 0xA6\n\
+ lsls r1, 1\n\
+ adds r0, r1\n\
+ mov r1, r8\n\
+ movs r2, 0xA4\n\
+ bl memcpy\n\
+_08134C5E:\n\
+ add sp, 0x1C\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\
+_08134C70: .4byte gSaveBlock2\n\
+.syntax divided\n");
+}
+
+u8 get_trainer_class_pic_index(void)
+{
+ if (gSaveBlock2.filler_A8.battleTowerTrainerId == 200)
+ {
+ return gTrainerClassToPicIndex[gSaveBlock2.filler_A8.ereaderTrainer.trainerClass];
+ }
+ else if (gSaveBlock2.filler_A8.battleTowerTrainerId < 100)
+ {
+ return gTrainerClassToPicIndex[gBattleTowerTrainers[gSaveBlock2.filler_A8.battleTowerTrainerId].trainerClass];
+ }
+ else
+ {
+ return gTrainerClassToPicIndex[gSaveBlock2.filler_A8.var_14C[gSaveBlock2.filler_A8.battleTowerTrainerId - 100].trainerClass];
+ }
+}
+
+u8 get_trainer_class_name_index(void)
+{
+ if (gSaveBlock2.filler_A8.battleTowerTrainerId == 200)
+ {
+ return gTrainerClassToNameIndex[gSaveBlock2.filler_A8.ereaderTrainer.trainerClass];
+ }
+ else if (gSaveBlock2.filler_A8.battleTowerTrainerId >= 100)
+ {
+ return gTrainerClassToNameIndex[gSaveBlock2.filler_A8.var_14C[gSaveBlock2.filler_A8.battleTowerTrainerId - 100].trainerClass];
+ }
+ else
+ {
+ return gTrainerClassToNameIndex[gBattleTowerTrainers[gSaveBlock2.filler_A8.battleTowerTrainerId].trainerClass];
+ }
+}
+
+void get_trainer_name(u8* dest)
+{
+ s32 i;
+
+ if (gSaveBlock2.filler_A8.battleTowerTrainerId == 200)
+ {
+ for (i = 0; i < 7; i++)
+ {
+ dest[i] = gSaveBlock2.filler_A8.ereaderTrainer.name[i];
+ }
+ }
+ else if (gSaveBlock2.filler_A8.battleTowerTrainerId < 100)
+ {
+ for (i = 0; i < 7; i++)
+ {
+ dest[i] = gBattleTowerTrainers[gSaveBlock2.filler_A8.battleTowerTrainerId].name[i];
+ }
+ }
+ else
+ {
+ for (i = 0; i < 7; i++)
+ {
+ dest[i] = gSaveBlock2.filler_A8.var_14C[gSaveBlock2.filler_A8.battleTowerTrainerId - 100].name[i];
+ }
+ }
+
+ dest[i] = 0xFF;
+}
diff --git a/src/debug/unknown_debug_menu.c b/src/debug/unknown_debug_menu.c
index a81625f2a..995fb38fc 100644
--- a/src/debug/unknown_debug_menu.c
+++ b/src/debug/unknown_debug_menu.c
@@ -1,4 +1,5 @@
#include "global.h"
+#include "battle_tower.h"
#include "menu.h"
extern u8 gBattleCommunication[];
@@ -43,10 +44,10 @@ u8 sub_814A4B8(void)
{
gSaveBlock2.filler_A8.var_4AE[0] = 3;
gSaveBlock2.filler_A8.var_4AE[1] = 3;
- gSaveBlock2.filler_A8.var_4B4 = gBattleCommunication[0] + 1;
- gSaveBlock2.filler_A8.var_4B6 = gBattleCommunication[0] + 1;
- gSaveBlock2.filler_A8.var_4B0 = 1;
- gSaveBlock2.filler_A8.var_4B2 = 1;
+ gSaveBlock2.filler_A8.var_4B4[0] = gBattleCommunication[0] + 1;
+ gSaveBlock2.filler_A8.var_4B4[1] = gBattleCommunication[0] + 1;
+ gSaveBlock2.filler_A8.var_4B0[0] = 1;
+ gSaveBlock2.filler_A8.var_4B0[1] = 1;
CloseMenu();
return 1;
}
diff --git a/src/engine/mystery_event_script.c b/src/engine/mystery_event_script.c
index a6568f5de..38ada0685 100644
--- a/src/engine/mystery_event_script.c
+++ b/src/engine/mystery_event_script.c
@@ -420,7 +420,7 @@ bool8 MEScrCmd_givepokemon(struct ScriptContext *ctx)
bool8 MEScrCmd_addtrainer(struct ScriptContext *ctx)
{
u32 data = ScriptReadWord(ctx) - ctx->data[1] + ctx->data[0];
- memcpy(gSaveBlock2.filler_A8.ereaderTrainer, (void *)data, sizeof(gSaveBlock2.filler_A8.ereaderTrainer));
+ memcpy(&gSaveBlock2.filler_A8.ereaderTrainer, (void *)data, sizeof(gSaveBlock2.filler_A8.ereaderTrainer));
sub_813601C();
StringExpandPlaceholders(gStringVar4, gOtherText_NewTrainerInHoenn);
ctx->data[2] = 2;
diff --git a/src/engine/record_mixing.c b/src/engine/record_mixing.c
index 8dff432c1..000bafa4e 100644
--- a/src/engine/record_mixing.c
+++ b/src/engine/record_mixing.c
@@ -60,7 +60,7 @@ struct PlayerRecords
u8 filler1044[0x40];
struct EasyChatPair easyChatPairs[5];
struct RecordMixingDayCareMail filler10AC;
- u8 filler1124[0xA4];
+ struct BattleTowerRecord battleTowerRecord;
u16 filler11C8[0x34];
};
@@ -78,7 +78,7 @@ void RecordMixing_PrepareExchangePacket(void)
gUnknown_02038738.mail[1] = gSaveBlock1.daycareData.misc.mail[1];
sub_8041324(gSaveBlock1.daycareData.mons, &gUnknown_02038738);
memcpy(&unk_2018000.filler10AC, gUnknown_083D0280, sizeof(struct RecordMixingDayCareMail));
- memcpy(unk_2018000.filler1124, gUnknown_083D0284, sizeof(unk_2018000.filler1124));
+ memcpy(&unk_2018000.battleTowerRecord, gUnknown_083D0284, sizeof(struct BattleTowerRecord));
if (GetMultiplayerId() == 0)
unk_2018000.filler11C8[0] = GetRecordMixingGift();
@@ -92,7 +92,7 @@ void RecordMixing_ReceiveExchangePacket(u32 a)
sub_80B9B1C(unk_2008000.filler1044, sizeof(struct PlayerRecords), a);
sub_80FA4E4(unk_2008000.easyChatPairs, sizeof(struct PlayerRecords), a);
sub_80B9C6C((u8 *)&unk_2008000.filler10AC, sizeof(struct PlayerRecords), a, unk_2008000.tvShows);
- sub_80B9B70(unk_2008000.filler1124, sizeof(struct PlayerRecords), a);
+ sub_80B9B70(&unk_2008000.battleTowerRecord, sizeof(struct PlayerRecords), a);
sub_80B9F3C(unk_2008000.filler11C8, a);
}
@@ -447,11 +447,11 @@ void sub_80B9B1C(u8 *a, size_t size, u8 index)
sub_80F7F30();
}
-void sub_80B9B70(u8 *a, size_t size, u8 index)
+void sub_80B9B70(void *battleTowerRecord, u32 size, u8 index)
{
sub_80B9A88(gUnknown_0300071C);
- memcpy(a + size * index, a + size * gUnknown_0300071C[index], 0xA4);
- sub_8134AC0(a + size * index);
+ memcpy(battleTowerRecord + size * index, battleTowerRecord + size * gUnknown_0300071C[index], sizeof(struct BattleTowerRecord));
+ sub_8134AC0(battleTowerRecord + size * index);
}
u8 sub_80B9BBC(u16 *a)
diff --git a/src/engine/trainer_card.c b/src/engine/trainer_card.c
index bcb62ede6..c8847b258 100644
--- a/src/engine/trainer_card.c
+++ b/src/engine/trainer_card.c
@@ -311,16 +311,16 @@ static void nullsub_60(u8 taskid)
{
}
-void sub_8093390(struct TrainerCard *arg1)
+void sub_8093390(struct TrainerCard *trainerCard)
{
u32 playTime;
bool32 enteredHallOfFame;
bool8 r4;
u8 i;
- arg1->gender = gSaveBlock2.playerGender;
- arg1->playTimeHours = gSaveBlock2.playTimeHours;
- arg1->playTimeMinutes = gSaveBlock2.playTimeMinutes;
+ trainerCard->gender = gSaveBlock2.playerGender;
+ trainerCard->playTimeHours = gSaveBlock2.playTimeHours;
+ trainerCard->playTimeMinutes = gSaveBlock2.playTimeMinutes;
playTime = GetGameStat(GAME_STAT_FIRST_HOF_PLAY_TIME);
enteredHallOfFame = GetGameStat(GAME_STAT_ENTERED_HOF);
@@ -328,39 +328,39 @@ void sub_8093390(struct TrainerCard *arg1)
{
playTime = 0;
}
- arg1->firstHallOfFameA = playTime >> 16;
- arg1->firstHallOfFameB = (playTime >> 8) & 0xFF;
- arg1->firstHallOfFameC = playTime & 0xFF;
+ trainerCard->firstHallOfFameA = playTime >> 16;
+ trainerCard->firstHallOfFameB = (playTime >> 8) & 0xFF;
+ trainerCard->firstHallOfFameC = playTime & 0xFF;
- arg1->hasPokedex = FlagGet(SYS_POKEDEX_GET);
- arg1->var_3 = sub_8090FC0();
- arg1->pokedexSeen = GetPokedexSeenCount();
+ trainerCard->hasPokedex = FlagGet(SYS_POKEDEX_GET);
+ trainerCard->var_3 = sub_8090FC0();
+ trainerCard->pokedexSeen = GetPokedexSeenCount();
- arg1->trainerId = (gSaveBlock2.playerTrainerId[1] << 8) | gSaveBlock2.playerTrainerId[0];
+ trainerCard->trainerId = (gSaveBlock2.playerTrainerId[1] << 8) | gSaveBlock2.playerTrainerId[0];
// Link Cable Battles
- arg1->linkBattleWins = sav12_xor_get_clamped_above(GAME_STAT_LINK_BATTLE_WINS, 9999);
- arg1->linkBattleLosses = sav12_xor_get_clamped_above(GAME_STAT_LINK_BATTLE_LOSSES, 9999);
+ trainerCard->linkBattleWins = sav12_xor_get_clamped_above(GAME_STAT_LINK_BATTLE_WINS, 9999);
+ trainerCard->linkBattleLosses = sav12_xor_get_clamped_above(GAME_STAT_LINK_BATTLE_LOSSES, 9999);
// Contests w/ Friends
- arg1->contestsWithFriends = sav12_xor_get_clamped_above(GAME_STAT_WON_LINK_CONTEST, 999);
+ trainerCard->contestsWithFriends = sav12_xor_get_clamped_above(GAME_STAT_WON_LINK_CONTEST, 999);
// Pokéblocks w/ Friends
- arg1->pokeblocksWithFriends = sav12_xor_get_clamped_above(GAME_STAT_POKEBLOCKS_WITH_FRIENDS, 0xFFFF);
+ trainerCard->pokeblocksWithFriends = sav12_xor_get_clamped_above(GAME_STAT_POKEBLOCKS_WITH_FRIENDS, 0xFFFF);
// Pokémon Trades
- arg1->pokemonTrades = sav12_xor_get_clamped_above(GAME_STAT_POKEMON_TRADES, 0xFFFF);
+ trainerCard->pokemonTrades = sav12_xor_get_clamped_above(GAME_STAT_POKEMON_TRADES, 0xFFFF);
- // Battle tower?
- arg1->battleTowerWins = gSaveBlock2.filler_A8.var_4C8;
- arg1->battleTowerLosses = gSaveBlock2.filler_A8.var_4CA;
- if (arg1->battleTowerWins > 9999)
+ // Battle Tower
+ trainerCard->battleTowerWins = gSaveBlock2.filler_A8.totalBattleTowerWins;
+ trainerCard->battleTowerLosses = gSaveBlock2.filler_A8.bestBattleTowerWinStreak;
+ if (trainerCard->battleTowerWins > 9999)
{
- arg1->battleTowerWins = 9999;
+ trainerCard->battleTowerWins = 9999;
}
- if (arg1->battleTowerLosses > 9999)
+ if (trainerCard->battleTowerLosses > 9999)
{
- arg1->battleTowerLosses = 9999;
+ trainerCard->battleTowerLosses = 9999;
}
r4 = FALSE;
@@ -368,21 +368,21 @@ void sub_8093390(struct TrainerCard *arg1)
{
r4 = TRUE;
}
- arg1->var_4 = r4;
+ trainerCard->var_4 = r4;
- arg1->money = gSaveBlock1.money;
+ trainerCard->money = gSaveBlock1.money;
for (i = 0; i < 4; i++)
{
- arg1->var_28[i] = gSaveBlock1.unk2B1C[i];
+ trainerCard->var_28[i] = gSaveBlock1.unk2B1C[i];
}
for (i = 0; i < 8; i++)
{
- arg1->playerName[i] = gSaveBlock2.playerName[i];
+ trainerCard->playerName[i] = gSaveBlock2.playerName[i];
}
- arg1->stars = sub_80934F4(arg1);
+ trainerCard->stars = sub_80934F4(trainerCard);
}
u8 sub_80934C4(u8 id)
diff --git a/src/field/choose_party.c b/src/field/choose_party.c
index f35dcdf56..879139aa4 100644
--- a/src/field/choose_party.c
+++ b/src/field/choose_party.c
@@ -176,7 +176,7 @@ static bool8 IsMonAllowedInBattleTower(struct Pokemon *pkmn)
return TRUE;
}
- if ((gSaveBlock2.filler_A8.var_4AC & 1) == 0
+ if ((gSaveBlock2.filler_A8.battleTowerLevelType) == 0
&& GetMonData(pkmn, MON_DATA_LEVEL) > 50)
return FALSE;
diff --git a/src/field/tv.c b/src/field/tv.c
index e9b5e850d..89e978d00 100644
--- a/src/field/tv.c
+++ b/src/field/tv.c
@@ -675,11 +675,11 @@ void sub_80BE320(void)
bravoTrainerTower->var01 = 1;
StringCopy(bravoTrainerTower->trainerName, gSaveBlock2.playerName);
StringCopy(bravoTrainerTower->pokemonName, gSaveBlock2.filler_A8.filler_3DC);
- bravoTrainerTower->species = gSaveBlock2.filler_A8.var_480;
- bravoTrainerTower->defeatedSpecies = gSaveBlock2.filler_A8.var_482;
- bravoTrainerTower->var16 = sub_8135D3C(gSaveBlock2.filler_A8.var_4D0);
+ bravoTrainerTower->species = gSaveBlock2.filler_A8.firstMonSpecies;
+ bravoTrainerTower->defeatedSpecies = gSaveBlock2.filler_A8.defeatedBySpecies;
+ bravoTrainerTower->var16 = sub_8135D3C(gSaveBlock2.filler_A8.lastStreakLevelType);
bravoTrainerTower->var1c = gSaveBlock2.filler_A8.var_4AD;
- if (gSaveBlock2.filler_A8.var_4D0 == 0)
+ if (gSaveBlock2.filler_A8.lastStreakLevelType == 0)
bravoTrainerTower->btLevel = 50;
else
bravoTrainerTower->btLevel = 100;