From e9ec2a1a561d3041b8df2cb512a0e03ff5bca74b Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 17 Aug 2017 21:05:59 +0200 Subject: start decompiling battle transition --- src/battle_setup.c | 4 +- src/battle_transition.c | 302 ++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 304 insertions(+), 2 deletions(-) create mode 100644 src/battle_transition.c (limited to 'src') diff --git a/src/battle_setup.c b/src/battle_setup.c index 04674e739..31c127416 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -438,7 +438,7 @@ void task01_battle_start(u8 taskId) } break; case 1: - if (sub_811AAE8() == TRUE) + if (IsBattleTransitionDone() == TRUE) { SetMainCallback2(sub_800E7C4); prev_quest_postbuffer_cursor_backup_reset(); @@ -827,7 +827,7 @@ void CB2_StartFirstBattle(void) UpdatePaletteFade(); RunTasks(); - if (sub_811AAE8() == TRUE) + if (IsBattleTransitionDone() == TRUE) { gBattleTypeFlags = BATTLE_TYPE_FIRST_BATTLE; gMain.savedCallback = HandleFirstBattleEnd; diff --git a/src/battle_transition.c b/src/battle_transition.c new file mode 100644 index 000000000..35d3baf0c --- /dev/null +++ b/src/battle_transition.c @@ -0,0 +1,302 @@ +#include "global.h" +#include "main.h" +#include "rom4.h" +#include "task.h" +#include "palette.h" +#include "trig.h" + +void sub_807DE10(void); +void dp12_8087EA4(void); + +typedef bool8 (*TransitionState)(struct Task* task); + +extern const TransitionState sMainTransitionPhases[]; +extern const TransitionState sPhase2_Transition0_Funcs[]; +extern const TransitionState sPhase2_Transition1_Funcs[]; +extern const TransitionState sPhase2_Transition2_Funcs[]; + +extern const TaskFunc sPhase1_Tasks[]; +extern const TaskFunc sPhase2_Tasks[]; + +extern u8 ewram[]; +extern s16 gUnknown_03005560[]; + +extern u16 gUnknown_03004DE0[][0x3C0]; + +struct TransitionData +{ + vs8 field_0; // now that's interesting + s8 field_1; + s16 field_2; + s16 field_4; + s16 field_6; + s16 field_8; + s16 field_A; + s16 field_C; + s16 field_E; + s16 field_10; + s16 field_12; + s16 field_14; + s16 field_16; + s16 field_18; +}; + +#define TRANSITION_STRUCT (*(struct TransitionData *) (&ewram[0xC000])) + +// this file's functions +static void LaunchBattleTransitionTask(u8 transitionID); +static void Task_BattleTransitionMain(u8 taskID); +void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); +bool8 sub_811D52C(void); +void sub_811D658(void); +static void VBlankCB_Phase2_Transition1(void); +static void HBlankCB_Phase2_Transition1(void); +void VBlankCB_Phase2_Transition2(void); +void HBlankCB_Phase2_Transition2(void); +void VBlankCB_BattleTransition(void); +void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); + +void sub_811AABC(u8 transitionID) +{ + gMain.callback2 = sub_8054398; + LaunchBattleTransitionTask(transitionID); +} + +void sub_811AAD8(u8 transitionID) +{ + LaunchBattleTransitionTask(transitionID); +} + +#define tState data[0] +#define tTransitionID data[1] +#define tTransitionDone data[15] + +bool8 IsBattleTransitionDone(void) +{ + u8 taskID = FindTaskIdByFunc(Task_BattleTransitionMain); + if (gTasks[taskID].tTransitionDone) + { + DestroyTask(taskID); + return 1; + } + else + return 0; +} + +static void LaunchBattleTransitionTask(u8 transitionID) +{ + u8 taskID = CreateTask(Task_BattleTransitionMain, 2); + gTasks[taskID].tTransitionID = transitionID; +} + +static void Task_BattleTransitionMain(u8 taskID) +{ + while (sMainTransitionPhases[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Transition_Phase1(struct Task* task) +{ + sub_807DE10(); + CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x4000100); + if (sPhase1_Tasks[task->tTransitionID] != NULL) + { + CreateTask(sPhase1_Tasks[task->tTransitionID], 4); + task->tState++; + return 0; + } + else + { + task->tState = 2; + return 1; + } +} + +bool8 Transition_WaitForPhase1(struct Task* task) +{ + if (FindTaskIdByFunc(sPhase1_Tasks[task->tTransitionID]) == 0xFF) + { + task->tState++; + return 1; + } + else + return 0; +} + +bool8 Transition_Phase2(struct Task* task) +{ + CreateTask(sPhase2_Tasks[task->tTransitionID], 0); + task->tState++; + return 0; +} + +bool8 Transition_WaitForPhase2(struct Task* task) +{ + task->tTransitionDone = 0; + if (FindTaskIdByFunc(sPhase2_Tasks[task->tTransitionID]) == 0xFF) + task->tTransitionDone = 1; + return 0; +} + +void Phase1Task_TransitionAll(u8 taskID) +{ + if (gTasks[taskID].tState == 0) + { + gTasks[taskID].tState++; + sub_811D4C8(0, 0, 3, 2, 2); + } + else if (sub_811D52C()) + DestroyTask(taskID); +} + +void Phase2Task_Transition0(u8 taskID) +{ + while (sPhase2_Transition0_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition0_Func1(struct Task* task) +{ + REG_MOSAIC = 0; + REG_BG1CNT |= 0x40; + REG_BG2CNT |= 0x40; + REG_BG3CNT |= 0x40; + task->tState++; + return 1; +} + +bool8 Phase2_Transition0_Func2(struct Task* task) +{ + if (task->data[1] != 0) + task->data[1]--; + else + { + task->data[1] = 4; + if (++task->data[2] == 10) + BeginNormalPaletteFade(-1, -1, 0, 0x10, 0); + REG_MOSAIC = (task->data[2] & 15) * 17; + if (task->data[2] > 14) + task->tState++; + } + return 0; +} + +bool8 Phase2_Transition0_Func3(struct Task* task) +{ + if (!gPaletteFade.active) + { + u8 taskID = FindTaskIdByFunc(Phase2Task_Transition0); + DestroyTask(taskID); + } + return 0; +} + +void Phase2Task_Transition1(u8 taskID) +{ + while (sPhase2_Transition1_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition1_Func1(struct Task* task) +{ + u16 savedIME; + + sub_811D658(); + dp12_8087EA4(); + BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); + sub_811D6E8(gUnknown_03005560, TRANSITION_STRUCT.field_14, 0, 2, 0, 160); + + SetVBlankCallback(VBlankCB_Phase2_Transition1); + SetHBlankCallback(HBlankCB_Phase2_Transition1); + + savedIME = REG_IME; + REG_IME = 0; + REG_IE |= 3; + REG_IME = savedIME; + REG_DISPSTAT |= 0x18; + + task->tState++; + return 0; +} + +bool8 Phase2_Transition1_Func2(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + task->data[1] += 4; + task->data[2] += 8; + + sub_811D6E8(gUnknown_03004DE0[0], TRANSITION_STRUCT.field_14, task->data[1], 2, task->data[2], 160); + + if (!gPaletteFade.active) + { + u8 taskID = FindTaskIdByFunc(Phase2Task_Transition1); + DestroyTask(taskID); + } + + TRANSITION_STRUCT.field_0++; + return 0; +} + +static void VBlankCB_Phase2_Transition1(void) +{ + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); +} + +static void HBlankCB_Phase2_Transition1(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1HOFS = var; + REG_BG2HOFS = var; + REG_BG3HOFS = var; +} + +void Phase2Task_Transition2(u8 taskID) +{ + while (sPhase2_Transition2_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition2_Func1(struct Task* task) +{ + u16 savedIME; + + sub_811D658(); + dp12_8087EA4(); + + BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); + memset(gUnknown_03005560, TRANSITION_STRUCT.field_16, 0x140); + + SetVBlankCallback(VBlankCB_Phase2_Transition2); + SetHBlankCallback(HBlankCB_Phase2_Transition2); + + savedIME = REG_IME; + REG_IME = 0; + REG_IE |= 3; + REG_IME = savedIME; + REG_DISPSTAT |= 0x18; + + task->tState++; + return 0; +} + +bool8 Phase2_Transition2_Func2(struct Task* task) +{ + u8 i; + u16 r3, r4; + + TRANSITION_STRUCT.field_0 = 0; + r4 = task->data[1]; + r3 = task->data[2] >> 8; + task->data[1] += 4224; + task->data[2] += 384; + + for (i = 0; i < 160; i++, r4 += 4224) + { + u16 var = r4 / 256; + gUnknown_03004DE0[0][i] = Sin(var, r3) + TRANSITION_STRUCT.field_16; + } + + if (!gPaletteFade.active) + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition2)); + + TRANSITION_STRUCT.field_0++; + return 0; +} -- cgit v1.2.3 From 6ce3827987f48f4ba13f67d38382decd8206d00d Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 18 Aug 2017 18:25:44 +0200 Subject: cam fixed a function yay --- src/battle_transition.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/battle_transition.c b/src/battle_transition.c index 35d3baf0c..47adccf21 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -41,7 +41,7 @@ struct TransitionData s16 field_18; }; -#define TRANSITION_STRUCT (*(struct TransitionData *) (&ewram[0xC000])) +#define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000)) // this file's functions static void LaunchBattleTransitionTask(u8 transitionID); @@ -291,7 +291,7 @@ bool8 Phase2_Transition2_Func2(struct Task* task) for (i = 0; i < 160; i++, r4 += 4224) { u16 var = r4 / 256; - gUnknown_03004DE0[0][i] = Sin(var, r3) + TRANSITION_STRUCT.field_16; + gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); } if (!gPaletteFade.active) -- cgit v1.2.3 From f25425cf7de8da73f371ab587275f45e774070a0 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 18 Aug 2017 19:42:44 +0200 Subject: started transition3 phase2 --- src/battle_transition.c | 90 +++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 88 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/battle_transition.c b/src/battle_transition.c index 47adccf21..ed6bdf387 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -14,6 +14,7 @@ extern const TransitionState sMainTransitionPhases[]; extern const TransitionState sPhase2_Transition0_Funcs[]; extern const TransitionState sPhase2_Transition1_Funcs[]; extern const TransitionState sPhase2_Transition2_Funcs[]; +extern const TransitionState sPhase2_Transition3_Funcs[]; extern const TaskFunc sPhase1_Tasks[]; extern const TaskFunc sPhase2_Tasks[]; @@ -49,12 +50,16 @@ static void Task_BattleTransitionMain(u8 taskID); void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); bool8 sub_811D52C(void); void sub_811D658(void); + static void VBlankCB_Phase2_Transition1(void); static void HBlankCB_Phase2_Transition1(void); -void VBlankCB_Phase2_Transition2(void); -void HBlankCB_Phase2_Transition2(void); +static void VBlankCB_Phase2_Transition2(void); +static void HBlankCB_Phase2_Transition2(void); +void VBlankCB_Phase2_Transition3(void); + void VBlankCB_BattleTransition(void); void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); +void sub_811D6A8(u16** a0, u16** a1); void sub_811AABC(u8 transitionID) { @@ -300,3 +305,84 @@ bool8 Phase2_Transition2_Func2(struct Task* task) TRANSITION_STRUCT.field_0++; return 0; } + +static void VBlankCB_Phase2_Transition2(void) +{ + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); +} + +static void HBlankCB_Phase2_Transition2(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1VOFS = var; + REG_BG2VOFS = var; + REG_BG3VOFS = var; +} + +void Phase2Task_Transition3(u8 taskID) +{ + while (sPhase2_Transition3_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +extern const u8 gUnknown_083FBB88[]; +extern const u16 gFieldEffectObjectPalette10[]; + +bool8 Phase2_Transition3_Func1(struct Task* task) +{ + u16 i; + u16 *dst1, *dst2; + + sub_811D658(); + dp12_8087EA4(); + + task->data[1] = 16; + task->data[2] = 0; + task->data[4] = 0; + task->data[5] = 0x4000; + TRANSITION_STRUCT.field_2 = 63; + TRANSITION_STRUCT.field_4 = 0; + TRANSITION_STRUCT.field_6 = 240; + TRANSITION_STRUCT.field_8 = 160; + TRANSITION_STRUCT.field_E = 0x3F41; + TRANSITION_STRUCT.field_10 = task->data[1] * 256; // 16 * 256 = 0x1000 + + for (i = 0; i < 160; i++) + { + gUnknown_03005560[i] = 240; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition3); + + sub_811D6A8(&dst1, & dst2); + CpuFill16(0, dst1, 0x800); + CpuSet(gUnknown_083FBB88, dst2, 0x2C0); + LoadPalette(gFieldEffectObjectPalette10, 240, 32); + + task->tState++; + return 0; +} + +extern const u16 gUnknown_083FDB44[]; + +bool8 Phase2_Transition3_Func2(struct Task* task) +{ + s16 i, j; + u16 *dst1, *dst2; + const u16* var; + + var = gUnknown_083FDB44; + sub_811D6A8(&dst1, &dst2); + for (i = 0; i < 20; i++) + { + for (j = 0; j < 30; j++, var++) + { + dst1[i * 32 + j] = *var | 0xF000; + } + } + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160); + + task->tState++; + return 1; +} -- cgit v1.2.3 From ba11084ec89d5480eeba516d78bb6980d8e12ee4 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 19 Aug 2017 17:46:21 +0200 Subject: crazy vram shaenigans --- src/battle_transition.c | 439 +++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 437 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/battle_transition.c b/src/battle_transition.c index ed6bdf387..fb20853a5 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -4,6 +4,9 @@ #include "task.h" #include "palette.h" #include "trig.h" +#include "field_effect.h" +#include "rng.h" +#include "sprite.h" void sub_807DE10(void); void dp12_8087EA4(void); @@ -15,6 +18,8 @@ extern const TransitionState sPhase2_Transition0_Funcs[]; extern const TransitionState sPhase2_Transition1_Funcs[]; extern const TransitionState sPhase2_Transition2_Funcs[]; extern const TransitionState sPhase2_Transition3_Funcs[]; +extern const TransitionState sPhase2_Transition4_Funcs[]; +extern const TransitionState sPhase2_Transition5_Funcs[]; extern const TaskFunc sPhase1_Tasks[]; extern const TaskFunc sPhase2_Tasks[]; @@ -40,6 +45,17 @@ struct TransitionData s16 field_14; s16 field_16; s16 field_18; + s16 field_1A; + s16 field_1C; + s16 field_1E; + s16 field_20; + s16 field_22; + s16 field_24; + s16 field_26; + s16 field_28; + s16 field_2A; + s16 field_2C; + s16 field_2E; }; #define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000)) @@ -55,11 +71,17 @@ static void VBlankCB_Phase2_Transition1(void); static void HBlankCB_Phase2_Transition1(void); static void VBlankCB_Phase2_Transition2(void); static void HBlankCB_Phase2_Transition2(void); -void VBlankCB_Phase2_Transition3(void); +void VBlankCB0_Phase2_Transition3(void); +void VBlankCB1_Phase2_Transition3(void); +void VBlankCB_Phase2_Transition5(void); void VBlankCB_BattleTransition(void); void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); void sub_811D6A8(u16** a0, u16** a1); +void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); +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_811AABC(u8 transitionID) { @@ -353,7 +375,7 @@ bool8 Phase2_Transition3_Func1(struct Task* task) gUnknown_03005560[i] = 240; } - SetVBlankCallback(VBlankCB_Phase2_Transition3); + SetVBlankCallback(VBlankCB0_Phase2_Transition3); sub_811D6A8(&dst1, & dst2); CpuFill16(0, dst1, 0x800); @@ -386,3 +408,416 @@ bool8 Phase2_Transition3_Func2(struct Task* task) task->tState++; return 1; } + +bool8 Phase2_Transition3_Func3(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + if (task->data[3] == 0 || --task->data[3] == 0) + { + task->data[2]++; + task->data[3] = 2; + } + TRANSITION_STRUCT.field_10 = (task->data[1] << 8) | task->data[2]; + if (task->data[2] > 15) + task->tState++; + task->data[4] += 8; + task->data[5] -= 256; + + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition3_Func4(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + if (task->data[3] == 0 || --task->data[3] == 0) + { + task->data[1]--; + task->data[3] = 2; + } + TRANSITION_STRUCT.field_10 = (task->data[1] << 8) | task->data[2]; + if (task->data[1] == 0) + task->tState++; + task->data[4] += 8; + task->data[5] -= 256; + + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition3_Func5(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + task->data[4] += 8; + task->data[5] -= 256; + + sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); + + if (task->data[5] <= 0) + { + task->tState++; + task->data[1] = 160; + task->data[2] = 256; + task->data[3] = 0; + } + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition3_Func6(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + if (task->data[2] < 1024) + task->data[2] += 128; + if (task->data[1] != 0) + { + task->data[1] -= (task->data[2] >> 8); + if (task->data[1] < 0) + task->data[1] = 0; + } + sub_811D764(gUnknown_03004DE0[0], 120, 80, task->data[1]); + if (task->data[1] == 0) + { + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition3)); + } + if (task->data[3] == 0) + { + task->data[3]++; + SetVBlankCallback(VBlankCB1_Phase2_Transition3); + } + + TRANSITION_STRUCT.field_0++; + return 0; +} + +static void Transition3_Vblank(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.field_2; + REG_WINOUT = TRANSITION_STRUCT.field_4; + REG_WIN0V = TRANSITION_STRUCT.field_8; + REG_BLDCNT = TRANSITION_STRUCT.field_E; + REG_BLDALPHA = TRANSITION_STRUCT.field_10; +} + +void VBlankCB0_Phase2_Transition3(void) +{ + Transition3_Vblank(); + DmaSet(0, gUnknown_03005560, ®_BG0HOFS, 0xA2400001); +} + +void VBlankCB1_Phase2_Transition3(void) +{ + Transition3_Vblank(); + DmaSet(0, gUnknown_03005560, ®_WIN0H, 0xA2400001); +} + +void Phase2Task_Transition4(u8 taskID) +{ + while (sPhase2_Transition4_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +extern const u8 gUnknown_083FC108[]; + +bool8 Phase2_Transition4_Func1(struct Task* task) +{ + u16 *dst1, *dst2; + + sub_811D6A8(&dst1, &dst2); + CpuSet(gUnknown_083FC108, dst2, 0x20); + CpuFill32(0, dst1, 0x800); + LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); + + task->tState++; + return 0; +} + +extern const s16 gUnknown_083FD7E4[2]; +extern const s16 gUnknown_083FD7F2[2]; +extern const s16 gUnknown_083FD7E8[5]; + +bool8 Phase2_Transition4_Func2(struct Task* task) +{ + s16 i; + s16 rand; + s16 arr0[2]; + s16 arr1[5]; + + memcpy(arr0, gUnknown_083FD7E4, sizeof(gUnknown_083FD7E4)); + memcpy(arr1, gUnknown_083FD7E8, sizeof(gUnknown_083FD7E8)); + rand = Random() & 1; + for (i = 0; i <= 4; i++, rand ^= 1) + { + gUnknown_0202FF84[0] = arr0[rand]; // x + gUnknown_0202FF84[1] = (i * 32) + 16; // y + gUnknown_0202FF84[2] = rand; + gUnknown_0202FF84[3] = arr1[i]; + FieldEffectStart(FLDEFF_POKEBALL); + } + + task->tState++; + return 0; +} + +bool8 Phase2_Transition4_Func3(struct Task* task) +{ + if (!FieldEffectActiveListContains(FLDEFF_POKEBALL)) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition4)); + } + return 0; +} + +extern const struct SpriteTemplate gSpriteTemplate_83FD98C; + +bool8 FldEff_Pokeball(void) +{ + u8 spriteID = CreateSpriteAtEnd(&gSpriteTemplate_83FD98C, gUnknown_0202FF84[0], gUnknown_0202FF84[1], 0); + gSprites[spriteID].oam.priority = 0; + gSprites[spriteID].oam.affineMode = 1; + gSprites[spriteID].data0 = gUnknown_0202FF84[2]; + gSprites[spriteID].data1 = gUnknown_0202FF84[3]; + gSprites[spriteID].data2 = -1; + InitSpriteAffineAnim(&gSprites[spriteID]); + StartSpriteAffineAnim(&gSprites[spriteID], gUnknown_0202FF84[2]); + return 0; +} + +#ifdef NONMATCHING +void sub_811B720(struct Sprite* sprite) +{ + s16 arr0[2]; + + memcpy(arr0, gUnknown_083FD7F2, sizeof(gUnknown_083FD7F2)); + if (sprite->data1 != 0) + sprite->data1--; + else + { + if (sprite->pos1.x < 240) + { + s32 posY = sprite->pos1.y >> 3; + s32 posX = sprite->pos1.x >> 3; + if ((posX >> 3) != sprite->data2) + { + u32 var; + + sprite->data2 = (posX); + var = (((REG_BG0CNT >> 8) & 0x1F) << 10); + + vram[MULTI_DIM_ARR(posY - 2, 32, posX)] = 0xF001; + vram[MULTI_DIM_ARR(posY - 1, 32, posX)] = 0xF001; + vram[MULTI_DIM_ARR(posY - 0, 32, posX)] = 0xF001; + vram[MULTI_DIM_ARR(posY + 0, 32, posX)] = 0xF001; + } + } + sprite->pos1.x += arr0[sprite->data0]; + if (sprite->pos1.x + 15 > 270) + FieldEffectStop(sprite, FLDEFF_POKEBALL); + } +} +#else +__attribute__((naked)) +void sub_811B720(struct Sprite* sprite) +{ + asm(".syntax unified\n\ + push {r4-r6,lr}\n\ + sub sp, 0x4\n\ + adds r4, r0, 0\n\ + ldr r1, _0811B740 @ =gUnknown_083FD7F2\n\ + mov r0, sp\n\ + movs r2, 0x4\n\ + bl memcpy\n\ + ldrh r1, [r4, 0x30]\n\ + movs r2, 0x30\n\ + ldrsh r0, [r4, r2]\n\ + cmp r0, 0\n\ + beq _0811B744\n\ + subs r0, r1, 0x1\n\ + strh r0, [r4, 0x30]\n\ + b _0811B7D6\n\ + .align 2, 0\n\ +_0811B740: .4byte gUnknown_083FD7F2\n\ +_0811B744:\n\ + ldrh r0, [r4, 0x20]\n\ + lsls r1, r0, 16\n\ + lsrs r0, r1, 16\n\ + cmp r0, 0xF0\n\ + bhi _0811B7B2\n\ + asrs r0, r1, 19\n\ + lsls r0, 16\n\ + ldrh r1, [r4, 0x22]\n\ + lsls r1, 16\n\ + asrs r1, 19\n\ + lsls r1, 16\n\ + lsrs r1, 16\n\ + lsrs r2, r0, 16\n\ + asrs r5, r0, 16\n\ + movs r3, 0x32\n\ + ldrsh r0, [r4, r3]\n\ + cmp r5, r0\n\ + beq _0811B7B2\n\ + strh r2, [r4, 0x32]\n\ + ldr r0, _0811B7E0 @ =REG_BG0CNT\n\ + ldrh r2, [r0]\n\ + lsrs r2, 8\n\ + movs r0, 0x1F\n\ + ands r2, r0\n\ + lsls r2, 11\n\ + movs r0, 0xC0\n\ + lsls r0, 19\n\ + adds r2, r0\n\ + lsls r1, 16\n\ + asrs r1, 16\n\ + subs r0, r1, 0x2\n\ + lsls r0, 5\n\ + adds r0, r5\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + ldr r6, _0811B7E4 @ =0x0000f001\n\ + adds r3, r6, 0\n\ + strh r3, [r0]\n\ + subs r0, r1, 0x1\n\ + lsls r0, 5\n\ + adds r0, r5\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + strh r3, [r0]\n\ + lsls r0, r1, 5\n\ + adds r0, r5\n\ + lsls r0, 1\n\ + adds r0, r2\n\ + strh r3, [r0]\n\ + adds r1, 0x1\n\ + lsls r1, 5\n\ + adds r1, r5\n\ + lsls r1, 1\n\ + adds r1, r2\n\ + strh r3, [r1]\n\ +_0811B7B2:\n\ + movs r1, 0x2E\n\ + ldrsh r0, [r4, r1]\n\ + lsls r0, 1\n\ + add r0, sp\n\ + ldrh r0, [r0]\n\ + ldrh r2, [r4, 0x20]\n\ + adds r0, r2\n\ + strh r0, [r4, 0x20]\n\ + adds r0, 0xF\n\ + lsls r0, 16\n\ + movs r1, 0x87\n\ + lsls r1, 17\n\ + cmp r0, r1\n\ + bls _0811B7D6\n\ + adds r0, r4, 0\n\ + movs r1, 0x2D\n\ + bl FieldEffectStop\n\ +_0811B7D6:\n\ + add sp, 0x4\n\ + pop {r4-r6}\n\ + pop {r0}\n\ + bx r0\n\ + .align 2, 0\n\ +_0811B7E0: .4byte 0x04000008\n\ +_0811B7E4: .4byte 0x0000f001\n\ + .syntax divided"); +} +#endif // NONMATCHING + +void Phase2Task_Transition5(u8 taskID) +{ + while (sPhase2_Transition5_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition5_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.field_2 = 0; + TRANSITION_STRUCT.field_4 = 63; + TRANSITION_STRUCT.field_6 = -3855; + TRANSITION_STRUCT.field_8 = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03005560[i] = 0xF3F4; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition5); + TRANSITION_STRUCT.field_2C = 120; + + task->tState++; + return 1; +} + +bool8 Phase2_Transition5_Func2(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + + sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, -1, 1, 1); + do + { + gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (TRANSITION_STRUCT.field_28 + 1) | 0x7800; + } while (!sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1)); + + TRANSITION_STRUCT.field_2C += 16; + if (TRANSITION_STRUCT.field_2C >= 240) + { + TRANSITION_STRUCT.field_2E = 0; + task->tState++; + } + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition5_Func3(struct Task* task) +{ + s16 r1, r3; + vu8 var = 0; + + TRANSITION_STRUCT.field_0 = 0; + + sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 240, TRANSITION_STRUCT.field_2E, 1, 1); + + while (1) + { + r1 = 120, r3 = TRANSITION_STRUCT.field_28 + 1; + if (TRANSITION_STRUCT.field_2E >= 80) + r1 = TRANSITION_STRUCT.field_28, r3 = 240; + gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r3) | (r1 << 8); + if (var != 0) + break; + var = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1); + } + + TRANSITION_STRUCT.field_2E += 8; + if (TRANSITION_STRUCT.field_2E >= 160) + { + TRANSITION_STRUCT.field_2C = 240; + task->tState++; + } + else + { + while (TRANSITION_STRUCT.field_2A < TRANSITION_STRUCT.field_2E) + { + gUnknown_03004DE0[0][++TRANSITION_STRUCT.field_2A] = (r3) | (r1 << 8); + } + } + + TRANSITION_STRUCT.field_0++; + return 0; +} -- cgit v1.2.3 From c87e2d89e33b07ea9cbb9c73ecfdb95d7bc8d4b9 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sat, 19 Aug 2017 23:10:26 +0200 Subject: cam help plox, ninja shift --- src/battle_transition.c | 180 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 176 insertions(+), 4 deletions(-) (limited to 'src') diff --git a/src/battle_transition.c b/src/battle_transition.c index fb20853a5..fa911d411 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -20,6 +20,7 @@ extern const TransitionState sPhase2_Transition2_Funcs[]; extern const TransitionState sPhase2_Transition3_Funcs[]; extern const TransitionState sPhase2_Transition4_Funcs[]; extern const TransitionState sPhase2_Transition5_Funcs[]; +extern const TransitionState sPhase2_Transition6_Funcs[]; extern const TaskFunc sPhase1_Tasks[]; extern const TaskFunc sPhase2_Tasks[]; @@ -69,11 +70,17 @@ void sub_811D658(void); static void VBlankCB_Phase2_Transition1(void); static void HBlankCB_Phase2_Transition1(void); + static void VBlankCB_Phase2_Transition2(void); static void HBlankCB_Phase2_Transition2(void); -void VBlankCB0_Phase2_Transition3(void); -void VBlankCB1_Phase2_Transition3(void); -void VBlankCB_Phase2_Transition5(void); + +static void VBlankCB0_Phase2_Transition3(void); +static void VBlankCB1_Phase2_Transition3(void); + +static void VBlankCB_Phase2_Transition5(void); + +void VBlankCB_Phase2_Transition6(void); +void HBlankCB_Phase2_Transition6(void); void VBlankCB_BattleTransition(void); void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); @@ -510,7 +517,7 @@ static void Transition3_Vblank(void) REG_BLDALPHA = TRANSITION_STRUCT.field_10; } -void VBlankCB0_Phase2_Transition3(void) +static void VBlankCB0_Phase2_Transition3(void) { Transition3_Vblank(); DmaSet(0, gUnknown_03005560, ®_BG0HOFS, 0xA2400001); @@ -821,3 +828,168 @@ bool8 Phase2_Transition5_Func3(struct Task* task) TRANSITION_STRUCT.field_0++; return 0; } + +bool8 Phase2_Transition5_Func4(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + + sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 160, 1, 1); + do + { + gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (TRANSITION_STRUCT.field_28 << 8) | 0xF0; + } while (!sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1)); + + TRANSITION_STRUCT.field_2C -= 16; + if (TRANSITION_STRUCT.field_2C <= 0) + { + TRANSITION_STRUCT.field_2E = 160; + task->tState++; + } + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition5_Func5(struct Task* task) +{ + s16 r1, r2, r3; + vu8 var = 0; + + TRANSITION_STRUCT.field_0 = 0; + + sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 0, TRANSITION_STRUCT.field_2E, 1, 1); + + while (1) + { + r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] & 0xFF, r2 = TRANSITION_STRUCT.field_28; + if (TRANSITION_STRUCT.field_2E <= 80) + r2 = 120, r1 = TRANSITION_STRUCT.field_28; + gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r1) | (r2 << 8); + r3 = 0; + if (var != 0) + break; + var = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1); + } + + TRANSITION_STRUCT.field_2E -= 8; + if (TRANSITION_STRUCT.field_2E <= 0) + { + TRANSITION_STRUCT.field_2C = r3; + task->tState++; + } + else + { + while (TRANSITION_STRUCT.field_2A > TRANSITION_STRUCT.field_2E) + { + gUnknown_03004DE0[0][--TRANSITION_STRUCT.field_2A] = (r1) | (r2 << 8); + } + } + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition5_Func6(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + + sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 0, 1, 1); + do + { + s16 r2, r3; + + r2 = 120, r3 = TRANSITION_STRUCT.field_28; + if (TRANSITION_STRUCT.field_28 >= 120) + r2 = 0, r3 = 240; + gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r3) | (r2 << 8); + + } while (!sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1)); + + TRANSITION_STRUCT.field_2C += 16; + if (TRANSITION_STRUCT.field_28 > 120) + task->tState++; + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition5_Func7(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition5)); + return 0; +} + +static void VBlankCB_Phase2_Transition5(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0 != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.field_2; + REG_WINOUT = TRANSITION_STRUCT.field_4; + REG_WIN0V = TRANSITION_STRUCT.field_8; + REG_WIN0H = gUnknown_03004DE0[1][0]; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} + +void Phase2Task_Transition6(u8 taskID) +{ + while (sPhase2_Transition6_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition6_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + + for (i = 0; i < 160; i++) + { + gUnknown_03005560[i] = TRANSITION_STRUCT.field_16; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition6); + SetHBlankCallback(HBlankCB_Phase2_Transition6); + + REG_IE |= 2; + REG_DISPSTAT |= 0x10; + + task->tState++; + return 1; +} + +bool8 Phase2_Transition6_Func2(struct Task* task) +{ + u8 i; + u16 r3, r4, r8; + + TRANSITION_STRUCT.field_0 = 0; + + r3 = task->data[2] >> 8; + r4 = task->data[1]; + r8 = 384; + task->data[1] += 0x400; + if (task->data[2] <= 0x1FFF) + task->data[2] += 0x180; + + for (i = 0; i < 160; i++, r4 += r8) + { + s16 sinResult = Sin(r4 >> 8, r3); + gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + sinResult; + } + + if (++task->data[3] == 81) + { + task->data[4]++; + BeginNormalPaletteFade(-1, -2, 0, 0x10, 0); + } + + if (task->data[4] != 0 && !gPaletteFade.active) + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition6)); + + TRANSITION_STRUCT.field_0++; + return 0; +} -- cgit v1.2.3 From f84d0541314b043fa3ef4e2b9a56809f278787f9 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 20 Aug 2017 17:27:54 +0200 Subject: mugshots tasks done --- src/battle_transition.c | 619 ++++++++++++++++++++++++++++++++++++------------ 1 file changed, 472 insertions(+), 147 deletions(-) (limited to 'src') diff --git a/src/battle_transition.c b/src/battle_transition.c index fa911d411..5cb9de1bb 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -1,4 +1,5 @@ #include "global.h" +#include "battle_transition.h" #include "main.h" #include "rom4.h" #include "task.h" @@ -7,6 +8,8 @@ #include "field_effect.h" #include "rng.h" #include "sprite.h" +#include "sound.h" +#include "songs.h" void sub_807DE10(void); void dp12_8087EA4(void); @@ -21,6 +24,8 @@ extern const TransitionState sPhase2_Transition3_Funcs[]; extern const TransitionState sPhase2_Transition4_Funcs[]; extern const TransitionState sPhase2_Transition5_Funcs[]; extern const TransitionState sPhase2_Transition6_Funcs[]; +extern const TransitionState sPhase2_Transition7_Funcs[]; +extern const TransitionState sPhase2_Mugshot_Transition_Funcs[]; extern const TaskFunc sPhase1_Tasks[]; extern const TaskFunc sPhase2_Tasks[]; @@ -34,14 +39,14 @@ struct TransitionData { vs8 field_0; // now that's interesting s8 field_1; - s16 field_2; - s16 field_4; + s16 WININ; + s16 WINOUT; s16 field_6; - s16 field_8; + s16 WIN0V; s16 field_A; s16 field_C; - s16 field_E; - s16 field_10; + s16 BLDCNT; + s16 BLDALPHA; s16 field_12; s16 field_14; s16 field_16; @@ -79,8 +84,14 @@ static void VBlankCB1_Phase2_Transition3(void); static void VBlankCB_Phase2_Transition5(void); -void VBlankCB_Phase2_Transition6(void); -void HBlankCB_Phase2_Transition6(void); +static void VBlankCB_Phase2_Transition6(void); +static void HBlankCB_Phase2_Transition6(void); + +static void VBlankCB_Phase2_Transition7(void); + +static void VBlankCB0_Phase2_Mugshots(void); +static void VBlankCB1_Phase2_Mugshots(void); +static void HBlankCB_Phase2_Mugshots(void); void VBlankCB_BattleTransition(void); void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); @@ -89,6 +100,12 @@ void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); 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); +static void Phase2Task_MugShotTransition(u8 taskID); +void sub_811C7B0(struct Task* task); + +void sub_811CA10(s16 spriteID, s16 value); +void sub_811CA28(s16 spriteID); +s16 sub_811CA44(s16 spriteID); void sub_811AABC(u8 transitionID) { @@ -370,12 +387,12 @@ bool8 Phase2_Transition3_Func1(struct Task* task) task->data[2] = 0; task->data[4] = 0; task->data[5] = 0x4000; - TRANSITION_STRUCT.field_2 = 63; - TRANSITION_STRUCT.field_4 = 0; + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 0; TRANSITION_STRUCT.field_6 = 240; - TRANSITION_STRUCT.field_8 = 160; - TRANSITION_STRUCT.field_E = 0x3F41; - TRANSITION_STRUCT.field_10 = task->data[1] * 256; // 16 * 256 = 0x1000 + TRANSITION_STRUCT.WIN0V = 160; + TRANSITION_STRUCT.BLDCNT = 0x3F41; + TRANSITION_STRUCT.BLDALPHA = task->data[1] * 256; // 16 * 256 = 0x1000 for (i = 0; i < 160; i++) { @@ -424,7 +441,7 @@ bool8 Phase2_Transition3_Func3(struct Task* task) task->data[2]++; task->data[3] = 2; } - TRANSITION_STRUCT.field_10 = (task->data[1] << 8) | task->data[2]; + TRANSITION_STRUCT.BLDALPHA = (task->data[1] << 8) | task->data[2]; if (task->data[2] > 15) task->tState++; task->data[4] += 8; @@ -444,7 +461,7 @@ bool8 Phase2_Transition3_Func4(struct Task* task) task->data[1]--; task->data[3] = 2; } - TRANSITION_STRUCT.field_10 = (task->data[1] << 8) | task->data[2]; + TRANSITION_STRUCT.BLDALPHA = (task->data[1] << 8) | task->data[2]; if (task->data[1] == 0) task->tState++; task->data[4] += 8; @@ -510,11 +527,11 @@ static void Transition3_Vblank(void) VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.field_0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); - REG_WININ = TRANSITION_STRUCT.field_2; - REG_WINOUT = TRANSITION_STRUCT.field_4; - REG_WIN0V = TRANSITION_STRUCT.field_8; - REG_BLDCNT = TRANSITION_STRUCT.field_E; - REG_BLDALPHA = TRANSITION_STRUCT.field_10; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_BLDALPHA = TRANSITION_STRUCT.BLDALPHA; } static void VBlankCB0_Phase2_Transition3(void) @@ -601,7 +618,12 @@ bool8 FldEff_Pokeball(void) return 0; } -#ifdef NONMATCHING +#define SOME_VRAM_STORE(ptr, posY, posX, toStore) \ +{ \ + u32 index = (posY) * 32 + posX; \ + ptr[index] = toStore; \ +} + void sub_811B720(struct Sprite* sprite) { s16 arr0[2]; @@ -611,135 +633,31 @@ void sub_811B720(struct Sprite* sprite) sprite->data1--; else { - if (sprite->pos1.x < 240) + if (sprite->pos1.x >= 0 && sprite->pos1.x <= 240) { - s32 posY = sprite->pos1.y >> 3; - s32 posX = sprite->pos1.x >> 3; - if ((posX >> 3) != sprite->data2) + s16 posX = sprite->pos1.x >> 3; + s16 posY = sprite->pos1.y >> 3; + + if (posX != sprite->data2) { u32 var; + u16 *ptr; - sprite->data2 = (posX); - var = (((REG_BG0CNT >> 8) & 0x1F) << 10); + sprite->data2 = posX; + var = (((REG_BG0CNT >> 8) & 0x1F) << 11); // r2 + ptr = (u16 *)(VRAM + var); - vram[MULTI_DIM_ARR(posY - 2, 32, posX)] = 0xF001; - vram[MULTI_DIM_ARR(posY - 1, 32, posX)] = 0xF001; - vram[MULTI_DIM_ARR(posY - 0, 32, posX)] = 0xF001; - vram[MULTI_DIM_ARR(posY + 0, 32, posX)] = 0xF001; + SOME_VRAM_STORE(ptr, posY - 2, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY - 1, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY - 0, posX, 0xF001); + SOME_VRAM_STORE(ptr, posY + 1, posX, 0xF001); } } sprite->pos1.x += arr0[sprite->data0]; - if (sprite->pos1.x + 15 > 270) + if (sprite->pos1.x < -15 || sprite->pos1.x > 255) FieldEffectStop(sprite, FLDEFF_POKEBALL); } } -#else -__attribute__((naked)) -void sub_811B720(struct Sprite* sprite) -{ - asm(".syntax unified\n\ - push {r4-r6,lr}\n\ - sub sp, 0x4\n\ - adds r4, r0, 0\n\ - ldr r1, _0811B740 @ =gUnknown_083FD7F2\n\ - mov r0, sp\n\ - movs r2, 0x4\n\ - bl memcpy\n\ - ldrh r1, [r4, 0x30]\n\ - movs r2, 0x30\n\ - ldrsh r0, [r4, r2]\n\ - cmp r0, 0\n\ - beq _0811B744\n\ - subs r0, r1, 0x1\n\ - strh r0, [r4, 0x30]\n\ - b _0811B7D6\n\ - .align 2, 0\n\ -_0811B740: .4byte gUnknown_083FD7F2\n\ -_0811B744:\n\ - ldrh r0, [r4, 0x20]\n\ - lsls r1, r0, 16\n\ - lsrs r0, r1, 16\n\ - cmp r0, 0xF0\n\ - bhi _0811B7B2\n\ - asrs r0, r1, 19\n\ - lsls r0, 16\n\ - ldrh r1, [r4, 0x22]\n\ - lsls r1, 16\n\ - asrs r1, 19\n\ - lsls r1, 16\n\ - lsrs r1, 16\n\ - lsrs r2, r0, 16\n\ - asrs r5, r0, 16\n\ - movs r3, 0x32\n\ - ldrsh r0, [r4, r3]\n\ - cmp r5, r0\n\ - beq _0811B7B2\n\ - strh r2, [r4, 0x32]\n\ - ldr r0, _0811B7E0 @ =REG_BG0CNT\n\ - ldrh r2, [r0]\n\ - lsrs r2, 8\n\ - movs r0, 0x1F\n\ - ands r2, r0\n\ - lsls r2, 11\n\ - movs r0, 0xC0\n\ - lsls r0, 19\n\ - adds r2, r0\n\ - lsls r1, 16\n\ - asrs r1, 16\n\ - subs r0, r1, 0x2\n\ - lsls r0, 5\n\ - adds r0, r5\n\ - lsls r0, 1\n\ - adds r0, r2\n\ - ldr r6, _0811B7E4 @ =0x0000f001\n\ - adds r3, r6, 0\n\ - strh r3, [r0]\n\ - subs r0, r1, 0x1\n\ - lsls r0, 5\n\ - adds r0, r5\n\ - lsls r0, 1\n\ - adds r0, r2\n\ - strh r3, [r0]\n\ - lsls r0, r1, 5\n\ - adds r0, r5\n\ - lsls r0, 1\n\ - adds r0, r2\n\ - strh r3, [r0]\n\ - adds r1, 0x1\n\ - lsls r1, 5\n\ - adds r1, r5\n\ - lsls r1, 1\n\ - adds r1, r2\n\ - strh r3, [r1]\n\ -_0811B7B2:\n\ - movs r1, 0x2E\n\ - ldrsh r0, [r4, r1]\n\ - lsls r0, 1\n\ - add r0, sp\n\ - ldrh r0, [r0]\n\ - ldrh r2, [r4, 0x20]\n\ - adds r0, r2\n\ - strh r0, [r4, 0x20]\n\ - adds r0, 0xF\n\ - lsls r0, 16\n\ - movs r1, 0x87\n\ - lsls r1, 17\n\ - cmp r0, r1\n\ - bls _0811B7D6\n\ - adds r0, r4, 0\n\ - movs r1, 0x2D\n\ - bl FieldEffectStop\n\ -_0811B7D6:\n\ - add sp, 0x4\n\ - pop {r4-r6}\n\ - pop {r0}\n\ - bx r0\n\ - .align 2, 0\n\ -_0811B7E0: .4byte 0x04000008\n\ -_0811B7E4: .4byte 0x0000f001\n\ - .syntax divided"); -} -#endif // NONMATCHING void Phase2Task_Transition5(u8 taskID) { @@ -753,10 +671,10 @@ bool8 Phase2_Transition5_Func1(struct Task* task) sub_811D658(); dp12_8087EA4(); - TRANSITION_STRUCT.field_2 = 0; - TRANSITION_STRUCT.field_4 = 63; + TRANSITION_STRUCT.WININ = 0; + TRANSITION_STRUCT.WINOUT = 63; TRANSITION_STRUCT.field_6 = -3855; - TRANSITION_STRUCT.field_8 = 160; + TRANSITION_STRUCT.WIN0V = 160; for (i = 0; i < 160; i++) { @@ -927,9 +845,9 @@ static void VBlankCB_Phase2_Transition5(void) VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.field_0 != 0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); - REG_WININ = TRANSITION_STRUCT.field_2; - REG_WINOUT = TRANSITION_STRUCT.field_4; - REG_WIN0V = TRANSITION_STRUCT.field_8; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; REG_WIN0H = gUnknown_03004DE0[1][0]; DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); } @@ -964,7 +882,8 @@ bool8 Phase2_Transition6_Func1(struct Task* task) bool8 Phase2_Transition6_Func2(struct Task* task) { u8 i; - u16 r3, r4, r8; + s16 r3; + u16 r4, r8; TRANSITION_STRUCT.field_0 = 0; @@ -977,8 +896,11 @@ bool8 Phase2_Transition6_Func2(struct Task* task) for (i = 0; i < 160; i++, r4 += r8) { - s16 sinResult = Sin(r4 >> 8, r3); - gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + sinResult; + // todo: fix the asm + s16 var = r4 >> 8; + asm(""); + gUnknown_03004DE0[0][i] = TRANSITION_STRUCT.field_16 + Sin(var, r3); + asm(""); } if (++task->data[3] == 81) @@ -993,3 +915,406 @@ bool8 Phase2_Transition6_Func2(struct Task* task) TRANSITION_STRUCT.field_0++; return 0; } + +static void VBlankCB_Phase2_Transition6(void) +{ + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); +} + +static void HBlankCB_Phase2_Transition6(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1VOFS = var; + REG_BG2VOFS = var; + REG_BG3VOFS = var; +} + +void Phase2Task_Transition7(u8 taskID) +{ + while (sPhase2_Transition7_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition7_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.field_6 = 240; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 242; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition7); + + task->tState++; + return 1; +} + +bool8 Phase2_Transition7_Func2(struct Task* task) +{ + u8 i, r5; + u16* toStore; + bool8 nextFunc; + + TRANSITION_STRUCT.field_0 = 0; + toStore = gUnknown_03004DE0[0]; + r5 = task->data[2]; + task->data[2] += 16; + task->data[1] += 8; + + for (i = 0, nextFunc = TRUE; i < 160; i++, r5 += 4, toStore++) + { + s16 value = task->data[1] + Sin(r5, 40); + if (value < 0) + value = 0; + if (value > 240) + value = 240; + *toStore = (value << 8) | (0xF1); + if (value < 240) + nextFunc = FALSE; + } + if (nextFunc) + task->tState++; + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Transition7_Func3(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition7)); + return 0; +} + +static void VBlankCB_Phase2_Transition7(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0 != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} + +#define tMugshotID data[15] + +void Phase2Task_Transition_Sydney(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_SYDNEY; + Phase2Task_MugShotTransition(taskID); +} + +void Phase2Task_Transition_Phoebe(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_PHOEBE; + Phase2Task_MugShotTransition(taskID); +} + +void Phase2Task_Transition_Glacia(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_GLACIA; + Phase2Task_MugShotTransition(taskID); +} + +void Phase2Task_Transition_Drake(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_DRAKE; + Phase2Task_MugShotTransition(taskID); +} + +void Phase2Task_Transition_Steven(u8 taskID) +{ + gTasks[taskID].tMugshotID = MUGSHOT_STEVEN; + Phase2Task_MugShotTransition(taskID); +} + +static void Phase2Task_MugShotTransition(u8 taskID) +{ + while (sPhase2_Mugshot_Transition_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Mugshot_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + sub_811C7B0(task); + + task->data[1] = 0; + task->data[2] = 1; + task->data[3] = 239; + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 62; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 0xF0F1; + } + + SetVBlankCallback(VBlankCB0_Phase2_Mugshots); + + task->tState++; + return 0; +} + +extern const u8 gUnknown_083FC348[]; +extern const u16 gUnknown_083FDFF4[]; +extern const u8 * const sOpponentMugshotsPals[]; +extern const u8 * const sPlayerMugshotsPals[2]; + +bool8 Phase2_Mugshot_Func2(struct Task* task) +{ + s16 i, j; + u16 *dst1, *dst2; + const u16* var; + + var = gUnknown_083FDFF4; + sub_811D6A8(&dst1, &dst2); + CpuSet(gUnknown_083FC348, dst2, 0xF0); + LoadPalette(sOpponentMugshotsPals[task->tMugshotID], 0xF0, 0x20); + LoadPalette(sPlayerMugshotsPals[gSaveBlock2.playerGender], 0xFA, 0xC); + + for (i = 0; i < 20; i++) + { + for (j = 0; j < 32; j++, var++) + { + dst1[i * 32 + j] = *var | 0xF000; + } + } + + REG_IE |= 2; + REG_DISPSTAT |= 0x10; + SetHBlankCallback(HBlankCB_Phase2_Mugshots); + task->tState++; + return 0; +} + +bool8 Phase2_Mugshot_Func3(struct Task* task) +{ + u8 i, r5; + u16* toStore; + s16 value; + s32 mergedValue; + + TRANSITION_STRUCT.field_0 = 0; + + toStore = gUnknown_03004DE0[0]; + r5 = task->data[1]; + task->data[1] += 0x10; + + for (i = 0; i < 80; i++, toStore++, r5 += 0x10) + { + value = task->data[2] + Sin(r5, 0x10); + if (value < 0) + value = 1; + if (value > 0xF0) + value = 0xF0; + *toStore = value; + } + for (; i < 160; i++, toStore++, r5 += 0x10) + { + value = task->data[3] - Sin(r5, 0x10); + if (value < 0) + value = 0; + if (value > 0xEF) + value = 0xEF; + *toStore = (value << 8) | (0xF0); + } + + task->data[2] += 8; + task->data[3] -= 8; + if (task->data[2] > 0xF0) + task->data[2] = 0xF0; + if (task->data[3] < 0) + task->data[3] = 0; + mergedValue = *(s32*)(&task->data[2]); + if (mergedValue == 0xF0) + task->tState++; + + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Mugshot_Func4(struct Task* task) +{ + u8 i; + u16* toStore; + + TRANSITION_STRUCT.field_0 = 0; + + for (i = 0, toStore = gUnknown_03004DE0[0]; i < 160; i++, toStore++) + { + *toStore = 0xF0; + } + + task->tState++; + task->data[1] = 0; + task->data[2] = 0; + task->data[3] = 0; + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + + sub_811CA10(task->data[13], 0); + sub_811CA10(task->data[14], 1); + sub_811CA28(task->data[13]); + + PlaySE(SE_BT_START); + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Mugshot_Func5(struct Task* task) +{ + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + if (sub_811CA44(task->data[13])) + { + task->tState++; + sub_811CA28(task->data[14]); + } + return 0; +} + +bool8 Phase2_Mugshot_Func6(struct Task* task) +{ + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + if (sub_811CA44(task->data[14])) + { + TRANSITION_STRUCT.field_0 = 0; + SetVBlankCallback(NULL); + DmaStop(0); + memset(gUnknown_03004DE0[0], 0, 0x140); + memset(gUnknown_03004DE0[1], 0, 0x140); + REG_WIN0H = 0xF0; + REG_BLDY = 0; + task->tState++; + task->data[3] = 0; + task->data[4] = 0; + TRANSITION_STRUCT.BLDCNT = 0xBF; + SetVBlankCallback(VBlankCB1_Phase2_Mugshots); + } + return 0; +} + +bool8 Phase2_Mugshot_Func7(struct Task* task) +{ + bool32 r6; + + TRANSITION_STRUCT.field_0 = 0; + r6 = TRUE; + TRANSITION_STRUCT.field_18 -= 8; + TRANSITION_STRUCT.field_1A += 8; + + if (task->data[4] < 0x50) + task->data[4] += 2; + if (task->data[4] > 0x50) + task->data[4] = 0x50; + + if (++task->data[3] & 1) + { + s16 i; + for (i = 0, r6 = FALSE; i <= task->data[4]; i++) + { + s16 index1 = 0x50 - i; + s16 index2 = 0x50 + i; + if (gUnknown_03004DE0[0][index1] <= 15) + { + r6 = TRUE; + gUnknown_03004DE0[0][index1]++; + } + if (gUnknown_03004DE0[0][index2] <= 15) + { + r6 = TRUE; + gUnknown_03004DE0[0][index2]++; + } + } + } + + if (task->data[4] == 0x50 && !r6) + task->tState++; + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Mugshot_Func8(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + BlendPalettes(-1, 0x10, 0x7FFF); + TRANSITION_STRUCT.BLDCNT = 0xFF; + task->data[3] = 0; + + task->tState++; + return 1; +} + +bool8 Phase2_Mugshot_Func9(struct Task* task) +{ + TRANSITION_STRUCT.field_0 = 0; + + task->data[3]++; + memset(gUnknown_03004DE0[0], task->data[3], 0x140); + if (task->data[3] > 15) + task->tState++; + + TRANSITION_STRUCT.field_0++; + return 0; +} + +bool8 Phase2_Mugshot_Func10(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(task->func)); + return 0; +} + +static void VBlankCB0_Phase2_Mugshots(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0 != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_BG0VOFS = TRANSITION_STRUCT.field_1C; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} + +static void VBlankCB1_Phase2_Mugshots(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.field_0 != 0) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + DmaSet(0, gUnknown_03004DE0[1], ®_BLDY, 0xA2400001); +} + +static void HBlankCB_Phase2_Mugshots(void) +{ + if (REG_VCOUNT < 80) + REG_BG0HOFS = TRANSITION_STRUCT.field_18; + else + REG_BG0HOFS = TRANSITION_STRUCT.field_1A; +} -- cgit v1.2.3 From 169714a6d4f2fcaef2f55baf6954620f8b9655e7 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 20 Aug 2017 21:32:41 +0200 Subject: mugshots done, moved some data to C --- src/battle_transition.c | 283 ++++++++++++++++++++++++++++++++++++++---------- src/field_effect.c | 10 +- src/main_menu.c | 4 +- 3 files changed, 230 insertions(+), 67 deletions(-) (limited to 'src') diff --git a/src/battle_transition.c b/src/battle_transition.c index 5cb9de1bb..8d87f12f6 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -14,25 +14,8 @@ void sub_807DE10(void); void dp12_8087EA4(void); -typedef bool8 (*TransitionState)(struct Task* task); - -extern const TransitionState sMainTransitionPhases[]; -extern const TransitionState sPhase2_Transition0_Funcs[]; -extern const TransitionState sPhase2_Transition1_Funcs[]; -extern const TransitionState sPhase2_Transition2_Funcs[]; -extern const TransitionState sPhase2_Transition3_Funcs[]; -extern const TransitionState sPhase2_Transition4_Funcs[]; -extern const TransitionState sPhase2_Transition5_Funcs[]; -extern const TransitionState sPhase2_Transition6_Funcs[]; -extern const TransitionState sPhase2_Transition7_Funcs[]; -extern const TransitionState sPhase2_Mugshot_Transition_Funcs[]; - -extern const TaskFunc sPhase1_Tasks[]; -extern const TaskFunc sPhase2_Tasks[]; - extern u8 ewram[]; extern s16 gUnknown_03005560[]; - extern u16 gUnknown_03004DE0[][0x3C0]; struct TransitionData @@ -73,6 +56,25 @@ void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); bool8 sub_811D52C(void); void sub_811D658(void); +static void Phase1Task_TransitionAll(u8 taskID); +static void Phase2Task_Transition0(u8 taskID); +static void Phase2Task_Transition1(u8 taskID); +static void Phase2Task_Transition2(u8 taskID); +static void Phase2Task_Transition3(u8 taskID); +static void Phase2Task_Transition4(u8 taskID); +static void Phase2Task_Transition5(u8 taskID); +static void Phase2Task_Transition6(u8 taskID); +static void Phase2Task_Transition7(u8 taskID); + void Phase2Task_Transition8(u8 taskID); + void Phase2Task_Transition9(u8 taskID); + void Phase2Task_Transition10(u8 taskID); + void Phase2Task_Transition11(u8 taskID); +static void Phase2Task_Transition_Sydney(u8 taskID); +static void Phase2Task_Transition_Phoebe(u8 taskID); +static void Phase2Task_Transition_Glacia(u8 taskID); +static void Phase2Task_Transition_Drake(u8 taskID); +static void Phase2Task_Transition_Steven(u8 taskID); + static void VBlankCB_Phase2_Transition1(void); static void HBlankCB_Phase2_Transition1(void); @@ -101,11 +103,77 @@ 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); static void Phase2Task_MugShotTransition(u8 taskID); -void sub_811C7B0(struct Task* task); +static void Mugshots_CreateOpponentPlayerSprites(struct Task* task); +static void sub_811CA10(s16 spriteID, s16 value); +static void sub_811CA28(s16 spriteID); +static s16 sub_811CA44(s16 spriteID); -void sub_811CA10(s16 spriteID, s16 value); -void sub_811CA28(s16 spriteID); -s16 sub_811CA44(s16 spriteID); +// const data +typedef bool8 (*TransitionState)(struct Task* task); +typedef bool8 (*TransitionSpriteCallback)(struct Sprite* sprite); + +extern const TransitionState sMainTransitionPhases[]; +extern const TransitionState sPhase2_Transition0_Funcs[]; +extern const TransitionState sPhase2_Transition1_Funcs[]; +extern const TransitionState sPhase2_Transition2_Funcs[]; +extern const TransitionState sPhase2_Transition3_Funcs[]; +extern const TransitionState sPhase2_Transition4_Funcs[]; +extern const TransitionState sPhase2_Transition5_Funcs[]; +extern const TransitionState sPhase2_Transition6_Funcs[]; +extern const TransitionState sPhase2_Transition7_Funcs[]; +extern const TransitionState sPhase2_Mugshot_Transition_Funcs[]; +extern const u16 gFieldEffectObjectPalette10[]; +extern const u16 gUnknown_083FDB44[]; +extern const s16 gUnknown_083FD7E4[2]; +extern const s16 gUnknown_083FD7F2[2]; +extern const s16 gUnknown_083FD7E8[5]; +extern const struct SpriteTemplate gSpriteTemplate_83FD98C; +extern const u16 gUnknown_083FDFF4[]; +extern const u8 * const sOpponentMugshotsPals[]; +extern const u8 * const sPlayerMugshotsPals[2]; +extern const u8 sMugshotsTrainerPicIDsTable[]; +extern const s16 sMugshotsOpponentCoords[][2]; +extern const s16 sMugshotsOpponentRotationScales[][2]; +extern const TransitionSpriteCallback gUnknown_083FD880[]; +extern const s16 gUnknown_083FD89C[2]; +extern const s16 gUnknown_083FD8A0[2]; + +static const u32 gUnknown_083FBB88[] = INCBIN_U32("graphics/battle_transitions/big_pokeball.4bpp"); +static const u32 gUnknown_083FC108[] = INCBIN_U32("graphics/battle_transitions/pokeball_trail.4bpp"); +const u32 gSpriteImage_83FC148[] = INCBIN_U32("graphics/battle_transitions/pokeball.4bpp"); +static const u32 gUnknown_083FC348[] = INCBIN_U32("graphics/battle_transitions/elite_four_bg.4bpp"); +const u32 gSpriteImage_83FC528[] = INCBIN_U32("graphics/battle_transitions/unused_brendan.4bpp"); +const u32 gSpriteImage_83FCD28[] = INCBIN_U32("graphics/battle_transitions/unused_lass.4bpp"); +const u32 gUnknown_083FD528[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp"); +struct TransitionData * const sTransitionStructPtr = &TRANSITION_STRUCT; + +static const TaskFunc sPhase1_Tasks[TRANSITIONS_NO] = +{ + [0 ... TRANSITIONS_NO - 1] = &Phase1Task_TransitionAll +}; + +static const TaskFunc sPhase2_Tasks[TRANSITIONS_NO] = +{ + &Phase2Task_Transition0, // 0 + &Phase2Task_Transition1, // 1 + &Phase2Task_Transition2, // 2 + &Phase2Task_Transition3, // 3 + &Phase2Task_Transition4, // 4 + &Phase2Task_Transition5, // 5 + &Phase2Task_Transition6, // 6 + &Phase2Task_Transition7, // 7 + &Phase2Task_Transition8, // 8 + &Phase2Task_Transition9, // 9 + &Phase2Task_Transition10, // 10 + &Phase2Task_Transition11, // 11 + &Phase2Task_Transition_Sydney, // 12 + &Phase2Task_Transition_Phoebe, // 13 + &Phase2Task_Transition_Glacia, // 14 + &Phase2Task_Transition_Drake, // 15 + &Phase2Task_Transition_Steven, // 16 +}; + +void sub_811C90C(struct Sprite* sprite); void sub_811AABC(u8 transitionID) { @@ -188,7 +256,7 @@ bool8 Transition_WaitForPhase2(struct Task* task) return 0; } -void Phase1Task_TransitionAll(u8 taskID) +static void Phase1Task_TransitionAll(u8 taskID) { if (gTasks[taskID].tState == 0) { @@ -199,7 +267,7 @@ void Phase1Task_TransitionAll(u8 taskID) DestroyTask(taskID); } -void Phase2Task_Transition0(u8 taskID) +static void Phase2Task_Transition0(u8 taskID) { while (sPhase2_Transition0_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } @@ -240,7 +308,7 @@ bool8 Phase2_Transition0_Func3(struct Task* task) return 0; } -void Phase2Task_Transition1(u8 taskID) +static void Phase2Task_Transition1(u8 taskID) { while (sPhase2_Transition1_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } @@ -300,7 +368,7 @@ static void HBlankCB_Phase2_Transition1(void) REG_BG3HOFS = var; } -void Phase2Task_Transition2(u8 taskID) +static void Phase2Task_Transition2(u8 taskID) { while (sPhase2_Transition2_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } @@ -367,14 +435,11 @@ static void HBlankCB_Phase2_Transition2(void) REG_BG3VOFS = var; } -void Phase2Task_Transition3(u8 taskID) +static void Phase2Task_Transition3(u8 taskID) { while (sPhase2_Transition3_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -extern const u8 gUnknown_083FBB88[]; -extern const u16 gFieldEffectObjectPalette10[]; - bool8 Phase2_Transition3_Func1(struct Task* task) { u16 i; @@ -410,8 +475,6 @@ bool8 Phase2_Transition3_Func1(struct Task* task) return 0; } -extern const u16 gUnknown_083FDB44[]; - bool8 Phase2_Transition3_Func2(struct Task* task) { s16 i, j; @@ -546,13 +609,11 @@ void VBlankCB1_Phase2_Transition3(void) DmaSet(0, gUnknown_03005560, ®_WIN0H, 0xA2400001); } -void Phase2Task_Transition4(u8 taskID) +static void Phase2Task_Transition4(u8 taskID) { while (sPhase2_Transition4_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -extern const u8 gUnknown_083FC108[]; - bool8 Phase2_Transition4_Func1(struct Task* task) { u16 *dst1, *dst2; @@ -566,10 +627,6 @@ bool8 Phase2_Transition4_Func1(struct Task* task) return 0; } -extern const s16 gUnknown_083FD7E4[2]; -extern const s16 gUnknown_083FD7F2[2]; -extern const s16 gUnknown_083FD7E8[5]; - bool8 Phase2_Transition4_Func2(struct Task* task) { s16 i; @@ -603,8 +660,6 @@ bool8 Phase2_Transition4_Func3(struct Task* task) return 0; } -extern const struct SpriteTemplate gSpriteTemplate_83FD98C; - bool8 FldEff_Pokeball(void) { u8 spriteID = CreateSpriteAtEnd(&gSpriteTemplate_83FD98C, gUnknown_0202FF84[0], gUnknown_0202FF84[1], 0); @@ -659,7 +714,7 @@ void sub_811B720(struct Sprite* sprite) } } -void Phase2Task_Transition5(u8 taskID) +static void Phase2Task_Transition5(u8 taskID) { while (sPhase2_Transition5_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } @@ -931,7 +986,7 @@ static void HBlankCB_Phase2_Transition6(void) REG_BG3VOFS = var; } -void Phase2Task_Transition7(u8 taskID) +static void Phase2Task_Transition7(u8 taskID) { while (sPhase2_Transition7_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } @@ -1009,33 +1064,35 @@ static void VBlankCB_Phase2_Transition7(void) DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); } -#define tMugshotID data[15] +#define tMugshotOpponentID data[13] +#define tMugshotPlayerID data[14] +#define tMugshotID data[15] -void Phase2Task_Transition_Sydney(u8 taskID) +static void Phase2Task_Transition_Sydney(u8 taskID) { gTasks[taskID].tMugshotID = MUGSHOT_SYDNEY; Phase2Task_MugShotTransition(taskID); } -void Phase2Task_Transition_Phoebe(u8 taskID) +static void Phase2Task_Transition_Phoebe(u8 taskID) { gTasks[taskID].tMugshotID = MUGSHOT_PHOEBE; Phase2Task_MugShotTransition(taskID); } -void Phase2Task_Transition_Glacia(u8 taskID) +static void Phase2Task_Transition_Glacia(u8 taskID) { gTasks[taskID].tMugshotID = MUGSHOT_GLACIA; Phase2Task_MugShotTransition(taskID); } -void Phase2Task_Transition_Drake(u8 taskID) +static void Phase2Task_Transition_Drake(u8 taskID) { gTasks[taskID].tMugshotID = MUGSHOT_DRAKE; Phase2Task_MugShotTransition(taskID); } -void Phase2Task_Transition_Steven(u8 taskID) +static void Phase2Task_Transition_Steven(u8 taskID) { gTasks[taskID].tMugshotID = MUGSHOT_STEVEN; Phase2Task_MugShotTransition(taskID); @@ -1052,7 +1109,7 @@ bool8 Phase2_Mugshot_Func1(struct Task* task) sub_811D658(); dp12_8087EA4(); - sub_811C7B0(task); + Mugshots_CreateOpponentPlayerSprites(task); task->data[1] = 0; task->data[2] = 1; @@ -1072,11 +1129,6 @@ bool8 Phase2_Mugshot_Func1(struct Task* task) return 0; } -extern const u8 gUnknown_083FC348[]; -extern const u16 gUnknown_083FDFF4[]; -extern const u8 * const sOpponentMugshotsPals[]; -extern const u8 * const sPlayerMugshotsPals[2]; - bool8 Phase2_Mugshot_Func2(struct Task* task) { s16 i, j; @@ -1171,9 +1223,9 @@ bool8 Phase2_Mugshot_Func4(struct Task* task) TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; - sub_811CA10(task->data[13], 0); - sub_811CA10(task->data[14], 1); - sub_811CA28(task->data[13]); + sub_811CA10(task->tMugshotOpponentID, 0); + sub_811CA10(task->tMugshotPlayerID, 1); + sub_811CA28(task->tMugshotOpponentID); PlaySE(SE_BT_START); @@ -1185,10 +1237,10 @@ bool8 Phase2_Mugshot_Func5(struct Task* task) { TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; - if (sub_811CA44(task->data[13])) + if (sub_811CA44(task->tMugshotOpponentID)) { task->tState++; - sub_811CA28(task->data[14]); + sub_811CA28(task->tMugshotPlayerID); } return 0; } @@ -1197,7 +1249,7 @@ bool8 Phase2_Mugshot_Func6(struct Task* task) { TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; - if (sub_811CA44(task->data[14])) + if (sub_811CA44(task->tMugshotPlayerID)) { TRANSITION_STRUCT.field_0 = 0; SetVBlankCallback(NULL); @@ -1318,3 +1370,114 @@ static void HBlankCB_Phase2_Mugshots(void) else REG_BG0HOFS = TRANSITION_STRUCT.field_1A; } + +static void Mugshots_CreateOpponentPlayerSprites(struct Task* task) +{ + struct Sprite *opponentSprite, *playerSprite; + + s16 mugshotID = task->tMugshotID; + task->tMugshotOpponentID = CreateTrainerSprite(sMugshotsTrainerPicIDsTable[mugshotID], + sMugshotsOpponentCoords[mugshotID][0] - 32, + sMugshotsOpponentCoords[mugshotID][1] + 42, + 0, &ewram[0xC03C]); + task->tMugshotPlayerID = CreateTrainerSprite(gSaveBlock2.playerGender, 272, 106, 0, &ewram[0xC03C]); + + opponentSprite = &gSprites[task->tMugshotOpponentID]; + playerSprite = &gSprites[task->tMugshotPlayerID]; + + opponentSprite->callback = sub_811C90C; + playerSprite->callback = sub_811C90C; + + opponentSprite->oam.affineMode = 3; + playerSprite->oam.affineMode = 3; + + opponentSprite->oam.matrixNum = AllocOamMatrix(); + playerSprite->oam.matrixNum = AllocOamMatrix(); + + opponentSprite->oam.shape = 1; + playerSprite->oam.shape = 1; + + opponentSprite->oam.size = 3; + playerSprite->oam.size = 3; + + CalcCenterToCornerVec(opponentSprite, 1, 3, 3); + CalcCenterToCornerVec(playerSprite, 1, 3, 3); + + SetOamMatrixRotationScaling(opponentSprite->oam.matrixNum, sMugshotsOpponentRotationScales[mugshotID][0], sMugshotsOpponentRotationScales[mugshotID][1], 0); + SetOamMatrixRotationScaling(playerSprite->oam.matrixNum, -512, 0x200, 0); +} + +void sub_811C90C(struct Sprite* sprite) +{ + while (gUnknown_083FD880[sprite->data0](sprite)); +} + +bool8 sub_811C934(struct Sprite* sprite) +{ + return 0; +} + +bool8 sub_811C938(struct Sprite* sprite) +{ + s16 arr0[2]; + s16 arr1[2]; + + memcpy(arr0, gUnknown_083FD89C, sizeof(gUnknown_083FD89C)); + memcpy(arr1, gUnknown_083FD8A0, sizeof(gUnknown_083FD8A0)); + + sprite->data0++; + sprite->data1 = arr0[sprite->data7]; + sprite->data2 = arr1[sprite->data7]; + return 1; +} + +bool8 sub_811C984(struct Sprite* sprite) +{ + sprite->pos1.x += sprite->data1; + if (sprite->data7 && sprite->pos1.x < 133) + sprite->data0++; + else if (!sprite->data7 && sprite->pos1.x > 103) + sprite->data0++; + return 0; +} + +bool8 sub_811C9B8(struct Sprite* sprite) +{ + sprite->data1 += sprite->data2; + sprite->pos1.x += sprite->data1; + if (sprite->data1 == 0) + { + sprite->data0++; + sprite->data2 = -sprite->data2; + sprite->data6 = 1; + } + return 0; +} + +bool8 sub_811C9E4(struct Sprite* sprite) +{ + sprite->data1 += sprite->data2; + sprite->pos1.x += sprite->data1; + if (sprite->pos1.x < -31 || sprite->pos1.x > 271) + sprite->data0++; + return 0; +} + +static void sub_811CA10(s16 spriteID, s16 value) +{ + gSprites[spriteID].data7 = value; +} + +static void sub_811CA28(s16 spriteID) +{ + gSprites[spriteID].data0++; +} + +static s16 sub_811CA44(s16 spriteID) +{ + return gSprites[spriteID].data6; +} + +#undef tMugshotOpponentID +#undef tMugshotPlayerID +#undef tMugshotID diff --git a/src/field_effect.c b/src/field_effect.c index 3632d7053..cffed2614 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -618,13 +618,13 @@ bool8 FieldEffectActiveListContains(u8 id) return FALSE; } -u8 CreateTrainerSprite_BirchSpeech(u8 gender, s16 x, s16 y, u8 subpriority, u8 *buffer) +u8 CreateTrainerSprite(u8 trainerSpriteID, s16 x, s16 y, u8 subpriority, u8 *buffer) { struct SpriteTemplate spriteTemplate; - LoadCompressedObjectPaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[gender], buffer); - LoadCompressedObjectPicOverrideBuffer(&gTrainerFrontPicTable[gender], buffer); - spriteTemplate.tileTag = gTrainerFrontPicTable[gender].tag; - spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[gender].tag; + LoadCompressedObjectPaletteOverrideBuffer(&gTrainerFrontPicPaletteTable[trainerSpriteID], buffer); + LoadCompressedObjectPicOverrideBuffer(&gTrainerFrontPicTable[trainerSpriteID], buffer); + spriteTemplate.tileTag = gTrainerFrontPicTable[trainerSpriteID].tag; + spriteTemplate.paletteTag = gTrainerFrontPicPaletteTable[trainerSpriteID].tag; spriteTemplate.oam = &gOamData_839F0F4; spriteTemplate.anims = gDummySpriteAnimTable; spriteTemplate.images = NULL; diff --git a/src/main_menu.c b/src/main_menu.c index 09fd06d9e..3b616065b 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -1421,14 +1421,14 @@ void AddBirchSpeechObjects(u8 taskId) gTasks[taskId].data[TD_AZURILL_SPRITE_ID] = spriteId; //Create Brendan sprite - spriteId = CreateTrainerSprite_BirchSpeech(0, 120, 60, 0, unk_2000000); + spriteId = CreateTrainerSprite(0, 120, 60, 0, unk_2000000); gSprites[spriteId].callback = nullsub_34; gSprites[spriteId].invisible = 1; gSprites[spriteId].oam.priority = 0; gTasks[taskId].data[TD_BRENDAN_SPRITE_ID] = spriteId; //Create May sprite - spriteId = CreateTrainerSprite_BirchSpeech(1, 120, 60, 0, unk_2000000 + 0x800); + spriteId = CreateTrainerSprite(1, 120, 60, 0, unk_2000000 + 0x800); gSprites[spriteId].callback = nullsub_34; gSprites[spriteId].invisible = 1; gSprites[spriteId].oam.priority = 0; -- cgit v1.2.3 From a5b770a5112914468158842885b0b37f5425c887 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Sun, 20 Aug 2017 23:12:00 +0200 Subject: some more functions --- src/battle_transition.c | 52 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 47 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/battle_transition.c b/src/battle_transition.c index 8d87f12f6..9ef012bb2 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -74,6 +74,10 @@ static void Phase2Task_Transition_Phoebe(u8 taskID); static void Phase2Task_Transition_Glacia(u8 taskID); static void Phase2Task_Transition_Drake(u8 taskID); static void Phase2Task_Transition_Steven(u8 taskID); +static bool8 Transition_Phase1(struct Task* task); +static bool8 Transition_WaitForPhase1(struct Task* task); +static bool8 Transition_Phase2(struct Task* task); +static bool8 Transition_WaitForPhase2(struct Task* task); static void VBlankCB_Phase2_Transition1(void); static void HBlankCB_Phase2_Transition1(void); @@ -112,7 +116,6 @@ static s16 sub_811CA44(s16 spriteID); typedef bool8 (*TransitionState)(struct Task* task); typedef bool8 (*TransitionSpriteCallback)(struct Sprite* sprite); -extern const TransitionState sMainTransitionPhases[]; extern const TransitionState sPhase2_Transition0_Funcs[]; extern const TransitionState sPhase2_Transition1_Funcs[]; extern const TransitionState sPhase2_Transition2_Funcs[]; @@ -121,6 +124,7 @@ extern const TransitionState sPhase2_Transition4_Funcs[]; extern const TransitionState sPhase2_Transition5_Funcs[]; extern const TransitionState sPhase2_Transition6_Funcs[]; extern const TransitionState sPhase2_Transition7_Funcs[]; +extern const TransitionState sPhase2_Transition8_Funcs[]; extern const TransitionState sPhase2_Mugshot_Transition_Funcs[]; extern const u16 gFieldEffectObjectPalette10[]; extern const u16 gUnknown_083FDB44[]; @@ -173,6 +177,14 @@ static const TaskFunc sPhase2_Tasks[TRANSITIONS_NO] = &Phase2Task_Transition_Steven, // 16 }; +static const TransitionState sMainTransitionPhases[] = +{ + &Transition_Phase1, + &Transition_WaitForPhase1, + &Transition_Phase2, + &Transition_WaitForPhase2 +}; + void sub_811C90C(struct Sprite* sprite); void sub_811AABC(u8 transitionID) @@ -213,7 +225,7 @@ static void Task_BattleTransitionMain(u8 taskID) while (sMainTransitionPhases[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Transition_Phase1(struct Task* task) +static bool8 Transition_Phase1(struct Task* task) { sub_807DE10(); CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x4000100); @@ -230,7 +242,7 @@ bool8 Transition_Phase1(struct Task* task) } } -bool8 Transition_WaitForPhase1(struct Task* task) +static bool8 Transition_WaitForPhase1(struct Task* task) { if (FindTaskIdByFunc(sPhase1_Tasks[task->tTransitionID]) == 0xFF) { @@ -241,14 +253,14 @@ bool8 Transition_WaitForPhase1(struct Task* task) return 0; } -bool8 Transition_Phase2(struct Task* task) +static bool8 Transition_Phase2(struct Task* task) { CreateTask(sPhase2_Tasks[task->tTransitionID], 0); task->tState++; return 0; } -bool8 Transition_WaitForPhase2(struct Task* task) +static bool8 Transition_WaitForPhase2(struct Task* task) { task->tTransitionDone = 0; if (FindTaskIdByFunc(sPhase2_Tasks[task->tTransitionID]) == 0xFF) @@ -1481,3 +1493,33 @@ static s16 sub_811CA44(s16 spriteID) #undef tMugshotOpponentID #undef tMugshotPlayerID #undef tMugshotID + +void Phase2Task_Transition8(u8 taskID) +{ + while (sPhase2_Transition8_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition7_Func1(struct Task* task) +{ + u8 i; + + sub_811D658(); + dp12_8087EA4(); + + task->data[2] = 256; + task->data[3] = 256; + TRANSITION_STRUCT.WININ = 63; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.WIN0V = 160; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = TRANSITION_STRUCT.field_14; + gUnknown_03004DE0[1][160 + i] = 0xF0; + } + + SetVBlankCallback(VBlankCB_Phase2_Transition7); + + task->tState++; + return 1; +} -- cgit v1.2.3 From a10592da1afeec6945e31f8321b94990c503e937 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 21 Aug 2017 21:11:42 +0200 Subject: transition main functions are done --- src/battle_transition.c | 556 +++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 485 insertions(+), 71 deletions(-) (limited to 'src') diff --git a/src/battle_transition.c b/src/battle_transition.c index 9ef012bb2..ae2e26d21 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -20,17 +20,16 @@ extern u16 gUnknown_03004DE0[][0x3C0]; struct TransitionData { - vs8 field_0; // now that's interesting - s8 field_1; - s16 WININ; - s16 WINOUT; - s16 field_6; - s16 WIN0V; - s16 field_A; - s16 field_C; - s16 BLDCNT; - s16 BLDALPHA; - s16 field_12; + vs8 VBlank_DMA; + u16 WININ; + u16 WINOUT; + u16 field_6; + u16 WIN0V; + u16 field_A; + u16 field_C; + u16 BLDCNT; + u16 BLDALPHA; + u16 field_12; s16 field_14; s16 field_16; s16 field_18; @@ -65,10 +64,10 @@ static void Phase2Task_Transition4(u8 taskID); static void Phase2Task_Transition5(u8 taskID); static void Phase2Task_Transition6(u8 taskID); static void Phase2Task_Transition7(u8 taskID); - void Phase2Task_Transition8(u8 taskID); - void Phase2Task_Transition9(u8 taskID); - void Phase2Task_Transition10(u8 taskID); - void Phase2Task_Transition11(u8 taskID); +static void Phase2Task_Transition8(u8 taskID); +static void Phase2Task_Transition9(u8 taskID); +static void Phase2Task_Transition10(u8 taskID); +static void Phase2Task_Transition11(u8 taskID); static void Phase2Task_Transition_Sydney(u8 taskID); static void Phase2Task_Transition_Phoebe(u8 taskID); static void Phase2Task_Transition_Glacia(u8 taskID); @@ -78,30 +77,30 @@ static bool8 Transition_Phase1(struct Task* task); static bool8 Transition_WaitForPhase1(struct Task* task); static bool8 Transition_Phase2(struct Task* task); static bool8 Transition_WaitForPhase2(struct Task* task); - static void VBlankCB_Phase2_Transition1(void); static void HBlankCB_Phase2_Transition1(void); - static void VBlankCB_Phase2_Transition2(void); static void HBlankCB_Phase2_Transition2(void); - static void VBlankCB0_Phase2_Transition3(void); static void VBlankCB1_Phase2_Transition3(void); - static void VBlankCB_Phase2_Transition5(void); - static void VBlankCB_Phase2_Transition6(void); static void HBlankCB_Phase2_Transition6(void); - static void VBlankCB_Phase2_Transition7(void); - +static void VBlankCB_Phase2_Transition8(void); +static void HBlankCB_Phase2_Transition8(void); +static void VBlankCB0_Phase2_Transition9(void); +static void VBlankCB1_Phase2_Transition9(void); +static void HBlankCB_Phase2_Transition9(void); static void VBlankCB0_Phase2_Mugshots(void); static void VBlankCB1_Phase2_Mugshots(void); static void HBlankCB_Phase2_Mugshots(void); +static void VBlankCB_Phase2_Transition11(void); void VBlankCB_BattleTransition(void); void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); void sub_811D6A8(u16** a0, u16** a1); +void sub_811D690(u16** a0); void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); void sub_811D6D4(void); void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); @@ -111,6 +110,7 @@ static void Mugshots_CreateOpponentPlayerSprites(struct Task* task); static void sub_811CA10(s16 spriteID, s16 value); static void sub_811CA28(s16 spriteID); static s16 sub_811CA44(s16 spriteID); +void sub_811CFD0(struct Sprite* sprite); // const data typedef bool8 (*TransitionState)(struct Task* task); @@ -125,6 +125,9 @@ extern const TransitionState sPhase2_Transition5_Funcs[]; extern const TransitionState sPhase2_Transition6_Funcs[]; extern const TransitionState sPhase2_Transition7_Funcs[]; extern const TransitionState sPhase2_Transition8_Funcs[]; +extern const TransitionState sPhase2_Transition9_Funcs[]; +extern const TransitionState sPhase2_Transition10_Funcs[]; +extern const TransitionState sPhase2_Transition11_Funcs[]; extern const TransitionState sPhase2_Mugshot_Transition_Funcs[]; extern const u16 gFieldEffectObjectPalette10[]; extern const u16 gUnknown_083FDB44[]; @@ -349,7 +352,7 @@ bool8 Phase2_Transition1_Func1(struct Task* task) bool8 Phase2_Transition1_Func2(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; task->data[1] += 4; task->data[2] += 8; @@ -361,14 +364,14 @@ bool8 Phase2_Transition1_Func2(struct Task* task) DestroyTask(taskID); } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } static void VBlankCB_Phase2_Transition1(void) { VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0) + if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); } @@ -413,7 +416,7 @@ bool8 Phase2_Transition2_Func2(struct Task* task) u8 i; u16 r3, r4; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; r4 = task->data[1]; r3 = task->data[2] >> 8; task->data[1] += 4224; @@ -428,14 +431,14 @@ bool8 Phase2_Transition2_Func2(struct Task* task) if (!gPaletteFade.active) DestroyTask(FindTaskIdByFunc(Phase2Task_Transition2)); - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } static void VBlankCB_Phase2_Transition2(void) { VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0) + if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); } @@ -510,7 +513,7 @@ bool8 Phase2_Transition3_Func2(struct Task* task) bool8 Phase2_Transition3_Func3(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[3] == 0 || --task->data[3] == 0) { task->data[2]++; @@ -524,13 +527,13 @@ bool8 Phase2_Transition3_Func3(struct Task* task) sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Transition3_Func4(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[3] == 0 || --task->data[3] == 0) { task->data[1]--; @@ -544,13 +547,13 @@ bool8 Phase2_Transition3_Func4(struct Task* task) sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Transition3_Func5(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; task->data[4] += 8; task->data[5] -= 256; @@ -564,13 +567,13 @@ bool8 Phase2_Transition3_Func5(struct Task* task) task->data[3] = 0; } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Transition3_Func6(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[2] < 1024) task->data[2] += 128; if (task->data[1] != 0) @@ -592,7 +595,7 @@ bool8 Phase2_Transition3_Func6(struct Task* task) SetVBlankCallback(VBlankCB1_Phase2_Transition3); } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -600,7 +603,7 @@ static void Transition3_Vblank(void) { DmaStop(0); VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0) + if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; @@ -757,7 +760,7 @@ bool8 Phase2_Transition5_Func1(struct Task* task) bool8 Phase2_Transition5_Func2(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, -1, 1, 1); do @@ -772,7 +775,7 @@ bool8 Phase2_Transition5_Func2(struct Task* task) task->tState++; } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -781,7 +784,7 @@ bool8 Phase2_Transition5_Func3(struct Task* task) s16 r1, r3; vu8 var = 0; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 240, TRANSITION_STRUCT.field_2E, 1, 1); @@ -810,13 +813,13 @@ bool8 Phase2_Transition5_Func3(struct Task* task) } } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Transition5_Func4(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 160, 1, 1); do @@ -831,7 +834,7 @@ bool8 Phase2_Transition5_Func4(struct Task* task) task->tState++; } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -840,7 +843,7 @@ bool8 Phase2_Transition5_Func5(struct Task* task) s16 r1, r2, r3; vu8 var = 0; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 0, TRANSITION_STRUCT.field_2E, 1, 1); @@ -870,13 +873,13 @@ bool8 Phase2_Transition5_Func5(struct Task* task) } } - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Transition5_Func6(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 0, 1, 1); do @@ -894,7 +897,7 @@ bool8 Phase2_Transition5_Func6(struct Task* task) if (TRANSITION_STRUCT.field_28 > 120) task->tState++; - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -910,7 +913,7 @@ static void VBlankCB_Phase2_Transition5(void) { DmaStop(0); VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0 != 0) + if (TRANSITION_STRUCT.VBlank_DMA != 0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; @@ -952,7 +955,7 @@ bool8 Phase2_Transition6_Func2(struct Task* task) s16 r3; u16 r4, r8; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; r3 = task->data[2] >> 8; r4 = task->data[1]; @@ -979,14 +982,14 @@ bool8 Phase2_Transition6_Func2(struct Task* task) if (task->data[4] != 0 && !gPaletteFade.active) DestroyTask(FindTaskIdByFunc(Phase2Task_Transition6)); - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } static void VBlankCB_Phase2_Transition6(void) { VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0) + if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); } @@ -1032,7 +1035,7 @@ bool8 Phase2_Transition7_Func2(struct Task* task) u16* toStore; bool8 nextFunc; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; toStore = gUnknown_03004DE0[0]; r5 = task->data[2]; task->data[2] += 16; @@ -1052,7 +1055,7 @@ bool8 Phase2_Transition7_Func2(struct Task* task) if (nextFunc) task->tState++; - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -1068,7 +1071,7 @@ static void VBlankCB_Phase2_Transition7(void) { DmaStop(0); VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0 != 0) + if (TRANSITION_STRUCT.VBlank_DMA != 0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; @@ -1175,7 +1178,7 @@ bool8 Phase2_Mugshot_Func3(struct Task* task) s16 value; s32 mergedValue; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; toStore = gUnknown_03004DE0[0]; r5 = task->data[1]; @@ -1212,7 +1215,7 @@ bool8 Phase2_Mugshot_Func3(struct Task* task) TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -1221,7 +1224,7 @@ bool8 Phase2_Mugshot_Func4(struct Task* task) u8 i; u16* toStore; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; for (i = 0, toStore = gUnknown_03004DE0[0]; i < 160; i++, toStore++) { @@ -1241,7 +1244,7 @@ bool8 Phase2_Mugshot_Func4(struct Task* task) PlaySE(SE_BT_START); - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -1263,7 +1266,7 @@ bool8 Phase2_Mugshot_Func6(struct Task* task) TRANSITION_STRUCT.field_1A += 8; if (sub_811CA44(task->tMugshotPlayerID)) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; SetVBlankCallback(NULL); DmaStop(0); memset(gUnknown_03004DE0[0], 0, 0x140); @@ -1283,7 +1286,7 @@ bool8 Phase2_Mugshot_Func7(struct Task* task) { bool32 r6; - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; r6 = TRUE; TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; @@ -1316,13 +1319,13 @@ bool8 Phase2_Mugshot_Func7(struct Task* task) if (task->data[4] == 0x50 && !r6) task->tState++; - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } bool8 Phase2_Mugshot_Func8(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; BlendPalettes(-1, 0x10, 0x7FFF); TRANSITION_STRUCT.BLDCNT = 0xFF; task->data[3] = 0; @@ -1333,14 +1336,14 @@ bool8 Phase2_Mugshot_Func8(struct Task* task) bool8 Phase2_Mugshot_Func9(struct Task* task) { - TRANSITION_STRUCT.field_0 = 0; + TRANSITION_STRUCT.VBlank_DMA = 0; task->data[3]++; memset(gUnknown_03004DE0[0], task->data[3], 0x140); if (task->data[3] > 15) task->tState++; - TRANSITION_STRUCT.field_0++; + TRANSITION_STRUCT.VBlank_DMA++; return 0; } @@ -1356,7 +1359,7 @@ static void VBlankCB0_Phase2_Mugshots(void) { DmaStop(0); VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0 != 0) + if (TRANSITION_STRUCT.VBlank_DMA != 0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); REG_BG0VOFS = TRANSITION_STRUCT.field_1C; REG_WININ = TRANSITION_STRUCT.WININ; @@ -1369,7 +1372,7 @@ static void VBlankCB1_Phase2_Mugshots(void) { DmaStop(0); VBlankCB_BattleTransition(); - if (TRANSITION_STRUCT.field_0 != 0) + if (TRANSITION_STRUCT.VBlank_DMA != 0) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; DmaSet(0, gUnknown_03004DE0[1], ®_BLDY, 0xA2400001); @@ -1494,20 +1497,20 @@ static s16 sub_811CA44(s16 spriteID) #undef tMugshotPlayerID #undef tMugshotID -void Phase2Task_Transition8(u8 taskID) +static void Phase2Task_Transition8(u8 taskID) { while (sPhase2_Transition8_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition7_Func1(struct Task* task) +bool8 Phase2_Transition8_Func1(struct Task* task) { - u8 i; + u16 i; sub_811D658(); dp12_8087EA4(); task->data[2] = 256; - task->data[3] = 256; + task->data[3] = 1; TRANSITION_STRUCT.WININ = 63; TRANSITION_STRUCT.WINOUT = 0; TRANSITION_STRUCT.WIN0V = 160; @@ -1518,8 +1521,419 @@ bool8 Phase2_Transition7_Func1(struct Task* task) gUnknown_03004DE0[1][160 + i] = 0xF0; } - SetVBlankCallback(VBlankCB_Phase2_Transition7); + REG_IE |= 2; + REG_DISPSTAT |= 0x10; + + SetVBlankCallback(VBlankCB_Phase2_Transition8); + SetHBlankCallback(HBlankCB_Phase2_Transition8); + + task->tState++; + return 1; +} + +bool8 Phase2_Transition8_Func2(struct Task* task) +{ + u16 i; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + task->data[1] += (task->data[2] >> 8); + if (task->data[1] > 0xF0) + task->data[1] = 0xF0; + if (task->data[2] <= 0xFFF) + task->data[2] += task->data[3]; + if (task->data[3] < 128) + task->data[3] <<= 1; // multiplying by two + + for (i = 0; i < 160; i++) + { + u16* storeLoc1 = &gUnknown_03004DE0[0][i]; + u16* storeLoc2 = &gUnknown_03004DE0[0][i + 160]; + if (1 & i) + { + *storeLoc1 = TRANSITION_STRUCT.field_14 + task->data[1]; + *storeLoc2 = 0xF0 - task->data[1]; + } + else + { + *storeLoc1 = TRANSITION_STRUCT.field_14 - task->data[1]; + *storeLoc2 = (task->data[1] << 8) | (0xF1); + } + } + + if (task->data[1] > 0xEF) + task->tState++; + + TRANSITION_STRUCT.VBlank_DMA++; + return 0; +} + +bool8 Phase2_Transition8_Func3(struct Task* task) +{ + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition8)); + return 0; +} + +static void VBlankCB_Phase2_Transition8(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); + DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); +} + +static void HBlankCB_Phase2_Transition8(void) +{ + u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; + REG_BG1HOFS = var; + REG_BG2HOFS = var; + REG_BG3HOFS = var; +} + +static void Phase2Task_Transition9(u8 taskID) +{ + while (sPhase2_Transition9_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition9_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.BLDCNT = 0xBF; + TRANSITION_STRUCT.field_12 = 0; + TRANSITION_STRUCT.WININ = 0x1E; + TRANSITION_STRUCT.WINOUT = 0x3F; + TRANSITION_STRUCT.WIN0V = 0xA0; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[1][i] = 0; + gUnknown_03004DE0[1][i + 160] = 0xF0; + } + + REG_IE |= 2; + REG_DISPSTAT |= 0x10; + + SetHBlankCallback(HBlankCB_Phase2_Transition9); + SetVBlankCallback(VBlankCB0_Phase2_Transition9); + + task->tState++; + return 0; +} + +extern const s16 gUnknown_083FD8C4[8]; + +bool8 Phase2_Transition9_Func2(struct Task* task) +{ + s16 i, posY; + s16 arr1[8]; + struct Sprite* sprite; + + memcpy(arr1, gUnknown_083FD8C4, sizeof(gUnknown_083FD8C4)); + for (i = 0, posY = 0; i < 8; i++, posY += 0x14) + { + sprite = &gSprites[CreateInvisibleSprite(sub_811CFD0)]; + sprite->pos1.x = 0xF0; + sprite->pos1.y = posY; + sprite->data5 = arr1[i]; + } + sprite->data6++; + + task->tState++; + return 0; +} + +bool8 Phase2_Transition9_Func3(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + if (TRANSITION_STRUCT.field_20 > 7) + { + BlendPalettes(-1, 0x10, 0x7FFF); + task->tState++; + } + return 0; +} + +bool8 Phase2_Transition9_Func4(struct Task* task) +{ + TRANSITION_STRUCT.VBlank_DMA = 0; + + DmaStop(0); + SetVBlankCallback(0); + SetHBlankCallback(0); + + TRANSITION_STRUCT.field_6 = 0xF0; + TRANSITION_STRUCT.field_12 = 0; + TRANSITION_STRUCT.BLDCNT = 0xFF; + TRANSITION_STRUCT.WININ = 0x3F; + + SetVBlankCallback(VBlankCB1_Phase2_Transition9); + + task->tState++; + return 0; +} + +bool8 Phase2_Transition9_Func5(struct Task* task) +{ + if (++TRANSITION_STRUCT.field_12 > 16) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition9)); + } + return 0; +} + +static void VBlankCB0_Phase2_Transition9(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.field_6; + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 640); + DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); +} + +static void VBlankCB1_Phase2_Transition9(void) +{ + VBlankCB_BattleTransition(); + REG_BLDY = TRANSITION_STRUCT.field_12; + REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0H = TRANSITION_STRUCT.field_6; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; +} + +static void HBlankCB_Phase2_Transition9(void) +{ + REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT]; +} + +void sub_811CFD0(struct Sprite* sprite) +{ + if (sprite->data5) + { + sprite->data5--; + if (sprite->data6) + TRANSITION_STRUCT.VBlank_DMA = 1; + } + else + { + u16 i; + u16* ptr1 = &gUnknown_03004DE0[0][sprite->pos1.y]; + u16* ptr2 = &gUnknown_03004DE0[0][sprite->pos1.y + 160]; + for (i = 0; i < 20; i++) + { + ptr1[i] = sprite->data0 >> 8; + ptr2[i] = (u8)(sprite->pos1.x); + } + if (sprite->pos1.x == 0 && sprite->data0 == 0x1000) + sprite->data1 = 1; + + sprite->pos1.x -= 16; + sprite->data0 += 0x80; + + if (sprite->pos1.x < 0) + sprite->pos1.x = 0; + if (sprite->data0 > 0x1000) + sprite->data0 = 0x1000; + + if (sprite->data6) + TRANSITION_STRUCT.VBlank_DMA = 1; + + if (sprite->data1) + { + if (sprite->data6 == 0 || (TRANSITION_STRUCT.field_20 > 6 && sprite->data2++ > 7)) + { + TRANSITION_STRUCT.field_20++; + DestroySprite(sprite); + } + } + } +} + +static void Phase2Task_Transition10(u8 taskID) +{ + while (sPhase2_Transition10_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition10_Func1(struct Task* task) +{ + u16 *dst1, *dst2; + + sub_811D6A8(&dst1, &dst2); + CpuSet(gUnknown_083FD528, dst2, 0x10); + CpuFill16(0xF000, dst1, 0x800); + LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); + task->tState++; + return 0; +} + +bool8 Phase2_Transition10_Func2(struct Task* task) +{ + u16* dst1; + + if (task->data[1] == 0) + { + sub_811D690(&dst1); + task->data[1] = 3; + task->data[2]++; + CpuSet(gUnknown_083FD528 + (task->data[2] * 8), dst1, 0x10); + if (task->data[2] > 0xD) + { + task->tState++; + task->data[1] = 16; + } + } + + task->data[1]--; + return 0; +} + +bool8 Phase2_Transition10_Func3(struct Task* task) +{ + if (--task->data[1] == 0) + { + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition10)); + } + return 0; +} + +static void Phase2Task_Transition11(u8 taskID) +{ + while (sPhase2_Transition11_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +bool8 Phase2_Transition11_Func1(struct Task* task) +{ + u16 i; + + sub_811D658(); + dp12_8087EA4(); + + TRANSITION_STRUCT.WININ = 0x3F; + TRANSITION_STRUCT.WINOUT = 0; + TRANSITION_STRUCT.WIN0V = 0xA0; + + for (i = 0; i < 160; i++) + { + gUnknown_03004DE0[0][i] = 0xF0; + } + + CpuSet(gUnknown_03004DE0[0], gUnknown_03004DE0[1], 0xA0); + SetVBlankCallback(VBlankCB_Phase2_Transition11); + + task->tState++; + return 1; +} + +extern const s16 gUnknown_083FD8F4[][5]; + +bool8 Phase2_Transition11_Func2(struct Task* task) +{ + sub_811D8FC(&TRANSITION_STRUCT.field_24, + gUnknown_083FD8F4[task->data[1]][0], + gUnknown_083FD8F4[task->data[1]][1], + gUnknown_083FD8F4[task->data[1]][2], + gUnknown_083FD8F4[task->data[1]][3], + 1, 1); + task->data[2] = gUnknown_083FD8F4[task->data[1]][4]; task->tState++; return 1; } + +bool8 Phase2_Transition11_Func3(struct Task* task) +{ + s16 i; + bool8 nextFunc; + + TRANSITION_STRUCT.VBlank_DMA = 0; + + for (i = 0, nextFunc = FALSE; i < 16; i++) + { + s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] >> 8; + s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] & 0xFF; + if (task->data[2] == 0) + { + if (r3 < TRANSITION_STRUCT.field_28) + r3 = TRANSITION_STRUCT.field_28; + if (r3 > r4) + r3 = r4; + } + else + { + if (r4 > TRANSITION_STRUCT.field_28) + r4 = TRANSITION_STRUCT.field_28; + if (r4 <= r3) + r4 = r3; + } + gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r4) | (r3 << 8); + if (nextFunc) + { + task->tState++; + break; + } + else + nextFunc = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1); + } + + TRANSITION_STRUCT.VBlank_DMA++; + return 0; +} + +extern const s16 gUnknown_083FD93A[]; + +bool8 Phase2_Transition11_Func4(struct Task* task) +{ + if (++task->data[1] < 7) + { + task->tState++; + task->data[3] = gUnknown_083FD93A[task->data[1] - 1]; + return 1; + } + else + { + DmaStop(0); + sub_811D6D4(); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition11)); + return 0; + } +} + +bool8 Phase2_Transition11_Func5(struct Task* task) +{ + if (--task->data[3] == 0) + { + task->tState = 1; + return 1; + } + else + return 0; +} + +static void VBlankCB_Phase2_Transition11(void) +{ + DmaStop(0); + VBlankCB_BattleTransition(); + if (TRANSITION_STRUCT.VBlank_DMA) + DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); + REG_WININ = TRANSITION_STRUCT.WININ; + REG_WINOUT = TRANSITION_STRUCT.WINOUT; + REG_WIN0V = TRANSITION_STRUCT.WIN0V; + REG_WIN0H = gUnknown_03004DE0[1][0]; + DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); +} -- cgit v1.2.3 From f3191f7aa13529f73d28bc48cf74406a204962c9 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 21 Aug 2017 23:05:56 +0200 Subject: name suggestions, phase2 data to C --- src/battle_transition.c | 385 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 282 insertions(+), 103 deletions(-) (limited to 'src') diff --git a/src/battle_transition.c b/src/battle_transition.c index ae2e26d21..c0770f793 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -10,9 +10,11 @@ #include "sprite.h" #include "sound.h" #include "songs.h" +#include "trainer.h" void sub_807DE10(void); void dp12_8087EA4(void); +void sub_811C90C(struct Sprite* sprite); extern u8 ewram[]; extern s16 gUnknown_03005560[]; @@ -47,14 +49,12 @@ struct TransitionData }; #define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000)) +typedef bool8 (*TransitionState)(struct Task* task); +typedef bool8 (*TransitionSpriteCallback)(struct Sprite* sprite); // this file's functions static void LaunchBattleTransitionTask(u8 transitionID); static void Task_BattleTransitionMain(u8 taskID); -void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); -bool8 sub_811D52C(void); -void sub_811D658(void); - static void Phase1Task_TransitionAll(u8 taskID); static void Phase2Task_Transition0(u8 taskID); static void Phase2Task_Transition1(u8 taskID); @@ -96,7 +96,74 @@ static void VBlankCB0_Phase2_Mugshots(void); static void VBlankCB1_Phase2_Mugshots(void); static void HBlankCB_Phase2_Mugshots(void); static void VBlankCB_Phase2_Transition11(void); +static bool8 Phase2_Transition0_Func1(struct Task* task); +static bool8 Phase2_Transition0_Func2(struct Task* task); +static bool8 Phase2_Transition0_Func3(struct Task* task); +static bool8 Phase2_Transition1_Func1(struct Task* task); +static bool8 Phase2_Transition1_Func2(struct Task* task); +static bool8 Phase2_Transition2_Func1(struct Task* task); +static bool8 Phase2_Transition2_Func2(struct Task* task); +static bool8 Phase2_Transition3_Func1(struct Task* task); +static bool8 Phase2_Transition3_Func2(struct Task* task); +static bool8 Phase2_Transition3_Func3(struct Task* task); +static bool8 Phase2_Transition3_Func4(struct Task* task); +static bool8 Phase2_Transition3_Func5(struct Task* task); +static bool8 Phase2_Transition3_Func6(struct Task* task); +static bool8 Phase2_Transition4_Func1(struct Task* task); +static bool8 Phase2_Transition4_Func2(struct Task* task); +static bool8 Phase2_Transition4_Func3(struct Task* task); +static bool8 Phase2_Transition5_Func1(struct Task* task); +static bool8 Phase2_Transition5_Func2(struct Task* task); +static bool8 Phase2_Transition5_Func3(struct Task* task); +static bool8 Phase2_Transition5_Func4(struct Task* task); +static bool8 Phase2_Transition5_Func5(struct Task* task); +static bool8 Phase2_Transition5_Func6(struct Task* task); +static bool8 Phase2_Transition5_Func7(struct Task* task); +static bool8 Phase2_Transition6_Func1(struct Task* task); +static bool8 Phase2_Transition6_Func2(struct Task* task); +static bool8 Phase2_Transition7_Func1(struct Task* task); +static bool8 Phase2_Transition7_Func2(struct Task* task); +static bool8 Phase2_Transition7_Func3(struct Task* task); +static bool8 Phase2_Transition8_Func1(struct Task* task); +static bool8 Phase2_Transition8_Func2(struct Task* task); +static bool8 Phase2_Transition8_Func3(struct Task* task); +static bool8 Phase2_Transition9_Func1(struct Task* task); +static bool8 Phase2_Transition9_Func2(struct Task* task); +static bool8 Phase2_Transition9_Func3(struct Task* task); +static bool8 Phase2_Transition9_Func4(struct Task* task); +static bool8 Phase2_Transition9_Func5(struct Task* task); +static bool8 Phase2_Transition10_Func1(struct Task* task); +static bool8 Phase2_Transition10_Func2(struct Task* task); +static bool8 Phase2_Transition10_Func3(struct Task* task); +static bool8 Phase2_Transition11_Func1(struct Task* task); +static bool8 Phase2_Transition11_Func2(struct Task* task); +static bool8 Phase2_Transition11_Func3(struct Task* task); +static bool8 Phase2_Transition11_Func4(struct Task* task); +static bool8 Phase2_Transition11_Func5(struct Task* task); +static bool8 Phase2_Mugshot_Func1(struct Task* task); +static bool8 Phase2_Mugshot_Func2(struct Task* task); +static bool8 Phase2_Mugshot_Func3(struct Task* task); +static bool8 Phase2_Mugshot_Func4(struct Task* task); +static bool8 Phase2_Mugshot_Func5(struct Task* task); +static bool8 Phase2_Mugshot_Func6(struct Task* task); +static bool8 Phase2_Mugshot_Func7(struct Task* task); +static bool8 Phase2_Mugshot_Func8(struct Task* task); +static bool8 Phase2_Mugshot_Func9(struct Task* task); +static bool8 Phase2_Mugshot_Func10(struct Task* task); +static void Phase2Task_MugShotTransition(u8 taskID); +static void Mugshots_CreateOpponentPlayerSprites(struct Task* task); +static void sub_811CA10(s16 spriteID, s16 value); +static void sub_811CA28(s16 spriteID); +static s16 sub_811CA44(s16 spriteID); +static bool8 sub_811C934(struct Sprite* sprite); +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); +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); void sub_811D6A8(u16** a0, u16** a1); @@ -105,45 +172,9 @@ void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); 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); -static void Phase2Task_MugShotTransition(u8 taskID); -static void Mugshots_CreateOpponentPlayerSprites(struct Task* task); -static void sub_811CA10(s16 spriteID, s16 value); -static void sub_811CA28(s16 spriteID); -static s16 sub_811CA44(s16 spriteID); void sub_811CFD0(struct Sprite* sprite); // const data -typedef bool8 (*TransitionState)(struct Task* task); -typedef bool8 (*TransitionSpriteCallback)(struct Sprite* sprite); - -extern const TransitionState sPhase2_Transition0_Funcs[]; -extern const TransitionState sPhase2_Transition1_Funcs[]; -extern const TransitionState sPhase2_Transition2_Funcs[]; -extern const TransitionState sPhase2_Transition3_Funcs[]; -extern const TransitionState sPhase2_Transition4_Funcs[]; -extern const TransitionState sPhase2_Transition5_Funcs[]; -extern const TransitionState sPhase2_Transition6_Funcs[]; -extern const TransitionState sPhase2_Transition7_Funcs[]; -extern const TransitionState sPhase2_Transition8_Funcs[]; -extern const TransitionState sPhase2_Transition9_Funcs[]; -extern const TransitionState sPhase2_Transition10_Funcs[]; -extern const TransitionState sPhase2_Transition11_Funcs[]; -extern const TransitionState sPhase2_Mugshot_Transition_Funcs[]; -extern const u16 gFieldEffectObjectPalette10[]; -extern const u16 gUnknown_083FDB44[]; -extern const s16 gUnknown_083FD7E4[2]; -extern const s16 gUnknown_083FD7F2[2]; -extern const s16 gUnknown_083FD7E8[5]; -extern const struct SpriteTemplate gSpriteTemplate_83FD98C; -extern const u16 gUnknown_083FDFF4[]; -extern const u8 * const sOpponentMugshotsPals[]; -extern const u8 * const sPlayerMugshotsPals[2]; -extern const u8 sMugshotsTrainerPicIDsTable[]; -extern const s16 sMugshotsOpponentCoords[][2]; -extern const s16 sMugshotsOpponentRotationScales[][2]; -extern const TransitionSpriteCallback gUnknown_083FD880[]; -extern const s16 gUnknown_083FD89C[2]; -extern const s16 gUnknown_083FD8A0[2]; static const u32 gUnknown_083FBB88[] = INCBIN_U32("graphics/battle_transitions/big_pokeball.4bpp"); static const u32 gUnknown_083FC108[] = INCBIN_U32("graphics/battle_transitions/pokeball_trail.4bpp"); @@ -152,6 +183,7 @@ static const u32 gUnknown_083FC348[] = INCBIN_U32("graphics/battle_transitions/e const u32 gSpriteImage_83FC528[] = INCBIN_U32("graphics/battle_transitions/unused_brendan.4bpp"); const u32 gSpriteImage_83FCD28[] = INCBIN_U32("graphics/battle_transitions/unused_lass.4bpp"); const u32 gUnknown_083FD528[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp"); + struct TransitionData * const sTransitionStructPtr = &TRANSITION_STRUCT; static const TaskFunc sPhase1_Tasks[TRANSITIONS_NO] = @@ -188,7 +220,160 @@ static const TransitionState sMainTransitionPhases[] = &Transition_WaitForPhase2 }; -void sub_811C90C(struct Sprite* sprite); +static const TransitionState sPhase2_Transition0_Funcs[] = +{ + &Phase2_Transition0_Func1, + &Phase2_Transition0_Func2, + &Phase2_Transition0_Func3 +}; + +static const TransitionState sPhase2_Transition1_Funcs[] = +{ + &Phase2_Transition1_Func1, + &Phase2_Transition1_Func2, +}; + +static const TransitionState sPhase2_Transition2_Funcs[] = +{ + &Phase2_Transition2_Func1, + &Phase2_Transition2_Func2, +}; + +static const TransitionState sPhase2_Transition3_Funcs[] = +{ + &Phase2_Transition3_Func1, + &Phase2_Transition3_Func2, + &Phase2_Transition3_Func3, + &Phase2_Transition3_Func4, + &Phase2_Transition3_Func5, + &Phase2_Transition3_Func6 +}; + +static const TransitionState sPhase2_Transition4_Funcs[] = +{ + &Phase2_Transition4_Func1, + &Phase2_Transition4_Func2, + &Phase2_Transition4_Func3 +}; + +static const s16 gUnknown_083FD7E4[2] = {-16, 256}; +static const s16 gUnknown_083FD7E8[5] = {0, 32, 64, 18, 48}; +static const s16 gUnknown_083FD7F2[2] = {8, -8}; + +static const TransitionState sPhase2_Transition5_Funcs[] = +{ + &Phase2_Transition5_Func1, + &Phase2_Transition5_Func2, + &Phase2_Transition5_Func3, + &Phase2_Transition5_Func4, + &Phase2_Transition5_Func5, + &Phase2_Transition5_Func6, + &Phase2_Transition5_Func7 +}; + +static const TransitionState sPhase2_Transition6_Funcs[] = +{ + &Phase2_Transition6_Func1, + &Phase2_Transition6_Func2 +}; + +static const TransitionState sPhase2_Transition7_Funcs[] = +{ + &Phase2_Transition7_Func1, + &Phase2_Transition7_Func2, + &Phase2_Transition7_Func3 +}; + +static const TransitionState sPhase2_Mugshot_Transition_Funcs[] = +{ + &Phase2_Mugshot_Func1, + &Phase2_Mugshot_Func2, + &Phase2_Mugshot_Func3, + &Phase2_Mugshot_Func4, + &Phase2_Mugshot_Func5, + &Phase2_Mugshot_Func6, + &Phase2_Mugshot_Func7, + &Phase2_Mugshot_Func8, + &Phase2_Mugshot_Func9, + &Phase2_Mugshot_Func10 +}; + +static const u8 sMugshotsTrainerPicIDsTable[MUGSHOTS_NO] = {TRAINER_PIC_SIDNEY, TRAINER_PIC_PHOEBE, TRAINER_PIC_GLACIA, TRAINER_PIC_DRAKE, TRAINER_PIC_STEVEN}; +static const s16 sMugshotsOpponentRotationScales[MUGSHOTS_NO][2] = +{ + {0x200, 0x200}, + {0x200, 0x200}, + {0x1B0, 0x1B0}, + {0x1A0, 0x1A0}, + {0x188, 0x188}, +}; +static const s16 sMugshotsOpponentCoords[MUGSHOTS_NO][2] = +{ + {0, 0}, + {0, 0}, + {-4, 4}, + {0, 5}, + {0, 7}, +}; + +static const TransitionSpriteCallback gUnknown_083FD880[] = +{ + &sub_811C934, + &sub_811C938, + &sub_811C984, + &sub_811C9B8, + &sub_811C934, + &sub_811C9E4, + &sub_811C934 +}; + +static const s16 gUnknown_083FD89C[2] = {12, -12}; +static const s16 gUnknown_083FD8A0[2] = {-1, 1}; + +static const TransitionState sPhase2_Transition8_Funcs[] = +{ + &Phase2_Transition8_Func1, + &Phase2_Transition8_Func2, + &Phase2_Transition8_Func3 +}; + +static const TransitionState sPhase2_Transition9_Funcs[] = +{ + &Phase2_Transition9_Func1, + &Phase2_Transition9_Func2, + &Phase2_Transition9_Func3, + &Phase2_Transition9_Func4, + &Phase2_Transition9_Func5 +}; + +static const s16 gUnknown_083FD8C4[8] = {0, 20, 15, 40, 10, 25, 35, 5}; + +static const TransitionState sPhase2_Transition10_Funcs[] = +{ + &Phase2_Transition10_Func1, + &Phase2_Transition10_Func2, + &Phase2_Transition10_Func3 +}; + +static const TransitionState sPhase2_Transition11_Funcs[] = +{ + &Phase2_Transition11_Func1, + &Phase2_Transition11_Func2, + &Phase2_Transition11_Func3, + &Phase2_Transition11_Func4, + &Phase2_Transition11_Func5 +}; + +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 void sub_811AABC(u8 transitionID) { @@ -287,7 +472,7 @@ static void Phase2Task_Transition0(u8 taskID) while (sPhase2_Transition0_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition0_Func1(struct Task* task) +static bool8 Phase2_Transition0_Func1(struct Task* task) { REG_MOSAIC = 0; REG_BG1CNT |= 0x40; @@ -297,7 +482,7 @@ bool8 Phase2_Transition0_Func1(struct Task* task) return 1; } -bool8 Phase2_Transition0_Func2(struct Task* task) +static bool8 Phase2_Transition0_Func2(struct Task* task) { if (task->data[1] != 0) task->data[1]--; @@ -313,7 +498,7 @@ bool8 Phase2_Transition0_Func2(struct Task* task) return 0; } -bool8 Phase2_Transition0_Func3(struct Task* task) +static bool8 Phase2_Transition0_Func3(struct Task* task) { if (!gPaletteFade.active) { @@ -328,7 +513,7 @@ static void Phase2Task_Transition1(u8 taskID) while (sPhase2_Transition1_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition1_Func1(struct Task* task) +static bool8 Phase2_Transition1_Func1(struct Task* task) { u16 savedIME; @@ -350,7 +535,7 @@ bool8 Phase2_Transition1_Func1(struct Task* task) return 0; } -bool8 Phase2_Transition1_Func2(struct Task* task) +static bool8 Phase2_Transition1_Func2(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; task->data[1] += 4; @@ -388,7 +573,7 @@ static void Phase2Task_Transition2(u8 taskID) while (sPhase2_Transition2_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition2_Func1(struct Task* task) +static bool8 Phase2_Transition2_Func1(struct Task* task) { u16 savedIME; @@ -411,7 +596,7 @@ bool8 Phase2_Transition2_Func1(struct Task* task) return 0; } -bool8 Phase2_Transition2_Func2(struct Task* task) +static bool8 Phase2_Transition2_Func2(struct Task* task) { u8 i; u16 r3, r4; @@ -455,7 +640,7 @@ static void Phase2Task_Transition3(u8 taskID) while (sPhase2_Transition3_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition3_Func1(struct Task* task) +static bool8 Phase2_Transition3_Func1(struct Task* task) { u16 i; u16 *dst1, *dst2; @@ -490,7 +675,7 @@ bool8 Phase2_Transition3_Func1(struct Task* task) return 0; } -bool8 Phase2_Transition3_Func2(struct Task* task) +static bool8 Phase2_Transition3_Func2(struct Task* task) { s16 i, j; u16 *dst1, *dst2; @@ -511,7 +696,7 @@ bool8 Phase2_Transition3_Func2(struct Task* task) return 1; } -bool8 Phase2_Transition3_Func3(struct Task* task) +static bool8 Phase2_Transition3_Func3(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[3] == 0 || --task->data[3] == 0) @@ -531,7 +716,7 @@ bool8 Phase2_Transition3_Func3(struct Task* task) return 0; } -bool8 Phase2_Transition3_Func4(struct Task* task) +static bool8 Phase2_Transition3_Func4(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[3] == 0 || --task->data[3] == 0) @@ -551,7 +736,7 @@ bool8 Phase2_Transition3_Func4(struct Task* task) return 0; } -bool8 Phase2_Transition3_Func5(struct Task* task) +static bool8 Phase2_Transition3_Func5(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; task->data[4] += 8; @@ -571,7 +756,7 @@ bool8 Phase2_Transition3_Func5(struct Task* task) return 0; } -bool8 Phase2_Transition3_Func6(struct Task* task) +static bool8 Phase2_Transition3_Func6(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[2] < 1024) @@ -618,7 +803,7 @@ static void VBlankCB0_Phase2_Transition3(void) DmaSet(0, gUnknown_03005560, ®_BG0HOFS, 0xA2400001); } -void VBlankCB1_Phase2_Transition3(void) +static void VBlankCB1_Phase2_Transition3(void) { Transition3_Vblank(); DmaSet(0, gUnknown_03005560, ®_WIN0H, 0xA2400001); @@ -629,7 +814,7 @@ static void Phase2Task_Transition4(u8 taskID) while (sPhase2_Transition4_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition4_Func1(struct Task* task) +static bool8 Phase2_Transition4_Func1(struct Task* task) { u16 *dst1, *dst2; @@ -642,7 +827,7 @@ bool8 Phase2_Transition4_Func1(struct Task* task) return 0; } -bool8 Phase2_Transition4_Func2(struct Task* task) +static bool8 Phase2_Transition4_Func2(struct Task* task) { s16 i; s16 rand; @@ -665,7 +850,7 @@ bool8 Phase2_Transition4_Func2(struct Task* task) return 0; } -bool8 Phase2_Transition4_Func3(struct Task* task) +static bool8 Phase2_Transition4_Func3(struct Task* task) { if (!FieldEffectActiveListContains(FLDEFF_POKEBALL)) { @@ -734,7 +919,7 @@ static void Phase2Task_Transition5(u8 taskID) while (sPhase2_Transition5_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition5_Func1(struct Task* task) +static bool8 Phase2_Transition5_Func1(struct Task* task) { u16 i; @@ -758,7 +943,7 @@ bool8 Phase2_Transition5_Func1(struct Task* task) return 1; } -bool8 Phase2_Transition5_Func2(struct Task* task) +static bool8 Phase2_Transition5_Func2(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -779,7 +964,7 @@ bool8 Phase2_Transition5_Func2(struct Task* task) return 0; } -bool8 Phase2_Transition5_Func3(struct Task* task) +static bool8 Phase2_Transition5_Func3(struct Task* task) { s16 r1, r3; vu8 var = 0; @@ -817,7 +1002,7 @@ bool8 Phase2_Transition5_Func3(struct Task* task) return 0; } -bool8 Phase2_Transition5_Func4(struct Task* task) +static bool8 Phase2_Transition5_Func4(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -838,7 +1023,7 @@ bool8 Phase2_Transition5_Func4(struct Task* task) return 0; } -bool8 Phase2_Transition5_Func5(struct Task* task) +static bool8 Phase2_Transition5_Func5(struct Task* task) { s16 r1, r2, r3; vu8 var = 0; @@ -877,7 +1062,7 @@ bool8 Phase2_Transition5_Func5(struct Task* task) return 0; } -bool8 Phase2_Transition5_Func6(struct Task* task) +static bool8 Phase2_Transition5_Func6(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -901,7 +1086,7 @@ bool8 Phase2_Transition5_Func6(struct Task* task) return 0; } -bool8 Phase2_Transition5_Func7(struct Task* task) +static bool8 Phase2_Transition5_Func7(struct Task* task) { DmaStop(0); sub_811D6D4(); @@ -922,12 +1107,12 @@ static void VBlankCB_Phase2_Transition5(void) DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); } -void Phase2Task_Transition6(u8 taskID) +static void Phase2Task_Transition6(u8 taskID) { while (sPhase2_Transition6_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition6_Func1(struct Task* task) +static bool8 Phase2_Transition6_Func1(struct Task* task) { u8 i; @@ -949,7 +1134,7 @@ bool8 Phase2_Transition6_Func1(struct Task* task) return 1; } -bool8 Phase2_Transition6_Func2(struct Task* task) +static bool8 Phase2_Transition6_Func2(struct Task* task) { u8 i; s16 r3; @@ -1006,7 +1191,7 @@ static void Phase2Task_Transition7(u8 taskID) while (sPhase2_Transition7_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition7_Func1(struct Task* task) +static bool8 Phase2_Transition7_Func1(struct Task* task) { u8 i; @@ -1029,7 +1214,7 @@ bool8 Phase2_Transition7_Func1(struct Task* task) return 1; } -bool8 Phase2_Transition7_Func2(struct Task* task) +static bool8 Phase2_Transition7_Func2(struct Task* task) { u8 i, r5; u16* toStore; @@ -1059,7 +1244,7 @@ bool8 Phase2_Transition7_Func2(struct Task* task) return 0; } -bool8 Phase2_Transition7_Func3(struct Task* task) +static bool8 Phase2_Transition7_Func3(struct Task* task) { DmaStop(0); sub_811D6D4(); @@ -1118,7 +1303,7 @@ static void Phase2Task_MugShotTransition(u8 taskID) while (sPhase2_Mugshot_Transition_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Mugshot_Func1(struct Task* task) +static bool8 Phase2_Mugshot_Func1(struct Task* task) { u8 i; @@ -1144,7 +1329,7 @@ bool8 Phase2_Mugshot_Func1(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func2(struct Task* task) +static bool8 Phase2_Mugshot_Func2(struct Task* task) { s16 i, j; u16 *dst1, *dst2; @@ -1171,7 +1356,7 @@ bool8 Phase2_Mugshot_Func2(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func3(struct Task* task) +static bool8 Phase2_Mugshot_Func3(struct Task* task) { u8 i, r5; u16* toStore; @@ -1219,7 +1404,7 @@ bool8 Phase2_Mugshot_Func3(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func4(struct Task* task) +static bool8 Phase2_Mugshot_Func4(struct Task* task) { u8 i; u16* toStore; @@ -1248,7 +1433,7 @@ bool8 Phase2_Mugshot_Func4(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func5(struct Task* task) +static bool8 Phase2_Mugshot_Func5(struct Task* task) { TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; @@ -1260,7 +1445,7 @@ bool8 Phase2_Mugshot_Func5(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func6(struct Task* task) +static bool8 Phase2_Mugshot_Func6(struct Task* task) { TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; @@ -1282,7 +1467,7 @@ bool8 Phase2_Mugshot_Func6(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func7(struct Task* task) +static bool8 Phase2_Mugshot_Func7(struct Task* task) { bool32 r6; @@ -1323,7 +1508,7 @@ bool8 Phase2_Mugshot_Func7(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func8(struct Task* task) +static bool8 Phase2_Mugshot_Func8(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; BlendPalettes(-1, 0x10, 0x7FFF); @@ -1334,7 +1519,7 @@ bool8 Phase2_Mugshot_Func8(struct Task* task) return 1; } -bool8 Phase2_Mugshot_Func9(struct Task* task) +static bool8 Phase2_Mugshot_Func9(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -1347,7 +1532,7 @@ bool8 Phase2_Mugshot_Func9(struct Task* task) return 0; } -bool8 Phase2_Mugshot_Func10(struct Task* task) +static bool8 Phase2_Mugshot_Func10(struct Task* task) { DmaStop(0); sub_811D6D4(); @@ -1502,7 +1687,7 @@ static void Phase2Task_Transition8(u8 taskID) while (sPhase2_Transition8_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition8_Func1(struct Task* task) +static bool8 Phase2_Transition8_Func1(struct Task* task) { u16 i; @@ -1531,7 +1716,7 @@ bool8 Phase2_Transition8_Func1(struct Task* task) return 1; } -bool8 Phase2_Transition8_Func2(struct Task* task) +static bool8 Phase2_Transition8_Func2(struct Task* task) { u16 i; @@ -1568,7 +1753,7 @@ bool8 Phase2_Transition8_Func2(struct Task* task) return 0; } -bool8 Phase2_Transition8_Func3(struct Task* task) +static bool8 Phase2_Transition8_Func3(struct Task* task) { DmaStop(0); sub_811D6D4(); @@ -1601,7 +1786,7 @@ static void Phase2Task_Transition9(u8 taskID) while (sPhase2_Transition9_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition9_Func1(struct Task* task) +static bool8 Phase2_Transition9_Func1(struct Task* task) { u16 i; @@ -1630,9 +1815,7 @@ bool8 Phase2_Transition9_Func1(struct Task* task) return 0; } -extern const s16 gUnknown_083FD8C4[8]; - -bool8 Phase2_Transition9_Func2(struct Task* task) +static bool8 Phase2_Transition9_Func2(struct Task* task) { s16 i, posY; s16 arr1[8]; @@ -1652,7 +1835,7 @@ bool8 Phase2_Transition9_Func2(struct Task* task) return 0; } -bool8 Phase2_Transition9_Func3(struct Task* task) +static bool8 Phase2_Transition9_Func3(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (TRANSITION_STRUCT.field_20 > 7) @@ -1663,7 +1846,7 @@ bool8 Phase2_Transition9_Func3(struct Task* task) return 0; } -bool8 Phase2_Transition9_Func4(struct Task* task) +static bool8 Phase2_Transition9_Func4(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -1682,7 +1865,7 @@ bool8 Phase2_Transition9_Func4(struct Task* task) return 0; } -bool8 Phase2_Transition9_Func5(struct Task* task) +static bool8 Phase2_Transition9_Func5(struct Task* task) { if (++TRANSITION_STRUCT.field_12 > 16) { @@ -1769,7 +1952,7 @@ static void Phase2Task_Transition10(u8 taskID) while (sPhase2_Transition10_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition10_Func1(struct Task* task) +static bool8 Phase2_Transition10_Func1(struct Task* task) { u16 *dst1, *dst2; @@ -1782,7 +1965,7 @@ bool8 Phase2_Transition10_Func1(struct Task* task) return 0; } -bool8 Phase2_Transition10_Func2(struct Task* task) +static bool8 Phase2_Transition10_Func2(struct Task* task) { u16* dst1; @@ -1803,7 +1986,7 @@ bool8 Phase2_Transition10_Func2(struct Task* task) return 0; } -bool8 Phase2_Transition10_Func3(struct Task* task) +static bool8 Phase2_Transition10_Func3(struct Task* task) { if (--task->data[1] == 0) { @@ -1818,7 +2001,7 @@ static void Phase2Task_Transition11(u8 taskID) while (sPhase2_Transition11_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -bool8 Phase2_Transition11_Func1(struct Task* task) +static bool8 Phase2_Transition11_Func1(struct Task* task) { u16 i; @@ -1841,9 +2024,7 @@ bool8 Phase2_Transition11_Func1(struct Task* task) return 1; } -extern const s16 gUnknown_083FD8F4[][5]; - -bool8 Phase2_Transition11_Func2(struct Task* task) +static bool8 Phase2_Transition11_Func2(struct Task* task) { sub_811D8FC(&TRANSITION_STRUCT.field_24, gUnknown_083FD8F4[task->data[1]][0], @@ -1856,7 +2037,7 @@ bool8 Phase2_Transition11_Func2(struct Task* task) return 1; } -bool8 Phase2_Transition11_Func3(struct Task* task) +static bool8 Phase2_Transition11_Func3(struct Task* task) { s16 i; bool8 nextFunc; @@ -1895,9 +2076,7 @@ bool8 Phase2_Transition11_Func3(struct Task* task) return 0; } -extern const s16 gUnknown_083FD93A[]; - -bool8 Phase2_Transition11_Func4(struct Task* task) +static bool8 Phase2_Transition11_Func4(struct Task* task) { if (++task->data[1] < 7) { @@ -1914,7 +2093,7 @@ bool8 Phase2_Transition11_Func4(struct Task* task) } } -bool8 Phase2_Transition11_Func5(struct Task* task) +static bool8 Phase2_Transition11_Func5(struct Task* task) { if (--task->data[3] == 0) { -- cgit v1.2.3 From fc9f7853a0e8dde9f80c1e16bee3a05978d29d15 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Mon, 21 Aug 2017 23:40:13 +0200 Subject: up to sub_811D584 --- src/battle_transition.c | 52 +++++++++++++++++++++++++++++++++++++++++++++---- 1 file changed, 48 insertions(+), 4 deletions(-) (limited to 'src') 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])); +} -- cgit v1.2.3 From be47f6b54bd4b586d435d6fbff56bc315ff72efc Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 22 Aug 2017 17:10:50 +0200 Subject: a really hard math function --- src/battle_transition.c | 353 +++++++++++++++++++++++++++++++++++------------- 1 file changed, 261 insertions(+), 92 deletions(-) (limited to 'src') diff --git a/src/battle_transition.c b/src/battle_transition.c index 9f4126822..fcf49a7fb 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -11,6 +11,7 @@ #include "sound.h" #include "songs.h" #include "trainer.h" +#include "field_camera.h" void sub_807DE10(void); void dp12_8087EA4(void); @@ -46,6 +47,12 @@ struct TransitionData s16 field_2A; s16 field_2C; s16 field_2E; + s16 field_30; + s16 field_32; + s16 field_34; + s16 field_36; + s16 field_38; + s16 field_3A; }; #define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000)) @@ -160,22 +167,22 @@ 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 void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4); static bool8 sub_811D52C(void); +static void Phase1_Task_RunFuncs(u8 taskID); +static bool8 Phase1_TransitionAll_Func1(struct Task* task); +static bool8 Phase1_TransitionAll_Func2(struct Task* task); +static void sub_811D658(void); +static void VBlankCB_BattleTransition(void); +static void sub_811D6A8(u16** a0, u16** a1); +static void sub_811D690(u16** a0); +static void sub_811D6D4(void); +static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize); -void sub_811D658(void); -void VBlankCB_BattleTransition(void); -void sub_811D6E8(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5); -void sub_811D6A8(u16** a0, u16** a1); -void sub_811D690(u16** a0); void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); -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 @@ -187,7 +194,7 @@ const u32 gSpriteImage_83FC528[] = INCBIN_U32("graphics/battle_transitions/unuse const u32 gSpriteImage_83FCD28[] = INCBIN_U32("graphics/battle_transitions/unused_lass.4bpp"); const u32 gUnknown_083FD528[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp"); -struct TransitionData * const sTransitionStructPtr = &TRANSITION_STRUCT; +static struct TransitionData * const sTransitionStructPtr = &TRANSITION_STRUCT; static const TaskFunc sPhase1_Tasks[TRANSITIONS_NO] = { @@ -380,10 +387,10 @@ static const s16 gUnknown_083FD8F4[][5] = static const s16 gUnknown_083FD93A[] = {8, 4, 2, 1, 1, 1, 0}; -static const TransitionState gUnknown_083FD948[] = +static const TransitionState sPhase1_TransitionAll_Funcs[] = { - &sub_811D584, - &sub_811D5E0 + &Phase1_TransitionAll_Func1, + &Phase1_TransitionAll_Func2 }; extern const u16 gFieldEffectObjectPalette10[]; @@ -416,10 +423,10 @@ bool8 IsBattleTransitionDone(void) if (gTasks[taskID].tTransitionDone) { DestroyTask(taskID); - return 1; + return TRUE; } else - return 0; + return FALSE; } static void LaunchBattleTransitionTask(u8 transitionID) @@ -441,12 +448,12 @@ static bool8 Transition_Phase1(struct Task* task) { CreateTask(sPhase1_Tasks[task->tTransitionID], 4); task->tState++; - return 0; + return FALSE; } else { task->tState = 2; - return 1; + return TRUE; } } @@ -455,17 +462,17 @@ static bool8 Transition_WaitForPhase1(struct Task* task) if (FindTaskIdByFunc(sPhase1_Tasks[task->tTransitionID]) == 0xFF) { task->tState++; - return 1; + return TRUE; } else - return 0; + return FALSE; } static bool8 Transition_Phase2(struct Task* task) { CreateTask(sPhase2_Tasks[task->tTransitionID], 0); task->tState++; - return 0; + return FALSE; } static bool8 Transition_WaitForPhase2(struct Task* task) @@ -473,7 +480,7 @@ static bool8 Transition_WaitForPhase2(struct Task* task) task->tTransitionDone = 0; if (FindTaskIdByFunc(sPhase2_Tasks[task->tTransitionID]) == 0xFF) task->tTransitionDone = 1; - return 0; + return FALSE; } static void Phase1Task_TransitionAll(u8 taskID) @@ -481,7 +488,7 @@ static void Phase1Task_TransitionAll(u8 taskID) if (gTasks[taskID].tState == 0) { gTasks[taskID].tState++; - sub_811D4C8(0, 0, 3, 2, 2); + CreatePhase1Task(0, 0, 3, 2, 2); } else if (sub_811D52C()) DestroyTask(taskID); @@ -499,7 +506,7 @@ static bool8 Phase2_Transition0_Func1(struct Task* task) REG_BG2CNT |= 0x40; REG_BG3CNT |= 0x40; task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition0_Func2(struct Task* task) @@ -515,7 +522,7 @@ static bool8 Phase2_Transition0_Func2(struct Task* task) if (task->data[2] > 14) task->tState++; } - return 0; + return FALSE; } static bool8 Phase2_Transition0_Func3(struct Task* task) @@ -525,7 +532,7 @@ static bool8 Phase2_Transition0_Func3(struct Task* task) u8 taskID = FindTaskIdByFunc(Phase2Task_Transition0); DestroyTask(taskID); } - return 0; + return FALSE; } static void Phase2Task_Transition1(u8 taskID) @@ -552,7 +559,7 @@ static bool8 Phase2_Transition1_Func1(struct Task* task) REG_DISPSTAT |= 0x18; task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition1_Func2(struct Task* task) @@ -570,7 +577,7 @@ static bool8 Phase2_Transition1_Func2(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static void VBlankCB_Phase2_Transition1(void) @@ -613,7 +620,7 @@ static bool8 Phase2_Transition2_Func1(struct Task* task) REG_DISPSTAT |= 0x18; task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition2_Func2(struct Task* task) @@ -637,7 +644,7 @@ static bool8 Phase2_Transition2_Func2(struct Task* task) DestroyTask(FindTaskIdByFunc(Phase2Task_Transition2)); TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static void VBlankCB_Phase2_Transition2(void) @@ -692,7 +699,7 @@ static bool8 Phase2_Transition3_Func1(struct Task* task) LoadPalette(gFieldEffectObjectPalette10, 240, 32); task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition3_Func2(struct Task* task) @@ -713,7 +720,7 @@ static bool8 Phase2_Transition3_Func2(struct Task* task) sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160); task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition3_Func3(struct Task* task) @@ -733,7 +740,7 @@ static bool8 Phase2_Transition3_Func3(struct Task* task) sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition3_Func4(struct Task* task) @@ -753,7 +760,7 @@ static bool8 Phase2_Transition3_Func4(struct Task* task) sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5] >> 8, 160); TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition3_Func5(struct Task* task) @@ -773,7 +780,7 @@ static bool8 Phase2_Transition3_Func5(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition3_Func6(struct Task* task) @@ -801,7 +808,7 @@ static bool8 Phase2_Transition3_Func6(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static void Transition3_Vblank(void) @@ -844,7 +851,7 @@ static bool8 Phase2_Transition4_Func1(struct Task* task) LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition4_Func2(struct Task* task) @@ -867,7 +874,7 @@ static bool8 Phase2_Transition4_Func2(struct Task* task) } task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition4_Func3(struct Task* task) @@ -877,7 +884,7 @@ static bool8 Phase2_Transition4_Func3(struct Task* task) sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition4)); } - return 0; + return FALSE; } bool8 FldEff_Pokeball(void) @@ -890,7 +897,7 @@ bool8 FldEff_Pokeball(void) gSprites[spriteID].data2 = -1; InitSpriteAffineAnim(&gSprites[spriteID]); StartSpriteAffineAnim(&gSprites[spriteID], gUnknown_0202FF84[2]); - return 0; + return FALSE; } #define SOME_VRAM_STORE(ptr, posY, posX, toStore) \ @@ -960,7 +967,7 @@ static bool8 Phase2_Transition5_Func1(struct Task* task) TRANSITION_STRUCT.field_2C = 120; task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition5_Func2(struct Task* task) @@ -981,7 +988,7 @@ static bool8 Phase2_Transition5_Func2(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition5_Func3(struct Task* task) @@ -1019,7 +1026,7 @@ static bool8 Phase2_Transition5_Func3(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition5_Func4(struct Task* task) @@ -1040,7 +1047,7 @@ static bool8 Phase2_Transition5_Func4(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition5_Func5(struct Task* task) @@ -1079,7 +1086,7 @@ static bool8 Phase2_Transition5_Func5(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition5_Func6(struct Task* task) @@ -1103,7 +1110,7 @@ static bool8 Phase2_Transition5_Func6(struct Task* task) task->tState++; TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition5_Func7(struct Task* task) @@ -1111,7 +1118,7 @@ static bool8 Phase2_Transition5_Func7(struct Task* task) DmaStop(0); sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition5)); - return 0; + return FALSE; } static void VBlankCB_Phase2_Transition5(void) @@ -1151,7 +1158,7 @@ static bool8 Phase2_Transition6_Func1(struct Task* task) REG_DISPSTAT |= 0x10; task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition6_Func2(struct Task* task) @@ -1188,7 +1195,7 @@ static bool8 Phase2_Transition6_Func2(struct Task* task) DestroyTask(FindTaskIdByFunc(Phase2Task_Transition6)); TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static void VBlankCB_Phase2_Transition6(void) @@ -1231,7 +1238,7 @@ static bool8 Phase2_Transition7_Func1(struct Task* task) SetVBlankCallback(VBlankCB_Phase2_Transition7); task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition7_Func2(struct Task* task) @@ -1261,7 +1268,7 @@ static bool8 Phase2_Transition7_Func2(struct Task* task) task->tState++; TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition7_Func3(struct Task* task) @@ -1269,7 +1276,7 @@ static bool8 Phase2_Transition7_Func3(struct Task* task) DmaStop(0); sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition7)); - return 0; + return FALSE; } static void VBlankCB_Phase2_Transition7(void) @@ -1346,7 +1353,7 @@ static bool8 Phase2_Mugshot_Func1(struct Task* task) SetVBlankCallback(VBlankCB0_Phase2_Mugshots); task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func2(struct Task* task) @@ -1373,7 +1380,7 @@ static bool8 Phase2_Mugshot_Func2(struct Task* task) REG_DISPSTAT |= 0x10; SetHBlankCallback(HBlankCB_Phase2_Mugshots); task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func3(struct Task* task) @@ -1421,7 +1428,7 @@ static bool8 Phase2_Mugshot_Func3(struct Task* task) TRANSITION_STRUCT.field_18 -= 8; TRANSITION_STRUCT.field_1A += 8; TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func4(struct Task* task) @@ -1450,7 +1457,7 @@ static bool8 Phase2_Mugshot_Func4(struct Task* task) PlaySE(SE_BT_START); TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func5(struct Task* task) @@ -1462,7 +1469,7 @@ static bool8 Phase2_Mugshot_Func5(struct Task* task) task->tState++; sub_811CA28(task->tMugshotPlayerID); } - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func6(struct Task* task) @@ -1484,7 +1491,7 @@ static bool8 Phase2_Mugshot_Func6(struct Task* task) TRANSITION_STRUCT.BLDCNT = 0xBF; SetVBlankCallback(VBlankCB1_Phase2_Mugshots); } - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func7(struct Task* task) @@ -1525,7 +1532,7 @@ static bool8 Phase2_Mugshot_Func7(struct Task* task) task->tState++; TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func8(struct Task* task) @@ -1536,7 +1543,7 @@ static bool8 Phase2_Mugshot_Func8(struct Task* task) task->data[3] = 0; task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Mugshot_Func9(struct Task* task) @@ -1549,7 +1556,7 @@ static bool8 Phase2_Mugshot_Func9(struct Task* task) task->tState++; TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Mugshot_Func10(struct Task* task) @@ -1557,7 +1564,7 @@ static bool8 Phase2_Mugshot_Func10(struct Task* task) DmaStop(0); sub_811D6D4(); DestroyTask(FindTaskIdByFunc(task->func)); - return 0; + return FALSE; } static void VBlankCB0_Phase2_Mugshots(void) @@ -1634,7 +1641,7 @@ void sub_811C90C(struct Sprite* sprite) bool8 sub_811C934(struct Sprite* sprite) { - return 0; + return FALSE; } bool8 sub_811C938(struct Sprite* sprite) @@ -1648,7 +1655,7 @@ bool8 sub_811C938(struct Sprite* sprite) sprite->data0++; sprite->data1 = arr0[sprite->data7]; sprite->data2 = arr1[sprite->data7]; - return 1; + return TRUE; } bool8 sub_811C984(struct Sprite* sprite) @@ -1658,7 +1665,7 @@ bool8 sub_811C984(struct Sprite* sprite) sprite->data0++; else if (!sprite->data7 && sprite->pos1.x > 103) sprite->data0++; - return 0; + return FALSE; } bool8 sub_811C9B8(struct Sprite* sprite) @@ -1671,7 +1678,7 @@ bool8 sub_811C9B8(struct Sprite* sprite) sprite->data2 = -sprite->data2; sprite->data6 = 1; } - return 0; + return FALSE; } bool8 sub_811C9E4(struct Sprite* sprite) @@ -1680,7 +1687,7 @@ bool8 sub_811C9E4(struct Sprite* sprite) sprite->pos1.x += sprite->data1; if (sprite->pos1.x < -31 || sprite->pos1.x > 271) sprite->data0++; - return 0; + return FALSE; } static void sub_811CA10(s16 spriteID, s16 value) @@ -1733,7 +1740,7 @@ static bool8 Phase2_Transition8_Func1(struct Task* task) SetHBlankCallback(HBlankCB_Phase2_Transition8); task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition8_Func2(struct Task* task) @@ -1770,7 +1777,7 @@ static bool8 Phase2_Transition8_Func2(struct Task* task) task->tState++; TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition8_Func3(struct Task* task) @@ -1778,7 +1785,7 @@ static bool8 Phase2_Transition8_Func3(struct Task* task) DmaStop(0); sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition8)); - return 0; + return FALSE; } static void VBlankCB_Phase2_Transition8(void) @@ -1832,7 +1839,7 @@ static bool8 Phase2_Transition9_Func1(struct Task* task) SetVBlankCallback(VBlankCB0_Phase2_Transition9); task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition9_Func2(struct Task* task) @@ -1852,7 +1859,7 @@ static bool8 Phase2_Transition9_Func2(struct Task* task) sprite->data6++; task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition9_Func3(struct Task* task) @@ -1863,7 +1870,7 @@ static bool8 Phase2_Transition9_Func3(struct Task* task) BlendPalettes(-1, 0x10, 0x7FFF); task->tState++; } - return 0; + return FALSE; } static bool8 Phase2_Transition9_Func4(struct Task* task) @@ -1882,7 +1889,7 @@ static bool8 Phase2_Transition9_Func4(struct Task* task) SetVBlankCallback(VBlankCB1_Phase2_Transition9); task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition9_Func5(struct Task* task) @@ -1892,7 +1899,7 @@ static bool8 Phase2_Transition9_Func5(struct Task* task) sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition9)); } - return 0; + return FALSE; } static void VBlankCB0_Phase2_Transition9(void) @@ -1982,7 +1989,7 @@ static bool8 Phase2_Transition10_Func1(struct Task* task) LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); task->tState++; - return 0; + return FALSE; } static bool8 Phase2_Transition10_Func2(struct Task* task) @@ -2003,7 +2010,7 @@ static bool8 Phase2_Transition10_Func2(struct Task* task) } task->data[1]--; - return 0; + return FALSE; } static bool8 Phase2_Transition10_Func3(struct Task* task) @@ -2013,7 +2020,7 @@ static bool8 Phase2_Transition10_Func3(struct Task* task) sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition10)); } - return 0; + return FALSE; } static void Phase2Task_Transition11(u8 taskID) @@ -2041,7 +2048,7 @@ static bool8 Phase2_Transition11_Func1(struct Task* task) SetVBlankCallback(VBlankCB_Phase2_Transition11); task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition11_Func2(struct Task* task) @@ -2054,7 +2061,7 @@ static bool8 Phase2_Transition11_Func2(struct Task* task) 1, 1); task->data[2] = gUnknown_083FD8F4[task->data[1]][4]; task->tState++; - return 1; + return TRUE; } static bool8 Phase2_Transition11_Func3(struct Task* task) @@ -2093,7 +2100,7 @@ static bool8 Phase2_Transition11_Func3(struct Task* task) } TRANSITION_STRUCT.VBlank_DMA++; - return 0; + return FALSE; } static bool8 Phase2_Transition11_Func4(struct Task* task) @@ -2102,14 +2109,14 @@ static bool8 Phase2_Transition11_Func4(struct Task* task) { task->tState++; task->data[3] = gUnknown_083FD93A[task->data[1] - 1]; - return 1; + return TRUE; } else { DmaStop(0); sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition11)); - return 0; + return FALSE; } } @@ -2118,10 +2125,10 @@ static bool8 Phase2_Transition11_Func5(struct Task* task) if (--task->data[3] == 0) { task->tState = 1; - return 1; + return TRUE; } else - return 0; + return FALSE; } static void VBlankCB_Phase2_Transition11(void) @@ -2137,9 +2144,9 @@ static void VBlankCB_Phase2_Transition11(void) DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); } -static void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4) +static void CreatePhase1Task(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4) { - u8 taskID = CreateTask(sub_811D54C, 3); + u8 taskID = CreateTask(Phase1_Task_RunFuncs, 3); gTasks[taskID].data[1] = a0; gTasks[taskID].data[2] = a1; gTasks[taskID].data[3] = a2; @@ -2150,13 +2157,175 @@ static void sub_811D4C8(s16 a0, s16 a1, s16 a2, s16 a3, s16 a4) static bool8 sub_811D52C(void) { - if (FindTaskIdByFunc(sub_811D54C) == 0xFF) - return 1; + if (FindTaskIdByFunc(Phase1_Task_RunFuncs) == 0xFF) + return TRUE; else - return 0; + return FALSE; } -void sub_811D54C(u8 taskID) +static void Phase1_Task_RunFuncs(u8 taskID) { - while (gUnknown_083FD948[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase1_TransitionAll_Funcs[gTasks[taskID].tState](&gTasks[taskID])); +} + +static bool8 Phase1_TransitionAll_Func1(struct Task* task) +{ + if (task->data[6] == 0 || --task->data[6] == 0) + { + task->data[6] = task->data[1]; + task->data[7] += task->data[4]; + if (task->data[7] > 16) + task->data[7] = 16; + BlendPalettes(-1, task->data[7], 0x2D6B); + } + if (task->data[7] > 15) + { + task->tState++; + task->data[6] = task->data[2]; + } + return FALSE; +} + +static bool8 Phase1_TransitionAll_Func2(struct Task* task) +{ + if (task->data[6] == 0 || --task->data[6] == 0) + { + task->data[6] = task->data[2]; + task->data[7] -= task->data[5]; + if (task->data[7] < 0) + task->data[7] = 0; + BlendPalettes(-1, task->data[7], 0x2D6B); + } + if (task->data[7] == 0) + { + if (--task->data[3] == 0) + DestroyTask(FindTaskIdByFunc(Phase1_Task_RunFuncs)); + else + { + task->data[6] = task->data[1]; + task->tState = 0; + } + } + return FALSE; +} + +static void sub_811D658(void) +{ + struct TransitionData* const* dummy = &sTransitionStructPtr; + memset(*dummy, 0, sizeof(struct TransitionData)); + sub_8057B14(&TRANSITION_STRUCT.field_14, &TRANSITION_STRUCT.field_16); +} + +static void VBlankCB_BattleTransition(void) +{ + LoadOam(); + ProcessSpriteCopyRequests(); + TransferPlttBuffer(); +} + +static void sub_811D690(u16** a0) +{ + u16 reg, *vram; + + reg = REG_BG0CNT >> 2; + reg <<= 0xE; + vram = (u16*)(VRAM + reg); + + *a0 = vram; +} + +static void sub_811D6A8(u16** a0, u16** a1) +{ + u16 reg0, reg1, *vram0, *vram1; + + reg0 = REG_BG0CNT >> 8; + reg1 = REG_BG0CNT >> 2; + + reg0 <<= 0xB; + reg1 <<= 0xE; + + vram0 = (u16*)(VRAM + reg0); + *a0 = vram0; + + vram1 = (u16*)(VRAM + reg1); + *a1 = vram1; +} + +static void sub_811D6D4(void) +{ + BlendPalettes(-1, 0x10, 0); +} + +static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize) +{ + u8 i; + for (i = 0; arrSize > 0; arrSize--, i++, index += indexIncrementer) + { + array[i] = sinAdd + Sin(0xFF & index, amplitude); + } +} + +void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3) +{ + s16 i; + + memset(array, 0xA, 160 * sizeof(s16)); + for (i = 0; i < 64; i++) + { + s16 sinResult, cosResult, r1, r6, r7, r8; + s16 r2, r3; + s16 j; + + sinResult = Sin(i, a3); + cosResult = Cos(i, a3); + + r1 = a1 - sinResult; + r6 = a1 + sinResult; + r7 = a2 - cosResult; + r8 = a2 + cosResult; + + if (r1 < 0) + r1 = 0; + if (r6 > 0xF0) + r6 = 0xF0; + if (r7 < 0) + r7 = 0; + if (r8 > 0x9F) + r8 = 0x9F; + + r6 |= (r1 << 8); + array[r7] = r6; + array[r8] = r6; + + cosResult = Cos(i + 1, a3); + r3 = a2 - cosResult; + r2 = a2 + cosResult; + + if (r3 < 0) + r3 = 0; + if (r2 > 0x9F) + r2 = 0x9F; + + j = r7; + while (j > r3) + { + array[--j] = r6; + } + j = r7; + while (j < r3) + { + array[++j] = r6; + } + + j = r8; + while (j > r2) + { + array[--j] = r6; + } + j = r8; + while (j < r2) + { + array[++j] = r6; + } + } } -- cgit v1.2.3 From 77cfea2ecfdcb28fa286b967c9635b5e10ff99a2 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 22 Aug 2017 19:05:38 +0200 Subject: all functions decompiled --- src/battle_transition.c | 248 ++++++++++++++++++++++++++++-------------------- 1 file changed, 145 insertions(+), 103 deletions(-) (limited to 'src') diff --git a/src/battle_transition.c b/src/battle_transition.c index fcf49a7fb..88d3330f9 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -41,18 +41,7 @@ struct TransitionData s16 field_1E; s16 field_20; s16 field_22; - s16 field_24; - s16 field_26; - s16 field_28; - s16 field_2A; - s16 field_2C; - s16 field_2E; - s16 field_30; - s16 field_32; - s16 field_34; - s16 field_36; - s16 field_38; - s16 field_3A; + s16 data[11]; }; #define TRANSITION_STRUCT (*(struct TransitionData *) (ewram + 0xC000)) @@ -178,11 +167,10 @@ static void sub_811D6A8(u16** a0, u16** a1); static void sub_811D690(u16** a0); static void sub_811D6D4(void); static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, s16 amplitude, s16 arrSize); - -void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); -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); +static void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); +static void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); +static bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2); +static void sub_811CFD0(struct Sprite* sprite); // const data @@ -964,7 +952,7 @@ static bool8 Phase2_Transition5_Func1(struct Task* task) } SetVBlankCallback(VBlankCB_Phase2_Transition5); - TRANSITION_STRUCT.field_2C = 120; + TRANSITION_STRUCT.data[4] = 120; task->tState++; return TRUE; @@ -974,16 +962,16 @@ static bool8 Phase2_Transition5_Func2(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; - sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, -1, 1, 1); + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], -1, 1, 1); do { - gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (TRANSITION_STRUCT.field_28 + 1) | 0x7800; - } while (!sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1)); + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] + 1) | 0x7800; + } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); - TRANSITION_STRUCT.field_2C += 16; - if (TRANSITION_STRUCT.field_2C >= 240) + TRANSITION_STRUCT.data[4] += 16; + if (TRANSITION_STRUCT.data[4] >= 240) { - TRANSITION_STRUCT.field_2E = 0; + TRANSITION_STRUCT.data[5] = 0; task->tState++; } @@ -998,30 +986,30 @@ static bool8 Phase2_Transition5_Func3(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; - sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 240, TRANSITION_STRUCT.field_2E, 1, 1); + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 240, TRANSITION_STRUCT.data[5], 1, 1); while (1) { - r1 = 120, r3 = TRANSITION_STRUCT.field_28 + 1; - if (TRANSITION_STRUCT.field_2E >= 80) - r1 = TRANSITION_STRUCT.field_28, r3 = 240; - gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r3) | (r1 << 8); + r1 = 120, r3 = TRANSITION_STRUCT.data[2] + 1; + if (TRANSITION_STRUCT.data[5] >= 80) + r1 = TRANSITION_STRUCT.data[2], r3 = 240; + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); if (var != 0) break; - var = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1); + var = sub_811D978(TRANSITION_STRUCT.data, 1, 1); } - TRANSITION_STRUCT.field_2E += 8; - if (TRANSITION_STRUCT.field_2E >= 160) + TRANSITION_STRUCT.data[5] += 8; + if (TRANSITION_STRUCT.data[5] >= 160) { - TRANSITION_STRUCT.field_2C = 240; + TRANSITION_STRUCT.data[4] = 240; task->tState++; } else { - while (TRANSITION_STRUCT.field_2A < TRANSITION_STRUCT.field_2E) + while (TRANSITION_STRUCT.data[3] < TRANSITION_STRUCT.data[5]) { - gUnknown_03004DE0[0][++TRANSITION_STRUCT.field_2A] = (r3) | (r1 << 8); + gUnknown_03004DE0[0][++TRANSITION_STRUCT.data[3]] = (r3) | (r1 << 8); } } @@ -1033,16 +1021,16 @@ static bool8 Phase2_Transition5_Func4(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; - sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 160, 1, 1); + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 160, 1, 1); do { - gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (TRANSITION_STRUCT.field_28 << 8) | 0xF0; - } while (!sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1)); + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (TRANSITION_STRUCT.data[2] << 8) | 0xF0; + } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); - TRANSITION_STRUCT.field_2C -= 16; - if (TRANSITION_STRUCT.field_2C <= 0) + TRANSITION_STRUCT.data[4] -= 16; + if (TRANSITION_STRUCT.data[4] <= 0) { - TRANSITION_STRUCT.field_2E = 160; + TRANSITION_STRUCT.data[5] = 160; task->tState++; } @@ -1057,31 +1045,31 @@ static bool8 Phase2_Transition5_Func5(struct Task* task) TRANSITION_STRUCT.VBlank_DMA = 0; - sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, 0, TRANSITION_STRUCT.field_2E, 1, 1); + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, 0, TRANSITION_STRUCT.data[5], 1, 1); while (1) { - r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] & 0xFF, r2 = TRANSITION_STRUCT.field_28; - if (TRANSITION_STRUCT.field_2E <= 80) - r2 = 120, r1 = TRANSITION_STRUCT.field_28; - gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r1) | (r2 << 8); + r1 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF, r2 = TRANSITION_STRUCT.data[2]; + if (TRANSITION_STRUCT.data[5] <= 80) + r2 = 120, r1 = TRANSITION_STRUCT.data[2]; + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); r3 = 0; if (var != 0) break; - var = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1); + var = sub_811D978(TRANSITION_STRUCT.data, 1, 1); } - TRANSITION_STRUCT.field_2E -= 8; - if (TRANSITION_STRUCT.field_2E <= 0) + TRANSITION_STRUCT.data[5] -= 8; + if (TRANSITION_STRUCT.data[5] <= 0) { - TRANSITION_STRUCT.field_2C = r3; + TRANSITION_STRUCT.data[4] = r3; task->tState++; } else { - while (TRANSITION_STRUCT.field_2A > TRANSITION_STRUCT.field_2E) + while (TRANSITION_STRUCT.data[3] > TRANSITION_STRUCT.data[5]) { - gUnknown_03004DE0[0][--TRANSITION_STRUCT.field_2A] = (r1) | (r2 << 8); + gUnknown_03004DE0[0][--TRANSITION_STRUCT.data[3]] = (r1) | (r2 << 8); } } @@ -1093,20 +1081,20 @@ static bool8 Phase2_Transition5_Func6(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; - sub_811D8FC(&TRANSITION_STRUCT.field_24, 120, 80, TRANSITION_STRUCT.field_2C, 0, 1, 1); + sub_811D8FC(TRANSITION_STRUCT.data, 120, 80, TRANSITION_STRUCT.data[4], 0, 1, 1); do { s16 r2, r3; - r2 = 120, r3 = TRANSITION_STRUCT.field_28; - if (TRANSITION_STRUCT.field_28 >= 120) + r2 = 120, r3 = TRANSITION_STRUCT.data[2]; + if (TRANSITION_STRUCT.data[2] >= 120) r2 = 0, r3 = 240; - gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r3) | (r2 << 8); + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r3) | (r2 << 8); - } while (!sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1)); + } while (!sub_811D978(TRANSITION_STRUCT.data, 1, 1)); - TRANSITION_STRUCT.field_2C += 16; - if (TRANSITION_STRUCT.field_28 > 120) + TRANSITION_STRUCT.data[4] += 16; + if (TRANSITION_STRUCT.data[2] > 120) task->tState++; TRANSITION_STRUCT.VBlank_DMA++; @@ -1639,12 +1627,12 @@ void sub_811C90C(struct Sprite* sprite) while (gUnknown_083FD880[sprite->data0](sprite)); } -bool8 sub_811C934(struct Sprite* sprite) +static bool8 sub_811C934(struct Sprite* sprite) { return FALSE; } -bool8 sub_811C938(struct Sprite* sprite) +static bool8 sub_811C938(struct Sprite* sprite) { s16 arr0[2]; s16 arr1[2]; @@ -1658,7 +1646,7 @@ bool8 sub_811C938(struct Sprite* sprite) return TRUE; } -bool8 sub_811C984(struct Sprite* sprite) +static bool8 sub_811C984(struct Sprite* sprite) { sprite->pos1.x += sprite->data1; if (sprite->data7 && sprite->pos1.x < 133) @@ -1668,7 +1656,7 @@ bool8 sub_811C984(struct Sprite* sprite) return FALSE; } -bool8 sub_811C9B8(struct Sprite* sprite) +static bool8 sub_811C9B8(struct Sprite* sprite) { sprite->data1 += sprite->data2; sprite->pos1.x += sprite->data1; @@ -1681,7 +1669,7 @@ bool8 sub_811C9B8(struct Sprite* sprite) return FALSE; } -bool8 sub_811C9E4(struct Sprite* sprite) +static bool8 sub_811C9E4(struct Sprite* sprite) { sprite->data1 += sprite->data2; sprite->pos1.x += sprite->data1; @@ -1931,7 +1919,7 @@ static void HBlankCB_Phase2_Transition9(void) REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT]; } -void sub_811CFD0(struct Sprite* sprite) +static void sub_811CFD0(struct Sprite* sprite) { if (sprite->data5) { @@ -2053,7 +2041,7 @@ static bool8 Phase2_Transition11_Func1(struct Task* task) static bool8 Phase2_Transition11_Func2(struct Task* task) { - sub_811D8FC(&TRANSITION_STRUCT.field_24, + sub_811D8FC(TRANSITION_STRUCT.data, gUnknown_083FD8F4[task->data[1]][0], gUnknown_083FD8F4[task->data[1]][1], gUnknown_083FD8F4[task->data[1]][2], @@ -2073,30 +2061,30 @@ static bool8 Phase2_Transition11_Func3(struct Task* task) for (i = 0, nextFunc = FALSE; i < 16; i++) { - s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] >> 8; - s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] & 0xFF; + s16 r3 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] >> 8; + s16 r4 = gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] & 0xFF; if (task->data[2] == 0) { - if (r3 < TRANSITION_STRUCT.field_28) - r3 = TRANSITION_STRUCT.field_28; + if (r3 < TRANSITION_STRUCT.data[2]) + r3 = TRANSITION_STRUCT.data[2]; if (r3 > r4) r3 = r4; } else { - if (r4 > TRANSITION_STRUCT.field_28) - r4 = TRANSITION_STRUCT.field_28; + if (r4 > TRANSITION_STRUCT.data[2]) + r4 = TRANSITION_STRUCT.data[2]; if (r4 <= r3) r4 = r3; } - gUnknown_03004DE0[0][TRANSITION_STRUCT.field_2A] = (r4) | (r3 << 8); + gUnknown_03004DE0[0][TRANSITION_STRUCT.data[3]] = (r4) | (r3 << 8); if (nextFunc) { task->tState++; break; } else - nextFunc = sub_811D978(&TRANSITION_STRUCT.field_24, 1, 1); + nextFunc = sub_811D978(TRANSITION_STRUCT.data, 1, 1); } TRANSITION_STRUCT.VBlank_DMA++; @@ -2265,37 +2253,36 @@ static void sub_811D6E8(s16* array, s16 sinAdd, s16 index, s16 indexIncrementer, } } -void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3) +static void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3) { s16 i; memset(array, 0xA, 160 * sizeof(s16)); for (i = 0; i < 64; i++) { - s16 sinResult, cosResult, r1, r6, r7, r8; - s16 r2, r3; - s16 j; + s16 sinResult, cosResult; + s16 toStoreOrr, r2, r3, toStore, r7, r8; sinResult = Sin(i, a3); cosResult = Cos(i, a3); - r1 = a1 - sinResult; - r6 = a1 + sinResult; + toStoreOrr = a1 - sinResult; + toStore = a1 + sinResult; r7 = a2 - cosResult; r8 = a2 + cosResult; - if (r1 < 0) - r1 = 0; - if (r6 > 0xF0) - r6 = 0xF0; + if (toStoreOrr < 0) + toStoreOrr = 0; + if (toStore > 0xF0) + toStore = 0xF0; if (r7 < 0) r7 = 0; if (r8 > 0x9F) r8 = 0x9F; - r6 |= (r1 << 8); - array[r7] = r6; - array[r8] = r6; + toStore |= (toStoreOrr << 8); + array[r7] = toStore; + array[r8] = toStore; cosResult = Cos(i + 1, a3); r3 = a2 - cosResult; @@ -2306,26 +2293,81 @@ void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3) if (r2 > 0x9F) r2 = 0x9F; - j = r7; - while (j > r3) - { - array[--j] = r6; - } - j = r7; - while (j < r3) - { - array[++j] = r6; - } + while (r7 > r3) + array[--r7] = toStore; + while (r7 < r3) + array[++r7] = toStore; + + while (r8 > r2) + array[--r8] = toStore; + while (r8 < r2) + array[++r8] = toStore; + } +} + +static void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) +{ + a0[0] = a1; + a0[1] = a2; + a0[2] = a1; + a0[3] = a2; + a0[4] = a3; + a0[5] = a4; + a0[6] = a5; + a0[7] = a6; + a0[8] = a3 - a1; + if (a0[8] < 0) + { + a0[8] = -a0[8]; + a0[6] = -a5; + } + a0[9] = a4 - a2; + if (a0[9] < 0) + { + a0[9] = -a0[9]; + a0[7] = -a6; + } + a0[10] = 0; +} - j = r8; - while (j > r2) +static bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2) +{ + u8 var; + if (a0[8] > a0[9]) + { + a0[2] += a0[6]; + a0[10] += a0[9]; + if (a0[10] > a0[8]) { - array[--j] = r6; + a0[3] += a0[7]; + a0[10] -= a0[8]; } - j = r8; - while (j < r2) + } + else + { + a0[3] += a0[7]; + a0[10] += a0[8]; + if (a0[10] > a0[9]) { - array[++j] = r6; + a0[2] += a0[6]; + a0[10] -= a0[9]; } } + var = 0; + if ((a0[6] > 0 && a0[2] >= a0[4]) || (a0[6] < 0 && a0[2] <= a0[4])) + { + var++; + if (a1) + a0[2] = a0[4]; + } + if ((a0[7] > 0 && a0[3] >= a0[5]) || (a0[7] < 0 && a0[3] <= a0[5])) + { + var++; + if (a2) + a0[3] = a0[5]; + } + if (var == 2) + return TRUE; + else + return FALSE; } -- cgit v1.2.3 From aa3988cc1ace31f97590b4ac3b33c4fa3a5e13dc Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 22 Aug 2017 20:51:53 +0200 Subject: move all data to C --- src/battle_transition.c | 328 ++++++++++++++++++++++++++++++++++-------------- 1 file changed, 234 insertions(+), 94 deletions(-) (limited to 'src') diff --git a/src/battle_transition.c b/src/battle_transition.c index 88d3330f9..363a52148 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -15,12 +15,13 @@ void sub_807DE10(void); void dp12_8087EA4(void); -void sub_811C90C(struct Sprite* sprite); extern u8 ewram[]; -extern s16 gUnknown_03005560[]; +extern u16 gUnknown_03005560[]; extern u16 gUnknown_03004DE0[][0x3C0]; +extern const struct OamData gFieldOamData_32x32; + struct TransitionData { vs8 VBlank_DMA; @@ -32,15 +33,15 @@ struct TransitionData u16 field_C; u16 BLDCNT; u16 BLDALPHA; - u16 field_12; + u16 BLDY; s16 field_14; s16 field_16; s16 field_18; s16 field_1A; s16 field_1C; - s16 field_1E; + s16 field_1E; // unused s16 field_20; - s16 field_22; + s16 field_22; // unused s16 data[11]; }; @@ -171,16 +172,18 @@ static void sub_811D764(u16* a0, s16 a1, s16 a2, s16 a3); static void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6); static bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2); static void sub_811CFD0(struct Sprite* sprite); +static void sub_811B720(struct Sprite* sprite); +static void sub_811C90C(struct Sprite* sprite); // const data -static const u32 gUnknown_083FBB88[] = INCBIN_U32("graphics/battle_transitions/big_pokeball.4bpp"); -static const u32 gUnknown_083FC108[] = INCBIN_U32("graphics/battle_transitions/pokeball_trail.4bpp"); -const u32 gSpriteImage_83FC148[] = INCBIN_U32("graphics/battle_transitions/pokeball.4bpp"); -static const u32 gUnknown_083FC348[] = INCBIN_U32("graphics/battle_transitions/elite_four_bg.4bpp"); -const u32 gSpriteImage_83FC528[] = INCBIN_U32("graphics/battle_transitions/unused_brendan.4bpp"); -const u32 gSpriteImage_83FCD28[] = INCBIN_U32("graphics/battle_transitions/unused_lass.4bpp"); -const u32 gUnknown_083FD528[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp"); +static const u32 sBigPokeball_Tileset[] = INCBIN_U32("graphics/battle_transitions/big_pokeball.4bpp"); +static const u32 sPokeballTrail_Tileset[] = INCBIN_U32("graphics/battle_transitions/pokeball_trail.4bpp"); +static const u8 sSpriteImage_83FC148[] = INCBIN_U8("graphics/battle_transitions/pokeball.4bpp"); +static const u32 sUnknown_083FC348[] = INCBIN_U32("graphics/battle_transitions/elite_four_bg.4bpp"); +static const u8 sSpriteImage_83FC528[] = INCBIN_U8("graphics/battle_transitions/unused_brendan.4bpp"); +static const u8 sSpriteImage_83FCD28[] = INCBIN_U8("graphics/battle_transitions/unused_lass.4bpp"); +static const u32 sShrinkingBoxTileset[] = INCBIN_U32("graphics/battle_transitions/shrinking_box.4bpp"); static struct TransitionData * const sTransitionStructPtr = &TRANSITION_STRUCT; @@ -254,9 +257,9 @@ static const TransitionState sPhase2_Transition4_Funcs[] = &Phase2_Transition4_Func3 }; -static const s16 gUnknown_083FD7E4[2] = {-16, 256}; -static const s16 gUnknown_083FD7E8[5] = {0, 32, 64, 18, 48}; -static const s16 gUnknown_083FD7F2[2] = {8, -8}; +static const s16 sUnknown_083FD7E4[2] = {-16, 256}; +static const s16 sUnknown_083FD7E8[5] = {0, 32, 64, 18, 48}; +static const s16 sUnknown_083FD7F2[2] = {8, -8}; static const TransitionState sPhase2_Transition5_Funcs[] = { @@ -314,7 +317,7 @@ static const s16 sMugshotsOpponentCoords[MUGSHOTS_NO][2] = {0, 7}, }; -static const TransitionSpriteCallback gUnknown_083FD880[] = +static const TransitionSpriteCallback sUnknown_083FD880[] = { &sub_811C934, &sub_811C938, @@ -325,8 +328,8 @@ static const TransitionSpriteCallback gUnknown_083FD880[] = &sub_811C934 }; -static const s16 gUnknown_083FD89C[2] = {12, -12}; -static const s16 gUnknown_083FD8A0[2] = {-1, 1}; +static const s16 sUnknown_083FD89C[2] = {12, -12}; +static const s16 sUnknown_083FD8A0[2] = {-1, 1}; static const TransitionState sPhase2_Transition8_Funcs[] = { @@ -344,7 +347,7 @@ static const TransitionState sPhase2_Transition9_Funcs[] = &Phase2_Transition9_Func5 }; -static const s16 gUnknown_083FD8C4[8] = {0, 20, 15, 40, 10, 25, 35, 5}; +static const s16 sUnknown_083FD8C4[8] = {0, 20, 15, 40, 10, 25, 35, 5}; static const TransitionState sPhase2_Transition10_Funcs[] = { @@ -362,7 +365,7 @@ static const TransitionState sPhase2_Transition11_Funcs[] = &Phase2_Transition11_Func5 }; -static const s16 gUnknown_083FD8F4[][5] = +static const s16 sUnknown_083FD8F4[][5] = { {56, 0, 0, 160, 0}, {104, 160, 240, 88, 1}, @@ -373,7 +376,7 @@ static const s16 gUnknown_083FD8F4[][5] = {168, 160, 48, 0, 1}, }; -static const s16 gUnknown_083FD93A[] = {8, 4, 2, 1, 1, 1, 0}; +static const s16 sUnknown_083FD93A[] = {8, 4, 2, 1, 1, 1, 0}; static const TransitionState sPhase1_TransitionAll_Funcs[] = { @@ -381,12 +384,149 @@ static const TransitionState sPhase1_TransitionAll_Funcs[] = &Phase1_TransitionAll_Func2 }; -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]; +static const struct SpriteFrameImage sSpriteImageTable_83FD950[] = +{ + sSpriteImage_83FC148, 0x200 +}; + +static const union AnimCmd sSpriteAnim_83FD958[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_83FD960[] = +{ + sSpriteAnim_83FD958 +}; + +static const union AffineAnimCmd sSpriteAffineAnim_83FD964[] = +{ + AFFINEANIMCMD_FRAME(0, 0, -4, 1), + AFFINEANIMCMD_JUMP(0) +}; + +static const union AffineAnimCmd sSpriteAffineAnim_83FD974[] = +{ + AFFINEANIMCMD_FRAME(0, 0, 4, 1), + AFFINEANIMCMD_JUMP(0) +}; + +static const union AffineAnimCmd *const sSpriteAffineAnimTable_83FD984[] = +{ + sSpriteAffineAnim_83FD964, + sSpriteAffineAnim_83FD974 +}; + +static const struct SpriteTemplate sSpriteTemplate_83FD98C = +{ + .tileTag = 0xFFFF, + .paletteTag = 4105, + .oam = &gFieldOamData_32x32, + .anims = sSpriteAnimTable_83FD960, + .images = sSpriteImageTable_83FD950, + .affineAnims = sSpriteAffineAnimTable_83FD984, + .callback = sub_811B720 +}; + +static const struct OamData gOamData_83FD9A4 = +{ + .y = 0, + .affineMode = 0, + .objMode = 0, + .mosaic = 0, + .bpp = 0, + .shape = 0, + .x = 0, + .matrixNum = 0, + .size = 3, + .tileNum = 0, + .priority = 0, + .paletteNum = 0, + .affineParam = 0, +}; + +static const struct SpriteFrameImage sSpriteImageTable_83FD9AC[] = +{ + sSpriteImage_83FC528, 0x800 +}; + +static const struct SpriteFrameImage sSpriteImageTable_83FD9B4[] = +{ + sSpriteImage_83FCD28, 0x800 +}; + +static const union AnimCmd sSpriteAnim_83FD9BC[] = +{ + ANIMCMD_FRAME(0, 1), + ANIMCMD_END +}; + +static const union AnimCmd *const sSpriteAnimTable_83FD9C4[] = +{ + sSpriteAnim_83FD9BC +}; + +static const struct SpriteTemplate sSpriteTemplate_83FD9C8 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4106, + .oam = &gOamData_83FD9A4, + .anims = sSpriteAnimTable_83FD9C4, + .images = sSpriteImageTable_83FD9AC, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_811C90C +}; + +static const struct SpriteTemplate sSpriteTemplate_83FD9E0 = +{ + .tileTag = 0xFFFF, + .paletteTag = 4106, + .oam = &gOamData_83FD9A4, + .anims = sSpriteAnimTable_83FD9C4, + .images = sSpriteImageTable_83FD9B4, + .affineAnims = gDummySpriteAffineAnimTable, + .callback = sub_811C90C +}; + +static const u16 gFieldEffectObjectPalette10[] = INCBIN_U16("graphics/field_effect_objects/palettes/10.gbapal"); + +const struct SpritePalette gFieldEffectObjectPaletteInfo10 = +{ + gFieldEffectObjectPalette10, 0x1009 +}; + +static const u16 sMugshotPal_Sydney[] = INCBIN_U16("graphics/battle_transitions/sidney_bg.gbapal"); +static const u16 sMugshotPal_Phoebe[] = INCBIN_U16("graphics/battle_transitions/phoebe_bg.gbapal"); +static const u16 sMugshotPal_Glacia[] = INCBIN_U16("graphics/battle_transitions/glacia_bg.gbapal"); +static const u16 sMugshotPal_Drake[] = INCBIN_U16("graphics/battle_transitions/drake_bg.gbapal"); +static const u16 sMugshotPal_Steven[] = INCBIN_U16("graphics/battle_transitions/steven_bg.gbapal"); +static const u16 sMugshotPal_Brendan[] = INCBIN_U16("graphics/battle_transitions/brendan_bg.gbapal"); +static const u16 sMugshotPal_May[] = INCBIN_U16("graphics/battle_transitions/may_bg.gbapal"); + +static const u16 * const sOpponentMugshotsPals[MUGSHOTS_NO] = +{ + sMugshotPal_Sydney, + sMugshotPal_Phoebe, + sMugshotPal_Glacia, + sMugshotPal_Drake, + sMugshotPal_Steven +}; + +static const u16 * const sPlayerMugshotsPals[2] = +{ + sMugshotPal_Brendan, + sMugshotPal_May +}; + +static const u16 sUnusedTrainerPalette[] = INCBIN_U16("graphics/battle_transitions/unused_trainer.gbapal"); +static const struct SpritePalette sSpritePalette_UnusedTrainer = +{ + sUnusedTrainerPalette, 0x100A +}; + +static const u16 sBigPokeball_Tilemap[] = INCBIN_U16("graphics/battle_transitions/big_pokeball_map.bin"); +static const u16 sMugshotsTilemap[] = INCBIN_U16("graphics/battle_transitions/elite_four_bg_map.bin"); // actual code starts here @@ -683,7 +823,7 @@ static bool8 Phase2_Transition3_Func1(struct Task* task) sub_811D6A8(&dst1, & dst2); CpuFill16(0, dst1, 0x800); - CpuSet(gUnknown_083FBB88, dst2, 0x2C0); + CpuSet(sBigPokeball_Tileset, dst2, 0x2C0); LoadPalette(gFieldEffectObjectPalette10, 240, 32); task->tState++; @@ -694,15 +834,15 @@ static bool8 Phase2_Transition3_Func2(struct Task* task) { s16 i, j; u16 *dst1, *dst2; - const u16* var; + const u16* BigPokeballMap; - var = gUnknown_083FDB44; + BigPokeballMap = sBigPokeball_Tilemap; sub_811D6A8(&dst1, &dst2); for (i = 0; i < 20; i++) { - for (j = 0; j < 30; j++, var++) + for (j = 0; j < 30; j++, BigPokeballMap++) { - dst1[i * 32 + j] = *var | 0xF000; + dst1[i * 32 + j] = *BigPokeballMap | 0xF000; } } sub_811D6E8(gUnknown_03004DE0[0], 0, task->data[4], 132, task->data[5], 160); @@ -834,7 +974,7 @@ static bool8 Phase2_Transition4_Func1(struct Task* task) u16 *dst1, *dst2; sub_811D6A8(&dst1, &dst2); - CpuSet(gUnknown_083FC108, dst2, 0x20); + CpuSet(sPokeballTrail_Tileset, dst2, 0x20); CpuFill32(0, dst1, 0x800); LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); @@ -849,8 +989,8 @@ static bool8 Phase2_Transition4_Func2(struct Task* task) s16 arr0[2]; s16 arr1[5]; - memcpy(arr0, gUnknown_083FD7E4, sizeof(gUnknown_083FD7E4)); - memcpy(arr1, gUnknown_083FD7E8, sizeof(gUnknown_083FD7E8)); + memcpy(arr0, sUnknown_083FD7E4, sizeof(sUnknown_083FD7E4)); + memcpy(arr1, sUnknown_083FD7E8, sizeof(sUnknown_083FD7E8)); rand = Random() & 1; for (i = 0; i <= 4; i++, rand ^= 1) { @@ -877,7 +1017,7 @@ static bool8 Phase2_Transition4_Func3(struct Task* task) bool8 FldEff_Pokeball(void) { - u8 spriteID = CreateSpriteAtEnd(&gSpriteTemplate_83FD98C, gUnknown_0202FF84[0], gUnknown_0202FF84[1], 0); + u8 spriteID = CreateSpriteAtEnd(&sSpriteTemplate_83FD98C, gUnknown_0202FF84[0], gUnknown_0202FF84[1], 0); gSprites[spriteID].oam.priority = 0; gSprites[spriteID].oam.affineMode = 1; gSprites[spriteID].data0 = gUnknown_0202FF84[2]; @@ -894,11 +1034,11 @@ bool8 FldEff_Pokeball(void) ptr[index] = toStore; \ } -void sub_811B720(struct Sprite* sprite) +static void sub_811B720(struct Sprite* sprite) { s16 arr0[2]; - memcpy(arr0, gUnknown_083FD7F2, sizeof(gUnknown_083FD7F2)); + memcpy(arr0, sUnknown_083FD7F2, sizeof(sUnknown_083FD7F2)); if (sprite->data1 != 0) sprite->data1--; else @@ -1348,19 +1488,19 @@ static bool8 Phase2_Mugshot_Func2(struct Task* task) { s16 i, j; u16 *dst1, *dst2; - const u16* var; + const u16* MugshotsMap; - var = gUnknown_083FDFF4; + MugshotsMap = sMugshotsTilemap; sub_811D6A8(&dst1, &dst2); - CpuSet(gUnknown_083FC348, dst2, 0xF0); + CpuSet(sUnknown_083FC348, dst2, 0xF0); LoadPalette(sOpponentMugshotsPals[task->tMugshotID], 0xF0, 0x20); LoadPalette(sPlayerMugshotsPals[gSaveBlock2.playerGender], 0xFA, 0xC); for (i = 0; i < 20; i++) { - for (j = 0; j < 32; j++, var++) + for (j = 0; j < 32; j++, MugshotsMap++) { - dst1[i * 32 + j] = *var | 0xF000; + dst1[i * 32 + j] = *MugshotsMap | 0xF000; } } @@ -1622,9 +1762,9 @@ static void Mugshots_CreateOpponentPlayerSprites(struct Task* task) SetOamMatrixRotationScaling(playerSprite->oam.matrixNum, -512, 0x200, 0); } -void sub_811C90C(struct Sprite* sprite) +static void sub_811C90C(struct Sprite* sprite) { - while (gUnknown_083FD880[sprite->data0](sprite)); + while (sUnknown_083FD880[sprite->data0](sprite)); } static bool8 sub_811C934(struct Sprite* sprite) @@ -1637,8 +1777,8 @@ static bool8 sub_811C938(struct Sprite* sprite) s16 arr0[2]; s16 arr1[2]; - memcpy(arr0, gUnknown_083FD89C, sizeof(gUnknown_083FD89C)); - memcpy(arr1, gUnknown_083FD8A0, sizeof(gUnknown_083FD8A0)); + memcpy(arr0, sUnknown_083FD89C, sizeof(sUnknown_083FD89C)); + memcpy(arr1, sUnknown_083FD8A0, sizeof(sUnknown_083FD8A0)); sprite->data0++; sprite->data1 = arr0[sprite->data7]; @@ -1809,7 +1949,7 @@ static bool8 Phase2_Transition9_Func1(struct Task* task) dp12_8087EA4(); TRANSITION_STRUCT.BLDCNT = 0xBF; - TRANSITION_STRUCT.field_12 = 0; + TRANSITION_STRUCT.BLDY = 0; TRANSITION_STRUCT.WININ = 0x1E; TRANSITION_STRUCT.WINOUT = 0x3F; TRANSITION_STRUCT.WIN0V = 0xA0; @@ -1836,7 +1976,7 @@ static bool8 Phase2_Transition9_Func2(struct Task* task) s16 arr1[8]; struct Sprite* sprite; - memcpy(arr1, gUnknown_083FD8C4, sizeof(gUnknown_083FD8C4)); + memcpy(arr1, sUnknown_083FD8C4, sizeof(sUnknown_083FD8C4)); for (i = 0, posY = 0; i < 8; i++, posY += 0x14) { sprite = &gSprites[CreateInvisibleSprite(sub_811CFD0)]; @@ -1870,7 +2010,7 @@ static bool8 Phase2_Transition9_Func4(struct Task* task) SetHBlankCallback(0); TRANSITION_STRUCT.field_6 = 0xF0; - TRANSITION_STRUCT.field_12 = 0; + TRANSITION_STRUCT.BLDY = 0; TRANSITION_STRUCT.BLDCNT = 0xFF; TRANSITION_STRUCT.WININ = 0x3F; @@ -1882,7 +2022,7 @@ static bool8 Phase2_Transition9_Func4(struct Task* task) static bool8 Phase2_Transition9_Func5(struct Task* task) { - if (++TRANSITION_STRUCT.field_12 > 16) + if (++TRANSITION_STRUCT.BLDY > 16) { sub_811D6D4(); DestroyTask(FindTaskIdByFunc(Phase2Task_Transition9)); @@ -1906,7 +2046,7 @@ static void VBlankCB0_Phase2_Transition9(void) static void VBlankCB1_Phase2_Transition9(void) { VBlankCB_BattleTransition(); - REG_BLDY = TRANSITION_STRUCT.field_12; + REG_BLDY = TRANSITION_STRUCT.BLDY; REG_BLDCNT = TRANSITION_STRUCT.BLDCNT; REG_WININ = TRANSITION_STRUCT.WININ; REG_WINOUT = TRANSITION_STRUCT.WINOUT; @@ -1972,7 +2112,7 @@ static bool8 Phase2_Transition10_Func1(struct Task* task) u16 *dst1, *dst2; sub_811D6A8(&dst1, &dst2); - CpuSet(gUnknown_083FD528, dst2, 0x10); + CpuSet(sShrinkingBoxTileset, dst2, 0x10); CpuFill16(0xF000, dst1, 0x800); LoadPalette(gFieldEffectObjectPalette10, 0xF0, 0x20); @@ -1989,7 +2129,7 @@ static bool8 Phase2_Transition10_Func2(struct Task* task) sub_811D690(&dst1); task->data[1] = 3; task->data[2]++; - CpuSet(gUnknown_083FD528 + (task->data[2] * 8), dst1, 0x10); + CpuSet(sShrinkingBoxTileset + (task->data[2] * 8), dst1, 0x10); if (task->data[2] > 0xD) { task->tState++; @@ -2042,12 +2182,12 @@ static bool8 Phase2_Transition11_Func1(struct Task* task) static bool8 Phase2_Transition11_Func2(struct Task* task) { sub_811D8FC(TRANSITION_STRUCT.data, - gUnknown_083FD8F4[task->data[1]][0], - gUnknown_083FD8F4[task->data[1]][1], - gUnknown_083FD8F4[task->data[1]][2], - gUnknown_083FD8F4[task->data[1]][3], + sUnknown_083FD8F4[task->data[1]][0], + sUnknown_083FD8F4[task->data[1]][1], + sUnknown_083FD8F4[task->data[1]][2], + sUnknown_083FD8F4[task->data[1]][3], 1, 1); - task->data[2] = gUnknown_083FD8F4[task->data[1]][4]; + task->data[2] = sUnknown_083FD8F4[task->data[1]][4]; task->tState++; return TRUE; } @@ -2096,7 +2236,7 @@ static bool8 Phase2_Transition11_Func4(struct Task* task) if (++task->data[1] < 7) { task->tState++; - task->data[3] = gUnknown_083FD93A[task->data[1] - 1]; + task->data[3] = sUnknown_083FD93A[task->data[1] - 1]; return TRUE; } else @@ -2305,66 +2445,66 @@ static void sub_811D764(u16* array, s16 a1, s16 a2, s16 a3) } } -static void sub_811D8FC(s16* a0, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) +static void sub_811D8FC(s16* data, s16 a1, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) { - a0[0] = a1; - a0[1] = a2; - a0[2] = a1; - a0[3] = a2; - a0[4] = a3; - a0[5] = a4; - a0[6] = a5; - a0[7] = a6; - a0[8] = a3 - a1; - if (a0[8] < 0) + data[0] = a1; + data[1] = a2; + data[2] = a1; + data[3] = a2; + data[4] = a3; + data[5] = a4; + data[6] = a5; + data[7] = a6; + data[8] = a3 - a1; + if (data[8] < 0) { - a0[8] = -a0[8]; - a0[6] = -a5; + data[8] = -data[8]; + data[6] = -a5; } - a0[9] = a4 - a2; - if (a0[9] < 0) + data[9] = a4 - a2; + if (data[9] < 0) { - a0[9] = -a0[9]; - a0[7] = -a6; + data[9] = -data[9]; + data[7] = -a6; } - a0[10] = 0; + data[10] = 0; } -static bool8 sub_811D978(s16* a0, bool8 a1, bool8 a2) +static bool8 sub_811D978(s16* data, bool8 a1, bool8 a2) { u8 var; - if (a0[8] > a0[9]) + if (data[8] > data[9]) { - a0[2] += a0[6]; - a0[10] += a0[9]; - if (a0[10] > a0[8]) + data[2] += data[6]; + data[10] += data[9]; + if (data[10] > data[8]) { - a0[3] += a0[7]; - a0[10] -= a0[8]; + data[3] += data[7]; + data[10] -= data[8]; } } else { - a0[3] += a0[7]; - a0[10] += a0[8]; - if (a0[10] > a0[9]) + data[3] += data[7]; + data[10] += data[8]; + if (data[10] > data[9]) { - a0[2] += a0[6]; - a0[10] -= a0[9]; + data[2] += data[6]; + data[10] -= data[9]; } } var = 0; - if ((a0[6] > 0 && a0[2] >= a0[4]) || (a0[6] < 0 && a0[2] <= a0[4])) + if ((data[6] > 0 && data[2] >= data[4]) || (data[6] < 0 && data[2] <= data[4])) { var++; if (a1) - a0[2] = a0[4]; + data[2] = data[4]; } - if ((a0[7] > 0 && a0[3] >= a0[5]) || (a0[7] < 0 && a0[3] <= a0[5])) + if ((data[7] > 0 && data[3] >= data[5]) || (data[7] < 0 && data[3] <= data[5])) { var++; if (a2) - a0[3] = a0[5]; + data[3] = data[5]; } if (var == 2) return TRUE; -- cgit v1.2.3 From c8d77612267c04444b5318f3e058d0a77859a3db Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Tue, 22 Aug 2017 21:19:55 +0200 Subject: meaningful names to transitions given --- src/battle_transition.c | 558 ++++++++++++++++++++++++------------------------ 1 file changed, 279 insertions(+), 279 deletions(-) (limited to 'src') diff --git a/src/battle_transition.c b/src/battle_transition.c index 363a52148..35f001bc7 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -53,18 +53,18 @@ typedef bool8 (*TransitionSpriteCallback)(struct Sprite* sprite); static void LaunchBattleTransitionTask(u8 transitionID); static void Task_BattleTransitionMain(u8 taskID); static void Phase1Task_TransitionAll(u8 taskID); -static void Phase2Task_Transition0(u8 taskID); -static void Phase2Task_Transition1(u8 taskID); -static void Phase2Task_Transition2(u8 taskID); -static void Phase2Task_Transition3(u8 taskID); -static void Phase2Task_Transition4(u8 taskID); -static void Phase2Task_Transition5(u8 taskID); -static void Phase2Task_Transition6(u8 taskID); -static void Phase2Task_Transition7(u8 taskID); -static void Phase2Task_Transition8(u8 taskID); -static void Phase2Task_Transition9(u8 taskID); -static void Phase2Task_Transition10(u8 taskID); -static void Phase2Task_Transition11(u8 taskID); +static void Phase2Task_Transition_Blur(u8 taskID); +static void Phase2Task_Transition_Swirl(u8 taskID); +static void Phase2Task_Transition_Shuffle(u8 taskID); +static void Phase2Task_Transition_BigPokeball(u8 taskID); +static void Phase2Task_Transition_PokeballsTrail(u8 taskID); +static void Phase2Task_Transition_Clockwise_BlackFade(u8 taskID); +static void Phase2Task_Transition_Ripple(u8 taskID); +static void Phase2Task_Transition_Wave(u8 taskID); +static void Phase2Task_Transition_Slice(u8 taskID); +static void Phase2Task_Transition_WhiteFade(u8 taskID); +static void Phase2Task_Transition_GridSquares(u8 taskID); +static void Phase2Task_Transition_Shards(u8 taskID); static void Phase2Task_Transition_Sydney(u8 taskID); static void Phase2Task_Transition_Phoebe(u8 taskID); static void Phase2Task_Transition_Glacia(u8 taskID); @@ -74,69 +74,69 @@ static bool8 Transition_Phase1(struct Task* task); static bool8 Transition_WaitForPhase1(struct Task* task); static bool8 Transition_Phase2(struct Task* task); static bool8 Transition_WaitForPhase2(struct Task* task); -static void VBlankCB_Phase2_Transition1(void); -static void HBlankCB_Phase2_Transition1(void); -static void VBlankCB_Phase2_Transition2(void); -static void HBlankCB_Phase2_Transition2(void); -static void VBlankCB0_Phase2_Transition3(void); -static void VBlankCB1_Phase2_Transition3(void); -static void VBlankCB_Phase2_Transition5(void); -static void VBlankCB_Phase2_Transition6(void); -static void HBlankCB_Phase2_Transition6(void); -static void VBlankCB_Phase2_Transition7(void); -static void VBlankCB_Phase2_Transition8(void); -static void HBlankCB_Phase2_Transition8(void); -static void VBlankCB0_Phase2_Transition9(void); -static void VBlankCB1_Phase2_Transition9(void); -static void HBlankCB_Phase2_Transition9(void); +static void VBlankCB_Phase2_Transition_Swirl(void); +static void HBlankCB_Phase2_Transition_Swirl(void); +static void VBlankCB_Phase2_Transition_Shuffle(void); +static void HBlankCB_Phase2_Transition_Shuffle(void); +static void VBlankCB0_Phase2_Transition_BigPokeball(void); +static void VBlankCB1_Phase2_Transition_BigPokeball(void); +static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void); +static void VBlankCB_Phase2_Transition_Ripple(void); +static void HBlankCB_Phase2_Transition_Ripple(void); +static void VBlankCB_Phase2_Transition_Wave(void); +static void VBlankCB_Phase2_Transition_Slice(void); +static void HBlankCB_Phase2_Transition_Slice(void); +static void VBlankCB0_Phase2_Transition_WhiteFade(void); +static void VBlankCB1_Phase2_Transition_WhiteFade(void); +static void HBlankCB_Phase2_Transition_WhiteFade(void); static void VBlankCB0_Phase2_Mugshots(void); static void VBlankCB1_Phase2_Mugshots(void); static void HBlankCB_Phase2_Mugshots(void); -static void VBlankCB_Phase2_Transition11(void); -static bool8 Phase2_Transition0_Func1(struct Task* task); -static bool8 Phase2_Transition0_Func2(struct Task* task); -static bool8 Phase2_Transition0_Func3(struct Task* task); -static bool8 Phase2_Transition1_Func1(struct Task* task); -static bool8 Phase2_Transition1_Func2(struct Task* task); -static bool8 Phase2_Transition2_Func1(struct Task* task); -static bool8 Phase2_Transition2_Func2(struct Task* task); -static bool8 Phase2_Transition3_Func1(struct Task* task); -static bool8 Phase2_Transition3_Func2(struct Task* task); -static bool8 Phase2_Transition3_Func3(struct Task* task); -static bool8 Phase2_Transition3_Func4(struct Task* task); -static bool8 Phase2_Transition3_Func5(struct Task* task); -static bool8 Phase2_Transition3_Func6(struct Task* task); -static bool8 Phase2_Transition4_Func1(struct Task* task); -static bool8 Phase2_Transition4_Func2(struct Task* task); -static bool8 Phase2_Transition4_Func3(struct Task* task); -static bool8 Phase2_Transition5_Func1(struct Task* task); -static bool8 Phase2_Transition5_Func2(struct Task* task); -static bool8 Phase2_Transition5_Func3(struct Task* task); -static bool8 Phase2_Transition5_Func4(struct Task* task); -static bool8 Phase2_Transition5_Func5(struct Task* task); -static bool8 Phase2_Transition5_Func6(struct Task* task); -static bool8 Phase2_Transition5_Func7(struct Task* task); -static bool8 Phase2_Transition6_Func1(struct Task* task); -static bool8 Phase2_Transition6_Func2(struct Task* task); -static bool8 Phase2_Transition7_Func1(struct Task* task); -static bool8 Phase2_Transition7_Func2(struct Task* task); -static bool8 Phase2_Transition7_Func3(struct Task* task); -static bool8 Phase2_Transition8_Func1(struct Task* task); -static bool8 Phase2_Transition8_Func2(struct Task* task); -static bool8 Phase2_Transition8_Func3(struct Task* task); -static bool8 Phase2_Transition9_Func1(struct Task* task); -static bool8 Phase2_Transition9_Func2(struct Task* task); -static bool8 Phase2_Transition9_Func3(struct Task* task); -static bool8 Phase2_Transition9_Func4(struct Task* task); -static bool8 Phase2_Transition9_Func5(struct Task* task); -static bool8 Phase2_Transition10_Func1(struct Task* task); -static bool8 Phase2_Transition10_Func2(struct Task* task); -static bool8 Phase2_Transition10_Func3(struct Task* task); -static bool8 Phase2_Transition11_Func1(struct Task* task); -static bool8 Phase2_Transition11_Func2(struct Task* task); -static bool8 Phase2_Transition11_Func3(struct Task* task); -static bool8 Phase2_Transition11_Func4(struct Task* task); -static bool8 Phase2_Transition11_Func5(struct Task* task); +static void VBlankCB_Phase2_Transition_Shards(void); +static bool8 Phase2_Transition_Blur_Func1(struct Task* task); +static bool8 Phase2_Transition_Blur_Func2(struct Task* task); +static bool8 Phase2_Transition_Blur_Func3(struct Task* task); +static bool8 Phase2_Transition_Swirl_Func1(struct Task* task); +static bool8 Phase2_Transition_Swirl_Func2(struct Task* task); +static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task); +static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task); +static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task); +static bool8 Phase2_Transition_PokeballsTrail_Func1(struct Task* task); +static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task); +static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task); +static bool8 Phase2_Transition_Clockwise_BlackFade_Func7(struct Task* task); +static bool8 Phase2_Transition_Ripple_Func1(struct Task* task); +static bool8 Phase2_Transition_Ripple_Func2(struct Task* task); +static bool8 Phase2_Transition_Wave_Func1(struct Task* task); +static bool8 Phase2_Transition_Wave_Func2(struct Task* task); +static bool8 Phase2_Transition_Wave_Func3(struct Task* task); +static bool8 Phase2_Transition_Slice_Func1(struct Task* task); +static bool8 Phase2_Transition_Slice_Func2(struct Task* task); +static bool8 Phase2_Transition_Slice_Func3(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func2(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func3(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func4(struct Task* task); +static bool8 Phase2_Transition_WhiteFade_Func5(struct Task* task); +static bool8 Phase2_Transition_GridSquares_Func1(struct Task* task); +static bool8 Phase2_Transition_GridSquares_Func2(struct Task* task); +static bool8 Phase2_Transition_GridSquares_Func3(struct Task* task); +static bool8 Phase2_Transition_Shards_Func1(struct Task* task); +static bool8 Phase2_Transition_Shards_Func2(struct Task* task); +static bool8 Phase2_Transition_Shards_Func3(struct Task* task); +static bool8 Phase2_Transition_Shards_Func4(struct Task* task); +static bool8 Phase2_Transition_Shards_Func5(struct Task* task); static bool8 Phase2_Mugshot_Func1(struct Task* task); static bool8 Phase2_Mugshot_Func2(struct Task* task); static bool8 Phase2_Mugshot_Func3(struct Task* task); @@ -194,23 +194,23 @@ static const TaskFunc sPhase1_Tasks[TRANSITIONS_NO] = static const TaskFunc sPhase2_Tasks[TRANSITIONS_NO] = { - &Phase2Task_Transition0, // 0 - &Phase2Task_Transition1, // 1 - &Phase2Task_Transition2, // 2 - &Phase2Task_Transition3, // 3 - &Phase2Task_Transition4, // 4 - &Phase2Task_Transition5, // 5 - &Phase2Task_Transition6, // 6 - &Phase2Task_Transition7, // 7 - &Phase2Task_Transition8, // 8 - &Phase2Task_Transition9, // 9 - &Phase2Task_Transition10, // 10 - &Phase2Task_Transition11, // 11 - &Phase2Task_Transition_Sydney, // 12 - &Phase2Task_Transition_Phoebe, // 13 - &Phase2Task_Transition_Glacia, // 14 - &Phase2Task_Transition_Drake, // 15 - &Phase2Task_Transition_Steven, // 16 + Phase2Task_Transition_Blur, // 0 + Phase2Task_Transition_Swirl, // 1 + Phase2Task_Transition_Shuffle, // 2 + Phase2Task_Transition_BigPokeball, // 3 + Phase2Task_Transition_PokeballsTrail, // 4 + Phase2Task_Transition_Clockwise_BlackFade, // 5 + Phase2Task_Transition_Ripple, // 6 + Phase2Task_Transition_Wave, // 7 + Phase2Task_Transition_Slice, // 8 + Phase2Task_Transition_WhiteFade, // 9 + Phase2Task_Transition_GridSquares, // 10 + Phase2Task_Transition_Shards, // 11 + Phase2Task_Transition_Sydney, // 12 + Phase2Task_Transition_Phoebe, // 13 + Phase2Task_Transition_Glacia, // 14 + Phase2Task_Transition_Drake, // 15 + Phase2Task_Transition_Steven, // 16 }; static const TransitionState sMainTransitionPhases[] = @@ -221,82 +221,82 @@ static const TransitionState sMainTransitionPhases[] = &Transition_WaitForPhase2 }; -static const TransitionState sPhase2_Transition0_Funcs[] = +static const TransitionState sPhase2_Transition_Blur_Funcs[] = { - &Phase2_Transition0_Func1, - &Phase2_Transition0_Func2, - &Phase2_Transition0_Func3 + Phase2_Transition_Blur_Func1, + Phase2_Transition_Blur_Func2, + Phase2_Transition_Blur_Func3 }; -static const TransitionState sPhase2_Transition1_Funcs[] = +static const TransitionState sPhase2_Transition_Swirl_Funcs[] = { - &Phase2_Transition1_Func1, - &Phase2_Transition1_Func2, + Phase2_Transition_Swirl_Func1, + Phase2_Transition_Swirl_Func2, }; -static const TransitionState sPhase2_Transition2_Funcs[] = +static const TransitionState sPhase2_Transition_Shuffle_Funcs[] = { - &Phase2_Transition2_Func1, - &Phase2_Transition2_Func2, + Phase2_Transition_Shuffle_Func1, + Phase2_Transition_Shuffle_Func2, }; -static const TransitionState sPhase2_Transition3_Funcs[] = +static const TransitionState sPhase2_Transition_BigPokeball_Funcs[] = { - &Phase2_Transition3_Func1, - &Phase2_Transition3_Func2, - &Phase2_Transition3_Func3, - &Phase2_Transition3_Func4, - &Phase2_Transition3_Func5, - &Phase2_Transition3_Func6 + Phase2_Transition_BigPokeball_Func1, + Phase2_Transition_BigPokeball_Func2, + Phase2_Transition_BigPokeball_Func3, + Phase2_Transition_BigPokeball_Func4, + Phase2_Transition_BigPokeball_Func5, + Phase2_Transition_BigPokeball_Func6 }; -static const TransitionState sPhase2_Transition4_Funcs[] = +static const TransitionState sPhase2_Transition_PokeballsTrail_Funcs[] = { - &Phase2_Transition4_Func1, - &Phase2_Transition4_Func2, - &Phase2_Transition4_Func3 + Phase2_Transition_PokeballsTrail_Func1, + Phase2_Transition_PokeballsTrail_Func2, + Phase2_Transition_PokeballsTrail_Func3 }; static const s16 sUnknown_083FD7E4[2] = {-16, 256}; static const s16 sUnknown_083FD7E8[5] = {0, 32, 64, 18, 48}; static const s16 sUnknown_083FD7F2[2] = {8, -8}; -static const TransitionState sPhase2_Transition5_Funcs[] = +static const TransitionState sPhase2_Transition_Clockwise_BlackFade_Funcs[] = { - &Phase2_Transition5_Func1, - &Phase2_Transition5_Func2, - &Phase2_Transition5_Func3, - &Phase2_Transition5_Func4, - &Phase2_Transition5_Func5, - &Phase2_Transition5_Func6, - &Phase2_Transition5_Func7 + Phase2_Transition_Clockwise_BlackFade_Func1, + Phase2_Transition_Clockwise_BlackFade_Func2, + Phase2_Transition_Clockwise_BlackFade_Func3, + Phase2_Transition_Clockwise_BlackFade_Func4, + Phase2_Transition_Clockwise_BlackFade_Func5, + Phase2_Transition_Clockwise_BlackFade_Func6, + Phase2_Transition_Clockwise_BlackFade_Func7 }; -static const TransitionState sPhase2_Transition6_Funcs[] = +static const TransitionState sPhase2_Transition_Ripple_Funcs[] = { - &Phase2_Transition6_Func1, - &Phase2_Transition6_Func2 + Phase2_Transition_Ripple_Func1, + Phase2_Transition_Ripple_Func2 }; -static const TransitionState sPhase2_Transition7_Funcs[] = +static const TransitionState sPhase2_Transition_Wave_Funcs[] = { - &Phase2_Transition7_Func1, - &Phase2_Transition7_Func2, - &Phase2_Transition7_Func3 + Phase2_Transition_Wave_Func1, + Phase2_Transition_Wave_Func2, + Phase2_Transition_Wave_Func3 }; static const TransitionState sPhase2_Mugshot_Transition_Funcs[] = { - &Phase2_Mugshot_Func1, - &Phase2_Mugshot_Func2, - &Phase2_Mugshot_Func3, - &Phase2_Mugshot_Func4, - &Phase2_Mugshot_Func5, - &Phase2_Mugshot_Func6, - &Phase2_Mugshot_Func7, - &Phase2_Mugshot_Func8, - &Phase2_Mugshot_Func9, - &Phase2_Mugshot_Func10 + Phase2_Mugshot_Func1, + Phase2_Mugshot_Func2, + Phase2_Mugshot_Func3, + Phase2_Mugshot_Func4, + Phase2_Mugshot_Func5, + Phase2_Mugshot_Func6, + Phase2_Mugshot_Func7, + Phase2_Mugshot_Func8, + Phase2_Mugshot_Func9, + Phase2_Mugshot_Func10 }; static const u8 sMugshotsTrainerPicIDsTable[MUGSHOTS_NO] = {TRAINER_PIC_SIDNEY, TRAINER_PIC_PHOEBE, TRAINER_PIC_GLACIA, TRAINER_PIC_DRAKE, TRAINER_PIC_STEVEN}; @@ -319,50 +319,50 @@ static const s16 sMugshotsOpponentCoords[MUGSHOTS_NO][2] = static const TransitionSpriteCallback sUnknown_083FD880[] = { - &sub_811C934, - &sub_811C938, - &sub_811C984, - &sub_811C9B8, - &sub_811C934, - &sub_811C9E4, - &sub_811C934 + sub_811C934, + sub_811C938, + sub_811C984, + sub_811C9B8, + sub_811C934, + sub_811C9E4, + sub_811C934 }; static const s16 sUnknown_083FD89C[2] = {12, -12}; static const s16 sUnknown_083FD8A0[2] = {-1, 1}; -static const TransitionState sPhase2_Transition8_Funcs[] = +static const TransitionState sPhase2_Transition_Slice_Funcs[] = { - &Phase2_Transition8_Func1, - &Phase2_Transition8_Func2, - &Phase2_Transition8_Func3 + Phase2_Transition_Slice_Func1, + Phase2_Transition_Slice_Func2, + Phase2_Transition_Slice_Func3 }; -static const TransitionState sPhase2_Transition9_Funcs[] = +static const TransitionState sPhase2_Transition_WhiteFade_Funcs[] = { - &Phase2_Transition9_Func1, - &Phase2_Transition9_Func2, - &Phase2_Transition9_Func3, - &Phase2_Transition9_Func4, - &Phase2_Transition9_Func5 + Phase2_Transition_WhiteFade_Func1, + Phase2_Transition_WhiteFade_Func2, + Phase2_Transition_WhiteFade_Func3, + Phase2_Transition_WhiteFade_Func4, + Phase2_Transition_WhiteFade_Func5 }; static const s16 sUnknown_083FD8C4[8] = {0, 20, 15, 40, 10, 25, 35, 5}; -static const TransitionState sPhase2_Transition10_Funcs[] = +static const TransitionState sPhase2_Transition_GridSquares_Funcs[] = { - &Phase2_Transition10_Func1, - &Phase2_Transition10_Func2, - &Phase2_Transition10_Func3 + Phase2_Transition_GridSquares_Func1, + Phase2_Transition_GridSquares_Func2, + Phase2_Transition_GridSquares_Func3 }; -static const TransitionState sPhase2_Transition11_Funcs[] = +static const TransitionState sPhase2_Transition_Shards_Funcs[] = { - &Phase2_Transition11_Func1, - &Phase2_Transition11_Func2, - &Phase2_Transition11_Func3, - &Phase2_Transition11_Func4, - &Phase2_Transition11_Func5 + Phase2_Transition_Shards_Func1, + Phase2_Transition_Shards_Func2, + Phase2_Transition_Shards_Func3, + Phase2_Transition_Shards_Func4, + Phase2_Transition_Shards_Func5 }; static const s16 sUnknown_083FD8F4[][5] = @@ -380,8 +380,8 @@ static const s16 sUnknown_083FD93A[] = {8, 4, 2, 1, 1, 1, 0}; static const TransitionState sPhase1_TransitionAll_Funcs[] = { - &Phase1_TransitionAll_Func1, - &Phase1_TransitionAll_Func2 + Phase1_TransitionAll_Func1, + Phase1_TransitionAll_Func2 }; static const struct SpriteFrameImage sSpriteImageTable_83FD950[] = @@ -622,12 +622,12 @@ static void Phase1Task_TransitionAll(u8 taskID) DestroyTask(taskID); } -static void Phase2Task_Transition0(u8 taskID) +static void Phase2Task_Transition_Blur(u8 taskID) { - while (sPhase2_Transition0_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Blur_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition0_Func1(struct Task* task) +static bool8 Phase2_Transition_Blur_Func1(struct Task* task) { REG_MOSAIC = 0; REG_BG1CNT |= 0x40; @@ -637,7 +637,7 @@ static bool8 Phase2_Transition0_Func1(struct Task* task) return TRUE; } -static bool8 Phase2_Transition0_Func2(struct Task* task) +static bool8 Phase2_Transition_Blur_Func2(struct Task* task) { if (task->data[1] != 0) task->data[1]--; @@ -653,22 +653,22 @@ static bool8 Phase2_Transition0_Func2(struct Task* task) return FALSE; } -static bool8 Phase2_Transition0_Func3(struct Task* task) +static bool8 Phase2_Transition_Blur_Func3(struct Task* task) { if (!gPaletteFade.active) { - u8 taskID = FindTaskIdByFunc(Phase2Task_Transition0); + u8 taskID = FindTaskIdByFunc(Phase2Task_Transition_Blur); DestroyTask(taskID); } return FALSE; } -static void Phase2Task_Transition1(u8 taskID) +static void Phase2Task_Transition_Swirl(u8 taskID) { - while (sPhase2_Transition1_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Swirl_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition1_Func1(struct Task* task) +static bool8 Phase2_Transition_Swirl_Func1(struct Task* task) { u16 savedIME; @@ -677,8 +677,8 @@ static bool8 Phase2_Transition1_Func1(struct Task* task) BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); sub_811D6E8(gUnknown_03005560, TRANSITION_STRUCT.field_14, 0, 2, 0, 160); - SetVBlankCallback(VBlankCB_Phase2_Transition1); - SetHBlankCallback(HBlankCB_Phase2_Transition1); + SetVBlankCallback(VBlankCB_Phase2_Transition_Swirl); + SetHBlankCallback(HBlankCB_Phase2_Transition_Swirl); savedIME = REG_IME; REG_IME = 0; @@ -690,7 +690,7 @@ static bool8 Phase2_Transition1_Func1(struct Task* task) return FALSE; } -static bool8 Phase2_Transition1_Func2(struct Task* task) +static bool8 Phase2_Transition_Swirl_Func2(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; task->data[1] += 4; @@ -700,7 +700,7 @@ static bool8 Phase2_Transition1_Func2(struct Task* task) if (!gPaletteFade.active) { - u8 taskID = FindTaskIdByFunc(Phase2Task_Transition1); + u8 taskID = FindTaskIdByFunc(Phase2Task_Transition_Swirl); DestroyTask(taskID); } @@ -708,14 +708,14 @@ static bool8 Phase2_Transition1_Func2(struct Task* task) return FALSE; } -static void VBlankCB_Phase2_Transition1(void) +static void VBlankCB_Phase2_Transition_Swirl(void) { VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); } -static void HBlankCB_Phase2_Transition1(void) +static void HBlankCB_Phase2_Transition_Swirl(void) { u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; REG_BG1HOFS = var; @@ -723,12 +723,12 @@ static void HBlankCB_Phase2_Transition1(void) REG_BG3HOFS = var; } -static void Phase2Task_Transition2(u8 taskID) +static void Phase2Task_Transition_Shuffle(u8 taskID) { - while (sPhase2_Transition2_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Shuffle_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition2_Func1(struct Task* task) +static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task) { u16 savedIME; @@ -738,8 +738,8 @@ static bool8 Phase2_Transition2_Func1(struct Task* task) BeginNormalPaletteFade(-1, 4, 0, 0x10, 0); memset(gUnknown_03005560, TRANSITION_STRUCT.field_16, 0x140); - SetVBlankCallback(VBlankCB_Phase2_Transition2); - SetHBlankCallback(HBlankCB_Phase2_Transition2); + SetVBlankCallback(VBlankCB_Phase2_Transition_Shuffle); + SetHBlankCallback(HBlankCB_Phase2_Transition_Shuffle); savedIME = REG_IME; REG_IME = 0; @@ -751,7 +751,7 @@ static bool8 Phase2_Transition2_Func1(struct Task* task) return FALSE; } -static bool8 Phase2_Transition2_Func2(struct Task* task) +static bool8 Phase2_Transition_Shuffle_Func2(struct Task* task) { u8 i; u16 r3, r4; @@ -769,20 +769,20 @@ static bool8 Phase2_Transition2_Func2(struct Task* task) } if (!gPaletteFade.active) - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition2)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Shuffle)); TRANSITION_STRUCT.VBlank_DMA++; return FALSE; } -static void VBlankCB_Phase2_Transition2(void) +static void VBlankCB_Phase2_Transition_Shuffle(void) { VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); } -static void HBlankCB_Phase2_Transition2(void) +static void HBlankCB_Phase2_Transition_Shuffle(void) { u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; REG_BG1VOFS = var; @@ -790,12 +790,12 @@ static void HBlankCB_Phase2_Transition2(void) REG_BG3VOFS = var; } -static void Phase2Task_Transition3(u8 taskID) +static void Phase2Task_Transition_BigPokeball(u8 taskID) { - while (sPhase2_Transition3_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_BigPokeball_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition3_Func1(struct Task* task) +static bool8 Phase2_Transition_BigPokeball_Func1(struct Task* task) { u16 i; u16 *dst1, *dst2; @@ -819,7 +819,7 @@ static bool8 Phase2_Transition3_Func1(struct Task* task) gUnknown_03005560[i] = 240; } - SetVBlankCallback(VBlankCB0_Phase2_Transition3); + SetVBlankCallback(VBlankCB0_Phase2_Transition_BigPokeball); sub_811D6A8(&dst1, & dst2); CpuFill16(0, dst1, 0x800); @@ -830,7 +830,7 @@ static bool8 Phase2_Transition3_Func1(struct Task* task) return FALSE; } -static bool8 Phase2_Transition3_Func2(struct Task* task) +static bool8 Phase2_Transition_BigPokeball_Func2(struct Task* task) { s16 i, j; u16 *dst1, *dst2; @@ -851,7 +851,7 @@ static bool8 Phase2_Transition3_Func2(struct Task* task) return TRUE; } -static bool8 Phase2_Transition3_Func3(struct Task* task) +static bool8 Phase2_Transition_BigPokeball_Func3(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[3] == 0 || --task->data[3] == 0) @@ -871,7 +871,7 @@ static bool8 Phase2_Transition3_Func3(struct Task* task) return FALSE; } -static bool8 Phase2_Transition3_Func4(struct Task* task) +static bool8 Phase2_Transition_BigPokeball_Func4(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[3] == 0 || --task->data[3] == 0) @@ -891,7 +891,7 @@ static bool8 Phase2_Transition3_Func4(struct Task* task) return FALSE; } -static bool8 Phase2_Transition3_Func5(struct Task* task) +static bool8 Phase2_Transition_BigPokeball_Func5(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; task->data[4] += 8; @@ -911,7 +911,7 @@ static bool8 Phase2_Transition3_Func5(struct Task* task) return FALSE; } -static bool8 Phase2_Transition3_Func6(struct Task* task) +static bool8 Phase2_Transition_BigPokeball_Func6(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (task->data[2] < 1024) @@ -927,19 +927,19 @@ static bool8 Phase2_Transition3_Func6(struct Task* task) { DmaStop(0); sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition3)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_BigPokeball)); } if (task->data[3] == 0) { task->data[3]++; - SetVBlankCallback(VBlankCB1_Phase2_Transition3); + SetVBlankCallback(VBlankCB1_Phase2_Transition_BigPokeball); } TRANSITION_STRUCT.VBlank_DMA++; return FALSE; } -static void Transition3_Vblank(void) +static void Transition_BigPokeball_Vblank(void) { DmaStop(0); VBlankCB_BattleTransition(); @@ -952,24 +952,24 @@ static void Transition3_Vblank(void) REG_BLDALPHA = TRANSITION_STRUCT.BLDALPHA; } -static void VBlankCB0_Phase2_Transition3(void) +static void VBlankCB0_Phase2_Transition_BigPokeball(void) { - Transition3_Vblank(); + Transition_BigPokeball_Vblank(); DmaSet(0, gUnknown_03005560, ®_BG0HOFS, 0xA2400001); } -static void VBlankCB1_Phase2_Transition3(void) +static void VBlankCB1_Phase2_Transition_BigPokeball(void) { - Transition3_Vblank(); + Transition_BigPokeball_Vblank(); DmaSet(0, gUnknown_03005560, ®_WIN0H, 0xA2400001); } -static void Phase2Task_Transition4(u8 taskID) +static void Phase2Task_Transition_PokeballsTrail(u8 taskID) { - while (sPhase2_Transition4_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_PokeballsTrail_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition4_Func1(struct Task* task) +static bool8 Phase2_Transition_PokeballsTrail_Func1(struct Task* task) { u16 *dst1, *dst2; @@ -982,7 +982,7 @@ static bool8 Phase2_Transition4_Func1(struct Task* task) return FALSE; } -static bool8 Phase2_Transition4_Func2(struct Task* task) +static bool8 Phase2_Transition_PokeballsTrail_Func2(struct Task* task) { s16 i; s16 rand; @@ -1005,12 +1005,12 @@ static bool8 Phase2_Transition4_Func2(struct Task* task) return FALSE; } -static bool8 Phase2_Transition4_Func3(struct Task* task) +static bool8 Phase2_Transition_PokeballsTrail_Func3(struct Task* task) { if (!FieldEffectActiveListContains(FLDEFF_POKEBALL)) { sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition4)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_PokeballsTrail)); } return FALSE; } @@ -1069,12 +1069,12 @@ static void sub_811B720(struct Sprite* sprite) } } -static void Phase2Task_Transition5(u8 taskID) +static void Phase2Task_Transition_Clockwise_BlackFade(u8 taskID) { - while (sPhase2_Transition5_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Clockwise_BlackFade_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition5_Func1(struct Task* task) +static bool8 Phase2_Transition_Clockwise_BlackFade_Func1(struct Task* task) { u16 i; @@ -1091,14 +1091,14 @@ static bool8 Phase2_Transition5_Func1(struct Task* task) gUnknown_03005560[i] = 0xF3F4; } - SetVBlankCallback(VBlankCB_Phase2_Transition5); + SetVBlankCallback(VBlankCB_Phase2_Transition_Clockwise_BlackFade); TRANSITION_STRUCT.data[4] = 120; task->tState++; return TRUE; } -static bool8 Phase2_Transition5_Func2(struct Task* task) +static bool8 Phase2_Transition_Clockwise_BlackFade_Func2(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -1119,7 +1119,7 @@ static bool8 Phase2_Transition5_Func2(struct Task* task) return FALSE; } -static bool8 Phase2_Transition5_Func3(struct Task* task) +static bool8 Phase2_Transition_Clockwise_BlackFade_Func3(struct Task* task) { s16 r1, r3; vu8 var = 0; @@ -1157,7 +1157,7 @@ static bool8 Phase2_Transition5_Func3(struct Task* task) return FALSE; } -static bool8 Phase2_Transition5_Func4(struct Task* task) +static bool8 Phase2_Transition_Clockwise_BlackFade_Func4(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -1178,7 +1178,7 @@ static bool8 Phase2_Transition5_Func4(struct Task* task) return FALSE; } -static bool8 Phase2_Transition5_Func5(struct Task* task) +static bool8 Phase2_Transition_Clockwise_BlackFade_Func5(struct Task* task) { s16 r1, r2, r3; vu8 var = 0; @@ -1217,7 +1217,7 @@ static bool8 Phase2_Transition5_Func5(struct Task* task) return FALSE; } -static bool8 Phase2_Transition5_Func6(struct Task* task) +static bool8 Phase2_Transition_Clockwise_BlackFade_Func6(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -1241,15 +1241,15 @@ static bool8 Phase2_Transition5_Func6(struct Task* task) return FALSE; } -static bool8 Phase2_Transition5_Func7(struct Task* task) +static bool8 Phase2_Transition_Clockwise_BlackFade_Func7(struct Task* task) { DmaStop(0); sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition5)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Clockwise_BlackFade)); return FALSE; } -static void VBlankCB_Phase2_Transition5(void) +static void VBlankCB_Phase2_Transition_Clockwise_BlackFade(void) { DmaStop(0); VBlankCB_BattleTransition(); @@ -1262,12 +1262,12 @@ static void VBlankCB_Phase2_Transition5(void) DmaSet(0, gUnknown_03004DE0[1], ®_WIN0H, 0xA2400001); } -static void Phase2Task_Transition6(u8 taskID) +static void Phase2Task_Transition_Ripple(u8 taskID) { - while (sPhase2_Transition6_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Ripple_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition6_Func1(struct Task* task) +static bool8 Phase2_Transition_Ripple_Func1(struct Task* task) { u8 i; @@ -1279,8 +1279,8 @@ static bool8 Phase2_Transition6_Func1(struct Task* task) gUnknown_03005560[i] = TRANSITION_STRUCT.field_16; } - SetVBlankCallback(VBlankCB_Phase2_Transition6); - SetHBlankCallback(HBlankCB_Phase2_Transition6); + SetVBlankCallback(VBlankCB_Phase2_Transition_Ripple); + SetHBlankCallback(HBlankCB_Phase2_Transition_Ripple); REG_IE |= 2; REG_DISPSTAT |= 0x10; @@ -1289,7 +1289,7 @@ static bool8 Phase2_Transition6_Func1(struct Task* task) return TRUE; } -static bool8 Phase2_Transition6_Func2(struct Task* task) +static bool8 Phase2_Transition_Ripple_Func2(struct Task* task) { u8 i; s16 r3; @@ -1320,20 +1320,20 @@ static bool8 Phase2_Transition6_Func2(struct Task* task) } if (task->data[4] != 0 && !gPaletteFade.active) - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition6)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Ripple)); TRANSITION_STRUCT.VBlank_DMA++; return FALSE; } -static void VBlankCB_Phase2_Transition6(void) +static void VBlankCB_Phase2_Transition_Ripple(void) { VBlankCB_BattleTransition(); if (TRANSITION_STRUCT.VBlank_DMA) DmaCopy16(3, gUnknown_03004DE0[0], gUnknown_03004DE0[1], 320); } -static void HBlankCB_Phase2_Transition6(void) +static void HBlankCB_Phase2_Transition_Ripple(void) { u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; REG_BG1VOFS = var; @@ -1341,12 +1341,12 @@ static void HBlankCB_Phase2_Transition6(void) REG_BG3VOFS = var; } -static void Phase2Task_Transition7(u8 taskID) +static void Phase2Task_Transition_Wave(u8 taskID) { - while (sPhase2_Transition7_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Wave_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition7_Func1(struct Task* task) +static bool8 Phase2_Transition_Wave_Func1(struct Task* task) { u8 i; @@ -1363,13 +1363,13 @@ static bool8 Phase2_Transition7_Func1(struct Task* task) gUnknown_03004DE0[1][i] = 242; } - SetVBlankCallback(VBlankCB_Phase2_Transition7); + SetVBlankCallback(VBlankCB_Phase2_Transition_Wave); task->tState++; return TRUE; } -static bool8 Phase2_Transition7_Func2(struct Task* task) +static bool8 Phase2_Transition_Wave_Func2(struct Task* task) { u8 i, r5; u16* toStore; @@ -1399,15 +1399,15 @@ static bool8 Phase2_Transition7_Func2(struct Task* task) return FALSE; } -static bool8 Phase2_Transition7_Func3(struct Task* task) +static bool8 Phase2_Transition_Wave_Func3(struct Task* task) { DmaStop(0); sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition7)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Wave)); return FALSE; } -static void VBlankCB_Phase2_Transition7(void) +static void VBlankCB_Phase2_Transition_Wave(void) { DmaStop(0); VBlankCB_BattleTransition(); @@ -1837,12 +1837,12 @@ static s16 sub_811CA44(s16 spriteID) #undef tMugshotPlayerID #undef tMugshotID -static void Phase2Task_Transition8(u8 taskID) +static void Phase2Task_Transition_Slice(u8 taskID) { - while (sPhase2_Transition8_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Slice_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition8_Func1(struct Task* task) +static bool8 Phase2_Transition_Slice_Func1(struct Task* task) { u16 i; @@ -1864,14 +1864,14 @@ static bool8 Phase2_Transition8_Func1(struct Task* task) REG_IE |= 2; REG_DISPSTAT |= 0x10; - SetVBlankCallback(VBlankCB_Phase2_Transition8); - SetHBlankCallback(HBlankCB_Phase2_Transition8); + SetVBlankCallback(VBlankCB_Phase2_Transition_Slice); + SetHBlankCallback(HBlankCB_Phase2_Transition_Slice); task->tState++; return TRUE; } -static bool8 Phase2_Transition8_Func2(struct Task* task) +static bool8 Phase2_Transition_Slice_Func2(struct Task* task) { u16 i; @@ -1908,15 +1908,15 @@ static bool8 Phase2_Transition8_Func2(struct Task* task) return FALSE; } -static bool8 Phase2_Transition8_Func3(struct Task* task) +static bool8 Phase2_Transition_Slice_Func3(struct Task* task) { DmaStop(0); sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition8)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Slice)); return FALSE; } -static void VBlankCB_Phase2_Transition8(void) +static void VBlankCB_Phase2_Transition_Slice(void) { DmaStop(0); VBlankCB_BattleTransition(); @@ -1928,7 +1928,7 @@ static void VBlankCB_Phase2_Transition8(void) DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); } -static void HBlankCB_Phase2_Transition8(void) +static void HBlankCB_Phase2_Transition_Slice(void) { u16 var = gUnknown_03004DE0[1][REG_VCOUNT]; REG_BG1HOFS = var; @@ -1936,12 +1936,12 @@ static void HBlankCB_Phase2_Transition8(void) REG_BG3HOFS = var; } -static void Phase2Task_Transition9(u8 taskID) +static void Phase2Task_Transition_WhiteFade(u8 taskID) { - while (sPhase2_Transition9_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_WhiteFade_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition9_Func1(struct Task* task) +static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task) { u16 i; @@ -1963,14 +1963,14 @@ static bool8 Phase2_Transition9_Func1(struct Task* task) REG_IE |= 2; REG_DISPSTAT |= 0x10; - SetHBlankCallback(HBlankCB_Phase2_Transition9); - SetVBlankCallback(VBlankCB0_Phase2_Transition9); + SetHBlankCallback(HBlankCB_Phase2_Transition_WhiteFade); + SetVBlankCallback(VBlankCB0_Phase2_Transition_WhiteFade); task->tState++; return FALSE; } -static bool8 Phase2_Transition9_Func2(struct Task* task) +static bool8 Phase2_Transition_WhiteFade_Func2(struct Task* task) { s16 i, posY; s16 arr1[8]; @@ -1990,7 +1990,7 @@ static bool8 Phase2_Transition9_Func2(struct Task* task) return FALSE; } -static bool8 Phase2_Transition9_Func3(struct Task* task) +static bool8 Phase2_Transition_WhiteFade_Func3(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; if (TRANSITION_STRUCT.field_20 > 7) @@ -2001,7 +2001,7 @@ static bool8 Phase2_Transition9_Func3(struct Task* task) return FALSE; } -static bool8 Phase2_Transition9_Func4(struct Task* task) +static bool8 Phase2_Transition_WhiteFade_Func4(struct Task* task) { TRANSITION_STRUCT.VBlank_DMA = 0; @@ -2014,23 +2014,23 @@ static bool8 Phase2_Transition9_Func4(struct Task* task) TRANSITION_STRUCT.BLDCNT = 0xFF; TRANSITION_STRUCT.WININ = 0x3F; - SetVBlankCallback(VBlankCB1_Phase2_Transition9); + SetVBlankCallback(VBlankCB1_Phase2_Transition_WhiteFade); task->tState++; return FALSE; } -static bool8 Phase2_Transition9_Func5(struct Task* task) +static bool8 Phase2_Transition_WhiteFade_Func5(struct Task* task) { if (++TRANSITION_STRUCT.BLDY > 16) { sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition9)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_WhiteFade)); } return FALSE; } -static void VBlankCB0_Phase2_Transition9(void) +static void VBlankCB0_Phase2_Transition_WhiteFade(void) { DmaStop(0); VBlankCB_BattleTransition(); @@ -2043,7 +2043,7 @@ static void VBlankCB0_Phase2_Transition9(void) DmaSet(0, &gUnknown_03004DE0[1][160], ®_WIN0H, 0xA2400001); } -static void VBlankCB1_Phase2_Transition9(void) +static void VBlankCB1_Phase2_Transition_WhiteFade(void) { VBlankCB_BattleTransition(); REG_BLDY = TRANSITION_STRUCT.BLDY; @@ -2054,7 +2054,7 @@ static void VBlankCB1_Phase2_Transition9(void) REG_WIN0V = TRANSITION_STRUCT.WIN0V; } -static void HBlankCB_Phase2_Transition9(void) +static void HBlankCB_Phase2_Transition_WhiteFade(void) { REG_BLDY = gUnknown_03004DE0[1][REG_VCOUNT]; } @@ -2102,12 +2102,12 @@ static void sub_811CFD0(struct Sprite* sprite) } } -static void Phase2Task_Transition10(u8 taskID) +static void Phase2Task_Transition_GridSquares(u8 taskID) { - while (sPhase2_Transition10_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_GridSquares_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition10_Func1(struct Task* task) +static bool8 Phase2_Transition_GridSquares_Func1(struct Task* task) { u16 *dst1, *dst2; @@ -2120,7 +2120,7 @@ static bool8 Phase2_Transition10_Func1(struct Task* task) return FALSE; } -static bool8 Phase2_Transition10_Func2(struct Task* task) +static bool8 Phase2_Transition_GridSquares_Func2(struct Task* task) { u16* dst1; @@ -2141,22 +2141,22 @@ static bool8 Phase2_Transition10_Func2(struct Task* task) return FALSE; } -static bool8 Phase2_Transition10_Func3(struct Task* task) +static bool8 Phase2_Transition_GridSquares_Func3(struct Task* task) { if (--task->data[1] == 0) { sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition10)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_GridSquares)); } return FALSE; } -static void Phase2Task_Transition11(u8 taskID) +static void Phase2Task_Transition_Shards(u8 taskID) { - while (sPhase2_Transition11_Funcs[gTasks[taskID].tState](&gTasks[taskID])); + while (sPhase2_Transition_Shards_Funcs[gTasks[taskID].tState](&gTasks[taskID])); } -static bool8 Phase2_Transition11_Func1(struct Task* task) +static bool8 Phase2_Transition_Shards_Func1(struct Task* task) { u16 i; @@ -2173,13 +2173,13 @@ static bool8 Phase2_Transition11_Func1(struct Task* task) } CpuSet(gUnknown_03004DE0[0], gUnknown_03004DE0[1], 0xA0); - SetVBlankCallback(VBlankCB_Phase2_Transition11); + SetVBlankCallback(VBlankCB_Phase2_Transition_Shards); task->tState++; return TRUE; } -static bool8 Phase2_Transition11_Func2(struct Task* task) +static bool8 Phase2_Transition_Shards_Func2(struct Task* task) { sub_811D8FC(TRANSITION_STRUCT.data, sUnknown_083FD8F4[task->data[1]][0], @@ -2192,7 +2192,7 @@ static bool8 Phase2_Transition11_Func2(struct Task* task) return TRUE; } -static bool8 Phase2_Transition11_Func3(struct Task* task) +static bool8 Phase2_Transition_Shards_Func3(struct Task* task) { s16 i; bool8 nextFunc; @@ -2231,7 +2231,7 @@ static bool8 Phase2_Transition11_Func3(struct Task* task) return FALSE; } -static bool8 Phase2_Transition11_Func4(struct Task* task) +static bool8 Phase2_Transition_Shards_Func4(struct Task* task) { if (++task->data[1] < 7) { @@ -2243,12 +2243,12 @@ static bool8 Phase2_Transition11_Func4(struct Task* task) { DmaStop(0); sub_811D6D4(); - DestroyTask(FindTaskIdByFunc(Phase2Task_Transition11)); + DestroyTask(FindTaskIdByFunc(Phase2Task_Transition_Shards)); return FALSE; } } -static bool8 Phase2_Transition11_Func5(struct Task* task) +static bool8 Phase2_Transition_Shards_Func5(struct Task* task) { if (--task->data[3] == 0) { @@ -2259,7 +2259,7 @@ static bool8 Phase2_Transition11_Func5(struct Task* task) return FALSE; } -static void VBlankCB_Phase2_Transition11(void) +static void VBlankCB_Phase2_Transition_Shards(void) { DmaStop(0); VBlankCB_BattleTransition(); -- cgit v1.2.3 From 8bd3b74b8dcce8b18a3310f61a07ecd4d98ec0a5 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Thu, 24 Aug 2017 21:40:41 +0200 Subject: code review changes --- src/battle_transition.c | 42 +++++++++++++++++++++--------------------- 1 file changed, 21 insertions(+), 21 deletions(-) (limited to 'src') diff --git a/src/battle_transition.c b/src/battle_transition.c index 35f001bc7..395a38df1 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -243,11 +243,11 @@ static const TransitionState sPhase2_Transition_Shuffle_Funcs[] = static const TransitionState sPhase2_Transition_BigPokeball_Funcs[] = { Phase2_Transition_BigPokeball_Func1, - Phase2_Transition_BigPokeball_Func2, - Phase2_Transition_BigPokeball_Func3, - Phase2_Transition_BigPokeball_Func4, - Phase2_Transition_BigPokeball_Func5, - Phase2_Transition_BigPokeball_Func6 + Phase2_Transition_BigPokeball_Func2, + Phase2_Transition_BigPokeball_Func3, + Phase2_Transition_BigPokeball_Func4, + Phase2_Transition_BigPokeball_Func5, + Phase2_Transition_BigPokeball_Func6 }; static const TransitionState sPhase2_Transition_PokeballsTrail_Funcs[] = @@ -571,7 +571,7 @@ static void Task_BattleTransitionMain(u8 taskID) static bool8 Transition_Phase1(struct Task* task) { sub_807DE10(); - CpuSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x4000100); + CpuCopy32(gPlttBufferFaded, gPlttBufferUnfaded, 0x400); if (sPhase1_Tasks[task->tTransitionID] != NULL) { CreateTask(sPhase1_Tasks[task->tTransitionID], 4); @@ -630,9 +630,9 @@ static void Phase2Task_Transition_Blur(u8 taskID) static bool8 Phase2_Transition_Blur_Func1(struct Task* task) { REG_MOSAIC = 0; - REG_BG1CNT |= 0x40; - REG_BG2CNT |= 0x40; - REG_BG3CNT |= 0x40; + REG_BG1CNT |= BGCNT_MOSAIC; + REG_BG2CNT |= BGCNT_MOSAIC; + REG_BG3CNT |= BGCNT_MOSAIC; task->tState++; return TRUE; } @@ -682,9 +682,9 @@ static bool8 Phase2_Transition_Swirl_Func1(struct Task* task) savedIME = REG_IME; REG_IME = 0; - REG_IE |= 3; + REG_IE |= (INTR_FLAG_VBLANK | INTR_FLAG_HBLANK); REG_IME = savedIME; - REG_DISPSTAT |= 0x18; + REG_DISPSTAT |= (DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR); task->tState++; return FALSE; @@ -743,9 +743,9 @@ static bool8 Phase2_Transition_Shuffle_Func1(struct Task* task) savedIME = REG_IME; REG_IME = 0; - REG_IE |= 3; + REG_IE |= (INTR_FLAG_VBLANK | INTR_FLAG_HBLANK); REG_IME = savedIME; - REG_DISPSTAT |= 0x18; + REG_DISPSTAT |= (DISPSTAT_VBLANK_INTR | DISPSTAT_HBLANK_INTR); task->tState++; return FALSE; @@ -1282,8 +1282,8 @@ static bool8 Phase2_Transition_Ripple_Func1(struct Task* task) SetVBlankCallback(VBlankCB_Phase2_Transition_Ripple); SetHBlankCallback(HBlankCB_Phase2_Transition_Ripple); - REG_IE |= 2; - REG_DISPSTAT |= 0x10; + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; task->tState++; return TRUE; @@ -1504,8 +1504,8 @@ static bool8 Phase2_Mugshot_Func2(struct Task* task) } } - REG_IE |= 2; - REG_DISPSTAT |= 0x10; + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; SetHBlankCallback(HBlankCB_Phase2_Mugshots); task->tState++; return FALSE; @@ -1861,8 +1861,8 @@ static bool8 Phase2_Transition_Slice_Func1(struct Task* task) gUnknown_03004DE0[1][160 + i] = 0xF0; } - REG_IE |= 2; - REG_DISPSTAT |= 0x10; + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; SetVBlankCallback(VBlankCB_Phase2_Transition_Slice); SetHBlankCallback(HBlankCB_Phase2_Transition_Slice); @@ -1960,8 +1960,8 @@ static bool8 Phase2_Transition_WhiteFade_Func1(struct Task* task) gUnknown_03004DE0[1][i + 160] = 0xF0; } - REG_IE |= 2; - REG_DISPSTAT |= 0x10; + REG_IE |= INTR_FLAG_HBLANK; + REG_DISPSTAT |= DISPSTAT_HBLANK_INTR; SetHBlankCallback(HBlankCB_Phase2_Transition_WhiteFade); SetVBlankCallback(VBlankCB0_Phase2_Transition_WhiteFade); -- cgit v1.2.3