summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMarco Willems (M17.1) <progreon@gmail.com>2018-01-08 18:40:57 +0100
committerMarco Willems (M17.1) <progreon@gmail.com>2018-01-08 18:40:57 +0100
commit4bdab579016705c6dc914e3d2af2d608eb256a9b (patch)
treef5e088e174e72f5b9acd473c05fe23bc18b1b48e
parent7f3eb30bcb9da4a3a651f1aca7a8fd6b7980491a (diff)
Decompiled sub_812B18C
-rw-r--r--asm/battle_anim_sfx.s148
-rw-r--r--src/battle/anim/sfx.c60
2 files changed, 60 insertions, 148 deletions
diff --git a/asm/battle_anim_sfx.s b/asm/battle_anim_sfx.s
index 1d0358bee..7d196ce97 100644
--- a/asm/battle_anim_sfx.s
+++ b/asm/battle_anim_sfx.s
@@ -5,154 +5,6 @@
.text
- thumb_func_start sub_812B18C
-sub_812B18C: @ 812B18C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- movs r4, 0
- movs r0, 0x40
- negs r0, r0
- bl BattleAnimAdjustPanning
- lsls r0, 24
- lsrs r6, r0, 24
- bl IsContest
- lsls r0, 24
- cmp r0, 0
- beq _0812B1CC
- ldr r0, _0812B1BC @ =gBattleAnimArgs
- movs r1, 0
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0812B1C4
- ldr r0, _0812B1C0 @ =gSharedMem + 0x19348
- ldrh r4, [r0]
- b _0812B272
- .align 2, 0
-_0812B1BC: .4byte gBattleAnimArgs
-_0812B1C0: .4byte gSharedMem + 0x19348
-_0812B1C4:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _0812B272
-_0812B1CC:
- ldr r0, _0812B1E0 @ =gBattleAnimArgs
- movs r2, 0
- ldrsh r1, [r0, r2]
- adds r2, r0, 0
- cmp r1, 0
- bne _0812B1E8
- ldr r0, _0812B1E4 @ =gAnimBankAttacker
- ldrb r4, [r0]
- b _0812B20E
- .align 2, 0
-_0812B1E0: .4byte gBattleAnimArgs
-_0812B1E4: .4byte gAnimBankAttacker
-_0812B1E8:
- cmp r1, 0x1
- bne _0812B1F8
- ldr r0, _0812B1F4 @ =gAnimBankTarget
- ldrb r4, [r0]
- b _0812B20E
- .align 2, 0
-_0812B1F4: .4byte gAnimBankTarget
-_0812B1F8:
- cmp r1, 0x2
- bne _0812B204
- ldr r0, _0812B200 @ =gAnimBankAttacker
- b _0812B206
- .align 2, 0
-_0812B200: .4byte gAnimBankAttacker
-_0812B204:
- ldr r0, _0812B230 @ =gAnimBankTarget
-_0812B206:
- ldrb r1, [r0]
- movs r0, 0x2
- adds r4, r0, 0
- eors r4, r1
-_0812B20E:
- movs r1, 0
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- beq _0812B21A
- cmp r0, 0x3
- bne _0812B234
-_0812B21A:
- adds r0, r4, 0
- bl IsAnimBankSpriteVisible
- lsls r0, 24
- cmp r0, 0
- bne _0812B234
- adds r0, r5, 0
- bl DestroyAnimVisualTask
- b _0812B2B0
- .align 2, 0
-_0812B230: .4byte gAnimBankTarget
-_0812B234:
- adds r0, r4, 0
- bl GetBankSide
- lsls r0, 24
- cmp r0, 0
- beq _0812B258
- ldr r1, _0812B250 @ =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0812B254 @ =gEnemyParty
- b _0812B266
- .align 2, 0
-_0812B250: .4byte gBattlePartyID
-_0812B254: .4byte gEnemyParty
-_0812B258:
- ldr r1, _0812B290 @ =gBattlePartyID
- lsls r0, r4, 1
- adds r0, r1
- ldrh r1, [r0]
- movs r0, 0x64
- muls r0, r1
- ldr r1, _0812B294 @ =gPlayerParty
-_0812B266:
- adds r0, r1
- movs r1, 0xB
- bl GetMonData
- lsls r0, 16
- lsrs r4, r0, 16
-_0812B272:
- cmp r4, 0
- beq _0812B2AA
- ldr r0, _0812B298 @ =gBattleAnimArgs
- ldrh r2, [r0, 0x2]
- movs r1, 0x2
- ldrsh r0, [r0, r1]
- cmp r0, 0xFF
- bne _0812B29C
- lsls r1, r6, 24
- asrs r1, 24
- adds r0, r4, 0
- bl PlayCry1
- b _0812B2AA
- .align 2, 0
-_0812B290: .4byte gBattlePartyID
-_0812B294: .4byte gPlayerParty
-_0812B298: .4byte gBattleAnimArgs
-_0812B29C:
- lsls r1, r6, 24
- asrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- adds r0, r4, 0
- bl PlayCry3
-_0812B2AA:
- adds r0, r5, 0
- bl DestroyAnimVisualTask
-_0812B2B0:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_812B18C
-
thumb_func_start sub_812B2B8
sub_812B2B8: @ 812B2B8
push {r4,r5,lr}
diff --git a/src/battle/anim/sfx.c b/src/battle/anim/sfx.c
index 484548d4d..cb61a566f 100644
--- a/src/battle/anim/sfx.c
+++ b/src/battle/anim/sfx.c
@@ -1,9 +1,15 @@
#include "global.h"
#include "battle_anim.h"
+#include "contest.h"
+#include "ewram.h"
+#include "rom_8077ABC.h"
#include "sound.h"
#include "task.h"
extern s16 gBattleAnimArgs[];
+extern u8 gAnimBankAttacker;
+extern u8 gAnimBankTarget;
+extern u16 gBattlePartyID[];
void sub_812AF98(u8 taskId);
void sub_812B004(u8 taskId);
@@ -122,3 +128,57 @@ void sub_812B108(u8 taskId)
TASK.data[11] = sub_8077104(TASK.data[11]);
}
}
+
+// #define shared19348 (*(struct UnknownContestStruct8 *)(gSharedMem + 0x19348))
+// #define EWRAM_19348 (*(u16 *)(gSharedMem + 0x19348))
+
+void sub_812B18C(u8 taskId)
+{
+ u16 species = 0;
+ s8 pan = BattleAnimAdjustPanning(-64);
+
+ if (IsContest())
+ {
+ if (!gBattleAnimArgs[0])
+ species = shared19348.unk0;
+ else
+ DestroyAnimVisualTask(taskId);
+ }
+ else
+ {
+ u8 bank;
+ if (gBattleAnimArgs[0] == 0)
+ bank = gAnimBankAttacker;
+ else if (gBattleAnimArgs[0] == 1)
+ bank = gAnimBankTarget;
+ else if (gBattleAnimArgs[0] == 2)
+ bank = gAnimBankAttacker ^ 0x2;
+ else
+ bank = gAnimBankTarget ^ 0x2;
+
+ if (gBattleAnimArgs[0] == 1 || gBattleAnimArgs[0] == 3)
+ {
+ if (!IsAnimBankSpriteVisible(bank))
+ {
+ DestroyAnimVisualTask(taskId);
+ return;
+ }
+ }
+
+ if (GetBankSide(bank))
+ species = GetMonData(&gEnemyParty[gBattlePartyID[bank]], 0xB);
+ else
+ species = GetMonData(&gPlayerParty[gBattlePartyID[bank]], 0xB);
+ }
+
+ if (species != 0)
+ {
+ s16 mode = gBattleAnimArgs[1];
+ if (mode == 0xFF)
+ PlayCry1(species, pan);
+ else
+ PlayCry3(species, pan, mode);
+ }
+
+ DestroyAnimVisualTask(taskId);
+} \ No newline at end of file