From 0e0339874979c8117f99fbf991eb3a5142728f4b Mon Sep 17 00:00:00 2001 From: cawtds <38510667+cawtds@users.noreply.github.com> Date: Fri, 14 Feb 2025 23:30:28 +0100 Subject: [PATCH] faster intro --- src/battle_intro.c | 55 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) diff --git a/src/battle_intro.c b/src/battle_intro.c index 841913046..e20ef6d91 100644 --- a/src/battle_intro.c +++ b/src/battle_intro.c @@ -5,6 +5,7 @@ #include "battle_setup.h" #include "scanline_effect.h" #include "task.h" +#include "test_runner.h" #include "trig.h" static void BattleIntroSlide1(u8 taskId); @@ -133,9 +134,59 @@ void BattleIntroSlideEnd(u8 taskId) SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WIN01_BG_ALL | WINOUT_WIN01_OBJ | WINOUT_WIN01_CLR | WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR); } +static void BattleIntroNoSlide(u8 taskId) +{ + switch (gTasks[taskId].tState) + { + case 0: + if (gBattleTypeFlags & BATTLE_TYPE_LINK) + { + gTasks[taskId].data[2] = 16; + gTasks[taskId].tState++; + gIntroSlideFlags &= ~1; + } + else + { + gTasks[taskId].data[2] = 1; + gTasks[taskId].tState++; + gIntroSlideFlags &= ~1; + } + break; + case 1: + gTasks[taskId].data[2]--; + if (gTasks[taskId].data[2] == 0) + { + gTasks[taskId].tState++; + SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR); + gScanlineEffect.state = 3; + } + break; + case 2: + gBattle_WIN0V -= 0xFF * 2; + if ((gBattle_WIN0V & 0xFF00) == 0) + { + gTasks[taskId].tState++; + } + break; + case 3: + gTasks[taskId].tState++; + CpuFill32(0, (void *)BG_SCREEN_ADDR(28), BG_SCREEN_SIZE); + SetBgAttribute(1, BG_ATTR_CHARBASEINDEX, 0); + SetBgAttribute(2, BG_ATTR_CHARBASEINDEX, 0); + SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT256x512); + SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(0) | BGCNT_CHARBASE(0) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256); + break; + case 4: + BattleIntroSlideEnd(taskId); + break; + } +} + static void BattleIntroSlide1(u8 taskId) { s32 i; + if (B_FAST_INTRO_NO_SLIDE || gTestRunnerHeadless) + return BattleIntroNoSlide(taskId); gBattle_BG1_X += 6; switch (gTasks[taskId].data[0]) @@ -215,6 +266,8 @@ static void BattleIntroSlide1(u8 taskId) static void BattleIntroSlide2(u8 taskId) { s32 i; + if (B_FAST_INTRO_NO_SLIDE || gTestRunnerHeadless) + return BattleIntroNoSlide(taskId); switch (gTasks[taskId].data[1]) { @@ -316,6 +369,8 @@ static void BattleIntroSlide2(u8 taskId) static void BattleIntroSlide3(u8 taskId) { s32 i; + if (B_FAST_INTRO_NO_SLIDE || gTestRunnerHeadless) + return BattleIntroNoSlide(taskId); gBattle_BG1_X += 8; switch (gTasks[taskId].data[0])