summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCameron Hall <camthesaxman@users.noreply.github.com>2017-01-18 16:35:34 -0600
committerYamaArashi <YamaArashi@users.noreply.github.com>2017-01-18 14:35:34 -0800
commit56f432fca2d552d8f0cda1a7fbab8aeb7d926fa2 (patch)
treeee99f5f6ae709b89179c787a4ceeb92f6d5255bb /src
parent6bbdece4fba09f9b1820e936210f3c3f6b62c72a (diff)
start decompiling rom3 (#198)
* start decompiling rom3 * newline * decompile sub_800BA78
Diffstat (limited to 'src')
-rw-r--r--src/battle_anim.c2
-rw-r--r--src/rom3.c257
2 files changed, 258 insertions, 1 deletions
diff --git a/src/battle_anim.c b/src/battle_anim.c
index 90a53a412..264a1dd9e 100644
--- a/src/battle_anim.c
+++ b/src/battle_anim.c
@@ -232,7 +232,7 @@ static void (*const sScriptCmdTable[])(void) = {
ScriptCmd_stopsound,
};
-void sub_8075624(void)
+void battle_anim_clear_some_data(void)
{
s32 i;
diff --git a/src/rom3.c b/src/rom3.c
new file mode 100644
index 000000000..9bd2674c5
--- /dev/null
+++ b/src/rom3.c
@@ -0,0 +1,257 @@
+#include "global.h"
+#include "asm.h"
+#include "battle.h"
+#include "items.h"
+#include "link.h"
+#include "pokemon.h"
+#include "species.h"
+#include "task.h"
+
+extern u16 gBattleTypeFlags;
+
+extern u32 gUnknown_020239FC;
+extern u32 gUnknown_02024A64;
+extern u8 gUnknown_02024A68;
+extern u16 gUnknown_02024A6A[];
+extern u8 gUnknown_02024A72[];
+extern u8 gUnknown_02024C78;
+extern u8 gUnknown_02024E60[];
+extern u8 gUnknown_02024E64[];
+extern void (*gUnknown_030042D4)(void);
+extern void (*gUnknown_03004330[])(void);
+
+extern void sub_800BF28(void);
+extern void sub_8083C50(u8);
+extern void nullsub_41(void);
+extern void nullsub_91(void);
+extern void battle_anim_clear_some_data(void);
+extern void sub_8040710(void);
+extern void BattleAI_HandleItemUseBeforeAISetup(void);
+extern void sub_8094978(u8, int);
+extern void sub_800BA78(void);
+extern void sub_800B9A8(void);
+extern void sub_800BD54(void);
+extern void sub_8010800(void);
+extern void sub_812B468(void);
+extern void sub_8137224(void);
+extern void sub_802BF74(void);
+extern void sub_8032AE0(void);
+extern void sub_8037510(void);
+extern void sub_811DA78(void);
+
+void sub_800B858(void)
+{
+ if (gBattleTypeFlags & 2)
+ {
+ OpenLink();
+ CreateTask(sub_8083C50, 0);
+ sub_800BF28();
+ }
+}
+
+void setup_poochyena_battle(void)
+{
+ s32 i;
+
+ gUnknown_030042D4 = nullsub_41;
+ for (i = 0; i < 4; i++)
+ {
+ gUnknown_03004330[i] = nullsub_91;
+ gUnknown_02024A72[i] = 0xFF;
+ gUnknown_02024E60[i] = 0;
+ gUnknown_02024E64[i] = 0;
+ }
+ sub_800B858();
+ gUnknown_02024A64 = 0;
+ battle_anim_clear_some_data();
+ sub_8040710();
+ BattleAI_HandleItemUseBeforeAISetup();
+ if (gBattleTypeFlags & 0x10)
+ {
+ ZeroEnemyPartyMons();
+ CreateMon(&gEnemyParty[0], SPECIES_POOCHYENA, 2, 32, 0, 0, 0, 0);
+ i = ITEM_NONE;
+ SetMonData(&gEnemyParty[0], MON_DATA_HELD_ITEM, (u8 *)&i);
+ }
+ gUnknown_020239FC = 0;
+ gUnknown_02024C78 = 0;
+}
+
+void sub_800B950(void)
+{
+ s32 i;
+
+ if (gBattleTypeFlags & 2)
+ sub_800BA78();
+ else
+ sub_800B9A8();
+ sub_800BD54();
+ if (!(gBattleTypeFlags & 0x40))
+ {
+ for (i = 0; i < gUnknown_02024A68; i++)
+ sub_8094978(i, 0);
+ }
+}
+
+void sub_800B9A8(void)
+{
+ if (!(gBattleTypeFlags & 1))
+ {
+ gUnknown_030042D4 = sub_8010800;
+ if (gBattleTypeFlags & 0x80)
+ gUnknown_03004330[0] = sub_812B468;
+ else if (gBattleTypeFlags & 0x200)
+ gUnknown_03004330[0] = sub_8137224;
+ else
+ gUnknown_03004330[0] = sub_802BF74;
+ gUnknown_02024A72[0] = 0;
+ gUnknown_03004330[1] = sub_8032AE0;
+ gUnknown_02024A72[1] = 1;
+ gUnknown_02024A68 = 2;
+ }
+ else
+ {
+ gUnknown_030042D4 = sub_8010800;
+ gUnknown_03004330[0] = sub_802BF74;
+ gUnknown_02024A72[0] = 0;
+ gUnknown_03004330[1] = sub_8032AE0;
+ gUnknown_02024A72[1] = 1;
+ gUnknown_03004330[2] = sub_802BF74;
+ gUnknown_02024A72[2] = 2;
+ gUnknown_03004330[3] = sub_8032AE0;
+ gUnknown_02024A72[3] = 3;
+ gUnknown_02024A68 = 4;
+ }
+}
+
+void sub_800BA78(void)
+{
+ u8 multiplayerId;
+ int i;
+
+ if (!(gBattleTypeFlags & BATTLE_TYPE_DOUBLE))
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ {
+ gUnknown_030042D4 = sub_8010800;
+ gUnknown_03004330[0] = sub_802BF74;
+ gUnknown_02024A72[0] = 0;
+ gUnknown_03004330[1] = sub_8037510;
+ gUnknown_02024A72[1] = 1;
+ gUnknown_02024A68 = 2;
+ }
+ else
+ {
+ gUnknown_03004330[1] = sub_802BF74;
+ gUnknown_02024A72[1] = 0;
+ gUnknown_03004330[0] = sub_8037510;
+ gUnknown_02024A72[0] = 1;
+ gUnknown_02024A68 = 2;
+ }
+ return;
+ }
+ if ((gBattleTypeFlags & (BATTLE_TYPE_40 | BATTLE_TYPE_DOUBLE)) == BATTLE_TYPE_DOUBLE)
+ {
+ if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ {
+ gUnknown_030042D4 = sub_8010800;
+ gUnknown_03004330[0] = sub_802BF74;
+ gUnknown_02024A72[0] = 0;
+ gUnknown_03004330[1] = sub_8037510;
+ gUnknown_02024A72[1] = 1;
+ gUnknown_03004330[2] = sub_802BF74;
+ gUnknown_02024A72[2] = 2;
+ gUnknown_03004330[3] = sub_8037510;
+ gUnknown_02024A72[3] = 3;
+ gUnknown_02024A68 = 4;
+ }
+ else
+ {
+ gUnknown_03004330[1] = sub_802BF74;
+ gUnknown_02024A72[1] = 0;
+ gUnknown_03004330[0] = sub_8037510;
+ gUnknown_02024A72[0] = 1;
+ gUnknown_03004330[3] = sub_802BF74;
+ gUnknown_02024A72[3] = 2;
+ gUnknown_03004330[2] = sub_8037510;
+ gUnknown_02024A72[2] = 3;
+ gUnknown_02024A68 = 4;
+
+ }
+ return;
+ }
+ multiplayerId = GetMultiplayerId();
+ if (gBattleTypeFlags & BATTLE_TYPE_WILD)
+ gUnknown_030042D4 = sub_8010800;
+ for (i = 0; i < 4; i++)
+ {
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ sub_8094978(gLinkPlayers[i].lp_field_18, 0);
+ break;
+ case 1:
+ case 2:
+ sub_8094978(gLinkPlayers[i].lp_field_18, 1);
+ break;
+ }
+
+ if (i == multiplayerId)
+ {
+ gUnknown_03004330[gLinkPlayers[i].lp_field_18] = sub_802BF74;
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 0;
+ gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 0;
+ break;
+ case 1:
+ case 2:
+ gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 2;
+ gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 3;
+ break;
+ }
+ }
+ else
+ {
+ if ((!(gLinkPlayers[i].lp_field_18 & 1) && !(gLinkPlayers[multiplayerId].lp_field_18 & 1))
+ || ((gLinkPlayers[i].lp_field_18 & 1) && (gLinkPlayers[multiplayerId].lp_field_18 & 1)))
+ {
+ gUnknown_03004330[gLinkPlayers[i].lp_field_18] = sub_811DA78;
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 0;
+ gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 0;
+ break;
+ case 1:
+ case 2:
+ gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 2;
+ gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 3;
+ break;
+ }
+ }
+ else
+ {
+ gUnknown_03004330[gLinkPlayers[i].lp_field_18] = sub_8037510;
+ switch (gLinkPlayers[i].lp_field_18)
+ {
+ case 0:
+ case 3:
+ gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 1;
+ gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 0;
+ break;
+ case 1:
+ case 2:
+ gUnknown_02024A72[gLinkPlayers[i].lp_field_18] = 3;
+ gUnknown_02024A6A[gLinkPlayers[i].lp_field_18] = 3;
+ break;
+ }
+ }
+ }
+ }
+ gUnknown_02024A68 = 4;
+}