summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/battle_transition.s101
-rw-r--r--data/battle_transition.s25
-rw-r--r--include/battle_transition.h6
-rw-r--r--src/battle_transition.c52
4 files changed, 51 insertions, 133 deletions
diff --git a/asm/battle_transition.s b/asm/battle_transition.s
index 2517b2aad..3e4929422 100644
--- a/asm/battle_transition.s
+++ b/asm/battle_transition.s
@@ -7,107 +7,6 @@
.text
- thumb_func_start sub_811D4C8
-sub_811D4C8: @ 811D4C8
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x4
- mov r8, r0
- adds r4, r1, 0
- adds r5, r2, 0
- adds r6, r3, 0
- ldr r3, [sp, 0x18]
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 16
- lsrs r5, 16
- lsls r6, 16
- lsrs r6, 16
- lsls r3, 16
- lsrs r3, 16
- ldr r0, _0811D524 @ =sub_811D54C
- movs r1, 0x3
- str r3, [sp]
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r2, _0811D528 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r1, r2
- mov r0, r8
- strh r0, [r1, 0xA]
- strh r4, [r1, 0xC]
- strh r5, [r1, 0xE]
- strh r6, [r1, 0x10]
- ldr r3, [sp]
- strh r3, [r1, 0x12]
- strh r0, [r1, 0x14]
- add sp, 0x4
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D524: .4byte sub_811D54C
-_0811D528: .4byte gTasks
- thumb_func_end sub_811D4C8
-
- thumb_func_start sub_811D52C
-sub_811D52C: @ 811D52C
- push {lr}
- ldr r0, _0811D540 @ =sub_811D54C
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _0811D544
- movs r0, 0
- b _0811D546
- .align 2, 0
-_0811D540: .4byte sub_811D54C
-_0811D544:
- movs r0, 0x1
-_0811D546:
- pop {r1}
- bx r1
- thumb_func_end sub_811D52C
-
- thumb_func_start sub_811D54C
-sub_811D54C: @ 811D54C
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0811D57C @ =gUnknown_083FD948
- ldr r2, _0811D580 @ =gTasks
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- adds r4, r1, r2
-_0811D55E:
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- lsls r0, 2
- adds r0, r5
- ldr r1, [r0]
- adds r0, r4, 0
- bl _call_via_r1
- lsls r0, 24
- cmp r0, 0
- bne _0811D55E
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0811D57C: .4byte gUnknown_083FD948
-_0811D580: .4byte gTasks
- thumb_func_end sub_811D54C
thumb_func_start sub_811D584
sub_811D584: @ 811D584
diff --git a/data/battle_transition.s b/data/battle_transition.s
index 55f7defa6..3dd12ef76 100644
--- a/data/battle_transition.s
+++ b/data/battle_transition.s
@@ -4,31 +4,6 @@
.section .rodata
-gUnknown_083FD8F4:: @ 83FD8F4
- .2byte 56, 0, 0, 160, 0
- .2byte 104, 160, 240, 88, 1
- .2byte 240, 72, 56, 0, 1
- .2byte 0, 32, 144, 160, 0
- .2byte 144, 160, 184, 0, 1
- .2byte 56, 0, 168, 160, 0
- .2byte 168, 160, 48, 0, 1
-
- .align 1
-gUnknown_083FD93A:: @ 83FD93A
- .2byte 8
- .2byte 4
- .2byte 2
- .2byte 1
- .2byte 1
- .2byte 1
- .2byte 0
-
- .align 2
-gUnknown_083FD948:: @ 83FD948
- .4byte sub_811D584
- .4byte sub_811D5E0
-
- .align 2
gSpriteImageTable_83FD950:: @ 83FD950
obj_frame_tiles gSpriteImage_83FC148, 0x200
diff --git a/include/battle_transition.h b/include/battle_transition.h
index 9082b20ef..b2d897493 100644
--- a/include/battle_transition.h
+++ b/include/battle_transition.h
@@ -1,8 +1,8 @@
#ifndef GUARD_BATTLE_TRANSITION_H
#define GUARD_BATTLE_TRANSITION_H
-void sub_811AABC(u8);
-void sub_811AAD8(u8);
+void sub_811AABC(u8 transitionID);
+void sub_811AAD8(u8 transitionID);
bool8 IsBattleTransitionDone(void);
#define TRANSITIONS_NO 17
@@ -18,7 +18,7 @@ enum // TRANSITION_MUGSHOT
#define MUGSHOTS_NO 5
-// credits for the names goes to Dyskinesia
+// credits for the names go to Dyskinesia
#define B_TRANSITION_BLUR 0
#define B_TRANSITION_SMEAR 1
diff --git a/src/battle_transition.c b/src/battle_transition.c
index c0770f793..9f4126822 100644
--- a/src/battle_transition.c
+++ b/src/battle_transition.c
@@ -160,9 +160,9 @@ static bool8 sub_811C938(struct Sprite* sprite);
static bool8 sub_811C984(struct Sprite* sprite);
static bool8 sub_811C9B8(struct Sprite* sprite);
static bool8 sub_811C9E4(struct Sprite* sprite);
+static void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4);
+static bool8 sub_811D52C(void);
-void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4);
-bool8 sub_811D52C(void);
void sub_811D658(void);
void VBlankCB_BattleTransition(void);
void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5);
@@ -173,6 +173,9 @@ void sub_811D6D4(void);
void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6);
bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2);
void sub_811CFD0(struct Sprite* sprite);
+void sub_811D54C(u8 taskID);
+bool8 sub_811D584(struct Task* task);
+bool8 sub_811D5E0(struct Task* task);
// const data
@@ -364,14 +367,31 @@ static const TransitionState sPhase2_Transition11_Funcs[] =
&Phase2_Transition11_Func5
};
+static const s16 gUnknown_083FD8F4[][5] =
+{
+ {56, 0, 0, 160, 0},
+ {104, 160, 240, 88, 1},
+ {240, 72, 56, 0, 1},
+ {0, 32, 144, 160, 0},
+ {144, 160, 184, 0, 1},
+ {56, 0, 168, 160, 0},
+ {168, 160, 48, 0, 1},
+};
+
+static const s16 gUnknown_083FD93A[] = {8, 4, 2, 1, 1, 1, 0};
+
+static const TransitionState gUnknown_083FD948[] =
+{
+ &sub_811D584,
+ &sub_811D5E0
+};
+
extern const u16 gFieldEffectObjectPalette10[];
extern const u16 gUnknown_083FDB44[];
extern const struct SpriteTemplate gSpriteTemplate_83FD98C;
extern const u16 gUnknown_083FDFF4[];
extern const u8 * const sOpponentMugshotsPals[];
extern const u8 * const sPlayerMugshotsPals[2];
-extern const s16 gUnknown_083FD8F4[][5];
-extern const s16 gUnknown_083FD93A[];
// actual code starts here
@@ -2116,3 +2136,27 @@ static void VBlankCB_Phase2_Transition11(void)
REG_WIN0H = gUnknown_03004DE0[1][0];
DmaSet(0, gUnknown_03004DE0[1], &REG_WIN0H, 0xA2400001);
}
+
+static void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4)
+{
+ u8 taskID = CreateTask(sub_811D54C, 3);
+ gTasks[taskID].data[1] = a0;
+ gTasks[taskID].data[2] = a1;
+ gTasks[taskID].data[3] = a2;
+ gTasks[taskID].data[4] = a3;
+ gTasks[taskID].data[5] = a4;
+ gTasks[taskID].data[6] = a0;
+}
+
+static bool8 sub_811D52C(void)
+{
+ if (FindTaskIdByFunc(sub_811D54C) == 0xFF)
+ return 1;
+ else
+ return 0;
+}
+
+void sub_811D54C(u8 taskID)
+{
+ while (gUnknown_083FD948[gTasks[taskID].tState](&gTasks[taskID]));
+}