summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorcamthesaxman <cameronghall@cox.net>2017-06-10 20:53:06 -0500
committercamthesaxman <cameronghall@cox.net>2017-06-10 20:53:06 -0500
commitf14f219929ec0390e385cb9eee9f10fda4baf73a (patch)
treea97d1c540998eafcc855a0e6d00404f046a1afed /src
parent1a5bcd59134f062ade7070b8e62f0d2f3c218537 (diff)
finish decompiling battle_7
Diffstat (limited to 'src')
-rw-r--r--src/battle_7.c235
-rw-r--r--src/battle_811DA74.c10
2 files changed, 234 insertions, 11 deletions
diff --git a/src/battle_7.c b/src/battle_7.c
index dad098192..50f348406 100644
--- a/src/battle_7.c
+++ b/src/battle_7.c
@@ -15,6 +15,7 @@
#include "species.h"
#include "sprite.h"
#include "task.h"
+#include "text.h"
#include "gba/m4a_internal.h"
struct Struct2019348
@@ -27,8 +28,6 @@ struct Struct2019348
u32 unk10;
};
-extern struct MusicPlayerInfo gMPlay_SE1;
-extern struct MusicPlayerInfo gMPlay_SE2;
extern u8 gUnknown_02023A60[][0x200];
extern u8 gUnknown_02024A60;
extern u32 gUnknown_02024A64;
@@ -37,9 +36,15 @@ extern u16 gUnknown_02024A6A[];
extern u8 gUnknown_02024A72[];
extern u8 gUnknown_02024BE0[];
extern u16 gUnknown_02024DE8;
+extern u8 gUnknown_02024E6D;
extern u32 gUnknown_02024E70[];
+extern struct Window gUnknown_03004210;
extern void (*gUnknown_03004330[])(void);
extern u8 gUnknown_03004340[];
+extern u8 gUnknown_0300434C[];
+extern struct MusicPlayerInfo gMPlay_SE1;
+extern struct MusicPlayerInfo gMPlay_SE2;
+extern struct MusicPlayerInfo gMPlay_BGM;
extern u32 gBitTable[];
extern u16 gBattleTypeFlags;
extern u8 gBattleMonForms[];
@@ -69,6 +74,10 @@ extern const u8 gUnknown_08D09C48[];
#define ewram19348 (*(struct Struct2019348 *)(ewram + 0x19348))
+extern void c3_0802FDF4(u8);
+extern void sub_80440EC();
+extern void sub_804777C();
+extern void sub_8141828();
extern u8 sub_8077ABC();
extern u8 sub_8078874(u8);
extern u8 sub_8077F68(u8);
@@ -89,6 +98,7 @@ void sub_80327CC(void);
void sub_8032978(struct Sprite *);
void sub_80328A4(struct Sprite *);
void sub_8032AFC(void);
+void sub_80332D0(void);
void sub_80334EC(void);
void sub_80312F0(struct Sprite *sprite)
@@ -1003,3 +1013,224 @@ void sub_8032C4C(void)
sub_80334EC();
}
}
+
+void sub_8032C88(void)
+{
+ bool8 r6 = FALSE;
+
+ if (!IsDoubleBattle() || (IsDoubleBattle() && (gBattleTypeFlags & BATTLE_TYPE_MULTI)))
+ {
+ if (gSprites[gUnknown_03004340[gUnknown_02024A60]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ else
+ {
+ if (gSprites[gUnknown_03004340[gUnknown_02024A60]].callback == SpriteCallbackDummy
+ && gSprites[gUnknown_03004340[gUnknown_02024A60 ^ 2]].callback == SpriteCallbackDummy)
+ r6 = TRUE;
+ }
+ if (IsCryPlayingOrClearCrySongs())
+ r6 = FALSE;
+
+ if (r6 && ewram17810[gUnknown_02024A60].unk1_0 && ewram17810[gUnknown_02024A60 ^ 2].unk1_0)
+ {
+ ewram17810[gUnknown_02024A60].unk0_7 = 0;
+ ewram17810[gUnknown_02024A60].unk1_0 = 0;
+ ewram17810[gUnknown_02024A60 ^ 2].unk0_7 = 0;
+ ewram17810[gUnknown_02024A60 ^ 2].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ if (gBattleTypeFlags & BATTLE_TYPE_MULTI)
+ m4aMPlayContinue(&gMPlay_BGM);
+ else
+ m4aMPlayVolumeControl(&gMPlay_BGM, 0xFFFF, 256);
+ ewram17810[gUnknown_02024A60].unk9 = 3;
+ gUnknown_03004330[gUnknown_02024A60] = sub_8032C4C;
+ }
+}
+
+void sub_8032E2C(void)
+{
+ if (!ewram17810[gUnknown_02024A60].unk0_3 && !ewram17810[gUnknown_02024A60].unk0_7)
+ sub_8141828(gUnknown_02024A60, &gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60]]);
+ if (!ewram17810[gUnknown_02024A60 ^ 2].unk0_3 && !ewram17810[gUnknown_02024A60 ^ 2].unk0_7)
+ sub_8141828(gUnknown_02024A60 ^ 2, &gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60 ^ 2]]);
+ if (!ewram17810[gUnknown_02024A60].unk0_3 && !ewram17810[gUnknown_02024A60 ^ 2].unk0_3)
+ {
+ if (IsDoubleBattle() && !(gBattleTypeFlags & BATTLE_TYPE_MULTI))
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gUnknown_02024A60 ^ 2]]);
+ sub_8045A5C(
+ gUnknown_03004340[gUnknown_02024A60 ^ 2],
+ &gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60 ^ 2]],
+ 0);
+ sub_804777C(gUnknown_02024A60 ^ 2);
+ sub_8043DFC(gUnknown_03004340[gUnknown_02024A60 ^ 2]);
+ sub_8032984(
+ gUnknown_02024A60 ^ 2,
+ GetMonData(&gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60 ^ 2]], MON_DATA_SPECIES));
+ }
+ DestroySprite(&gSprites[gUnknown_0300434C[gUnknown_02024A60]]);
+ sub_8045A5C(
+ gUnknown_03004340[gUnknown_02024A60],
+ &gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60]],
+ 0);
+ sub_804777C(gUnknown_02024A60);
+ sub_8043DFC(gUnknown_03004340[gUnknown_02024A60]);
+ sub_8032984(
+ gUnknown_02024A60,
+ GetMonData(&gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60]], MON_DATA_SPECIES));
+
+ ewram17840.unk9_0 = 0;
+ gUnknown_03004330[gUnknown_02024A60] = sub_8032C88;
+ }
+}
+
+void sub_8033018(void)
+{
+ if (gSprites[gUnknown_02024BE0[gUnknown_02024A60]].animEnded == TRUE
+ && gSprites[gUnknown_02024BE0[gUnknown_02024A60]].pos2.x == 0)
+ {
+ if (!ewram17810[gUnknown_02024A60].unk0_7)
+ {
+ sub_8141828(gUnknown_02024A60, &gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60]]);
+ return;
+ }
+ if (ewram17810[gUnknown_02024A60].unk1_0)
+ {
+ ewram17810[gUnknown_02024A60].unk0_7 = 0;
+ ewram17810[gUnknown_02024A60].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ sub_80334EC();
+ return;
+ }
+ }
+}
+
+void sub_80330C8(void)
+{
+ s16 r4 = sub_8045C78(gUnknown_02024A60, gUnknown_03004340[gUnknown_02024A60], 0, 0);
+
+ sub_8043DFC(gUnknown_03004340[gUnknown_02024A60]);
+ if (r4 != -1)
+ sub_80440EC(gUnknown_03004340[gUnknown_02024A60], r4, 0);
+ else
+ sub_80334EC();
+}
+
+void sub_803311C(void)
+{
+ if (!gSprites[gUnknown_02024BE0[gUnknown_02024A60]].inUse)
+ {
+ sub_8043DB0(gUnknown_03004340[gUnknown_02024A60]);
+ sub_80334EC();
+ }
+}
+
+void sub_8033160(void)
+{
+ if (!ewram17810[gUnknown_02024A60].unk0_6)
+ {
+ FreeSpriteOamMatrix(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]);
+ DestroySprite(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]]);
+ sub_8032A08(gUnknown_02024A60);
+ sub_8043DB0(gUnknown_03004340[gUnknown_02024A60]);
+ sub_80334EC();
+ }
+}
+
+void sub_80331D0(void)
+{
+ if (gUnknown_03004210.state == 0)
+ sub_80334EC();
+}
+
+void bx_blink_t7(void)
+{
+ u8 spriteId = gUnknown_02024BE0[gUnknown_02024A60];
+
+ if (gSprites[spriteId].data1 == 32)
+ {
+ gSprites[spriteId].data1 = 0;
+ gSprites[spriteId].invisible = FALSE;
+ gUnknown_02024E6D = 0;
+ sub_80334EC();
+ }
+ else
+ {
+ if (((u16)gSprites[spriteId].data1 % 4) == 0)
+ gSprites[spriteId].invisible ^= 1;
+ gSprites[spriteId].data1++;
+ }
+}
+
+void sub_8033264(void)
+{
+ if (gSprites[gUnknown_03004340[gUnknown_02024A60]].callback == SpriteCallbackDummy)
+ {
+ if (ewram17800[gUnknown_02024A60].unk0_2)
+ move_anim_start_t4(gUnknown_02024A60, gUnknown_02024A60, gUnknown_02024A60, 6);
+ gUnknown_03004330[gUnknown_02024A60] = sub_80332D0;
+ }
+}
+
+void sub_80332D0(void)
+{
+ if (!ewram17810[gUnknown_02024A60].unk0_6)
+ {
+ CreateTask(c3_0802FDF4, 10);
+ sub_80334EC();
+ }
+}
+
+void sub_8033308(void)
+{
+ if (ewram17810[gUnknown_02024A60].unk1_0)
+ {
+ ewram17810[gUnknown_02024A60].unk0_7 = 0;
+ ewram17810[gUnknown_02024A60].unk1_0 = 0;
+ FreeSpriteTilesByTag(0x27F9);
+ FreeSpritePaletteByTag(0x27F9);
+ StartSpriteAnim(&gSprites[gUnknown_02024BE0[gUnknown_02024A60]], 0);
+ sub_8045A5C(
+ gUnknown_03004340[gUnknown_02024A60],
+ &gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60]],
+ 0);
+ sub_804777C(gUnknown_02024A60);
+ sub_8043DFC(gUnknown_03004340[gUnknown_02024A60]);
+ sub_8031F88(gUnknown_02024A60);
+ gUnknown_03004330[gUnknown_02024A60] = sub_8033264;
+ }
+}
+
+void sub_80333D4(void)
+{
+ if (!ewram17810[gUnknown_02024A60].unk0_3 && !ewram17810[gUnknown_02024A60].unk0_7)
+ sub_8141828(gUnknown_02024A60, &gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60]]);
+ if (gSprites[gUnknown_0300434C[gUnknown_02024A60]].callback == SpriteCallbackDummy
+ && !ewram17810[gUnknown_02024A60].unk0_3)
+ {
+ DestroySprite(&gSprites[gUnknown_0300434C[gUnknown_02024A60]]);
+ sub_8032984(gUnknown_02024A60, GetMonData(&gEnemyParty[gUnknown_02024A6A[gUnknown_02024A60]], MON_DATA_SPECIES));
+ gUnknown_03004330[gUnknown_02024A60] = sub_8033308;
+ }
+}
+
+void sub_8033494(void)
+{
+ if (!ewram17810[gUnknown_02024A60].unk0_4)
+ sub_80334EC();
+}
+
+void sub_80334C0(void)
+{
+ if (!ewram17810[gUnknown_02024A60].unk0_5)
+ sub_80334EC();
+}
+
+void sub_80334EC(void)
+{
+ gUnknown_03004330[gUnknown_02024A60] = sub_8032AFC;
+ gUnknown_02024A64 &= ~gBitTable[gUnknown_02024A60];
+}
diff --git a/src/battle_811DA74.c b/src/battle_811DA74.c
index f39aa5248..439e6b3c6 100644
--- a/src/battle_811DA74.c
+++ b/src/battle_811DA74.c
@@ -35,14 +35,6 @@ struct UnknownStruct5
u8 unk0_7:1;
};
-/*
-struct UnknownStruct6
-{
- u8 filler0[9];
- u8 unk9;
-};
-*/
-
extern u32 gBitTable[];
extern u16 gBattleTypeFlags;
@@ -1489,7 +1481,7 @@ void sub_8120588(void)
gTasks[taskId].data[0] = gUnknown_02024A60;
if (ewram17810[gUnknown_02024A60].unk0_0)
gTasks[gUnknown_02024E68[gUnknown_02024A60]].func = sub_8044CA0;
- ewram17840.unk9 |= 1;
+ ewram17840.unk9_0 = 1;
gUnknown_03004330[gUnknown_02024A60] = nullsub_74;
}