diff options
-rw-r--r-- | asm/battle_transition.s | 101 | ||||
-rw-r--r-- | data/battle_transition.s | 25 | ||||
-rw-r--r-- | include/battle_transition.h | 6 | ||||
-rw-r--r-- | src/battle_transition.c | 52 |
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], ®_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])); +} |