summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/contest_effect.s85
-rw-r--r--include/contest.h1
-rw-r--r--include/contest_effect.h6
-rw-r--r--ld_script.txt2
-rw-r--r--src/contest.c2
-rw-r--r--src/contest_ai.c2
-rw-r--r--src/contest_effect.c33
7 files changed, 44 insertions, 87 deletions
diff --git a/asm/contest_effect.s b/asm/contest_effect.s
index 341cb0903..57ff6dfd0 100644
--- a/asm/contest_effect.s
+++ b/asm/contest_effect.s
@@ -5,91 +5,6 @@
.text
- thumb_func_start AreMovesContestCombo
-AreMovesContestCombo: @ 80B7D24
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 16
- lsls r1, 16
- ldr r2, _080B7D78 @ =gContestMoves
- lsrs r0, 13
- adds r0, r2
- ldrb r4, [r0, 0x2]
- mov r3, sp
- lsrs r1, 13
- adds r1, r2
- ldrb r0, [r1, 0x3]
- strb r0, [r3]
- mov r2, sp
- ldrb r0, [r1, 0x4]
- strb r0, [r2, 0x1]
- ldrb r0, [r1, 0x5]
- strb r0, [r2, 0x2]
- mov r0, sp
- ldrb r1, [r1, 0x6]
- strb r1, [r0, 0x3]
- cmp r4, 0
- beq _080B7D80
- mov r0, sp
- ldrb r0, [r0]
- cmp r4, r0
- beq _080B7D6E
- mov r0, sp
- ldrb r0, [r0, 0x1]
- cmp r4, r0
- beq _080B7D6E
- mov r0, sp
- ldrb r0, [r0, 0x2]
- cmp r4, r0
- beq _080B7D6E
- cmp r4, r1
- bne _080B7D80
-_080B7D6E:
- ldr r0, _080B7D7C @ =gComboStarterLookupTable
- adds r0, r4, r0
- ldrb r0, [r0]
- b _080B7D82
- .align 2, 0
-_080B7D78: .4byte gContestMoves
-_080B7D7C: .4byte gComboStarterLookupTable
-_080B7D80:
- movs r0, 0
-_080B7D82:
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end AreMovesContestCombo
-
- thumb_func_start ContestEffect_00
-ContestEffect_00: @ 80B7D8C
- bx lr
- thumb_func_end ContestEffect_00
-
- thumb_func_start ContestEffect_01
-ContestEffect_01: @ 80B7D90
- push {lr}
- ldr r3, _080B7DB8 @ =gSharedMem + 0x192D0
- ldrb r1, [r3, 0x11]
- lsls r0, r1, 3
- subs r0, r1
- lsls r0, 2
- adds r1, r3, 0
- subs r1, 0x70
- adds r0, r1
- ldrb r1, [r0, 0x10]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0, 0x10]
- ldrb r0, [r3, 0x11]
- movs r1, 0
- bl sub_80B13EC
- pop {r0}
- bx r0
- .align 2, 0
-_080B7DB8: .4byte gSharedMem + 0x192D0
- thumb_func_end ContestEffect_01
-
thumb_func_start ContestEffect_02
ContestEffect_02: @ 80B7DBC
push {lr}
diff --git a/include/contest.h b/include/contest.h
index 557b9e5c4..f8879f8a5 100644
--- a/include/contest.h
+++ b/include/contest.h
@@ -277,5 +277,6 @@ extern u16 gUnknown_02038688[4];
extern u8 gContestFinalStandings[4];
extern u8 gUnknown_02038696[4];
extern u8 gUnknown_0203869B;
+void sub_80B13EC(u8 a, u8 b);
#endif // GUARD_CONTEST_H
diff --git a/include/contest_effect.h b/include/contest_effect.h
new file mode 100644
index 000000000..2840bf106
--- /dev/null
+++ b/include/contest_effect.h
@@ -0,0 +1,6 @@
+#ifndef POKERUBY_GBA_CONTEST_EFFECT_H
+#define POKERUBY_GBA_CONTEST_EFFECT_H
+
+extern bool8 AreMovesContestCombo(u16, u16);
+
+#endif //POKERUBY_GBA_CONTEST_EFFECT_H
diff --git a/ld_script.txt b/ld_script.txt
index 619e06350..2eae4d81c 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -160,6 +160,7 @@ SECTIONS {
src/script_menu.o(.text);
src/naming_screen.o(.text);
src/money.o(.text);
+ src/contest_effect.o(.text);
asm/contest_effect.o(.text);
src/record_mixing.o(.text);
src/debug/sound_check_menu.o(.text);
@@ -594,6 +595,7 @@ SECTIONS {
src/script_menu.o(.rodata);
src/naming_screen.o(.rodata);
src/money.o(.rodata);
+ src/contest_effect.o(.rodata);
data/contest_effect.o(.rodata);
src/record_mixing.o(.data);
src/record_mixing.o(.rodata);
diff --git a/src/contest.c b/src/contest.c
index 84e5d807b..c27844beb 100644
--- a/src/contest.c
+++ b/src/contest.c
@@ -8,6 +8,7 @@
#include "battle_anim.h"
#include "blend_palette.h"
#include "contest.h"
+#include "contest_effect.h"
#include "contest_link_80C857C.h"
#include "data2.h"
#include "decompress.h"
@@ -35,7 +36,6 @@
extern u8 gUnknown_020297ED;
-extern u8 AreMovesContestCombo(u16, u16); // I don't think this is a bool
extern void sub_80C8A38(u8);
extern void sub_80C8AD0(u8);
extern void sub_80C8C80(u8);
diff --git a/src/contest_ai.c b/src/contest_ai.c
index 1e249083b..63894635b 100644
--- a/src/contest_ai.c
+++ b/src/contest_ai.c
@@ -2,9 +2,9 @@
#include "contest.h"
#include "random.h"
#include "contest_ai.h"
+#include "contest_effect.h"
#include "ewram.h"
-extern u8 AreMovesContestCombo(u16, u16);
extern bool8 sub_80B214C(u8);
extern bool8 Contest_IsMonsTurnDisabled(u8);
diff --git a/src/contest_effect.c b/src/contest_effect.c
new file mode 100644
index 000000000..f1606517b
--- /dev/null
+++ b/src/contest_effect.c
@@ -0,0 +1,33 @@
+#include "global.h"
+#include "ewram.h"
+#include "contest.h"
+
+extern bool8 const gComboStarterLookupTable[];
+
+bool8 AreMovesContestCombo(u16 lastMove, u16 nextMove) {
+ u8 nextMoveComboMoves[4];
+ u8 lastMoveComboStarterId = gContestMoves[lastMove].comboStarterId;
+ nextMoveComboMoves[0] = gContestMoves[nextMove].comboMoves[0];
+ nextMoveComboMoves[1] = gContestMoves[nextMove].comboMoves[1];
+ nextMoveComboMoves[2] = gContestMoves[nextMove].comboMoves[2];
+ nextMoveComboMoves[3] = gContestMoves[nextMove].comboMoves[3];
+
+ if (lastMoveComboStarterId == 0)
+ return 0;
+
+ if (lastMoveComboStarterId == nextMoveComboMoves[0] || lastMoveComboStarterId == nextMoveComboMoves[1] || lastMoveComboStarterId == nextMoveComboMoves[2] || lastMoveComboStarterId == nextMoveComboMoves[3])
+ return gComboStarterLookupTable[lastMoveComboStarterId];
+
+ return 0;
+}
+
+void ContestEffect_00(void)
+{
+}
+
+void ContestEffect_01(void)
+{
+ sContestantStatus[shared192D0.unk11].unk10_2 = TRUE;
+ sub_80B13EC(shared192D0.unk11, 0);
+}
+