summaryrefslogtreecommitdiff
path: root/src/battle_intro.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/battle_intro.c')
-rw-r--r--src/battle_intro.c129
1 files changed, 66 insertions, 63 deletions
diff --git a/src/battle_intro.c b/src/battle_intro.c
index 2d5e602d1..c76e5bc31 100644
--- a/src/battle_intro.c
+++ b/src/battle_intro.c
@@ -13,8 +13,8 @@
static EWRAM_DATA u16 sBgCnt = 0;
-extern const u8 gUnknown_0859741A[];
-extern const u8 gUnknown_0859741E[];
+extern const u8 gBattleAnimBgCntSet[];
+extern const u8 gBattleAnimBgCntGet[];
static void BattleIntroSlide1(u8);
static void BattleIntroSlide2(u8);
@@ -24,23 +24,23 @@ static void BattleIntroSlidePartner(u8);
static const TaskFunc sBattleIntroSlideFuncs[] =
{
- BattleIntroSlide1, // BATTLE_TERRAIN_GRASS
- BattleIntroSlide1, // BATTLE_TERRAIN_LONG_GRASS
- BattleIntroSlide2, // BATTLE_TERRAIN_SAND
- BattleIntroSlide2, // BATTLE_TERRAIN_UNDERWATER
- BattleIntroSlide2, // BATTLE_TERRAIN_WATER
- BattleIntroSlide1, // BATTLE_TERRAIN_POND
- BattleIntroSlide1, // BATTLE_TERRAIN_MOUNTAIN
- BattleIntroSlide1, // BATTLE_TERRAIN_CAVE
- BattleIntroSlide3, // BATTLE_TERRAIN_BUILDING
- BattleIntroSlide3, // BATTLE_TERRAIN_PLAIN
+ [BATTLE_TERRAIN_GRASS] = BattleIntroSlide1,
+ [BATTLE_TERRAIN_LONG_GRASS] = BattleIntroSlide1,
+ [BATTLE_TERRAIN_SAND] = BattleIntroSlide2,
+ [BATTLE_TERRAIN_UNDERWATER] = BattleIntroSlide2,
+ [BATTLE_TERRAIN_WATER] = BattleIntroSlide2,
+ [BATTLE_TERRAIN_POND] = BattleIntroSlide1,
+ [BATTLE_TERRAIN_MOUNTAIN] = BattleIntroSlide1,
+ [BATTLE_TERRAIN_CAVE] = BattleIntroSlide1,
+ [BATTLE_TERRAIN_BUILDING] = BattleIntroSlide3,
+ [BATTLE_TERRAIN_PLAIN] = BattleIntroSlide3,
};
void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value)
{
if (bgId < 4)
{
- sBgCnt = GetGpuReg(gUnknown_0859741A[bgId]);
+ sBgCnt = GetGpuReg(gBattleAnimBgCntSet[bgId]);
switch (attributeId)
{
case BG_ANIM_SCREEN_SIZE:
@@ -66,7 +66,7 @@ void SetAnimBgAttribute(u8 bgId, u8 attributeId, u8 value)
break;
}
- SetGpuReg(gUnknown_0859741A[bgId], sBgCnt);
+ SetGpuReg(gBattleAnimBgCntSet[bgId], sBgCnt);
}
}
@@ -76,7 +76,7 @@ int GetAnimBgAttribute(u8 bgId, u8 attributeId)
if (bgId < 4)
{
- bgCnt = GetGpuReg(gUnknown_0859741E[bgId]);
+ bgCnt = GetGpuReg(gBattleAnimBgCntGet[bgId]);
switch (attributeId)
{
case BG_ANIM_SCREEN_SIZE:
@@ -99,6 +99,9 @@ int GetAnimBgAttribute(u8 bgId, u8 attributeId)
return 0;
}
+#define tState data[0]
+#define tTerrain data[1]
+
void HandleIntroSlide(u8 terrain)
{
u8 taskId;
@@ -125,8 +128,8 @@ void HandleIntroSlide(u8 terrain)
taskId = CreateTask(sBattleIntroSlideFuncs[terrain], 0);
}
- gTasks[taskId].data[0] = 0;
- gTasks[taskId].data[1] = terrain;
+ gTasks[taskId].tState = 0;
+ gTasks[taskId].tTerrain = terrain;
gTasks[taskId].data[2] = 0;
gTasks[taskId].data[3] = 0;
gTasks[taskId].data[4] = 0;
@@ -134,7 +137,7 @@ void HandleIntroSlide(u8 terrain)
gTasks[taskId].data[6] = 0;
}
-void sub_811828C(u8 taskId)
+static void BattleIntroSlideEnd(u8 taskId)
{
DestroyTask(taskId);
gBattle_BG1_X = 0;
@@ -153,24 +156,24 @@ static void BattleIntroSlide1(u8 taskId)
int i;
gBattle_BG1_X += 6;
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
gTasks[taskId].data[2] = 16;
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
}
else
{
gTasks[taskId].data[2] = 1;
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
}
break;
case 1:
if (--gTasks[taskId].data[2] == 0)
{
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
}
break;
@@ -178,7 +181,7 @@ static void BattleIntroSlide1(u8 taskId)
gBattle_WIN0V -= 0xFF;
if ((gBattle_WIN0V & 0xFF00) == 0x3000)
{
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
gTasks[taskId].data[2] = 240;
gTasks[taskId].data[3] = 32;
gIntroSlideFlags &= ~1;
@@ -191,7 +194,7 @@ static void BattleIntroSlide1(u8 taskId)
}
else
{
- if (gTasks[taskId].data[1] == 1)
+ if (gTasks[taskId].tTerrain == BATTLE_TERRAIN_LONG_GRASS)
{
if (gBattle_BG1_Y != 0xFFB0)
gBattle_BG1_Y -= 2;
@@ -219,7 +222,7 @@ static void BattleIntroSlide1(u8 taskId)
if (!gTasks[taskId].data[2])
{
gScanlineEffect.state = 3;
- gTasks[taskId].data[0]++;
+ 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);
@@ -228,7 +231,7 @@ static void BattleIntroSlide1(u8 taskId)
}
break;
case 4:
- sub_811828C(taskId);
+ BattleIntroSlideEnd(taskId);
break;
}
}
@@ -237,18 +240,18 @@ static void BattleIntroSlide2(u8 taskId)
{
int i;
- switch (gTasks[taskId].data[1])
+ switch (gTasks[taskId].tTerrain)
{
- case 2:
- case 4:
+ case BATTLE_TERRAIN_SAND:
+ case BATTLE_TERRAIN_WATER:
gBattle_BG1_X += 8;
break;
- case 3:
+ case BATTLE_TERRAIN_UNDERWATER:
gBattle_BG1_X += 6;
break;
}
- if (gTasks[taskId].data[1] == 4)
+ if (gTasks[taskId].tTerrain == BATTLE_TERRAIN_WATER)
{
gBattle_BG1_Y = Cos2(gTasks[taskId].data[6]) / 512 - 8;
if (gTasks[taskId].data[6] < 180)
@@ -260,25 +263,25 @@ static void BattleIntroSlide2(u8 taskId)
gTasks[taskId].data[6] = 0;
}
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
gTasks[taskId].data[4] = 16;
if (gBattleTypeFlags & BATTLE_TYPE_LINK)
{
gTasks[taskId].data[2] = 16;
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
}
else
{
gTasks[taskId].data[2] = 1;
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
}
break;
case 1:
if (--gTasks[taskId].data[2] == 0)
{
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
}
break;
@@ -286,7 +289,7 @@ static void BattleIntroSlide2(u8 taskId)
gBattle_WIN0V -= 0xFF;
if ((gBattle_WIN0V & 0xFF00) == 0x3000)
{
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
gTasks[taskId].data[2] = 240;
gTasks[taskId].data[3] = 32;
gTasks[taskId].data[5] = 1;
@@ -328,7 +331,7 @@ static void BattleIntroSlide2(u8 taskId)
if (!gTasks[taskId].data[2])
{
gScanlineEffect.state = 3;
- gTasks[taskId].data[0]++;
+ 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);
@@ -337,11 +340,11 @@ static void BattleIntroSlide2(u8 taskId)
}
break;
case 4:
- sub_811828C(taskId);
+ BattleIntroSlideEnd(taskId);
break;
}
- if (gTasks[taskId].data[0] != 4)
+ if (gTasks[taskId].tState != 4)
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[4], 0));
}
@@ -350,7 +353,7 @@ static void BattleIntroSlide3(u8 taskId)
int i;
gBattle_BG1_X += 8;
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_BG1 | BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ);
@@ -360,18 +363,18 @@ static void BattleIntroSlide3(u8 taskId)
if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_RECORDED_LINK))
{
gTasks[taskId].data[2] = 16;
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
}
else
{
gTasks[taskId].data[2] = 1;
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
}
break;
case 1:
if (--gTasks[taskId].data[2] == 0)
{
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
}
break;
@@ -379,7 +382,7 @@ static void BattleIntroSlide3(u8 taskId)
gBattle_WIN0V -= 0xFF;
if ((gBattle_WIN0V & 0xFF00) == 0x3000)
{
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
gTasks[taskId].data[2] = 240;
gTasks[taskId].data[3] = 32;
gTasks[taskId].data[5] = 1;
@@ -416,7 +419,7 @@ static void BattleIntroSlide3(u8 taskId)
if (!gTasks[taskId].data[2])
{
gScanlineEffect.state = 3;
- gTasks[taskId].data[0]++;
+ 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);
@@ -425,11 +428,11 @@ static void BattleIntroSlide3(u8 taskId)
}
break;
case 4:
- sub_811828C(taskId);
+ BattleIntroSlideEnd(taskId);
break;
}
- if (gTasks[taskId].data[0] != 4)
+ if (gTasks[taskId].tState != 4)
SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(gTasks[taskId].data[4], 0));
}
@@ -437,7 +440,7 @@ static void BattleIntroSlideLink(u8 taskId)
{
int i;
- if (gTasks[taskId].data[0] > 1 && !gTasks[taskId].data[4])
+ if (gTasks[taskId].tState > 1 && !gTasks[taskId].data[4])
{
u16 var0 = gBattle_BG1_X & 0x8000;
if (var0 || gBattle_BG1_X < 80)
@@ -453,20 +456,20 @@ static void BattleIntroSlideLink(u8 taskId)
}
}
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
gTasks[taskId].data[2] = 32;
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 1:
if (--gTasks[taskId].data[2] == 0)
{
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
gSprites[gBattleStruct->linkBattleVsSpriteId_V].oam.objMode = ST_OAM_OBJ_WINDOW;
- gSprites[gBattleStruct->linkBattleVsSpriteId_V].callback = sub_8038B74;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_V].callback = SpriteCB_VsLetterInit;
gSprites[gBattleStruct->linkBattleVsSpriteId_S].oam.objMode = ST_OAM_OBJ_WINDOW;
- gSprites[gBattleStruct->linkBattleVsSpriteId_S].callback = sub_8038B74;
+ gSprites[gBattleStruct->linkBattleVsSpriteId_S].callback = SpriteCB_VsLetterInit;
SetGpuReg(REG_OFFSET_WININ, WININ_WIN0_BG_ALL | WININ_WIN0_OBJ | WININ_WIN0_CLR);
SetGpuReg(REG_OFFSET_WINOUT, WINOUT_WINOBJ_BG_ALL | WINOUT_WINOBJ_OBJ | WINOUT_WINOBJ_CLR | WINOUT_WIN01_BG1 | WINOUT_WIN01_BG2);
}
@@ -475,7 +478,7 @@ static void BattleIntroSlideLink(u8 taskId)
gBattle_WIN0V -= 0xFF;
if ((gBattle_WIN0V & 0xFF00) == 0x3000)
{
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
gTasks[taskId].data[2] = 240;
gTasks[taskId].data[3] = 32;
gIntroSlideFlags &= ~1;
@@ -498,7 +501,7 @@ static void BattleIntroSlideLink(u8 taskId)
if (!gTasks[taskId].data[2])
{
gScanlineEffect.state = 3;
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
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);
@@ -506,23 +509,23 @@ static void BattleIntroSlideLink(u8 taskId)
}
break;
case 4:
- sub_811828C(taskId);
+ BattleIntroSlideEnd(taskId);
break;
}
}
static void BattleIntroSlidePartner(u8 taskId)
{
- switch (gTasks[taskId].data[0])
+ switch (gTasks[taskId].tState)
{
case 0:
gTasks[taskId].data[2] = 1;
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 1:
if (--gTasks[taskId].data[2] == 0)
{
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
SetGpuReg(REG_OFFSET_BG1CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_16COLOR | BGCNT_SCREENBASE(28) | BGCNT_TXT512x256);
SetGpuReg(REG_OFFSET_BG2CNT, BGCNT_PRIORITY(2) | BGCNT_CHARBASE(2) | BGCNT_16COLOR | BGCNT_SCREENBASE(30) | BGCNT_TXT512x256);
SetGpuReg(REG_OFFSET_DISPCNT, GetGpuReg(REG_OFFSET_DISPCNT) | DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_WIN1_ON | DISPCNT_OBJWIN_ON);
@@ -540,7 +543,7 @@ static void BattleIntroSlidePartner(u8 taskId)
if ((gBattle_WIN0V & 0xFF00) == 0x2000)
{
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
gTasks[taskId].data[2] = 240;
gIntroSlideFlags &= ~1;
}
@@ -555,7 +558,7 @@ static void BattleIntroSlidePartner(u8 taskId)
gBattle_BG1_X = gTasks[taskId].data[2];
gBattle_BG2_X = -gTasks[taskId].data[2];
if (!gTasks[taskId].data[2])
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
break;
case 4:
gBattle_BG0_Y += 2;
@@ -572,11 +575,11 @@ static void BattleIntroSlidePartner(u8 taskId)
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);
gScanlineEffect.state = 3;
- gTasks[taskId].data[0]++;
+ gTasks[taskId].tState++;
}
break;
case 5:
- sub_811828C(taskId);
+ BattleIntroSlideEnd(taskId);
break;
}
}