diff options
Diffstat (limited to 'src')
118 files changed, 3617 insertions, 3425 deletions
diff --git a/src/AgbRfu_LinkManager.c b/src/AgbRfu_LinkManager.c index f6ebcc726..42cc9aea3 100644 --- a/src/AgbRfu_LinkManager.c +++ b/src/AgbRfu_LinkManager.c @@ -352,7 +352,7 @@ static bool8 rfu_LMAN_linkWatcher(u16 REQ_commandID) { for (i = 0; i < RFU_CHILD_MAX; i++) { - if ((bm_linkLossSlot >> i) & 1) + if (bm_linkLossSlot & (1 << i)) { lman.linkRecoveryTimer.active |= (1 << i); lman.linkRecoveryTimer.count[i] = lman.linkRecoveryTimer.count_max; @@ -396,7 +396,7 @@ static bool8 rfu_LMAN_linkWatcher(u16 REQ_commandID) bm_disconnectSlot = 0; for (i = 0; i < RFU_CHILD_MAX; i++) { - if ((lman.linkRecoveryTimer.active >> i) & 1 && lman.linkRecoveryTimer.count[i] && --lman.linkRecoveryTimer.count[i] == 0) + if ((lman.linkRecoveryTimer.active) & (1 << i) && lman.linkRecoveryTimer.count[i] && --lman.linkRecoveryTimer.count[i] == 0) { lman.linkRecoveryTimer.active &= ~(1 << i); bm_disconnectSlot |= (1 << i); diff --git a/src/agb_flash.c b/src/agb_flash.c index eeccf1116..15ab0932d 100644 --- a/src/agb_flash.c +++ b/src/agb_flash.c @@ -293,4 +293,4 @@ u32 ProgramFlashSectorAndVerifyNBytes(u16 sectorNum, u8 *src, u32 n) } return result; -}
\ No newline at end of file +} diff --git a/src/battle_anim_effects_1.c b/src/battle_anim_effects_1.c index f4769145d..c8d43e12e 100644 --- a/src/battle_anim_effects_1.c +++ b/src/battle_anim_effects_1.c @@ -3178,14 +3178,14 @@ static void AnimItemSteal_Step3(struct Sprite* sprite) sprite->pos2.y = Sin(sprite->data[0] + 0x80, 30 - sprite->data[1] * 8); if (sprite->pos2.y == 0) - PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(63)); if (moveAlongLinearPath(sprite)) { sprite->pos2.y = 0; sprite->data[0] = 0; sprite->callback = AnimItemSteal_Step2; - PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(-64)); + PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64)); } } @@ -4260,7 +4260,7 @@ static void AnimLockOnTarget_Step1(struct Sprite* sprite) sprite->callback = StartAnimLinearTranslation; StoreSpriteCallbackInData6(sprite, AnimLockOnTarget_Step2); sprite->data[5] += 0x100; - PlaySE12WithPanning(SE_W199, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_LOCK_ON, BattleAnimAdjustPanning(63)); break; } @@ -4346,7 +4346,7 @@ static void AnimLockOnTarget_Step4(struct Sprite* sprite) sprite->data[2]++; pal = sprite->oam.paletteNum; LoadPalette(&gPlttBufferUnfaded[0x108 + pal * 16], pal * 16 | 0x101, 4); - PlaySE12WithPanning(SE_W043, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_LEER, BattleAnimAdjustPanning(63)); } else if (sprite->data[1] == 0) { @@ -4821,7 +4821,7 @@ static void AnimSharpenSphere_Step(struct Sprite* sprite) { sprite->data[4]++; if (!(sprite->data[4] & 1)) - PlaySE12WithPanning(SE_W207B, sprite->data[5]); + PlaySE12WithPanning(SE_M_SWAGGER2, sprite->data[5]); } sprite->data[0] = 0; diff --git a/src/battle_anim_effects_2.c b/src/battle_anim_effects_2.c index f7d1eea10..d891a4d01 100755 --- a/src/battle_anim_effects_2.c +++ b/src/battle_anim_effects_2.c @@ -1632,7 +1632,7 @@ static void AirCutterProjectileStep1(u8 taskId) gTasks[taskId].data[gTasks[taskId].data[1] + 13] = spriteId; gTasks[taskId].data[0] = gTasks[taskId].data[3]; gTasks[taskId].data[1]++; - PlaySE12WithPanning(SE_W059B, BattleAnimAdjustPanning(-63)); + PlaySE12WithPanning(SE_M_BLIZZARD2, BattleAnimAdjustPanning(-63)); if (gTasks[taskId].data[1] > 2) gTasks[taskId].func = AirCutterProjectileStep2; } @@ -1829,7 +1829,7 @@ static void AnimBulletSeed_Step1(struct Sprite *sprite) int i; u16 rand; s16* ptr; - PlaySE12WithPanning(SE_W030, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_HORN_ATTACK, BattleAnimAdjustPanning(63)); sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; sprite->pos2.y = 0; @@ -2502,7 +2502,7 @@ static void AnimPencil_Step(struct Sprite *sprite) sprite->pos1.y -= 1; sprite->data[2]++; if (sprite->data[2] % 10 == 0) - PlaySE12WithPanning(SE_W166, sprite->data[6]); + PlaySE12WithPanning(SE_M_SKETCH, sprite->data[6]); } sprite->data[4] += sprite->data[3]; if (sprite->data[4] > 31) diff --git a/src/battle_anim_effects_3.c b/src/battle_anim_effects_3.c index afdc90049..bad46f144 100755 --- a/src/battle_anim_effects_3.c +++ b/src/battle_anim_effects_3.c @@ -1647,7 +1647,7 @@ static void AnimClappingHand_Step(struct Sprite *sprite) sprite->data[2]++; if (sprite->data[3] == 0) { - PlaySE1WithPanning(SE_W227, BattleAnimAdjustPanning(-64)); + PlaySE1WithPanning(SE_M_ENCORE, BattleAnimAdjustPanning(-64)); } } } @@ -1931,7 +1931,7 @@ static void TormentAttacker_Step(u8 taskId) y = task->data[3] + task->data[5]; spriteId = CreateSprite(&gThoughtBubbleSpriteTemplate, x, y, 6 - task->data[1]); - PlaySE12WithPanning(SE_W118, BattleAnimAdjustPanning(-64)); + PlaySE12WithPanning(SE_M_METRONOME, BattleAnimAdjustPanning(-64)); if (spriteId != MAX_SPRITES) { @@ -2412,7 +2412,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId) gTasks[taskId].data[11] = gBattle_BG1_Y; gTasks[taskId].data[0]++; - PlaySE12WithPanning(SE_W234, BattleAnimAdjustPanning(-64)); + PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(-64)); break; case 1: if (gTasks[taskId].data[4]++ > 0) @@ -2447,7 +2447,7 @@ void AnimTask_MorningSunLightBeam(u8 taskId) { gTasks[taskId].data[3] = 0; gTasks[taskId].data[0] = 1; - PlaySE12WithPanning(SE_W234, BattleAnimAdjustPanning(-64)); + PlaySE12WithPanning(SE_M_MORNING_SUN, BattleAnimAdjustPanning(-64)); } break; case 4: @@ -4769,7 +4769,7 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId) if (gSprites[spriteId].pos2.y == 0) { - PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(-64)); + PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64)); gTasks[taskId].data[10] -= 0x800; gTasks[taskId].data[0]++; } @@ -4791,7 +4791,7 @@ static void AnimTask_MonToSubstituteDoll(u8 taskId) if (gSprites[spriteId].pos2.y == 0) { - PlaySE12WithPanning(SE_W145B, BattleAnimAdjustPanning(-64)); + PlaySE12WithPanning(SE_M_BUBBLE2, BattleAnimAdjustPanning(-64)); DestroyAnimVisualTask(taskId); } break; @@ -4828,7 +4828,7 @@ static void AnimBlockX_Step(struct Sprite *sprite) sprite->pos2.y += 10; if (sprite->pos2.y >= 0) { - PlaySE12WithPanning(SE_W166, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(63)); sprite->pos2.y = 0; sprite->data[0]++; } @@ -4838,7 +4838,7 @@ static void AnimBlockX_Step(struct Sprite *sprite) sprite->pos2.y = -(gSineTable[sprite->data[1]] >> 3); if (sprite->data[1] > 0x7F) { - PlaySE12WithPanning(SE_W166, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_SKETCH, BattleAnimAdjustPanning(63)); sprite->data[1] = 0; sprite->pos2.y = 0; sprite->data[0]++; @@ -4857,7 +4857,7 @@ static void AnimBlockX_Step(struct Sprite *sprite) case 3: if (++sprite->data[1] > 8) { - PlaySE12WithPanning(SE_W043, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_LEER, BattleAnimAdjustPanning(63)); sprite->data[1] = 0; sprite->data[0]++; } @@ -5152,7 +5152,7 @@ static void sub_815FE80(struct Sprite *sprite) case 0: if (gBattleAnimArgs[7] == -1) { - PlaySE12WithPanning(SE_W233, BattleAnimAdjustPanning(63)); + PlaySE12WithPanning(SE_M_VITAL_THROW, BattleAnimAdjustPanning(63)); sprite->pos1.y = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) + 16; sprite->data[0] = -32; sprite->data[7]++; diff --git a/src/battle_anim_electric.c b/src/battle_anim_electric.c index c153dbc10..a57e88b03 100644 --- a/src/battle_anim_electric.c +++ b/src/battle_anim_electric.c @@ -1242,7 +1242,7 @@ static bool8 sub_810B430(struct Task *task, u8 taskId) if (task->data[4] == 0 && task->data[5] > 0) { task->data[14] += task->data[15]; - PlaySE12WithPanning(SE_W085, task->data[14]); + PlaySE12WithPanning(SE_M_THUNDERBOLT, task->data[14]); } if ((task->data[5] < 0 && task->data[7] <= task->data[8]) diff --git a/src/battle_anim_fire.c b/src/battle_anim_fire.c index f02ecae19..c8402f727 100644 --- a/src/battle_anim_fire.c +++ b/src/battle_anim_fire.c @@ -1136,7 +1136,7 @@ static void AnimWillOWispOrb_Step(struct Sprite *sprite) if ((initialData5 == 0 || initialData5 > 196) && newData5 > 0 && sprite->data[7] == 0) { - PlaySE12WithPanning(SE_W172, gAnimCustomPanning); + PlaySE12WithPanning(SE_M_FLAME_WHEEL, gAnimCustomPanning); } } else diff --git a/src/battle_anim_ghost.c b/src/battle_anim_ghost.c index b8de6b0e1..632954351 100644 --- a/src/battle_anim_ghost.c +++ b/src/battle_anim_ghost.c @@ -252,7 +252,7 @@ static void AnimConfuseRayBallBounce_Step1(struct Sprite *sprite) return; if (r0 <= 0) return; - PlaySE12WithPanning(SE_W109, gAnimCustomPanning); + PlaySE12WithPanning(SE_M_CONFUSE_RAY, gAnimCustomPanning); } static void AnimConfuseRayBallBounce_Step2(struct Sprite *sprite) @@ -271,7 +271,7 @@ static void AnimConfuseRayBallBounce_Step2(struct Sprite *sprite) if (r2 == 0 || r2 > 196) { if (r0 > 0) - PlaySE(SE_W109); + PlaySE(SE_M_CONFUSE_RAY); } if (sprite->data[6] == 0) diff --git a/src/battle_anim_psychic.c b/src/battle_anim_psychic.c index 25340f9c6..3f451998c 100644 --- a/src/battle_anim_psychic.c +++ b/src/battle_anim_psychic.c @@ -1137,7 +1137,7 @@ static void AnimPsychoBoost(struct Sprite *sprite) case 1: if (sprite->affineAnimEnded) { - PlaySE12WithPanning(SE_W100, BattleAnimAdjustPanning(-64)); + PlaySE12WithPanning(SE_M_TELEPORT, BattleAnimAdjustPanning(-64)); ChangeSpriteAffineAnim(sprite, 1); sprite->data[0]++; } diff --git a/src/battle_anim_rock.c b/src/battle_anim_rock.c index 436ac60a3..29ba49346 100644 --- a/src/battle_anim_rock.c +++ b/src/battle_anim_rock.c @@ -631,7 +631,7 @@ static void AnimTask_Rollout_Step(u8 taskId) task->data[0]++; } - PlaySE12WithPanning(SE_W029, task->data[13]); + PlaySE12WithPanning(SE_M_HEADBUTT, task->data[13]); break; case 1: if (--task->data[11] == 0) @@ -661,7 +661,7 @@ static void AnimTask_Rollout_Step(u8 taskId) task->data[9] = 0; sub_8111214(task); task->data[13] += task->data[14]; - PlaySE12WithPanning(SE_W091, task->data[13]); + PlaySE12WithPanning(SE_M_DIG, task->data[13]); } if (--task->data[8] == 0) diff --git a/src/battle_anim_special.c b/src/battle_anim_throw.c index bf0d1d438..7049931d3 100755 --- a/src/battle_anim_special.c +++ b/src/battle_anim_throw.c @@ -22,51 +22,73 @@ #include "constants/rgb.h" // iwram -int gUnknown_030062DC; -u16 gUnknown_030062E0; -u16 gUnknown_030062E4; +u32 gMonShrinkDuration; +u16 gMonShrinkDelta; +u16 gMonShrinkDistance; + +enum { + BALL_ROLL_1, + BALL_PIVOT_1, + BALL_ROLL_2, + BALL_PIVOT_2, + BALL_ROLL_3, + BALL_NEXT_MOVE, + BALL_WAIT_NEXT_SHAKE +}; + +enum { + MON_SHRINK, + MON_SHRINK_STEP, + MON_SHRINK_INVISIBLE, + MON_SHRINK_FREE +}; + +enum { + SHINY_STAR_ENCIRCLE, + SHINY_STAR_DIAGONAL, +}; static void sub_8170660(u8); static void sub_8170A38(u8); -static void sub_8170EF0(u8); -static void sub_8171104(struct Sprite *); -static void sub_8171030(u8); -static void sub_81710A8(u8); -static void sub_8171134(struct Sprite *); -static void sub_8171CAC(struct Sprite *); -static void sub_81711E8(struct Sprite *); -static void sub_8171240(struct Sprite *); -static void sub_817138C(struct Sprite *); -static void sub_81713D0(struct Sprite *); -static void sub_81717B4(struct Sprite *); -static void sub_81714D4(struct Sprite *); -static void sub_8171520(struct Sprite *); -static void sub_81717D8(struct Sprite *); -static void sub_8171AE4(struct Sprite *); -static void sub_81717F8(struct Sprite *); -static void sub_81719EC(struct Sprite *); -static void sub_81718D8(struct Sprite *); -static void sub_81719C0(struct Sprite *); -static void sub_8171D60(u8); -static void sub_8171AAC(struct Sprite *); -static void sub_8171BAC(struct Sprite *); -static void sub_8171CE8(struct Sprite *); +static void AnimTask_ThrowBall_Step(u8); +static void SpriteCB_Ball_Throw(struct Sprite *); +static void AnimTask_ThrowBall_StandingTrainer_Step(u8); +static void Task_PlayerThrow_Wait(u8); +static void SpriteCB_Ball_Arc(struct Sprite *); +static void SpriteCB_Ball_Block(struct Sprite *); +static void SpriteCB_Ball_MonShrink(struct Sprite *); +static void SpriteCB_Ball_MonShrink_Step(struct Sprite *); +static void SpriteCB_Ball_Bounce(struct Sprite *); +static void SpriteCB_Ball_Bounce_Step(struct Sprite *); +static void SpriteCB_Ball_Release(struct Sprite *); +static void SpriteCB_Ball_Wobble(struct Sprite *); +static void SpriteCB_Ball_Wobble_Step(struct Sprite *); +static void SpriteCB_Ball_Capture(struct Sprite *); +static void SpriteCB_Ball_Release_Step(struct Sprite *); +static void SpriteCB_Ball_Capture_Step(struct Sprite *); +static void MakeCaptureStars(struct Sprite *); +static void SpriteCB_Ball_FadeOut(struct Sprite *); +static void DestroySpriteAfterOneFrame(struct Sprite *); +static void LoadBallParticleGfx(u8); +static void SpriteCB_CaptureStar_Flicker(struct Sprite *); +static void SpriteCB_Ball_Release_Wait(struct Sprite *); +static void SpriteCB_Ball_Block_Step(struct Sprite *); static void PokeBallOpenParticleAnimation_Step1(struct Sprite *); static void PokeBallOpenParticleAnimation_Step2(struct Sprite *); static void DestroyBallOpenAnimationParticle(struct Sprite *); static void FanOutBallOpenParticles_Step1(struct Sprite *); static void RepeatBallOpenParticleAnimation_Step1(struct Sprite *); static void PremierBallOpenParticleAnimation_Step1(struct Sprite *); -static void sub_8172AB0(u8); -static void sub_8172B40(u8); -static void sub_8172B90(u8); -static void sub_8172FEC(u8); -static void sub_81731FC(struct Sprite *); -static void sub_8173250(struct Sprite *); -static void sub_81731B0(u8); -static void sub_817339C(struct Sprite *); -static void sub_81733D4(struct Sprite *); -static void sub_8173400(struct Sprite *); +static void Task_FadeMon_ToBallColor(u8); +static void Task_FadeMon_ToNormal(u8); +static void Task_FadeMon_ToNormal_Step(u8); +static void Task_ShinyStars(u8); +static void SpriteCB_ShinyStars_Encircle(struct Sprite *); +static void SpriteCB_ShinyStars_Diagonal(struct Sprite *); +static void Task_ShinyStars_Wait(u8); +static void SpriteCB_PokeBlock_LiftArm(struct Sprite *); +static void SpriteCB_PokeBlock_Arc(struct Sprite *); +static void SpriteCB_ThrowPokeBlock_Free(struct Sprite *); static void PokeBallOpenParticleAnimation(u8); static void GreatBallOpenParticleAnimation(u8); static void SafariBallOpenParticleAnimation(u8); @@ -76,31 +98,31 @@ static void DiveBallOpenParticleAnimation(u8); static void RepeatBallOpenParticleAnimation(u8); static void TimerBallOpenParticleAnimation(u8); static void PremierBallOpenParticleAnimation(u8); -static void sub_817330C(struct Sprite *); +static void SpriteCB_PokeBlock_Throw(struct Sprite *); -struct BallCaptureSuccessStarData +struct CaptureStar { s8 xOffset; s8 yOffset; - s8 unk2; + s8 amplitude; }; -static const struct BallCaptureSuccessStarData sBallCaptureSuccessStarData[] = +static const struct CaptureStar sCaptureStars[] = { { .xOffset = 10, .yOffset = 2, - .unk2 = -3, + .amplitude = -3, }, { .xOffset = 15, .yOffset = 0, - .unk2 = -4, + .amplitude = -4, }, { .xOffset = -10, .yOffset = 2, - .unk2 = -4, + .amplitude = -4, }, }; @@ -379,7 +401,7 @@ const struct SpriteTemplate gPokeblockSpriteTemplate = .anims = gDummySpriteAnimTable, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_817330C, + .callback = SpriteCB_PokeBlock_Throw, }; const union AnimCmd gUnknown_085E5350[] = @@ -400,7 +422,7 @@ const struct SpriteTemplate gBattleAnimSpriteTemplate_085E535C = .anims = gUnknown_085E5358, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_817330C, + .callback = SpriteCB_PokeBlock_Throw, }; extern const struct SpriteTemplate gWishStarSpriteTemplate; @@ -578,7 +600,7 @@ void AnimTask_FlashHealthboxOnLevelUp(u8 taskId) static void sub_8170A38(u8 taskId) { u8 paletteNum; - int paletteOffset, colorOffset; + u32 paletteOffset, colorOffset; gTasks[taskId].data[0]++; if (gTasks[taskId].data[0]++ >= gTasks[taskId].data[11]) @@ -658,13 +680,13 @@ void AnimTask_SwitchOutBallEffect(u8 taskId) switch (gTasks[taskId].data[0]) { case 0: - x = GetBattlerSpriteCoord(gBattleAnimAttacker, 0); - y = GetBattlerSpriteCoord(gBattleAnimAttacker, 1); + x = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_X); + y = GetBattlerSpriteCoord(gBattleAnimAttacker, BATTLER_COORD_Y); priority = gSprites[spriteId].oam.priority; subpriority = gSprites[spriteId].subpriority; gTasks[taskId].data[10] = AnimateBallOpenParticles(x, y + 32, priority, subpriority, ballId); selectedPalettes = sub_80A75AC(1, 0, 0, 0, 0, 0, 0); - gTasks[taskId].data[11] = LaunchBallFadeMonTask(0, gBattleAnimAttacker, selectedPalettes, ballId); + gTasks[taskId].data[11] = LaunchBallFadeMonTask(FALSE, gBattleAnimAttacker, selectedPalettes, ballId); gTasks[taskId].data[0]++; break; case 1: @@ -730,6 +752,12 @@ u8 ItemIdToBallId(u16 ballItem) } } +#define tSpriteId data[0] + +#define sDuration data[0] +#define sTargetX data[1] +#define sTargetY data[2] + void AnimTask_ThrowBall(u8 taskId) { u8 ballId; @@ -737,26 +765,26 @@ void AnimTask_ThrowBall(u8 taskId) ballId = ItemIdToBallId(gLastUsedItem); spriteId = CreateSprite(&gBallSpriteTemplates[ballId], 32, 80, 29); - gSprites[spriteId].data[0] = 34; - gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) - 16; - gSprites[spriteId].callback = sub_8171104; - gBattleSpritesDataPtr->animationData->field_9_x2 = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible; - gTasks[taskId].data[0] = spriteId; - gTasks[taskId].func = sub_8170EF0; + gSprites[spriteId].sDuration = 34; + gSprites[spriteId].sTargetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + gSprites[spriteId].sTargetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) - 16; + gSprites[spriteId].callback = SpriteCB_Ball_Throw; + gBattleSpritesDataPtr->animationData->wildMonInvisible = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible; + gTasks[taskId].tSpriteId = spriteId; + gTasks[taskId].func = AnimTask_ThrowBall_Step; } -static void sub_8170EF0(u8 taskId) +static void AnimTask_ThrowBall_Step(u8 taskId) { - u8 spriteId = gTasks[taskId].data[0]; - if ((u16)gSprites[spriteId].data[0] == 0xFFFF) + u8 spriteId = gTasks[taskId].tSpriteId; + if ((u16)gSprites[spriteId].sDuration == 0xFFFF) DestroyAnimVisualTask(taskId); } -// Safari Ball / Wally's ball throw -void AnimTask_ThrowBallSpecial(u8 taskId) +// Safari Zone throw / Wally's throw +void AnimTask_ThrowBall_StandingTrainer(u8 taskId) { - int x, y; + s16 x, y; u8 ballId; u8 subpriority; u8 spriteId; @@ -775,27 +803,33 @@ void AnimTask_ThrowBallSpecial(u8 taskId) ballId = ItemIdToBallId(gLastUsedItem); subpriority = GetBattlerSpriteSubpriority(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT)) + 1; spriteId = CreateSprite(&gBallSpriteTemplates[ballId], x + 32, y | 80, subpriority); - gSprites[spriteId].data[0] = 34; - gSprites[spriteId].data[1] = GetBattlerSpriteCoord(gBattleAnimTarget, 0); - gSprites[spriteId].data[2] = GetBattlerSpriteCoord(gBattleAnimTarget, 1) - 16; + gSprites[spriteId].sDuration = 34; + gSprites[spriteId].sTargetX = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_X); + gSprites[spriteId].sTargetY = GetBattlerSpriteCoord(gBattleAnimTarget, BATTLER_COORD_Y) - 16; gSprites[spriteId].callback = SpriteCallbackDummy; gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].callback = sub_8039E84; - gTasks[taskId].data[0] = spriteId; - gTasks[taskId].func = sub_8171030; + gTasks[taskId].tSpriteId = spriteId; + gTasks[taskId].func = AnimTask_ThrowBall_StandingTrainer_Step; } -static void sub_8171030(u8 taskId) +static void AnimTask_ThrowBall_StandingTrainer_Step(u8 taskId) { if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animCmdIndex == 1) { - PlaySE12WithPanning(SE_NAGERU, 0); - gSprites[gTasks[taskId].data[0]].callback = sub_8171104; - CreateTask(sub_81710A8, 10); - gTasks[taskId].func = sub_8170EF0; + PlaySE12WithPanning(SE_BALL_THROW, 0); + gSprites[gTasks[taskId].tSpriteId].callback = SpriteCB_Ball_Throw; + CreateTask(Task_PlayerThrow_Wait, 10); + gTasks[taskId].func = AnimTask_ThrowBall_Step; } } -static void sub_81710A8(u8 taskId) +#undef sDuration +#undef sTargetX +#undef sTargetY + +#undef tSpriteId + +static void Task_PlayerThrow_Wait(u8 taskId) { if (gSprites[gBattlerSpriteIds[GetBattlerAtPosition(B_POSITION_PLAYER_LEFT)]].animEnded) { @@ -804,29 +838,50 @@ static void sub_81710A8(u8 taskId) } } -static void sub_8171104(struct Sprite *sprite) +#define sTargetXArg data[1] +#define sTargetYArg data[2] + +#define sOffsetX data[1] // re-use +#define sTargetX data[2] // re-use +#define sOffsetY data[3] +#define sTargetY data[4] +#define sAmplitude data[5] + +static void SpriteCB_Ball_Throw(struct Sprite *sprite) { - u16 temp = sprite->data[1]; - u16 temp2 = sprite->data[2]; - sprite->data[1] = sprite->pos1.x; - sprite->data[2] = temp; - sprite->data[3] = sprite->pos1.y; - sprite->data[4] = temp2; - sprite->data[5] = -40; + u16 targetX = sprite->sTargetXArg; + u16 targetY = sprite->sTargetYArg; + + sprite->sOffsetX = sprite->pos1.x; + sprite->sTargetX = targetX; + sprite->sOffsetY = sprite->pos1.y; + sprite->sTargetY = targetY; + sprite->sAmplitude = -40; InitAnimArcTranslation(sprite); - sprite->callback = sub_8171134; + sprite->callback = SpriteCB_Ball_Arc; } -static void sub_8171134(struct Sprite *sprite) +#undef sTargetXArg +#undef sTargetYArg +#undef sOffsetX +#undef sTargetX +#undef sOffsetY +#undef sTargetY +#undef sAmplitude + +#define sTimer data[5] +#define sTaskId data[5] // re-use + +static void SpriteCB_Ball_Arc(struct Sprite *sprite) { - int i; + s32 i; u8 ballId; if (TranslateAnimHorizontalArc(sprite)) { if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_TRAINER_BLOCK) { - sprite->callback = sub_8171CAC; + sprite->callback = SpriteCB_Ball_Block; } else { @@ -839,374 +894,451 @@ static void sub_8171134(struct Sprite *sprite) for (i = 0; i < 8; i++) sprite->data[i] = 0; - sprite->data[5] = 0; - sprite->callback = sub_81711E8; + sprite->sTimer = 0; + sprite->callback = SpriteCB_Ball_MonShrink; ballId = ItemIdToBallId(gLastUsedItem); switch (ballId) { case 0 ... POKEBALL_COUNT - 1: AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId); - LaunchBallFadeMonTask(0, gBattleAnimTarget, 14, ballId); + LaunchBallFadeMonTask(FALSE, gBattleAnimTarget, 14, ballId); break; } } } } -static void sub_81711E8(struct Sprite *sprite) +static void SpriteCB_Ball_MonShrink(struct Sprite *sprite) { - if (++sprite->data[5] == 10) + if (++sprite->sTimer == 10) { - sprite->data[5] = CreateTask(TaskDummy, 50); - sprite->callback = sub_8171240; + sprite->sTaskId = CreateTask(TaskDummy, 50); + sprite->callback = SpriteCB_Ball_MonShrink_Step; gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0; } } -static void sub_8171240(struct Sprite *sprite) +#undef sTimer +#undef sTaskId + +#define tState data[0] +#define sTimer data[1] +#define sTaskId data[5] + +static void SpriteCB_Ball_MonShrink_Step(struct Sprite *sprite) { u8 spriteId; u8 taskId; spriteId = gBattlerSpriteIds[gBattleAnimTarget]; - taskId = sprite->data[5]; + taskId = sprite->sTaskId; - if (++gTasks[taskId].data[1] == 11) - PlaySE(SE_SUIKOMU); + if (++gTasks[taskId].sTimer == 11) + PlaySE(SE_BALL_TRADE); - switch (gTasks[taskId].data[0]) + switch (gTasks[taskId].tState) { - case 0: + case MON_SHRINK: PrepareBattlerSpriteForRotScale(spriteId, ST_OAM_OBJ_NORMAL); gTasks[taskId].data[10] = 256; - gUnknown_030062DC = 28; - gUnknown_030062E4 = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y); - gUnknown_030062E0 = (u32)(gUnknown_030062E4 * 256) / 28; - gTasks[taskId].data[2] = gUnknown_030062E0; - gTasks[taskId].data[0]++; + gMonShrinkDuration = 28; + gMonShrinkDistance = (gSprites[spriteId].pos1.y + gSprites[spriteId].pos2.y) - (sprite->pos1.y + sprite->pos2.y); + gMonShrinkDelta = (u32)(gMonShrinkDistance * 256) / gMonShrinkDuration; + gTasks[taskId].data[2] = gMonShrinkDelta; + gTasks[taskId].tState++; // MON_SHRINK_STEP break; - case 1: - gTasks[taskId].data[10] += 0x20; + case MON_SHRINK_STEP: + gTasks[taskId].data[10] += 32; SetSpriteRotScale(spriteId, gTasks[taskId].data[10], gTasks[taskId].data[10], 0); gTasks[taskId].data[3] += gTasks[taskId].data[2]; gSprites[spriteId].pos2.y = -gTasks[taskId].data[3] >> 8; - if (gTasks[taskId].data[10] >= 0x480) - gTasks[taskId].data[0]++; + if (gTasks[taskId].data[10] >= 1152) + gTasks[taskId].tState++; // MON_SHRINK_INVISIBLE break; - case 2: + case MON_SHRINK_INVISIBLE: ResetSpriteRotScale(spriteId); gSprites[spriteId].invisible = TRUE; - gTasks[taskId].data[0]++; + gTasks[taskId].tState++; // MON_SHRINK_FREE break; + case MON_SHRINK_FREE: default: if (gTasks[taskId].data[1] > 10) { DestroyTask(taskId); StartSpriteAnim(sprite, 2); sprite->data[5] = 0; - sprite->callback = sub_817138C; + sprite->callback = SpriteCB_Ball_Bounce; } break; } } -static void sub_817138C(struct Sprite *sprite) +#undef sTimer +#undef tState +#undef sTaskId + +#define sState data[3] +#define sAmplitude data[4] +#define sPhase data[5] + +static void SpriteCB_Ball_Bounce(struct Sprite *sprite) { - int angle; + s16 phase; if (sprite->animEnded) { - sprite->data[3] = 0; - sprite->data[4] = 40; - sprite->data[5] = 0; - angle = 0; - sprite->pos1.y += Cos(angle, 40); - sprite->pos2.y = -Cos(angle, sprite->data[4]); - sprite->callback = sub_81713D0; + sprite->sState = 0; + sprite->sAmplitude = 40; + sprite->sPhase = 0; + phase = 0; + sprite->pos1.y += Cos(phase, 40); + sprite->pos2.y = -Cos(phase, sprite->sAmplitude); + sprite->callback = SpriteCB_Ball_Bounce_Step; } } -static void sub_81713D0(struct Sprite *sprite) +#undef sState +#undef sAmplitude +#undef sPhase + +#define DIRECTION(state) (state & 0xFF) +#define PHASE_DELTA(state) (state >> 8) +#define BOUNCES(state) (state >> 8) +#define FALL(state) (state &= -0x100) +#define RISE_FASTER(state) (state += 257) + +#define BALL_FALLING 0 +#define BALL_RISING 1 + +#define sState data[3] +#define sAmplitude data[4] +#define sPhase data[5] +#define sTimer data[5] // re-use + +// Animates the Poké Ball dropping to ground and bouncing. +static void SpriteCB_Ball_Bounce_Step(struct Sprite *sprite) { bool8 lastBounce; - int bounceCount; + s16 bounceCount; - lastBounce = 0; + lastBounce = FALSE; - switch (sprite->data[3] & 0xFF) + switch (DIRECTION(sprite->sState)) { - case 0: - sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]); - sprite->data[5] += (sprite->data[3] >> 8) + 4; - if (sprite->data[5] >= 64) + case BALL_FALLING: + sprite->pos2.y = -Cos(sprite->sPhase, sprite->sAmplitude); + sprite->sPhase += PHASE_DELTA(sprite->sState) + 4; + // Once the ball touches the ground + if (sprite->sPhase >= 64) { - sprite->data[4] -= 10; - sprite->data[3] += 257; + sprite->sAmplitude -= 10; + RISE_FASTER(sprite->sState); - bounceCount = sprite->data[3] >> 8; + bounceCount = BOUNCES(sprite->sState); if (bounceCount == 4) - lastBounce = 1; + lastBounce = TRUE; - // Play a different sound effect for each pokeball bounce. switch (bounceCount) { case 1: - PlaySE(SE_KON); + PlaySE(SE_BALL_BOUNCE_1); break; case 2: - PlaySE(SE_KON2); + PlaySE(SE_BALL_BOUNCE_2); break; case 3: - PlaySE(SE_KON3); + PlaySE(SE_BALL_BOUNCE_3); break; default: - PlaySE(SE_KON4); + PlaySE(SE_BALL_BOUNCE_4); break; } } break; - case 1: - sprite->pos2.y = -Cos(sprite->data[5], sprite->data[4]); - sprite->data[5] -= (sprite->data[3] >> 8) + 4; - if (sprite->data[5] <= 0) + case BALL_RISING: + sprite->pos2.y = -Cos(sprite->sPhase, sprite->sAmplitude); + sprite->sPhase -= PHASE_DELTA(sprite->sState) + 4; + // Once ball reaches max height + if (sprite->sPhase <= 0) { - sprite->data[5] = 0; - sprite->data[3] &= -0x100; + // Set to BALL_FALLING + sprite->sPhase = 0; + FALL(sprite->sState); } break; } if (lastBounce) { - sprite->data[3] = 0; + sprite->sState = 0; sprite->pos1.y += Cos(64, 40); sprite->pos2.y = 0; if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_NO_SHAKES) { - sprite->data[5] = 0; - sprite->callback = sub_81717B4; + sprite->sTimer = 0; + sprite->callback = SpriteCB_Ball_Release; } else { - sprite->callback = sub_81714D4; + sprite->callback = SpriteCB_Ball_Wobble; sprite->data[4] = 1; sprite->data[5] = 0; } } } -static void sub_81714D4(struct Sprite *sprite) +#undef sState +#undef sAmplitude +#undef sPhase +#undef sTimer + +#undef DIRECTION +#undef PHASE_DELTA +#undef BOUNCES +#undef FALL +#undef RISE_FASTER + +#define sTimer data[3] +#define sState data[3] // re-use + +static void SpriteCB_Ball_Wobble(struct Sprite *sprite) { - if (++sprite->data[3] == 31) + if (++sprite->sTimer == 31) { - sprite->data[3] = 0; - sprite->affineAnimPaused = 1; - StartSpriteAffineAnim(sprite, 1); - gBattleSpritesDataPtr->animationData->field_C = 0; - sprite->callback = sub_8171520; - PlaySE(SE_BOWA); + sprite->sState = 0; + sprite->affineAnimPaused = TRUE; + StartSpriteAffineAnim(sprite, BALL_ROTATE_RIGHT); + gBattleSpritesDataPtr->animationData->ballSubpx = 0; + sprite->callback = SpriteCB_Ball_Wobble_Step; + PlaySE(SE_BALL); } } -static void sub_8171520(struct Sprite *sprite) +#undef sTimer +#undef sState + +#define sState data[3] +#define sDirection data[4] +#define sTimer data[5] + +#define STATE(state) (state & 0xFF) +#define SHAKES(state) (state >> 8) +#define SHAKE_INC(state) (state += 0x100) +#define RESET_STATE(state) (state &= -0x100) + +static void SpriteCB_Ball_Wobble_Step(struct Sprite *sprite) { - s8 state; - u16 var0; + s8 shakes; + u16 frame; - switch (sprite->data[3] & 0xFF) + switch (STATE(sprite->sState)) { - case 0: - if (gBattleSpritesDataPtr->animationData->field_C > 0xFF) + case BALL_ROLL_1: + // Rolling effect: every frame in the rotation, the sprite shifts 176/256 of a pixel. + if (gBattleSpritesDataPtr->animationData->ballSubpx > 255) { - sprite->pos2.x += sprite->data[4]; - gBattleSpritesDataPtr->animationData->field_C &= 0xFF; + sprite->pos2.x += sprite->sDirection; + gBattleSpritesDataPtr->animationData->ballSubpx &= 0xFF; } else - { - gBattleSpritesDataPtr->animationData->field_C += 0xB0; - } + gBattleSpritesDataPtr->animationData->ballSubpx += 176; - sprite->data[5]++; - sprite->affineAnimPaused = 0; - var0 = sprite->data[5] + 7; - if (var0 > 14) + sprite->sTimer++; + sprite->affineAnimPaused = FALSE; + frame = sprite->sTimer + 7; + if (frame > 14) { - gBattleSpritesDataPtr->animationData->field_C = 0; - sprite->data[3]++; - sprite->data[5] = 0; + gBattleSpritesDataPtr->animationData->ballSubpx = 0; + sprite->sState++; // BALL_PIVOT_1 + sprite->sTimer = 0; } break; - case 1: - if (++sprite->data[5] == 1) + case BALL_PIVOT_1: + if (++sprite->sTimer == 1) { - sprite->data[5] = 0; - sprite->data[4] = -sprite->data[4]; - sprite->data[3]++; - sprite->affineAnimPaused = 0; - if (sprite->data[4] < 0) - ChangeSpriteAffineAnim(sprite, 2); + sprite->sTimer = 0; + sprite->sDirection = -sprite->sDirection; + sprite->sState++; // BALL_ROLL_2 + sprite->affineAnimPaused = FALSE; + if (sprite->sDirection < 0) + ChangeSpriteAffineAnim(sprite, BALL_ROTATE_LEFT); else - ChangeSpriteAffineAnim(sprite, 1); + ChangeSpriteAffineAnim(sprite, BALL_ROTATE_RIGHT); } else - { - sprite->affineAnimPaused = 1; - } + sprite->affineAnimPaused = TRUE; break; - case 2: - if (gBattleSpritesDataPtr->animationData->field_C > 0xFF) + case BALL_ROLL_2: + if (gBattleSpritesDataPtr->animationData->ballSubpx > 255) { - sprite->pos2.x += sprite->data[4]; - gBattleSpritesDataPtr->animationData->field_C &= 0xFF; + sprite->pos2.x += sprite->sDirection; + gBattleSpritesDataPtr->animationData->ballSubpx &= 0xFF; } else - { - gBattleSpritesDataPtr->animationData->field_C += 0xB0; - } + gBattleSpritesDataPtr->animationData->ballSubpx += 176; - sprite->data[5]++; - sprite->affineAnimPaused = 0; - var0 = sprite->data[5] + 12; - if (var0 > 24) + sprite->sTimer++; + sprite->affineAnimPaused = FALSE; + frame = sprite->sTimer + 12; + if (frame > 24) { - gBattleSpritesDataPtr->animationData->field_C = 0; - sprite->data[3]++; - sprite->data[5] = 0; + gBattleSpritesDataPtr->animationData->ballSubpx = 0; + sprite->sState++; // BALL_PIVOT_2 + sprite->sTimer = 0; } break; - case 3: - if (sprite->data[5]++ < 0) + case BALL_PIVOT_2: + if (sprite->sTimer++ < 0) { - sprite->affineAnimPaused = 1; + sprite->affineAnimPaused = TRUE; break; } - sprite->data[5] = 0; - sprite->data[4] = -sprite->data[4]; - sprite->data[3]++; - sprite->affineAnimPaused = 0; - if (sprite->data[4] < 0) - ChangeSpriteAffineAnim(sprite, 2); + sprite->sTimer = 0; + sprite->sDirection = -sprite->sDirection; + sprite->sState++; // BALL_ROLL_3 + sprite->affineAnimPaused = FALSE; + if (sprite->sDirection < 0) + ChangeSpriteAffineAnim(sprite, BALL_ROTATE_LEFT); else - ChangeSpriteAffineAnim(sprite, 1); + ChangeSpriteAffineAnim(sprite, BALL_ROTATE_RIGHT); // fall through - case 4: - if (gBattleSpritesDataPtr->animationData->field_C > 0xFF) + case BALL_ROLL_3: + if (gBattleSpritesDataPtr->animationData->ballSubpx > 0xFF) { - sprite->pos2.x += sprite->data[4]; - gBattleSpritesDataPtr->animationData->field_C &= 0xFF; + sprite->pos2.x += sprite->sDirection; + gBattleSpritesDataPtr->animationData->ballSubpx &= 0xFF; } else - { - gBattleSpritesDataPtr->animationData->field_C += 0xB0; - } + gBattleSpritesDataPtr->animationData->ballSubpx += 176; - sprite->data[5]++; - sprite->affineAnimPaused = 0; - var0 = sprite->data[5] + 4; - if (var0 > 8) + sprite->sTimer++; + sprite->affineAnimPaused = FALSE; + frame = sprite->sTimer + 4; + if (frame > 8) { - gBattleSpritesDataPtr->animationData->field_C = 0; - sprite->data[3]++; - sprite->data[5] = 0; - sprite->data[4] = -sprite->data[4]; + gBattleSpritesDataPtr->animationData->ballSubpx = 0; + sprite->sState++; // BALL_NEXT_MOVE + sprite->sTimer = 0; + sprite->sDirection = -sprite->sDirection; } break; - case 5: - sprite->data[3] += 0x100; - state = sprite->data[3] >> 8; - if (state == gBattleSpritesDataPtr->animationData->ballThrowCaseId) + case BALL_NEXT_MOVE: + SHAKE_INC(sprite->sState); + shakes = SHAKES(sprite->sState); + if (shakes == gBattleSpritesDataPtr->animationData->ballThrowCaseId) { - sprite->affineAnimPaused = 1; - sprite->callback = sub_81717B4; + sprite->affineAnimPaused = TRUE; + sprite->callback = SpriteCB_Ball_Release; } else { - if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_3_SHAKES_SUCCESS && state == 3) + if (gBattleSpritesDataPtr->animationData->ballThrowCaseId == BALL_3_SHAKES_SUCCESS && shakes == 3) { - sprite->callback = sub_81717D8; - sprite->affineAnimPaused = 1; + sprite->callback = SpriteCB_Ball_Capture; + sprite->affineAnimPaused = TRUE; } else { - sprite->data[3]++; - sprite->affineAnimPaused = 1; + sprite->sState++; // BALL_WAIT_NEXT_SHAKE + sprite->affineAnimPaused = TRUE; } } break; - case 6: + case BALL_WAIT_NEXT_SHAKE: default: - if (++sprite->data[5] == 31) + if (++sprite->sTimer == 31) { - sprite->data[5] = 0; - sprite->data[3] &= -0x100; + sprite->sTimer = 0; + RESET_STATE(sprite->sState); StartSpriteAffineAnim(sprite, 3); - if (sprite->data[4] < 0) - StartSpriteAffineAnim(sprite, 2); + if (sprite->sDirection < 0) + StartSpriteAffineAnim(sprite, BALL_ROTATE_LEFT); else - StartSpriteAffineAnim(sprite, 1); + StartSpriteAffineAnim(sprite, BALL_ROTATE_RIGHT); - PlaySE(SE_BOWA); + PlaySE(SE_BALL); } break; } } -static void sub_81717B4(struct Sprite *sprite) +#undef STATE +#undef SHAKES +#undef SHAKE_INC +#undef RESET_STATE + +#undef sState + +#define sTimer data[5] + +static void SpriteCB_Ball_Release(struct Sprite *sprite) { - if (++sprite->data[5] == 31) + if (++sprite->sTimer == 31) { sprite->data[5] = 0; - sprite->callback = sub_8171AE4; + sprite->callback = SpriteCB_Ball_Release_Step; } } +#undef sTimer -static void sub_81717D8(struct Sprite *sprite) +#define sState data[0] +#define sTimer data[4] + +static void SpriteCB_Ball_Capture(struct Sprite *sprite) { - sprite->animPaused = 1; - sprite->callback = sub_81717F8; + sprite->animPaused = TRUE; + sprite->callback = SpriteCB_Ball_Capture_Step; sprite->data[3] = 0; - sprite->data[4] = 0; + sprite->sTimer = 0; sprite->data[5] = 0; } -static void sub_81717F8(struct Sprite *sprite) +// Fade and unfade ball, create star animations, play sound effects +static void SpriteCB_Ball_Capture_Step(struct Sprite *sprite) { u8 *battler = &gBattleAnimTarget; - sprite->data[4]++; - if (sprite->data[4] == 40) + sprite->sTimer++; + if (sprite->sTimer == 40) { - PlaySE(SE_RG_GETTING); + PlaySE(SE_RG_BALL_CLICK); BlendPalettes(0x10000 << sprite->oam.paletteNum, 6, RGB(0, 0, 0)); - sub_81719EC(sprite); + MakeCaptureStars(sprite); } - else if (sprite->data[4] == 60) + else if (sprite->sTimer == 60) { BeginNormalPaletteFade(0x10000 << sprite->oam.paletteNum, 2, 6, 0, RGB(0, 0, 0)); } - else if (sprite->data[4] == 95) + else if (sprite->sTimer == 95) { - gDoingBattleAnim = 0; + gDoingBattleAnim = FALSE; UpdateOamPriorityInAllHealthboxes(1); m4aMPlayAllStop(); - PlaySE(MUS_RG_FAN6); + PlaySE(MUS_RG_CAUGHT_INTRO); } - else if (sprite->data[4] == 315) + else if (sprite->sTimer == 315) { FreeOamMatrix(gSprites[gBattlerSpriteIds[*battler]].oam.matrixNum); DestroySprite(&gSprites[gBattlerSpriteIds[*battler]]); - sprite->data[0] = 0; - sprite->callback = sub_81718D8; + + sprite->sState = 0; + sprite->callback = SpriteCB_Ball_FadeOut; } } -static void sub_81718D8(struct Sprite *sprite) +#undef sTimer +#undef sState + +#define sState data[0] +#define sFrame data[0] // re-use + +static void SpriteCB_Ball_FadeOut(struct Sprite *sprite) { u8 paletteIndex; - switch (sprite->data[0]) + switch (sprite->sState) { case 0: sprite->data[1] = 0; @@ -1216,7 +1348,7 @@ static void sub_81718D8(struct Sprite *sprite) SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16, 0)); paletteIndex = IndexOfSpritePaletteTag(sprite->template->paletteTag); BeginNormalPaletteFade(1 << (paletteIndex + 0x10), 0, 0, 16, RGB(31, 31, 31)); - sprite->data[0]++; + sprite->sState++; break; case 1: if (sprite->data[1]++ > 0) @@ -1225,103 +1357,124 @@ static void sub_81718D8(struct Sprite *sprite) sprite->data[2]++; SetGpuReg(REG_OFFSET_BLDALPHA, BLDALPHA_BLEND(16 - sprite->data[2], sprite->data[2])); if (sprite->data[2] == 16) - sprite->data[0]++; + sprite->sState++; } break; case 2: sprite->invisible = TRUE; - sprite->data[0]++; + sprite->sState++; break; default: if (!gPaletteFade.active) { SetGpuReg(REG_OFFSET_BLDCNT, 0); SetGpuReg(REG_OFFSET_BLDALPHA, 0); - sprite->data[0] = 0; - sprite->callback = sub_81719C0; + + sprite->sFrame = 0; + sprite->callback = DestroySpriteAfterOneFrame; } break; } } -static void sub_81719C0(struct Sprite *sprite) +#undef sState +#undef sFrame + +#define sFrame data[0] + +static void DestroySpriteAfterOneFrame(struct Sprite *sprite) { - if (sprite->data[0] == 0) - { - sprite->data[0] = -1; - } + if (sprite->sFrame == 0) + sprite->sFrame = -1; else { FreeSpriteOamMatrix(sprite); DestroySprite(sprite); } } +#undef sFrame + +#define sDuration data[0] +#define sTargetX data[2] +#define sTargetY data[4] +#define sAmplitude data[5] -static void sub_81719EC(struct Sprite *sprite) +static void MakeCaptureStars(struct Sprite *sprite) { u32 i; u8 subpriority; if (sprite->subpriority) - { subpriority = sprite->subpriority - 1; - } else { subpriority = 0; sprite->subpriority = 1; } - sub_8171D60(4); - for (i = 0; i < 3; i++) + LoadBallParticleGfx(BALL_MASTER); + for (i = 0; i < ARRAY_COUNT(sCaptureStars); i++) { u8 spriteId = CreateSprite(&gBallParticlesSpriteTemplates[4], sprite->pos1.x, sprite->pos1.y, subpriority); if (spriteId != MAX_SPRITES) { - gSprites[spriteId].data[0] = 24; - gSprites[spriteId].data[2] = sprite->pos1.x + sBallCaptureSuccessStarData[i].xOffset; - gSprites[spriteId].data[4] = sprite->pos1.y + sBallCaptureSuccessStarData[i].yOffset; - gSprites[spriteId].data[5] = sBallCaptureSuccessStarData[i].unk2; + gSprites[spriteId].sDuration = 24; + gSprites[spriteId].sTargetX = sprite->pos1.x + sCaptureStars[i].xOffset; + gSprites[spriteId].sTargetY = sprite->pos1.y + sCaptureStars[i].yOffset; + gSprites[spriteId].sAmplitude = sCaptureStars[i].amplitude; InitAnimArcTranslation(&gSprites[spriteId]); - gSprites[spriteId].callback = sub_8171AAC; - StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[4]); + gSprites[spriteId].callback = SpriteCB_CaptureStar_Flicker; + StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[BALL_MASTER]); } } } -static void sub_8171AAC(struct Sprite *sprite) +#undef sDuration +#undef sTargetX +#undef sTargetY +#undef sAmplitude + +static void SpriteCB_CaptureStar_Flicker(struct Sprite *sprite) { sprite->invisible = !sprite->invisible; if (TranslateAnimHorizontalArc(sprite)) DestroySprite(sprite); } -static void sub_8171AE4(struct Sprite *sprite) +#define sFrame data[0] +#define sOffsetY data[1] + +// Poké Ball didn't catch - starts: +// - Ball particle animations +// - Wild mon fade to normal color +// - Wild mon emerge from Poké Ball +static void SpriteCB_Ball_Release_Step(struct Sprite *sprite) { u8 ballId; StartSpriteAnim(sprite, 1); StartSpriteAffineAnim(sprite, 0); - sprite->callback = sub_8171BAC; + sprite->callback = SpriteCB_Ball_Release_Wait; ballId = ItemIdToBallId(gLastUsedItem); switch (ballId) { case 0 ... POKEBALL_COUNT - 1: AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 28, ballId); - LaunchBallFadeMonTask(1, gBattleAnimTarget, 14, ballId); + LaunchBallFadeMonTask(TRUE, gBattleAnimTarget, 14, ballId); break; } + // Animate Pokémon emerging from Poké Ball gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = FALSE; StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 1); AnimateSprite(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]]); - gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] = 0x1000; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].sOffsetY = 4096; } -static void sub_8171BAC(struct Sprite *sprite) +static void SpriteCB_Ball_Release_Wait(struct Sprite *sprite) { - int next = FALSE; + bool8 released = FALSE; if (sprite->animEnded) sprite->invisible = TRUE; @@ -1329,28 +1482,31 @@ static void sub_8171BAC(struct Sprite *sprite) if (gSprites[gBattlerSpriteIds[gBattleAnimTarget]].affineAnimEnded) { StartSpriteAffineAnim(&gSprites[gBattlerSpriteIds[gBattleAnimTarget]], 0); - next = TRUE; + released = TRUE; } else { - gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] -= 288; - gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].data[1] >> 8; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].sOffsetY -= 288; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = gSprites[gBattlerSpriteIds[gBattleAnimTarget]].sOffsetY >> 8; } - if (sprite->animEnded && next) + if (sprite->animEnded && released) { gSprites[gBattlerSpriteIds[gBattleAnimTarget]].pos2.y = 0; - gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = gBattleSpritesDataPtr->animationData->field_9_x2; - sprite->data[0] = 0; - sprite->callback = sub_81719C0; + gSprites[gBattlerSpriteIds[gBattleAnimTarget]].invisible = gBattleSpritesDataPtr->animationData->wildMonInvisible; + sprite->sFrame = 0; + sprite->callback = DestroySpriteAfterOneFrame; gDoingBattleAnim = 0; UpdateOamPriorityInAllHealthboxes(1); } } -static void sub_8171CAC(struct Sprite *sprite) +#undef sFrame +#undef sOffsetY + +static void SpriteCB_Ball_Block(struct Sprite *sprite) { - int i; + s32 i; sprite->pos1.x += sprite->pos2.x; sprite->pos1.y += sprite->pos2.y; @@ -1359,29 +1515,40 @@ static void sub_8171CAC(struct Sprite *sprite) for (i = 0; i < 6; i++) sprite->data[i] = 0; - sprite->callback = sub_8171CE8; + sprite->callback = SpriteCB_Ball_Block_Step; } -static void sub_8171CE8(struct Sprite *sprite) +#define sDy data[0] +#define sDx data[1] + +#define sFrame data[0] // re-use + +// Poké Ball moves down off screen after being blocked. The x-speed oscillates. +static void SpriteCB_Ball_Block_Step(struct Sprite *sprite) { - s16 var0 = sprite->data[0] + 0x800; - s16 var1 = sprite->data[1] + 0x680; - sprite->pos2.x -= var1 >> 8; - sprite->pos2.y += var0 >> 8; - sprite->data[0] = (sprite->data[0] + 0x800) & 0xFF; - sprite->data[1] = (sprite->data[1] + 0x680) & 0xFF; + s16 dy = sprite->sDy + 0x800; + s16 dx = sprite->sDx + 0x680; + sprite->pos2.x -= dx >> 8; + sprite->pos2.y += dy >> 8; + sprite->sDy = (sprite->sDy + 0x800) & 0xFF; + sprite->sDx = (sprite->sDx + 0x680) & 0xFF; if (sprite->pos1.y + sprite->pos2.y > 160 || sprite->pos1.x + sprite->pos2.x < -8) { - sprite->data[0] = 0; - sprite->callback = sub_81719C0; + sprite->sFrame = 0; + sprite->callback = DestroySpriteAfterOneFrame; gDoingBattleAnim = 0; UpdateOamPriorityInAllHealthboxes(1); } } -static void sub_8171D60(u8 ballId) +#undef sDy +#undef sDx + +#undef sFrame + +static void LoadBallParticleGfx(u8 ballId) { u8 taskId; @@ -1396,22 +1563,22 @@ u8 AnimateBallOpenParticles(u8 x, u8 y, u8 priority, u8 subpriority, u8 ballId) { u8 taskId; - sub_8171D60(ballId); + LoadBallParticleGfx(ballId); taskId = CreateTask(gBallParticleAnimationFuncs[ballId], 5); gTasks[taskId].data[1] = x; gTasks[taskId].data[2] = y; gTasks[taskId].data[3] = priority; gTasks[taskId].data[4] = subpriority; gTasks[taskId].data[15] = ballId; - PlaySE(SE_BOWA2); + PlaySE(SE_BALL_OPEN); return taskId; } -void sub_8171E20(void) +static void IncrBallParticleCount(void) { if (gMain.inBattle) - gBattleSpritesDataPtr->animationData->field_A++; + gBattleSpritesDataPtr->animationData->numBallParticles++; } static void PokeBallOpenParticleAnimation(u8 taskId) @@ -1433,7 +1600,7 @@ static void PokeBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_8171E20(); + IncrBallParticleCount(); StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); gSprites[spriteId].callback = PokeBallOpenParticleAnimation_Step1; gSprites[spriteId].oam.priority = priority; @@ -1492,7 +1659,7 @@ static void TimerBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_8171E20(); + IncrBallParticleCount(); StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; @@ -1526,7 +1693,7 @@ static void DiveBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_8171E20(); + IncrBallParticleCount(); StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; @@ -1561,7 +1728,7 @@ static void SafariBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_8171E20(); + IncrBallParticleCount(); StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; @@ -1596,7 +1763,7 @@ static void UltraBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_8171E20(); + IncrBallParticleCount(); StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; @@ -1637,7 +1804,7 @@ static void GreatBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_8171E20(); + IncrBallParticleCount(); StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; @@ -1687,7 +1854,7 @@ static void RepeatBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_8171E20(); + IncrBallParticleCount(); StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); gSprites[spriteId].callback = RepeatBallOpenParticleAnimation_Step1; gSprites[spriteId].oam.priority = priority; @@ -1731,7 +1898,7 @@ static void MasterBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_8171E20(); + IncrBallParticleCount(); StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); gSprites[spriteId].callback = FanOutBallOpenParticles_Step1; gSprites[spriteId].oam.priority = priority; @@ -1775,7 +1942,7 @@ static void PremierBallOpenParticleAnimation(u8 taskId) spriteId = CreateSprite(&gBallParticlesSpriteTemplates[ballId], x, y, subpriority); if (spriteId != MAX_SPRITES) { - sub_8171E20(); + IncrBallParticleCount(); StartSpriteAnim(&gSprites[spriteId], gBallParticleAnimNums[ballId]); gSprites[spriteId].callback = PremierBallOpenParticleAnimation_Step1; gSprites[spriteId].oam.priority = priority; @@ -1802,7 +1969,7 @@ static void PremierBallOpenParticleAnimation_Step1(struct Sprite *sprite) static void DestroyBallOpenAnimationParticle(struct Sprite *sprite) { - int i, j; + s32 i, j; if (!gMain.inBattle) { @@ -1813,8 +1980,8 @@ static void DestroyBallOpenAnimationParticle(struct Sprite *sprite) } else { - gBattleSpritesDataPtr->animationData->field_A--; - if (gBattleSpritesDataPtr->animationData->field_A == 0) + gBattleSpritesDataPtr->animationData->numBallParticles--; + if (gBattleSpritesDataPtr->animationData->numBallParticles == 0) { for (i = 0; i < POKEBALL_COUNT; i++) { @@ -1840,70 +2007,78 @@ static void DestroyBallOpenAnimationParticle(struct Sprite *sprite) } } -u8 LaunchBallFadeMonTask(u8 unfadeLater, u8 battler, u32 selectedPalettes, u8 ballId) +#define tCoeff data[0] +#define tdCoeff data[1] +#define tTimer data[2] +#define tPalOffset data[3] +#define tPaletteLo data[10] +#define tPaletteHi data[11] +#define tBallId data[15] + +u8 LaunchBallFadeMonTask(bool8 unfadeLater, u8 battler, u32 selectedPalettes, u8 ballId) { u8 taskId; - taskId = CreateTask(sub_8172AB0, 5); - gTasks[taskId].data[15] = ballId; - gTasks[taskId].data[3] = battler; - gTasks[taskId].data[10] = selectedPalettes; - gTasks[taskId].data[11] = selectedPalettes >> 16; + taskId = CreateTask(Task_FadeMon_ToBallColor, 5); + gTasks[taskId].tBallId = ballId; + gTasks[taskId].tPalOffset = battler; + gTasks[taskId].tPaletteLo = selectedPalettes; + gTasks[taskId].tPaletteHi = selectedPalettes >> 16; if (!unfadeLater) { BlendPalette(battler * 16 + 0x100, 16, 0, gBallOpenFadeColors[ballId]); - gTasks[taskId].data[1] = 1; + gTasks[taskId].tdCoeff = 1; } else { BlendPalette(battler * 16 + 0x100, 16, 16, gBallOpenFadeColors[ballId]); - gTasks[taskId].data[0] = 16; - gTasks[taskId].data[1] = -1; - gTasks[taskId].func = sub_8172B40; + gTasks[taskId].tCoeff = 16; + gTasks[taskId].tdCoeff = -1; + gTasks[taskId].func = Task_FadeMon_ToNormal; } BeginNormalPaletteFade(selectedPalettes, 0, 0, 16, RGB(31, 31, 31)); return taskId; } -static void sub_8172AB0(u8 taskId) +static void Task_FadeMon_ToBallColor(u8 taskId) { - u8 ballId = gTasks[taskId].data[15]; + u8 ballId = gTasks[taskId].tBallId; - if (gTasks[taskId].data[2] <= 16) + if (gTasks[taskId].tTimer <= 16) { - BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gBallOpenFadeColors[ballId]); - gTasks[taskId].data[0] += gTasks[taskId].data[1]; - gTasks[taskId].data[2]++; + BlendPalette(gTasks[taskId].tPalOffset * 16 + 0x100, 16, gTasks[taskId].tCoeff, gBallOpenFadeColors[ballId]); + gTasks[taskId].tCoeff += gTasks[taskId].tdCoeff; + gTasks[taskId].tTimer++; } else if (!gPaletteFade.active) { - u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16); - BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB(31, 31, 31)); + u32 selectedPalettes = (u16)gTasks[taskId].tPaletteLo | ((u16)gTasks[taskId].tPaletteHi << 16); + BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB_WHITE); DestroyTask(taskId); } } -static void sub_8172B40(u8 taskId) +static void Task_FadeMon_ToNormal(u8 taskId) { if (!gPaletteFade.active) { - u32 selectedPalettes = (u16)gTasks[taskId].data[10] | ((u16)gTasks[taskId].data[11] << 16); - BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB(31, 31, 31)); - gTasks[taskId].func = sub_8172B90; + u32 selectedPalettes = (u16)gTasks[taskId].tPaletteLo | ((u16)gTasks[taskId].tPaletteHi << 16); + BeginNormalPaletteFade(selectedPalettes, 0, 16, 0, RGB_WHITE); + gTasks[taskId].func = Task_FadeMon_ToNormal_Step; } } -static void sub_8172B90(u8 taskId) +static void Task_FadeMon_ToNormal_Step(u8 taskId) { - u8 ballId = gTasks[taskId].data[15]; + u8 ballId = gTasks[taskId].tBallId; - if (gTasks[taskId].data[2] <= 16) + if (gTasks[taskId].tTimer <= 16) { - BlendPalette(gTasks[taskId].data[3] * 16 + 0x100, 16, gTasks[taskId].data[0], gBallOpenFadeColors[ballId]); - gTasks[taskId].data[0] += gTasks[taskId].data[1]; - gTasks[taskId].data[2]++; + BlendPalette(gTasks[taskId].tPalOffset * 16 + 0x100, 16, gTasks[taskId].tCoeff, gBallOpenFadeColors[ballId]); + gTasks[taskId].tCoeff += gTasks[taskId].tdCoeff; + gTasks[taskId].tTimer++; } else { @@ -1911,6 +2086,14 @@ static void sub_8172B90(u8 taskId) } } +#undef tCoeff +#undef tdCoeff +#undef tTimer +#undef tPalOffset +#undef tPaletteLo +#undef tPaletteHi +#undef tBallId + // arg0: TRUE to swap to mon, FALSE to swap to substitute void AnimTask_SwapMonSpriteToFromSubstitute(u8 taskId) { @@ -2016,14 +2199,25 @@ void AnimTask_SetTargetToEffectBattler(u8 taskId) DestroyAnimVisualTask(taskId); } -void sub_8172EF0(u8 battler, struct Pokemon *mon) +#define tBattler data[0] +#define tStarMove data[1] +#define tStarTimer data[10] +#define tStarIdx data[11] +#define tNumStars data[12] +#define tTimer data[13] + +#define sTaskId data[0] +#define sPhase data[1] // For encircling stars +#define sTimer data[1] // For diagnoal stars + +void TryShinyAnimation(u8 battler, struct Pokemon *mon) { - int isShiny; + bool8 isShiny; u32 otId, personality; u32 shinyValue; - u8 taskId1, taskId2; + u8 taskCirc, taskDgnl; - isShiny = 0; + isShiny = FALSE; gBattleSpritesDataPtr->healthBoxesData[battler].flag_x80 = 1; otId = GetMonData(mon, MON_DATA_OT_ID); personality = GetMonData(mon, MON_DATA_PERSONALITY); @@ -2042,12 +2236,12 @@ void sub_8172EF0(u8 battler, struct Pokemon *mon) LoadCompressedSpritePaletteUsingHeap(&gBattleAnimPaletteTable[ANIM_TAG_GOLD_STARS - ANIM_SPRITES_START]); } - taskId1 = CreateTask(sub_8172FEC, 10); - taskId2 = CreateTask(sub_8172FEC, 10); - gTasks[taskId1].data[0] = battler; - gTasks[taskId2].data[0] = battler; - gTasks[taskId1].data[1] = 0; - gTasks[taskId2].data[1] = 1; + taskCirc = CreateTask(Task_ShinyStars, 10); + taskDgnl = CreateTask(Task_ShinyStars, 10); + gTasks[taskCirc].tBattler = battler; + gTasks[taskDgnl].tBattler = battler; + gTasks[taskCirc].tStarMove = SHINY_STAR_ENCIRCLE; + gTasks[taskDgnl].tStarMove = SHINY_STAR_DIAGONAL; return; } } @@ -2055,86 +2249,88 @@ void sub_8172EF0(u8 battler, struct Pokemon *mon) gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1; } -static void sub_8172FEC(u8 taskId) +static void Task_ShinyStars(u8 taskId) { u8 battler; u8 x, y; u8 spriteId; - u16 counter; - s16 state; + u16 timer; + s16 starIdx; u8 pan; - if (gTasks[taskId].data[13] < 60) + if (gTasks[taskId].tTimer < 60) { - gTasks[taskId].data[13]++; + gTasks[taskId].tTimer++; return; } - if (gBattleSpritesDataPtr->animationData->field_A) + // Wait until the ball particles have despawned + if (gBattleSpritesDataPtr->animationData->numBallParticles) return; - counter = gTasks[taskId].data[10]++; - if (counter & 3) + timer = gTasks[taskId].tStarTimer++; + if (timer % 4) // Create sprite 1 of every 4 frames return; - battler = gTasks[taskId].data[0]; - x = GetBattlerSpriteCoord(battler, 0); - y = GetBattlerSpriteCoord(battler, 1); - state = gTasks[taskId].data[11]; - if (state == 0) + battler = gTasks[taskId].tBattler; + x = GetBattlerSpriteCoord(battler, BATTLER_COORD_X); + y = GetBattlerSpriteCoord(battler, BATTLER_COORD_Y); + + starIdx = gTasks[taskId].tStarIdx; + if (starIdx == 0) // Big star { spriteId = CreateSprite(&gWishStarSpriteTemplate, x, y, 5); } - else if (state >= 0 && gTasks[taskId].data[11] < 4) + else if (starIdx >= 0 && gTasks[taskId].tStarIdx < 4) // Medium star { spriteId = CreateSprite(&gMiniTwinklingStarSpriteTemplate, x, y, 5); gSprites[spriteId].oam.tileNum += 4; } - else + else // Small star { spriteId = CreateSprite(&gMiniTwinklingStarSpriteTemplate, x, y, 5); gSprites[spriteId].oam.tileNum += 5; } - if (gTasks[taskId].data[1] == 0) + if (gTasks[taskId].tStarMove == SHINY_STAR_ENCIRCLE) { - gSprites[spriteId].callback = sub_81731FC; + gSprites[spriteId].callback = SpriteCB_ShinyStars_Encircle; } else { - gSprites[spriteId].callback = sub_8173250; + gSprites[spriteId].callback = SpriteCB_ShinyStars_Diagonal; gSprites[spriteId].pos2.x = -32; gSprites[spriteId].pos2.y = 32; gSprites[spriteId].invisible = TRUE; - if (gTasks[taskId].data[11] == 0) + if (gTasks[taskId].tStarIdx == 0) { if (GetBattlerSide(battler) == B_SIDE_PLAYER) pan = -64; else pan = 63; - PlaySE12WithPanning(SE_REAPOKE, pan); + PlaySE12WithPanning(SE_SHINY, pan); } } - gSprites[spriteId].data[0] = taskId; - gTasks[taskId].data[11]++; + gSprites[spriteId].sTaskId = taskId; + gTasks[taskId].tStarIdx++; if (spriteId != MAX_SPRITES) - gTasks[taskId].data[12]++; + gTasks[taskId].tNumStars++; - if (gTasks[taskId].data[11] == 5) - gTasks[taskId].func = sub_81731B0; + if (gTasks[taskId].tStarIdx == 5) + gTasks[taskId].func = Task_ShinyStars_Wait; } -static void sub_81731B0(u8 taskId) +static void Task_ShinyStars_Wait(u8 taskId) { u8 battler; - if (gTasks[taskId].data[12] == 0) + if (gTasks[taskId].tNumStars == 0) { - if (gTasks[taskId].data[1] == 1) + if (gTasks[taskId].tStarMove == SHINY_STAR_DIAGONAL) { - battler = gTasks[taskId].data[0]; + battler = gTasks[taskId].tBattler; gBattleSpritesDataPtr->healthBoxesData[battler].field_1_x1 = 1; } @@ -2142,25 +2338,24 @@ static void sub_81731B0(u8 taskId) } } -static void sub_81731FC(struct Sprite *sprite) +static void SpriteCB_ShinyStars_Encircle(struct Sprite *sprite) { - sprite->pos2.x = Sin(sprite->data[1], 24); - sprite->pos2.y = Cos(sprite->data[1], 24); - sprite->data[1] += 12; - if (sprite->data[1] > 0xFF) + sprite->pos2.x = Sin(sprite->sPhase, 24); + sprite->pos2.y = Cos(sprite->sPhase, 24); + sprite->sPhase += 12; + if (sprite->sPhase > 255) { - gTasks[sprite->data[0]].data[12]--; + gTasks[sprite->sTaskId].tNumStars--; FreeSpriteOamMatrix(sprite); DestroySprite(sprite); } } -static void sub_8173250(struct Sprite *sprite) +static void SpriteCB_ShinyStars_Diagonal(struct Sprite *sprite) { - if (sprite->data[1] < 4) - { - sprite->data[1]++; - } + // Delayed four frames to de-sync from encircling stars + if (sprite->sTimer < 4) + sprite->sTimer++; else { sprite->invisible = FALSE; @@ -2168,13 +2363,24 @@ static void sub_8173250(struct Sprite *sprite) sprite->pos2.y -= 5; if (sprite->pos2.x > 32) { - gTasks[sprite->data[0]].data[12]--; + gTasks[sprite->sTaskId].tNumStars--; FreeSpriteOamMatrix(sprite); DestroySprite(sprite); } } } +#undef tBattler +#undef tStarMove +#undef tStarTimer +#undef tStarIdx +#undef tNumStars +#undef tTimer + +#undef sTaskId +#undef sPhase +#undef sTimer + void AnimTask_LoadPokeblockGfx(u8 taskId) { u8 paletteIndex; @@ -2192,35 +2398,46 @@ void AnimTask_FreePokeblockGfx(u8 taskId) DestroyAnimVisualTask(taskId); } -static void sub_817330C(struct Sprite *sprite) +#define sDuration data[0] +#define sTargetX data[2] +#define sTargetY data[4] +#define sAmplitude data[5] + +static void SpriteCB_PokeBlock_Throw(struct Sprite *sprite) { InitSpritePosToAnimAttacker(sprite, 0); - sprite->data[0] = 30; - sprite->data[2] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), 0) + gBattleAnimArgs[2]; - sprite->data[4] = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), 1) + gBattleAnimArgs[3]; - sprite->data[5] = -32; + sprite->sDuration = 30; + sprite->sTargetX = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), BATTLER_COORD_X) + gBattleAnimArgs[2]; + sprite->sTargetY = GetBattlerSpriteCoord(GetBattlerAtPosition(B_POSITION_OPPONENT_LEFT), BATTLER_COORD_Y) + gBattleAnimArgs[3]; + sprite->sAmplitude = -32; InitAnimArcTranslation(sprite); gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].callback = sub_8039E84; - sprite->callback = sub_817339C; + sprite->callback = SpriteCB_PokeBlock_LiftArm; } -static void sub_817339C(struct Sprite *sprite) +#undef sDuration +#undef sTargetX +#undef sTargetY +#undef sAmplitude + +static void SpriteCB_PokeBlock_LiftArm(struct Sprite *sprite) { if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animCmdIndex == 1) - sprite->callback = sub_81733D4; + sprite->callback = SpriteCB_PokeBlock_Arc; } -static void sub_81733D4(struct Sprite *sprite) +static void SpriteCB_PokeBlock_Arc(struct Sprite *sprite) { if (TranslateAnimHorizontalArc(sprite)) { sprite->data[0] = 0; sprite->invisible = TRUE; - sprite->callback = sub_8173400; + sprite->callback = SpriteCB_ThrowPokeBlock_Free; } } -static void sub_8173400(struct Sprite *sprite) +// Destroy after end of player animation +static void SpriteCB_ThrowPokeBlock_Free(struct Sprite *sprite) { if (gSprites[gBattlerSpriteIds[gBattleAnimAttacker]].animEnded) { diff --git a/src/battle_anim_utility_funcs.c b/src/battle_anim_utility_funcs.c index ab2f42264..9790cf9ea 100644 --- a/src/battle_anim_utility_funcs.c +++ b/src/battle_anim_utility_funcs.c @@ -535,9 +535,9 @@ static void sub_81170EC(u8 taskId) gTasks[taskId].func = sub_81172EC; if (sAnimStatsChangeData->data[0] == 0) - PlaySE12WithPanning(SE_W287, BattleAnimAdjustPanning2(-64)); + PlaySE12WithPanning(SE_M_STAT_INCREASE, BattleAnimAdjustPanning2(-64)); else - PlaySE12WithPanning(SE_W287B, BattleAnimAdjustPanning2(-64)); + PlaySE12WithPanning(SE_M_STAT_DECREASE, BattleAnimAdjustPanning2(-64)); } static void sub_81172EC(u8 taskId) diff --git a/src/battle_arena.c b/src/battle_arena.c index 42a967fc6..0ffba4910 100644 --- a/src/battle_arena.c +++ b/src/battle_arena.c @@ -563,7 +563,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state) } break; case 4: - PlaySE(SE_HANTEI1); + PlaySE(SE_ARENA_TIMEUP1); ShowJudgmentSprite(80, 40, ARENA_CATEGORY_MIND, B_POSITION_PLAYER_LEFT); ShowJudgmentSprite(160, 40, ARENA_CATEGORY_MIND, B_POSITION_OPPONENT_LEFT); BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement); @@ -572,7 +572,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state) ret = 1; break; case 5: - PlaySE(SE_HANTEI1); + PlaySE(SE_ARENA_TIMEUP1); ShowJudgmentSprite(80, 56, ARENA_CATEGORY_SKILL, B_POSITION_PLAYER_LEFT); ShowJudgmentSprite(160, 56, ARENA_CATEGORY_SKILL, B_POSITION_OPPONENT_LEFT); BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement); @@ -581,7 +581,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state) ret = 1; break; case 6: - PlaySE(SE_HANTEI1); + PlaySE(SE_ARENA_TIMEUP1); ShowJudgmentSprite(80, 72, ARENA_CATEGORY_BODY, B_POSITION_PLAYER_LEFT); ShowJudgmentSprite(160, 72, ARENA_CATEGORY_BODY, B_POSITION_OPPONENT_LEFT); BattleStringExpandPlaceholdersToDisplayedString(gText_Judgement); @@ -590,7 +590,7 @@ u8 BattleArena_ShowJudgmentWindow(u8 *state) ret = 1; break; case 7: - PlaySE(SE_HANTEI2); + PlaySE(SE_ARENA_TIMEUP2); if (gBattleTextBuff1[0] > gBattleTextBuff2[0]) { ret = 2; diff --git a/src/battle_bg.c b/src/battle_bg.c index 00c504bfd..7c9b05b25 100644 --- a/src/battle_bg.c +++ b/src/battle_bg.c @@ -1105,7 +1105,7 @@ void InitLinkBattleVsScreen(u8 taskId) if (gTasks[taskId].data[5] != 0) DrawLinkBattleVsScreenOutcomeText(); - PlaySE(SE_W231); + PlaySE(SE_M_HARDEN); DestroyTask(taskId); gSprites[gBattleStruct->linkBattleVsSpriteId_V].invisible = FALSE; gSprites[gBattleStruct->linkBattleVsSpriteId_S].invisible = FALSE; diff --git a/src/battle_controller_link_opponent.c b/src/battle_controller_link_opponent.c index ce22c605f..3461e9754 100644 --- a/src/battle_controller_link_opponent.c +++ b/src/battle_controller_link_opponent.c @@ -281,14 +281,14 @@ static void sub_8064734(void) && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) { - sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); } if (!(gBattleTypeFlags & BATTLE_TYPE_MULTI) && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[BATTLE_PARTNER(gActiveBattler)].field_1_x1) { - sub_8172EF0(BATTLE_PARTNER(gActiveBattler), &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]]); + TryShinyAnimation(BATTLE_PARTNER(gActiveBattler), &gEnemyParty[gBattlerPartyIndexes[BATTLE_PARTNER(gActiveBattler)]]); } @@ -369,7 +369,7 @@ static void sub_8064B04(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) { - sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); } else { @@ -497,7 +497,7 @@ static void sub_8064F40(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) { - sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); } if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy @@ -1357,7 +1357,7 @@ static void LinkOpponentHandleFaintAnimation(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; - PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_TARGET); + PlaySE12WithPanning(SE_FAINT, SOUND_PAN_TARGET); gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon; gBattlerControllerFuncs[gActiveBattler] = sub_8064C14; } diff --git a/src/battle_controller_link_partner.c b/src/battle_controller_link_partner.c index ece4c24bc..63aa6eaea 100644 --- a/src/battle_controller_link_partner.c +++ b/src/battle_controller_link_partner.c @@ -383,7 +383,7 @@ static void sub_814B69C(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) { - sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); } if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy @@ -1179,7 +1179,7 @@ static void LinkPartnerHandleFaintAnimation(void) { gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); - PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_ATTACKER); + PlaySE12WithPanning(SE_FAINT, SOUND_PAN_ATTACKER); gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5; gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039C00; diff --git a/src/battle_controller_opponent.c b/src/battle_controller_opponent.c index daf2c260e..858201b4b 100644 --- a/src/battle_controller_opponent.c +++ b/src/battle_controller_opponent.c @@ -290,9 +290,9 @@ static void sub_805F560(void) bool32 r10 = FALSE; if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) - sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); if (!(gBattleTypeFlags & BATTLE_TYPE_TWO_OPPONENTS) && !(gBattleTypeFlags & BATTLE_TYPE_MULTI) && IsDoubleBattle() && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].field_1_x1) - sub_8172EF0(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x80) @@ -369,7 +369,7 @@ static void sub_805F560(void) static void sub_805F994(void) { if (gSprites[gBattlerSpriteIds[gActiveBattler]].pos2.x == 0 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) - sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); if (gSprites[gBattlerSpriteIds[gActiveBattler]].callback == SpriteCallbackDummy && gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].field_1_x1) { @@ -481,7 +481,7 @@ static void sub_805FD00(void) static void sub_805FDF0(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) - sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) @@ -1394,7 +1394,7 @@ static void OpponentHandleFaintAnimation(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; - PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_TARGET); + PlaySE12WithPanning(SE_FAINT, SOUND_PAN_TARGET); gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon; gBattlerControllerFuncs[gActiveBattler] = sub_805FAC4; } diff --git a/src/battle_controller_player.c b/src/battle_controller_player.c index 08ce9f09c..c9a3bc2e0 100644 --- a/src/battle_controller_player.c +++ b/src/battle_controller_player.c @@ -853,7 +853,7 @@ static void sub_80586F8(void) { if (gReceivedRemoteLinkPlayers == 0) { - m4aSongNumStop(SE_HINSI); + m4aSongNumStop(SE_LOW_HEALTH); gMain.inBattle = 0; gMain.callback1 = gPreBattleCallback1; SetMainCallback2(sub_8038D64); @@ -866,7 +866,7 @@ static void sub_80586F8(void) { if (IsLinkTaskFinished()) { - m4aSongNumStop(SE_HINSI); + m4aSongNumStop(SE_LOW_HEALTH); gMain.inBattle = 0; gMain.callback1 = gPreBattleCallback1; SetMainCallback2(sub_8038D64); @@ -895,7 +895,7 @@ void sub_80587B0(void) } else { - m4aSongNumStop(SE_HINSI); + m4aSongNumStop(SE_LOW_HEALTH); gMain.inBattle = 0; gMain.callback1 = gPreBattleCallback1; SetMainCallback2(gMain.savedCallback); @@ -977,9 +977,9 @@ static void sub_8058B40(void) bool32 r8 = FALSE; if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) - sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) - sub_8172EF0(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) { @@ -1082,7 +1082,7 @@ static void sub_805902C(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) { - sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); } if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy @@ -2392,7 +2392,7 @@ static void PlayerHandleFaintAnimation(void) { gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); - PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_ATTACKER); + PlaySE12WithPanning(SE_FAINT, SOUND_PAN_ATTACKER); gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5; gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039C00; diff --git a/src/battle_controller_player_partner.c b/src/battle_controller_player_partner.c index 21c1fdd5b..7796bef09 100644 --- a/src/battle_controller_player_partner.c +++ b/src/battle_controller_player_partner.c @@ -568,7 +568,7 @@ static void sub_81BBAE8(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) { - sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); } if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy @@ -1371,7 +1371,7 @@ static void PlayerPartnerHandleFaintAnimation(void) { gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); - PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_ATTACKER); + PlaySE12WithPanning(SE_FAINT, SOUND_PAN_ATTACKER); gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5; gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039C00; diff --git a/src/battle_controller_recorded_opponent.c b/src/battle_controller_recorded_opponent.c index 35383611b..76e84da41 100644 --- a/src/battle_controller_recorded_opponent.c +++ b/src/battle_controller_recorded_opponent.c @@ -263,9 +263,9 @@ static void sub_818686C(void) bool32 r8 = FALSE; if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) - sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) - sub_8172EF0(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) { @@ -350,7 +350,7 @@ static void sub_8186C48(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) { - sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); } else { @@ -479,7 +479,7 @@ static void sub_8187084(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80) { - sub_8172EF0(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gEnemyParty[gBattlerPartyIndexes[gActiveBattler]]); } if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy @@ -1284,7 +1284,7 @@ static void RecordedOpponentHandleFaintAnimation(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].specialAnimActive) { gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; - PlaySE12WithPanning(SE_POKE_DEAD, SOUND_PAN_TARGET); + PlaySE12WithPanning(SE_FAINT, SOUND_PAN_TARGET); gSprites[gBattlerSpriteIds[gActiveBattler]].callback = SpriteCB_FaintOpponentMon; gBattlerControllerFuncs[gActiveBattler] = sub_8186D58; } diff --git a/src/battle_controller_recorded_player.c b/src/battle_controller_recorded_player.c index 5f3b3ea65..387586f88 100644 --- a/src/battle_controller_recorded_player.c +++ b/src/battle_controller_recorded_player.c @@ -280,12 +280,12 @@ static void sub_8189D40(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) { - sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); } if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) { - sub_8172EF0(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); } } @@ -463,7 +463,7 @@ static void sub_818A470(void) if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) { - sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); } if (gSprites[gUnknown_03005D7C[gActiveBattler]].callback == SpriteCallbackDummy @@ -1286,7 +1286,7 @@ static void RecordedPlayerHandleFaintAnimation(void) { gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].animationState = 0; HandleLowHpMusicChange(&gPlayerParty[gBattlerPartyIndexes[gActiveBattler]], gActiveBattler); - PlaySE12WithPanning(SE_POKE_DEAD, -64); + PlaySE12WithPanning(SE_FAINT, -64); gSprites[gBattlerSpriteIds[gActiveBattler]].data[1] = 0; gSprites[gBattlerSpriteIds[gActiveBattler]].data[2] = 5; gSprites[gBattlerSpriteIds[gActiveBattler]].callback = sub_8039C00; diff --git a/src/battle_controller_wally.c b/src/battle_controller_wally.c index a5b1ae2f7..a26694a8e 100644 --- a/src/battle_controller_wally.c +++ b/src/battle_controller_wally.c @@ -286,9 +286,9 @@ static void CompleteOnChosenItem(void) static void sub_816864C(void) { if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive) - sub_8172EF0(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); + TryShinyAnimation(gActiveBattler, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].flag_x80 && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive) - sub_8172EF0(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); + TryShinyAnimation(gActiveBattler ^ BIT_FLANK, &gPlayerParty[gBattlerPartyIndexes[gActiveBattler ^ BIT_FLANK]]); if (!gBattleSpritesDataPtr->healthBoxesData[gActiveBattler].ballAnimActive && !gBattleSpritesDataPtr->healthBoxesData[gActiveBattler ^ BIT_FLANK].ballAnimActive diff --git a/src/battle_gfx_sfx_util.c b/src/battle_gfx_sfx_util.c index 50a5f8ad5..b1bb61aaf 100644 --- a/src/battle_gfx_sfx_util.c +++ b/src/battle_gfx_sfx_util.c @@ -1014,15 +1014,12 @@ void BattleLoadSubstituteOrMonSpriteGfx(u8 battlerId, bool8 loadMonSprite) palOffset = (battlerId * 16) + 0x100; LoadCompressedPalette(gSubstituteDollPal, palOffset, 32); } - else + else if (!IsContest()) { - if (!IsContest()) - { - if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) - BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId); - else - BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerId]], battlerId); - } + if (GetBattlerSide(battlerId) != B_SIDE_PLAYER) + BattleLoadOpponentMonSpriteGfx(&gEnemyParty[gBattlerPartyIndexes[battlerId]], battlerId); + else + BattleLoadPlayerMonSpriteGfx(&gPlayerParty[gBattlerPartyIndexes[battlerId]], battlerId); } } @@ -1058,7 +1055,7 @@ void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId) if (!gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong) { if (!gBattleSpritesDataPtr->battlerData[battlerId ^ BIT_FLANK].lowHpSong) - PlaySE(SE_HINSI); + PlaySE(SE_LOW_HEALTH); gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong = 1; } } @@ -1067,12 +1064,12 @@ void HandleLowHpMusicChange(struct Pokemon *mon, u8 battlerId) gBattleSpritesDataPtr->battlerData[battlerId].lowHpSong = 0; if (!IsDoubleBattle()) { - m4aSongNumStop(SE_HINSI); + m4aSongNumStop(SE_LOW_HEALTH); return; } if (IsDoubleBattle() && !gBattleSpritesDataPtr->battlerData[battlerId ^ BIT_FLANK].lowHpSong) { - m4aSongNumStop(SE_HINSI); + m4aSongNumStop(SE_LOW_HEALTH); return; } } @@ -1086,7 +1083,7 @@ void BattleStopLowHpSound(void) if (IsDoubleBattle()) gBattleSpritesDataPtr->battlerData[playerBattler ^ BIT_FLANK].lowHpSong = 0; - m4aSongNumStop(SE_HINSI); + m4aSongNumStop(SE_LOW_HEALTH); } u8 GetMonHPBarLevel(struct Pokemon *mon) diff --git a/src/battle_interface.c b/src/battle_interface.c index 12273addb..719af6a06 100644 --- a/src/battle_interface.c +++ b/src/battle_interface.c @@ -1649,7 +1649,7 @@ u8 CreatePartyStatusSummarySprites(u8 battlerId, struct HpAndStatus *partyInfo, gBattleSpritesDataPtr->animationData->field_9_x1C++; } - PlaySE12WithPanning(SE_TB_START, 0); + PlaySE12WithPanning(SE_BALL_TRAY_ENTER, 0); return taskId; } @@ -1852,9 +1852,9 @@ static void SpriteCB_StatusSummaryBallsOnBattleStart(struct Sprite *sprite) pan = SOUND_PAN_ATTACKER; if (sprite->data[7] != 0) - PlaySE2WithPanning(SE_TB_KARA, pan); + PlaySE2WithPanning(SE_BALL_TRAY_EXIT, pan); else - PlaySE1WithPanning(SE_TB_KON, pan); + PlaySE1WithPanning(SE_BALL_TRAY_BALL, pan); sprite->callback = SpriteCallbackDummy; } diff --git a/src/battle_main.c b/src/battle_main.c index 0ea19dfaa..935a53ffe 100644 --- a/src/battle_main.c +++ b/src/battle_main.c @@ -1869,7 +1869,7 @@ static void FreeRestoreBattleData(void) gScanlineEffect.state = 3; gMain.inBattle = 0; ZeroEnemyPartyMons(); - m4aSongNumStop(SE_HINSI); + m4aSongNumStop(SE_LOW_HEALTH); FreeMonSpritesGfx(); FreeBattleSpritesData(); FreeBattleResources(); @@ -2114,7 +2114,7 @@ void sub_8038B74(struct Sprite *sprite) { StartSpriteAffineAnim(sprite, 1); sprite->callback = sub_8038B04; - PlaySE(SE_BT_START); + PlaySE(SE_MUGSHOT); } static void sub_8038B94(u8 taskId) @@ -4851,40 +4851,38 @@ static void SetActionsAndBattlersTurnOrder(void) gBattleStruct->focusPunchBattlerId = 0; return; } - else + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) { - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) + if (gChosenActionByBattler[gActiveBattler] == B_ACTION_USE_ITEM || gChosenActionByBattler[gActiveBattler] == B_ACTION_SWITCH) { - if (gChosenActionByBattler[gActiveBattler] == B_ACTION_USE_ITEM || gChosenActionByBattler[gActiveBattler] == B_ACTION_SWITCH) - { - gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler]; - gBattlerByTurnOrder[turnOrderId] = gActiveBattler; - turnOrderId++; - } + gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler]; + gBattlerByTurnOrder[turnOrderId] = gActiveBattler; + turnOrderId++; } - for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) + } + for (gActiveBattler = 0; gActiveBattler < gBattlersCount; gActiveBattler++) + { + if (gChosenActionByBattler[gActiveBattler] != B_ACTION_USE_ITEM && gChosenActionByBattler[gActiveBattler] != B_ACTION_SWITCH) { - if (gChosenActionByBattler[gActiveBattler] != B_ACTION_USE_ITEM && gChosenActionByBattler[gActiveBattler] != B_ACTION_SWITCH) - { - gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler]; - gBattlerByTurnOrder[turnOrderId] = gActiveBattler; - turnOrderId++; - } + gActionsByTurnOrder[turnOrderId] = gChosenActionByBattler[gActiveBattler]; + gBattlerByTurnOrder[turnOrderId] = gActiveBattler; + turnOrderId++; } - for (i = 0; i < gBattlersCount - 1; i++) + } + for (i = 0; i < gBattlersCount - 1; i++) + { + for (j = i + 1; j < gBattlersCount; j++) { - for (j = i + 1; j < gBattlersCount; j++) + u8 battler1 = gBattlerByTurnOrder[i]; + u8 battler2 = gBattlerByTurnOrder[j]; + + if (gActionsByTurnOrder[i] != B_ACTION_USE_ITEM + && gActionsByTurnOrder[j] != B_ACTION_USE_ITEM + && gActionsByTurnOrder[i] != B_ACTION_SWITCH + && gActionsByTurnOrder[j] != B_ACTION_SWITCH) { - u8 battler1 = gBattlerByTurnOrder[i]; - u8 battler2 = gBattlerByTurnOrder[j]; - if (gActionsByTurnOrder[i] != B_ACTION_USE_ITEM - && gActionsByTurnOrder[j] != B_ACTION_USE_ITEM - && gActionsByTurnOrder[i] != B_ACTION_SWITCH - && gActionsByTurnOrder[j] != B_ACTION_SWITCH) - { - if (GetWhoStrikesFirst(battler1, battler2, FALSE)) - SwapTurnOrder(i, j); - } + if (GetWhoStrikesFirst(battler1, battler2, FALSE)) + SwapTurnOrder(i, j); } } } @@ -4962,12 +4960,8 @@ static void CheckFocusPunch_ClearVarsBeforeTurnStarts(void) } TryClearRageStatuses(); - gCurrentTurnActionNumber = 0; -{ - // something stupid needed to match - u8 zero; - gCurrentActionFuncId = gActionsByTurnOrder[(zero = 0)]; -} + gCurrentTurnActionNumber = 0; //See comment underneath + gCurrentActionFuncId = gActionsByTurnOrder[gCurrentTurnActionNumber]; //Should be gActionsByTurnOrder[(gCurrentTurnActionNumber = 0)], but that doesn't match gDynamicBasePower = 0; gBattleStruct->dynamicMoveType = 0; gBattleMainFunc = RunTurnActionsFunctions; @@ -4990,13 +4984,10 @@ static void RunTurnActionsFunctions(void) gHitMarker &= ~(HITMARKER_x100000); gBattleMainFunc = sEndTurnFuncsTable[gBattleOutcome & 0x7F]; } - else + else if (gBattleStruct->savedTurnActionNumber != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another battlerId { - if (gBattleStruct->savedTurnActionNumber != gCurrentTurnActionNumber) // action turn has been done, clear hitmarker bits for another battlerId - { - gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING); - gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE); - } + gHitMarker &= ~(HITMARKER_NO_ATTACKSTRING); + gHitMarker &= ~(HITMARKER_UNABLE_TO_USE_MOVE); } } @@ -5019,9 +5010,9 @@ static void HandleEndTurn_BattleWon(void) gBattlescriptCurrInstr = BattleScript_FrontierTrainerBattleWon; if (gTrainerBattleOpponent_A == TRAINER_FRONTIER_BRAIN) - PlayBGM(MUS_KACHI3); + PlayBGM(MUS_VICTORY_GYM_LEADER); else - PlayBGM(MUS_KACHI1); + PlayBGM(MUS_VICTORY_TRAINER); } else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER && !(gBattleTypeFlags & BATTLE_TYPE_LINK)) { @@ -5032,7 +5023,7 @@ static void HandleEndTurn_BattleWon(void) { case TRAINER_CLASS_ELITE_FOUR: case TRAINER_CLASS_CHAMPION: - PlayBGM(MUS_KACHI5); + PlayBGM(MUS_VICTORY_LEAGUE); break; case TRAINER_CLASS_TEAM_AQUA: case TRAINER_CLASS_TEAM_MAGMA: @@ -5040,13 +5031,13 @@ static void HandleEndTurn_BattleWon(void) case TRAINER_CLASS_AQUA_LEADER: case TRAINER_CLASS_MAGMA_ADMIN: case TRAINER_CLASS_MAGMA_LEADER: - PlayBGM(MUS_KACHI4); + PlayBGM(MUS_VICTORY_AQUA_MAGMA); break; case TRAINER_CLASS_LEADER: - PlayBGM(MUS_KACHI3); + PlayBGM(MUS_VICTORY_GYM_LEADER); break; default: - PlayBGM(MUS_KACHI1); + PlayBGM(MUS_VICTORY_TRAINER); break; } } @@ -5279,7 +5270,7 @@ static void ReturnFromBattleToOverworld(void) SetRoamerInactive(); } - m4aSongNumStop(SE_HINSI); + m4aSongNumStop(SE_LOW_HEALTH); SetMainCallback2(gMain.savedCallback); } @@ -5826,7 +5817,7 @@ static void HandleAction_GoNear(void) static void HandleAction_SafariZoneRun(void) { gBattlerAttacker = gBattlerByTurnOrder[gCurrentTurnActionNumber]; - PlaySE(SE_NIGERU); + PlaySE(SE_FLEE); gCurrentTurnActionNumber = gBattlersCount; gBattleOutcome = B_OUTCOME_RAN; } diff --git a/src/battle_message.c b/src/battle_message.c index 4e87c9344..c004665d7 100644 --- a/src/battle_message.c +++ b/src/battle_message.c @@ -315,23 +315,23 @@ static const u8 sText_StatsWontIncrease2[] = _("{B_ATK_NAME_WITH_PREFIX}'s stats static const u8 sText_StatsWontDecrease2[] = _("{B_DEF_NAME_WITH_PREFIX}'s stats won't\ngo any lower!"); static const u8 sText_CriticalHit[] = _("A critical hit!"); static const u8 sText_OneHitKO[] = _("It's a one-hit KO!"); -static const u8 sText_123Poof[] = _("{PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE SE_KON}Poof!\p"); +static const u8 sText_123Poof[] = _("{PAUSE 32}1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE SE_BALL_BOUNCE_1}Poof!\p"); static const u8 sText_AndEllipsis[] = _("And…\p"); static const u8 sText_HMMovesCantBeForgotten[] = _("HM moves can't be\nforgotten now.\p"); static const u8 sText_NotVeryEffective[] = _("It's not very effective…"); static const u8 sText_SuperEffective[] = _("It's super effective!"); -static const u8 sText_GotAwaySafely[] = _("{PLAY_SE SE_NIGERU}Got away safely!\p"); -static const u8 sText_PkmnFledUsingIts[] = _("{PLAY_SE SE_NIGERU}{B_ATK_NAME_WITH_PREFIX} fled\nusing its {B_LAST_ITEM}!\p"); -static const u8 sText_PkmnFledUsing[] = _("{PLAY_SE SE_NIGERU}{B_ATK_NAME_WITH_PREFIX} fled\nusing {B_ATK_ABILITY}!\p"); -static const u8 sText_WildPkmnFled[] = _("{PLAY_SE SE_NIGERU}Wild {B_BUFF1} fled!"); +static const u8 sText_GotAwaySafely[] = _("{PLAY_SE SE_FLEE}Got away safely!\p"); +static const u8 sText_PkmnFledUsingIts[] = _("{PLAY_SE SE_FLEE}{B_ATK_NAME_WITH_PREFIX} fled\nusing its {B_LAST_ITEM}!\p"); +static const u8 sText_PkmnFledUsing[] = _("{PLAY_SE SE_FLEE}{B_ATK_NAME_WITH_PREFIX} fled\nusing {B_ATK_ABILITY}!\p"); +static const u8 sText_WildPkmnFled[] = _("{PLAY_SE SE_FLEE}Wild {B_BUFF1} fled!"); static const u8 sText_PlayerDefeatedLinkTrainer[] = _("Player defeated\n{B_LINK_OPPONENT1_NAME}!"); static const u8 sText_TwoLinkTrainersDefeated[] = _("Player beat {B_LINK_OPPONENT1_NAME}\nand {B_LINK_OPPONENT2_NAME}!"); static const u8 sText_PlayerLostAgainstLinkTrainer[] = _("Player lost against\n{B_LINK_OPPONENT1_NAME}!"); static const u8 sText_PlayerLostToTwo[] = _("Player lost to {B_LINK_OPPONENT1_NAME}\nand {B_LINK_OPPONENT2_NAME}!"); static const u8 sText_PlayerBattledToDrawLinkTrainer[] = _("Player battled to a draw against\n{B_LINK_OPPONENT1_NAME}!"); static const u8 sText_PlayerBattledToDrawVsTwo[] = _("Player battled to a draw against\n{B_LINK_OPPONENT1_NAME} and {B_LINK_OPPONENT2_NAME}!"); -static const u8 sText_WildFled[] = _("{PLAY_SE SE_NIGERU}{B_LINK_OPPONENT1_NAME} fled!"); -static const u8 sText_TwoWildFled[] = _("{PLAY_SE SE_NIGERU}{B_LINK_OPPONENT1_NAME} and\n{B_LINK_OPPONENT2_NAME} fled!"); +static const u8 sText_WildFled[] = _("{PLAY_SE SE_FLEE}{B_LINK_OPPONENT1_NAME} fled!"); +static const u8 sText_TwoWildFled[] = _("{PLAY_SE SE_FLEE}{B_LINK_OPPONENT1_NAME} and\n{B_LINK_OPPONENT2_NAME} fled!"); static const u8 sText_NoRunningFromTrainers[] = _("No! There's no running\nfrom a TRAINER battle!\p"); static const u8 sText_CantEscape[] = _("Can't escape!\p"); static const u8 sText_DontLeaveBirch[] = _("PROF. BIRCH: Don't leave me like this!\p"); @@ -381,7 +381,7 @@ static const u8 sText_PkmnCuriousAboutX[] = _("{B_OPPONENT_MON1_NAME} is curious static const u8 sText_PkmnEnthralledByX[] = _("{B_OPPONENT_MON1_NAME} is enthralled by\nthe {B_BUFF1}!"); static const u8 sText_PkmnIgnoredX[] = _("{B_OPPONENT_MON1_NAME} completely ignored\nthe {B_BUFF1}!"); static const u8 sText_ThrewPokeblockAtPkmn[] = _("{B_PLAYER_NAME} threw a {POKEBLOCK}\nat the {B_OPPONENT_MON1_NAME}!"); -static const u8 sText_OutOfSafariBalls[] = _("{PLAY_SE SE_PINPON}ANNOUNCER: You're out of\nSAFARI BALLS! Game over!\p"); +static const u8 sText_OutOfSafariBalls[] = _("{PLAY_SE SE_DING_DONG}ANNOUNCER: You're out of\nSAFARI BALLS! Game over!\p"); static const u8 sText_OpponentMon1Appeared[] = _("{B_OPPONENT_MON1_NAME} appeared!\p"); static const u8 sText_WildPkmnAppeared[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); static const u8 sText_WildPkmnAppeared2[] = _("Wild {B_OPPONENT_MON1_NAME} appeared!\p"); @@ -474,8 +474,8 @@ static const u8 sText_PkmnBrokeFree[] = _("Oh, no!\nThe POKéMON broke free!"); static const u8 sText_ItAppearedCaught[] = _("Aww!\nIt appeared to be caught!"); static const u8 sText_AarghAlmostHadIt[] = _("Aargh!\nAlmost had it!"); static const u8 sText_ShootSoClose[] = _("Shoot!\nIt was so close, too!"); -static const u8 sText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_KACHI22}\p"); -static const u8 sText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_KACHI22}{PAUSE 127}"); +static const u8 sText_GotchaPkmnCaught[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}\p"); +static const u8 sText_GotchaPkmnCaught2[] = _("Gotcha!\n{B_OPPONENT_MON1_NAME} was caught!{WAIT_SE}{PLAY_BGM MUS_CAUGHT}{PAUSE 127}"); static const u8 sText_GiveNicknameCaptured[] = _("Give a nickname to the\ncaptured {B_OPPONENT_MON1_NAME}?"); static const u8 sText_PkmnSentToPC[] = _("{B_OPPONENT_MON1_NAME} was sent to\n{B_PC_CREATOR_NAME} PC."); static const u8 sText_Someones[] = _("someone's"); @@ -1346,7 +1346,7 @@ static const u8 sText_QuestionForfeitMatch[] = _("Would you like to forfeit the static const u8 sText_ForfeitedMatch[] = _("{B_PLAYER_NAME} forfeited the match!"); static const u8 sText_Trainer1WinText[] = _("{B_TRAINER1_WIN_TEXT}"); static const u8 sText_Trainer2WinText[] = _("{B_TRAINER2_WIN_TEXT}"); -static const u8 sText_Trainer1Fled[] = _( "{PLAY_SE SE_NIGERU}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!"); +static const u8 sText_Trainer1Fled[] = _( "{PLAY_SE SE_FLEE}{B_TRAINER1_CLASS} {B_TRAINER1_NAME} fled!"); static const u8 sText_PlayerLostAgainstTrainer1[] = _("Player lost against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); static const u8 sText_PlayerBattledToDrawTrainer1[] = _("Player battled to a draw against\n{B_TRAINER1_CLASS} {B_TRAINER1_NAME}!"); const u8 gText_RecordBattleToPass[] = _("Would you like to record your battle\non your FRONTIER PASS?"); diff --git a/src/battle_pyramid_bag.c b/src/battle_pyramid_bag.c index 33daed80c..e038e71e1 100644 --- a/src/battle_pyramid_bag.c +++ b/src/battle_pyramid_bag.c @@ -970,7 +970,7 @@ static void HandleMenuActionInput(u8 taskId) if (id > 0 && IsValidMenuAction(id - 2)) { PlaySE(SE_SELECT); - sub_8199134(0, -1); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_UP); } } else if (gMain.newKeys & DPAD_DOWN) @@ -978,7 +978,7 @@ static void HandleMenuActionInput(u8 taskId) if (id < gPyramidBagResources->menuActionsCount - 2 && IsValidMenuAction(id + 2)) { PlaySE(SE_SELECT); - sub_8199134(0, 1); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_DOWN); } } else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED) @@ -986,7 +986,7 @@ static void HandleMenuActionInput(u8 taskId) if (id & 1 && IsValidMenuAction(id - 1)) { PlaySE(SE_SELECT); - sub_8199134(-1, 0); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_LEFT, MENU_CURSOR_DELTA_NONE); } } else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED) @@ -994,7 +994,7 @@ static void HandleMenuActionInput(u8 taskId) if (!(id & 1) && IsValidMenuAction(id + 1)) { PlaySE(SE_SELECT); - sub_8199134(1, 0); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_RIGHT, MENU_CURSOR_DELTA_NONE); } } else if (gMain.newKeys & A_BUTTON) diff --git a/src/battle_script_commands.c b/src/battle_script_commands.c index 565e03106..9ff5e8fc6 100644 --- a/src/battle_script_commands.c +++ b/src/battle_script_commands.c @@ -1977,11 +1977,11 @@ static void Cmd_effectivenesssound(void) switch (gMoveResultFlags & (u8)(~(MOVE_RESULT_MISSED))) { case MOVE_RESULT_SUPER_EFFECTIVE: - BtlController_EmitPlaySE(0, SE_KOUKA_H); + BtlController_EmitPlaySE(0, SE_SUPER_EFFECTIVE); MarkBattlerForControllerExec(gActiveBattler); break; case MOVE_RESULT_NOT_VERY_EFFECTIVE: - BtlController_EmitPlaySE(0, SE_KOUKA_L); + BtlController_EmitPlaySE(0, SE_NOT_EFFECTIVE); MarkBattlerForControllerExec(gActiveBattler); break; case MOVE_RESULT_DOESNT_AFFECT_FOE: @@ -1994,17 +1994,17 @@ static void Cmd_effectivenesssound(void) default: if (gMoveResultFlags & MOVE_RESULT_SUPER_EFFECTIVE) { - BtlController_EmitPlaySE(0, SE_KOUKA_H); + BtlController_EmitPlaySE(0, SE_SUPER_EFFECTIVE); MarkBattlerForControllerExec(gActiveBattler); } else if (gMoveResultFlags & MOVE_RESULT_NOT_VERY_EFFECTIVE) { - BtlController_EmitPlaySE(0, SE_KOUKA_L); + BtlController_EmitPlaySE(0, SE_NOT_EFFECTIVE); MarkBattlerForControllerExec(gActiveBattler); } else if (!(gMoveResultFlags & (MOVE_RESULT_DOESNT_AFFECT_FOE | MOVE_RESULT_FAILED))) { - BtlController_EmitPlaySE(0, SE_KOUKA_M); + BtlController_EmitPlaySE(0, SE_EFFECTIVE); MarkBattlerForControllerExec(gActiveBattler); } break; @@ -3320,7 +3320,7 @@ static void Cmd_getexp(void) if (!(gBattleTypeFlags & BATTLE_TYPE_TRAINER) && gBattleMons[0].hp && !gBattleStruct->wildVictorySong) { BattleStopLowHpSound(); - PlayBGM(MUS_KACHI2); + PlayBGM(MUS_VICTORY_WILD); gBattleStruct->wildVictorySong++; } @@ -6428,7 +6428,7 @@ static void Cmd_various(void) gBattleOutcome = B_OUTCOME_MON_TELEPORTED; break; case VARIOUS_PLAY_TRAINER_DEFEATED_MUSIC: - BtlController_EmitPlayFanfareOrBGM(0, MUS_KACHI1, TRUE); + BtlController_EmitPlayFanfareOrBGM(0, MUS_VICTORY_TRAINER, TRUE); MarkBattlerForControllerExec(gActiveBattler); break; } @@ -9893,6 +9893,7 @@ static void Cmd_handleballthrow(void) else // not caught { gBattleCommunication[MULTISTRING_CHOOSER] = shakes; + // Maybe inject SpriteCB_TestBallThrow here gBattlescriptCurrInstr = BattleScript_ShakeBallThrow; } } diff --git a/src/battle_setup.c b/src/battle_setup.c index 0c0ef72d3..3c20d9ffe 100644 --- a/src/battle_setup.c +++ b/src/battle_setup.c @@ -518,22 +518,22 @@ void BattleSetup_StartLegendaryBattle(void) default: case SPECIES_GROUDON: gBattleTypeFlags |= BATTLE_TYPE_GROUDON; - CreateBattleStartTask(B_TRANSITION_GROUDON, MUS_BATTLE34); + CreateBattleStartTask(B_TRANSITION_GROUDON, MUS_VS_KYOGRE_GROUDON); break; case SPECIES_KYOGRE: gBattleTypeFlags |= BATTLE_TYPE_KYOGRE; - CreateBattleStartTask(B_TRANSITION_KYOGRE, MUS_BATTLE34); + CreateBattleStartTask(B_TRANSITION_KYOGRE, MUS_VS_KYOGRE_GROUDON); break; case SPECIES_RAYQUAZA: gBattleTypeFlags |= BATTLE_TYPE_RAYQUAZA; - CreateBattleStartTask(B_TRANSITION_RAYQUAZA, MUS_VS_REKKU); + CreateBattleStartTask(B_TRANSITION_RAYQUAZA, MUS_VS_RAYQUAZA); break; case SPECIES_DEOXYS: - CreateBattleStartTask(B_TRANSITION_BLUR, MUS_RG_VS_DEO); + CreateBattleStartTask(B_TRANSITION_BLUR, MUS_RG_VS_DEOXYS); break; case SPECIES_LUGIA: case SPECIES_HO_OH: - CreateBattleStartTask(B_TRANSITION_BLUR, MUS_RG_VS_DEN); + CreateBattleStartTask(B_TRANSITION_BLUR, MUS_RG_VS_LEGEND); break; case SPECIES_MEW: CreateBattleStartTask(B_TRANSITION_GRID_SQUARES, MUS_VS_MEW); @@ -553,9 +553,9 @@ void StartGroudonKyogreBattle(void) gBattleTypeFlags = BATTLE_TYPE_LEGENDARY | BATTLE_TYPE_KYOGRE_GROUDON; if (gGameVersion == VERSION_RUBY) - CreateBattleStartTask(B_TRANSITION_SHARDS, MUS_BATTLE34); // GROUDON + CreateBattleStartTask(B_TRANSITION_SHARDS, MUS_VS_KYOGRE_GROUDON); // GROUDON else - CreateBattleStartTask(B_TRANSITION_RIPPLE, MUS_BATTLE34); // KYOGRE + CreateBattleStartTask(B_TRANSITION_RIPPLE, MUS_VS_KYOGRE_GROUDON); // KYOGRE IncrementGameStat(GAME_STAT_TOTAL_BATTLES); IncrementGameStat(GAME_STAT_WILD_BATTLES); @@ -588,7 +588,7 @@ void StartRegiBattle(void) transitionId = B_TRANSITION_GRID_SQUARES; break; } - CreateBattleStartTask(transitionId, MUS_BATTLE36); + CreateBattleStartTask(transitionId, MUS_VS_REGI); IncrementGameStat(GAME_STAT_TOTAL_BATTLES); IncrementGameStat(GAME_STAT_WILD_BATTLES); @@ -1454,46 +1454,46 @@ void SetUpTrainerEncounterMusic(void) switch (GetTrainerEncounterMusicId(trainerId)) { case TRAINER_ENCOUNTER_MUSIC_MALE: - music = MUS_BOYEYE; + music = MUS_ENCOUNTER_MALE; break; case TRAINER_ENCOUNTER_MUSIC_FEMALE: - music = MUS_GIRLEYE; + music = MUS_ENCOUNTER_FEMALE; break; case TRAINER_ENCOUNTER_MUSIC_GIRL: - music = MUS_SYOUJOEYE; + music = MUS_ENCOUNTER_GIRL; break; case TRAINER_ENCOUNTER_MUSIC_INTENSE: - music = MUS_HAGESHII; + music = MUS_ENCOUNTER_INTENSE; break; case TRAINER_ENCOUNTER_MUSIC_COOL: - music = MUS_KAKKOII; + music = MUS_ENCOUNTER_COOL; break; case TRAINER_ENCOUNTER_MUSIC_AQUA: - music = MUS_AQA_0; + music = MUS_ENCOUNTER_AQUA; break; case TRAINER_ENCOUNTER_MUSIC_MAGMA: - music = MUS_MGM0; + music = MUS_ENCOUNTER_MAGMA; break; case TRAINER_ENCOUNTER_MUSIC_SWIMMER: - music = MUS_SWIMEYE; + music = MUS_ENCOUNTER_SWIMMER; break; case TRAINER_ENCOUNTER_MUSIC_TWINS: - music = MUS_HUTAGO; + music = MUS_ENCOUNTER_TWINS; break; case TRAINER_ENCOUNTER_MUSIC_ELITE_FOUR: - music = MUS_SITENNOU; + music = MUS_ENCOUNTER_ELITE_FOUR; break; case TRAINER_ENCOUNTER_MUSIC_HIKER: - music = MUS_YAMA_EYE; + music = MUS_ENCOUNTER_HIKER; break; case TRAINER_ENCOUNTER_MUSIC_INTERVIEWER: - music = MUS_INTER_V; + music = MUS_ENCOUNTER_INTERVIEWER; break; case TRAINER_ENCOUNTER_MUSIC_RICH: - music = MUS_TEST; + music = MUS_ENCOUNTER_RICH; break; default: - music = MUS_AYASII; + music = MUS_ENCOUNTER_SUSPICIOUS; } PlayNewMapMusic(music); } diff --git a/src/battle_transition.c b/src/battle_transition.c index b0cdbd93a..559279e74 100644 --- a/src/battle_transition.c +++ b/src/battle_transition.c @@ -2227,7 +2227,7 @@ static bool8 Phase2_Mugshot_Func4(struct Task *task) SetTrainerPicSlideTable(task->tPlayerSpriteId, 1); IncrementTrainerPicState(task->tOpponentSpriteId); - PlaySE(SE_BT_START); + PlaySE(SE_MUGSHOT); sTransitionStructPtr->VBlank_DMA++; return FALSE; diff --git a/src/berry_blender.c b/src/berry_blender.c index 8d6f3a8fd..2cdb841ee 100644 --- a/src/berry_blender.c +++ b/src/berry_blender.c @@ -1,5 +1,4 @@ #include "global.h" -#include "constants/game_stat.h" #include "overworld.h" #include "berry_blender.h" #include "bg.h" @@ -7,7 +6,6 @@ #include "task.h" #include "sprite.h" #include "sound.h" -#include "constants/songs.h" #include "m4a.h" #include "bg.h" #include "palette.h" @@ -19,10 +17,10 @@ #include "event_data.h" #include "main.h" #include "link.h" +#include "link_rfu.h" #include "item_menu_icons.h" #include "berry.h" #include "item.h" -#include "constants/items.h" #include "string_util.h" #include "international_string_util.h" #include "random.h" @@ -35,43 +33,97 @@ #include "graphics.h" #include "new_game.h" #include "save.h" -#include "link.h" +#include "strings.h" #include "constants/berry.h" +#include "constants/game_stat.h" +#include "constants/items.h" #include "constants/rgb.h" +#include "constants/songs.h" + +enum { + SCORE_BEST, + SCORE_GOOD, + SCORE_MISS, + NUM_SCORE_TYPES, +}; -#define BLENDER_SCORE_BEST 0 -#define BLENDER_SCORE_GOOD 1 -#define BLENDER_SCORE_MISS 2 +// Redundant with the above. Reversed +enum { + PROXIMITY_MISS, + PROXIMITY_GOOD, + PROXIMITY_BEST, +}; -#define BLENDER_MAX_PLAYERS 4 -#define BLENDER_SCORES_NO 3 +enum { + SCOREANIM_GOOD, + SCOREANIM_MISS, + SCOREANIM_BEST_FLASH, + SCOREANIM_BEST_STATIC, +}; -enum -{ - PLAY_AGAIN_OK, - DONT_PLAY_AGAIN, +enum { + PLAY_AGAIN_YES, + PLAY_AGAIN_NO, CANT_PLAY_NO_BERRIES, CANT_PLAY_NO_PKBLCK_SPACE }; +enum { + BLENDER_MISTER, + BLENDER_LADDIE, + BLENDER_LASSIE, + BLENDER_MASTER, + BLENDER_DUDE, + BLENDER_MISS +}; + +#define BLENDER_MAX_PLAYERS MAX_LINK_PLAYERS + +#define NO_PLAYER 0xFF + +#define MAX_PROGRESS_BAR 1000 + +#define MAX_ARROW_POS 0x10000 // By virtue of being u16 +#define MIN_ARROW_SPEED 0x80 +#define ARROW_FALL_ROTATION 0x5800 // The amount the arrow spins as it falls in at the start + +// Tile offsets +#define PROGRESS_BAR_FILLED_TOP 0x80E9 +#define PROGRESS_BAR_FILLED_BOTTOM 0x80F9 +#define PROGRESS_BAR_EMPTY_TOP 0x80E1 +#define PROGRESS_BAR_EMPTY_BOTTOM 0x80F1 +#define RPM_DIGIT 0x8072 + +// Tile and palette tags +#define GFXTAG_COUNTDOWN_NUMBERS 12345 +#define GFXTAG_START 12346 +#define GFXTAG_PARTICLES 23456 +#define GFXTAG_PLAYER_ARROW 46545 +#define GFXTAG_SCORE_SYMBOLS 48888 + +#define PALTAG_PLAYER_ARROW 12312 +#define PALTAG_MISC 46546 + +// Last berry that an NPC can put in +#define NUM_NPC_BERRIES ITEM_TO_BERRY(ITEM_ASPEAR_BERRY) + struct BlenderBerry { u16 itemId; u8 name[BERRY_NAME_LENGTH + 1]; - u8 flavors[FLAVOR_COUNT]; - u8 smoothness; + u8 flavors[FLAVOR_COUNT + 1]; // 5 flavors, + 1 for feel }; struct TimeAndRPM { u32 time; - u16 max_RPM; + u16 maxRPM; }; struct BlenderGameBlock { struct TimeAndRPM timeRPM; - u16 scores[BLENDER_MAX_PLAYERS][BLENDER_SCORES_NO]; + u16 scores[BLENDER_MAX_PLAYERS][NUM_SCORE_TYPES]; }; struct TvBlenderStruct @@ -82,138 +134,122 @@ struct TvBlenderStruct u8 pokeblockSheen; }; -struct BerryBlenderData +struct BerryBlender { u8 mainState; u8 loadGfxState; - u8 unused_02[0x42]; - u16 field_44; - u8 scoreIconIds[BLENDER_SCORES_NO]; + u8 unused0[66]; + u16 unk0; // never read + u8 scoreIconIds[NUM_SCORE_TYPES]; u16 arrowPos; - s16 field_4C; - u16 max_RPM; - u8 syncArrowSpriteIds[BLENDER_MAX_PLAYERS]; - u8 syncArrowSprite2Ids[BLENDER_MAX_PLAYERS]; - u8 unused_57[0xB]; + s16 speed; + u16 maxRPM; + u8 playerArrowSpriteIds[BLENDER_MAX_PLAYERS]; + u8 playerArrowSpriteIds2[BLENDER_MAX_PLAYERS]; + u8 unused1[11]; u8 gameEndState; - u16 field_64[BLENDER_MAX_PLAYERS]; - u16 field_6C; - u16 field_6E; + u16 playerContinueResponses[BLENDER_MAX_PLAYERS]; + u16 canceledPlayerCmd; + u16 canceledPlayerId; u16 playAgainState; - u8 field_72; + u8 slowdownTimer; u16 chosenItemId[BLENDER_MAX_PLAYERS]; - u8 playersNo; - u8 unused_7D[0x10]; - u16 field_8E[BLENDER_MAX_PLAYERS]; - u16 field_96[BLENDER_MAX_PLAYERS]; + u8 numPlayers; + u8 unused2[16]; + u16 arrowIdToPlayerId[BLENDER_MAX_PLAYERS]; + u16 playerIdToArrowId[BLENDER_MAX_PLAYERS]; u8 yesNoAnswer; u8 stringVar[100]; u32 gameFrameTime; s32 framesToWait; - u32 field_10C; - u8 unused_110[4]; - u8 field_114; - u16 field_116; - u16 field_118; - u16 field_11A; + u32 unk1; // never read + u8 unused3[4]; + u8 playerToThrowBerry; + u16 progressBarValue; + u16 maxProgressBarValue; + u16 centerScale; s16 bg_X; s16 bg_Y; - u8 field_120[3]; - u8 field_123; - u16 scores[BLENDER_MAX_PLAYERS][BLENDER_SCORES_NO]; + u8 opponentTaskIds[BLENDER_MAX_PLAYERS - 1]; + u8 perfectOpponents; // for debugging, NPCs will always hit Best + u16 scores[BLENDER_MAX_PLAYERS][NUM_SCORE_TYPES]; u8 playerPlaces[BLENDER_MAX_PLAYERS]; struct BgAffineSrcData bgAffineSrc; - u16 field_154; + u16 savedMusic; struct BlenderBerry blendedBerries[BLENDER_MAX_PLAYERS]; struct TimeAndRPM smallBlock; - u32 field_1A0; - u8 field_1A4; + u32 linkPlayAgainState; + u8 ownRanking; struct TvBlenderStruct tvBlender; - u8 tilemapBuffers[2][0x800]; + u8 tilemapBuffers[2][BG_SCREEN_SIZE]; s16 textState; void *tilesBuffer; struct BlenderGameBlock gameBlock; }; -extern struct MusicPlayerInfo gMPlayInfo_SE2; -extern struct MusicPlayerInfo gMPlayInfo_BGM; - -// text -extern const u8 gText_SavingDontTurnOff2[]; -extern const u8 gText_Space[]; -extern const u8 gText_BlenderMaxSpeedRecord[]; -extern const u8 gText_234Players[]; - -// this file's functions -static void BerryBlender_SetBackgroundsPos(void); -static void sub_8080EA4(u8 taskId); -static void sub_8080FD0(u8 taskId); -static void sub_80810F8(u8 taskId); -static void sub_8081224(u8 taskId); -static void sub_8083F3C(u8 taskId); -static void sub_80833F8(struct Sprite *sprite); -static void sub_8082F68(struct Sprite *sprite); -static void sub_8083010(struct Sprite *sprite); -static void sub_80830C0(struct Sprite *sprite); -static void sub_8082F9C(struct Sprite *sprite); -static void Blender_SetPlayerNamesLocal(u8 opponentsNum); -static void sub_807FAC8(void); -static void sub_8082D28(void); -static bool32 Blender_PrintText(s16 *textState, const u8 *string, s32 textSpeed); -static void sub_807FFA4(void); -static void sub_8080018(void); -static void sub_80808D4(void); -static void Blender_DummiedOutFunc(s16 a0, s16 a1); -static void sub_8081898(void); -static void sub_8082CB4(struct BgAffineSrcData *bgAffineSrc); -static bool8 sub_8083380(void); -static void sub_808074C(void); -static void Blender_PrintPlayerNames(void); -static void sub_8080588(void); -static void Blender_SetParticipantBerryData(u8 participantId, u16 itemId); -static void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 x, u8 y, s32 speed, s32 caseId); -static void sub_8080DF8(void); -static void sub_8082E84(void); -static void sub_80832BC(s16* a0, u16 a1); -static void sub_8083140(u16 a0, u16 a2); -static void sub_8083230(u16 a0); -static void sub_808330C(void); -static void sub_8082AD4(void); -static void CB2_HandleBlenderEndGame(void); -static bool8 Blender_PrintBlendingRanking(void); -static bool8 Blender_PrintBlendingResults(void); -static void CB2_HandlePlayerPlayAgainChoice(void); -static void CB2_HandlePlayerLinkPlayAgainChoice(void); -static void sub_8083170(u16 a0, u16 a1); -static void Blender_PrintMadePokeblockString(struct Pokeblock *pokeblock, u8 *dst); -static bool32 TryAddContestLinkTvShow(struct Pokeblock *pokeblock, struct TvBlenderStruct *a1); - -// EWRAM -EWRAM_DATA static struct BerryBlenderData *sBerryBlenderData = NULL; -EWRAM_DATA static s32 sUnknown_020322A8[5] = {0}; -EWRAM_DATA static s32 sUnknown_020322BC[5] = {0}; -EWRAM_DATA static u32 sUnknown_020322D0 = 0; - -// IWRAM bss -static s16 sUnknown_03000DE8[8]; -static s16 sUnknown_03000DF8[6]; -static s16 sUnknown_03000E04; -static s16 sUnknown_03000E06; - -// IWRAM common -u8 gInGameOpponentsNo; +static void SetBgPos(void); +static void Task_HandleOpponent1(u8); +static void Task_HandleOpponent2(u8); +static void Task_HandleOpponent3(u8); +static void Task_HandleBerryMaster(u8); +static void Task_PlayPokeblockFanfare(u8); +static void SpriteCB_PlayerArrow(struct Sprite *); +static void SpriteCB_ScoreSymbol(struct Sprite *); +static void SpriteCB_CountdownNumber(struct Sprite *); +static void SpriteCB_Start(struct Sprite *); +static void SpriteCB_ScoreSymbolBest(struct Sprite *); +static void InitLocalPlayers(u8); +static void CB2_LoadBerryBlender(void); +static void UpdateBlenderCenter(void); +static bool32 Blender_PrintText(s16 *, const u8 *, s32 ); +static void StartBlender(void); +static void CB2_StartBlenderLink(void); +static void CB2_StartBlenderLocal(void); +static void Blender_DummiedOutFunc(s16, s16); +static void CB2_PlayBlender(void); +static void DrawBlenderCenter(struct BgAffineSrcData *); +static bool8 UpdateBlenderLandScreenShake(void); +static void SetPlayerIdMaps(void); +static void PrintPlayerNames(void); +static void InitBlenderBgs(void); +static void SetPlayerBerryData(u8, u16); +static void Blender_AddTextPrinter(u8, const u8 *, u8, u8, s32, s32); +static void ResetLinkCmds(void); +static void CreateParticleSprites(void); +static void ShakeBgCoordForHit(s16*, u16); +static void TryUpdateProgressBar(u16, u16); +static void UpdateRPM(u16); +static void RestoreBgCoords(void); +static void ProcessLinkPlayerCmds(void); +static void CB2_EndBlenderGame(void); +static bool8 PrintBlendingRanking(void); +static bool8 PrintBlendingResults(void); +static void CB2_CheckPlayAgainLocal(void); +static void CB2_CheckPlayAgainLink(void); +static void UpdateProgressBar(u16, u16); +static void PrintMadePokeblockString(struct Pokeblock *, u8 *); +static bool32 TryAddContestLinkTvShow(struct Pokeblock *, struct TvBlenderStruct *); + +EWRAM_DATA static struct BerryBlender *sBerryBlender = NULL; +EWRAM_DATA static s32 sDebug_PokeblockFactorFlavors[FLAVOR_COUNT] = {0}; +EWRAM_DATA static s32 sDebug_PokeblockFactorFlavorsAfterRPM[FLAVOR_COUNT] = {0}; +EWRAM_DATA static u32 sDebug_PokeblockFactorRPM = 0; + +static s16 sPokeblockFlavors[FLAVOR_COUNT + 1]; // + 1 for feel +static s16 sPokeblockPresentFlavors[FLAVOR_COUNT + 1]; +static s16 sDebug_MaxRPMStage; +static s16 sDebug_GameTimeStage; -// rom +u8 gInGameOpponentsNo; -static const u16 sBlenderCenterPal[] = INCBIN_U16("graphics/berry_blender/center.gbapal"); -static const u8 sBlenderCenterMap[] = INCBIN_U8("graphics/berry_blender/center_map.bin"); -static const u16 sBlenderOuterPal[] = INCBIN_U16("graphics/berry_blender/outer.gbapal"); +static const u16 sBlenderCenter_Pal[] = INCBIN_U16("graphics/berry_blender/center.gbapal"); +static const u8 sBlenderCenter_Tilemap[] = INCBIN_U8("graphics/berry_blender/center_map.bin"); +static const u16 sBlenderOuter_Pal[] = INCBIN_U16("graphics/berry_blender/outer.gbapal"); -// unreferenced pals? -static const u16 sUnknownPal_0[] = INCBIN_U16("graphics/unknown/unknown_339514.gbapal"); -static const u16 sUnknownArray_1[224] = {0}; +static const u16 sUnused_Pal[] = INCBIN_U16("graphics/berry_blender/unused.gbapal"); +static const u16 sEmpty_Pal[16 * 14] = {0}; -// unused text? +// unused text static const u8 sUnusedText_YesNo[] = _("YES\nNO"); static const u8 sUnusedText_2[] = _("▶"); static const u8 sUnusedText_Space[] = _(" "); @@ -232,22 +268,12 @@ static const u8 sText_Miss[] = _("MISS"); static const u8* const sBlenderOpponentsNames[] = { - sText_Mister, - sText_Laddie, - sText_Lassie, - sText_Master, - sText_Dude, - sText_Miss -}; - -enum -{ - BLENDER_MISTER, - BLENDER_LADDIE, - BLENDER_LASSIE, - BLENDER_MASTER, - BLENDER_DUDE, - BLENDER_MISS + [BLENDER_MISTER] = sText_Mister, + [BLENDER_LADDIE] = sText_Laddie, + [BLENDER_LASSIE] = sText_Lassie, + [BLENDER_MASTER] = sText_Master, + [BLENDER_DUDE] = sText_Dude, + [BLENDER_MISS] = sText_Miss }; static const u8 sText_PressAToStart[] = _("Press the A Button to start."); @@ -274,7 +300,7 @@ static const u8 sText_TheLevelIs[] = _("The level is "); static const u8 sText_TheFeelIs[] = _(", and the feel is "); static const u8 sText_Dot2[] = _("."); -static const struct BgTemplate sBerryBlenderBgTemplates[3] = +static const struct BgTemplate sBgTemplates[3] = { { .bg = 0, @@ -305,7 +331,7 @@ static const struct BgTemplate sBerryBlenderBgTemplates[3] = } }; -static const struct WindowTemplate sBerryBlender_WindowTemplates[] = +static const struct WindowTemplate sWindowTemplates[] = { { .bg = 0, @@ -364,7 +390,7 @@ static const struct WindowTemplate sBerryBlender_WindowTemplates[] = DUMMY_WIN_TEMPLATE }; -static const struct WindowTemplate sBlender_YesNoWindowTemplate = +static const struct WindowTemplate sYesNoWindowTemplate_ContinuePlaying = { .bg = 0, .tilemapLeft = 21, @@ -375,31 +401,58 @@ static const struct WindowTemplate sBlender_YesNoWindowTemplate = .baseBlock = 0xCC }; -static const s8 sUnknown_083399C0[][2] = +static const s8 sPlayerArrowQuadrant[BLENDER_MAX_PLAYERS][2] = { - {-1, -1}, {1, -1}, {-1, 1}, {1, 1} + {-1, -1}, + { 1, -1}, + {-1, 1}, + { 1, 1} }; -static const u8 sBlenderSyncArrowsPos[BLENDER_MAX_PLAYERS][2] = +static const u8 sPlayerArrowPos[BLENDER_MAX_PLAYERS][2] = { - {72, 32}, {168, 32}, {72, 128}, {168, 128} + { 72, 32}, + {168, 32}, + { 72, 128}, + {168, 128} }; -static const u8 sUnknown_083399D0[3][4] = +static const u8 sPlayerIdMap[BLENDER_MAX_PLAYERS - 1][BLENDER_MAX_PLAYERS] = { - {-1, 0, 1, -1}, {-1, 0, 1, 2}, {0, 1, 2, 3} + {NO_PLAYER, 0, 1, NO_PLAYER}, // 2 Players + {NO_PLAYER, 0, 1, 2}, // 3 Players + { 0, 1, 2, 3} // 4 Players }; -static const u16 sUnknown_083399DC[] = {0, 0xC000, 0x4000, 0x8000}; -static const u8 sUnknown_083399E4[] = {1, 1, 0}; -static const u8 sUnknown_083399E7[] = {32, 224, 96, 160, 0}; -static const TaskFunc sUnknown_083399EC[] = +// Blender arrow positions: +// +// 0x0000 (limit 0x10000) +// . . +// . . +// 0x4000 . . 0xC000 +// . . +// . . +// . . +// 0x8000 +// +static const u16 sArrowStartPos[] = { + 0, + MAX_ARROW_POS / 4 * 3, // 0xC000 + MAX_ARROW_POS / 4, // 0x4000 + MAX_ARROW_POS / 4 * 2 // 0x8000 +}; +static const u8 sArrowStartPosIds[BLENDER_MAX_PLAYERS - 1] = {1, 1, 0}; +static const u8 sArrowHitRangeStart[BLENDER_MAX_PLAYERS] = {32, 224, 96, 160}; + +static const TaskFunc sLocalOpponentTasks[] = { - sub_8080EA4, sub_8080FD0, sub_80810F8 + Task_HandleOpponent1, + Task_HandleOpponent2, + Task_HandleOpponent3 }; -static const struct OamData sOamData_8216314 = +static const struct OamData sOam_PlayerArrow = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -416,40 +469,40 @@ static const struct OamData sOamData_8216314 = .affineParam = 0, }; -static const union AnimCmd sSpriteAnim_821631C[] = +static const union AnimCmd sAnim_PlayerArrow_TopLeft[] = { - ANIMCMD_FRAME(16, 5, 1, 1), + ANIMCMD_FRAME(16, 5, .vFlip = TRUE, .hFlip = TRUE), ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_8216324[] = +static const union AnimCmd sAnim_PlayerArrow_TopRight[] = { ANIMCMD_FRAME(16, 5, .vFlip = TRUE), ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_821632C[] = +static const union AnimCmd sAnim_PlayerArrow_BottomLeft[] = { ANIMCMD_FRAME(16, 5, .hFlip = TRUE), ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_8216334[] = +static const union AnimCmd sAnim_PlayerArrow_BottomRight[] = { ANIMCMD_FRAME(16, 5, 0, 0), ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_821633C[] = +static const union AnimCmd sAnim_PlayerArrow_TopLeft_Flash[] = { - ANIMCMD_FRAME(48, 2, 1, 1), - ANIMCMD_FRAME(32, 5, 1, 1), - ANIMCMD_FRAME(48, 3, 1, 1), - ANIMCMD_FRAME(16, 5, 1, 1), + ANIMCMD_FRAME(48, 2, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(32, 5, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(48, 3, .vFlip = TRUE, .hFlip = TRUE), + ANIMCMD_FRAME(16, 5, .vFlip = TRUE, .hFlip = TRUE), ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_8216350[] = +static const union AnimCmd sAnim_PlayerArrow_TopRight_Flash[] = { ANIMCMD_FRAME(48, 2, .vFlip = TRUE), ANIMCMD_FRAME(32, 5, .vFlip = TRUE), @@ -458,7 +511,7 @@ static const union AnimCmd sSpriteAnim_8216350[] = ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_8216364[] = +static const union AnimCmd sAnim_PlayerArrow_BottomLeft_Flash[] = { ANIMCMD_FRAME(48, 2, .hFlip = TRUE), ANIMCMD_FRAME(32, 5, .hFlip = TRUE), @@ -467,7 +520,7 @@ static const union AnimCmd sSpriteAnim_8216364[] = ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_8216378[] = +static const union AnimCmd sAnim_PlayerArrow_BottomRight_Flash[] = { ANIMCMD_FRAME(48, 2, 0, 0), ANIMCMD_FRAME(32, 5, 0, 0), @@ -476,73 +529,73 @@ static const union AnimCmd sSpriteAnim_8216378[] = ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_821638C[] = +static const union AnimCmd sAnim_PlayerArrow_TopLeft_Off[] = { - ANIMCMD_FRAME(0, 5, 1, 1), + ANIMCMD_FRAME(0, 5, .vFlip = TRUE, .hFlip = TRUE), ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_8216394[] = +static const union AnimCmd sAnim_PlayerArrow_TopRight_Off[] = { ANIMCMD_FRAME(0, 5, .vFlip = TRUE), ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_821639C[] = +static const union AnimCmd sAnim_PlayerArrow_BottomLeft_Off[] = { ANIMCMD_FRAME(0, 5, .hFlip = TRUE), ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_82163A4[] = +static const union AnimCmd sAnim_PlayerArrow_BottomRight_Off[] = { ANIMCMD_FRAME(0, 5, 0, 0), ANIMCMD_END }; -static const union AnimCmd *const sSpriteAnimTable_82163AC[] = +static const union AnimCmd *const sAnims_PlayerArrow[] = { - sSpriteAnim_821631C, - sSpriteAnim_8216324, - sSpriteAnim_821632C, - sSpriteAnim_8216334, - sSpriteAnim_821633C, - sSpriteAnim_8216350, - sSpriteAnim_8216364, - sSpriteAnim_8216378, - sSpriteAnim_821638C, - sSpriteAnim_8216394, - sSpriteAnim_821639C, - sSpriteAnim_82163A4 + sAnim_PlayerArrow_TopLeft, + sAnim_PlayerArrow_TopRight, + sAnim_PlayerArrow_BottomLeft, + sAnim_PlayerArrow_BottomRight, + sAnim_PlayerArrow_TopLeft_Flash, + sAnim_PlayerArrow_TopRight_Flash, + sAnim_PlayerArrow_BottomLeft_Flash, + sAnim_PlayerArrow_BottomRight_Flash, + sAnim_PlayerArrow_TopLeft_Off, + sAnim_PlayerArrow_TopRight_Off, + sAnim_PlayerArrow_BottomLeft_Off, + sAnim_PlayerArrow_BottomRight_Off }; -static const struct SpriteSheet sSpriteSheet_BlenderArrow = +static const struct SpriteSheet sSpriteSheet_PlayerArrow = { - gBerryBlenderArrowTiles, 0x800, 46545 + gBerryBlenderPlayerArrow_Gfx, 0x800, GFXTAG_PLAYER_ARROW }; static const struct SpritePalette sSpritePal_BlenderMisc = { - gBerryBlenderMiscPalette, 46546 + gBerryBlenderMiscPalette, PALTAG_MISC }; -static const struct SpritePalette sSpritePal_BlenderArrow = +static const struct SpritePalette sSpritePal_PlayerArrow = { - gBerryBlenderArrowPalette, 12312 + gBerryBlenderArrowPalette, PALTAG_PLAYER_ARROW }; -static const struct SpriteTemplate sBlenderSyncArrow_SpriteTemplate = +static const struct SpriteTemplate sSpriteTemplate_PlayerArrow = { - .tileTag = 46545, - .paletteTag = 12312, - .oam = &sOamData_8216314, - .anims = sSpriteAnimTable_82163AC, + .tileTag = GFXTAG_PLAYER_ARROW, + .paletteTag = PALTAG_PLAYER_ARROW, + .oam = &sOam_PlayerArrow, + .anims = sAnims_PlayerArrow, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80833F8 + .callback = SpriteCB_PlayerArrow }; -static const struct OamData sOamData_821640C = +static const struct OamData sOam_ScoreSymbols = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -559,19 +612,19 @@ static const struct OamData sOamData_821640C = .affineParam = 0, }; -static const union AnimCmd sSpriteAnim_8216414[] = +static const union AnimCmd sAnim_ScoreSymbols_Good[] = { ANIMCMD_FRAME(0, 20), ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_821641C[] = +static const union AnimCmd sAnim_ScoreSymbols_Miss[] = { ANIMCMD_FRAME(4, 20, 1, 0), ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_8216424[] = +static const union AnimCmd sAnim_ScoreSymbols_BestFlash[] = { ANIMCMD_FRAME(8, 4), ANIMCMD_FRAME(12, 4), @@ -581,37 +634,37 @@ static const union AnimCmd sSpriteAnim_8216424[] = ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_821643C[] = +static const union AnimCmd sAnim_ScoreSymbols_BestStatic[] = { ANIMCMD_FRAME(8, 4), ANIMCMD_END }; -static const union AnimCmd *const sSpriteAnimTable_8216444[] = +static const union AnimCmd *const sAnims_ScoreSymbols[] = { - sSpriteAnim_8216414, - sSpriteAnim_821641C, - sSpriteAnim_8216424, - sSpriteAnim_821643C, + [SCOREANIM_GOOD] = sAnim_ScoreSymbols_Good, + [SCOREANIM_MISS] = sAnim_ScoreSymbols_Miss, + [SCOREANIM_BEST_FLASH] = sAnim_ScoreSymbols_BestFlash, + [SCOREANIM_BEST_STATIC] = sAnim_ScoreSymbols_BestStatic, }; -static const struct SpriteSheet sUnknown_08339B38 = +static const struct SpriteSheet sSpriteSheet_ScoreSymbols = { - gBerryBlenderMarubatsuTiles, 0x200, 48888 + gBerryBlenderScoreSymbols_Gfx, 0x200, GFXTAG_SCORE_SYMBOLS }; -static const struct SpriteTemplate sUnknown_08339B40 = +static const struct SpriteTemplate sSpriteTemplate_ScoreSymbols = { - .tileTag = 48888, - .paletteTag = 46546, - .oam = &sOamData_821640C, - .anims = sSpriteAnimTable_8216444, + .tileTag = GFXTAG_SCORE_SYMBOLS, + .paletteTag = PALTAG_MISC, + .oam = &sOam_ScoreSymbols, + .anims = sAnims_ScoreSymbols, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8082F68 + .callback = SpriteCB_ScoreSymbol }; -static const struct OamData sOamData_8216474 = +static const struct OamData sOam_Particles = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -628,7 +681,7 @@ static const struct OamData sOamData_8216474 = .affineParam = 0, }; -static const union AnimCmd sSpriteAnim_821647C[] = +static const union AnimCmd sAnim_SparkleCrossToX[] = { ANIMCMD_FRAME(0, 3), ANIMCMD_FRAME(1, 4), @@ -638,7 +691,7 @@ static const union AnimCmd sSpriteAnim_821647C[] = ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_8216494[] = +static const union AnimCmd sAnim_SparkleXToCross[] = { ANIMCMD_FRAME(0, 3), ANIMCMD_FRAME(2, 4), @@ -648,7 +701,7 @@ static const union AnimCmd sSpriteAnim_8216494[] = ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_82164AC[] = +static const union AnimCmd sAnim_SparkleFull[] = { ANIMCMD_FRAME(0, 2), ANIMCMD_FRAME(1, 2), @@ -661,44 +714,44 @@ static const union AnimCmd sSpriteAnim_82164AC[] = ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_82164D0[] = +static const union AnimCmd sAnim_GreenArrow[] = { ANIMCMD_FRAME(5, 5, 1, 1), ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_82164D8[] = +static const union AnimCmd sAnim_GreenDot[] = { ANIMCMD_FRAME(6, 5, 1, 1), ANIMCMD_END }; -static const union AnimCmd *const sSpriteAnimTable_82164E0[] = +static const union AnimCmd *const sAnims_Particles[] = { - sSpriteAnim_821647C, - sSpriteAnim_8216494, - sSpriteAnim_82164AC, - sSpriteAnim_82164D0, - sSpriteAnim_82164D8, + sAnim_SparkleCrossToX, // Only this effect is ever used, rest go unused + sAnim_SparkleXToCross, + sAnim_SparkleFull, + sAnim_GreenArrow, + sAnim_GreenDot, }; -static const struct SpriteSheet sUnknown_08339BD8 = +static const struct SpriteSheet sSpriteSheet_Particles = { - gBerryBlenderParticlesTiles, 0xE0, 23456 + gBerryBlenderParticles_Gfx, 0xE0, GFXTAG_PARTICLES }; -static const struct SpriteTemplate sUnknown_08339BE0 = +static const struct SpriteTemplate sSpriteTemplate_Particles = { - .tileTag = 23456, - .paletteTag = 46546, - .oam = &sOamData_8216474, - .anims = sSpriteAnimTable_82164E0, + .tileTag = GFXTAG_PARTICLES, + .paletteTag = PALTAG_MISC, + .oam = &sOam_Particles, + .anims = sAnims_Particles, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, .callback = SpriteCallbackDummy }; -static const struct OamData sOamData_8216514 = +static const struct OamData sOam_CountdownNumbers = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -715,48 +768,48 @@ static const struct OamData sOamData_8216514 = .affineParam = 0, }; -static const union AnimCmd sSpriteAnim_821651C[] = +static const union AnimCmd sAnim_CountdownNumbers_3[] = { ANIMCMD_FRAME(32, 30), ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_8216524[] = +static const union AnimCmd sAnim_CountdownNumbers_2[] = { ANIMCMD_FRAME(16, 30), ANIMCMD_END }; -static const union AnimCmd sSpriteAnim_821652C[] = +static const union AnimCmd sAnim_CountdownNumbers_1[] = { ANIMCMD_FRAME(0, 30), ANIMCMD_END }; -static const union AnimCmd *const sSpriteAnimTable_8216534[] = +static const union AnimCmd *const sAnims_CountdownNumbers[] = { - sSpriteAnim_821651C, - sSpriteAnim_8216524, - sSpriteAnim_821652C, + sAnim_CountdownNumbers_3, + sAnim_CountdownNumbers_2, + sAnim_CountdownNumbers_1, }; -static const struct SpriteSheet sUnknown_08339C24 = +static const struct SpriteSheet sSpriteSheet_CountdownNumbers = { - gBerryBlenderCountdownNumbersTiles, 0x600, 12345 + gBerryBlenderCountdownNumbers_Gfx, 0x600, GFXTAG_COUNTDOWN_NUMBERS }; -static const struct SpriteTemplate sUnknown_08339C2C = +static const struct SpriteTemplate sSpriteTemplate_CountdownNumbers = { - .tileTag = 12345, - .paletteTag = 46546, - .oam = &sOamData_8216514, - .anims = sSpriteAnimTable_8216534, + .tileTag = GFXTAG_COUNTDOWN_NUMBERS, + .paletteTag = PALTAG_MISC, + .oam = &sOam_CountdownNumbers, + .anims = sAnims_CountdownNumbers, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_8083010 + .callback = SpriteCB_CountdownNumber }; -static const struct OamData sOamData_8216560 = +static const struct OamData sOam_Start = { .y = 0, .affineMode = ST_OAM_AFFINE_OFF, @@ -773,34 +826,36 @@ static const struct OamData sOamData_8216560 = .affineParam = 0, }; -static const union AnimCmd sSpriteAnim_8216568[] = +static const union AnimCmd sAnim_Start[] = { ANIMCMD_FRAME(0, 30), ANIMCMD_END }; -static const union AnimCmd *const sSpriteAnimTable_8216570[] = +static const union AnimCmd *const sAnims_Start[] = { - sSpriteAnim_8216568, + sAnim_Start, }; -static const struct SpriteSheet sUnknown_08339C58 = +static const struct SpriteSheet sSpriteSheet_Start = { - gBerryBlenderStartTiles, 0x400, 12346 + gBerryBlenderStart_Gfx, 0x400, GFXTAG_START }; -static const struct SpriteTemplate sUnknown_08339C60 = +static const struct SpriteTemplate sSpriteTemplate_Start = { - .tileTag = 12346, - .paletteTag = 46546, - .oam = &sOamData_8216560, - .anims = sSpriteAnimTable_8216570, + .tileTag = GFXTAG_START, + .paletteTag = PALTAG_MISC, + .oam = &sOam_Start, + .anims = sAnims_Start, .images = NULL, .affineAnims = gDummySpriteAffineAnimTable, - .callback = sub_80830C0 + .callback = SpriteCB_Start }; -static const s16 sUnknown_08339C78[][5] = +// Data for throwing the berries in at the start +// x, y, bounce speed, x speed, y speed +static const s16 sBerrySpriteData[][5] = { {-10, 20, 10, 2, 1}, {250, 20, 10, -2, 1}, @@ -808,18 +863,54 @@ static const s16 sUnknown_08339C78[][5] = {250, 140, 10, -2, -1}, }; -static const u8 sOpponentBerrySets[][3] = -{ - {4, 3, 2}, {0, 4, 3}, {1, 0, 4}, {2, 1, 0}, {3, 2, 1}, {0, 2, 3}, {1, 3, 4}, {2, 4, 0}, {3, 0, 1}, {4, 1, 2}, -}; - -static const u8 sSpecialOpponentBerrySets[] = {30, 31, 32, 33, 34}; - -static const u8 sUnknown_08339CC3[] = {1, 1, 2, 3, 4}; - -static const u8 sUnknown_08339CC8[] = {0x1C, 0x16, 0x13, 0x1A, 0x19, 0x0E, 0x0D, 0x0B, 0x07, 0x15}; - -static const u8 sUnknown_08339CD2[] = +// There are only 5 different berries the NPCs will ever use +// Each of these sets represents 3 berries chosen to be used by the NPCs +// If the player's berry is one of the 5 possible berries, a set is chosen that excludes it +static const u8 sOpponentBerrySets[NUM_NPC_BERRIES * 2][3] = +{ + // These sets are used if the player chose one of the 5 NPC berries + {ITEM_TO_BERRY(ITEM_ASPEAR_BERRY) - 1, ITEM_TO_BERRY(ITEM_RAWST_BERRY) - 1, ITEM_TO_BERRY(ITEM_PECHA_BERRY) - 1}, // player chose Cheri Berry + {ITEM_TO_BERRY(ITEM_CHERI_BERRY) - 1, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY) - 1, ITEM_TO_BERRY(ITEM_RAWST_BERRY) - 1}, // player chose Chesto Berry + {ITEM_TO_BERRY(ITEM_CHESTO_BERRY) - 1, ITEM_TO_BERRY(ITEM_CHERI_BERRY) - 1, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY) - 1}, // player chose Pecha Berry + {ITEM_TO_BERRY(ITEM_PECHA_BERRY) - 1, ITEM_TO_BERRY(ITEM_CHESTO_BERRY) - 1, ITEM_TO_BERRY(ITEM_CHERI_BERRY) - 1}, // player chose Rawst Berry + {ITEM_TO_BERRY(ITEM_RAWST_BERRY) - 1, ITEM_TO_BERRY(ITEM_PECHA_BERRY) - 1, ITEM_TO_BERRY(ITEM_CHESTO_BERRY) - 1}, // player chose Aspear Berry + + // These sets are used if the player chose a different berry (set is selected by player's berry % 5) + {ITEM_TO_BERRY(ITEM_CHERI_BERRY) - 1, ITEM_TO_BERRY(ITEM_PECHA_BERRY) - 1, ITEM_TO_BERRY(ITEM_RAWST_BERRY) - 1}, // player chose Leppa, Figy, ... + {ITEM_TO_BERRY(ITEM_CHESTO_BERRY) - 1, ITEM_TO_BERRY(ITEM_RAWST_BERRY) - 1, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY) - 1}, // player chose Oran, Wiki, ... + {ITEM_TO_BERRY(ITEM_PECHA_BERRY) - 1, ITEM_TO_BERRY(ITEM_ASPEAR_BERRY) - 1, ITEM_TO_BERRY(ITEM_CHERI_BERRY) - 1}, // player chose Persim, Mago, ... + {ITEM_TO_BERRY(ITEM_RAWST_BERRY) - 1, ITEM_TO_BERRY(ITEM_CHERI_BERRY) - 1, ITEM_TO_BERRY(ITEM_CHESTO_BERRY) - 1}, // player chose Lum, Aguav, ... + {ITEM_TO_BERRY(ITEM_ASPEAR_BERRY) - 1, ITEM_TO_BERRY(ITEM_CHESTO_BERRY) - 1, ITEM_TO_BERRY(ITEM_PECHA_BERRY) - 1}, // player chose Sitrus, Iapapa, ... +}; + +// Berry master's berries follow the same rules as above, but instead of explicitly listing +// the alternate sets if the player chooses one of these berries, it implicitly uses these berries - 5, i.e. Tamato - Nomel +static const u8 sBerryMasterBerries[] = { + ITEM_TO_BERRY(ITEM_SPELON_BERRY) - 1, + ITEM_TO_BERRY(ITEM_PAMTRE_BERRY) - 1, + ITEM_TO_BERRY(ITEM_WATMEL_BERRY) - 1, + ITEM_TO_BERRY(ITEM_DURIN_BERRY) - 1, + ITEM_TO_BERRY(ITEM_BELUE_BERRY) - 1 +}; + +// "0 players" is link +static const u8 sNumPlayersToSpeedDivisor[] = {1, 1, 2, 3, 4}; + +// Black pokeblocks will use one of these random combinations of flavors +static const u8 sBlackPokeblockFlavorFlags[] = { + (1 << FLAVOR_SOUR) | (1 << FLAVOR_BITTER) | (1 << FLAVOR_SWEET), + (1 << FLAVOR_SOUR) | (1 << FLAVOR_SWEET) | (1 << FLAVOR_DRY), + (1 << FLAVOR_SOUR) | (1 << FLAVOR_DRY) | (1 << FLAVOR_SPICY), + (1 << FLAVOR_SOUR) | (1 << FLAVOR_BITTER) | (1 << FLAVOR_DRY), + (1 << FLAVOR_SOUR) | (1 << FLAVOR_BITTER) | (1 << FLAVOR_SPICY), + (1 << FLAVOR_BITTER) | (1 << FLAVOR_SWEET) | (1 << FLAVOR_DRY), + (1 << FLAVOR_BITTER) | (1 << FLAVOR_SWEET) | (1 << FLAVOR_SPICY), + (1 << FLAVOR_BITTER) | (1 << FLAVOR_DRY) | (1 << FLAVOR_SPICY), + (1 << FLAVOR_SWEET) | (1 << FLAVOR_DRY) | (1 << FLAVOR_SPICY), + (1 << FLAVOR_SOUR) | (1 << FLAVOR_SWEET) | (1 << FLAVOR_SPICY), +}; + +static const u8 sUnused[] = { 0xfe, 0x02, 0x02, 0xce, 0xd0, 0x37, 0x44, 0x07, 0x1f, 0x0c, 0x10, 0x00, 0xff, 0xfe, 0x91, 0x72, 0xce, 0xd0, 0x37, 0x44, 0x07, 0x1f, @@ -840,20 +931,18 @@ static const struct WindowTemplate sBlenderRecordWindowTemplate = .baseBlock = 8 }; -// code - -static void Blender_ControlHitPitch(void) +static void UpdateHitPitch(void) { - m4aMPlayPitchControl(&gMPlayInfo_SE2, 0xFFFF, 2 * (sBerryBlenderData->field_4C - 128)); + m4aMPlayPitchControl(&gMPlayInfo_SE2, 0xFFFF, 2 * (sBerryBlender->speed - MIN_ARROW_SPEED)); } -static void VBlankCB0_BerryBlender(void) +static void VBlankCB_BerryBlender(void) { - BerryBlender_SetBackgroundsPos(); - SetBgAffine(2, sBerryBlenderData->bgAffineSrc.texX, sBerryBlenderData->bgAffineSrc.texY, - sBerryBlenderData->bgAffineSrc.scrX, sBerryBlenderData->bgAffineSrc.scrY, - sBerryBlenderData->bgAffineSrc.sx, sBerryBlenderData->bgAffineSrc.sy, - sBerryBlenderData->bgAffineSrc.alpha); + SetBgPos(); + SetBgAffine(2, sBerryBlender->bgAffineSrc.texX, sBerryBlender->bgAffineSrc.texY, + sBerryBlender->bgAffineSrc.scrX, sBerryBlender->bgAffineSrc.scrY, + sBerryBlender->bgAffineSrc.sx, sBerryBlender->bgAffineSrc.sy, + sBerryBlender->bgAffineSrc.alpha); LoadOam(); ProcessSpriteCopyRequests(); TransferPlttBuffer(); @@ -861,64 +950,64 @@ static void VBlankCB0_BerryBlender(void) static bool8 LoadBerryBlenderGfx(void) { - switch (sBerryBlenderData->loadGfxState) + switch (sBerryBlender->loadGfxState) { case 0: - sBerryBlenderData->tilesBuffer = AllocZeroed(GetDecompressedDataSize(sBlenderCenterGfx) + 100); - LZDecompressWram(sBlenderCenterGfx, sBerryBlenderData->tilesBuffer); - sBerryBlenderData->loadGfxState++; + sBerryBlender->tilesBuffer = AllocZeroed(GetDecompressedDataSize(gBerryBlenderCenter_Gfx) + 100); + LZDecompressWram(gBerryBlenderCenter_Gfx, sBerryBlender->tilesBuffer); + sBerryBlender->loadGfxState++; break; case 1: - CopyToBgTilemapBuffer(2, sBlenderCenterMap, 0x400, 0); + CopyToBgTilemapBuffer(2, sBlenderCenter_Tilemap, 0x400, 0); CopyBgTilemapBufferToVram(2); - LoadPalette(sBlenderCenterPal, 0, 0x100); - sBerryBlenderData->loadGfxState++; + LoadPalette(sBlenderCenter_Pal, 0, 0x100); + sBerryBlender->loadGfxState++; break; case 2: - LoadBgTiles(2, sBerryBlenderData->tilesBuffer, GetDecompressedDataSize(sBlenderCenterGfx), 0); - sBerryBlenderData->loadGfxState++; + LoadBgTiles(2, sBerryBlender->tilesBuffer, GetDecompressedDataSize(gBerryBlenderCenter_Gfx), 0); + sBerryBlender->loadGfxState++; break; case 3: - LZDecompressWram(gUnknown_08D91DB8, sBerryBlenderData->tilesBuffer); - sBerryBlenderData->loadGfxState++; + LZDecompressWram(gBerryBlenderOuter_Gfx, sBerryBlender->tilesBuffer); + sBerryBlender->loadGfxState++; break; case 4: - LoadBgTiles(1, sBerryBlenderData->tilesBuffer, GetDecompressedDataSize(gUnknown_08D91DB8), 0); - sBerryBlenderData->loadGfxState++; + LoadBgTiles(1, sBerryBlender->tilesBuffer, GetDecompressedDataSize(gBerryBlenderOuter_Gfx), 0); + sBerryBlender->loadGfxState++; break; case 5: - LZDecompressWram(gUnknown_08D927EC, sBerryBlenderData->tilesBuffer); - sBerryBlenderData->loadGfxState++; + LZDecompressWram(gBerryBlenderOuter_Tilemap, sBerryBlender->tilesBuffer); + sBerryBlender->loadGfxState++; break; case 6: - CopyToBgTilemapBuffer(1, sBerryBlenderData->tilesBuffer, GetDecompressedDataSize(gUnknown_08D927EC), 0); + CopyToBgTilemapBuffer(1, sBerryBlender->tilesBuffer, GetDecompressedDataSize(gBerryBlenderOuter_Tilemap), 0); CopyBgTilemapBufferToVram(1); - sBerryBlenderData->loadGfxState++; + sBerryBlender->loadGfxState++; break; case 7: - LoadPalette(sBlenderOuterPal, 0x80, 0x20); - sBerryBlenderData->loadGfxState++; + LoadPalette(sBlenderOuter_Pal, 0x80, 0x20); + sBerryBlender->loadGfxState++; break; case 8: - LoadSpriteSheet(&sSpriteSheet_BlenderArrow); - LoadSpriteSheet(&sUnknown_08339BD8); - LoadSpriteSheet(&sUnknown_08339B38); - sBerryBlenderData->loadGfxState++; + LoadSpriteSheet(&sSpriteSheet_PlayerArrow); + LoadSpriteSheet(&sSpriteSheet_Particles); + LoadSpriteSheet(&sSpriteSheet_ScoreSymbols); + sBerryBlender->loadGfxState++; break; case 9: - LoadSpriteSheet(&sUnknown_08339C24); - LoadSpriteSheet(&sUnknown_08339C58); - LoadSpritePalette(&sSpritePal_BlenderArrow); + LoadSpriteSheet(&sSpriteSheet_CountdownNumbers); + LoadSpriteSheet(&sSpriteSheet_Start); + LoadSpritePalette(&sSpritePal_PlayerArrow); LoadSpritePalette(&sSpritePal_BlenderMisc); - Free(sBerryBlenderData->tilesBuffer); - sBerryBlenderData->loadGfxState = 0; + Free(sBerryBlender->tilesBuffer); + sBerryBlender->loadGfxState = 0; return TRUE; } return FALSE; } -static void sub_807F9D0(void) +static void DrawBlenderBg(void) { FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 0x1E, 0x14); CopyBgTilemapBufferToVram(0); @@ -933,7 +1022,7 @@ static void sub_807F9D0(void) static void InitBerryBlenderWindows(void) { - if (InitWindows(sBerryBlender_WindowTemplates)) + if (InitWindows(sWindowTemplates)) { s32 i; @@ -946,24 +1035,27 @@ static void InitBerryBlenderWindows(void) } } +// gSpecialVar_0x8004 is the number of NPC opponents +// Set to 0 indicates it's a link blender void DoBerryBlending(void) { - if (sBerryBlenderData == NULL) - sBerryBlenderData = AllocZeroed(sizeof(*sBerryBlenderData)); + if (sBerryBlender == NULL) + sBerryBlender = AllocZeroed(sizeof(*sBerryBlender)); - sBerryBlenderData->gameEndState = 0; - sBerryBlenderData->mainState = 0; - sBerryBlenderData->gameEndState = 0; + sBerryBlender->gameEndState = 0; + sBerryBlender->mainState = 0; + sBerryBlender->gameEndState = 0; - Blender_SetPlayerNamesLocal(gSpecialVar_0x8004); - SetMainCallback2(sub_807FAC8); + InitLocalPlayers(gSpecialVar_0x8004); + SetMainCallback2(CB2_LoadBerryBlender); } -static void sub_807FAC8(void) +// Show the blender screen initially and prompt to choose a berry +static void CB2_LoadBerryBlender(void) { s32 i; - switch (sBerryBlenderData->mainState) + switch (sBerryBlender->mainState) { case 0: SetGpuReg(REG_OFFSET_DISPCNT, 0); @@ -971,68 +1063,69 @@ static void sub_807FAC8(void) FreeAllSpritePalettes(); SetVBlankCallback(NULL); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(1, sBerryBlenderBgTemplates, ARRAY_COUNT(sBerryBlenderBgTemplates)); - SetBgTilemapBuffer(1, sBerryBlenderData->tilemapBuffers[0]); - SetBgTilemapBuffer(2, sBerryBlenderData->tilemapBuffers[1]); + InitBgsFromTemplates(1, sBgTemplates, ARRAY_COUNT(sBgTemplates)); + SetBgTilemapBuffer(1, sBerryBlender->tilemapBuffers[0]); + SetBgTilemapBuffer(2, sBerryBlender->tilemapBuffers[1]); LoadUserWindowBorderGfx(0, 1, 0xD0); LoadMessageBoxGfx(0, 0x14, 0xF0); InitBerryBlenderWindows(); - sBerryBlenderData->mainState++; - sBerryBlenderData->field_118 = 0; - sBerryBlenderData->field_116 = 0; - sBerryBlenderData->field_11A = 0x50; - sBerryBlenderData->bg_X = 0; - sBerryBlenderData->bg_Y = 0; - sBerryBlenderData->loadGfxState = 0; + sBerryBlender->mainState++; + sBerryBlender->maxProgressBarValue = 0; + sBerryBlender->progressBarValue = 0; + sBerryBlender->centerScale = 80; + sBerryBlender->bg_X = 0; + sBerryBlender->bg_Y = 0; + sBerryBlender->loadGfxState = 0; - sub_8082D28(); + UpdateBlenderCenter(); break; case 1: if (LoadBerryBlenderGfx()) { for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - sBerryBlenderData->syncArrowSpriteIds[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); - StartSpriteAnim(&gSprites[sBerryBlenderData->syncArrowSpriteIds[i]], i + 8); + sBerryBlender->playerArrowSpriteIds[i] = CreateSprite(&sSpriteTemplate_PlayerArrow, sPlayerArrowPos[i][0], sPlayerArrowPos[i][1], 1); + StartSpriteAnim(&gSprites[sBerryBlender->playerArrowSpriteIds[i]], i + 8); } - if (gReceivedRemoteLinkPlayers != 0 && gWirelessCommType) + if (gReceivedRemoteLinkPlayers && gWirelessCommType) { LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); } - SetVBlankCallback(VBlankCB0_BerryBlender); - sBerryBlenderData->mainState++; + SetVBlankCallback(VBlankCB_BerryBlender); + sBerryBlender->mainState++; } break; case 2: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); - sub_8082D28(); - sBerryBlenderData->mainState++; + UpdateBlenderCenter(); + sBerryBlender->mainState++; break; case 3: - sub_807F9D0(); + DrawBlenderBg(); if (!gPaletteFade.active) - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; break; case 4: - if (Blender_PrintText(&sBerryBlenderData->textState, sText_BerryBlenderStart, GetPlayerTextSpeedDelay())) - sBerryBlenderData->mainState++; + if (Blender_PrintText(&sBerryBlender->textState, sText_BerryBlenderStart, GetPlayerTextSpeedDelay())) + sBerryBlender->mainState++; break; case 5: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; break; case 6: if (!gPaletteFade.active) { + // Go to bag menu to choose berry, set callback to StartBlender FreeAllWindowBuffers(); UnsetBgTilemapBuffer(2); UnsetBgTilemapBuffer(1); SetVBlankCallback(NULL); - ChooseBerrySetCallback(sub_807FFA4); + ChooseBerryForMachine(StartBlender); - sBerryBlenderData->mainState = 0; + sBerryBlender->mainState = 0; } break; } @@ -1043,47 +1136,71 @@ static void sub_807FAC8(void) UpdatePaletteFade(); } -static void sub_807FD08(struct Sprite* sprite) +#define sTargetY data[0] +#define sX data[1] +#define sY data[2] +#define sBounceSpeed data[3] +#define sYUpSpeed data[4] +#define sBounces data[5] +#define sXSpeed data[6] +#define sYDownSpeed data[7] + +// For throwing berries into the machine +static void SpriteCB_Berry(struct Sprite* sprite) { - sprite->data[1] += sprite->data[6]; - sprite->data[2] -= sprite->data[4]; - sprite->data[2] += sprite->data[7]; - sprite->data[0] += sprite->data[7]; - sprite->data[4]--; + sprite->sX += sprite->sXSpeed; + sprite->sY -= sprite->sYUpSpeed; + sprite->sY += sprite->sYDownSpeed; + sprite->sTargetY += sprite->sYDownSpeed; + sprite->sYUpSpeed--; - if (sprite->data[0] < sprite->data[2]) + if (sprite->sTargetY < sprite->sY) { - sprite->data[3] = sprite->data[4] = sprite->data[3] - 1; + sprite->sBounceSpeed = sprite->sYUpSpeed = sprite->sBounceSpeed - 1; - if (++sprite->data[5] > 3) + if (++sprite->sBounces > 3) DestroySprite(sprite); else - PlaySE(SE_TB_KARA); + PlaySE(SE_BALL_TRAY_EXIT); } - sprite->pos1.x = sprite->data[1]; - sprite->pos1.y = sprite->data[2]; + sprite->pos1.x = sprite->sX; + sprite->pos1.y = sprite->sY; } -static void sub_807FD64(struct Sprite* sprite, s16 a2, s16 a3, s16 a4, s16 a5, s16 a6) +static void SetBerrySpriteData(struct Sprite* sprite, s16 x, s16 y, s16 bounceSpeed, s16 xSpeed, s16 ySpeed) { - sprite->data[0] = a3; - sprite->data[1] = a2; - sprite->data[2] = a3; - sprite->data[3] = a4; - sprite->data[4] = 10; - sprite->data[5] = 0; - sprite->data[6] = a5; - sprite->data[7] = a6; - sprite->callback = sub_807FD08; + sprite->sTargetY = y; + sprite->sX = x; + sprite->sY = y; + sprite->sBounceSpeed = bounceSpeed; + sprite->sYUpSpeed = 10; + sprite->sBounces = 0; + sprite->sXSpeed = xSpeed; + sprite->sYDownSpeed = ySpeed; + sprite->callback = SpriteCB_Berry; } -static void sub_807FD90(u16 a0, u8 a1) +#undef sTargetY +#undef sX +#undef sY +#undef sBounceSpeed +#undef sYUpSpeed +#undef sBounces +#undef sXSpeed +#undef sYDownSpeed + +static void CreateBerrySprite(u16 a0, u8 playerId) { - u8 spriteId = LoadSpinningBerryPicGfx(a0 + 123, 0, 80, a1 & 1); - sub_807FD64(&gSprites[spriteId], sUnknown_08339C78[a1][0], sUnknown_08339C78[a1][1], sUnknown_08339C78[a1][2], sUnknown_08339C78[a1][3], sUnknown_08339C78[a1][4]); + u8 spriteId = CreateSpinningBerrySprite(a0 + FIRST_BERRY_INDEX - 10, 0, 80, playerId & 1); + SetBerrySpriteData(&gSprites[spriteId], + sBerrySpriteData[playerId][0], + sBerrySpriteData[playerId][1], + sBerrySpriteData[playerId][2], + sBerrySpriteData[playerId][3], + sBerrySpriteData[playerId][4]); } -static void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemId) +static void ConvertItemToBlenderBerry(struct BlenderBerry* berry, u16 itemId) { const struct Berry *berryInfo = GetBerryInfo(ITEM_TO_BERRY(itemId)); @@ -1094,19 +1211,19 @@ static void Blender_CopyBerryData(struct BlenderBerry* berry, u16 itemId) berry->flavors[FLAVOR_SWEET] = berryInfo->sweet; berry->flavors[FLAVOR_BITTER] = berryInfo->bitter; berry->flavors[FLAVOR_SOUR] = berryInfo->sour; - berry->smoothness = berryInfo->smoothness; + berry->flavors[FLAVOR_COUNT] = berryInfo->smoothness; } -static void Blender_SetPlayerNamesLocal(u8 opponentsNum) +static void InitLocalPlayers(u8 opponentsNum) { switch (opponentsNum) { - case 0: + case 0: // Link games have 0 in-game opponents gInGameOpponentsNo = 0; break; case 1: gInGameOpponentsNo = 1; - sBerryBlenderData->playersNo = 2; + sBerryBlender->numPlayers = 2; StringCopy(gLinkPlayers[0].name, gSaveBlock2Ptr->playerName); if (!FlagGet(FLAG_HIDE_LILYCOVE_CONTEST_HALL_BLEND_MASTER)) @@ -1119,7 +1236,7 @@ static void Blender_SetPlayerNamesLocal(u8 opponentsNum) break; case 2: gInGameOpponentsNo = 2; - sBerryBlenderData->playersNo = 3; + sBerryBlender->numPlayers = 3; StringCopy(gLinkPlayers[0].name, gSaveBlock2Ptr->playerName); StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[BLENDER_DUDE]); StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[BLENDER_LASSIE]); @@ -1130,7 +1247,7 @@ static void Blender_SetPlayerNamesLocal(u8 opponentsNum) break; case 3: gInGameOpponentsNo = 3; - sBerryBlenderData->playersNo = 4; + sBerryBlender->numPlayers = 4; StringCopy(gLinkPlayers[0].name, gSaveBlock2Ptr->playerName); StringCopy(gLinkPlayers[1].name, sBlenderOpponentsNames[BLENDER_MISS]); StringCopy(gLinkPlayers[2].name, sBlenderOpponentsNames[BLENDER_LADDIE]); @@ -1144,94 +1261,95 @@ static void Blender_SetPlayerNamesLocal(u8 opponentsNum) } } -static void sub_807FFA4(void) +static void StartBlender(void) { s32 i; SetGpuReg(REG_OFFSET_DISPCNT, 0); - if (sBerryBlenderData == NULL) - sBerryBlenderData = AllocZeroed(sizeof(*sBerryBlenderData)); + if (sBerryBlender == NULL) + sBerryBlender = AllocZeroed(sizeof(*sBerryBlender)); - sBerryBlenderData->mainState = 0; - sBerryBlenderData->field_10C = 0; + sBerryBlender->mainState = 0; + sBerryBlender->unk1 = 0; for (i = 0; i < BLENDER_MAX_PLAYERS; i++) - sBerryBlenderData->chosenItemId[i] = ITEM_NONE; + sBerryBlender->chosenItemId[i] = ITEM_NONE; - Blender_SetPlayerNamesLocal(gSpecialVar_0x8004); + InitLocalPlayers(gSpecialVar_0x8004); if (gSpecialVar_0x8004 == 0) - SetMainCallback2(sub_8080018); + SetMainCallback2(CB2_StartBlenderLink); else - SetMainCallback2(sub_80808D4); + SetMainCallback2(CB2_StartBlenderLocal); } -static void sub_8080018(void) +static void CB2_StartBlenderLink(void) { s32 i, j; - switch (sBerryBlenderData->mainState) + switch (sBerryBlender->mainState) { case 0: - sub_8080588(); + InitBlenderBgs(); gLinkType = LINKTYPE_BERRY_BLENDER; - sBerryBlenderData->field_72 = 0; + sBerryBlender->slowdownTimer = 0; for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - sBerryBlenderData->field_64[i] = 0; - for (j = 0; j < 3; j++) + sBerryBlender->playerContinueResponses[i] = 0; + for (j = 0; j < NUM_SCORE_TYPES; j++) { - sBerryBlenderData->scores[i][j] = 0; + sBerryBlender->scores[i][j] = 0; } } - sBerryBlenderData->playAgainState = 0; - sBerryBlenderData->max_RPM = 0; - sBerryBlenderData->loadGfxState = 0; - sBerryBlenderData->mainState++; + sBerryBlender->playAgainState = 0; + sBerryBlender->maxRPM = 0; + sBerryBlender->loadGfxState = 0; + sBerryBlender->mainState++; break; case 1: if (LoadBerryBlenderGfx()) { - sBerryBlenderData->mainState++; - sub_8082D28(); + sBerryBlender->mainState++; + UpdateBlenderCenter(); } break; case 2: for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - sBerryBlenderData->syncArrowSprite2Ids[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); - StartSpriteAnim(&gSprites[sBerryBlenderData->syncArrowSprite2Ids[i]], i + 8); + sBerryBlender->playerArrowSpriteIds2[i] = CreateSprite(&sSpriteTemplate_PlayerArrow, sPlayerArrowPos[i][0], sPlayerArrowPos[i][1], 1); + StartSpriteAnim(&gSprites[sBerryBlender->playerArrowSpriteIds2[i]], i + 8); } - if (gReceivedRemoteLinkPlayers != 0 && gWirelessCommType) + if (gReceivedRemoteLinkPlayers && gWirelessCommType) { LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); } - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; break; case 3: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; break; case 4: - sub_807F9D0(); + DrawBlenderBg(); if (!gPaletteFade.active) { - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; } break; case 5: - Blender_PrintText(&sBerryBlenderData->textState, sText_CommunicationStandby, 0); - sBerryBlenderData->mainState = 8; - sBerryBlenderData->framesToWait = 0; + Blender_PrintText(&sBerryBlender->textState, sText_CommunicationStandby, 0); + sBerryBlender->mainState = 8; + sBerryBlender->framesToWait = 0; break; case 8: - sBerryBlenderData->mainState++; - sBerryBlenderData->field_114 = 0; - Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[0], gSpecialVar_ItemId); - memcpy(gBlockSendBuffer, &sBerryBlenderData->blendedBerries[0], sizeof(struct BlenderBerry)); + // Send berry choice to link partners + sBerryBlender->mainState++; + sBerryBlender->playerToThrowBerry = 0; + ConvertItemToBlenderBerry(&sBerryBlender->blendedBerries[0], gSpecialVar_ItemId); + memcpy(gBlockSendBuffer, &sBerryBlender->blendedBerries[0], sizeof(struct BlenderBerry)); SetLinkStandbyCallback(); - sBerryBlenderData->framesToWait = 0; + sBerryBlender->framesToWait = 0; break; case 9: if (IsLinkTaskFinished()) @@ -1239,122 +1357,130 @@ static void sub_8080018(void) ResetBlockReceivedFlags(); if (GetMultiplayerId() == 0) SendBlockRequest(4); - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; } break; case 10: - if (++sBerryBlenderData->framesToWait > 20) + if (++sBerryBlender->framesToWait > 20) { + // Wait for partners' berries ClearDialogWindowAndFrameToTransparent(4, TRUE); if (GetBlockReceivedStatus() == GetLinkPlayerCountAsBitFlags()) { for (i = 0; i < GetLinkPlayerCount(); i++) { - memcpy(&sBerryBlenderData->blendedBerries[i], &gBlockRecvBuffer[i][0], sizeof(struct BlenderBerry)); - sBerryBlenderData->chosenItemId[i] = sBerryBlenderData->blendedBerries[i].itemId; + memcpy(&sBerryBlender->blendedBerries[i], &gBlockRecvBuffer[i][0], sizeof(struct BlenderBerry)); + sBerryBlender->chosenItemId[i] = sBerryBlender->blendedBerries[i].itemId; } ResetBlockReceivedFlags(); - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; } } break; case 11: - sBerryBlenderData->playersNo = GetLinkPlayerCount(); + sBerryBlender->numPlayers = GetLinkPlayerCount(); + // Throw 1 player's berry in for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - if (sBerryBlenderData->field_114 == sUnknown_083399D0[sBerryBlenderData->playersNo - 2][i]) + if (sBerryBlender->playerToThrowBerry == sPlayerIdMap[sBerryBlender->numPlayers - 2][i]) { - sub_807FD90(sBerryBlenderData->chosenItemId[sBerryBlenderData->field_114], i); + CreateBerrySprite(sBerryBlender->chosenItemId[sBerryBlender->playerToThrowBerry], i); break; } } - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->mainState++; - sBerryBlenderData->field_114++; + sBerryBlender->framesToWait = 0; + sBerryBlender->mainState++; + sBerryBlender->playerToThrowBerry++; break; case 12: - if (++sBerryBlenderData->framesToWait > 60) + if (++sBerryBlender->framesToWait > 60) { - if (sBerryBlenderData->field_114 >= sBerryBlenderData->playersNo) + if (sBerryBlender->playerToThrowBerry >= sBerryBlender->numPlayers) { - sBerryBlenderData->mainState++; - sBerryBlenderData->arrowPos = sUnknown_083399DC[sUnknown_083399E4[sBerryBlenderData->playersNo - 2]] - 22528; + // Finished throwing berries in + sBerryBlender->mainState++; + sBerryBlender->arrowPos = sArrowStartPos[sArrowStartPosIds[sBerryBlender->numPlayers - 2]] - ARROW_FALL_ROTATION; } else { - sBerryBlenderData->mainState--; + // Haven't finished throwing berries in, go back to prev step + sBerryBlender->mainState--; } - sBerryBlenderData->framesToWait = 0; + sBerryBlender->framesToWait = 0; } break; case 13: if (IsLinkTaskFinished()) { - sBerryBlenderData->mainState++; - sub_8082CB4(&sBerryBlenderData->bgAffineSrc); - PlaySE(SE_RU_HYUU); + sBerryBlender->mainState++; + DrawBlenderCenter(&sBerryBlender->bgAffineSrc); + PlaySE(SE_FALL); ShowBg(2); } break; case 14: SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); - sBerryBlenderData->arrowPos += 0x200; - sBerryBlenderData->field_11A += 4; - if (sBerryBlenderData->field_11A > 0xFF) + sBerryBlender->arrowPos += 0x200; + sBerryBlender->centerScale += 4; + if (sBerryBlender->centerScale > 255) { SetGpuRegBits(REG_OFFSET_BG2CNT, 2); - sBerryBlenderData->mainState++; - sBerryBlenderData->field_11A = 0x100; - sBerryBlenderData->arrowPos = sUnknown_083399DC[sUnknown_083399E4[sBerryBlenderData->playersNo - 2]]; - sBerryBlenderData->framesToWait = 0; - PlaySE(SE_TRACK_DOOR); - sub_808074C(); - Blender_PrintPlayerNames(); + sBerryBlender->mainState++; + sBerryBlender->centerScale = 256; + sBerryBlender->arrowPos = sArrowStartPos[sArrowStartPosIds[sBerryBlender->numPlayers - 2]]; + sBerryBlender->framesToWait = 0; + PlaySE(SE_TRUCK_DOOR); + SetPlayerIdMaps(); + PrintPlayerNames(); } - sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + DrawBlenderCenter(&sBerryBlender->bgAffineSrc); break; case 15: - if (sub_8083380()) + if (UpdateBlenderLandScreenShake()) { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->mainState++; + sBerryBlender->framesToWait = 0; + sBerryBlender->mainState++; } - sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + DrawBlenderCenter(&sBerryBlender->bgAffineSrc); break; case 16: - CreateSprite(&sUnknown_08339C2C, 120, -16, 3); - sBerryBlenderData->mainState++; + CreateSprite(&sSpriteTemplate_CountdownNumbers, 120, -16, 3); + sBerryBlender->mainState++; + break; + case 17: + // Wait here for the countdown + // State is progressed in SpriteCB_Start break; case 18: - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; break; case 19: SetLinkStandbyCallback(); - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; break; case 20: if (IsLinkTaskFinished()) { - sub_800A418(); - sBerryBlenderData->mainState++; + SetBerryBlenderLinkCallback(); + sBerryBlender->mainState++; } break; case 21: - sBerryBlenderData->field_4C = 128; - sBerryBlenderData->gameFrameTime = 0; - SetMainCallback2(sub_8081898); + sBerryBlender->speed = MIN_ARROW_SPEED; + sBerryBlender->gameFrameTime = 0; + SetMainCallback2(CB2_PlayBlender); if (GetCurrentMapMusic() != MUS_CYCLING) { - sBerryBlenderData->field_154 = GetCurrentMapMusic(); + sBerryBlender->savedMusic = GetCurrentMapMusic(); } PlayBGM(MUS_CYCLING); break; } - Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y); + Blender_DummiedOutFunc(sBerryBlender->bg_X, sBerryBlender->bg_Y); RunTasks(); AnimateSprites(); BuildOamBuffer(); @@ -1362,7 +1488,7 @@ static void sub_8080018(void) UpdatePaletteFade(); } -static void sub_8080588(void) +static void InitBlenderBgs(void) { SetGpuReg(REG_OFFSET_DISPCNT, 0); @@ -1370,47 +1496,47 @@ static void sub_8080588(void) FreeAllSpritePalettes(); ResetTasks(); - SetVBlankCallback(VBlankCB0_BerryBlender); + SetVBlankCallback(VBlankCB_BerryBlender); ResetBgsAndClearDma3BusyFlags(0); - InitBgsFromTemplates(1, sBerryBlenderBgTemplates, ARRAY_COUNT(sBerryBlenderBgTemplates)); + InitBgsFromTemplates(1, sBgTemplates, ARRAY_COUNT(sBgTemplates)); - SetBgTilemapBuffer(1, sBerryBlenderData->tilemapBuffers[0]); - SetBgTilemapBuffer(2, sBerryBlenderData->tilemapBuffers[1]); + SetBgTilemapBuffer(1, sBerryBlender->tilemapBuffers[0]); + SetBgTilemapBuffer(2, sBerryBlender->tilemapBuffers[1]); LoadUserWindowBorderGfx(0, 1, 0xD0); LoadMessageBoxGfx(0, 0x14, 0xF0); InitBerryBlenderWindows(); - sBerryBlenderData->field_44 = 0; - sBerryBlenderData->field_4C = 0; - sBerryBlenderData->arrowPos = 0; - sBerryBlenderData->max_RPM = 0; - sBerryBlenderData->bg_X = 0; - sBerryBlenderData->bg_Y = 0; + sBerryBlender->unk0 = 0; + sBerryBlender->speed = 0; + sBerryBlender->arrowPos = 0; + sBerryBlender->maxRPM = 0; + sBerryBlender->bg_X = 0; + sBerryBlender->bg_Y = 0; } -static u8 sub_8080624(u16 arrowPos, u8 playerId) +static u8 GetArrowProximity(u16 arrowPos, u8 playerId) { - u32 var1 = (arrowPos / 0x100) + 0x18; - u8 arrID = sBerryBlenderData->field_96[playerId]; - u32 var2 = sUnknown_083399E7[arrID]; + u32 pos = (arrowPos / 256) + 24; + u8 arrowId = sBerryBlender->playerIdToArrowId[playerId]; + u32 hitRangeStart = sArrowHitRangeStart[arrowId]; - if (var1 >= var2 && var1 < var2 + 0x30) + if (pos >= hitRangeStart && pos < hitRangeStart + 48) { - if (var1 >= var2 + 20 && var1 < var2 + 28) - return 2; + if (pos >= hitRangeStart + 20 && pos < hitRangeStart + 28) + return PROXIMITY_BEST; else - return 1; + return PROXIMITY_GOOD; } - return 0; + return PROXIMITY_MISS; } -static void Blender_SetOpponentsBerryData(u16 playerBerryItemId, u8 playersNum, struct BlenderBerry* playerBerry) +static void SetOpponentsBerryData(u16 playerBerryItemId, u8 playersNum, struct BlenderBerry* playerBerry) { u16 opponentSetId = 0; u16 opponentBerryId; - u16 var; + u16 berryMasterDiff; u16 i; if (playerBerryItemId == ITEM_ENIGMA_BERRY) @@ -1420,70 +1546,73 @@ static void Blender_SetOpponentsBerryData(u16 playerBerryItemId, u8 playersNum, if (playerBerry->flavors[opponentSetId] > playerBerry->flavors[i]) opponentSetId = i; } - opponentSetId += 5; + opponentSetId += NUM_NPC_BERRIES; } else { - opponentSetId = playerBerryItemId - FIRST_BERRY_INDEX; - if (opponentSetId >= 5) - opponentSetId = (opponentSetId % 5) + 5; + opponentSetId = ITEM_TO_BERRY(playerBerryItemId) - 1; + if (opponentSetId >= NUM_NPC_BERRIES) + opponentSetId = (opponentSetId % NUM_NPC_BERRIES) + NUM_NPC_BERRIES; } for (i = 0; i < playersNum - 1; i++) { opponentBerryId = sOpponentBerrySets[opponentSetId][i]; - var = playerBerryItemId - 163; + berryMasterDiff = ITEM_TO_BERRY(playerBerryItemId) - ITEM_TO_BERRY(ITEM_SPELON_BERRY); if (!FlagGet(FLAG_HIDE_LILYCOVE_CONTEST_HALL_BLEND_MASTER) && gSpecialVar_0x8004 == 1) { - opponentSetId %= 5; - opponentBerryId = sSpecialOpponentBerrySets[opponentSetId]; - if (var <= 4) - opponentBerryId -= 5; + opponentSetId %= ARRAY_COUNT(sBerryMasterBerries); + opponentBerryId = sBerryMasterBerries[opponentSetId]; + + // If the player's berry is any of the Berry Master's berries, + // then use the next lower set of berries + if (berryMasterDiff < ARRAY_COUNT(sBerryMasterBerries)) + opponentBerryId -= ARRAY_COUNT(sBerryMasterBerries); } - Blender_SetParticipantBerryData(i + 1, opponentBerryId + FIRST_BERRY_INDEX); + SetPlayerBerryData(i + 1, opponentBerryId + FIRST_BERRY_INDEX); } } -static void sub_808074C(void) +static void SetPlayerIdMaps(void) { s32 i, j; for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - sBerryBlenderData->field_96[i] = 0xFF; - sBerryBlenderData->field_8E[i] = sUnknown_083399D0[sBerryBlenderData->playersNo - 2][i]; + sBerryBlender->playerIdToArrowId[i] = NO_PLAYER; + sBerryBlender->arrowIdToPlayerId[i] = sPlayerIdMap[sBerryBlender->numPlayers - 2][i]; } for (j = 0; j < BLENDER_MAX_PLAYERS; j++) { for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - if (sBerryBlenderData->field_8E[i] == j) - sBerryBlenderData->field_96[j] = i; + if (sBerryBlender->arrowIdToPlayerId[i] == j) + sBerryBlender->playerIdToArrowId[j] = i; } } } -static void Blender_PrintPlayerNames(void) +static void PrintPlayerNames(void) { s32 i, xPos; - u32 multiplayerId = 0; + u32 playerId = 0; u8 text[20]; if (gReceivedRemoteLinkPlayers) - multiplayerId = GetMultiplayerId(); + playerId = GetMultiplayerId(); for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - if (sBerryBlenderData->field_8E[i] != 0xFF) + if (sBerryBlender->arrowIdToPlayerId[i] != NO_PLAYER) { - sBerryBlenderData->syncArrowSpriteIds[sBerryBlenderData->field_8E[i]] = sBerryBlenderData->syncArrowSprite2Ids[i]; - StartSpriteAnim(&gSprites[sBerryBlenderData->syncArrowSpriteIds[sBerryBlenderData->field_8E[i]]], i); + sBerryBlender->playerArrowSpriteIds[sBerryBlender->arrowIdToPlayerId[i]] = sBerryBlender->playerArrowSpriteIds2[i]; + StartSpriteAnim(&gSprites[sBerryBlender->playerArrowSpriteIds[sBerryBlender->arrowIdToPlayerId[i]]], i); text[0] = EOS; - StringCopy(text, gLinkPlayers[sBerryBlenderData->field_8E[i]].name); + StringCopy(text, gLinkPlayers[sBerryBlender->arrowIdToPlayerId[i]].name); xPos = GetStringCenterAlignXOffset(1, text, 0x38); - if (multiplayerId == sBerryBlenderData->field_8E[i]) - Blender_AddTextPrinter(i, text, xPos, 1, 0, 2); + if (playerId == sBerryBlender->arrowIdToPlayerId[i]) + Blender_AddTextPrinter(i, text, xPos, 1, 0, 2); // Highlight player's name in red else Blender_AddTextPrinter(i, text, xPos, 1, 0, 1); @@ -1493,167 +1622,174 @@ static void Blender_PrintPlayerNames(void) } } -static void sub_80808D4(void) +static void CB2_StartBlenderLocal(void) { s32 i, j; - switch (sBerryBlenderData->mainState) + switch (sBerryBlender->mainState) { case 0: SetWirelessCommType0(); - sub_8080588(); - Blender_SetParticipantBerryData(0, gSpecialVar_ItemId); - Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[0], gSpecialVar_ItemId); - Blender_SetOpponentsBerryData(gSpecialVar_ItemId, sBerryBlenderData->playersNo, &sBerryBlenderData->blendedBerries[0]); + InitBlenderBgs(); + SetPlayerBerryData(0, gSpecialVar_ItemId); + ConvertItemToBlenderBerry(&sBerryBlender->blendedBerries[0], gSpecialVar_ItemId); + SetOpponentsBerryData(gSpecialVar_ItemId, sBerryBlender->numPlayers, &sBerryBlender->blendedBerries[0]); for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - sBerryBlenderData->field_64[i] = 0; - for (j = 0; j < 3; j++) + sBerryBlender->playerContinueResponses[i] = 0; + for (j = 0; j < NUM_SCORE_TYPES; j++) { - sBerryBlenderData->scores[i][j] = 0; + sBerryBlender->scores[i][j] = 0; } } - sBerryBlenderData->playAgainState = 0; - sBerryBlenderData->loadGfxState = 0; + sBerryBlender->playAgainState = 0; + sBerryBlender->loadGfxState = 0; gLinkType = LINKTYPE_BERRY_BLENDER; - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; break; case 1: if (LoadBerryBlenderGfx()) { - sBerryBlenderData->mainState++; - sub_8082D28(); + sBerryBlender->mainState++; + UpdateBlenderCenter(); } break; case 2: for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - sBerryBlenderData->syncArrowSprite2Ids[i] = CreateSprite(&sBlenderSyncArrow_SpriteTemplate, sBlenderSyncArrowsPos[i][0], sBlenderSyncArrowsPos[i][1], 1); - StartSpriteAnim(&gSprites[sBerryBlenderData->syncArrowSprite2Ids[i]], i + 8); + sBerryBlender->playerArrowSpriteIds2[i] = CreateSprite(&sSpriteTemplate_PlayerArrow, sPlayerArrowPos[i][0], sPlayerArrowPos[i][1], 1); + StartSpriteAnim(&gSprites[sBerryBlender->playerArrowSpriteIds2[i]], i + 8); } - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; break; case 3: BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); - sBerryBlenderData->mainState++; - sBerryBlenderData->framesToWait = 0; + sBerryBlender->mainState++; + sBerryBlender->framesToWait = 0; break; case 4: - if (++sBerryBlenderData->framesToWait == 2) - sub_807F9D0(); + if (++sBerryBlender->framesToWait == 2) + DrawBlenderBg(); if (!gPaletteFade.active) - sBerryBlenderData->mainState = 8; + sBerryBlender->mainState = 8; break; case 8: - sBerryBlenderData->mainState = 11; - sBerryBlenderData->field_114 = 0; + sBerryBlender->mainState = 11; + sBerryBlender->playerToThrowBerry = 0; break; case 11: for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - u32 var = sUnknown_083399D0[sBerryBlenderData->playersNo - 2][i]; - if (sBerryBlenderData->field_114 == var) + // Throw 1 player's berry in + u32 playerId = sPlayerIdMap[sBerryBlender->numPlayers - 2][i]; + if (sBerryBlender->playerToThrowBerry == playerId) { - sub_807FD90(sBerryBlenderData->chosenItemId[sBerryBlenderData->field_114], i); + CreateBerrySprite(sBerryBlender->chosenItemId[sBerryBlender->playerToThrowBerry], i); break; } } - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->mainState++; - sBerryBlenderData->field_114++; + sBerryBlender->framesToWait = 0; + sBerryBlender->mainState++; + sBerryBlender->playerToThrowBerry++; break; case 12: - if (++sBerryBlenderData->framesToWait > 60) + if (++sBerryBlender->framesToWait > 60) { - if (sBerryBlenderData->field_114 >= sBerryBlenderData->playersNo) + if (sBerryBlender->playerToThrowBerry >= sBerryBlender->numPlayers) { - sBerryBlenderData->arrowPos = sUnknown_083399DC[sUnknown_083399E4[sBerryBlenderData->playersNo - 2]] - 22528; - sBerryBlenderData->mainState++; + // Finished throwing berries in + sBerryBlender->arrowPos = sArrowStartPos[sArrowStartPosIds[sBerryBlender->numPlayers - 2]] - ARROW_FALL_ROTATION; + sBerryBlender->mainState++; } else { - sBerryBlenderData->mainState--; + // Haven't finished throwing berries in, go back to prev step + sBerryBlender->mainState--; } - sBerryBlenderData->framesToWait = 0; + sBerryBlender->framesToWait = 0; } break; case 13: - sBerryBlenderData->mainState++; - sub_808074C(); - PlaySE(SE_RU_HYUU); - sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + sBerryBlender->mainState++; + SetPlayerIdMaps(); + PlaySE(SE_FALL); + DrawBlenderCenter(&sBerryBlender->bgAffineSrc); ShowBg(2); break; case 14: SetGpuRegBits(REG_OFFSET_DISPCNT, DISPCNT_BG2_ON); - sBerryBlenderData->arrowPos += 0x200; - sBerryBlenderData->field_11A += 4; - if (sBerryBlenderData->field_11A > 0xFF) + sBerryBlender->arrowPos += 0x200; + sBerryBlender->centerScale += 4; + if (sBerryBlender->centerScale > 255) { - sBerryBlenderData->mainState++; - sBerryBlenderData->field_11A = 0x100; - sBerryBlenderData->arrowPos = sUnknown_083399DC[sUnknown_083399E4[sBerryBlenderData->playersNo - 2]]; + sBerryBlender->mainState++; + sBerryBlender->centerScale = 256; + sBerryBlender->arrowPos = sArrowStartPos[sArrowStartPosIds[sBerryBlender->numPlayers - 2]]; SetGpuRegBits(REG_OFFSET_BG2CNT, 2); - sBerryBlenderData->framesToWait = 0; - PlaySE(SE_TRACK_DOOR); - Blender_PrintPlayerNames(); + sBerryBlender->framesToWait = 0; + PlaySE(SE_TRUCK_DOOR); + PrintPlayerNames(); } - sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + DrawBlenderCenter(&sBerryBlender->bgAffineSrc); break; case 15: - if (sub_8083380()) + if (UpdateBlenderLandScreenShake()) { - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; } - sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + DrawBlenderCenter(&sBerryBlender->bgAffineSrc); break; case 16: - CreateSprite(&sUnknown_08339C2C, 120, -16, 3); - sBerryBlenderData->mainState++; + CreateSprite(&sSpriteTemplate_CountdownNumbers, 120, -16, 3); + sBerryBlender->mainState++; + break; + case 17: + // Wait here for the countdown + // State is progressed in SpriteCB_Start break; case 18: - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; break; case 19: - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; break; case 20: - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; break; case 21: - sub_8080DF8(); - sBerryBlenderData->field_4C = 0x80; - sBerryBlenderData->gameFrameTime = 0; - sBerryBlenderData->field_123 = 0; - sBerryBlenderData->field_72 = 0; - SetMainCallback2(sub_8081898); + ResetLinkCmds(); + sBerryBlender->speed = MIN_ARROW_SPEED; + sBerryBlender->gameFrameTime = 0; + sBerryBlender->perfectOpponents = FALSE; + sBerryBlender->slowdownTimer = 0; + SetMainCallback2(CB2_PlayBlender); if (gSpecialVar_0x8004 == 1) { if (!FlagGet(FLAG_HIDE_LILYCOVE_CONTEST_HALL_BLEND_MASTER)) - sBerryBlenderData->field_120[0] = CreateTask(sub_8081224, 10); + sBerryBlender->opponentTaskIds[0] = CreateTask(Task_HandleBerryMaster, 10); else - sBerryBlenderData->field_120[0] = CreateTask(sUnknown_083399EC[0], 10); + sBerryBlender->opponentTaskIds[0] = CreateTask(sLocalOpponentTasks[0], 10); } if (gSpecialVar_0x8004 > 1) { for (i = 0; i < gSpecialVar_0x8004; i++) - sBerryBlenderData->field_120[i] = CreateTask(sUnknown_083399EC[i], 10 + i); + sBerryBlender->opponentTaskIds[i] = CreateTask(sLocalOpponentTasks[i], 10 + i); } if (GetCurrentMapMusic() != MUS_CYCLING) - sBerryBlenderData->field_154 = GetCurrentMapMusic(); + sBerryBlender->savedMusic = GetCurrentMapMusic(); PlayBGM(MUS_CYCLING); - PlaySE(SE_MOTER); - Blender_ControlHitPitch(); + PlaySE(SE_BERRY_BLENDER); + UpdateHitPitch(); break; } - Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y); + Blender_DummiedOutFunc(sBerryBlender->bg_X, sBerryBlender->bg_Y); RunTasks(); AnimateSprites(); BuildOamBuffer(); @@ -1661,410 +1797,433 @@ static void sub_80808D4(void) UpdatePaletteFade(); } -static void sub_8080DF8(void) +static void ResetLinkCmds(void) { s32 i; - for (i = 0; i < CMD_LENGTH / 2; i++) + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - gSendCmd[0] = 0; - gSendCmd[2] = 0; - gRecvCmds[i][0] = 0; - gRecvCmds[i][2] = 0; + gSendCmd[BLENDER_COMM_INPUT_STATE] = 0; + gSendCmd[BLENDER_COMM_SCORE] = 0; + gRecvCmds[i][BLENDER_COMM_INPUT_STATE] = 0; + gRecvCmds[i][BLENDER_COMM_SCORE] = 0; } } -static void sub_8080E20(u8 taskId) +#define tTimer data[0] +#define tDelay data[1] +#define tPlayerId data[2] + +static void Task_OpponentMiss(u8 taskId) { - if(++gTasks[taskId].data[0] > gTasks[taskId].data[1]) + if(++gTasks[taskId].tTimer > gTasks[taskId].tDelay) { - gRecvCmds[gTasks[taskId].data[2]][2] = 0x2345; + gRecvCmds[gTasks[taskId].tPlayerId][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_MISS; DestroyTask(taskId); } } -static void sub_8080E6C(u8 a0, u8 a1) +static void CreateOpponentMissTask(u8 playerId, u8 delay) { - u8 taskId = CreateTask(sub_8080E20, 80); - gTasks[taskId].data[1] = a1; - gTasks[taskId].data[2] = a0; + u8 taskId = CreateTask(Task_OpponentMiss, 80); + gTasks[taskId].tDelay = delay; + gTasks[taskId].tPlayerId = playerId; } -static void sub_8080EA4(u8 taskId) +#undef tTimer +#undef tDelay +#undef tPlayerId + +#define tDidInput data[0] + +static void Task_HandleOpponent1(u8 taskId) { - if (sub_8080624(sBerryBlenderData->arrowPos, 1) == 2) + if (GetArrowProximity(sBerryBlender->arrowPos, 1) == PROXIMITY_BEST) { - if (gTasks[taskId].data[0] == 0) + if (!gTasks[taskId].tDidInput) { - if (sBerryBlenderData->field_123 == 0) + if (!sBerryBlender->perfectOpponents) { u8 rand = Random() / 655; - if (sBerryBlenderData->field_4C < 500) + if (sBerryBlender->speed < 500) { if (rand > 75) - gRecvCmds[1][2] = 0x4523; + gRecvCmds[1][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_BEST; else - gRecvCmds[1][2] = 0x5432; + gRecvCmds[1][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD; - gRecvCmds[1][2] = 0x5432; + // BUG: Overrwrote above assignment. Opponent 1 can't get Best at low speed + gRecvCmds[1][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD; } - else if (sBerryBlenderData->field_4C < 1500) + else if (sBerryBlender->speed < 1500) { if (rand > 80) { - gRecvCmds[1][2] = 0x4523; + gRecvCmds[1][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_BEST; } else { u8 value = rand - 21; if (value < 60) - gRecvCmds[1][2] = 0x5432; + gRecvCmds[1][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD; else if (rand < 10) - sub_8080E6C(1, 5); + CreateOpponentMissTask(1, 5); } } else if (rand <= 90) { u8 value = rand - 71; if (value < 20) - gRecvCmds[1][2] = 0x5432; + gRecvCmds[1][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD; else if (rand < 30) - sub_8080E6C(1, 5); + CreateOpponentMissTask(1, 5); } else { - gRecvCmds[1][2] = 0x4523; + gRecvCmds[1][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_BEST; } } else { - gRecvCmds[1][2] = 0x4523; + gRecvCmds[1][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_BEST; } - gTasks[taskId].data[0] = 1; + gTasks[taskId].tDidInput = TRUE; } } else { - gTasks[taskId].data[0] = 0; + gTasks[taskId].tDidInput = FALSE; } } -static void sub_8080FD0(u8 taskId) +static void Task_HandleOpponent2(u8 taskId) { - u32 var1 = (sBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; - u32 var2 = sBerryBlenderData->field_96[2] & 0xFF; - if ((var1 >> 8) > sUnknown_083399E7[var2] + 20 && (var1 >> 8) < sUnknown_083399E7[var2] + 40) + u32 var1 = (sBerryBlender->arrowPos + 0x1800) & 0xFFFF; + u32 arrowId = sBerryBlender->playerIdToArrowId[2] & 0xFF; + if ((var1 >> 8) > sArrowHitRangeStart[arrowId] + 20 && (var1 >> 8) < sArrowHitRangeStart[arrowId] + 40) { - if (gTasks[taskId].data[0] == 0) + if (!gTasks[taskId].tDidInput) { - if (sBerryBlenderData->field_123 == 0) + if (!sBerryBlender->perfectOpponents) { u8 rand = Random() / 655; - if (sBerryBlenderData->field_4C < 500) + if (sBerryBlender->speed < 500) { if (rand > 66) - gRecvCmds[2][2] = 0x4523; + gRecvCmds[2][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_BEST; else - gRecvCmds[2][2] = 0x5432; + gRecvCmds[2][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD; } else { u8 value; if (rand > 65) - gRecvCmds[2][2] = 0x4523; + gRecvCmds[2][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_BEST; value = rand - 41; if (value < 25) - gRecvCmds[2][2] = 0x5432; + gRecvCmds[2][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD; if (rand < 10) - sub_8080E6C(2, 5); + CreateOpponentMissTask(2, 5); } - gTasks[taskId].data[0] = 1; + gTasks[taskId].tDidInput = TRUE; } else { - gRecvCmds[2][2] = 0x4523; - gTasks[taskId].data[0] = 1; + gRecvCmds[2][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_BEST; + gTasks[taskId].tDidInput = TRUE; } } } else { - gTasks[taskId].data[0] = 0; + gTasks[taskId].tDidInput = FALSE; } } -static void sub_80810F8(u8 taskId) +static void Task_HandleOpponent3(u8 taskId) { - u32 var1, var2; - - var1 = (sBerryBlenderData->arrowPos + 0x1800) & 0xFFFF; - var2 = sBerryBlenderData->field_96[3] & 0xFF; - if ((var1 >> 8) > sUnknown_083399E7[var2] + 20 && (var1 >> 8) < sUnknown_083399E7[var2] + 40) + u32 var1 = (sBerryBlender->arrowPos + 0x1800) & 0xFFFF; + u32 arrowId = sBerryBlender->playerIdToArrowId[3] & 0xFF; + if ((var1 >> 8) > sArrowHitRangeStart[arrowId] + 20 && (var1 >> 8) < sArrowHitRangeStart[arrowId] + 40) { if (gTasks[taskId].data[0] == 0) { - if (sBerryBlenderData->field_123 == 0) + if (!sBerryBlender->perfectOpponents) { u8 rand = (Random() / 655); - if (sBerryBlenderData->field_4C < 500) + if (sBerryBlender->speed < 500) { if (rand > 88) - gRecvCmds[3][2] = 0x4523; + gRecvCmds[3][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_BEST; else - gRecvCmds[3][2] = 0x5432; + gRecvCmds[3][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD; } else { if (rand > 60) { - gRecvCmds[3][2] = 0x4523; + gRecvCmds[3][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_BEST; } else { s8 value = rand - 56; // makes me wonder what the original code was u8 value2 = value; if (value2 < 5) - gRecvCmds[3][2] = 0x5432; + gRecvCmds[3][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD; } if (rand < 5) - sub_8080E6C(3, 5); + CreateOpponentMissTask(3, 5); } - gTasks[taskId].data[0] = 1; + gTasks[taskId].tDidInput = TRUE; } else { - gRecvCmds[3][2] = 0x4523; - gTasks[taskId].data[0] = 1; + gRecvCmds[3][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_BEST; + gTasks[taskId].tDidInput = TRUE; } } } else { - gTasks[taskId].data[0] = 0; + gTasks[taskId].tDidInput = FALSE; } } -static void sub_8081224(u8 taskId) +static void Task_HandleBerryMaster(u8 taskId) { - if (sub_8080624(sBerryBlenderData->arrowPos, 1) == 2) + if (GetArrowProximity(sBerryBlender->arrowPos, 1) == PROXIMITY_BEST) { - if (gTasks[taskId].data[0] == 0) + if (!gTasks[taskId].tDidInput) { - gRecvCmds[1][2] = 0x4523; - gTasks[taskId].data[0] = 1; + gRecvCmds[1][BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_BEST; + gTasks[taskId].tDidInput = TRUE; } } else { - gTasks[taskId].data[0] = 0; + gTasks[taskId].tDidInput = FALSE; } } -static void sub_8081288(u16 a0, u8 a1) +#undef tDidInput + +static void CreateScoreSymbolSprite(u16 cmd, u8 arrowId) { u8 spriteId; - spriteId = CreateSprite(&sUnknown_08339B40, - sBlenderSyncArrowsPos[a1][0] - (10 * sUnknown_083399C0[a1][0]), - sBlenderSyncArrowsPos[a1][1] - (10 * sUnknown_083399C0[a1][1]), + spriteId = CreateSprite(&sSpriteTemplate_ScoreSymbols, + sPlayerArrowPos[arrowId][0] - (10 * sPlayerArrowQuadrant[arrowId][0]), + sPlayerArrowPos[arrowId][1] - (10 * sPlayerArrowQuadrant[arrowId][1]), 1); - if (a0 == 0x4523) + if (cmd == LINKCMD_BLENDER_SCORE_BEST) { - StartSpriteAnim(&gSprites[spriteId], 2); - gSprites[spriteId].callback = sub_8082F9C; - PlaySE(SE_RU_GASHIN); + StartSpriteAnim(&gSprites[spriteId], SCOREANIM_BEST_FLASH); + gSprites[spriteId].callback = SpriteCB_ScoreSymbolBest; + PlaySE(SE_ICE_STAIRS); } - else if (a0 == 0x5432) + else if (cmd == LINKCMD_BLENDER_SCORE_GOOD) { - StartSpriteAnim(&gSprites[spriteId], 0); - PlaySE(SE_SEIKAI); + StartSpriteAnim(&gSprites[spriteId], SCOREANIM_GOOD); + PlaySE(SE_SUCCESS); } - else if (a0 == 0x2345) + else if (cmd == LINKCMD_BLENDER_SCORE_MISS) { - StartSpriteAnim(&gSprites[spriteId], 1); - PlaySE(SE_HAZURE); + StartSpriteAnim(&gSprites[spriteId], SCOREANIM_MISS); + PlaySE(SE_FAILURE); } - sub_8082E84(); + CreateParticleSprites(); } -static void sub_8081370(u16 a0) +static void UpdateSpeedFromHit(u16 cmd) { - Blender_ControlHitPitch(); - switch (a0) + UpdateHitPitch(); + switch (cmd) { - case 0x4523: - if (sBerryBlenderData->field_4C < 1500) - sBerryBlenderData->field_4C += (0x180 / sUnknown_08339CC3[sBerryBlenderData->playersNo]); + case LINKCMD_BLENDER_SCORE_BEST: + if (sBerryBlender->speed < 1500) { + sBerryBlender->speed += (384 / sNumPlayersToSpeedDivisor[sBerryBlender->numPlayers]); + } else { - sBerryBlenderData->field_4C += (128 / sUnknown_08339CC3[sBerryBlenderData->playersNo]); - sub_80832BC(&sBerryBlenderData->bg_X, (sBerryBlenderData->field_4C / 100) - 10); - sub_80832BC(&sBerryBlenderData->bg_Y, (sBerryBlenderData->field_4C / 100) - 10); + sBerryBlender->speed += (128 / sNumPlayersToSpeedDivisor[sBerryBlender->numPlayers]); + ShakeBgCoordForHit(&sBerryBlender->bg_X, (sBerryBlender->speed / 100) - 10); + ShakeBgCoordForHit(&sBerryBlender->bg_Y, (sBerryBlender->speed / 100) - 10); } break; - case 0x5432: - if (sBerryBlenderData->field_4C < 1500) - sBerryBlenderData->field_4C += (0x100 / sUnknown_08339CC3[sBerryBlenderData->playersNo]); + case LINKCMD_BLENDER_SCORE_GOOD: + if (sBerryBlender->speed < 1500) + sBerryBlender->speed += (256 / sNumPlayersToSpeedDivisor[sBerryBlender->numPlayers]); break; - case 0x2345: - sBerryBlenderData->field_4C -= (0x100 / sUnknown_08339CC3[sBerryBlenderData->playersNo]); - if (sBerryBlenderData->field_4C < 0x80) - sBerryBlenderData->field_4C = 0x80; + case LINKCMD_BLENDER_SCORE_MISS: + sBerryBlender->speed -= (256 / sNumPlayersToSpeedDivisor[sBerryBlender->numPlayers]); + if (sBerryBlender->speed < MIN_ARROW_SPEED) + sBerryBlender->speed = MIN_ARROW_SPEED; break; } } -static bool32 sub_80814B0(u16 arg0, u16 arg1, u16 arg2) +// Return TRUE if the received command matches the corresponding Link or RFU command +static bool32 CheckRecvCmdMatches(u16 recvCmd, u16 linkCmd, u16 rfuCmd) { - if (gReceivedRemoteLinkPlayers != 0 && gWirelessCommType) + if (gReceivedRemoteLinkPlayers && gWirelessCommType) { - if ((arg0 & 0xFF00) == arg2) + if ((recvCmd & 0xFF00) == rfuCmd) return TRUE; } else { - if (arg0 == arg1) + if (recvCmd == linkCmd) return TRUE; } return FALSE; } -static void sub_80814F4(void) +static void UpdateOpponentScores(void) { s32 i; if (gSpecialVar_0x8004 != 0) { - if (gSendCmd[2] != 0) + // Local game, "send" players score to itself + if (gSendCmd[BLENDER_COMM_SCORE] != 0) { - gRecvCmds[0][2] = gSendCmd[2]; - gRecvCmds[0][0] = 0x4444; - gSendCmd[2] = 0; + gRecvCmds[0][BLENDER_COMM_SCORE] = gSendCmd[BLENDER_COMM_SCORE]; + gRecvCmds[0][BLENDER_COMM_INPUT_STATE] = LINKCMD_BLENDER_SEND_KEYS; + gSendCmd[BLENDER_COMM_SCORE] = 0; } - for (i = 1; i < 4; i++) + + // Local game, simulate NPCs sending keys + // Their actual inputs are handled by Task_HandleOpponent + for (i = 1; i < BLENDER_MAX_PLAYERS; i++) { - if (gRecvCmds[i][2] != 0) - gRecvCmds[i][0] = 0x4444; + if (gRecvCmds[i][BLENDER_COMM_SCORE] != 0) + gRecvCmds[i][BLENDER_COMM_INPUT_STATE] = LINKCMD_BLENDER_SEND_KEYS; } } - for (i = 0; i < sBerryBlenderData->playersNo; i++) + for (i = 0; i < sBerryBlender->numPlayers; i++) { - if (sub_80814B0(gRecvCmds[i][0], 0x4444, 0x4400)) + if (CheckRecvCmdMatches(gRecvCmds[i][BLENDER_COMM_INPUT_STATE], LINKCMD_BLENDER_SEND_KEYS, RFUCMD_BLENDER_SEND_KEYS)) { - u32 var = sBerryBlenderData->field_96[i]; - if (gRecvCmds[i][2] == 0x4523) + u32 arrowId = sBerryBlender->playerIdToArrowId[i]; + if (gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_BEST) { - sub_8081370(0x4523); - sBerryBlenderData->field_116 += (sBerryBlenderData->field_4C / 55); - if (sBerryBlenderData->field_116 >= 1000) - sBerryBlenderData->field_116 = 1000; - sub_8081288(0x4523, var); - sBerryBlenderData->scores[i][BLENDER_SCORE_BEST]++; + UpdateSpeedFromHit(LINKCMD_BLENDER_SCORE_BEST); + sBerryBlender->progressBarValue += (sBerryBlender->speed / 55); + if (sBerryBlender->progressBarValue >= MAX_PROGRESS_BAR) + sBerryBlender->progressBarValue = MAX_PROGRESS_BAR; + CreateScoreSymbolSprite(LINKCMD_BLENDER_SCORE_BEST, arrowId); + sBerryBlender->scores[i][SCORE_BEST]++; } - else if (gRecvCmds[i][2] == 0x5432) + else if (gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_GOOD) { - sub_8081370(0x5432); - sBerryBlenderData->field_116 += (sBerryBlenderData->field_4C / 70); - sub_8081288(0x5432, var); - sBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]++; + UpdateSpeedFromHit(LINKCMD_BLENDER_SCORE_GOOD); + sBerryBlender->progressBarValue += (sBerryBlender->speed / 70); + CreateScoreSymbolSprite(LINKCMD_BLENDER_SCORE_GOOD, arrowId); + sBerryBlender->scores[i][SCORE_GOOD]++; } - else if (gRecvCmds[i][2] == 0x2345) + else if (gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_MISS) { - sub_8081288(0x2345, var); - sub_8081370(0x2345); - if (sBerryBlenderData->scores[i][BLENDER_SCORE_MISS] < 999) - sBerryBlenderData->scores[i][BLENDER_SCORE_MISS]++; + CreateScoreSymbolSprite(LINKCMD_BLENDER_SCORE_MISS, arrowId); + UpdateSpeedFromHit(LINKCMD_BLENDER_SCORE_MISS); + if (sBerryBlender->scores[i][SCORE_MISS] < 999) + sBerryBlender->scores[i][SCORE_MISS]++; } - if (gRecvCmds[i][2] == 0x2345 || gRecvCmds[2][i] == 0x4523 || gRecvCmds[2][i] == 0x5432) // could be a bug, 2 and i are reversed + + // BUG: Should [i][BLENDER_COMM_SCORE] below, not [BLENDER_COMM_SCORE][i] + // As a result the music tempo updates if any player misses, but only if 1 specific player hits + if (gRecvCmds[i][BLENDER_COMM_SCORE] == LINKCMD_BLENDER_SCORE_MISS + || gRecvCmds[BLENDER_COMM_SCORE][i] == LINKCMD_BLENDER_SCORE_BEST + || gRecvCmds[BLENDER_COMM_SCORE][i] == LINKCMD_BLENDER_SCORE_GOOD) { - if (sBerryBlenderData->field_4C > 1500) - m4aMPlayTempoControl(&gMPlayInfo_BGM, ((sBerryBlenderData->field_4C - 750) / 20) + 256); + if (sBerryBlender->speed > 1500) + m4aMPlayTempoControl(&gMPlayInfo_BGM, ((sBerryBlender->speed - 750) / 20) + 256); else - m4aMPlayTempoControl(&gMPlayInfo_BGM, 0x100); + m4aMPlayTempoControl(&gMPlayInfo_BGM, 256); } } } if (gSpecialVar_0x8004 != 0) { - for (i = 0; i < sBerryBlenderData->playersNo; i++) + for (i = 0; i < sBerryBlender->numPlayers; i++) { - gRecvCmds[i][0] = 0; - gRecvCmds[i][2] = 0; + gRecvCmds[i][BLENDER_COMM_INPUT_STATE] = 0; + gRecvCmds[i][BLENDER_COMM_SCORE] = 0; } } } -static void sub_8081744(void) +static void HandlePlayerInput(void) { - u8 var2; - bool8 A_pressed = FALSE; + u8 arrowId; + bool8 pressedA = FALSE; u8 playerId = 0; - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) playerId = GetMultiplayerId(); - var2 = sBerryBlenderData->field_96[playerId]; + arrowId = sBerryBlender->playerIdToArrowId[playerId]; - if (sBerryBlenderData->gameEndState == 0) + if (sBerryBlender->gameEndState == 0) { - if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A && gMain.newKeys & A_BUTTON) + if (gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_L_EQUALS_A && JOY_NEW(A_BUTTON)) { - if ((gMain.heldKeysRaw & (A_BUTTON | L_BUTTON)) != (A_BUTTON | L_BUTTON)) - A_pressed = TRUE; + if (JOY_HELD_RAW(A_BUTTON | L_BUTTON) != (A_BUTTON | L_BUTTON)) + pressedA = TRUE; } - else if (gMain.newKeys & A_BUTTON) + else if (JOY_NEW(A_BUTTON)) { - A_pressed = TRUE; + pressedA = TRUE; } - if (A_pressed) + if (pressedA) { - u8 var3; - StartSpriteAnim(&gSprites[sBerryBlenderData->syncArrowSpriteIds[sBerryBlenderData->field_8E[var2]]], var2 + 4); - var3 = sub_8080624(sBerryBlenderData->arrowPos, playerId); + u8 proximity; + StartSpriteAnim(&gSprites[sBerryBlender->playerArrowSpriteIds[sBerryBlender->arrowIdToPlayerId[arrowId]]], arrowId + 4); + proximity = GetArrowProximity(sBerryBlender->arrowPos, playerId); - if (var3 == 2) - gSendCmd[2] = 0x4523; - else if (var3 == 1) - gSendCmd[2] = 0x5432; + if (proximity == PROXIMITY_BEST) + gSendCmd[BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_BEST; + else if (proximity == PROXIMITY_GOOD) + gSendCmd[BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_GOOD; else - gSendCmd[2] = 0x2345; + gSendCmd[BLENDER_COMM_SCORE] = LINKCMD_BLENDER_SCORE_MISS; } } - if (++sBerryBlenderData->field_72 > 5) + if (++sBerryBlender->slowdownTimer > 5) { - if (sBerryBlenderData->field_4C > 128) - sBerryBlenderData->field_4C--; - sBerryBlenderData->field_72 = 0; + if (sBerryBlender->speed > MIN_ARROW_SPEED) + sBerryBlender->speed--; + sBerryBlender->slowdownTimer = 0; } - if (gEnableContestDebugging && gMain.newKeys & L_BUTTON) - sBerryBlenderData->field_123 ^= 1; + + if (gEnableContestDebugging && JOY_NEW(L_BUTTON)) + sBerryBlender->perfectOpponents ^= 1; } -static void sub_8081898(void) +static void CB2_PlayBlender(void) { - sub_8082D28(); + UpdateBlenderCenter(); - if (sBerryBlenderData->gameFrameTime < (99 * 60 * 60) + (59 * 60)) // game time can't be longer than 99 minutes and 59 seconds, can't print 3 digits - sBerryBlenderData->gameFrameTime++; + if (sBerryBlender->gameFrameTime < (99 * 60 * 60) + (59 * 60)) // game time can't be longer than 99 minutes and 59 seconds, can't print 3 digits + sBerryBlender->gameFrameTime++; - sub_8081744(); - SetLinkDebugValues((u16)(sBerryBlenderData->field_4C), sBerryBlenderData->field_116); - sub_80814F4(); - sub_8083140(sBerryBlenderData->field_116, 1000); - sub_8083230(sBerryBlenderData->field_4C); - sub_808330C(); - sub_8082AD4(); - if (sBerryBlenderData->gameEndState == 0 && sBerryBlenderData->field_118 >= 1000) + HandlePlayerInput(); + SetLinkDebugValues((u16)(sBerryBlender->speed), sBerryBlender->progressBarValue); + UpdateOpponentScores(); + TryUpdateProgressBar(sBerryBlender->progressBarValue, MAX_PROGRESS_BAR); + UpdateRPM(sBerryBlender->speed); + RestoreBgCoords(); + ProcessLinkPlayerCmds(); + if (sBerryBlender->gameEndState == 0 && sBerryBlender->maxProgressBarValue >= MAX_PROGRESS_BAR) { - sBerryBlenderData->field_116 = 1000; - sBerryBlenderData->gameEndState = 1; - SetMainCallback2(CB2_HandleBlenderEndGame); + sBerryBlender->progressBarValue = MAX_PROGRESS_BAR; + sBerryBlender->gameEndState = 1; + SetMainCallback2(CB2_EndBlenderGame); } - Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y); + Blender_DummiedOutFunc(sBerryBlender->bg_X, sBerryBlender->bg_Y); RunTasks(); AnimateSprites(); BuildOamBuffer(); @@ -2077,362 +2236,380 @@ static void Blender_DummiedOutFunc(s16 a0, s16 a1) } -static bool8 sub_8081964(struct BlenderBerry* berries, u8 index1, u8 index2) +static bool8 AreBlenderBerriesSame(struct BlenderBerry* berries, u8 a, u8 b) { - if (berries[index1].itemId != berries[index2].itemId - || (StringCompare(berries[index1].name, berries[index2].name) == 0 - && (berries[index1].flavors[FLAVOR_SPICY] == berries[index2].flavors[FLAVOR_SPICY] - && berries[index1].flavors[FLAVOR_DRY] == berries[index2].flavors[FLAVOR_DRY] - && berries[index1].flavors[FLAVOR_SWEET] == berries[index2].flavors[FLAVOR_SWEET] - && berries[index1].flavors[FLAVOR_BITTER] == berries[index2].flavors[FLAVOR_BITTER] - && berries[index1].flavors[FLAVOR_SOUR] == berries[index2].flavors[FLAVOR_SOUR] - && berries[index1].smoothness == berries[index2].smoothness))) + // First check to itemId is pointless (and wrong anyway?), always false when this is called + // Only used to determine if two enigma berries are equivalent + if (berries[a].itemId != berries[b].itemId + || (StringCompare(berries[a].name, berries[b].name) == 0 + && (berries[a].flavors[FLAVOR_SPICY] == berries[b].flavors[FLAVOR_SPICY] + && berries[a].flavors[FLAVOR_DRY] == berries[b].flavors[FLAVOR_DRY] + && berries[a].flavors[FLAVOR_SWEET] == berries[b].flavors[FLAVOR_SWEET] + && berries[a].flavors[FLAVOR_BITTER] == berries[b].flavors[FLAVOR_BITTER] + && berries[a].flavors[FLAVOR_SOUR] == berries[b].flavors[FLAVOR_SOUR] + && berries[a].flavors[FLAVOR_COUNT] == berries[b].flavors[FLAVOR_COUNT]))) return TRUE; else return FALSE; } -static u32 Blender_GetPokeblockColor(struct BlenderBerry* berries, s16* a1, u8 playersNo, u8 a3) +static u32 CalculatePokeblockColor(struct BlenderBerry* berries, s16* _flavors, u8 numPlayers, u8 negativeFlavors) { - s16 vars[6]; - s32 i; - s32 r6; - u8 r2; + s16 flavors[FLAVOR_COUNT + 1]; + s32 i, j; + u8 numFlavors; - for (i = 0; i < 6; i++) - vars[i] = a1[i]; + for (i = 0; i < FLAVOR_COUNT + 1; i++) + flavors[i] = _flavors[i]; - r6 = 0; - for (i = 0; i < 5; i++) + j = 0; + for (i = 0; i < FLAVOR_COUNT; i++) { - if (vars[i] == 0) - r6++; + if (flavors[i] == 0) + j++; } - if (r6 == 5 || a3 > 3) - return 12; - for (i = 0; i < playersNo; i++) + + // If all flavors are 0, or at least 3 were negative/0 + // or if players used the same berry, color is black + if (j == 5 || negativeFlavors > 3) + return PBLOCK_CLR_BLACK; + + for (i = 0; i < numPlayers; i++) { - for (r6 = 0; r6 < playersNo; r6++) + for (j = 0; j < numPlayers; j++) { - if (berries[i].itemId == berries[r6].itemId && i != r6 - && (berries[i].itemId != ITEM_ENIGMA_BERRY || sub_8081964(berries, i, r6))) - return 12; + if (berries[i].itemId == berries[j].itemId && i != j + && (berries[i].itemId != ITEM_ENIGMA_BERRY || AreBlenderBerriesSame(berries, i, j))) + return PBLOCK_CLR_BLACK; } } - r2 = 0; - for (r2 = 0, i = 0; i < 5; i++) + + numFlavors = 0; + for (numFlavors = 0, i = 0; i < FLAVOR_COUNT; i++) { - if (vars[i] > 0) - r2++; + if (flavors[i] > 0) + numFlavors++; } - if (r2 > 3) - return 13; - if (r2 == 3) - return 11; - for (i = 0; i < 5; i++) + + // Check for special colors (White/Gray/Gold) + if (numFlavors > 3) + return PBLOCK_CLR_WHITE; + + if (numFlavors == 3) + return PBLOCK_CLR_GRAY; + + for (i = 0; i < FLAVOR_COUNT; i++) { - if (vars[i] > 50) - return 14; - } - if (r2 == 1 && vars[0] > 0) - return 1; - if (r2 == 1 && vars[1] > 0) - return 2; - if (r2 == 1 && vars[2] > 0) - return 3; - if (r2 == 1 && vars[3] > 0) - return 4; - if (r2 == 1 && vars[4] > 0) - return 5; - if (r2 == 2) - { - s32 var = 0; - for (i = 0; i < 5; i++) + if (flavors[i] > 50) + return PBLOCK_CLR_GOLD; + } + + // Only 1 flavor present, return corresponding color + if (numFlavors == 1 && flavors[FLAVOR_SPICY] > 0) + return PBLOCK_CLR_RED; + if (numFlavors == 1 && flavors[FLAVOR_DRY] > 0) + return PBLOCK_CLR_BLUE; + if (numFlavors == 1 && flavors[FLAVOR_SWEET] > 0) + return PBLOCK_CLR_PINK; + if (numFlavors == 1 && flavors[FLAVOR_BITTER] > 0) + return PBLOCK_CLR_GREEN; + if (numFlavors == 1 && flavors[FLAVOR_SOUR] > 0) + return PBLOCK_CLR_YELLOW; + + if (numFlavors == 2) + { + // Determine which 2 flavors are present + s32 idx = 0; + for (i = 0; i < FLAVOR_COUNT; i++) { - if (vars[i] > 0) - sUnknown_03000DF8[var++] = i; + if (flavors[i] > 0) + sPokeblockPresentFlavors[idx++] = i; } - if (vars[sUnknown_03000DF8[0]] >= vars[sUnknown_03000DF8[1]]) + // Use the stronger flavor to determine color + // The weaker flavor is returned in the upper 16 bits, but this is ignored in the color assignment + if (flavors[sPokeblockPresentFlavors[0]] >= flavors[sPokeblockPresentFlavors[1]]) { - if (sUnknown_03000DF8[0] == 0) - return (sUnknown_03000DF8[1] << 16) | 6; - if (sUnknown_03000DF8[0] == 1) - return (sUnknown_03000DF8[1] << 16) | 7; - if (sUnknown_03000DF8[0] == 2) - return (sUnknown_03000DF8[1] << 16) | 8; - if (sUnknown_03000DF8[0] == 3) - return (sUnknown_03000DF8[1] << 16) | 9; - if (sUnknown_03000DF8[0] == 4) - return (sUnknown_03000DF8[1] << 16) | 10; + if (sPokeblockPresentFlavors[0] == FLAVOR_SPICY) + return (sPokeblockPresentFlavors[1] << 16) | PBLOCK_CLR_PURPLE; + if (sPokeblockPresentFlavors[0] == FLAVOR_DRY) + return (sPokeblockPresentFlavors[1] << 16) | PBLOCK_CLR_INDIGO; + if (sPokeblockPresentFlavors[0] == FLAVOR_SWEET) + return (sPokeblockPresentFlavors[1] << 16) | PBLOCK_CLR_BROWN; + if (sPokeblockPresentFlavors[0] == FLAVOR_BITTER) + return (sPokeblockPresentFlavors[1] << 16) | PBLOCK_CLR_LITE_BLUE; + if (sPokeblockPresentFlavors[0] == FLAVOR_SOUR) + return (sPokeblockPresentFlavors[1] << 16) | PBLOCK_CLR_OLIVE; } else { - if (sUnknown_03000DF8[1] == 0) - return (sUnknown_03000DF8[0] << 16) | 6; - if (sUnknown_03000DF8[1] == 1) - return (sUnknown_03000DF8[0] << 16) | 7; - if (sUnknown_03000DF8[1] == 2) - return (sUnknown_03000DF8[0] << 16) | 8; - if (sUnknown_03000DF8[1] == 3) - return (sUnknown_03000DF8[0] << 16) | 9; - if (sUnknown_03000DF8[1] == 4) - return (sUnknown_03000DF8[0] << 16) | 10; + if (sPokeblockPresentFlavors[1] == FLAVOR_SPICY) + return (sPokeblockPresentFlavors[0] << 16) | PBLOCK_CLR_PURPLE; + if (sPokeblockPresentFlavors[1] == FLAVOR_DRY) + return (sPokeblockPresentFlavors[0] << 16) | PBLOCK_CLR_INDIGO; + if (sPokeblockPresentFlavors[1] == FLAVOR_SWEET) + return (sPokeblockPresentFlavors[0] << 16) | PBLOCK_CLR_BROWN; + if (sPokeblockPresentFlavors[1] == FLAVOR_BITTER) + return (sPokeblockPresentFlavors[0] << 16) | PBLOCK_CLR_LITE_BLUE; + if (sPokeblockPresentFlavors[1] == FLAVOR_SOUR) + return (sPokeblockPresentFlavors[0] << 16) | PBLOCK_CLR_OLIVE; } } - return 0; + return PBLOCK_CLR_NONE; } -static void sub_8081BB0(s16 value) +static void Debug_SetMaxRPMStage(s16 value) { - sUnknown_03000E04 = value; + sDebug_MaxRPMStage = value; } -static s16 sub_8081BBC(void) +// Unused +static s16 Debug_GetMaxRPMStage(void) { - return sUnknown_03000E04; + return sDebug_MaxRPMStage; } -static void sub_8081BC8(s16 value) +static void Debug_SetGameTimeStage(s16 value) { - sUnknown_03000E06 = value; + sDebug_GameTimeStage = value; } -static s16 sub_8081BD4(void) +// Unued +static s16 Debug_GetGameTimeStage(void) { - return sUnknown_03000E06; + return sDebug_GameTimeStage; } -#if MODERN -// TODO remove this as soon as the code below is understood -// add a UBFIX if required (code buggy?) -__attribute__((optimize("no-aggressive-loop-optimizations"))) -#endif -static void Blender_CalculatePokeblock(struct BlenderBerry *berries, struct Pokeblock *pokeblock, u8 playersNo, u8 *flavors, u16 maxRPM) +static void CalculatePokeblock(struct BlenderBerry *berries, struct Pokeblock *pokeblock, u8 numPlayers, u8 *flavors, u16 maxRPM) { s32 i, j; s32 multiuseVar, var2; - u8 var3; + u8 numNegatives; - for (i = 0; i < 6; i++) - sUnknown_03000DE8[i] = 0; + for (i = 0; i < FLAVOR_COUNT + 1; i++) + sPokeblockFlavors[i] = 0; - for (i = 0; i < playersNo; i++) + // Add up the flavor + feel of each players berry + for (i = 0; i < numPlayers; i++) { - for (j = 0; j < 6; j++) - sUnknown_03000DE8[j] += berries[i].flavors[j]; + for (j = 0; j < FLAVOR_COUNT + 1; j++) + sPokeblockFlavors[j] += berries[i].flavors[j]; } - multiuseVar = sUnknown_03000DE8[0]; - sUnknown_03000DE8[0] -= sUnknown_03000DE8[1]; - sUnknown_03000DE8[1] -= sUnknown_03000DE8[2]; - sUnknown_03000DE8[2] -= sUnknown_03000DE8[3]; - sUnknown_03000DE8[3] -= sUnknown_03000DE8[4]; - sUnknown_03000DE8[4] -= multiuseVar; + // Subtract each flavor total from the prev one + // The idea is to focus on only the flavors with the highest totals + // Bad way to do it though (order matters here) + multiuseVar = sPokeblockFlavors[0]; + sPokeblockFlavors[FLAVOR_SPICY] -= sPokeblockFlavors[FLAVOR_DRY]; + sPokeblockFlavors[FLAVOR_DRY] -= sPokeblockFlavors[FLAVOR_SWEET]; + sPokeblockFlavors[FLAVOR_SWEET] -= sPokeblockFlavors[FLAVOR_BITTER]; + sPokeblockFlavors[FLAVOR_BITTER] -= sPokeblockFlavors[FLAVOR_SOUR]; + sPokeblockFlavors[FLAVOR_SOUR] -= multiuseVar; + // Count (and reset) the resulting negative flavors multiuseVar = 0; - for (i = 0; i < 5; i++) + for (i = 0; i < FLAVOR_COUNT; i++) { - if (sUnknown_03000DE8[i] < 0) + if (sPokeblockFlavors[i] < 0) { - sUnknown_03000DE8[i] = 0; + sPokeblockFlavors[i] = 0; multiuseVar++; } } - var3 = multiuseVar; - for (i = 0; i < 5; i++) + numNegatives = multiuseVar; + + // Subtract the number of negative flavor totals from each positive total (without going below 0) + for (i = 0; i < FLAVOR_COUNT; i++) { - if (sUnknown_03000DE8[i] > 0) + if (sPokeblockFlavors[i] > 0) { - if (sUnknown_03000DE8[i] < multiuseVar) - sUnknown_03000DE8[i] = 0; + if (sPokeblockFlavors[i] < multiuseVar) + sPokeblockFlavors[i] = 0; else - sUnknown_03000DE8[i] -= multiuseVar; + sPokeblockFlavors[i] -= multiuseVar; } } - for (i = 0; i < 5; i++) - { - sUnknown_020322A8[i] = sUnknown_03000DE8[i]; - } - multiuseVar = maxRPM / 333 + 100; - sUnknown_020322D0 = multiuseVar; + for (i = 0; i < FLAVOR_COUNT; i++) + sDebug_PokeblockFactorFlavors[i] = sPokeblockFlavors[i]; - for (i = 0; i < 5; i++) + // Factor in max RPM and round + sDebug_PokeblockFactorRPM = multiuseVar = maxRPM / 333 + 100; + for (i = 0; i < FLAVOR_COUNT; i++) { - s32 r4; - s32 r5 = sUnknown_03000DE8[i]; - r5 = (r5 * multiuseVar) / 10; - r4 = r5 % 10; - r5 /= 10; - if (r4 > 4) - r5++; - sUnknown_03000DE8[i] = r5; - } - for (i = 0; i < 5; i++) - { - sUnknown_020322BC[i] = sUnknown_03000DE8[i]; + s32 remainder; + s32 flavor = sPokeblockFlavors[i]; + flavor = (flavor * multiuseVar) / 10; + remainder = flavor % 10; + flavor /= 10; + if (remainder > 4) + flavor++; + sPokeblockFlavors[i] = flavor; } - pokeblock->color = Blender_GetPokeblockColor(berries, &sUnknown_03000DE8[0], playersNo, var3); - sUnknown_03000DE8[5] = (sUnknown_03000DE8[5] / playersNo) - playersNo; + for (i = 0; i < FLAVOR_COUNT; i++) + sDebug_PokeblockFactorFlavorsAfterRPM[i] = sPokeblockFlavors[i]; - if (sUnknown_03000DE8[5] < 0) - sUnknown_03000DE8[5] = 0; + // Calculate color and feel of pokeblock + pokeblock->color = CalculatePokeblockColor(berries, &sPokeblockFlavors[0], numPlayers, numNegatives); + sPokeblockFlavors[FLAVOR_COUNT] = (sPokeblockFlavors[FLAVOR_COUNT] / numPlayers) - numPlayers; - if (pokeblock->color == 12) + if (sPokeblockFlavors[FLAVOR_COUNT] < 0) + sPokeblockFlavors[FLAVOR_COUNT] = 0; + + if (pokeblock->color == PBLOCK_CLR_BLACK) { - multiuseVar = Random() % 10; - for (i = 0; i < 5; i++) + // Black pokeblocks get their flavors randomly reassigned + multiuseVar = Random() % ARRAY_COUNT(sBlackPokeblockFlavorFlags); + for (i = 0; i < FLAVOR_COUNT; i++) { - if ((sUnknown_08339CC8[multiuseVar] >> i) & 1) - sUnknown_03000DE8[i] = 2; + if ((sBlackPokeblockFlavorFlags[multiuseVar] >> i) & 1) + sPokeblockFlavors[i] = 2; else - sUnknown_03000DE8[i] = 0; + sPokeblockFlavors[i] = 0; } } - for (i = 0; i < 6; i++) + for (i = 0; i < FLAVOR_COUNT + 1; i++) { - if (sUnknown_03000DE8[i] > 255) - sUnknown_03000DE8[i] = 255; + if (sPokeblockFlavors[i] > 255) + sPokeblockFlavors[i] = 255; } - pokeblock->spicy = sUnknown_03000DE8[0]; - pokeblock->dry = sUnknown_03000DE8[1]; - pokeblock->sweet = sUnknown_03000DE8[2]; - pokeblock->bitter = sUnknown_03000DE8[3]; - pokeblock->sour = sUnknown_03000DE8[4]; - pokeblock->feel = sUnknown_03000DE8[5]; + pokeblock->spicy = sPokeblockFlavors[FLAVOR_SPICY]; + pokeblock->dry = sPokeblockFlavors[FLAVOR_DRY]; + pokeblock->sweet = sPokeblockFlavors[FLAVOR_SWEET]; + pokeblock->bitter = sPokeblockFlavors[FLAVOR_BITTER]; + pokeblock->sour = sPokeblockFlavors[FLAVOR_SOUR]; + pokeblock->feel = sPokeblockFlavors[FLAVOR_COUNT]; - for (i = 0; i < 6; i++) - { - flavors[i] = sUnknown_03000DE8[i]; - } + for (i = 0; i < FLAVOR_COUNT + 1; i++) + flavors[i] = sPokeblockFlavors[i]; } -static void BlenderDebug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 playersNo, u8* flavors, u16 a4) +// Unused +static void Debug_CalculatePokeblock(struct BlenderBerry* berries, struct Pokeblock* pokeblock, u8 numPlayers, u8* flavors, u16 maxRPM) { - Blender_CalculatePokeblock(berries, pokeblock, playersNo, flavors, a4); + CalculatePokeblock(berries, pokeblock, numPlayers, flavors, maxRPM); } -static void sub_8081E20(void) +static void Debug_SetStageVars(void) { - u32 frames = (u16)(sBerryBlenderData->gameFrameTime); - u16 max_RPM = sBerryBlenderData->max_RPM; - s16 var = 0; + u32 frames = (u16)(sBerryBlender->gameFrameTime); + u16 maxRPM = sBerryBlender->maxRPM; + s16 stage = 0; if (frames < 900) - var = 5; + stage = 5; else if ((u16)(frames - 900) < 600) - var = 4; + stage = 4; else if ((u16)(frames - 1500) < 600) - var = 3; + stage = 3; else if ((u16)(frames - 2100) < 900) - var = 2; + stage = 2; else if ((u16)(frames - 3300) < 300) - var = 1; - - sub_8081BC8(var); - - var = 0; - if (max_RPM <= 64) - { - if (max_RPM >= 50 && max_RPM < 100) - var = -1; - else if (max_RPM >= 100 && max_RPM < 150) - var = -2; - else if (max_RPM >= 150 && max_RPM < 200) - var = -3; - else if (max_RPM >= 200 && max_RPM < 250) - var = -4; - else if (max_RPM >= 250 && max_RPM < 300) - var = -5; - else if (max_RPM >= 350 && max_RPM < 400) - var = -6; - else if (max_RPM >= 400 && max_RPM < 450) - var = -7; - else if (max_RPM >= 500 && max_RPM < 550) - var = -8; - else if (max_RPM >= 550 && max_RPM < 600) - var = -9; - else if (max_RPM >= 600) - var = -10; - } - - sub_8081BB0(var); -} - -static void sub_8081F94(u16 *a0) -{ - if (gReceivedRemoteLinkPlayers != 0 && gWirelessCommType) - *a0 = 0x2F00; + stage = 1; + + Debug_SetGameTimeStage(stage); + + stage = 0; + if (maxRPM <= 64) + { + if (maxRPM >= 50 && maxRPM < 100) + stage = -1; + else if (maxRPM >= 100 && maxRPM < 150) + stage = -2; + else if (maxRPM >= 150 && maxRPM < 200) + stage = -3; + else if (maxRPM >= 200 && maxRPM < 250) + stage = -4; + else if (maxRPM >= 250 && maxRPM < 300) + stage = -5; + else if (maxRPM >= 350 && maxRPM < 400) + stage = -6; + else if (maxRPM >= 400 && maxRPM < 450) + stage = -7; + else if (maxRPM >= 500 && maxRPM < 550) + stage = -8; + else if (maxRPM >= 550 && maxRPM < 600) + stage = -9; + else if (maxRPM >= 600) + stage = -10; + } + + Debug_SetMaxRPMStage(stage); +} + +static void SendContinuePromptResponse(u16 *cmd) +{ + if (gReceivedRemoteLinkPlayers && gWirelessCommType) + *cmd = RFUCMD_SEND_PACKET; else - *a0 = 0x2FFF; + *cmd = LINKCMD_SEND_PACKET; } -static void CB2_HandleBlenderEndGame(void) +static void CB2_EndBlenderGame(void) { u8 i, j; - if (sBerryBlenderData->gameEndState < 3) - sub_8082D28(); + if (sBerryBlender->gameEndState < 3) + UpdateBlenderCenter(); GetMultiplayerId(); // unused return value - switch (sBerryBlenderData->gameEndState) + switch (sBerryBlender->gameEndState) { case 1: m4aMPlayTempoControl(&gMPlayInfo_BGM, 256); for (i = 0; i < gSpecialVar_0x8004; i++) { - DestroyTask(sBerryBlenderData->field_120[i]); + DestroyTask(sBerryBlender->opponentTaskIds[i]); } - sBerryBlenderData->gameEndState++; + sBerryBlender->gameEndState++; break; case 2: - sBerryBlenderData->field_4C -= 32; - if (sBerryBlenderData->field_4C <= 0) + sBerryBlender->speed -= 32; + if (sBerryBlender->speed <= 0) { ClearLinkCallback(); - sBerryBlenderData->field_4C = 0; + sBerryBlender->speed = 0; - if (gReceivedRemoteLinkPlayers != 0) - sBerryBlenderData->gameEndState++; + if (gReceivedRemoteLinkPlayers) + sBerryBlender->gameEndState++; else - sBerryBlenderData->gameEndState = 5; + sBerryBlender->gameEndState = 5; - sBerryBlenderData->mainState = 0; + sBerryBlender->mainState = 0; m4aMPlayStop(&gMPlayInfo_SE2); } - Blender_ControlHitPitch(); + UpdateHitPitch(); break; case 3: if (GetMultiplayerId() != 0) { - sBerryBlenderData->gameEndState++; + sBerryBlender->gameEndState++; } else if (IsLinkTaskFinished()) { - if (gReceivedRemoteLinkPlayers != 0 && gWirelessCommType) + if (gReceivedRemoteLinkPlayers && gWirelessCommType) { - sBerryBlenderData->gameBlock.timeRPM.time = sBerryBlenderData->gameFrameTime; - sBerryBlenderData->gameBlock.timeRPM.max_RPM = sBerryBlenderData->max_RPM; + sBerryBlender->gameBlock.timeRPM.time = sBerryBlender->gameFrameTime; + sBerryBlender->gameBlock.timeRPM.maxRPM = sBerryBlender->maxRPM; for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - for (j = 0; j < BLENDER_SCORES_NO; j++) - sBerryBlenderData->gameBlock.scores[i][j] = sBerryBlenderData->scores[i][j]; + for (j = 0; j < NUM_SCORE_TYPES; j++) + sBerryBlender->gameBlock.scores[i][j] = sBerryBlender->scores[i][j]; } - if (SendBlock(0, &sBerryBlenderData->gameBlock, sizeof(sBerryBlenderData->gameBlock))) - sBerryBlenderData->gameEndState++; + if (SendBlock(0, &sBerryBlender->gameBlock, sizeof(sBerryBlender->gameBlock))) + sBerryBlender->gameEndState++; } else { - sBerryBlenderData->smallBlock.time = sBerryBlenderData->gameFrameTime; - sBerryBlenderData->smallBlock.max_RPM = sBerryBlenderData->max_RPM; - if (SendBlock(0, &sBerryBlenderData->smallBlock, sizeof(sBerryBlenderData->smallBlock) + 32)) - sBerryBlenderData->gameEndState++; + sBerryBlender->smallBlock.time = sBerryBlender->gameFrameTime; + sBerryBlender->smallBlock.maxRPM = sBerryBlender->maxRPM; + if (SendBlock(0, &sBerryBlender->smallBlock, sizeof(sBerryBlender->smallBlock) + 32)) + sBerryBlender->gameEndState++; } } break; @@ -2440,64 +2617,64 @@ static void CB2_HandleBlenderEndGame(void) if (GetBlockReceivedStatus()) { ResetBlockReceivedFlags(); - sBerryBlenderData->gameEndState++; + sBerryBlender->gameEndState++; - if (gReceivedRemoteLinkPlayers != 0 && gWirelessCommType) + if (gReceivedRemoteLinkPlayers && gWirelessCommType) { struct BlenderGameBlock *receivedBlock = (struct BlenderGameBlock*)(&gBlockRecvBuffer); - sBerryBlenderData->max_RPM = receivedBlock->timeRPM.max_RPM; - sBerryBlenderData->gameFrameTime = receivedBlock->timeRPM.time; + sBerryBlender->maxRPM = receivedBlock->timeRPM.maxRPM; + sBerryBlender->gameFrameTime = receivedBlock->timeRPM.time; for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - for (j = 0; j < BLENDER_SCORES_NO; j++) - sBerryBlenderData->scores[i][j] = receivedBlock->scores[i][j]; + for (j = 0; j < NUM_SCORE_TYPES; j++) + sBerryBlender->scores[i][j] = receivedBlock->scores[i][j]; } } else { struct TimeAndRPM *receivedBlock = (struct TimeAndRPM*)(&gBlockRecvBuffer); - sBerryBlenderData->max_RPM = receivedBlock->max_RPM; - sBerryBlenderData->gameFrameTime = receivedBlock->time; + sBerryBlender->maxRPM = receivedBlock->maxRPM; + sBerryBlender->gameFrameTime = receivedBlock->time; } } break; case 5: - if (Blender_PrintBlendingRanking()) - sBerryBlenderData->gameEndState++; + if (PrintBlendingRanking()) + sBerryBlender->gameEndState++; break; case 6: - if (Blender_PrintBlendingResults()) + if (PrintBlendingResults()) { if (gInGameOpponentsNo == 0) IncrementGameStat(GAME_STAT_POKEBLOCKS_WITH_FRIENDS); else IncrementGameStat(GAME_STAT_POKEBLOCKS); - sBerryBlenderData->gameEndState++; + sBerryBlender->gameEndState++; } break; case 7: - if (Blender_PrintText(&sBerryBlenderData->textState, sText_WouldLikeToBlendAnotherBerry, GetPlayerTextSpeedDelay())) - sBerryBlenderData->gameEndState++; + if (Blender_PrintText(&sBerryBlender->textState, sText_WouldLikeToBlendAnotherBerry, GetPlayerTextSpeedDelay())) + sBerryBlender->gameEndState++; break; case 9: - sBerryBlenderData->yesNoAnswer = 0; - CreateYesNoMenu(&sBlender_YesNoWindowTemplate, 1, 0xD, 0); - sBerryBlenderData->gameEndState++; + sBerryBlender->yesNoAnswer = 0; + CreateYesNoMenu(&sYesNoWindowTemplate_ContinuePlaying, 1, 0xD, 0); + sBerryBlender->gameEndState++; break; case 10: switch (Menu_ProcessInputNoWrapClearOnChoose()) { case 1: case -1: - sBerryBlenderData->yesNoAnswer = 1; - sBerryBlenderData->gameEndState++; - for (i = 0; i <BLENDER_MAX_PLAYERS; i++) + sBerryBlender->yesNoAnswer = 1; + sBerryBlender->gameEndState++; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - if (sBerryBlenderData->field_8E[i] != 0xFF) + if (sBerryBlender->arrowIdToPlayerId[i] != NO_PLAYER) { PutWindowTilemap(i); CopyWindowToVram(i, 3); @@ -2505,11 +2682,11 @@ static void CB2_HandleBlenderEndGame(void) } break; case 0: - sBerryBlenderData->yesNoAnswer = 0; - sBerryBlenderData->gameEndState++; - for (i = 0; i <BLENDER_MAX_PLAYERS; i++) + sBerryBlender->yesNoAnswer = 0; + sBerryBlender->gameEndState++; + for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - if (sBerryBlenderData->field_8E[i] != 0xFF) + if (sBerryBlender->arrowIdToPlayerId[i] != NO_PLAYER) { PutWindowTilemap(i); CopyWindowToVram(i, 3); @@ -2519,62 +2696,64 @@ static void CB2_HandleBlenderEndGame(void) } break; case 11: - sub_8081F94(&gSendCmd[0]); - if (sBerryBlenderData->yesNoAnswer == 0) + SendContinuePromptResponse(&gSendCmd[BLENDER_COMM_INPUT_STATE]); + if (sBerryBlender->yesNoAnswer == 0) { - if (IsBagPocketNonEmpty(POCKET_BERRIES) == FALSE) // no berries + if (IsBagPocketNonEmpty(POCKET_BERRIES) == FALSE) { - sBerryBlenderData->playAgainState = CANT_PLAY_NO_BERRIES; - gSendCmd[1] = 0x9999; + // No berries + sBerryBlender->playAgainState = CANT_PLAY_NO_BERRIES; + gSendCmd[BLENDER_COMM_RESP] = LINKCMD_BLENDER_NO_BERRIES; } - else if (GetFirstFreePokeblockSlot() == -1) // no space for pokeblocks + else if (GetFirstFreePokeblockSlot() == -1) { - sBerryBlenderData->playAgainState = CANT_PLAY_NO_PKBLCK_SPACE; - gSendCmd[1] = 0xAAAA; + // No space for pokeblocks + sBerryBlender->playAgainState = CANT_PLAY_NO_PKBLCK_SPACE; + gSendCmd[BLENDER_COMM_RESP] = LINKCMD_BLENDER_NO_PBLOCK_SPACE; } else { - sBerryBlenderData->playAgainState = PLAY_AGAIN_OK; - gSendCmd[1] = 0x7779; + sBerryBlender->playAgainState = PLAY_AGAIN_YES; + gSendCmd[BLENDER_COMM_RESP] = LINKCMD_BLENDER_PLAY_AGAIN; } - sBerryBlenderData->gameEndState++; + sBerryBlender->gameEndState++; } else { - sBerryBlenderData->playAgainState = DONT_PLAY_AGAIN; - gSendCmd[1] = 0x8888; - sBerryBlenderData->gameEndState++; + sBerryBlender->playAgainState = PLAY_AGAIN_NO; + gSendCmd[BLENDER_COMM_RESP] = LINKCMD_CONT_BLOCK; + sBerryBlender->gameEndState++; } break; case 12: if (gInGameOpponentsNo) { - SetMainCallback2(CB2_HandlePlayerPlayAgainChoice); - sBerryBlenderData->gameEndState = 0; - sBerryBlenderData->mainState = 0; + SetMainCallback2(CB2_CheckPlayAgainLocal); + sBerryBlender->gameEndState = 0; + sBerryBlender->mainState = 0; } else { - sBerryBlenderData->gameEndState++; + sBerryBlender->gameEndState++; } break; case 8: - sBerryBlenderData->gameEndState++; + sBerryBlender->gameEndState++; break; case 13: - if (Blender_PrintText(&sBerryBlenderData->textState, sText_CommunicationStandby, GetPlayerTextSpeedDelay())) + if (Blender_PrintText(&sBerryBlender->textState, sText_CommunicationStandby, GetPlayerTextSpeedDelay())) { - SetMainCallback2(CB2_HandlePlayerLinkPlayAgainChoice); - sBerryBlenderData->gameEndState = 0; - sBerryBlenderData->mainState = 0; + SetMainCallback2(CB2_CheckPlayAgainLink); + sBerryBlender->gameEndState = 0; + sBerryBlender->mainState = 0; } break; } - sub_808330C(); - sub_8083230(sBerryBlenderData->field_4C); - sub_8082AD4(); - Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y); + RestoreBgCoords(); + UpdateRPM(sBerryBlender->speed); + ProcessLinkPlayerCmds(); + Blender_DummiedOutFunc(sBerryBlender->bg_X, sBerryBlender->bg_Y); RunTasks(); AnimateSprites(); BuildOamBuffer(); @@ -2584,30 +2763,30 @@ static void CB2_HandleBlenderEndGame(void) static bool8 LinkPlayAgainHandleSaving(void) { - switch (sBerryBlenderData->field_1A0) + switch (sBerryBlender->linkPlayAgainState) { case 0: SetLinkStandbyCallback(); - sBerryBlenderData->field_1A0 = 1; - sBerryBlenderData->framesToWait = 0; + sBerryBlender->linkPlayAgainState = 1; + sBerryBlender->framesToWait = 0; break; case 1: if (IsLinkTaskFinished()) { - sBerryBlenderData->field_1A0++; + sBerryBlender->linkPlayAgainState++; gSoftResetDisabled = TRUE; } break; case 2: FullSaveGame(); - sBerryBlenderData->field_1A0++; - sBerryBlenderData->framesToWait = 0; + sBerryBlender->linkPlayAgainState++; + sBerryBlender->framesToWait = 0; break; case 3: - if (++sBerryBlenderData->framesToWait == 10) + if (++sBerryBlender->framesToWait == 10) { SetLinkStandbyCallback(); - sBerryBlenderData->field_1A0++; + sBerryBlender->linkPlayAgainState++; } break; case 4: @@ -2615,21 +2794,21 @@ static bool8 LinkPlayAgainHandleSaving(void) { if (CheckSaveFile()) { - sBerryBlenderData->field_1A0 = 5; + sBerryBlender->linkPlayAgainState = 5; } else { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->field_1A0 = 3; + sBerryBlender->framesToWait = 0; + sBerryBlender->linkPlayAgainState = 3; } } break; case 5: - sBerryBlenderData->field_1A0++; - sBerryBlenderData->framesToWait = 0; + sBerryBlender->linkPlayAgainState++; + sBerryBlender->framesToWait = 0; break; case 6: - if (++sBerryBlenderData->framesToWait > 5) + if (++sBerryBlender->framesToWait > 5) { gSoftResetDisabled = FALSE; return TRUE; @@ -2640,113 +2819,115 @@ static bool8 LinkPlayAgainHandleSaving(void) return FALSE; } -static void CB2_HandlePlayerLinkPlayAgainChoice(void) +static void CB2_CheckPlayAgainLink(void) { - switch (sBerryBlenderData->gameEndState) + switch (sBerryBlender->gameEndState) { case 0: - if (sBerryBlenderData->field_64[0] == 0x2222) + if (sBerryBlender->playerContinueResponses[0] == LINKCMD_SEND_LINK_TYPE) { - sBerryBlenderData->gameEndState = 5; + // Link leader says game will continue + sBerryBlender->gameEndState = 5; } - else if (sBerryBlenderData->field_64[0] == 0x1111) + else if (sBerryBlender->playerContinueResponses[0] == LINKCMD_BLENDER_STOP) { - if (sBerryBlenderData->field_6C == 0x9999) - sBerryBlenderData->gameEndState = 2; - else if (sBerryBlenderData->field_6C == 0xAAAA) - sBerryBlenderData->gameEndState = 1; + // Link leader says game will stop, if necessary print why + if (sBerryBlender->canceledPlayerCmd == LINKCMD_BLENDER_NO_BERRIES) + sBerryBlender->gameEndState = 2; + else if (sBerryBlender->canceledPlayerCmd == LINKCMD_BLENDER_NO_PBLOCK_SPACE) + sBerryBlender->gameEndState = 1; else - sBerryBlenderData->gameEndState = 5; + sBerryBlender->gameEndState = 5; } break; case 1: - sBerryBlenderData->gameEndState = 3; - StringCopy(gStringVar4, gLinkPlayers[sBerryBlenderData->field_6E].name); + sBerryBlender->gameEndState = 3; + StringCopy(gStringVar4, gLinkPlayers[sBerryBlender->canceledPlayerId].name); StringAppend(gStringVar4, sText_ApostropheSPokeblockCaseIsFull); break; case 2: - sBerryBlenderData->gameEndState++; - StringCopy(gStringVar4, gLinkPlayers[sBerryBlenderData->field_6E].name); + sBerryBlender->gameEndState++; + StringCopy(gStringVar4, gLinkPlayers[sBerryBlender->canceledPlayerId].name); StringAppend(gStringVar4, sText_HasNoBerriesToPut); break; case 3: - if (Blender_PrintText(&sBerryBlenderData->textState, gStringVar4, GetPlayerTextSpeedDelay())) + if (Blender_PrintText(&sBerryBlender->textState, gStringVar4, GetPlayerTextSpeedDelay())) { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->gameEndState++; + sBerryBlender->framesToWait = 0; + sBerryBlender->gameEndState++; } break; case 4: - if (++sBerryBlenderData->framesToWait > 60) - sBerryBlenderData->gameEndState = 5; + if (++sBerryBlender->framesToWait > 60) + sBerryBlender->gameEndState = 5; break; case 5: - Blender_PrintText(&sBerryBlenderData->textState, gText_SavingDontTurnOff2, 0); + Blender_PrintText(&sBerryBlender->textState, gText_SavingDontTurnOff2, 0); SetLinkStandbyCallback(); - sBerryBlenderData->gameEndState++; + sBerryBlender->gameEndState++; break; case 6: if (IsLinkTaskFinished()) { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->gameEndState++; - sBerryBlenderData->field_1A0 = 0; + sBerryBlender->framesToWait = 0; + sBerryBlender->gameEndState++; + sBerryBlender->linkPlayAgainState = 0; } break; case 7: if (LinkPlayAgainHandleSaving()) { PlaySE(SE_SAVE); - sBerryBlenderData->gameEndState++; + sBerryBlender->gameEndState++; } break; case 8: - sBerryBlenderData->gameEndState++; + sBerryBlender->gameEndState++; SetLinkStandbyCallback(); break; case 9: if (IsLinkTaskFinished()) { BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); - sBerryBlenderData->gameEndState++; + sBerryBlender->gameEndState++; } break; case 10: if (!gPaletteFade.active) { - if (sBerryBlenderData->field_64[0] == 0x2222) + if (sBerryBlender->playerContinueResponses[0] == LINKCMD_SEND_LINK_TYPE) { FreeAllWindowBuffers(); UnsetBgTilemapBuffer(2); UnsetBgTilemapBuffer(1); - FREE_AND_SET_NULL(sBerryBlenderData); + FREE_AND_SET_NULL(sBerryBlender); SetMainCallback2(DoBerryBlending); } else { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->gameEndState++; + sBerryBlender->framesToWait = 0; + sBerryBlender->gameEndState++; } } break; case 11: - if (++sBerryBlenderData->framesToWait > 30) + if (++sBerryBlender->framesToWait > 30) { SetCloseLinkCallback(); - sBerryBlenderData->gameEndState++; + sBerryBlender->gameEndState++; } break; case 12: - if (gReceivedRemoteLinkPlayers == 0) + if (!gReceivedRemoteLinkPlayers) { - FREE_AND_SET_NULL(sBerryBlenderData); + FREE_AND_SET_NULL(sBerryBlender); SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); } break; } - sub_8082AD4(); - Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y); + ProcessLinkPlayerCmds(); + Blender_DummiedOutFunc(sBerryBlender->bg_X, sBerryBlender->bg_Y); RunTasks(); AnimateSprites(); BuildOamBuffer(); @@ -2754,40 +2935,40 @@ static void CB2_HandlePlayerLinkPlayAgainChoice(void) UpdatePaletteFade(); } -static void CB2_HandlePlayerPlayAgainChoice(void) +static void CB2_CheckPlayAgainLocal(void) { - switch (sBerryBlenderData->gameEndState) + switch (sBerryBlender->gameEndState) { case 0: - if (sBerryBlenderData->playAgainState == PLAY_AGAIN_OK || sBerryBlenderData->playAgainState == DONT_PLAY_AGAIN) - sBerryBlenderData->gameEndState = 9; - if (sBerryBlenderData->playAgainState == CANT_PLAY_NO_BERRIES) - sBerryBlenderData->gameEndState = 2; - if (sBerryBlenderData->playAgainState == CANT_PLAY_NO_PKBLCK_SPACE) - sBerryBlenderData->gameEndState = 1; + if (sBerryBlender->playAgainState == PLAY_AGAIN_YES || sBerryBlender->playAgainState == PLAY_AGAIN_NO) + sBerryBlender->gameEndState = 9; + if (sBerryBlender->playAgainState == CANT_PLAY_NO_BERRIES) + sBerryBlender->gameEndState = 2; + if (sBerryBlender->playAgainState == CANT_PLAY_NO_PKBLCK_SPACE) + sBerryBlender->gameEndState = 1; break; case 1: - sBerryBlenderData->gameEndState = 3; - sBerryBlenderData->textState = 0; + sBerryBlender->gameEndState = 3; + sBerryBlender->textState = 0; StringCopy(gStringVar4, sText_YourPokeblockCaseIsFull); break; case 2: - sBerryBlenderData->gameEndState++; - sBerryBlenderData->textState = 0; + sBerryBlender->gameEndState++; + sBerryBlender->textState = 0; StringCopy(gStringVar4, sText_RunOutOfBerriesForBlending); break; case 3: - if (Blender_PrintText(&sBerryBlenderData->textState, gStringVar4, GetPlayerTextSpeedDelay())) - sBerryBlenderData->gameEndState = 9; + if (Blender_PrintText(&sBerryBlender->textState, gStringVar4, GetPlayerTextSpeedDelay())) + sBerryBlender->gameEndState = 9; break; case 9: BeginFastPaletteFade(3); - sBerryBlenderData->gameEndState++; + sBerryBlender->gameEndState++; break; case 10: if (!gPaletteFade.active) { - if (sBerryBlenderData->playAgainState == PLAY_AGAIN_OK) + if (sBerryBlender->playAgainState == PLAY_AGAIN_YES) SetMainCallback2(DoBerryBlending); else SetMainCallback2(CB2_ReturnToFieldContinueScriptPlayMapMusic); @@ -2795,13 +2976,13 @@ static void CB2_HandlePlayerPlayAgainChoice(void) FreeAllWindowBuffers(); UnsetBgTilemapBuffer(2); UnsetBgTilemapBuffer(1); - FREE_AND_SET_NULL(sBerryBlenderData); + FREE_AND_SET_NULL(sBerryBlender); } break; } - sub_8082AD4(); - Blender_DummiedOutFunc(sBerryBlenderData->bg_X, sBerryBlenderData->bg_Y); + ProcessLinkPlayerCmds(); + Blender_DummiedOutFunc(sBerryBlender->bg_X, sBerryBlender->bg_Y); RunTasks(); AnimateSprites(); BuildOamBuffer(); @@ -2809,152 +2990,169 @@ static void CB2_HandlePlayerPlayAgainChoice(void) UpdatePaletteFade(); } -static void sub_8082AD4(void) +static void ProcessLinkPlayerCmds(void) { if (gReceivedRemoteLinkPlayers) { - if (sub_80814B0(gRecvCmds[0][0], 0x2FFF, 0x2F00)) + if (CheckRecvCmdMatches(gRecvCmds[0][BLENDER_COMM_INPUT_STATE], LINKCMD_SEND_PACKET, RFUCMD_SEND_PACKET)) { - if (gRecvCmds[0][1] == 0x1111) + if (gRecvCmds[0][BLENDER_COMM_RESP] == LINKCMD_BLENDER_STOP) { - switch (gRecvCmds[0][2]) + // Link leader has indicated play is stopping, read signal to determine why + switch (gRecvCmds[0][BLENDER_COMM_STOP_TYPE]) { - case 0x8888: - sBerryBlenderData->field_6C = 0x8888; - sBerryBlenderData->field_6E = gRecvCmds[0][3]; + case LINKCMD_CONT_BLOCK: // Someone selected "No" to continue playing + sBerryBlender->canceledPlayerCmd = LINKCMD_CONT_BLOCK; + sBerryBlender->canceledPlayerId = gRecvCmds[0][BLENDER_COMM_PLAYER_ID]; break; - case 0x9999: - sBerryBlenderData->field_6C = 0x9999; - sBerryBlenderData->field_6E = gRecvCmds[0][3]; + case LINKCMD_BLENDER_NO_BERRIES: + sBerryBlender->canceledPlayerCmd = LINKCMD_BLENDER_NO_BERRIES; + sBerryBlender->canceledPlayerId = gRecvCmds[0][BLENDER_COMM_PLAYER_ID]; break; - case 0xAAAA: - sBerryBlenderData->field_6C = 0xAAAA; - sBerryBlenderData->field_6E = gRecvCmds[0][3]; + case LINKCMD_BLENDER_NO_PBLOCK_SPACE: + sBerryBlender->canceledPlayerCmd = LINKCMD_BLENDER_NO_PBLOCK_SPACE; + sBerryBlender->canceledPlayerId = gRecvCmds[0][BLENDER_COMM_PLAYER_ID]; break; } - sBerryBlenderData->field_64[0] = 0x1111; + sBerryBlender->playerContinueResponses[0] = LINKCMD_BLENDER_STOP; } - else if (gRecvCmds[0][1] == 0x2222) + else if (gRecvCmds[0][BLENDER_COMM_RESP] == LINKCMD_SEND_LINK_TYPE) { - sBerryBlenderData->field_64[0] = 0x2222; + // Link leader has indicated play will continue + sBerryBlender->playerContinueResponses[0] = LINKCMD_SEND_LINK_TYPE; } } - if (GetMultiplayerId() == 0 && sBerryBlenderData->field_64[0] != 0x1111 && sBerryBlenderData->field_64[0] != 0x2222) + + // If player is link leader, check for responses to the "Continue playing" prompt (even if it's not up yet) + if (GetMultiplayerId() == 0 + && sBerryBlender->playerContinueResponses[0] != LINKCMD_BLENDER_STOP + && sBerryBlender->playerContinueResponses[0] != LINKCMD_SEND_LINK_TYPE) { u8 i; + + // Try to gather responses for (i = 0; i < GetLinkPlayerCount(); i++) { - if (sub_80814B0(gRecvCmds[i][0], 0x2FFF, 0x2F00)) + if (CheckRecvCmdMatches(gRecvCmds[i][BLENDER_COMM_INPUT_STATE], LINKCMD_SEND_PACKET, RFUCMD_SEND_PACKET)) { - switch (gRecvCmds[i][1]) + switch (gRecvCmds[i][BLENDER_COMM_RESP]) { - case 0x8888: - sBerryBlenderData->field_64[i] = 0x8888; + case LINKCMD_CONT_BLOCK: // Selected "No" + sBerryBlender->playerContinueResponses[i] = LINKCMD_CONT_BLOCK; break; - case 0x7779: - sBerryBlenderData->field_64[i] = 0x7779; + case LINKCMD_BLENDER_PLAY_AGAIN: // Selected "Yes" + sBerryBlender->playerContinueResponses[i] = LINKCMD_BLENDER_PLAY_AGAIN; break; - case 0x9999: - sBerryBlenderData->field_64[i] = 0x9999; + case LINKCMD_BLENDER_NO_BERRIES: + sBerryBlender->playerContinueResponses[i] = LINKCMD_BLENDER_NO_BERRIES; break; - case 0xAAAA: - sBerryBlenderData->field_64[i] = 0xAAAA; + case LINKCMD_BLENDER_NO_PBLOCK_SPACE: + sBerryBlender->playerContinueResponses[i] = LINKCMD_BLENDER_NO_PBLOCK_SPACE; break; } } } + + // Count players that have responded, stopping at first non-response for (i = 0; i < GetLinkPlayerCount(); i++) { - if (sBerryBlenderData->field_64[i] == 0) + if (sBerryBlender->playerContinueResponses[i] == 0) break; } + + // If all players responded, handle response if (i == GetLinkPlayerCount()) { + // Count players that decided to play again, stopping at first negative response for (i = 0; i < GetLinkPlayerCount(); i++) { - if (sBerryBlenderData->field_64[i] != 0x7779) + if (sBerryBlender->playerContinueResponses[i] != LINKCMD_BLENDER_PLAY_AGAIN) break; } - sub_8081F94(&gSendCmd[0]); + + // Schedule signal to other players about whether or not play will continue + SendContinuePromptResponse(&gSendCmd[BLENDER_COMM_INPUT_STATE]); if (i == GetLinkPlayerCount()) { - gSendCmd[1] = 0x2222; + // All players chose to continue playing + gSendCmd[BLENDER_COMM_RESP] = LINKCMD_SEND_LINK_TYPE; } else { - gSendCmd[1] = 0x1111; - gSendCmd[2] = sBerryBlenderData->field_64[i]; - gSendCmd[3] = i; + // At least 1 player decided to stop playing, or can't continue playing + gSendCmd[BLENDER_COMM_RESP] = LINKCMD_BLENDER_STOP; + gSendCmd[BLENDER_COMM_STOP_TYPE] = sBerryBlender->playerContinueResponses[i]; + gSendCmd[BLENDER_COMM_PLAYER_ID] = i; } } } } } -static void sub_8082CB4(struct BgAffineSrcData *dest) +static void DrawBlenderCenter(struct BgAffineSrcData *dest) { struct BgAffineSrcData affineSrc; affineSrc.texX = 0x7800; affineSrc.texY = 0x5000; - affineSrc.scrX = 0x78 - sBerryBlenderData->bg_X; - affineSrc.scrY = 0x50 - sBerryBlenderData->bg_Y; - affineSrc.sx = sBerryBlenderData->field_11A; - affineSrc.sy = sBerryBlenderData->field_11A; - affineSrc.alpha = sBerryBlenderData->arrowPos; + affineSrc.scrX = 0x78 - sBerryBlender->bg_X; + affineSrc.scrY = 0x50 - sBerryBlender->bg_Y; + affineSrc.sx = sBerryBlender->centerScale; + affineSrc.sy = sBerryBlender->centerScale; + affineSrc.alpha = sBerryBlender->arrowPos; *dest = affineSrc; } u16 GetBlenderArrowPosition(void) { - return sBerryBlenderData->arrowPos; + return sBerryBlender->arrowPos; } -static void sub_8082D28(void) +static void UpdateBlenderCenter(void) { u8 playerId = 0; - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) playerId = GetMultiplayerId(); - if (gWirelessCommType && gReceivedRemoteLinkPlayers != 0) + if (gWirelessCommType && gReceivedRemoteLinkPlayers) { if (playerId == 0) { - sBerryBlenderData->arrowPos += sBerryBlenderData->field_4C; - gSendCmd[5] = sBerryBlenderData->field_116; - gSendCmd[6] = sBerryBlenderData->arrowPos; - sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + sBerryBlender->arrowPos += sBerryBlender->speed; + gSendCmd[BLENDER_COMM_PROGRESS_BAR] = sBerryBlender->progressBarValue; + gSendCmd[BLENDER_COMM_ARROW_POS] = sBerryBlender->arrowPos; + DrawBlenderCenter(&sBerryBlender->bgAffineSrc); } else { - if ((gRecvCmds[0][0] & 0xFF00) == 0x4400) + if ((gRecvCmds[0][BLENDER_COMM_INPUT_STATE] & 0xFF00) == RFUCMD_BLENDER_SEND_KEYS) { - sBerryBlenderData->field_116 = gRecvCmds[0][5]; - sBerryBlenderData->arrowPos = gRecvCmds[0][6]; - sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + sBerryBlender->progressBarValue = gRecvCmds[0][BLENDER_COMM_PROGRESS_BAR]; + sBerryBlender->arrowPos = gRecvCmds[0][BLENDER_COMM_ARROW_POS]; + DrawBlenderCenter(&sBerryBlender->bgAffineSrc); } } } else { - sBerryBlenderData->arrowPos += sBerryBlenderData->field_4C; - sub_8082CB4(&sBerryBlenderData->bgAffineSrc); + sBerryBlender->arrowPos += sBerryBlender->speed; + DrawBlenderCenter(&sBerryBlender->bgAffineSrc); } } -static void BerryBlender_SetBackgroundsPos(void) +static void SetBgPos(void) { - SetGpuReg(REG_OFFSET_BG1HOFS, sBerryBlenderData->bg_X); - SetGpuReg(REG_OFFSET_BG1VOFS, sBerryBlenderData->bg_Y); + SetGpuReg(REG_OFFSET_BG1HOFS, sBerryBlender->bg_X); + SetGpuReg(REG_OFFSET_BG1VOFS, sBerryBlender->bg_Y); - SetGpuReg(REG_OFFSET_BG0HOFS, sBerryBlenderData->bg_X); - SetGpuReg(REG_OFFSET_BG0VOFS, sBerryBlenderData->bg_Y); + SetGpuReg(REG_OFFSET_BG0HOFS, sBerryBlender->bg_X); + SetGpuReg(REG_OFFSET_BG0VOFS, sBerryBlender->bg_Y); } -static void sub_8082E3C(struct Sprite* sprite) +static void SpriteCB_Particle(struct Sprite* sprite) { sprite->data[2] += sprite->data[0]; sprite->data[3] += sprite->data[1]; @@ -2965,7 +3163,7 @@ static void sub_8082E3C(struct Sprite* sprite) DestroySprite(sprite); } -static void sub_8082E84(void) +static void CreateParticleSprites(void) { s32 limit = (Random() % 2) + 1; s32 i; @@ -2976,20 +3174,20 @@ static void sub_8082E84(void) s32 x, y; u8 spriteId; - rand = sBerryBlenderData->arrowPos + (Random() % 20); + rand = sBerryBlender->arrowPos + (Random() % 20); x = gSineTable[(rand & 0xFF) + 64] / 4; y = gSineTable[(rand & 0xFF)] / 4; - spriteId = CreateSprite(&sUnknown_08339BE0, x + 120, y + 80, 1); + spriteId = CreateSprite(&sSpriteTemplate_Particles, x + 120, y + 80, 1); gSprites[spriteId].data[0] = 16 - (Random() % 32); gSprites[spriteId].data[1] = 16 - (Random() % 32); - gSprites[spriteId].callback = sub_8082E3C; + gSprites[spriteId].callback = SpriteCB_Particle; } } -static void sub_8082F68(struct Sprite* sprite) +static void SpriteCB_ScoreSymbol(struct Sprite* sprite) { sprite->data[0]++; sprite->pos2.y = -(sprite->data[0] / 3); @@ -2998,7 +3196,7 @@ static void sub_8082F68(struct Sprite* sprite) DestroySprite(sprite); } -static void sub_8082F9C(struct Sprite* sprite) +static void SpriteCB_ScoreSymbolBest(struct Sprite* sprite) { sprite->data[0]++; sprite->pos2.y = -(sprite->data[0] * 2); @@ -3009,56 +3207,65 @@ static void sub_8082F9C(struct Sprite* sprite) DestroySprite(sprite); } -static void Blender_SetParticipantBerryData(u8 participantId, u16 itemId) +static void SetPlayerBerryData(u8 playerId, u16 itemId) { - sBerryBlenderData->chosenItemId[participantId] = itemId; - Blender_CopyBerryData(&sBerryBlenderData->blendedBerries[participantId], itemId); + sBerryBlender->chosenItemId[playerId] = itemId; + ConvertItemToBlenderBerry(&sBerryBlender->blendedBerries[playerId], itemId); } -static void sub_8083010(struct Sprite* sprite) +#define sState data[0] +#define sYPos data[1] +#define sDelay data[2] +#define sAnimId data[3] + +static void SpriteCB_CountdownNumber(struct Sprite* sprite) { - switch (sprite->data[0]) + switch (sprite->sState) { case 0: - sprite->data[1] += 8; - if (sprite->data[1] > 88) + sprite->sYPos += 8; + if (sprite->sYPos > DISPLAY_HEIGHT / 2 + 8) { - sprite->data[1] = 88; - sprite->data[0]++; - PlaySE(SE_KON); + sprite->sYPos = DISPLAY_HEIGHT / 2 + 8; + sprite->sState++; + PlaySE(SE_BALL_BOUNCE_1); } break; case 1: - sprite->data[2] += 1; - if (sprite->data[2] > 20) + if (++sprite->sDelay > 20) { - sprite->data[0]++; - sprite->data[2] = 0; + sprite->sState++; + sprite->sDelay = 0; } break; case 2: - sprite->data[1] += 4; - if (sprite->data[1] > 176) + sprite->sYPos += 4; + if (sprite->sYPos > DISPLAY_HEIGHT + 16) { - if (++sprite->data[3] == 3) + if (++sprite->sAnimId == 3) { DestroySprite(sprite); - CreateSprite(&sUnknown_08339C60, 120, -20, 2); + CreateSprite(&sSpriteTemplate_Start, 120, -20, 2); } else { - sprite->data[0] = 0; - sprite->data[1] = -16; - StartSpriteAnim(sprite, sprite->data[3]); + sprite->sState = 0; + sprite->sYPos = -16; + StartSpriteAnim(sprite, sprite->sAnimId); } } break; } - sprite->pos2.y = sprite->data[1]; + sprite->pos2.y = sprite->sYPos; } -static void sub_80830C0(struct Sprite* sprite) +#undef sState +#undef sYPos +#undef sDelay +#undef sAnimId + +static void SpriteCB_Start(struct Sprite* sprite) { switch (sprite->data[0]) { @@ -3078,9 +3285,9 @@ static void sub_80830C0(struct Sprite* sprite) break; case 2: sprite->data[1] += 4; - if (sprite->data[1] > 176) + if (sprite->data[1] > DISPLAY_HEIGHT + 16) { - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; DestroySprite(sprite); } break; @@ -3089,175 +3296,190 @@ static void sub_80830C0(struct Sprite* sprite) sprite->pos2.y = sprite->data[1]; } -static void sub_8083140(u16 a0, u16 a1) +static void TryUpdateProgressBar(u16 current, u16 limit) { - if (sBerryBlenderData->field_118 < a0) + // Progress bar doesn't move unless it's going up + if (sBerryBlender->maxProgressBarValue < current) { - sBerryBlenderData->field_118 += 2; - sub_8083170(sBerryBlenderData->field_118, a1); + sBerryBlender->maxProgressBarValue += 2; + UpdateProgressBar(sBerryBlender->maxProgressBarValue, limit); } } -static void sub_8083170(u16 a0, u16 a1) +static void UpdateProgressBar(u16 value, u16 limit) { - s32 var1, var2, var3, var4; + s32 amountFilled, maxFilledSegment, subSegmentsFilled, i; u16 *vram; vram = (u16*)(BG_SCREEN_ADDR(12)); - var1 = (a0 * 64) / a1; - var2 = var1 / 8; - for (var4 = 0; var4 < var2; var4++) + amountFilled = (value * 64) / limit; + maxFilledSegment = amountFilled / 8; + + // Set filled progress bar tiles in full segments + for (i = 0; i < maxFilledSegment; i++) { - vram[11 + var4] = 0x80E9; - vram[43 + var4] = 0x80F9; + vram[11 + i] = PROGRESS_BAR_FILLED_TOP; + vram[43 + i] = PROGRESS_BAR_FILLED_BOTTOM; } - var3 = var1 % 8; - if (var3 != 0) + + // If progress bar between segments, fill with the corresponding partial segment tiles + subSegmentsFilled = amountFilled % 8; + if (subSegmentsFilled != 0) { - vram[11 + var4] = var3 + 0x80E1; - vram[43 + var4] = var3 + 0x80F1; - var4++; + vram[11 + i] = subSegmentsFilled + PROGRESS_BAR_EMPTY_TOP; + vram[43 + i] = subSegmentsFilled + PROGRESS_BAR_EMPTY_BOTTOM; + i++; } - for (; var4 < 8; var4++) + + // Fill the remaining full segments with empty progress tiles + // Essentially unnecessary, given that it starts empty and progress only goes up + for (; i < 8; i++) { - vram[11 + var4] = 0x80E1; - vram[43 + var4] = 0x80F1; + vram[11 + i] = PROGRESS_BAR_EMPTY_TOP; + vram[43 + i] = PROGRESS_BAR_EMPTY_BOTTOM; } } -static u32 sub_8083210(u16 a0) +static u32 ArrowSpeedToRPM(u16 speed) { - return 0x57E40 * a0 / 0x10000; + return 60 * 60 * 100 * speed / MAX_ARROW_POS; } -static void sub_8083230(u16 a0) +static void UpdateRPM(u16 speed) { u8 i; - u8 palAdders[5]; + u8 digits[5]; - u32 var = sub_8083210(a0); - if (sBerryBlenderData->max_RPM < var) - sBerryBlenderData->max_RPM = var; + // Check if new max RPM has been reached + u32 currentRPM = ArrowSpeedToRPM(speed); + if (sBerryBlender->maxRPM < currentRPM) + sBerryBlender->maxRPM = currentRPM; + + // Draw the current RPM number at the bottom of the screen for (i = 0; i < 5; i++) { - palAdders[i] = var % 10; - var /= 10; + digits[i] = currentRPM % 10; + currentRPM /= 10; } - *((u16*)(VRAM + 0x6458)) = palAdders[4] + 0x8072; - *((u16*)(VRAM + 0x645A)) = palAdders[3] + 0x8072; - *((u16*)(VRAM + 0x645C)) = palAdders[2] + 0x8072; - *((u16*)(VRAM + 0x6460)) = palAdders[1] + 0x8072; - *((u16*)(VRAM + 0x6462)) = palAdders[0] + 0x8072; + *((u16*)(BG_SCREEN_ADDR(12) + 0x458)) = digits[4] + RPM_DIGIT; + *((u16*)(BG_SCREEN_ADDR(12) + 0x45A)) = digits[3] + RPM_DIGIT; + *((u16*)(BG_SCREEN_ADDR(12) + 0x45C)) = digits[2] + RPM_DIGIT; + *((u16*)(BG_SCREEN_ADDR(12) + 0x460)) = digits[1] + RPM_DIGIT; + *((u16*)(BG_SCREEN_ADDR(12) + 0x462)) = digits[0] + RPM_DIGIT; } -static void sub_80832BC(s16* a0, u16 a1) +// Passed a pointer to the bg x/y +// Used when hitting a Best at high RPM +static void ShakeBgCoordForHit(s16* coord, u16 speed) { - if (*a0 == 0) - *a0 = (Random() % a1) - (a1 / 2); + if (*coord == 0) + *coord = (Random() % speed) - (speed / 2); } -static void sub_80832E8(s16* a0) +static void RestoreBgCoord(s16* coord) { - if (*a0 < 0) - (*a0)++; - if (*a0 > 0) - (*a0)--; + if (*coord < 0) + (*coord)++; + if (*coord > 0) + (*coord)--; } -static void sub_808330C(void) +// For "unshaking" the screen after ShakeBgCoordForHit is called +static void RestoreBgCoords(void) { - sub_80832E8((s16 *)&sBerryBlenderData->bg_X); - sub_80832E8((s16 *)&sBerryBlenderData->bg_Y); + RestoreBgCoord((s16 *)&sBerryBlender->bg_X); + RestoreBgCoord((s16 *)&sBerryBlender->bg_Y); } -static void sub_8083334(s16* a0, u16 a1) +static void BlenderLandShakeBgCoord(s16* coord, u16 timer) { - u8 var; + u8 strength; - if (a1 < 10) - var = 16; + if (timer < 10) + strength = 16; else - var = 8; + strength = 8; - if (*a0 == 0) + if (*coord == 0) { - *a0 = (Random() % var) - (var / 2); + *coord = (Random() % strength) - (strength / 2); } else { - if (*a0 < 0) - (*a0)++; - if (*a0 > 0) - (*a0)--; + if (*coord < 0) + (*coord)++; + if (*coord > 0) + (*coord)--; } } -static bool8 sub_8083380(void) +// For shaking the screen when the blender lands after falling in at the start +static bool8 UpdateBlenderLandScreenShake(void) { - if (sBerryBlenderData->framesToWait == 0) + if (sBerryBlender->framesToWait == 0) { - sBerryBlenderData->bg_X = 0; - sBerryBlenderData->bg_Y = 0; + sBerryBlender->bg_X = 0; + sBerryBlender->bg_Y = 0; } - sBerryBlenderData->framesToWait++; - sub_8083334(&sBerryBlenderData->bg_X, sBerryBlenderData->framesToWait); - sub_8083334(&sBerryBlenderData->bg_Y, sBerryBlenderData->framesToWait); + sBerryBlender->framesToWait++; + BlenderLandShakeBgCoord(&sBerryBlender->bg_X, sBerryBlender->framesToWait); + BlenderLandShakeBgCoord(&sBerryBlender->bg_Y, sBerryBlender->framesToWait); - if (sBerryBlenderData->framesToWait == 20) + if (sBerryBlender->framesToWait == 20) { - sBerryBlenderData->bg_X = 0; - sBerryBlenderData->bg_Y = 0; + sBerryBlender->bg_X = 0; + sBerryBlender->bg_Y = 0; return TRUE; } return FALSE; } -static void sub_80833F8(struct Sprite* sprite) +static void SpriteCB_PlayerArrow(struct Sprite* sprite) { - sprite->pos2.x = -(sBerryBlenderData->bg_X); - sprite->pos2.y = -(sBerryBlenderData->bg_Y); + sprite->pos2.x = -(sBerryBlender->bg_X); + sprite->pos2.y = -(sBerryBlender->bg_Y); } static void TryUpdateBerryBlenderRecord(void) { - if (gSaveBlock1Ptr->berryBlenderRecords[sBerryBlenderData->playersNo - 2] < sBerryBlenderData->max_RPM) - gSaveBlock1Ptr->berryBlenderRecords[sBerryBlenderData->playersNo - 2] = sBerryBlenderData->max_RPM; + if (gSaveBlock1Ptr->berryBlenderRecords[sBerryBlender->numPlayers - 2] < sBerryBlender->maxRPM) + gSaveBlock1Ptr->berryBlenderRecords[sBerryBlender->numPlayers - 2] = sBerryBlender->maxRPM; } -static bool8 Blender_PrintBlendingResults(void) +static bool8 PrintBlendingResults(void) { u16 i; s32 xPos, yPos; struct Pokeblock pokeblock; - u8 flavors[6]; + u8 flavors[FLAVOR_COUNT + 1]; u8 text[40]; u16 berryIds[4]; // unused - switch (sBerryBlenderData->mainState) + switch (sBerryBlender->mainState) { case 0: - sBerryBlenderData->mainState++; - sBerryBlenderData->framesToWait = 17; + sBerryBlender->mainState++; + sBerryBlender->framesToWait = 17; break; case 1: - sBerryBlenderData->framesToWait -= 10; - if (sBerryBlenderData->framesToWait < 0) + sBerryBlender->framesToWait -= 10; + if (sBerryBlender->framesToWait < 0) { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->mainState++; + sBerryBlender->framesToWait = 0; + sBerryBlender->mainState++; } break; case 2: - if (++sBerryBlenderData->framesToWait > 20) + if (++sBerryBlender->framesToWait > 20) { - for (i = 0; i < BLENDER_SCORES_NO; i++) - DestroySprite(&gSprites[sBerryBlenderData->scoreIconIds[i]]); + for (i = 0; i < NUM_SCORE_TYPES; i++) + DestroySprite(&gSprites[sBerryBlender->scoreIconIds[i]]); - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->mainState++; + sBerryBlender->framesToWait = 0; + sBerryBlender->mainState++; } break; case 3: @@ -3268,92 +3490,91 @@ static bool8 Blender_PrintBlendingResults(void) xPos = GetStringCenterAlignXOffset(1, sText_BlendingResults, 0xA8); Blender_AddTextPrinter(5, sText_BlendingResults, xPos, 1, TEXT_SPEED_FF, 0); - if (sBerryBlenderData->playersNo == 4) + if (sBerryBlender->numPlayers == BLENDER_MAX_PLAYERS) yPos = 17; else yPos = 21; - for (i = 0; i < sBerryBlenderData->playersNo; yPos += 16, i++) + for (i = 0; i < sBerryBlender->numPlayers; yPos += 16, i++) { - u8 place = sBerryBlenderData->playerPlaces[i]; - - ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, i + 1, STR_CONV_MODE_LEFT_ALIGN, 1); - StringAppend(sBerryBlenderData->stringVar, sText_Dot); - StringAppend(sBerryBlenderData->stringVar, gText_Space); - StringAppend(sBerryBlenderData->stringVar, gLinkPlayers[place].name); - Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 8, yPos, TEXT_SPEED_FF, 3); - - StringCopy(sBerryBlenderData->stringVar, sBerryBlenderData->blendedBerries[place].name); - ConvertInternationalString(sBerryBlenderData->stringVar, gLinkPlayers[place].language); - StringAppend(sBerryBlenderData->stringVar, sText_SpaceBerry); - Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 0x54, yPos, TEXT_SPEED_FF, 3); + u8 place = sBerryBlender->playerPlaces[i]; + + ConvertIntToDecimalStringN(sBerryBlender->stringVar, i + 1, STR_CONV_MODE_LEFT_ALIGN, 1); + StringAppend(sBerryBlender->stringVar, sText_Dot); + StringAppend(sBerryBlender->stringVar, gText_Space); + StringAppend(sBerryBlender->stringVar, gLinkPlayers[place].name); + Blender_AddTextPrinter(5, sBerryBlender->stringVar, 8, yPos, TEXT_SPEED_FF, 3); + + StringCopy(sBerryBlender->stringVar, sBerryBlender->blendedBerries[place].name); + ConvertInternationalString(sBerryBlender->stringVar, gLinkPlayers[place].language); + StringAppend(sBerryBlender->stringVar, sText_SpaceBerry); + Blender_AddTextPrinter(5, sBerryBlender->stringVar, 0x54, yPos, TEXT_SPEED_FF, 3); } Blender_AddTextPrinter(5, sText_MaximumSpeed, 0, 0x51, TEXT_SPEED_FF, 3); - ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, sBerryBlenderData->max_RPM / 100, STR_CONV_MODE_RIGHT_ALIGN, 3); - StringAppend(sBerryBlenderData->stringVar, sText_Dot); + ConvertIntToDecimalStringN(sBerryBlender->stringVar, sBerryBlender->maxRPM / 100, STR_CONV_MODE_RIGHT_ALIGN, 3); + StringAppend(sBerryBlender->stringVar, sText_Dot); - ConvertIntToDecimalStringN(text, sBerryBlenderData->max_RPM % 100, STR_CONV_MODE_LEADING_ZEROS, 2); - StringAppend(sBerryBlenderData->stringVar, text); - StringAppend(sBerryBlenderData->stringVar, sText_RPM); + ConvertIntToDecimalStringN(text, sBerryBlender->maxRPM % 100, STR_CONV_MODE_LEADING_ZEROS, 2); + StringAppend(sBerryBlender->stringVar, text); + StringAppend(sBerryBlender->stringVar, sText_RPM); - xPos = GetStringRightAlignXOffset(1, sBerryBlenderData->stringVar, 0xA8); - Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, xPos, 0x51, TEXT_SPEED_FF, 3); + xPos = GetStringRightAlignXOffset(1, sBerryBlender->stringVar, 0xA8); + Blender_AddTextPrinter(5, sBerryBlender->stringVar, xPos, 0x51, TEXT_SPEED_FF, 3); Blender_AddTextPrinter(5, sText_Time, 0, 0x61, TEXT_SPEED_FF, 3); - seconds = (sBerryBlenderData->gameFrameTime / 60) % 60; - minutes = (sBerryBlenderData->gameFrameTime / (60 * 60)); + seconds = (sBerryBlender->gameFrameTime / 60) % 60; + minutes = (sBerryBlender->gameFrameTime / (60 * 60)); - ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, minutes, STR_CONV_MODE_LEADING_ZEROS, 2); - txtPtr = StringAppend(sBerryBlenderData->stringVar, sText_Min); + ConvertIntToDecimalStringN(sBerryBlender->stringVar, minutes, STR_CONV_MODE_LEADING_ZEROS, 2); + txtPtr = StringAppend(sBerryBlender->stringVar, sText_Min); ConvertIntToDecimalStringN(txtPtr, seconds, STR_CONV_MODE_LEADING_ZEROS, 2); - StringAppend(sBerryBlenderData->stringVar, sText_Sec); + StringAppend(sBerryBlender->stringVar, sText_Sec); - xPos = GetStringRightAlignXOffset(1, sBerryBlenderData->stringVar, 0xA8); - Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, xPos, 0x61, TEXT_SPEED_FF, 3); + xPos = GetStringRightAlignXOffset(1, sBerryBlender->stringVar, 0xA8); + Blender_AddTextPrinter(5, sBerryBlender->stringVar, xPos, 0x61, TEXT_SPEED_FF, 3); - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->mainState++; + sBerryBlender->framesToWait = 0; + sBerryBlender->mainState++; CopyWindowToVram(5, 2); } break; case 4: - if (gMain.newKeys & A_BUTTON) - sBerryBlenderData->mainState++; + if (JOY_NEW(A_BUTTON)) + sBerryBlender->mainState++; break; case 5: ClearStdWindowAndFrameToTransparent(5, 1); for (i = 0; i < BLENDER_MAX_PLAYERS; i++) { - if (sBerryBlenderData->chosenItemId[i] != 0) - berryIds[i] = sBerryBlenderData->chosenItemId[i] - FIRST_BERRY_INDEX; - if (sBerryBlenderData->field_8E[i] != 0xFF) + if (sBerryBlender->chosenItemId[i] != 0) + berryIds[i] = sBerryBlender->chosenItemId[i] - FIRST_BERRY_INDEX; + if (sBerryBlender->arrowIdToPlayerId[i] != NO_PLAYER) { PutWindowTilemap(i); CopyWindowToVram(i, 3); } } - sub_8081E20(); - - Blender_CalculatePokeblock(sBerryBlenderData->blendedBerries, &pokeblock, sBerryBlenderData->playersNo, flavors, sBerryBlenderData->max_RPM); - Blender_PrintMadePokeblockString(&pokeblock, sBerryBlenderData->stringVar); - TryAddContestLinkTvShow(&pokeblock, &sBerryBlenderData->tvBlender); + Debug_SetStageVars(); + CalculatePokeblock(sBerryBlender->blendedBerries, &pokeblock, sBerryBlender->numPlayers, flavors, sBerryBlender->maxRPM); + PrintMadePokeblockString(&pokeblock, sBerryBlender->stringVar); + TryAddContestLinkTvShow(&pokeblock, &sBerryBlender->tvBlender); - CreateTask(sub_8083F3C, 6); + CreateTask(Task_PlayPokeblockFanfare, 6); IncrementDailyBerryBlender(); RemoveBagItem(gSpecialVar_ItemId, 1); AddPokeblock(&pokeblock); - sBerryBlenderData->textState = 0; - sBerryBlenderData->mainState++; + sBerryBlender->textState = 0; + sBerryBlender->mainState++; break; case 6: - if (Blender_PrintText(&sBerryBlenderData->textState, sBerryBlenderData->stringVar, GetPlayerTextSpeedDelay())) + if (Blender_PrintText(&sBerryBlender->textState, sBerryBlender->stringVar, GetPlayerTextSpeedDelay())) { TryUpdateBerryBlenderRecord(); return TRUE; @@ -3364,7 +3585,7 @@ static bool8 Blender_PrintBlendingResults(void) return FALSE; } -static void Blender_PrintMadePokeblockString(struct Pokeblock *pokeblock, u8 *dst) +static void PrintMadePokeblockString(struct Pokeblock *pokeblock, u8 *dst) { u8 text[12]; u8 flavorLvl, feel; @@ -3389,7 +3610,7 @@ static void Blender_PrintMadePokeblockString(struct Pokeblock *pokeblock, u8 *ds StringAppend(dst, sText_NewParagraph); } -static void Blender_SortBasedOnPoints(u8 *places, u8 playersNum, u32 *scores) +static void SortBasedOnPoints(u8 *places, u8 playersNum, u32 *scores) { s32 i, j; @@ -3399,128 +3620,128 @@ static void Blender_SortBasedOnPoints(u8 *places, u8 playersNum, u32 *scores) { if (scores[places[i]] > scores[places[j]]) { - u8 temp = places[i]; - places[i] = places[j]; - places[j] = temp; + u8 temp; + SWAP(places[i], places[j], temp); } } } } -static void Blender_SortScores(void) +static void SortScores(void) { u8 playerId; u8 i; u8 places[BLENDER_MAX_PLAYERS]; u32 points[BLENDER_MAX_PLAYERS]; - for (i = 0; i < sBerryBlenderData->playersNo; i++) + for (i = 0; i < sBerryBlender->numPlayers; i++) places[i] = i; - for (i = 0; i < sBerryBlenderData->playersNo; i++) + for (i = 0; i < sBerryBlender->numPlayers; i++) { - points[i] = 1000000 * sBerryBlenderData->scores[i][BLENDER_SCORE_BEST]; - points[i] += 1000 * sBerryBlenderData->scores[i][BLENDER_SCORE_GOOD]; - points[i] += 1000 - sBerryBlenderData->scores[i][BLENDER_SCORE_MISS]; + points[i] = 1000000 * sBerryBlender->scores[i][SCORE_BEST]; + points[i] += 1000 * sBerryBlender->scores[i][SCORE_GOOD]; + points[i] += 1000 - sBerryBlender->scores[i][SCORE_MISS]; } - Blender_SortBasedOnPoints(places, sBerryBlenderData->playersNo, points); - for (i = 0; i < sBerryBlenderData->playersNo; i++) - sBerryBlenderData->playerPlaces[i] = places[i]; + SortBasedOnPoints(places, sBerryBlender->numPlayers, points); + for (i = 0; i < sBerryBlender->numPlayers; i++) + sBerryBlender->playerPlaces[i] = places[i]; - if (gReceivedRemoteLinkPlayers == 0) + if (!gReceivedRemoteLinkPlayers) playerId = 0; else playerId = GetMultiplayerId(); - for (i = 0; i < sBerryBlenderData->playersNo; i++) + for (i = 0; i < sBerryBlender->numPlayers; i++) { - if (sBerryBlenderData->playerPlaces[i] == playerId) - sBerryBlenderData->field_1A4 = i; + if (sBerryBlender->playerPlaces[i] == playerId) + sBerryBlender->ownRanking = i; } } -static bool8 Blender_PrintBlendingRanking(void) +static bool8 PrintBlendingRanking(void) { u16 i; s32 xPos, yPos; - switch (sBerryBlenderData->mainState) + switch (sBerryBlender->mainState) { case 0: - sBerryBlenderData->mainState++; - sBerryBlenderData->framesToWait = 255; + sBerryBlender->mainState++; + sBerryBlender->framesToWait = 255; break; case 1: - sBerryBlenderData->framesToWait -= 10; - if (sBerryBlenderData->framesToWait < 0) + sBerryBlender->framesToWait -= 10; + if (sBerryBlender->framesToWait < 0) { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->mainState++; + sBerryBlender->framesToWait = 0; + sBerryBlender->mainState++; } break; case 2: - if (++sBerryBlenderData->framesToWait > 20) + if (++sBerryBlender->framesToWait > 20) { - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->mainState++; + sBerryBlender->framesToWait = 0; + sBerryBlender->mainState++; } break; case 3: DrawStdFrameWithCustomTileAndPalette(5, 0, 1, 0xD); - xPos = GetStringCenterAlignXOffset(1, sText_Ranking, 0xA8); + xPos = GetStringCenterAlignXOffset(1, sText_Ranking, 168); Blender_AddTextPrinter(5, sText_Ranking, xPos, 1, TEXT_SPEED_FF, 0); - sBerryBlenderData->scoreIconIds[BLENDER_SCORE_BEST] = CreateSprite(&sUnknown_08339B40, 128, 52, 0); - StartSpriteAnim(&gSprites[sBerryBlenderData->scoreIconIds[BLENDER_SCORE_BEST]], 3); - gSprites[sBerryBlenderData->scoreIconIds[BLENDER_SCORE_BEST]].callback = SpriteCallbackDummy; + sBerryBlender->scoreIconIds[SCORE_BEST] = CreateSprite(&sSpriteTemplate_ScoreSymbols, 128, 52, 0); + StartSpriteAnim(&gSprites[sBerryBlender->scoreIconIds[SCORE_BEST]], SCOREANIM_BEST_STATIC); + gSprites[sBerryBlender->scoreIconIds[SCORE_BEST]].callback = SpriteCallbackDummy; - sBerryBlenderData->scoreIconIds[BLENDER_SCORE_GOOD] = CreateSprite(&sUnknown_08339B40, 160, 52, 0); - gSprites[sBerryBlenderData->scoreIconIds[BLENDER_SCORE_GOOD]].callback = SpriteCallbackDummy; + sBerryBlender->scoreIconIds[SCORE_GOOD] = CreateSprite(&sSpriteTemplate_ScoreSymbols, 160, 52, 0); + // implicitly uses SCOREANIM_GOOD, no need to assign + gSprites[sBerryBlender->scoreIconIds[SCORE_GOOD]].callback = SpriteCallbackDummy; - sBerryBlenderData->scoreIconIds[BLENDER_SCORE_MISS] = CreateSprite(&sUnknown_08339B40, 192, 52, 0); - StartSpriteAnim(&gSprites[sBerryBlenderData->scoreIconIds[BLENDER_SCORE_MISS]], 1); - gSprites[sBerryBlenderData->scoreIconIds[BLENDER_SCORE_MISS]].callback = SpriteCallbackDummy; + sBerryBlender->scoreIconIds[SCORE_MISS] = CreateSprite(&sSpriteTemplate_ScoreSymbols, 192, 52, 0); + StartSpriteAnim(&gSprites[sBerryBlender->scoreIconIds[SCORE_MISS]], SCOREANIM_MISS); + gSprites[sBerryBlender->scoreIconIds[SCORE_MISS]].callback = SpriteCallbackDummy; - Blender_SortScores(); + SortScores(); - for (yPos = 0x29, i = 0; i < sBerryBlenderData->playersNo; yPos += 0x10, i++) + for (yPos = 41, i = 0; i < sBerryBlender->numPlayers; yPos += 16, i++) { - u8 place = sBerryBlenderData->playerPlaces[i]; + u8 place = sBerryBlender->playerPlaces[i]; - ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, i + 1, STR_CONV_MODE_LEFT_ALIGN, 1); - StringAppend(sBerryBlenderData->stringVar, sText_Dot); - StringAppend(sBerryBlenderData->stringVar, gText_Space); - StringAppend(sBerryBlenderData->stringVar, gLinkPlayers[place].name); - Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 0, yPos, TEXT_SPEED_FF, 3); + ConvertIntToDecimalStringN(sBerryBlender->stringVar, i + 1, STR_CONV_MODE_LEFT_ALIGN, 1); + StringAppend(sBerryBlender->stringVar, sText_Dot); + StringAppend(sBerryBlender->stringVar, gText_Space); + StringAppend(sBerryBlender->stringVar, gLinkPlayers[place].name); + Blender_AddTextPrinter(5, sBerryBlender->stringVar, 0, yPos, TEXT_SPEED_FF, 3); - ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, sBerryBlenderData->scores[place][BLENDER_SCORE_BEST], STR_CONV_MODE_RIGHT_ALIGN, 3); - Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 0x4E, yPos, TEXT_SPEED_FF, 3); + ConvertIntToDecimalStringN(sBerryBlender->stringVar, sBerryBlender->scores[place][SCORE_BEST], STR_CONV_MODE_RIGHT_ALIGN, 3); + Blender_AddTextPrinter(5, sBerryBlender->stringVar, 78, yPos, TEXT_SPEED_FF, 3); - ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, sBerryBlenderData->scores[place][BLENDER_SCORE_GOOD], STR_CONV_MODE_RIGHT_ALIGN, 3); - Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 0x6E, yPos, TEXT_SPEED_FF, 3); + ConvertIntToDecimalStringN(sBerryBlender->stringVar, sBerryBlender->scores[place][SCORE_GOOD], STR_CONV_MODE_RIGHT_ALIGN, 3); + Blender_AddTextPrinter(5, sBerryBlender->stringVar, 78 + 32, yPos, TEXT_SPEED_FF, 3); - ConvertIntToDecimalStringN(sBerryBlenderData->stringVar, sBerryBlenderData->scores[place][BLENDER_SCORE_MISS], STR_CONV_MODE_RIGHT_ALIGN, 3); - Blender_AddTextPrinter(5, sBerryBlenderData->stringVar, 0x8E, yPos, TEXT_SPEED_FF, 3); + ConvertIntToDecimalStringN(sBerryBlender->stringVar, sBerryBlender->scores[place][SCORE_MISS], STR_CONV_MODE_RIGHT_ALIGN, 3); + Blender_AddTextPrinter(5, sBerryBlender->stringVar, 78 + 64, yPos, TEXT_SPEED_FF, 3); } PutWindowTilemap(5); CopyWindowToVram(5, 3); - sBerryBlenderData->framesToWait = 0; - sBerryBlenderData->mainState++; + sBerryBlender->framesToWait = 0; + sBerryBlender->mainState++; break; case 4: - if (++sBerryBlenderData->framesToWait > 20) - sBerryBlenderData->mainState++; + if (++sBerryBlender->framesToWait > 20) + sBerryBlender->mainState++; break; case 5: - if (gMain.newKeys & A_BUTTON) + if (JOY_NEW(A_BUTTON)) { PlaySE(SE_SELECT); - sBerryBlenderData->mainState++; + sBerryBlender->mainState++; } break; case 6: - sBerryBlenderData->mainState = 0; + sBerryBlender->mainState = 0; return TRUE; } @@ -3539,11 +3760,11 @@ void ShowBerryBlenderRecordWindow(void) DrawStdWindowFrame(gRecordsWindowId, 0); FillWindowPixelBuffer(gRecordsWindowId, PIXEL_FILL(1)); - xPos = GetStringCenterAlignXOffset(1, gText_BlenderMaxSpeedRecord, 0x90); + xPos = GetStringCenterAlignXOffset(1, gText_BlenderMaxSpeedRecord, 144); AddTextPrinterParameterized(gRecordsWindowId, 1, gText_BlenderMaxSpeedRecord, xPos, 1, 0, NULL); - AddTextPrinterParameterized(gRecordsWindowId, 1, gText_234Players, 4, 0x29, 0, NULL); + AddTextPrinterParameterized(gRecordsWindowId, 1, gText_234Players, 4, 41, 0, NULL); - for (i = 0, yPos = 0x29; i < BLENDER_SCORES_NO; i++) + for (i = 0, yPos = 41; i < NUM_SCORE_TYPES; i++) { u8 *txtPtr; u32 record; @@ -3555,7 +3776,7 @@ void ShowBerryBlenderRecordWindow(void) txtPtr = ConvertIntToDecimalStringN(txtPtr, record % 100, STR_CONV_MODE_LEADING_ZEROS, 2); txtPtr = StringAppend(txtPtr, sText_RPM); - xPos = GetStringRightAlignXOffset(1, text, 0x8C); + xPos = GetStringRightAlignXOffset(1, text, 140); AddTextPrinterParameterized(gRecordsWindowId, 1, text, xPos, yPos + (i * 16), 0, NULL); } @@ -3563,16 +3784,16 @@ void ShowBerryBlenderRecordWindow(void) CopyWindowToVram(gRecordsWindowId, 3); } -static void sub_8083F3C(u8 taskId) +static void Task_PlayPokeblockFanfare(u8 taskId) { if (gTasks[taskId].data[0] == 0) { - PlayFanfare(MUS_FANFA1); + PlayFanfare(MUS_LEVEL_UP); gTasks[taskId].data[0]++; } if (IsFanfareTaskInactive()) { - PlayBGM(sBerryBlenderData->field_154); + PlayBGM(sBerryBlender->savedMusic); DestroyTask(taskId); } } @@ -3586,28 +3807,30 @@ static bool32 TryAddContestLinkTvShow(struct Pokeblock *pokeblock, struct TvBlen tvBlender->pokeblockColor = pokeblock->color; tvBlender->name[0] = EOS; - if (gReceivedRemoteLinkPlayers != 0) + if (gReceivedRemoteLinkPlayers) { - if (sBerryBlenderData->field_1A4 == 0 && sheen > 20) + if (sBerryBlender->ownRanking == 0 && sheen > 20) { - StringCopy(tvBlender->name, gLinkPlayers[sBerryBlenderData->playerPlaces[sBerryBlenderData->playersNo - 1]].name); + // Player came first, try to put on air + StringCopy(tvBlender->name, gLinkPlayers[sBerryBlender->playerPlaces[sBerryBlender->numPlayers - 1]].name); tvBlender->pokeblockFlavor = GetPokeblocksFlavor(pokeblock); if (Put3CheersForPokeblocksOnTheAir(tvBlender->name, tvBlender->pokeblockFlavor, tvBlender->pokeblockColor, tvBlender->pokeblockSheen, - gLinkPlayers[sBerryBlenderData->playerPlaces[sBerryBlenderData->playersNo - 1]].language)) + gLinkPlayers[sBerryBlender->playerPlaces[sBerryBlender->numPlayers - 1]].language)) { return TRUE; } return FALSE; } - else if (sBerryBlenderData->field_1A4 == sBerryBlenderData->playersNo - 1 && sheen <= 20) + else if (sBerryBlender->ownRanking == sBerryBlender->numPlayers - 1 && sheen <= 20) { - StringCopy(tvBlender->name, gLinkPlayers[sBerryBlenderData->playerPlaces[0]].name); + // Player came last, try to put on air + StringCopy(tvBlender->name, gLinkPlayers[sBerryBlender->playerPlaces[0]].name); tvBlender->pokeblockFlavor = GetPokeblocksFlavor(pokeblock); if (Put3CheersForPokeblocksOnTheAir(tvBlender->name, tvBlender->pokeblockFlavor, tvBlender->pokeblockColor, tvBlender->pokeblockSheen, - gLinkPlayers[sBerryBlenderData->playerPlaces[0]].language)) + gLinkPlayers[sBerryBlender->playerPlaces[0]].language)) { return TRUE; } @@ -3628,19 +3851,19 @@ static void Blender_AddTextPrinter(u8 windowId, const u8 *string, u8 x, u8 y, s3 { case 0: case 3: - txtColor[0] = 1; - txtColor[1] = 2; - txtColor[2] = 3; + txtColor[0] = TEXT_COLOR_WHITE; + txtColor[1] = TEXT_COLOR_DARK_GREY; + txtColor[2] = TEXT_COLOR_LIGHT_GREY; break; case 1: - txtColor[0] = 0; - txtColor[1] = 2; - txtColor[2] = 3; + txtColor[0] = TEXT_COLOR_TRANSPARENT; + txtColor[1] = TEXT_COLOR_DARK_GREY; + txtColor[2] = TEXT_COLOR_LIGHT_GREY; break; case 2: - txtColor[0] = 0; - txtColor[1] = 4; - txtColor[2] = 5; + txtColor[0] = TEXT_COLOR_TRANSPARENT; + txtColor[1] = TEXT_COLOR_RED; + txtColor[2] = TEXT_COLOR_LIGHT_RED; break; } diff --git a/src/berry_crush.c b/src/berry_crush.c index 654a3b4e3..d753e603c 100755 --- a/src/berry_crush.c +++ b/src/berry_crush.c @@ -825,7 +825,7 @@ u32 sub_8020C0C(MainCallback callback) if (callback == CB2_ReturnToField) { gTextFlags.autoScroll = TRUE; - PlayNewMapMusic(MUS_POKECEN); + PlayNewMapMusic(MUS_POKE_CENTER); SetMainCallback1(CB1_Overworld); } @@ -900,7 +900,7 @@ static void sub_8020D8C(void) void sub_8020E1C(void) { DestroyTask(gUnknown_02022C90->unkA); - ChooseBerrySetCallback(sub_8020D8C); + ChooseBerryForMachine(sub_8020D8C); } static void sub_8020E3C(void) @@ -1344,9 +1344,9 @@ void sub_80216E0(struct BerryCrushGame *arg0, struct BerryCrushGame_138 *arg1) else { if (sp4 == 1) - PlaySE(SE_TOY_DANGO); + PlaySE(SE_MUD_BALL); else - PlaySE(SE_TOY_KABE); + PlaySE(SE_BREAKABLE_DOOR); arg0->unk25_2 = 1; } @@ -2115,7 +2115,7 @@ static u32 sub_8022E5C(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1 case 1: if (IsLinkTaskFinished()) { - PlayNewMapMusic(MUS_RG_SLOT); + PlayNewMapMusic(MUS_RG_GAME_CORNER); sub_8022BEC(7, 1, NULL); r4->unk12 = 3; r4->unkC = 0; @@ -2226,7 +2226,7 @@ static u32 sub_8023070(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r case 2: r4->unk138.unk38[r4->unk138.unk0]->callback = sub_8021608; r4->unk138.unk38[r4->unk138.unk0]->affineAnimPaused = FALSE; - PlaySE(SE_NAGERU); + PlaySE(SE_BALL_THROW); break; case 3: if (r4->unk138.unk38[r4->unk138.unk0]->callback == sub_8021608) @@ -2252,7 +2252,7 @@ static u32 sub_8023070(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r case 6: if (!IsLinkTaskFinished()) return 0; - PlaySE(SE_RU_HYUU); + PlaySE(SE_FALL); sub_8022BEC(11, 1, NULL); r4->unk12 = 5; r4->unkC = 0; @@ -2274,7 +2274,7 @@ static u32 sub_80231B8(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r r4->unk138.unk1 = 4; r4->unk138.unk0 = 0; r4->unk138.unk2 = gUnknown_082F326C[r4->unk138.unk1][0]; - PlaySE(SE_W070); + PlaySE(SE_M_STRENGTH); break; case 1: r4->unk2C = gUnknown_082F326C[r4->unk138.unk1][r4->unk138.unk0]; @@ -2357,7 +2357,7 @@ void sub_802339C(struct BerryCrushGame *r4) for (r7 = 0; r7 < r4->unk9; ++r7) { r2 = gRecvCmds[r7]; - if ((r2[0] & 0xFF00) == 0x2F00 + if ((r2[0] & 0xFF00) == RFUCMD_SEND_PACKET && r2[1] == 2) { if ((u8)r2[2] & 4) @@ -2559,7 +2559,7 @@ void sub_80236B8(struct BerryCrushGame *r5) r5->unk5C.unk02_1 = r5->unk25_4; r5->unk5C.unk0A = r5->unk25_5; memcpy(r5->unk40.unk2, &r5->unk5C, sizeof(r5->unk40.unk2)); - sub_800FE50(r5->unk40.unk2); + Rfu_SendPacket(r5->unk40.unk2); } void sub_802385C(struct BerryCrushGame *r5) @@ -2580,7 +2580,7 @@ void sub_802385C(struct BerryCrushGame *r5) for (r4 = 0; r4 < r5->unk9; ++r4) r5->unk68.as_four_players.others[r4].unk4.as_2d_bytes[1][5] = 0; #endif - if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00 + if ((gRecvCmds[0][0] & 0xFF00) != RFUCMD_SEND_PACKET || gRecvCmds[0][1] != 2) { r5->unk25_2 = 0; @@ -2667,7 +2667,7 @@ static u32 sub_8023A30(struct BerryCrushGame *r4, __attribute__((unused)) u8 *r1 { case 0: r4->unk12 = 8; - PlaySE(SE_W070); + PlaySE(SE_M_STRENGTH); BlendPalettes(0xFFFFFFFF, 8, RGB(31, 31, 0)); r4->unk138.unk0 = 2; break; @@ -2724,7 +2724,7 @@ static u32 sub_8023BC0(struct BerryCrushGame *r5, u8 *r6) { case 0: r5->unk12 = 9; - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); BlendPalettes(0xFFFFFFFF, 8, RGB(31, 0, 0)); r5->unk138.unk0 = 4; break; diff --git a/src/bike.c b/src/bike.c index 5cdf066a9..c4964b627 100644 --- a/src/bike.c +++ b/src/bike.c @@ -659,7 +659,7 @@ static void AcroBikeTransition_SideJump(u8 direction) } } playerObjEvent = &gObjectEvents[gPlayerAvatar.objectEventId]; - PlaySE(SE_JITE_PYOKO); + PlaySE(SE_BIKE_HOP); playerObjEvent->facingDirectionLocked = 1; PlayerSetAnimId(GetJumpMovementAction(direction), 2); } diff --git a/src/braille_puzzles.c b/src/braille_puzzles.c index 5dee9dd4b..a1ea44e26 100644 --- a/src/braille_puzzles.c +++ b/src/braille_puzzles.c @@ -93,7 +93,7 @@ void DoBrailleDigEffect(void) MapGridSetMetatileIdAt(17, 9, METATILE_Cave_SealedChamberEntrance_BottomMid); MapGridSetMetatileIdAt(18, 9, METATILE_Cave_SealedChamberEntrance_BottomRight | METATILE_COLLISION_MASK); DrawWholeMapView(); - PlaySE(SE_BAN); + PlaySE(SE_BANG); FlagSet(FLAG_SYS_BRAILLE_DIG); ScriptContext2_Disable(); } @@ -140,7 +140,7 @@ void DoBrailleRegirockEffect(void) MapGridSetMetatileIdAt(15, 27, 563); MapGridSetMetatileIdAt(16, 27, 3636); DrawWholeMapView(); - PlaySE(SE_BAN); + PlaySE(SE_BANG); FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED); ScriptContext2_Disable(); } @@ -186,7 +186,7 @@ void UseFlyAncientTomb_Finish(void) MapGridSetMetatileIdAt(15, 27, 563); MapGridSetMetatileIdAt(16, 27, 3636); DrawWholeMapView(); - PlaySE(SE_BAN); + PlaySE(SE_BANG); FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED); ScriptContext2_Disable(); } @@ -286,7 +286,7 @@ void DoBrailleRegirockEffect(void) MapGridSetMetatileIdAt(15, 27, METATILE_Cave_SealedChamberEntrance_BottomMid); MapGridSetMetatileIdAt(16, 27, METATILE_Cave_SealedChamberEntrance_BottomRight | METATILE_COLLISION_MASK); DrawWholeMapView(); - PlaySE(SE_BAN); + PlaySE(SE_BANG); FlagSet(FLAG_SYS_REGIROCK_PUZZLE_COMPLETED); ScriptContext2_Disable(); } @@ -325,7 +325,7 @@ void DoBrailleRegisteelEffect(void) MapGridSetMetatileIdAt(15, 27, METATILE_Cave_SealedChamberEntrance_BottomMid); MapGridSetMetatileIdAt(16, 27, METATILE_Cave_SealedChamberEntrance_BottomRight | METATILE_COLLISION_MASK); DrawWholeMapView(); - PlaySE(SE_BAN); + PlaySE(SE_BANG); FlagSet(FLAG_SYS_REGISTEEL_PUZZLE_COMPLETED); ScriptContext2_Disable(); } diff --git a/src/cable_car.c b/src/cable_car.c index 94d9d0c66..fc161284f 100644 --- a/src/cable_car.c +++ b/src/cable_car.c @@ -343,7 +343,7 @@ static void CableCarMainCallback_Setup(void) break; case 8: BeginNormalPaletteFade(0xFFFFFFFF, 3, 16, 0, RGB(0, 0, 0)); - FadeInNewBGM(MUS_ROPEWAY, 1); + FadeInNewBGM(MUS_CABLE_CAR, 1); sub_8150B6C(1); gMain.state++; break; diff --git a/src/cable_club.c b/src/cable_club.c index 982bd9fd3..93f87ec9b 100644 --- a/src/cable_club.c +++ b/src/cable_club.c @@ -865,9 +865,9 @@ static void Task_StartWiredCableClubBattle(u8 taskId) break; case 5: if (gLinkPlayers[0].trainerId & 1) - PlayMapChosenOrBattleBGM(MUS_BATTLE32); + PlayMapChosenOrBattleBGM(MUS_VS_GYM_LEADER); else - PlayMapChosenOrBattleBGM(MUS_BATTLE20); + PlayMapChosenOrBattleBGM(MUS_VS_TRAINER); SetLinkBattleTypeFlags(gSpecialVar_0x8004); CleanupOverworldWindowsAndTilemaps(); @@ -930,9 +930,9 @@ static void Task_StartWirelessCableClubBattle(u8 taskId) break; case 7: if (gLinkPlayers[0].trainerId & 1) - PlayMapChosenOrBattleBGM(MUS_BATTLE32); + PlayMapChosenOrBattleBGM(MUS_VS_GYM_LEADER); else - PlayMapChosenOrBattleBGM(MUS_BATTLE20); + PlayMapChosenOrBattleBGM(MUS_VS_TRAINER); gLinkPlayers[0].linkType = LINKTYPE_BATTLE; SetLinkBattleTypeFlags(gSpecialVar_0x8004); diff --git a/src/contest.c b/src/contest.c index 129bd7794..a84d72aa9 100644 --- a/src/contest.c +++ b/src/contest.c @@ -1389,7 +1389,7 @@ static void Task_RaiseCurtainAtStart(u8 taskId) if (gTasks[taskId].data[1]++ <= 60) break; gTasks[taskId].data[1] = 0; - PlaySE12WithPanning(SE_C_MAKU_U, 0); + PlaySE12WithPanning(SE_CONTEST_CURTAIN_RISE, 0); gTasks[taskId].data[0]++; break; case 1: @@ -1961,7 +1961,7 @@ static void Task_DoAppeals(u8 taskId) return; case APPEALSTATE_UPDATE_MOVE_USERS_STATUS: if (DrawStatusSymbol(contestant)) - PlaySE(SE_C_PASI); + PlaySE(SE_CONTEST_ICON_CHANGE); gTasks[taskId].tState = APPEALSTATE_UPDATE_OPPONENTS; return; case APPEALSTATE_UPDATE_OPPONENTS: @@ -2052,9 +2052,9 @@ static void Task_DoAppeals(u8 taskId) break; } if (DrawStatusSymbol(i)) - PlaySE(SE_C_PASI); + PlaySE(SE_CONTEST_ICON_CHANGE); else - PlaySE(SE_C_SYU); + PlaySE(SE_CONTEST_ICON_CLEAR); if (eContestantStatus[i].judgesAttentionWasRemoved) { StopFlashJudgeAttentionEye(i); @@ -2243,7 +2243,7 @@ static void Task_DoAppeals(u8 taskId) { case 0: BlendAudienceBackground(-1, 1); - PlayFanfare(MUS_ME_ZANNEN); + PlayFanfare(MUS_TOO_BAD); gTasks[taskId].tCounter++; break; case 1: @@ -2288,7 +2288,7 @@ static void Task_DoAppeals(u8 taskId) if (!eContest.waitForAudienceBlend) { AnimateAudience(); - PlaySE(SE_W227B); + PlaySE(SE_M_ENCORE2); ShowAndUpdateApplauseMeter(1); gTasks[taskId].tCounter++; } @@ -2683,7 +2683,7 @@ static void Task_WaitForOutOfTimeMsg(u8 taskId) SetBgForCurtainDrop(); gBattle_BG1_X = 0; gBattle_BG1_Y = 160; - PlaySE12WithPanning(SE_C_MAKU_D, 0); + PlaySE12WithPanning(SE_CONTEST_CURTAIN_FALL, 0); gTasks[taskId].data[0] = 0; gTasks[taskId].func = Task_DropCurtainAtAppealsEnd; } @@ -3277,7 +3277,7 @@ static bool8 UpdateConditionStars(u8 contestantIdx, bool8 resetMod) ContestBG_FillBoxWithTile(0, GetStarTileOffset(), 19, contestantOffset, 1, numStars, 17); if (resetMod) { - PlaySE(SE_EXPMAX); + PlaySE(SE_EXP_MAX); eContestantStatus[contestantIdx].conditionMod = CONDITION_NO_CHANGE; } } @@ -3286,7 +3286,7 @@ static bool8 UpdateConditionStars(u8 contestantIdx, bool8 resetMod) ContestBG_FillBoxWithTile(0, 0, 19, contestantOffset + numStars, 1, 3 - numStars, 17); if (resetMod) { - PlaySE(SE_FU_ZAKU2); + PlaySE(SE_CONTEST_CONDITION_LOSE); eContestantStatus[contestantIdx].conditionMod = CONDITION_NO_CHANGE; } } @@ -3814,7 +3814,7 @@ static void Task_UpdateAppealHearts(u8 taskId) ContestBG_FillBoxWithTile(0, heartOffset, newNumHearts + 22, gContestantTurnOrder[contestant] * 5 + 2 + onSecondLine, 1, 1, 17); if (heartsDelta > 0) { - PlaySE(SE_C_GAJI); + PlaySE(SE_CONTEST_HEART); m4aMPlayImmInit(&gMPlayInfo_SE1); m4aMPlayPitchControl(&gMPlayInfo_SE1, 0xFFFF, pitchMod * 256); } @@ -4189,7 +4189,7 @@ static void BlinkContestantBox(u8 spriteId, bool8 b) gSprites[spriteId].callback = SpriteCB_BlinkContestantBox; gSprites[spriteId2].callback = SpriteCallbackDummy; if (b == FALSE) - PlaySE(SE_C_PIKON); + PlaySE(SE_CONTEST_MONS_TURN); else PlaySE(SE_PC_LOGIN); } @@ -4678,36 +4678,36 @@ static void DoJudgeSpeechBubble(u8 symbolId) case JUDGE_SYMBOL_SWIRL: case JUDGE_SYMBOL_SWIRL_UNUSED: gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0]; - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); break; case JUDGE_SYMBOL_ONE_EXCLAMATION: gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 4; - PlaySE(SE_SEIKAI); + PlaySE(SE_SUCCESS); break; case JUDGE_SYMBOL_TWO_EXCLAMATIONS: gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 8; - PlaySE(SE_SEIKAI); + PlaySE(SE_SUCCESS); break; case JUDGE_SYMBOL_NUMBER_ONE_UNUSED: // Identical to JUDGE_SYMBOL_NUMBER_ONE gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 12; - PlaySE(SE_TK_WARPIN); + PlaySE(SE_WARP_IN); break; case JUDGE_SYMBOL_NUMBER_ONE: gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 12; - PlaySE(SE_TK_WARPIN); + PlaySE(SE_WARP_IN); break; case JUDGE_SYMBOL_NUMBER_FOUR: gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 16; - PlaySE(SE_TK_WARPIN); + PlaySE(SE_WARP_IN); break; case JUDGE_SYMBOL_STAR: gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 24; - PlaySE(SE_W215); + PlaySE(SE_M_HEAL_BELL); break; case JUDGE_SYMBOL_QUESTION_MARK: default: gSprites[spriteId].oam.tileNum = gSprites[spriteId].data[0] + 20; - PlaySE(SE_TK_WARPIN); + PlaySE(SE_WARP_IN); break; } gSprites[spriteId].data[1] = 0; @@ -5042,7 +5042,7 @@ static void DrawUnnervedSymbols(void) ContestBG_FillBoxWithIncrementingTile(0, symbolOffset, 20, contestantOffset, 2, 1, 17, 1); symbolOffset += 16; ContestBG_FillBoxWithIncrementingTile(0, symbolOffset, 20, contestantOffset + 1, 2, 1, 17, 1); - PlaySE(SE_C_PASI); + PlaySE(SE_CONTEST_ICON_CHANGE); } } } @@ -5123,7 +5123,7 @@ static void Task_StartDropCurtainAtRoundEnd(u8 taskId) { gBattle_BG1_X = 0; gBattle_BG1_Y = DISPLAY_HEIGHT; - PlaySE12WithPanning(SE_C_MAKU_D, 0); + PlaySE12WithPanning(SE_CONTEST_CURTAIN_FALL, 0); gTasks[taskId].func = Task_UpdateCurtainDropAtRoundEnd; } @@ -5235,7 +5235,7 @@ static void Task_StartRaiseCurtainAtRoundEnd(u8 taskId) else { gTasks[taskId].data[2] = 0; - PlaySE12WithPanning(SE_C_MAKU_U, 0); + PlaySE12WithPanning(SE_CONTEST_CURTAIN_RISE, 0); gTasks[taskId].func = Task_UpdateRaiseCurtainAtRoundEnd; } } diff --git a/src/contest_painting.c b/src/contest_painting.c index 5dd4a70a5..a0c39dfc7 100644 --- a/src/contest_painting.c +++ b/src/contest_painting.c @@ -384,8 +384,6 @@ static void InitContestMonPixels(u16 species, u8 whichSprite) } } -#ifdef NONMATCHING -// functionally equivalent. static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)[64][64]) { u16 tileY, tileX, pixelY, pixelX; @@ -399,125 +397,21 @@ static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels) { for (pixelX = 0; pixelX < 8; pixelX++) { - int offset = 32 * (8 * tileY + tileX) + (pixelY * 4 + pixelX / 2); - colorIndex = spriteGfx[offset]; + colorIndex = spriteGfx[((tileY * 8) + tileX) * 32 + (pixelY << 2) + (pixelX >> 1)]; if (pixelX & 1) colorIndex >>= 4; else - colorIndex &= 0xF; + colorIndex &= 0xF; // %=16 works here too. Both match - if (colorIndex == 0) // transparent pixel - (*destPixels)[8 * tileY + pixelY][tileX * 8 + pixelX] = 0x8000; + if (colorIndex == 0) // transparent pixel + (*destPixels)[tileY * 8 + pixelY][tileX * 8 + pixelX] = 0x8000; else - (*destPixels)[8 * tileY + pixelY][tileX * 8 + pixelX] = palette[colorIndex]; + (*destPixels)[tileY * 8 + pixelY][tileX * 8 + pixelX] = palette[colorIndex]; } } } } } -#else -NAKED -static void _InitContestMonPixels(u8 *spriteGfx, u16 *palette, u16 (*destPixels)[64][64]) -{ - asm_unified("\n\ - push {r4-r7,lr}\n\ - mov r7, r10\n\ - mov r6, r9\n\ - mov r5, r8\n\ - push {r5-r7}\n\ - sub sp, 0xC\n\ - mov r10, r0\n\ - mov r9, r1\n\ - str r2, [sp]\n\ - movs r0, 0\n\ -_08130394:\n\ - movs r3, 0\n\ - adds r1, r0, 0x1\n\ - str r1, [sp, 0x4]\n\ - lsls r0, 3\n\ - str r0, [sp, 0x8]\n\ -_0813039E:\n\ - movs r1, 0\n\ - adds r2, r3, 0x1\n\ - mov r8, r2\n\ - ldr r7, [sp, 0x8]\n\ - adds r0, r7, r3\n\ - lsls r0, 5\n\ - mov r12, r0\n\ - lsls r4, r3, 3\n\ -_081303AE:\n\ - movs r3, 0\n\ - lsls r0, r1, 2\n\ - adds r6, r1, 0x1\n\ - mov r2, r12\n\ - adds r5, r2, r0\n\ - ldr r7, [sp, 0x8]\n\ - adds r0, r7, r1\n\ - lsls r0, 7\n\ - ldr r1, [sp]\n\ - adds r2, r0, r1\n\ -_081303C2:\n\ - lsrs r0, r3, 1\n\ - adds r0, r5, r0\n\ - add r0, r10\n\ - ldrb r1, [r0]\n\ - movs r0, 0x1\n\ - ands r0, r3\n\ - cmp r0, 0\n\ - beq _081303D6\n\ - lsrs r1, 4\n\ - b _081303DA\n\ -_081303D6:\n\ - movs r0, 0xF\n\ - ands r1, r0\n\ -_081303DA:\n\ - cmp r1, 0\n\ - bne _081303EC\n\ - adds r0, r4, r3\n\ - lsls r0, 1\n\ - adds r0, r2\n\ - movs r7, 0x80\n\ - lsls r7, 8\n\ - adds r1, r7, 0\n\ - b _081303F8\n\ -_081303EC:\n\ - adds r0, r4, r3\n\ - lsls r0, 1\n\ - adds r0, r2\n\ - lsls r1, 1\n\ - add r1, r9\n\ - ldrh r1, [r1]\n\ -_081303F8:\n\ - strh r1, [r0]\n\ - adds r0, r3, 0x1\n\ - lsls r0, 16\n\ - lsrs r3, r0, 16\n\ - cmp r3, 0x7\n\ - bls _081303C2\n\ - lsls r0, r6, 16\n\ - lsrs r1, r0, 16\n\ - cmp r1, 0x7\n\ - bls _081303AE\n\ - mov r1, r8\n\ - lsls r0, r1, 16\n\ - lsrs r3, r0, 16\n\ - cmp r3, 0x7\n\ - bls _0813039E\n\ - ldr r2, [sp, 0x4]\n\ - lsls r0, r2, 16\n\ - lsrs r0, 16\n\ - cmp r0, 0x7\n\ - bls _08130394\n\ - add sp, 0xC\n\ - pop {r3-r5}\n\ - mov r8, r3\n\ - mov r9, r4\n\ - mov r10, r5\n\ - pop {r4-r7}\n\ - pop {r0}\n\ - bx r0"); -} -#endif #define VRAM_PICTURE_DATA(x, y) (((u16 *)(BG_SCREEN_ADDR(12)))[(y) * 32 + (x)]) diff --git a/src/contest_util.c b/src/contest_util.c index cfcb7ca3c..f0edc53dc 100644 --- a/src/contest_util.c +++ b/src/contest_util.c @@ -533,7 +533,7 @@ static void CB2_StartShowContestResults(void) if (gLinkContestFlags & LINK_CONTEST_FLAG_IS_WIRELESS) gPaletteFade.bufferTransferDisabled = TRUE; else - PlayBGM(MUS_CON_K); + PlayBGM(MUS_CONTEST_RESULTS); SetVBlankCallback(VBlankCB_ShowContestResults); } @@ -619,7 +619,7 @@ static void Task_ShowContestResults(u8 taskId) case 3: if (IsLinkTaskFinished() == TRUE) { - PlayBGM(MUS_CON_K); + PlayBGM(MUS_CONTEST_RESULTS); gPaletteFade.bufferTransferDisabled = FALSE; gTasks[taskId].tState++; break; @@ -1796,7 +1796,7 @@ static void Task_DrawFinalStandingNumber(u8 taskId) WriteSequenceToBgTilemapBuffer(2, firstTileNum + 0x10, 1, gTasks[taskId].tMonIndex * 3 + 6, 2, 1, 17, 1); sContestResults->data->numStandingsPrinted++; DestroyTask(taskId); - PlaySE(SE_JYUNI); + PlaySE(SE_CONTEST_PLACE); } } } diff --git a/src/credits.c b/src/credits.c index 11e3a0222..5f331097b 100644 --- a/src/credits.c +++ b/src/credits.c @@ -1239,7 +1239,7 @@ void CB2_StartCreditsSequence(void) BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK); EnableInterrupts(INTR_FLAG_VBLANK); SetVBlankCallback(CreditsVBlankCallback); - m4aSongNumStart(MUS_THANKFOR); + m4aSongNumStart(MUS_CREDITS); SetMainCallback2(CB2_RunCreditsSequence); gUnknown_0203BCE5 = 0; sCreditsData = AllocZeroed(sizeof(struct CreditsData)); diff --git a/src/decoration.c b/src/decoration.c index f566cc7c9..40cccbe5e 100644 --- a/src/decoration.c +++ b/src/decoration.c @@ -1623,7 +1623,7 @@ static void AttemptPlaceDecoration_(u8 taskId) } else { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); StringExpandPlaceholders(gStringVar4, gText_CantBePlacedHere); DisplayItemMessageOnField(taskId, gStringVar4, CantPlaceDecorationPrompt); } diff --git a/src/dodrio_berry_picking.c b/src/dodrio_berry_picking.c index 41d8aa419..34f73126b 100644 --- a/src/dodrio_berry_picking.c +++ b/src/dodrio_berry_picking.c @@ -467,7 +467,7 @@ void StartDodrioBerryPicking(u16 a0, void (*callback)(void)) sub_80273F0(); sub_8026B5C(gUnknown_02022C98->unk24, &gUnknown_02022C98->unk44, &gUnknown_02022C98->unk48); StopMapMusic(); - PlayNewMapMusic(MUS_RG_KINOMIKUI); + PlayNewMapMusic(MUS_RG_BERRY_PICK); } else { @@ -877,7 +877,7 @@ static void sub_8025198(void) if (WaitFanfare(TRUE)) { sub_8026240(6); - FadeOutAndPlayNewMapMusic(MUS_RG_WIN_YASEI, 4); + FadeOutAndPlayNewMapMusic(MUS_RG_VICTORY_WILD, 4); } break; } @@ -916,7 +916,7 @@ static void sub_8025230(void) if (WaitFanfare(TRUE)) { gUnknown_02022C98->unk114 = gUnknown_02022C98->unk4A[gUnknown_02022C98->multiplayerId][5]; sub_8026240(6); - FadeOutAndPlayNewMapMusic(MUS_RG_WIN_YASEI, 4); + FadeOutAndPlayNewMapMusic(MUS_RG_VICTORY_WILD, 4); } break; } @@ -1174,7 +1174,7 @@ static void sub_8025758(void) gUnknown_02022C98->unk10++; break; case 4: - PlayNewMapMusic(MUS_RG_KINOMIKUI); + PlayNewMapMusic(MUS_RG_BERRY_PICK); sub_8028E4C(); gUnknown_02022C98->unk10++; break; @@ -1458,8 +1458,8 @@ static void sub_8025F48(void) { if (gUnknown_02022C98->unk144 == 0) { - m4aSongNumStop(SE_SEIKAI); - PlaySE(SE_SEIKAI); + m4aSongNumStop(SE_SUCCESS); + PlaySE(SE_SUCCESS); gUnknown_02022C98->unk144 = 1; } } @@ -1480,7 +1480,7 @@ static void sub_8025F48(void) } else if (gUnknown_02022C98->unk154 == 1) { - PlayFanfareByFanfareNum(11); // MUS_ME_ZANNEN + PlayFanfareByFanfareNum(11); // MUS_TOO_BAD gUnknown_02022C98->unk154 = 2; } } @@ -1501,8 +1501,8 @@ static void sub_8026044(void) { if (gUnknown_02022C98->unk144 == 0) { - m4aSongNumStop(SE_SEIKAI); - PlaySE(SE_SEIKAI); + m4aSongNumStop(SE_SUCCESS); + PlaySE(SE_SUCCESS); gUnknown_02022C98->unk144 = 1; } } @@ -1522,7 +1522,7 @@ static void sub_8026044(void) { if (gUnknown_02022C98->unk148[r4] == 0) { - PlaySE(SE_FUUSEN1 + ptr->unk0[r4]); + PlaySE(SE_BALLOON_RED + ptr->unk0[r4]); gUnknown_02022C98->unk148[r4] = 1; } } @@ -1538,7 +1538,7 @@ static void sub_8026044(void) } else if (gUnknown_02022C98->unk154 == 1) { - PlayFanfareByFanfareNum(11); // MUS_ME_ZANNEN + PlayFanfareByFanfareNum(11); // MUS_TOO_BAD gUnknown_02022C98->unk154 = 2; } } @@ -1792,7 +1792,7 @@ static void sub_802671C(void) if (gUnknown_02022C98->unk148[i] == 0) { gUnknown_02022C98->unk148[i] = 1; - PlaySE(SE_FUUSEN1 + ptr->unk32CC.unk14.unk0[i]); + PlaySE(SE_BALLOON_RED + ptr->unk32CC.unk14.unk0[i]); } if (gUnknown_02022C98->unk40 < 10 || r10 == 1) { @@ -2359,19 +2359,19 @@ static void sub_8027554(void) { gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 2; gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId] = 6; - PlaySE(SE_W204); + PlaySE(SE_M_CHARM); } else if (gMain.newKeys & DPAD_LEFT) { gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 3; gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId] = 6; - PlaySE(SE_W204); + PlaySE(SE_M_CHARM); } else if (gMain.newKeys & DPAD_RIGHT) { gUnknown_02022C98->unk31A0[gUnknown_02022C98->multiplayerId].unk2C.unk0 = 1; gUnknown_02022C98->unkB0[gUnknown_02022C98->multiplayerId] = 6; - PlaySE(SE_W204); + PlaySE(SE_M_CHARM); } else { @@ -2748,14 +2748,14 @@ static void sub_8027DD0(u32 arg0) struct UnkPacket1 packet; packet.id = 1; packet.unk4 = arg0; - sub_800FE50(&packet); + Rfu_SendPacket(&packet); } static u32 sub_8027DFC(u32 arg0) { struct UnkPacket1 *packet; - if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00) + if ((gRecvCmds[0][0] & 0xFF00) != RFUCMD_SEND_PACKET) return 0; packet = (void *)&gRecvCmds[arg0][1]; @@ -2857,7 +2857,7 @@ static void sub_8027E30(struct DodrioSubstruct_31A0 *arg0, struct DodrioSubstruc packet.unkA_3 = arg6; packet.unkB_1 = arg7; packet.unkB_0 = arg8; - sub_800FE50(&packet); + Rfu_SendPacket(&packet); } static u32 sub_8028164(u32 unused, struct DodrioSubstruct_31A0 *arg0, struct DodrioSubstruct_31A0_2C *arg1, struct DodrioSubstruct_31A0_2C *arg2, struct DodrioSubstruct_31A0_2C *arg3, struct DodrioSubstruct_31A0_2C *arg4, struct DodrioSubstruct_31A0_2C *arg5, u8 *arg6, u32 *arg7, u32 *arg8) @@ -2865,7 +2865,7 @@ static u32 sub_8028164(u32 unused, struct DodrioSubstruct_31A0 *arg0, struct Dod struct UnkPacket2 *packet; struct DodrioSubstruct_31A0_14 *ptr = &arg0->unk14; - if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00) + if ((gRecvCmds[0][0] & 0xFF00) != RFUCMD_SEND_PACKET) return 0; packet = (void *)&gRecvCmds[0][1]; @@ -2935,14 +2935,14 @@ static void sub_80282EC(u8 arg0) struct UnkPacket3 packet; packet.id = 3; packet.unk4 = arg0; - sub_800FE50(&packet); + Rfu_SendPacket(&packet); } static u32 sub_8028318(u32 arg0, u8 *arg1) { struct UnkPacket3 *packet; - if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00) + if ((gRecvCmds[0][0] & 0xFF00) != RFUCMD_SEND_PACKET) return 0; packet = (void *)&gRecvCmds[arg0][1]; @@ -2966,14 +2966,14 @@ static void sub_8028350(u32 arg0) struct UnkPacket4 packet; packet.id = 4; packet.unk4 = arg0; - sub_800FE50(&packet); + Rfu_SendPacket(&packet); } static u32 sub_8028374(u32 arg0) { struct UnkPacket4 *packet; - if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00) + if ((gRecvCmds[0][0] & 0xFF00) != RFUCMD_SEND_PACKET) return 0; packet = (void *)&gRecvCmds[arg0][1]; @@ -3450,7 +3450,7 @@ static u32 sub_80285AC(struct Sprite *sprite) u8 mod = (++sprite->data[1] / 13) % 4; if (sprite->data[1] % 13 == 0 && mod != 0) - PlaySE(SE_W204); + PlaySE(SE_M_CHARM); if (sprite->data[1] >= 104) { sprite->data[0] = 0; @@ -3567,7 +3567,7 @@ static bool32 sub_8028828(void) continue; gUnknown_02022CF4->unkC[i] = 1; gUnknown_02022CF4->unk16[i] = -16; - PlaySE(SE_TK_KASYA); + PlaySE(SE_CLICK); } sprite->pos1.y += gUnknown_02022CF4->unk16[i]; } @@ -4320,7 +4320,7 @@ static void sub_802988C(void) } break; case 9: - PlayNewMapMusic(MUS_FANFA1); + PlayNewMapMusic(MUS_LEVEL_UP); FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[0], PIXEL_FILL(1)); FillWindowPixelBuffer(gUnknown_02022CF8->unk3008[1], PIXEL_FILL(1)); strWidth = GetStringWidth(1, gText_AnnouncingPrizes, -1); @@ -4354,7 +4354,7 @@ static void sub_802988C(void) PutWindowTilemap(gUnknown_02022CF8->unk3008[1]); } CopyBgTilemapBufferToVram(0); - FadeOutAndFadeInNewMapMusic(MUS_RG_WIN_YASEI, 20, 10); + FadeOutAndFadeInNewMapMusic(MUS_RG_VICTORY_WILD, 20, 10); gUnknown_02022CF8->state++; break; case 11: diff --git a/src/easy_chat.c b/src/easy_chat.c index c839c0070..8e1044591 100644 --- a/src/easy_chat.c +++ b/src/easy_chat.c @@ -2023,7 +2023,7 @@ static int sub_811B368(void) { if (sEasyChatScreen->type == EASY_CHAT_TYPE_BARD_SONG) { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); return 0; } else @@ -2038,7 +2038,7 @@ static int sub_811B394(void) u16 easyChatWord = sub_811F578(sub_811B940()); if (sub_811BF88(easyChatWord)) { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); return 0; } else diff --git a/src/egg_hatch.c b/src/egg_hatch.c index 3ccc7ebf8..87f0a13fd 100644 --- a/src/egg_hatch.c +++ b/src/egg_hatch.c @@ -578,10 +578,10 @@ static void Task_EggHatchPlayBGM(u8 taskID) PlayRainStoppingSoundEffect(); } if (gTasks[taskID].data[0] == 1) - PlayBGM(MUS_ME_SHINKA); + PlayBGM(MUS_EVOLUTION_INTRO); if (gTasks[taskID].data[0] > 60) { - PlayBGM(MUS_SHINKA); + PlayBGM(MUS_EVOLUTION); DestroyTask(taskID); // UB: task is destroyed, yet the value is incremented } @@ -637,7 +637,7 @@ static void CB2_EggHatch_1(void) GetMonNickname2(&gPlayerParty[sEggHatchData->eggPartyID], gStringVar1); StringExpandPlaceholders(gStringVar4, gText_HatchedFromEgg); EggHatchPrintMessage(sEggHatchData->windowId, gStringVar4, 0, 3, 0xFF); - PlayFanfare(MUS_FANFA5); + PlayFanfare(MUS_EVOLVED); sEggHatchData->CB2_state++; PutWindowTilemap(sEggHatchData->windowId); CopyWindowToVram(sEggHatchData->windowId, 3); @@ -716,7 +716,7 @@ static void SpriteCB_Egg_0(struct Sprite* sprite) sprite->pos2.x = Sin(sprite->data[1], 1); if (sprite->data[0] == 15) { - PlaySE(SE_BOWA); + PlaySE(SE_BALL); StartSpriteAnim(sprite, 1); CreateRandomEggShardSprite(); } @@ -739,7 +739,7 @@ static void SpriteCB_Egg_1(struct Sprite* sprite) sprite->pos2.x = Sin(sprite->data[1], 2); if (sprite->data[0] == 15) { - PlaySE(SE_BOWA); + PlaySE(SE_BALL); StartSpriteAnim(sprite, 2); } } @@ -766,13 +766,13 @@ static void SpriteCB_Egg_2(struct Sprite* sprite) sprite->pos2.x = Sin(sprite->data[1], 2); if (sprite->data[0] == 15) { - PlaySE(SE_BOWA); + PlaySE(SE_BALL); StartSpriteAnim(sprite, 2); CreateRandomEggShardSprite(); CreateRandomEggShardSprite(); } if (sprite->data[0] == 30) - PlaySE(SE_BOWA); + PlaySE(SE_BALL); } } } @@ -799,7 +799,7 @@ static void SpriteCB_Egg_4(struct Sprite* sprite) sprite->data[0]++; if (!gPaletteFade.active) { - PlaySE(SE_TAMAGO); + PlaySE(SE_EGG_HATCH); sprite->invisible = TRUE; sprite->callback = SpriteCB_Egg_5; sprite->data[0] = 0; diff --git a/src/ereader_screen.c b/src/ereader_screen.c index 823e03dd4..b4a9164b3 100755 --- a/src/ereader_screen.c +++ b/src/ereader_screen.c @@ -153,7 +153,7 @@ static u32 sub_81D4EE4(u8 *arg0, u16 *arg1) case 2: if (GetLinkPlayerCount_2() == 2) { - PlaySE(SE_PINPON); + PlaySE(SE_DING_DONG); CheckShouldAdvanceLinkState(); *arg1 = 0; *arg0 = 3; @@ -431,7 +431,7 @@ static void sub_81D5084(u8 taskId) if (sub_81D5064(&data->unk0, 120)) { AddTextPrinterToWindow1(gJPText_NewTrainerHasComeToHoenn); - PlayFanfare(MUS_FANFA4); + PlayFanfare(MUS_OBTAIN_ITEM); data->unk8 = 19; } break; diff --git a/src/event_object_movement.c b/src/event_object_movement.c index a076a2a22..72de880c8 100644 --- a/src/event_object_movement.c +++ b/src/event_object_movement.c @@ -8216,15 +8216,13 @@ bool8 FreezeObjectEvent(struct ObjectEvent *objectEvent) { return TRUE; } - else - { - objectEvent->frozen = 1; - objectEvent->spriteAnimPausedBackup = gSprites[objectEvent->spriteId].animPaused; - objectEvent->spriteAffineAnimPausedBackup = gSprites[objectEvent->spriteId].affineAnimPaused; - gSprites[objectEvent->spriteId].animPaused = 1; - gSprites[objectEvent->spriteId].affineAnimPaused = 1; - return FALSE; - } + + objectEvent->frozen = 1; + objectEvent->spriteAnimPausedBackup = gSprites[objectEvent->spriteId].animPaused; + objectEvent->spriteAffineAnimPausedBackup = gSprites[objectEvent->spriteId].affineAnimPaused; + gSprites[objectEvent->spriteId].animPaused = 1; + gSprites[objectEvent->spriteId].affineAnimPaused = 1; + return FALSE; } void FreezeObjectEvents(void) @@ -8397,8 +8395,8 @@ bool8 sub_80976EC(struct Sprite *sprite) if (sprite->data[5] > 15) return TRUE; - else - return FALSE; + + return FALSE; } static const s8 sFigure8XOffsets[FIGURE_8_LENGTH] = { @@ -8478,15 +8476,15 @@ static bool8 AnimateSpriteInFigure8(struct Sprite *sprite) return finished; } -static const s8 gUnknown_0850E802[] = { +static const s8 gUnknown_0850E802[16] = { -4, -6, -8, -10, -11, -12, -12, -12, -11, -10, -9, -8, -6, -4, 0, 0 }; -static const s8 gUnknown_0850E812[] = { +static const s8 gUnknown_0850E812[16] = { 0, -2, -3, -4, -5, -6, -6, -6, -5, -5, -4, -3, -2, 0, 0, 0 }; -static const s8 gUnknown_0850E822[] = { +static const s8 gUnknown_0850E822[16] = { -2, -4, -6, -8, -9, -10, -10, -10, -9, -8, -6, -5, -3, -2, 0, 0 }; @@ -8509,23 +8507,11 @@ void sub_809783C(struct Sprite *sprite, u8 a2, u8 a3, u8 a4) sprite->data[6] = 0; } -static const s16 gUnknown_0850E840[] = { - 16, 16, 32, -}; - -static const u8 gUnknown_0850E846[] = { - 0, 0, 1, -}; - u8 sub_809785C(struct Sprite *sprite) { - s16 v5[3]; - u8 v6[3]; - u8 v2; - - memcpy(v5, gUnknown_0850E840, 6); // TODO: get rid of memcpy - memcpy(v6, gUnknown_0850E846, 3); - v2 = 0; + s16 v5[] = {16, 16, 32}; + u8 v6[] = {0, 0, 1}; + u8 v2 = 0; if (sprite->data[4]) Step1(sprite, sprite->data[3]); @@ -8546,23 +8532,11 @@ u8 sub_809785C(struct Sprite *sprite) return v2; } -static const s16 gUnknown_0850E84A[] = { - 32, 32, 64, -}; - -static const u8 gUnknown_0850E850[] = { - 1, 1, 2, -}; - u8 sub_80978E4(struct Sprite *sprite) { - s16 v5[3]; - u8 v6[3]; - u8 v2; - - memcpy(v5, gUnknown_0850E84A, 6); - memcpy(v6, gUnknown_0850E850, 3); - v2 = 0; + s16 v5[] = {32, 32, 64}; + u8 v6[] = {1, 1, 2}; + u8 v2 = 0; if (sprite->data[4] && !(sprite->data[6] & 1)) Step1(sprite, sprite->data[3]); @@ -8590,12 +8564,9 @@ static void SetMovementDelay(struct Sprite *sprite, s16 timer) static bool8 WaitForMovementDelay(struct Sprite *sprite) { - sprite->data[3]--; - - if (sprite->data[3] == 0) + if (--sprite->data[3] == 0) return TRUE; - else - return FALSE; + return FALSE; } void SetAndStartSpriteAnim(struct Sprite *sprite, u8 animNum, u8 animCmdIndex) @@ -8609,8 +8580,7 @@ bool8 SpriteAnimEnded(struct Sprite *sprite) { if (sprite->animEnded) return TRUE; - else - return FALSE; + return FALSE; } void UpdateObjectEventSpriteVisibility(struct Sprite *sprite, bool8 invisible) @@ -8789,14 +8759,14 @@ static void UpdateObjectEventSpritePosition(struct Sprite *sprite) { switch(sprite->tAnimNum) { + case 0: + break; case UNION_ROOM_SPAWN_IN: MoveUnionRoomObjectDown(sprite); break; case UNION_ROOM_SPAWN_OUT: MoveUnionRoomObjectUp(sprite); break; - case 0: - break; default: sprite->tAnimNum = 0; break; @@ -8877,8 +8847,7 @@ u8 MovementAction_StoreAndLockAnim_Step0(struct ObjectEvent *objectEvent, struct } else { - u8 i; - u8 firstFreeSlot; + u8 i, firstFreeSlot; bool32 found; for (firstFreeSlot = 16, found = FALSE, i = 0; i < 16; i++) { diff --git a/src/evolution_graphics.c b/src/evolution_graphics.c index 849c676b3..28bbd4ef7 100644 --- a/src/evolution_graphics.c +++ b/src/evolution_graphics.c @@ -271,7 +271,7 @@ static void EvoTask_BeginPreSet1_FadeAndPlaySE(u8 taskID) gTasks[taskID].tFrameCounter = 0; BeginNormalPaletteFade(3 << gTasks[taskID].data[1], 0xA, 0, 0x10, RGB_WHITE); gTasks[taskID].func = EvoTask_CreatePreEvoSparkleSet1; - PlaySE(SE_W025); + PlaySE(SE_M_MEGA_KICK); } static void EvoTask_CreatePreEvoSparkleSet1(u8 taskID) @@ -311,7 +311,7 @@ static void EvoTask_BeginPreSparklesSet2(u8 taskID) SetEvoSparklesMatrices(); gTasks[taskID].tFrameCounter = 0; gTasks[taskID].func = EvoTask_CreatePreEvoSparklesSet2; - PlaySE(SE_W062B); + PlaySE(SE_M_BUBBLE_BEAM2); } static void EvoTask_CreatePreEvoSparklesSet2(u8 taskID) @@ -345,7 +345,7 @@ static void EvoTask_BeginPostSparklesSet1(u8 taskID) SetEvoSparklesMatrices(); gTasks[taskID].tFrameCounter = 0; gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet1; - PlaySE(SE_REAPOKE); + PlaySE(SE_SHINY); } static void EvoTask_CreatePostEvoSparklesSet1(u8 taskID) @@ -389,7 +389,7 @@ static void EvoTask_BeginPostSparklesSet2_AndFlash(u8 taskID) CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30); BeginNormalPaletteFade(0xFFF9041C, 0, 0, 0x10, RGB_WHITE); // was 0xFFF9001C in R/S gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash; - PlaySE(SE_W080); + PlaySE(SE_M_PETAL_DANCE); } static void EvoTask_CreatePostEvoSparklesSet2_AndFlash(u8 taskID) @@ -437,7 +437,7 @@ static void EvoTask_BeginPostSparklesSet2_AndFlash_Trade(u8 taskID) CpuSet(&gPlttBufferFaded[0x20], &gPlttBufferUnfaded[0x20], 0x30); BeginNormalPaletteFade(0xFFF90400, 0, 0, 0x10, RGB_WHITE); // was 0xFFFF0001 in R/S gTasks[taskID].func = EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade; - PlaySE(SE_W080); + PlaySE(SE_M_PETAL_DANCE); } static void EvoTask_CreatePostEvoSparklesSet2_AndFlash_Trade(u8 taskID) diff --git a/src/evolution_scene.c b/src/evolution_scene.c index 019d48416..41d4900f7 100644 --- a/src/evolution_scene.c +++ b/src/evolution_scene.c @@ -630,14 +630,14 @@ static void Task_EvolutionScene(u8 taskID) case 3: if (EvoScene_IsMonAnimFinished(sEvoStructPtr->preEvoSpriteID)) // wait for animation, play tu du SE { - PlaySE(MUS_ME_SHINKA); + PlaySE(MUS_EVOLUTION_INTRO); gTasks[taskID].tState++; } break; case 4: // play evolution music and fade screen black if (!IsSEPlaying()) { - PlayNewMapMusic(MUS_SHINKA); + PlayNewMapMusic(MUS_EVOLUTION); gTasks[taskID].tState++; BeginNormalPaletteFade(0x1C, 4, 0, 0x10, RGB_BLACK); } @@ -713,7 +713,7 @@ static void Task_EvolutionScene(u8 taskID) { StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved); BattlePutTextOnWindow(gStringVar4, 0); - PlayBGM(MUS_FANFA5); + PlayBGM(MUS_EVOLVED); gTasks[taskID].tState++; SetMonData(mon, MON_DATA_SPECIES, (void*)(&gTasks[taskID].tPostEvoSpecies)); CalculateMonStats(mon); @@ -808,7 +808,7 @@ static void Task_EvolutionScene(u8 taskID) if (!IsTextPrinterActive(0) && !IsSEPlaying()) { BufferMoveToLearnIntoBattleTextBuff2(); - PlayFanfare(MUS_FANFA1); + PlayFanfare(MUS_LEVEL_UP); BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]); BattlePutTextOnWindow(gDisplayedStringBattle, 0); gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter @@ -998,15 +998,15 @@ static void Task_TradeEvolutionScene(u8 taskID) case 2: if (IsCryFinished()) { - m4aSongNumStop(MUS_SHINKA); - PlaySE(MUS_ME_SHINKA); + m4aSongNumStop(MUS_EVOLUTION); + PlaySE(MUS_EVOLUTION_INTRO); gTasks[taskID].tState++; } break; case 3: if (!IsSEPlaying()) { - PlayBGM(MUS_SHINKA); + PlayBGM(MUS_EVOLUTION); gTasks[taskID].tState++; BeginNormalPaletteFade(0x1C, 4, 0, 0x10, RGB_BLACK); } @@ -1076,7 +1076,7 @@ static void Task_TradeEvolutionScene(u8 taskID) { StringExpandPlaceholders(gStringVar4, gText_CongratsPkmnEvolved); DrawTextOnTradeWindow(0, gStringVar4, 1); - PlayFanfare(MUS_FANFA5); + PlayFanfare(MUS_EVOLVED); gTasks[taskID].tState++; SetMonData(mon, MON_DATA_SPECIES, (&gTasks[taskID].tPostEvoSpecies)); CalculateMonStats(mon); @@ -1109,7 +1109,7 @@ static void Task_TradeEvolutionScene(u8 taskID) } else { - PlayBGM(MUS_SHINKA); + PlayBGM(MUS_EVOLUTION); DrawTextOnTradeWindow(0, gText_CommunicationStandby5, 1); gTasks[taskID].tState++; } @@ -1153,7 +1153,7 @@ static void Task_TradeEvolutionScene(u8 taskID) if (!IsTextPrinterActive(0) && !IsSEPlaying()) { BufferMoveToLearnIntoBattleTextBuff2(); - PlayFanfare(MUS_FANFA1); + PlayFanfare(MUS_LEVEL_UP); BattleStringExpandPlaceholdersToDisplayedString(gBattleStringsTable[STRINGID_PKMNLEARNEDMOVE - BATTLESTRINGS_ID_ADDER]); DrawTextOnTradeWindow(0, gDisplayedStringBattle, 1); gTasks[taskID].tLearnsFirstMove = 0x40; // re-used as a counter diff --git a/src/field_control_avatar.c b/src/field_control_avatar.c index 3684b53e6..fab14c577 100644 --- a/src/field_control_avatar.c +++ b/src/field_control_avatar.c @@ -946,7 +946,7 @@ bool8 TryDoDiveWarp(struct MapPosition *position, u16 metatileBehavior) { StoreInitialPlayerAvatarState(); DoDiveWarp(); - PlaySE(SE_W291); + PlaySE(SE_M_DIVE); return TRUE; } } @@ -956,7 +956,7 @@ bool8 TryDoDiveWarp(struct MapPosition *position, u16 metatileBehavior) { StoreInitialPlayerAvatarState(); DoDiveWarp(); - PlaySE(SE_W291); + PlaySE(SE_M_DIVE); return TRUE; } } diff --git a/src/field_door.c b/src/field_door.c index e81c3dc4b..4dcb07cca 100644 --- a/src/field_door.c +++ b/src/field_door.c @@ -526,9 +526,9 @@ u32 GetDoorSoundEffect(u32 x, u32 y) if (sound == DOOR_SOUND_NORMAL) return SE_DOOR; else if (sound == DOOR_SOUND_SLIDING) - return SE_JIDO_DOA; + return SE_SLIDING_DOOR; else if (sound == DOOR_SOUND_ARENA) - return SE_TU_SAA; + return SE_REPEL; else return SE_DOOR; } diff --git a/src/field_effect.c b/src/field_effect.c index 582551a7e..b64902c0e 100644 --- a/src/field_effect.c +++ b/src/field_effect.c @@ -1141,7 +1141,7 @@ static void PokeballGlowEffect_PlaceBalls(struct Sprite *sprite) gSprites[spriteId].sEffectSpriteId = sprite->sSpriteId; sprite->sCounter++; sprite->sNumMons--; - PlaySE(SE_BOWA); + PlaySE(SE_BALL); } if (sprite->sNumMons == 0) { @@ -1160,7 +1160,7 @@ static void PokeballGlowEffect_TryPlaySe(struct Sprite *sprite) sprite->data[3] = 0; if (sprite->sPlayHealSe) { - PlayFanfare(MUS_ME_ASA); + PlayFanfare(MUS_HEAL); } } } @@ -1464,7 +1464,7 @@ static bool8 FallWarpEffect_StartFall(struct Task *task) task->tFallOffset = 1; task->tTotalFall = 0; gObjectEvents[gPlayerAvatar.objectEventId].invisible = FALSE; - PlaySE(SE_RU_HYUU); + PlaySE(SE_FALL); task->tState++; return FALSE; } @@ -1493,7 +1493,7 @@ static bool8 FallWarpEffect_Fall(struct Task *task) } if (sprite->pos2.y >= 0) { - PlaySE(SE_W070); + PlaySE(SE_M_STRENGTH); objectEvent->triggerGroundEffectsOnStop = 1; objectEvent->landingJump = 1; sprite->pos2.y = 0; @@ -1589,7 +1589,7 @@ static bool8 EscalatorWarpOut_WaitForPlayer(struct Task *task) { task->tState = 4; // jump to EscalatorWarpOut_Down_Ride } - PlaySE(SE_ESUKA); + PlaySE(SE_ESCALATOR); } return FALSE; } @@ -1978,7 +1978,7 @@ static bool8 LavaridgeGymB1FWarpEffect_Launch(struct Task *task, struct ObjectEv gFieldEffectArguments[2] = sprite->subpriority - 1; gFieldEffectArguments[3] = sprite->oam.priority; FieldEffectStart(FLDEFF_ASH_LAUNCH); - PlaySE(SE_W153); + PlaySE(SE_M_EXPLOSION); task->data[0]++; return TRUE; } @@ -2092,7 +2092,7 @@ static bool8 LavaridgeGymB1FWarpExitEffect_PopOut(struct Task *task, struct Obje task->data[0]++; objectEvent->invisible = FALSE; CameraObjectReset1(); - PlaySE(SE_W091); + PlaySE(SE_M_DIG); ObjectEventSetHeldMovement(objectEvent, GetJumpMovementAction(DIR_EAST)); } return FALSE; @@ -2163,7 +2163,7 @@ static bool8 LavaridgeGym1FWarpEffect_AshPuff(struct Task *task, struct ObjectEv { task->data[1]++; ObjectEventSetHeldMovement(objectEvent, GetWalkInPlaceFastestMovementAction(objectEvent->facingDirection)); - PlaySE(SE_FU_ZUZUZU); + PlaySE(SE_LAVARIDGE_FALL_WARP); } } return FALSE; @@ -2381,7 +2381,7 @@ static void TeleportWarpOutFieldEffect_SpinGround(struct Task *task) task->data[1] = 4; task->data[2] = 8; task->data[3] = 1; - PlaySE(SE_TK_WARPIN); + PlaySE(SE_WARP_IN); } } @@ -2472,7 +2472,7 @@ static void TeleportWarpInFieldEffect_Init(struct Task *task) task->data[2] = 1; task->data[14] = sprite->subspriteMode; task->data[15] = GetPlayerFacingDirection(); - PlaySE(SE_TK_WARPIN); + PlaySE(SE_WARP_IN); } } @@ -2974,7 +2974,7 @@ u8 FldEff_UseSurf(void) u8 taskId = CreateTask(Task_SurfFieldEffect, 0xff); gTasks[taskId].tMonId = gFieldEffectArguments[0]; Overworld_ClearSavedMusic(); - Overworld_ChangeMusicTo(MUS_NAMINORI); + Overworld_ChangeMusicTo(MUS_SURF); return FALSE; } @@ -3111,7 +3111,7 @@ u8 FldEff_NPCFlyOut(void) sprite->oam.priority = 1; sprite->callback = SpriteCB_NPCFlyOut; sprite->data[1] = gFieldEffectArguments[0]; - PlaySE(SE_W019); + PlaySE(SE_M_FLY); return spriteId; } @@ -3228,7 +3228,7 @@ static void FlyOutFieldEffect_BirdSwoopDown(struct Task *task) if ((task->tTimer == 0 || (--task->tTimer) == 0) && ObjectEventClearHeldMovementIfFinished(objectEvent)) { task->tState++; - PlaySE(SE_W019); + PlaySE(SE_M_FLY); StartFlyBirdSwoopDown(task->tBirdSpriteId); } } @@ -3692,7 +3692,7 @@ static void Task_DestroyDeoxysRock(u8 taskId) static void DestroyDeoxysRockEffect_CameraShake(s16* data, u8 taskId) { u8 newTaskId = CreateTask(Task_DeoxysRockCameraShake, 90); - PlaySE(SE_T_KAMI2); + PlaySE(SE_THUNDER2); tCameraTaskId = newTaskId; tState++; } @@ -3706,7 +3706,7 @@ static void DestroyDeoxysRockEffect_RockFragments(s16* data, u8 taskId) BlendPalettes(0x0000FFFF, 0x10, RGB_WHITE); BeginNormalPaletteFade(0x0000FFFF, 0, 0x10, 0, RGB_WHITE); CreateDeoxysRockFragments(sprite); - PlaySE(SE_T_KAMI); + PlaySE(SE_THUNDER); StartEndingDeoxysRockCameraShake(tCameraTaskId); tTimer = 0; tState++; diff --git a/src/field_effect_helpers.c b/src/field_effect_helpers.c index 6929485c4..886e023d1 100755 --- a/src/field_effect_helpers.c +++ b/src/field_effect_helpers.c @@ -623,7 +623,7 @@ u32 FldEff_Splash(void) sprite->data[1] = gFieldEffectArguments[1]; sprite->data[2] = gFieldEffectArguments[2]; sprite->pos2.y = (graphicsInfo->height >> 1) - 4; - PlaySE(SE_MIZU); + PlaySE(SE_PUDDLE); } return 0; } @@ -733,7 +733,7 @@ static void UpdateFeetInFlowingWaterFieldEffect(struct Sprite *sprite) sprite->data[4] = objectEvent->currentCoords.y; if (!sprite->invisible) { - PlaySE(SE_MIZU); + PlaySE(SE_PUDDLE); } } } diff --git a/src/field_player_avatar.c b/src/field_player_avatar.c index 6ad92c2fb..5fab2489b 100644 --- a/src/field_player_avatar.c +++ b/src/field_player_avatar.c @@ -1021,7 +1021,7 @@ void PlayerTurnInPlace(u8 direction) void PlayerJumpLedge(u8 direction) { - PlaySE(SE_DANSA); + PlaySE(SE_LEDGE); PlayerSetAnimId(GetJump2MovementAction(direction), 8); } @@ -1055,28 +1055,28 @@ void PlayerEndWheelie(u8 direction) // wheelie hopping standing void PlayerStandingHoppingWheelie(u8 a) { - PlaySE(SE_JITE_PYOKO); + PlaySE(SE_BIKE_HOP); PlayerSetAnimId(GetAcroWheelieHopFaceDirectionMovementAction(a), 1); } // wheelie hopping moving void PlayerMovingHoppingWheelie(u8 a) { - PlaySE(SE_JITE_PYOKO); + PlaySE(SE_BIKE_HOP); PlayerSetAnimId(GetAcroWheelieHopDirectionMovementAction(a), 2); } // wheelie hopping ledge void PlayerLedgeHoppingWheelie(u8 a) { - PlaySE(SE_JITE_PYOKO); + PlaySE(SE_BIKE_HOP); PlayerSetAnimId(GetAcroWheelieJumpDirectionMovementAction(a), 8); } // acro turn jump void PlayerAcroTurnJump(u8 direction) { - PlaySE(SE_JITE_PYOKO); + PlaySE(SE_BIKE_HOP); PlayerSetAnimId(GetJumpInPlaceTurnAroundMovementAction(direction), 1); } @@ -1501,7 +1501,7 @@ static bool8 PushBoulder_Move(struct Task *task, struct ObjectEvent *playerObjec gFieldEffectArguments[2] = strengthObject->previousElevation; gFieldEffectArguments[3] = gSprites[strengthObject->spriteId].oam.priority; FieldEffectStart(FLDEFF_DUST); - PlaySE(SE_W070); + PlaySE(SE_M_STRENGTH); task->data[0]++; } return FALSE; @@ -1540,7 +1540,7 @@ static u8 PlayerAvatar_DoSecretBaseMatJump(struct Task *task, struct ObjectEvent gPlayerAvatar.preventStep = TRUE; if (ObjectEventClearHeldMovementIfFinished(objectEvent)) { - PlaySE(SE_DANSA); + PlaySE(SE_LEDGE); ObjectEventSetHeldMovement(objectEvent, GetJumpInPlaceMovementAction(objectEvent->facingDirection)); task->data[1]++; if (task->data[1] > 1) @@ -1574,7 +1574,7 @@ static bool8 PlayerAvatar_SecretBaseMatSpinStep0(struct Task *task, struct Objec task->data[1] = objectEvent->movementDirection; gPlayerAvatar.preventStep = TRUE; ScriptContext2_Enable(); - PlaySE(SE_TK_WARPIN); + PlaySE(SE_WARP_IN); return TRUE; } diff --git a/src/field_screen_effect.c b/src/field_screen_effect.c index 92ee8cad3..9becd2166 100644 --- a/src/field_screen_effect.c +++ b/src/field_screen_effect.c @@ -299,7 +299,7 @@ static void FieldCB_TeleportTileWarpExit(void) { Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); - PlaySE(SE_TK_WARPOUT); + PlaySE(SE_WARP_OUT); CreateTask(Task_TeleportTileWarpExit, 10); ScriptContext2_Enable(); } @@ -308,7 +308,7 @@ static void FieldCB_MossdeepGymWarpExit(void) { Overworld_PlaySpecialMapMusic(); WarpFadeInScreen(); - PlaySE(SE_TK_WARPOUT); + PlaySE(SE_WARP_OUT); CreateTask(Task_ExitNonDoor, 10); ScriptContext2_Enable(); SetObjectEventLoadFlag((~SKIP_OBJECT_EVENT_LOAD) & 0xF); @@ -487,7 +487,7 @@ void DoWarp(void) TryFadeOutOldMapMusic(); WarpFadeOutScreen(); PlayRainStoppingSoundEffect(); - PlaySE(SE_KAIDAN); + PlaySE(SE_EXIT); gFieldCallback = FieldCB_DefaultWarpExit; CreateTask(Task_WarpAndLoadMap, 10); } @@ -549,7 +549,7 @@ void DoTeleportTileWarp(void) ScriptContext2_Enable(); TryFadeOutOldMapMusic(); WarpFadeOutScreen(); - PlaySE(SE_TK_WARPIN); + PlaySE(SE_WARP_IN); CreateTask(Task_WarpAndLoadMap, 10); gFieldCallback = FieldCB_TeleportTileWarpExit; } @@ -561,7 +561,7 @@ void DoMossdeepGymWarp(void) SaveObjectEvents(); TryFadeOutOldMapMusic(); WarpFadeOutScreen(); - PlaySE(SE_TK_WARPIN); + PlaySE(SE_WARP_IN); CreateTask(Task_WarpAndLoadMap, 10); gFieldCallback = FieldCB_MossdeepGymWarpExit; } @@ -605,7 +605,7 @@ void DoCableClubWarp(void) ScriptContext2_Enable(); TryFadeOutOldMapMusic(); WarpFadeOutScreen(); - PlaySE(SE_KAIDAN); + PlaySE(SE_EXIT); CreateTask(Task_DoCableClubWarp, 10); } @@ -619,7 +619,7 @@ static void Task_ReturnToWorldFromLinkRoom(u8 taskId) ClearLinkCallback_2(); FadeScreen(FADE_TO_BLACK, 0); TryFadeOutOldMapMusic(); - PlaySE(SE_KAIDAN); + PlaySE(SE_EXIT); data[0]++; break; case 1: @@ -760,7 +760,7 @@ void DoContestHallWarp(void) TryFadeOutOldMapMusic(); WarpFadeOutScreen(); PlayRainStoppingSoundEffect(); - PlaySE(SE_KAIDAN); + PlaySE(SE_EXIT); gFieldCallback = FieldCB_WarpExitFadeFromBlack; CreateTask(Task_DoContestHallWarp, 10); } @@ -1028,7 +1028,7 @@ static void sub_80B01BC(u8 taskId) case 0: FreezeObjectEvents(); ScriptContext2_Enable(); - PlaySE(SE_TK_WARPIN); + PlaySE(SE_WARP_IN); sub_808D1C8(); task->data[0]++; break; diff --git a/src/field_special_scene.c b/src/field_special_scene.c index bb8e8b1d9..bd6c833af 100644 --- a/src/field_special_scene.c +++ b/src/field_special_scene.c @@ -171,7 +171,7 @@ void Task_HandleTruckSequence(u8 taskId) data[1] = 0; // reset the timer. data[2] = CreateTask(Task_Truck1, 0xA); data[0] = 1; // run the next case. - PlaySE(SE_TRACK_MOVE); + PlaySE(SE_TRUCK_MOVE); } break; case 1: @@ -191,7 +191,7 @@ void Task_HandleTruckSequence(u8 taskId) DestroyTask(data[2]); data[3] = CreateTask(Task_Truck2, 0xA); data[0] = 3; - PlaySE(SE_TRACK_STOP); + PlaySE(SE_TRUCK_STOP); } break; case 3: @@ -206,7 +206,7 @@ void Task_HandleTruckSequence(u8 taskId) data[1]++; if (data[1] == 90) { - PlaySE(SE_TRACK_HAIKI); + PlaySE(SE_TRUCK_UNLOAD); data[1] = 0; data[0] = 5; } @@ -219,7 +219,7 @@ void Task_HandleTruckSequence(u8 taskId) MapGridSetMetatileIdAt(11, 9, METATILE_InsideOfTruck_ExitLight_Mid); MapGridSetMetatileIdAt(11, 10, METATILE_InsideOfTruck_ExitLight_Bottom); DrawWholeMapView(); - PlaySE(SE_TRACK_DOOR); + PlaySE(SE_TRUCK_DOOR); DestroyTask(taskId); ScriptContext2_Disable(); } diff --git a/src/field_specials.c b/src/field_specials.c index 7c6ef37d7..c1fc92dbe 100644 --- a/src/field_specials.c +++ b/src/field_specials.c @@ -827,7 +827,7 @@ void PetalburgGymSlideOpenRoomDoors(void) { sSlidingDoorNextFrameCounter = 0; sSlidingDoorFrame = 0; - PlaySE(SE_KI_GASYAN); + PlaySE(SE_UNLOCK); CreateTask(Task_PetalburgGymSlideOpenRoomDoors, 8); } @@ -1509,7 +1509,7 @@ void ShakeCamera(void) gTasks[taskId].delay = gSpecialVar_0x8007; gTasks[taskId].verticalPan = gSpecialVar_0x8004; SetCameraPanningCallback(NULL); - PlaySE(SE_W070); + PlaySE(SE_M_STRENGTH); } static void Task_ShakeCamera(u8 taskId) @@ -1880,7 +1880,7 @@ void MoveElevator(void) SetCameraPanningCallback(NULL); MoveElevatorWindowLights(floorDelta, data[6]); - PlaySE(SE_ELEBETA); + PlaySE(SE_ELEVATOR); } static void Task_MoveElevator(u8 taskId) @@ -1897,7 +1897,7 @@ static void Task_MoveElevator(u8 taskId) // arrived at floor if (data[2] == data[5]) { - PlaySE(SE_PINPON); + PlaySE(SE_DING_DONG); DestroyTask(taskId); EnableBothScriptContexts(); InstallCameraPanAheadCallback(); @@ -3438,9 +3438,9 @@ static void ChangeDeoxysRockLevel(u8 rockLevel) TryGetObjectEventIdByLocalIdAndMap(1, gSaveBlock1Ptr->location.mapNum, gSaveBlock1Ptr->location.mapGroup, &objectEventId); if (rockLevel == 0) - PlaySE(SE_W109); + PlaySE(SE_M_CONFUSE_RAY); else - PlaySE(SE_RG_DEOMOV); + PlaySE(SE_RG_DEOXYS_MOVE); CreateTask(WaitForDeoxysRockMovement, 8); gFieldEffectArguments[0] = 1; @@ -3904,7 +3904,7 @@ void Script_DoRayquazaScene(void) void LoopWingFlapSE(void) { CreateTask(Task_LoopWingFlapSE, 8); - PlaySE(SE_W017); + PlaySE(SE_M_WING_ATTACK); } static void Task_LoopWingFlapSE(u8 taskId) @@ -3916,7 +3916,7 @@ static void Task_LoopWingFlapSE(u8 taskId) { playCount++; delay = 0; - PlaySE(SE_W017); + PlaySE(SE_M_WING_ATTACK); } if (playCount == gSpecialVar_0x8004 - 1) diff --git a/src/field_tasks.c b/src/field_tasks.c index 49b6fbdd8..91b4558d5 100644 --- a/src/field_tasks.c +++ b/src/field_tasks.c @@ -357,7 +357,7 @@ static void PacifidlogBridgePerStepCallback(u8 taskId) data[2] = x; data[3] = y; if (MetatileBehavior_IsPacifidlogLog(MapGridGetMetatileBehaviorAt(x, y))) - PlaySE(SE_MIZU); + PlaySE(SE_PUDDLE); } break; case 2: @@ -443,7 +443,7 @@ static void FortreeBridgePerStepCallback(u8 taskId) flag = 1; if (flag && (isFortreeBridgeCur == 1 || isFortreeBridgePrev == 1)) - PlaySE(SE_HASHI); + PlaySE(SE_BRIDGE_WALK); if (isFortreeBridgePrev) { @@ -583,7 +583,7 @@ static void SootopolisGymIcePerStepCallback(u8 taskId) { x = data[4]; y = data[5]; - PlaySE(SE_RU_BARI); + PlaySE(SE_ICE_CRACK); MapGridSetMetatileIdAt(x, y, METATILE_SootopolisGym_Ice_Cracked); CurrentMapDrawMetatileAt(x, y); MarkIcePuzzleCoordVisited(x - 7, y - 7); @@ -599,7 +599,7 @@ static void SootopolisGymIcePerStepCallback(u8 taskId) { x = data[4]; y = data[5]; - PlaySE(SE_RU_GASYAN); + PlaySE(SE_ICE_BREAK); MapGridSetMetatileIdAt(x, y, METATILE_SootopolisGym_Ice_Broken); CurrentMapDrawMetatileAt(x, y); data[1] = 1; diff --git a/src/field_weather.c b/src/field_weather.c index 684a86479..25ee0582a 100644 --- a/src/field_weather.c +++ b/src/field_weather.c @@ -1038,13 +1038,13 @@ void SetRainStrengthFromSoundEffect(u16 soundEffect) { switch (soundEffect) { - case SE_T_KOAME: + case SE_RAIN: gWeatherPtr->rainStrength = 0; break; - case SE_T_OOAME: + case SE_DOWNPOUR: gWeatherPtr->rainStrength = 1; break; - case SE_T_AME: + case SE_THUNDERSTORM: gWeatherPtr->rainStrength = 2; break; default: @@ -1062,14 +1062,14 @@ void PlayRainStoppingSoundEffect(void) switch (gWeatherPtr->rainStrength) { case 0: - PlaySE(SE_T_KOAME_E); + PlaySE(SE_RAIN_STOP); break; case 1: - PlaySE(SE_T_OOAME_E); + PlaySE(SE_DOWNPOUR_STOP); break; case 2: default: - PlaySE(SE_T_AME_E); + PlaySE(SE_THUNDERSTORM_STOP); break; } } diff --git a/src/field_weather_effect.c b/src/field_weather_effect.c index 26a7adf27..320a10670 100644 --- a/src/field_weather_effect.c +++ b/src/field_weather_effect.c @@ -479,7 +479,7 @@ void Rain_InitVars(void) gWeatherPtr->targetRainSpriteCount = 10; gWeatherPtr->gammaTargetIndex = 3; gWeatherPtr->gammaStepDelay = 20; - SetRainStrengthFromSoundEffect(SE_T_KOAME); + SetRainStrengthFromSoundEffect(SE_RAIN); } void Rain_InitAll(void) @@ -1023,7 +1023,7 @@ void Thunderstorm_InitVars(void) gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment gWeatherPtr->thunderTriggered = 0; - SetRainStrengthFromSoundEffect(SE_T_AME); + SetRainStrengthFromSoundEffect(SE_THUNDERSTORM); } void Thunderstorm_InitAll(void) @@ -1051,7 +1051,7 @@ void Downpour_InitVars(void) gWeatherPtr->gammaTargetIndex = 3; gWeatherPtr->gammaStepDelay = 20; gWeatherPtr->weatherGfxLoaded = FALSE; // duplicate assignment - SetRainStrengthFromSoundEffect(SE_T_OOAME); + SetRainStrengthFromSoundEffect(SE_DOWNPOUR); } void Downpour_InitAll(void) @@ -1220,9 +1220,9 @@ static void UpdateThunderSound(void) return; if (Random() & 1) - PlaySE(SE_T_KAMI); + PlaySE(SE_THUNDER); else - PlaySE(SE_T_KAMI2); + PlaySE(SE_THUNDER2); gWeatherPtr->thunderTriggered = 0; } diff --git a/src/fldeff_cut.c b/src/fldeff_cut.c index 939c15dbf..991617713 100644 --- a/src/fldeff_cut.c +++ b/src/fldeff_cut.c @@ -311,7 +311,7 @@ bool8 FldEff_CutGrass(void) s16 x, y; u8 i = 0; - PlaySE(SE_W015); + PlaySE(SE_M_CUT); PlayerGetDestCoords(&gPlayerFacingPosition.x, &gPlayerFacingPosition.y); for (i = 0; i < CUT_HYPER_AREA; i++) { @@ -634,7 +634,7 @@ void FixLongGrassMetatilesWindowBottom(s16 x, s16 y) static void StartCutTreeFieldEffect(void) { - PlaySE(SE_W015); + PlaySE(SE_M_CUT); FieldEffectActiveListRemove(FLDEFF_USE_CUT_ON_TREE); EnableBothScriptContexts(); } diff --git a/src/fldeff_flash.c b/src/fldeff_flash.c index 2d25928b8..b2ddf3180 100644 --- a/src/fldeff_flash.c +++ b/src/fldeff_flash.c @@ -104,7 +104,7 @@ static void FieldCallback_Flash(void) static void FldEff_UseFlash(void) { - PlaySE(SE_W115); + PlaySE(SE_M_REFLECT); FlagSet(FLAG_SYS_USE_FLASH); ScriptContext1_SetupScript(EventScript_UseFlash); } diff --git a/src/fldeff_misc.c b/src/fldeff_misc.c index 6db44d752..7eae8cfd1 100644 --- a/src/fldeff_misc.c +++ b/src/fldeff_misc.c @@ -618,7 +618,7 @@ bool8 FldEff_SecretPowerCave(void) static void SpriteCB_CaveEntranceInit(struct Sprite *sprite) { - PlaySE(SE_W088); + PlaySE(SE_M_ROCK_THROW); sprite->data[0] = 0; sprite->callback = SpriteCB_CaveEntranceOpen; @@ -691,7 +691,7 @@ bool8 FldEff_SecretPowerTree(void) static void SpriteCB_TreeEntranceInit(struct Sprite *sprite) { - PlaySE(SE_W010); + PlaySE(SE_M_SCRATCH); sprite->animNum = gFieldEffectArguments[7]; sprite->data[0] = 0; @@ -754,7 +754,7 @@ bool8 FldEff_SecretPowerShrub(void) static void SpriteCB_ShrubEntranceInit(struct Sprite *sprite) { - PlaySE(SE_W077); + PlaySE(SE_M_POISON_POWDER); sprite->data[0] = 0; sprite->callback = SpriteCB_ShrubEntranceOpen; @@ -888,16 +888,16 @@ static void DoBalloonSoundEffect(s16 metatileId) switch (metatileId) { case METATILE_SecretBase_RedBalloon: - PlaySE(SE_FUUSEN1); + PlaySE(SE_BALLOON_RED); break; case METATILE_SecretBase_BlueBalloon: - PlaySE(SE_FUUSEN2); + PlaySE(SE_BALLOON_BLUE); break; case METATILE_SecretBase_YellowBalloon: - PlaySE(SE_FUUSEN3); + PlaySE(SE_BALLOON_YELLOW); break; case METATILE_SecretBase_MudBall: - PlaySE(SE_TOY_DANGO); + PlaySE(SE_MUD_BALL); break; } } @@ -914,7 +914,7 @@ bool8 FldEff_Nop48(void) static void DoSecretBaseBreakableDoorEffect(s16 x, s16 y) { - PlaySE(SE_TOY_KABE); + PlaySE(SE_BREAKABLE_DOOR); MapGridSetMetatileIdAt(x, y, METATILE_SecretBase_BreakableDoor_BottomOpen); MapGridSetMetatileIdAt(x, y - 1, METATILE_SecretBase_BreakableDoor_TopOpen); CurrentMapDrawMetatileAt(x, y); @@ -959,28 +959,28 @@ static void Task_SecretBaseMusicNoteMatSound(u8 taskId) switch (gTasks[taskId].tMetatileID) { case METATILE_SecretBase_NoteMat_C_Low: - PlaySE(SE_TOY_C); + PlaySE(SE_NOTE_C); break; case METATILE_SecretBase_NoteMat_D: - PlaySE(SE_TOY_D); + PlaySE(SE_NOTE_D); break; case METATILE_SecretBase_NoteMat_E: - PlaySE(SE_TOY_E); + PlaySE(SE_NOTE_E); break; case METATILE_SecretBase_NoteMat_F: - PlaySE(SE_TOY_F); + PlaySE(SE_NOTE_F); break; case METATILE_SecretBase_NoteMat_G: - PlaySE(SE_TOY_G); + PlaySE(SE_NOTE_G); break; case METATILE_SecretBase_NoteMat_A: - PlaySE(SE_TOY_A); + PlaySE(SE_NOTE_A); break; case METATILE_SecretBase_NoteMat_B: - PlaySE(SE_TOY_B); + PlaySE(SE_NOTE_B); break; case METATILE_SecretBase_NoteMat_C_High: - PlaySE(SE_TOY_C1); + PlaySE(SE_NOTE_C_HIGH); break; } @@ -1006,7 +1006,7 @@ static void SpriteCB_GlitterMatSparkle(struct Sprite *sprite) sprite->data[0]++; if (sprite->data[0] == 8) - PlaySE(SE_W215); + PlaySE(SE_M_HEAL_BELL); if (sprite->data[0] >= 32) DestroySprite(sprite); @@ -1081,7 +1081,7 @@ bool8 FldEff_SandPillar(void) static void SpriteCB_SandPillar_BreakTop(struct Sprite *sprite) { - PlaySE(SE_W088); + PlaySE(SE_M_ROCK_THROW); if (MapGridGetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1) == METATILE_SecretBase_SandOrnament_TopWall) MapGridSetMetatileIdAt(gFieldEffectArguments[5], gFieldEffectArguments[6] - 1, METATILE_SecretBase_Wall_TopMid | METATILE_COLLISION_MASK); @@ -1226,7 +1226,7 @@ static void Task_FieldPoisonEffect(u8 taskId) void FldEffPoison_Start(void) { - PlaySE(SE_DOKU); + PlaySE(SE_FIELD_POISON); CreateTask(Task_FieldPoisonEffect, 80); } diff --git a/src/fldeff_rocksmash.c b/src/fldeff_rocksmash.c index 0c35ec74e..6f4ce8002 100644 --- a/src/fldeff_rocksmash.c +++ b/src/fldeff_rocksmash.c @@ -162,7 +162,7 @@ bool8 FldEff_UseRockSmash(void) // The actual rock smashing is handled by EventScript_SmashRock, so this function does very little static void FieldMove_RockSmash(void) { - PlaySE(SE_W088); + PlaySE(SE_M_ROCK_THROW); FieldEffectActiveListRemove(FLDEFF_USE_ROCK_SMASH); EnableBothScriptContexts(); } diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c index bfa20cdbc..3a38f67f0 100644 --- a/src/fldeff_softboiled.c +++ b/src/fldeff_softboiled.c @@ -61,13 +61,13 @@ void Task_TryUseSoftboiledOnPartyMon(u8 taskId) } // Take away Softboiled user's health first (-1) - PlaySE(SE_KAIFUKU); + PlaySE(SE_USE_ITEM); PartyMenuModifyHP(taskId, userPartyId, -1, GetMonData(&gPlayerParty[userPartyId], MON_DATA_MAX_HP)/5, Task_SoftboiledRestoreHealth); } static void Task_SoftboiledRestoreHealth(u8 taskId) { - PlaySE(SE_KAIFUKU); + PlaySE(SE_USE_ITEM); PartyMenuModifyHP(taskId, gPartyMenu.slotId2, 1, GetMonData(&gPlayerParty[gPartyMenu.slotId], MON_DATA_MAX_HP)/5, Task_DisplayHPRestoredMessage); } diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c index 1ee82674e..a9d81501f 100644 --- a/src/fldeff_sweetscent.c +++ b/src/fldeff_sweetscent.c @@ -51,7 +51,7 @@ static void StartSweetScentFieldEffect(void) { u8 taskId; - PlaySE(SE_W230); + PlaySE(SE_M_SWEET_SCENT); CpuFastSet(gPlttBufferUnfaded, gPaletteDecompressionBuffer, 0x100); CpuFastSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x100); BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, RGB_RED); diff --git a/src/frontier_pass.c b/src/frontier_pass.c index adc02f90b..702f6c098 100644 --- a/src/frontier_pass.c +++ b/src/frontier_pass.c @@ -871,10 +871,10 @@ static void CB2_ReturnFromRecord(void) switch (InBattlePyramid()) { case 1: - PlayBGM(MUS_PYRAMID); + PlayBGM(MUS_B_PYRAMID); break; case 2: - PlayBGM(MUS_PYRAMID_TOP); + PlayBGM(MUS_B_PYRAMID_TOP); break; default: Overworld_PlaySpecialMapMusic(); @@ -1707,5 +1707,5 @@ static void HandleFrontierMapCursorMove(u8 direction) CopyWindowToVram(i, 3); CopyBgTilemapBufferToVram(0); - PlaySE(SE_Z_SCROLL); + PlaySE(SE_DEX_SCROLL); } diff --git a/src/graphics.c b/src/graphics.c index 9a8d9f845..21aa7b50f 100644 --- a/src/graphics.c +++ b/src/graphics.c @@ -1067,10 +1067,9 @@ const u32 gBattleAnimBgPalette_Solarbeam[] = INCBIN_U32("graphics/battle_anims/b const u32 gUnknown_E6BC04[] = INCBIN_U32("graphics/unknown/unknown_E6BC04.bin.lz"); -const u32 sBlenderCenterGfx[] = INCBIN_U32("graphics/berry_blender/center.8bpp.lz"); - -const u32 gUnknown_08D91DB8[] = INCBIN_U32("graphics/berry_blender/outer.4bpp.lz"); -const u32 gUnknown_08D927EC[] = INCBIN_U32("graphics/berry_blender/outer_map.bin.lz"); +const u32 gBerryBlenderCenter_Gfx[] = INCBIN_U32("graphics/berry_blender/center.8bpp.lz"); +const u32 gBerryBlenderOuter_Gfx[] = INCBIN_U32("graphics/berry_blender/outer.4bpp.lz"); +const u32 gBerryBlenderOuter_Tilemap[] = INCBIN_U32("graphics/berry_blender/outer_map.bin.lz"); const u32 gBattleAnimBgPalette_Cosmic[] = INCBIN_U32("graphics/battle_anims/backgrounds/cosmic.gbapal.lz"); const u32 gBattleAnimBgImage_Cosmic[] = INCBIN_U32("graphics/battle_anims/backgrounds/cosmic.4bpp.lz"); @@ -1352,25 +1351,15 @@ const u16 gPokenavConditionMarker_Pal[] = INCBIN_U16("graphics/pokenav/condition const u8 gPokenavConditionMarker_Gfx[] = INCBIN_U8("graphics/pokenav/condition/marker.4bpp"); const u16 gBerryBlenderMiscPalette[] = INCBIN_U16("graphics/berry_blender/misc.gbapal"); - const u16 gBerryBlenderArrowPalette[] = INCBIN_U16("graphics/berry_blender/arrow.gbapal"); - const u8 gBerryBlenderBetaArrow_Gfx[] = INCBIN_U8("graphics/berry_blender/arrow_old.4bpp"); //unused - -const u8 gBerryBlenderMarubatsuTiles[] = INCBIN_U8("graphics/berry_blender/marubatsu.4bpp"); - -const u8 gBerryBlenderParticlesTiles[] = INCBIN_U8("graphics/berry_blender/particles.4bpp"); - +const u8 gBerryBlenderScoreSymbols_Gfx[] = INCBIN_U8("graphics/berry_blender/score_symbols.4bpp"); +const u8 gBerryBlenderParticles_Gfx[] = INCBIN_U8("graphics/berry_blender/particles.4bpp"); static const u8 sEmpty0[0x120] = {0}; - -const u8 gBerryBlenderCountdownNumbersTiles[] = INCBIN_U8("graphics/berry_blender/countdown_numbers.4bpp"); - -const u8 gBerryBlenderStartTiles[] = INCBIN_U8("graphics/berry_blender/start.4bpp"); - +const u8 gBerryBlenderCountdownNumbers_Gfx[] = INCBIN_U8("graphics/berry_blender/countdown_numbers.4bpp"); +const u8 gBerryBlenderStart_Gfx[] = INCBIN_U8("graphics/berry_blender/start.4bpp"); static const u8 sEmpty1[0x200] = {0}; - -const u8 gBerryBlenderArrowTiles[] = INCBIN_U8("graphics/berry_blender/arrow.4bpp"); - +const u8 gBerryBlenderPlayerArrow_Gfx[] = INCBIN_U8("graphics/berry_blender/arrow.4bpp"); static const u8 sEmpty2[0x2C0] = {0}; const u16 gEasyChatCursor_Pal[] = INCBIN_U16("graphics/easy_chat/cursor.gbapal"); diff --git a/src/hall_of_fame.c b/src/hall_of_fame.c index 19217ae85..2b548dea2 100644 --- a/src/hall_of_fame.c +++ b/src/hall_of_fame.c @@ -396,7 +396,7 @@ static bool8 InitHallOfFameScreen(void) if (!gPaletteFade.active) { SetMainCallback2(CB2_HallOfFame); - PlayBGM(MUS_DENDOU); + PlayBGM(MUS_HALL_OF_FAME); return FALSE; } break; @@ -648,7 +648,7 @@ static void Task_Hof_PaletteFadeAndPrintWelcomeText(u8 taskId) } HallOfFame_PrintWelcomeText(0, 15); - PlaySE(SE_DENDOU); + PlaySE(SE_APPLAUSE); gTasks[taskId].tFrameCount = 400; gTasks[taskId].func = Task_Hof_DoConfetti; } diff --git a/src/intro.c b/src/intro.c index 72aefd737..eca8b84b1 100644 --- a/src/intro.c +++ b/src/intro.c @@ -1129,7 +1129,7 @@ static void Task_IntroFadeIn(u8 taskId) SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON); gTasks[taskId].func = Task_IntroWaterDrops; gIntroFrameCounter = 0; - m4aSongNumStart(MUS_DEMO1); + m4aSongNumStart(MUS_INTRO); ResetSerial(); } @@ -1563,7 +1563,7 @@ static void Task_IntroLoadPart3Graphics(u8 taskId) SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_1 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG2_ON | DISPCNT_OBJ_ON); gTasks[taskId].func = Task_IntroSpinAndZoomPokeball; gIntroFrameCounter = 0; - m4aSongNumStart(MUS_T_BATTLE); + m4aSongNumStart(MUS_INTRO_BATTLE); } static void Task_IntroSpinAndZoomPokeball(u8 taskId) @@ -2355,7 +2355,7 @@ static void Task_IntroRayquazaGlowScene_1(u8 taskId) if (data[1] == 6) { spriteId = CreateSprite(&gIntroRayquazaHyperbeamSprite, 120, 88, 15); - PlaySE(SE_OP_BASYU); + PlaySE(SE_INTRO_BLAST); gSprites[spriteId].invisible = TRUE; gSprites[spriteId].data[3] = data[4]; data[0]++; diff --git a/src/item_menu.c b/src/item_menu.c index ae09ec7ed..ace2fd11e 100755 --- a/src/item_menu.c +++ b/src/item_menu.c @@ -52,6 +52,13 @@ #include "battle_pike.h" #include "constants/rgb.h" +enum +{ + SWITCH_POCKET_NONE, + SWITCH_POCKET_LEFT, + SWITCH_POCKET_RIGHT +}; + void GoToBagMenu(u8 bagMenuType, u8 pocketId, void (*postExitMenuMainCallback2)()); void CB2_Bag(void); bool8 SetupBagMenu(void); @@ -62,7 +69,7 @@ void AllocateBagItemListBuffers(void); void LoadBagItemListBuffers(u8); void BagMenu_PrintPocketNames(const u8*, const u8*); void BagMenu_CopyPocketNameToWindow(u32); -void BagMenu_DrawPocketIndicatorSquare(u8, u8); +static void DrawPocketIndicatorSquare(u8 x, bool8 isCurrentPocket); void CreatePocketScrollArrowPair(void); void CreatePocketSwitchArrowPair(void); void BagMenu_PrepareTMHMMoveWindow(void); @@ -80,16 +87,16 @@ u16 BagGetQuantityByPocketPosition(u8, u16); void BagDestroyPocketSwitchArrowPair(void); void TaskCloseBagMenu_2(u8); u8 AddItemMessageWindow(u8); -void bag_menu_RemoveBagItem_message_window(u8); +void BagMenu_RemoveBagItemMessageindow(u8); void set_callback3_to_bag(u8); void PrintItemDepositAmount(u8, s16); -u8 BagMenu_AddWindow(u8); -u8 GetSwitchBagPocketDirection(void); -void SwitchBagPocket(u8, s16, u16); -bool8 sub_81AC2C0(void); -void BagMenu_SwapItems(u8); -void sub_81AC10C(u8); -void sub_81AC3C0(u8); +static u8 BagMenu_AddWindow(u8); +static u8 GetSwitchBagPocketDirection(void); +static void SwitchBagPocket(u8, s16, u16); +static bool8 CanSwapItems(void); +static void BagMenu_SwapItems(u8 taskId); +static void sub_81AC10C(u8); +static void Task_HandleSwappingItemsInput(u8); void sub_81AC498(u8); void sub_81AC590(u8); void PrintTMHMMoveData(u16); @@ -106,19 +113,18 @@ void BagMenu_YesNo(u8, u8, const struct YesNoFuncTable*); void Task_ActuallyToss(u8); void ItemMenu_Cancel(u8); void sub_81AD350(u8); -void BagMenu_PrintItemCantBeHeld(u8); -void DisplayCurrentMoneyWindow(void); -void DisplaySellItemPriceAndConfirm(u8); +static void BagMenu_PrintItemCantBeHeld(u8); +static void DisplayCurrentMoneyWindow(void); +static void DisplaySellItemPriceAndConfirm(u8); void sub_81AD730(u8); void sub_81AD6E4(u8); -void bag_menu_remove_money_window(void); -void bag_menu_RemoveBagItem_message_window(u8); -void Task_BuyHowManyDialogueHandleInput(u8); -void sub_81AD8C8(u8); -void sub_81AD9C0(u8); -void sub_81ADB14(u8); -void sub_81ADA7C(u8); -void sub_81ADC0C(u8); +static void RemoveMoneyWindow(void); +static void Task_SellHowManyDialogueHandleInput(u8); +static void BagMenu_Sell_UpdateItemListAndMoney(u8); +static void BagMenu_Sell_WaitForABPress(u8); +static void BagMenu_TryDepositItem(u8); +static void Task_ChooseHowManyToDeposit(u8 taskId); +static void BagMenu_Deposit_WaitForABPress(u8); void CB2_ApprenticeExitBagMenu(void); void CB2_FavorLadyExitBagMenu(void); void CB2_QuizLadyExitBagMenu(void); @@ -528,14 +534,16 @@ void CB2_BagMenuFromBattle(void) GoToBattlePyramidBagMenu(1, CB2_SetUpReshowBattleScreenAfterMenu2); } +// Choosing berry to plant void CB2_ChooseBerry(void) { GoToBagMenu(ITEMMENULOCATION_BERRY_TREE, BERRIES_POCKET, CB2_ReturnToFieldContinueScript); } -void ChooseBerrySetCallback(void (*callback)(void)) +// Choosing berry for Berry Blender or Berry Crush +void ChooseBerryForMachine(void (*exitCallback)(void)) { - GoToBagMenu(ITEMMENULOCATION_BERRY_BLENDER_CRUSH, BERRIES_POCKET, callback); + GoToBagMenu(ITEMMENULOCATION_BERRY_BLENDER_CRUSH, BERRIES_POCKET, exitCallback); } void CB2_GoToSellMenu(void) @@ -686,7 +694,7 @@ bool8 SetupBagMenu(void) case 13: BagMenu_PrintPocketNames(gPocketNamesStringsTable[gBagPositionStruct.pocket], 0); BagMenu_CopyPocketNameToWindow(0); - BagMenu_DrawPocketIndicatorSquare(gBagPositionStruct.pocket, 1); + DrawPocketIndicatorSquare(gBagPositionStruct.pocket, TRUE); gMain.state++; break; case 14: @@ -1109,7 +1117,7 @@ void BagMenu_InitListsMenu(u8 taskId) s16* data = gTasks[taskId].data; u16* scrollPos = &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket]; u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]; - bag_menu_RemoveBagItem_message_window(4); + BagMenu_RemoveBagItemMessageindow(4); DestroyListMenuTask(data[0], scrollPos, cursorPos); UpdatePocketItemList(gBagPositionStruct.pocket); SetInitialScrollAndCursorPositions(gBagPositionStruct.pocket); @@ -1152,16 +1160,16 @@ void Task_BagMenu_HandleInput(u8 taskId) { switch (GetSwitchBagPocketDirection()) { - case 1: - SwitchBagPocket(taskId, -1, 0); + case SWITCH_POCKET_LEFT: + SwitchBagPocket(taskId, MENU_CURSOR_DELTA_LEFT, 0); return; - case 2: - SwitchBagPocket(taskId, 1, 0); + case SWITCH_POCKET_RIGHT: + SwitchBagPocket(taskId, MENU_CURSOR_DELTA_RIGHT, 0); return; default: if (gMain.newKeys & SELECT_BUTTON) { - if (sub_81AC2C0() == 1) + if (CanSwapItems() == TRUE) { ListMenuGetScrollAndRow(data[0], scrollPos, cursorPos); if ((*scrollPos + *cursorPos) != gBagMenu->numItemStacks[gBagPositionStruct.pocket] - 1) @@ -1184,7 +1192,7 @@ void Task_BagMenu_HandleInput(u8 taskId) case LIST_CANCEL: if (gBagPositionStruct.location == ITEMMENULOCATION_BERRY_BLENDER_CRUSH) { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); break; } PlaySE(SE_SELECT); @@ -1215,26 +1223,26 @@ void set_callback3_to_bag(u8 taskId) gTasks[taskId].func = Task_BagMenu_HandleInput; } -u8 GetSwitchBagPocketDirection(void) +static u8 GetSwitchBagPocketDirection(void) { u8 LRKeys; if (gBagMenu->pocketSwitchDisabled) - return 0; + return SWITCH_POCKET_NONE; LRKeys = GetLRKeysPressed(); if ((gMain.newKeys & DPAD_LEFT) || LRKeys == MENU_L_PRESSED) { PlaySE(SE_SELECT); - return 1; + return SWITCH_POCKET_LEFT; } if ((gMain.newKeys & DPAD_RIGHT) || LRKeys == MENU_R_PRESSED) { PlaySE(SE_SELECT); - return 2; + return SWITCH_POCKET_RIGHT; } - return 0; + return SWITCH_POCKET_NONE; } -void ChangeBagPocketId(u8 *bagPocketId, s8 deltaBagPocketId) +static void ChangeBagPocketId(u8 *bagPocketId, s8 deltaBagPocketId) { if (deltaBagPocketId == 1 && *bagPocketId == POCKETS_COUNT - 1) *bagPocketId = 0; @@ -1244,7 +1252,7 @@ void ChangeBagPocketId(u8 *bagPocketId, s8 deltaBagPocketId) *bagPocketId += deltaBagPocketId; } -void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3) +static void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3) { s16* data = gTasks[taskId].data; u8 pocketId; @@ -1263,7 +1271,7 @@ void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3) } pocketId = gBagPositionStruct.pocket; ChangeBagPocketId(&pocketId, deltaBagPocketId); - if (deltaBagPocketId == 1) + if (deltaBagPocketId == MENU_CURSOR_DELTA_RIGHT) { BagMenu_PrintPocketNames(gPocketNamesStringsTable[gBagPositionStruct.pocket], gPocketNamesStringsTable[pocketId]); BagMenu_CopyPocketNameToWindow(0); @@ -1273,8 +1281,8 @@ void SwitchBagPocket(u8 taskId, s16 deltaBagPocketId, u16 a3) BagMenu_PrintPocketNames(gPocketNamesStringsTable[pocketId], gPocketNamesStringsTable[gBagPositionStruct.pocket]); BagMenu_CopyPocketNameToWindow(8); } - BagMenu_DrawPocketIndicatorSquare(gBagPositionStruct.pocket, 0); - BagMenu_DrawPocketIndicatorSquare(pocketId, 1); + DrawPocketIndicatorSquare(gBagPositionStruct.pocket, FALSE); + DrawPocketIndicatorSquare(pocketId, TRUE); FillBgTilemapBufferRect_Palette0(2, 11, 14, 2, 15, 16); ScheduleBgCopyTilemapToVram(2); SetBagVisualPocketId(pocketId, 1); @@ -1291,15 +1299,15 @@ void sub_81AC10C(u8 taskId) { switch (GetSwitchBagPocketDirection()) { - case 1: + case SWITCH_POCKET_LEFT: ChangeBagPocketId(&gBagPositionStruct.pocket, data[11]); SwitchTaskToFollowupFunc(taskId); - SwitchBagPocket(taskId, -1, 1); + SwitchBagPocket(taskId, MENU_CURSOR_DELTA_LEFT, 1); return; - case 2: + case SWITCH_POCKET_RIGHT: ChangeBagPocketId(&gBagPositionStruct.pocket, data[11]); SwitchTaskToFollowupFunc(taskId); - SwitchBagPocket(taskId, 1, 1); + SwitchBagPocket(taskId, MENU_CURSOR_DELTA_RIGHT, 1); return; } } @@ -1336,16 +1344,16 @@ void sub_81AC23C(u8 a) ScheduleBgCopyTilemapToVram(2); } -void BagMenu_DrawPocketIndicatorSquare(u8 x, u8 is_current_bag) +static void DrawPocketIndicatorSquare(u8 x, bool8 isCurrentPocket) { - if (is_current_bag == 0) + if (!isCurrentPocket) FillBgTilemapBufferRect_Palette0(2, 0x1017, x + 5, 3, 1, 1); else FillBgTilemapBufferRect_Palette0(2, 0x102B, x + 5, 3, 1, 1); ScheduleBgCopyTilemapToVram(2); } -bool8 sub_81AC2C0(void) +static bool8 CanSwapItems(void) { if (gBagPositionStruct.location <= ITEMMENULOCATION_BATTLE) { @@ -1370,10 +1378,10 @@ void BagMenu_SwapItems(u8 taskId) sub_80D4FEC(data[1]); BagDestroyPocketSwitchArrowPair(); BagMenu_PrintCursor_(data[0], 2); - gTasks[taskId].func = sub_81AC3C0; + gTasks[taskId].func = Task_HandleSwappingItemsInput; } -void sub_81AC3C0(u8 taskId) +static void Task_HandleSwappingItemsInput(u8 taskId) { s16* data = gTasks[taskId].data; int input; @@ -1642,7 +1650,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId) if (cursorPos > 0 && sub_81ACDFC(cursorPos - 2)) { PlaySE(SE_SELECT); - sub_8199134(0, -1); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_UP); } } else if (gMain.newKeys & DPAD_DOWN) @@ -1650,7 +1658,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId) if (cursorPos < (gBagMenu->contextMenuNumItems - 2) && sub_81ACDFC(cursorPos + 2)) { PlaySE(SE_SELECT); - sub_8199134(0, 1); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_DOWN); } } else if ((gMain.newKeys & DPAD_LEFT) || GetLRKeysPressed() == MENU_L_PRESSED) @@ -1658,7 +1666,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId) if ((cursorPos & 1) && sub_81ACDFC(cursorPos - 1)) { PlaySE(SE_SELECT); - sub_8199134(-1, 0); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_LEFT, MENU_CURSOR_DELTA_NONE); } } else if ((gMain.newKeys & DPAD_RIGHT) || GetLRKeysPressed() == MENU_R_PRESSED) @@ -1666,7 +1674,7 @@ void Task_HandleOutOfBattleItemMenuInput(u8 taskId) if (!(cursorPos & 1) && sub_81ACDFC(cursorPos + 1)) { PlaySE(SE_SELECT); - sub_8199134(1, 0); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_RIGHT, MENU_CURSOR_DELTA_NONE); } } else if (gMain.newKeys & A_BUTTON) @@ -1869,7 +1877,7 @@ void BagMenu_PrintThereIsNoPokemon(u8 taskId) DisplayItemMessage(taskId, 1, gText_NoPokemon, sub_81AD350); } -void BagMenu_PrintItemCantBeHeld(u8 taskId) +static void BagMenu_PrintItemCantBeHeld(u8 taskId) { CopyItemName(gSpecialVar_ItemId, gStringVar1); StringExpandPlaceholders(gStringVar4, gText_Var1CantBeHeld); @@ -2010,7 +2018,7 @@ void Task_ItemContext_Sell(u8 taskId) } } -void DisplaySellItemPriceAndConfirm(u8 taskId) +static void DisplaySellItemPriceAndConfirm(u8 taskId) { s16* data = gTasks[taskId].data; @@ -2028,8 +2036,8 @@ void BagMenu_CancelSell(u8 taskId) { s16* data = gTasks[taskId].data; - bag_menu_remove_money_window(); - bag_menu_RemoveBagItem_message_window(4); + RemoveMoneyWindow(); + BagMenu_RemoveBagItemMessageindow(4); BagMenu_PrintCursor_(data[0], 0); set_callback3_to_bag(taskId); } @@ -2041,10 +2049,10 @@ void sub_81AD730(u8 taskId) PrintItemSoldAmount(windowId, 1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount); DisplayCurrentMoneyWindow(); - gTasks[taskId].func = Task_BuyHowManyDialogueHandleInput; + gTasks[taskId].func = Task_SellHowManyDialogueHandleInput; } -void Task_BuyHowManyDialogueHandleInput(u8 taskId) +static void Task_SellHowManyDialogueHandleInput(u8 taskId) { s16* data = gTasks[taskId].data; @@ -2062,9 +2070,9 @@ void Task_BuyHowManyDialogueHandleInput(u8 taskId) { PlaySE(SE_SELECT); BagMenu_PrintCursor_(data[0], 0); - bag_menu_remove_money_window(); + RemoveMoneyWindow(); BagMenu_RemoveWindow(8); - bag_menu_RemoveBagItem_message_window(4); + BagMenu_RemoveBagItemMessageindow(4); set_callback3_to_bag(taskId); } } @@ -2076,16 +2084,16 @@ void BagMenu_ConfirmSell(u8 taskId) CopyItemName(gSpecialVar_ItemId, gStringVar2); ConvertIntToDecimalStringN(gStringVar1, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount, STR_CONV_MODE_LEFT_ALIGN, 6); StringExpandPlaceholders(gStringVar4, gText_TurnedOverVar1ForVar2); - DisplayItemMessage(taskId, 1, gStringVar4, sub_81AD8C8); + DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_Sell_UpdateItemListAndMoney); } -void sub_81AD8C8(u8 taskId) +static void BagMenu_Sell_UpdateItemListAndMoney(u8 taskId) { s16* data = gTasks[taskId].data; u16* scrollPos = &gBagPositionStruct.scrollPosition[gBagPositionStruct.pocket]; u16* cursorPos = &gBagPositionStruct.cursorPosition[gBagPositionStruct.pocket]; - PlaySE(SE_REGI); + PlaySE(SE_SHOP); RemoveBagItem(gSpecialVar_ItemId, tItemCount); AddMoney(&gSaveBlock1Ptr->money, (ItemId_GetPrice(gSpecialVar_ItemId) / 2) * tItemCount); DestroyListMenuTask(data[0], scrollPos, cursorPos); @@ -2095,15 +2103,15 @@ void sub_81AD8C8(u8 taskId) data[0] = ListMenuInit(&gMultiuseListMenuTemplate, *scrollPos, *cursorPos); BagMenu_PrintCursor_(data[0], 2); PrintMoneyAmountInMoneyBox(gBagMenu->windowPointers[9], GetMoney(&gSaveBlock1Ptr->money), 0); - gTasks[taskId].func = sub_81AD9C0; + gTasks[taskId].func = BagMenu_Sell_WaitForABPress; } -void sub_81AD9C0(u8 taskId) +static void BagMenu_Sell_WaitForABPress(u8 taskId) { if (gMain.newKeys & (A_BUTTON | B_BUTTON)) { PlaySE(SE_SELECT); - bag_menu_remove_money_window(); + RemoveMoneyWindow(); BagMenu_InitListsMenu(taskId); } } @@ -2115,7 +2123,7 @@ void Task_ItemContext_Deposit(u8 taskId) tItemCount = 1; if (data[2] == 1) { - sub_81ADB14(taskId); + BagMenu_TryDepositItem(taskId); } else { @@ -2124,11 +2132,11 @@ void Task_ItemContext_Deposit(u8 taskId) FillWindowPixelBuffer(1, PIXEL_FILL(0)); BagMenu_Print(1, 1, gStringVar4, 3, 1, 0, 0, 0, 0); sub_81ABC3C(7); - gTasks[taskId].func = sub_81ADA7C; + gTasks[taskId].func = Task_ChooseHowManyToDeposit; } } -void sub_81ADA7C(u8 taskId) +static void Task_ChooseHowManyToDeposit(u8 taskId) { s16* data = gTasks[taskId].data; @@ -2140,7 +2148,7 @@ void sub_81ADA7C(u8 taskId) { PlaySE(SE_SELECT); BagMenu_RemoveWindow(7); - sub_81ADB14(taskId); + BagMenu_TryDepositItem(taskId); } else if (gMain.newKeys & B_BUTTON) { @@ -2152,7 +2160,7 @@ void sub_81ADA7C(u8 taskId) } } -void sub_81ADB14(u8 taskId) +static void BagMenu_TryDepositItem(u8 taskId) { s16* data = gTasks[taskId].data; @@ -2160,7 +2168,7 @@ void sub_81ADB14(u8 taskId) if (ItemId_GetImportance(gSpecialVar_ItemId)) { BagMenu_Print(1, 1, gText_CantStoreImportantItems, 3, 1, 0, 0, 0, 0); - gTasks[taskId].func = sub_81ADC0C; + gTasks[taskId].func = BagMenu_Deposit_WaitForABPress; } else if (AddPCItem(gSpecialVar_ItemId, tItemCount) == TRUE) { @@ -2173,11 +2181,11 @@ void sub_81ADB14(u8 taskId) else { BagMenu_Print(1, 1, gText_NoRoomForItems, 3, 1, 0, 0, 0, 0); - gTasks[taskId].func = sub_81ADC0C; + gTasks[taskId].func = BagMenu_Deposit_WaitForABPress; } } -void sub_81ADC0C(u8 taskId) +static void BagMenu_Deposit_WaitForABPress(u8 taskId) { s16* data = gTasks[taskId].data; @@ -2248,7 +2256,7 @@ void Task_WallyTutorialBagMenu(u8 taskId) { case 0x66: PlaySE(SE_SELECT); - SwitchBagPocket(taskId, 1, 0); + SwitchBagPocket(taskId, MENU_CURSOR_DELTA_RIGHT, 0); data[8]++; break; case 0xCC: @@ -2414,7 +2422,7 @@ u8 AddItemMessageWindow(u8 which) return *ptr; } -void bag_menu_RemoveBagItem_message_window(u8 which) +void BagMenu_RemoveBagItemMessageindow(u8 which) { u8 *ptr = &gBagMenu->windowPointers[which]; if (*ptr != 0xFF) @@ -2433,14 +2441,14 @@ void BagMenu_YesNo(u8 a, u8 b, const struct YesNoFuncTable *funcTable) CreateYesNoMenuWithCallbacks(a, &sContextMenuWindowTemplates[b], 1, 0, 2, 1, 14, funcTable); } -void DisplayCurrentMoneyWindow(void) +static void DisplayCurrentMoneyWindow(void) { u8 windowId = BagMenu_AddWindow(9); PrintMoneyAmountInMoneyBoxWithBorder(windowId, 1, 14, GetMoney(&gSaveBlock1Ptr->money)); AddMoneyLabelObject(19, 11); } -void bag_menu_remove_money_window(void) +static void RemoveMoneyWindow(void) { BagMenu_RemoveWindow(9); RemoveMoneyLabelObject(); diff --git a/src/item_menu_icons.c b/src/item_menu_icons.c index cfafcbb75..cc51236c8 100644 --- a/src/item_menu_icons.c +++ b/src/item_menu_icons.c @@ -310,51 +310,51 @@ static const struct SpriteTemplate gBerryPicRotatingSpriteTemplate = .callback = SpriteCallbackDummy, }; -static const struct CompressedTilesPal gBerryPicTable[] = -{ - {gBerryPic_Cheri, gBerryPalette_Cheri}, - {gBerryPic_Chesto, gBerryPalette_Chesto}, - {gBerryPic_Pecha, gBerryPalette_Pecha}, - {gBerryPic_Rawst, gBerryPalette_Rawst}, - {gBerryPic_Aspear, gBerryPalette_Aspear}, - {gBerryPic_Leppa, gBerryPalette_Leppa}, - {gBerryPic_Oran, gBerryPalette_Oran}, - {gBerryPic_Persim, gBerryPalette_Persim}, - {gBerryPic_Lum, gBerryPalette_Lum}, - {gBerryPic_Sitrus, gBerryPalette_Sitrus}, - {gBerryPic_Figy, gBerryPalette_Figy}, - {gBerryPic_Wiki, gBerryPalette_Wiki}, - {gBerryPic_Mago, gBerryPalette_Mago}, - {gBerryPic_Aguav, gBerryPalette_Aguav}, - {gBerryPic_Iapapa, gBerryPalette_Iapapa}, - {gBerryPic_Razz, gBerryPalette_Razz}, - {gBerryPic_Bluk, gBerryPalette_Bluk}, - {gBerryPic_Nanab, gBerryPalette_Nanab}, - {gBerryPic_Wepear, gBerryPalette_Wepear}, - {gBerryPic_Pinap, gBerryPalette_Pinap}, - {gBerryPic_Pomeg, gBerryPalette_Pomeg}, - {gBerryPic_Kelpsy, gBerryPalette_Kelpsy}, - {gBerryPic_Qualot, gBerryPalette_Qualot}, - {gBerryPic_Hondew, gBerryPalette_Hondew}, - {gBerryPic_Grepa, gBerryPalette_Grepa}, - {gBerryPic_Tamato, gBerryPalette_Tamato}, - {gBerryPic_Cornn, gBerryPalette_Cornn}, - {gBerryPic_Magost, gBerryPalette_Magost}, - {gBerryPic_Rabuta, gBerryPalette_Rabuta}, - {gBerryPic_Nomel, gBerryPalette_Nomel}, - {gBerryPic_Spelon, gBerryPalette_Spelon}, - {gBerryPic_Pamtre, gBerryPalette_Pamtre}, - {gBerryPic_Watmel, gBerryPalette_Watmel}, - {gBerryPic_Durin, gBerryPalette_Durin}, - {gBerryPic_Belue, gBerryPalette_Belue}, - {gBerryPic_Liechi, gBerryPalette_Liechi}, - {gBerryPic_Ganlon, gBerryPalette_Ganlon}, - {gBerryPic_Salac, gBerryPalette_Salac}, - {gBerryPic_Petaya, gBerryPalette_Petaya}, - {gBerryPic_Apicot, gBerryPalette_Apicot}, - {gBerryPic_Lansat, gBerryPalette_Lansat}, - {gBerryPic_Starf, gBerryPalette_Starf}, - {gBerryPic_Enigma, gBerryPalette_Enigma}, +static const struct CompressedTilesPal sBerryPicTable[] = +{ + [ITEM_TO_BERRY(ITEM_CHERI_BERRY) - 1] = {gBerryPic_Cheri, gBerryPalette_Cheri}, + [ITEM_TO_BERRY(ITEM_CHESTO_BERRY) - 1] = {gBerryPic_Chesto, gBerryPalette_Chesto}, + [ITEM_TO_BERRY(ITEM_PECHA_BERRY) - 1] = {gBerryPic_Pecha, gBerryPalette_Pecha}, + [ITEM_TO_BERRY(ITEM_RAWST_BERRY) - 1] = {gBerryPic_Rawst, gBerryPalette_Rawst}, + [ITEM_TO_BERRY(ITEM_ASPEAR_BERRY) - 1] = {gBerryPic_Aspear, gBerryPalette_Aspear}, + [ITEM_TO_BERRY(ITEM_LEPPA_BERRY) - 1] = {gBerryPic_Leppa, gBerryPalette_Leppa}, + [ITEM_TO_BERRY(ITEM_ORAN_BERRY) - 1] = {gBerryPic_Oran, gBerryPalette_Oran}, + [ITEM_TO_BERRY(ITEM_PERSIM_BERRY) - 1] = {gBerryPic_Persim, gBerryPalette_Persim}, + [ITEM_TO_BERRY(ITEM_LUM_BERRY) - 1] = {gBerryPic_Lum, gBerryPalette_Lum}, + [ITEM_TO_BERRY(ITEM_SITRUS_BERRY) - 1] = {gBerryPic_Sitrus, gBerryPalette_Sitrus}, + [ITEM_TO_BERRY(ITEM_FIGY_BERRY) - 1] = {gBerryPic_Figy, gBerryPalette_Figy}, + [ITEM_TO_BERRY(ITEM_WIKI_BERRY) - 1] = {gBerryPic_Wiki, gBerryPalette_Wiki}, + [ITEM_TO_BERRY(ITEM_MAGO_BERRY) - 1] = {gBerryPic_Mago, gBerryPalette_Mago}, + [ITEM_TO_BERRY(ITEM_AGUAV_BERRY) - 1] = {gBerryPic_Aguav, gBerryPalette_Aguav}, + [ITEM_TO_BERRY(ITEM_IAPAPA_BERRY) - 1] = {gBerryPic_Iapapa, gBerryPalette_Iapapa}, + [ITEM_TO_BERRY(ITEM_RAZZ_BERRY) - 1] = {gBerryPic_Razz, gBerryPalette_Razz}, + [ITEM_TO_BERRY(ITEM_BLUK_BERRY) - 1] = {gBerryPic_Bluk, gBerryPalette_Bluk}, + [ITEM_TO_BERRY(ITEM_NANAB_BERRY) - 1] = {gBerryPic_Nanab, gBerryPalette_Nanab}, + [ITEM_TO_BERRY(ITEM_WEPEAR_BERRY) - 1] = {gBerryPic_Wepear, gBerryPalette_Wepear}, + [ITEM_TO_BERRY(ITEM_PINAP_BERRY) - 1] = {gBerryPic_Pinap, gBerryPalette_Pinap}, + [ITEM_TO_BERRY(ITEM_POMEG_BERRY) - 1] = {gBerryPic_Pomeg, gBerryPalette_Pomeg}, + [ITEM_TO_BERRY(ITEM_KELPSY_BERRY) - 1] = {gBerryPic_Kelpsy, gBerryPalette_Kelpsy}, + [ITEM_TO_BERRY(ITEM_QUALOT_BERRY) - 1] = {gBerryPic_Qualot, gBerryPalette_Qualot}, + [ITEM_TO_BERRY(ITEM_HONDEW_BERRY) - 1] = {gBerryPic_Hondew, gBerryPalette_Hondew}, + [ITEM_TO_BERRY(ITEM_GREPA_BERRY) - 1] = {gBerryPic_Grepa, gBerryPalette_Grepa}, + [ITEM_TO_BERRY(ITEM_TAMATO_BERRY) - 1] = {gBerryPic_Tamato, gBerryPalette_Tamato}, + [ITEM_TO_BERRY(ITEM_CORNN_BERRY) - 1] = {gBerryPic_Cornn, gBerryPalette_Cornn}, + [ITEM_TO_BERRY(ITEM_MAGOST_BERRY) - 1] = {gBerryPic_Magost, gBerryPalette_Magost}, + [ITEM_TO_BERRY(ITEM_RABUTA_BERRY) - 1] = {gBerryPic_Rabuta, gBerryPalette_Rabuta}, + [ITEM_TO_BERRY(ITEM_NOMEL_BERRY) - 1] = {gBerryPic_Nomel, gBerryPalette_Nomel}, + [ITEM_TO_BERRY(ITEM_SPELON_BERRY) - 1] = {gBerryPic_Spelon, gBerryPalette_Spelon}, + [ITEM_TO_BERRY(ITEM_PAMTRE_BERRY) - 1] = {gBerryPic_Pamtre, gBerryPalette_Pamtre}, + [ITEM_TO_BERRY(ITEM_WATMEL_BERRY) - 1] = {gBerryPic_Watmel, gBerryPalette_Watmel}, + [ITEM_TO_BERRY(ITEM_DURIN_BERRY) - 1] = {gBerryPic_Durin, gBerryPalette_Durin}, + [ITEM_TO_BERRY(ITEM_BELUE_BERRY) - 1] = {gBerryPic_Belue, gBerryPalette_Belue}, + [ITEM_TO_BERRY(ITEM_LIECHI_BERRY) - 1] = {gBerryPic_Liechi, gBerryPalette_Liechi}, + [ITEM_TO_BERRY(ITEM_GANLON_BERRY) - 1] = {gBerryPic_Ganlon, gBerryPalette_Ganlon}, + [ITEM_TO_BERRY(ITEM_SALAC_BERRY) - 1] = {gBerryPic_Salac, gBerryPalette_Salac}, + [ITEM_TO_BERRY(ITEM_PETAYA_BERRY) - 1] = {gBerryPic_Petaya, gBerryPalette_Petaya}, + [ITEM_TO_BERRY(ITEM_APICOT_BERRY) - 1] = {gBerryPic_Apicot, gBerryPalette_Apicot}, + [ITEM_TO_BERRY(ITEM_LANSAT_BERRY) - 1] = {gBerryPic_Lansat, gBerryPalette_Lansat}, + [ITEM_TO_BERRY(ITEM_STARF_BERRY) - 1] = {gBerryPic_Starf, gBerryPalette_Starf}, + [ITEM_TO_BERRY(ITEM_ENIGMA_BERRY) - 1] = {gBerryPic_Enigma, gBerryPalette_Enigma}, }; const struct CompressedSpriteSheet gBerryCheckCircleSpriteSheet = @@ -581,10 +581,10 @@ static void LoadBerryGfx(u8 berryId) // unknown empty if statement } - pal.data = gBerryPicTable[berryId].pal; + pal.data = sBerryPicTable[berryId].pal; pal.tag = TAG_BERRY_PIC_PAL; LoadCompressedSpritePalette(&pal); - LZDecompressWram(gBerryPicTable[berryId].tiles, &gDecompressionBuffer[0x1000]); + LZDecompressWram(sBerryPicTable[berryId].tiles, &gDecompressionBuffer[0x1000]); sub_80D5018(&gDecompressionBuffer[0x1000], &gDecompressionBuffer[0]); } @@ -599,7 +599,8 @@ void FreeBerryTagSpritePalette(void) FreeSpritePaletteByTag(TAG_BERRY_PIC_PAL); } -u8 LoadSpinningBerryPicGfx(u8 berryId, u8 x, u8 y, bool8 startAffine) +// For throwing berries into the Berry Blender +u8 CreateSpinningBerrySprite(u8 berryId, u8 x, u8 y, bool8 startAffine) { u8 spriteId; diff --git a/src/item_use.c b/src/item_use.c index 2c9ffaf32..a9132ae5e 100755 --- a/src/item_use.c +++ b/src/item_use.c @@ -328,7 +328,7 @@ static void Task_UseItemfinder(u8 taskId) } return; } - PlaySE(SE_DAUGI); + PlaySE(SE_ITEMFINDER); tItemfinderBeeps++; } tCounter = (tCounter + 1) & 0x1F; @@ -845,7 +845,7 @@ static void Task_StartUseRepel(u8 taskId) if (++data[8] > 7) { data[8] = 0; - PlaySE(SE_TU_SAA); + PlaySE(SE_REPEL); gTasks[taskId].func = Task_UseRepel; } } @@ -867,7 +867,7 @@ static void Task_UsedBlackWhiteFlute(u8 taskId) { if(++gTasks[taskId].data[8] > 7) { - PlaySE(SE_BIDORO); + PlaySE(SE_GLASS_FLUTE); if (!InBattlePyramid()) DisplayItemMessage(taskId, 1, gStringVar4, BagMenu_InitListsMenu); else @@ -969,7 +969,7 @@ static void Task_UseStatIncreaseItem(u8 taskId) { if(++gTasks[taskId].data[8] > 7) { - PlaySE(SE_KAIFUKU); + PlaySE(SE_USE_ITEM); RemoveBagItem(gSpecialVar_ItemId, 1); if (!InBattlePyramid()) DisplayItemMessage(taskId, 1, UseStatIncreaseItem(gSpecialVar_ItemId), Task_CloseStatIncreaseMessage); diff --git a/src/link.c b/src/link.c index 62a9e4151..cdaf58469 100644 --- a/src/link.c +++ b/src/link.c @@ -99,7 +99,7 @@ u16 gLinkSavedIme; EWRAM_DATA u8 gLinkTestDebugValuesEnabled = 0; EWRAM_DATA u8 gUnknown_020223BD = 0; -EWRAM_DATA u32 gUnknown_020223C0 = 0; +EWRAM_DATA u32 gBerryBlenderKeySendAttempts = 0; EWRAM_DATA u16 gBlockRecvBuffer[MAX_RFU_PLAYERS][BLOCK_BUFFER_SIZE / 2] = {}; EWRAM_DATA u8 gBlockSendBuffer[BLOCK_BUFFER_SIZE] = {}; EWRAM_DATA bool8 gLinkOpen = FALSE; @@ -552,7 +552,7 @@ static void ProcessRecvCmds(u8 unused) InitBlockSend(block, sizeof(*block)); break; } - case LINKCMD_SEND_HELD_KEYS: + case LINKCMD_BLENDER_SEND_KEYS: gLinkPartnersHeldKeys[i] = gRecvCmds[i][1]; break; case LINKCMD_0x5555: @@ -636,13 +636,13 @@ static void ProcessRecvCmds(u8 unused) case LINKCMD_READY_EXIT_STANDBY: gReadyToExitStandby[i] = TRUE; break; - case LINKCMD_0xAAAA: - sub_800A418(); + case LINKCMD_BLENDER_NO_PBLOCK_SPACE: + SetBerryBlenderLinkCallback(); break; case LINKCMD_SEND_BLOCK_REQ: SendBlock(0, sBlockRequests[gRecvCmds[i][1]].address, sBlockRequests[gRecvCmds[i][1]].size); break; - case LINKCMD_SEND_HELD_KEYS_2: + case LINKCMD_SEND_HELD_KEYS: gLinkPartnersHeldKeys[i] = gRecvCmds[i][1]; break; } @@ -660,8 +660,8 @@ static void BuildSendCmd(u16 command) case LINKCMD_READY_EXIT_STANDBY: gSendCmd[0] = LINKCMD_READY_EXIT_STANDBY; break; - case LINKCMD_SEND_HELD_KEYS: - gSendCmd[0] = LINKCMD_SEND_HELD_KEYS; + case LINKCMD_BLENDER_SEND_KEYS: + gSendCmd[0] = LINKCMD_BLENDER_SEND_KEYS; gSendCmd[1] = gMain.heldKeys; break; case LINKCMD_0x5555: @@ -687,8 +687,8 @@ static void BuildSendCmd(u16 command) gSendCmd[1] = sBlockSend.size; gSendCmd[2] = sBlockSend.multiplayerId + 0x80; break; - case LINKCMD_0xAAAA: - gSendCmd[0] = LINKCMD_0xAAAA; + case LINKCMD_BLENDER_NO_PBLOCK_SPACE: + gSendCmd[0] = LINKCMD_BLENDER_NO_PBLOCK_SPACE; break; case LINKCMD_0xAAAB: gSendCmd[0] = LINKCMD_0xAAAB; @@ -705,12 +705,12 @@ static void BuildSendCmd(u16 command) case LINKCMD_0x5566: gSendCmd[0] = LINKCMD_0x5566; break; - case LINKCMD_SEND_HELD_KEYS_2: + case LINKCMD_SEND_HELD_KEYS: if (gHeldKeyCodeToSend == 0 || gLinkTransferringData) { break; } - gSendCmd[0] = LINKCMD_SEND_HELD_KEYS_2; + gSendCmd[0] = LINKCMD_SEND_HELD_KEYS; gSendCmd[1] = gHeldKeyCodeToSend; break; } @@ -738,7 +738,7 @@ bool32 IsSendingKeysToLink(void) static void LinkCB_SendHeldKeys(void) { if (gReceivedRemoteLinkPlayers == TRUE) - BuildSendCmd(LINKCMD_SEND_HELD_KEYS_2); + BuildSendCmd(LINKCMD_SEND_HELD_KEYS); } void ClearLinkCallback(void) @@ -1009,34 +1009,36 @@ static void LinkCB_BlockSendEnd(void) gLinkCallback = NULL; } -static void sub_800A3F8(void) +static void LinkCB_BerryBlenderSendHeldKeys(void) { GetMultiplayerId(); - BuildSendCmd(LINKCMD_SEND_HELD_KEYS); - gUnknown_020223C0++; + BuildSendCmd(LINKCMD_BLENDER_SEND_KEYS); + gBerryBlenderKeySendAttempts++; } -void sub_800A418(void) +void SetBerryBlenderLinkCallback(void) { - gUnknown_020223C0 = 0; + gBerryBlenderKeySendAttempts = 0; if (gWirelessCommType) { - sub_800F850(); + Rfu_SetBerryBlenderLinkCallback(); } else { - gLinkCallback = sub_800A3F8; + gLinkCallback = LinkCB_BerryBlenderSendHeldKeys; } } -u32 sub_800A44C(void) +// Unused +static u32 GetBerryBlenderKeySendAttempts(void) { - return gUnknown_020223C0; + return gBerryBlenderKeySendAttempts; } -void sub_800A458(void) +// Unused +static void SendBerryBlenderNoSpaceForPokeblocks(void) { - BuildSendCmd(LINKCMD_0xAAAA); + BuildSendCmd(LINKCMD_BLENDER_NO_PBLOCK_SPACE); } u8 GetMultiplayerId(void) diff --git a/src/link_rfu_2.c b/src/link_rfu_2.c index 3372aa766..1ea6f4fce 100644 --- a/src/link_rfu_2.c +++ b/src/link_rfu_2.c @@ -876,8 +876,7 @@ static void sub_800F498(u16 *a0, u8 *a1) static bool32 RfuProcessEnqueuedRecvBlock(void) { - u8 i; - u8 j; + u8 i, j; u8 sp00[MAX_RFU_PLAYERS * (2 * (CMD_LENGTH - 1))]; u8 sp48[2 * (CMD_LENGTH - 1)]; u8 status; @@ -923,24 +922,25 @@ static bool32 RfuProcessEnqueuedRecvBlock(void) static void HandleSendFailure(u8 unused, u32 flags) { - s32 i, j; + s32 i, j, temp; const u8 *r10 = Rfu.sendBlock.payload; for (i = 0; i < Rfu.sendBlock.count; i++) { if (!(flags & 1)) { - sResendBlock16[0] = RFU_COMMAND_0x8900 | i; + sResendBlock16[0] = RFUCMD_0x8900 | i; for (j = 0; j < 7; j++) { - sResendBlock16[j + 1] = (r10[12 * i + (j << 1) + 1] << 8) | r10[12 * i + (j << 1) + 0]; + temp = j << 1; + sResendBlock16[j + 1] = (r10[i * 12 + temp + 1] << 8) | r10[i * 12 + temp]; } + for (j = 0; j < 7; j++) { - sResendBlock8[2 * j + 1] = sResendBlock16[j] >> 8; - sResendBlock8[2 * j + 0] = sResendBlock16[j]; - - j++;j--; // Needed to match; + temp = j << 1; + sResendBlock8[temp + 1] = sResendBlock16[j] >> 8; + sResendBlock8[temp + 0] = sResendBlock16[j] & 0xff; } RfuSendQueue_Enqueue(&Rfu.sendQueue, sResendBlock8); Rfu.sendBlock.failedFlags |= (1 << i); @@ -984,7 +984,7 @@ static void RfuFunc_SendKeysToRfu(void) { sHeldKeyCount++; gHeldKeyCodeToSend |= (sHeldKeyCount << 8); - RfuPrepareSendBuffer(RFU_COMMAND_0xBE00); + RfuPrepareSendBuffer(RFUCMD_SEND_HELD_KEYS); } } @@ -1008,41 +1008,40 @@ void ClearLinkRfuCallback(void) Rfu.callback = NULL; } -void sub_800F820(void) +static void Rfu_BerryBlenderSendHeldKeys(void) { - RfuPrepareSendBuffer(RFU_COMMAND_0x4400); + RfuPrepareSendBuffer(RFUCMD_BLENDER_SEND_KEYS); if (GetMultiplayerId() == 0) - gSendCmd[6] = GetBlenderArrowPosition(); - gUnknown_020223C0++; + gSendCmd[BLENDER_COMM_ARROW_POS] = GetBlenderArrowPosition(); + gBerryBlenderKeySendAttempts++; } -void sub_800F850(void) +void Rfu_SetBerryBlenderLinkCallback(void) { if (Rfu.callback == NULL) - Rfu.callback = sub_800F820; + Rfu.callback = Rfu_BerryBlenderSendHeldKeys; } static void RfuHandleReceiveCommand(u8 unused) { - u16 i; - u16 j; + u16 i, j; for (i = 0; i < MAX_RFU_PLAYERS; i++) { switch (gRecvCmds[i][0] & 0xff00) { - case RFU_COMMAND_0x7800: + case RFUCMD_0x7800: if (Rfu.parentChild == MODE_CHILD && gReceivedRemoteLinkPlayers) return; // fallthrough - case RFU_COMMAND_0x7700: + case RFUCMD_0x7700: if (gRfuLinkStatus->parentChild == MODE_CHILD) { Rfu.playerCount = gRecvCmds[i][1]; - Rfu.multiplayerId = sub_800F74C((u8 *)(gRecvCmds[i] + 2)); + Rfu.multiplayerId = sub_800F74C((u8 *)(&gRecvCmds[i][2])); } break; - case RFU_COMMAND_0x8800: + case RFUCMD_0x8800: if (Rfu.recvBlock[i].receiving == 0) { Rfu.recvBlock[i].next = 0; @@ -1053,7 +1052,7 @@ static void RfuHandleReceiveCommand(u8 unused) Rfu.blockReceived[i] = FALSE; } break; - case RFU_COMMAND_0x8900: + case RFUCMD_0x8900: if (Rfu.recvBlock[i].receiving == 1) { Rfu.recvBlock[i].next = gRecvCmds[i][0] & 0xff; @@ -1069,17 +1068,17 @@ static void RfuHandleReceiveCommand(u8 unused) } } break; - case RFU_COMMAND_SEND_BLOCK_REQ: + case RFUCMD_SEND_BLOCK_REQ: Rfu_InitBlockSend(sBlockRequests[gRecvCmds[i][1]].address, (u16)sBlockRequests[gRecvCmds[i][1]].size); break; - case RFU_COMMAND_READY_CLOSE_LINK: + case RFUCMD_READY_CLOSE_LINK: Rfu.readyCloseLink[i] = TRUE; break; - case RFU_COMMAND_READY_EXIT_STANDBY: + case RFUCMD_READY_EXIT_STANDBY: if (Rfu.unk_100 == gRecvCmds[i][1]) Rfu.readyExitStandby[i] = TRUE; break; - case RFU_COMMAND_0xED00: + case RFUCMD_0xED00: if (Rfu.parentChild == MODE_CHILD) { if (gReceivedRemoteLinkPlayers) @@ -1096,13 +1095,13 @@ static void RfuHandleReceiveCommand(u8 unused) } else { - RfuPrepareSendBuffer(RFU_COMMAND_0xEE00); + RfuPrepareSendBuffer(RFUCMD_0xEE00); gSendCmd[1] = gRecvCmds[i][1]; gSendCmd[2] = gRecvCmds[i][2]; gSendCmd[3] = gRecvCmds[i][3]; } break; - case RFU_COMMAND_0xEE00: + case RFUCMD_0xEE00: if (Rfu.parentChild == MODE_PARENT) { Rfu.unk_ce3 |= gRecvCmds[i][1]; @@ -1110,8 +1109,8 @@ static void RfuHandleReceiveCommand(u8 unused) ClearSelectedLinkPlayerIds(gRecvCmds[i][1]); } break; - case RFU_COMMAND_0x4400: - case RFU_COMMAND_0xBE00: + case RFUCMD_BLENDER_SEND_KEYS: + case RFUCMD_SEND_HELD_KEYS: gLinkPartnersHeldKeys[i] = gRecvCmds[i][1]; break; } @@ -1187,16 +1186,16 @@ static void RfuPrepareSendBuffer(u16 command) gSendCmd[0] = command; switch (command) { - case RFU_COMMAND_0x8800: + case RFUCMD_0x8800: gSendCmd[1] = Rfu.sendBlock.count; gSendCmd[2] = Rfu.sendBlock.owner + 0x80; break; - case RFU_COMMAND_SEND_BLOCK_REQ: + case RFUCMD_SEND_BLOCK_REQ: if (AreNoPlayersReceiving()) gSendCmd[1] = Rfu.blockRequestType; break; - case RFU_COMMAND_0x7700: - case RFU_COMMAND_0x7800: + case RFUCMD_0x7700: + case RFUCMD_0x7800: tmp = Rfu.unk_ce2 ^ Rfu.unk_ce3; Rfu.playerCount = sUnknown_082ED695[tmp] + 1; gSendCmd[1] = Rfu.playerCount; @@ -1204,44 +1203,43 @@ static void RfuPrepareSendBuffer(u16 command) for (i = 0; i < RFU_CHILD_MAX; i++) buff[i] = Rfu.linkPlayerIdx[i]; break; - case RFU_COMMAND_READY_EXIT_STANDBY: - case RFU_COMMAND_READY_CLOSE_LINK: + case RFUCMD_READY_EXIT_STANDBY: + case RFUCMD_READY_CLOSE_LINK: gSendCmd[1] = Rfu.unk_100; break; - case RFU_COMMAND_0x4400: + case RFUCMD_BLENDER_SEND_KEYS: gSendCmd[0] = command; gSendCmd[1] = gMain.heldKeys; break; - case RFU_COMMAND_0x2F00: - for (i = 0; i < 6; i++) - gSendCmd[1 + i] = Rfu.unk_f2[i]; + case RFUCMD_SEND_PACKET: + for (i = 0; i < RFU_PACKET_SIZE; i++) + gSendCmd[1 + i] = Rfu.packet[i]; break; - case RFU_COMMAND_0xBE00: + case RFUCMD_SEND_HELD_KEYS: gSendCmd[1] = gHeldKeyCodeToSend; break; - case RFU_COMMAND_0xEE00: + case RFUCMD_0xEE00: break; - case RFU_COMMAND_0xED00: + case RFUCMD_0xED00: break; } } -void sub_800FE50(void *a0) +void Rfu_SendPacket(void *data) { if (gSendCmd[0] == 0 && !RfuHasErrored()) { - memcpy(Rfu.unk_f2, a0, sizeof(Rfu.unk_f2)); - RfuPrepareSendBuffer(RFU_COMMAND_0x2F00); + memcpy(Rfu.packet, data, sizeof(Rfu.packet)); + RfuPrepareSendBuffer(RFUCMD_SEND_PACKET); } } bool32 Rfu_InitBlockSend(const u8 *src, size_t size) { bool8 r4; - if (Rfu.callback != NULL) - return FALSE; - if (gSendCmd[0] != 0) + if (Rfu.callback != NULL || gSendCmd[0] != 0) return FALSE; + if (Rfu.sendBlock.sending) { sRfuDebug.unk_83++; @@ -1260,7 +1258,7 @@ bool32 Rfu_InitBlockSend(const u8 *src, size_t size) memcpy(gBlockSendBuffer, src, size); Rfu.sendBlock.payload = gBlockSendBuffer; } - RfuPrepareSendBuffer(RFU_COMMAND_0x8800); + RfuPrepareSendBuffer(RFUCMD_0x8800); Rfu.callback = HandleBlockSend; Rfu.unk_5b = 0; return TRUE; @@ -1270,7 +1268,7 @@ static void HandleBlockSend(void) { if (gSendCmd[0] == 0) { - RfuPrepareSendBuffer(RFU_COMMAND_0x8800); + RfuPrepareSendBuffer(RFUCMD_0x8800); if (Rfu.parentChild == MODE_PARENT) { if (++Rfu.unk_5b > 2) @@ -1278,7 +1276,7 @@ static void HandleBlockSend(void) } else { - if ((gRecvCmds[GetMultiplayerId()][0] & 0xff00) == RFU_COMMAND_0x8800) + if ((gRecvCmds[GetMultiplayerId()][0] & 0xff00) == RFUCMD_0x8800) Rfu.callback = SendNextBlock; } } @@ -1288,7 +1286,7 @@ static void SendNextBlock(void) { s32 i; const u8 *src = Rfu.sendBlock.payload; - gSendCmd[0] = RFU_COMMAND_0x8900 | Rfu.sendBlock.next; + gSendCmd[0] = RFUCMD_0x8900 | Rfu.sendBlock.next; for (i = 0; i < CMD_LENGTH - 1; i++) gSendCmd[i + 1] = (src[(i << 1) + Rfu.sendBlock.next * 12 + 1] << 8) | src[(i << 1) + Rfu.sendBlock.next * 12 + 0]; Rfu.sendBlock.next++; @@ -1306,7 +1304,7 @@ static void SendLastBlock(void) s32 i; if (Rfu.parentChild == MODE_CHILD) { - gSendCmd[0] = RFU_COMMAND_0x8900 | (Rfu.sendBlock.count - 1); + gSendCmd[0] = RFUCMD_0x8900 | (Rfu.sendBlock.count - 1); for (i = 0; i < CMD_LENGTH - 1; i++) gSendCmd[i + 1] = (src[(i << 1) + (Rfu.sendBlock.count - 1) * 12 + 1] << 8) | src[(i << 1) + (Rfu.sendBlock.count - 1) * 12 + 0]; if ((u8)gRecvCmds[mpId][0] == Rfu.sendBlock.count - 1) @@ -1327,7 +1325,7 @@ static void SendLastBlock(void) bool8 Rfu_SendBlockRequest(u8 type) { Rfu.blockRequestType = type; - RfuPrepareSendBuffer(RFU_COMMAND_SEND_BLOCK_REQ); + RfuPrepareSendBuffer(RFUCMD_SEND_BLOCK_REQ); return TRUE; } @@ -1396,7 +1394,7 @@ static void SendReadyCloseLink(void) { if (gSendCmd[0] == 0 && Rfu.unk_ce8 == 0) { - RfuPrepareSendBuffer(RFU_COMMAND_READY_CLOSE_LINK); + RfuPrepareSendBuffer(RFUCMD_READY_CLOSE_LINK); Rfu.callback = WaitAllReadyToCloseLink; } } @@ -1419,16 +1417,12 @@ void Rfu_SetCloseLinkCallback(void) static void SendReadyExitStandbyUntilAllReady(void) { - u8 playerCount; - u8 i; + u8 i, playerCount; - if (GetMultiplayerId() != 0) + if (GetMultiplayerId() != 0 && Rfu.recvQueue.count == 0 && Rfu.resendExitStandbyTimer > 60) { - if (Rfu.recvQueue.count == 0 && Rfu.resendExitStandbyTimer > 60) - { - RfuPrepareSendBuffer(RFU_COMMAND_READY_EXIT_STANDBY); - Rfu.resendExitStandbyTimer = 0; - } + RfuPrepareSendBuffer(RFUCMD_READY_EXIT_STANDBY); + Rfu.resendExitStandbyTimer = 0; } playerCount = GetLinkPlayerCount(); for (i = 0; i < playerCount; i++) @@ -1450,7 +1444,7 @@ static void LinkLeaderReadyToExitStandby(void) { if (Rfu.recvQueue.count == 0 && gSendCmd[0] == 0) { - RfuPrepareSendBuffer(RFU_COMMAND_READY_EXIT_STANDBY); + RfuPrepareSendBuffer(RFUCMD_READY_EXIT_STANDBY); Rfu.callback = SendReadyExitStandbyUntilAllReady; } } @@ -1458,15 +1452,14 @@ static void LinkLeaderReadyToExitStandby(void) // RFU equivalent of LinkCB_Standby and LinkCB_StandbyForAll static void Rfu_LinkStandby(void) { - u8 i; - u8 playerCount; + u8 i, playerCount; if (GetMultiplayerId() != 0) { // Not link leader, send exit standby when ready if (Rfu.recvQueue.count == 0 && gSendCmd[0] == 0) { - RfuPrepareSendBuffer(RFU_COMMAND_READY_EXIT_STANDBY); + RfuPrepareSendBuffer(RFUCMD_READY_EXIT_STANDBY); Rfu.callback = SendReadyExitStandbyUntilAllReady; } } @@ -1483,7 +1476,7 @@ static void Rfu_LinkStandby(void) { if (Rfu.recvQueue.count == 0 && gSendCmd[0] == 0) { - RfuPrepareSendBuffer(RFU_COMMAND_READY_EXIT_STANDBY); + RfuPrepareSendBuffer(RFUCMD_READY_EXIT_STANDBY); Rfu.callback = LinkLeaderReadyToExitStandby; } } @@ -1555,28 +1548,28 @@ static bool8 CheckForLeavingGroupMembers(void) bool8 memberLeft = FALSE; for (i = 0; i < RFU_CHILD_MAX; i++) { - if (Rfu.partnerSendStatuses[i] < RFU_STATUS_JOIN_GROUP_OK - || Rfu.partnerSendStatuses[i] > RFU_STATUS_JOIN_GROUP_NO) + if (Rfu.partnerSendStatuses[i] == RFU_STATUS_JOIN_GROUP_OK + || Rfu.partnerSendStatuses[i] == RFU_STATUS_JOIN_GROUP_NO) { - if (gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS - || gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN) - { - if (Rfu.partnerRecvStatuses[i] == RFU_STATUS_LEAVE_GROUP_NOTICE) - { - Rfu.partnerSendStatuses[i] = RFU_STATUS_LEAVE_GROUP; - Rfu.partnerRecvStatuses[i] = RFU_STATUS_10; - rfu_clearSlot(TYPE_NI_RECV, i); - rfu_NI_setSendData(1 << i, 8, &Rfu.partnerSendStatuses[i], 1); - memberLeft = TRUE; - } + continue; + } - } - else if (gRfuSlotStatusNI[Rfu.childSlot]->recv.state == SLOT_STATE_RECV_FAILED) - rfu_clearSlot(TYPE_NI_RECV, i); + if (gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS + || gRfuSlotStatusNI[i]->recv.state == SLOT_STATE_RECV_SUCCESS_AND_SENDSIDE_UNKNOWN) + { + if (Rfu.partnerRecvStatuses[i] == RFU_STATUS_LEAVE_GROUP_NOTICE) { - + Rfu.partnerSendStatuses[i] = RFU_STATUS_LEAVE_GROUP; + Rfu.partnerRecvStatuses[i] = RFU_STATUS_10; + rfu_clearSlot(TYPE_NI_RECV, i); + rfu_NI_setSendData(1 << i, 8, &Rfu.partnerSendStatuses[i], 1); + memberLeft = TRUE; } } + else if (gRfuSlotStatusNI[Rfu.childSlot]->recv.state == SLOT_STATE_RECV_FAILED) + { + rfu_clearSlot(TYPE_NI_RECV, i); + } } return memberLeft; } @@ -1706,9 +1699,9 @@ static void sub_801084C(u8 taskId) if (Rfu.parentChild == MODE_PARENT) { if (gReceivedRemoteLinkPlayers) - RfuPrepareSendBuffer(RFU_COMMAND_0x7800); + RfuPrepareSendBuffer(RFUCMD_0x7800); else - RfuPrepareSendBuffer(RFU_COMMAND_0x7700); + RfuPrepareSendBuffer(RFUCMD_0x7700); gTasks[taskId].data[0] = 101; } else @@ -1728,7 +1721,7 @@ static void sub_801084C(u8 taskId) if (AreNoPlayersReceiving()) { Rfu.blockRequestType = 0; - RfuPrepareSendBuffer(RFU_COMMAND_SEND_BLOCK_REQ); + RfuPrepareSendBuffer(RFUCMD_SEND_BLOCK_REQ); gTasks[taskId].data[0]++; } } @@ -1818,7 +1811,7 @@ static void Task_ExchangeLinkPlayers(u8 taskId) if (gSendCmd[0] == 0) { ResetBlockReceivedFlag(r4); - RfuPrepareSendBuffer(RFU_COMMAND_0x7800); + RfuPrepareSendBuffer(RFUCMD_0x7800); gTasks[taskId].data[0]++; } break; @@ -2097,8 +2090,7 @@ static void sub_80111FC(void) static void sub_801120C(u8 msg, u8 paramCount) { - u8 i; - u8 disconnectFlag = 0; + u8 i, disconnectFlag = 0; switch (msg) { case LMAN_MSG_INITIALIZE_COMPLETED: @@ -2632,7 +2624,7 @@ static void sub_8011E2C(u8 taskId) { if (gSendCmd[0] == 0 && Rfu.unk_ce8 == 0) { - RfuPrepareSendBuffer(RFU_COMMAND_0xED00); + RfuPrepareSendBuffer(RFUCMD_0xED00); gSendCmd[1] = gTasks[taskId].data[0]; gSendCmd[2] = gTasks[taskId].data[1]; Rfu.playerCount -= sUnknown_082ED695[gTasks[taskId].data[0]]; diff --git a/src/list_menu.c b/src/list_menu.c index 73fdba63e..1e549a34a 100644 --- a/src/list_menu.c +++ b/src/list_menu.c @@ -1282,7 +1282,7 @@ void ListMenuSetUpRedOutlineCursorSpriteOamTable(u16 rowWidth, u16 rowHeight, st { subsprites[id] = sSubsprite_RedOutline3; subsprites[id].x = i - 120; - subsprites[id].y = 136; + subsprites[id].y = -120; id++; subsprites[id] = sSubsprite_RedOutline6; @@ -22,8 +22,7 @@ u8 gMPlayMemAccArea[0x10]; u32 MidiKeyToFreq(struct WaveData *wav, u8 key, u8 fineAdjust) { - u32 val1; - u32 val2; + u32 val1, val2; u32 fineAdjustShifted = fineAdjust << 24; if (key > 178) @@ -315,7 +314,7 @@ void MPlayExtender(struct CgbChannel *cgbChans) void MusicPlayerJumpTableCopy(void) { - asm("swi 0x2A"); + asm("svc 0x2A"); } void ClearChain(void *x) @@ -352,25 +351,25 @@ void SoundInit(struct SoundInfo *soundInfo) | SOUND_ALL_MIX_FULL; REG_SOUNDBIAS_H = (REG_SOUNDBIAS_H & 0x3F) | 0x40; - REG_DMA1SAD = (s32)soundInfo->pcmBuffer; - REG_DMA1DAD = (s32)®_FIFO_A; - REG_DMA2SAD = (s32)soundInfo->pcmBuffer + PCM_DMA_BUF_SIZE; - REG_DMA2DAD = (s32)®_FIFO_B; + REG_DMA1SAD = (u32)soundInfo->pcmBuffer; + REG_DMA1DAD = (u32)®_FIFO_A; + REG_DMA2SAD = (u32)soundInfo->pcmBuffer + PCM_DMA_BUF_SIZE; + REG_DMA2DAD = (u32)®_FIFO_B; SOUND_INFO_PTR = soundInfo; CpuFill32(0, soundInfo, sizeof(struct SoundInfo)); soundInfo->maxChans = 8; soundInfo->masterVolume = 15; - soundInfo->plynote = (u32)ply_note; + soundInfo->plynote = ply_note; soundInfo->CgbSound = DummyFunc; soundInfo->CgbOscOff = (void (*)(u8))DummyFunc; soundInfo->MidiKeyToCgbFreq = (u32 (*)(u8, u8, u8))DummyFunc; - soundInfo->ExtVolPit = (u32)DummyFunc; + soundInfo->ExtVolPit = (void (*)(struct MusicPlayerInfo *, struct MusicPlayerTrack *))DummyFunc; MPlayJumpTableCopy(gMPlayJumpTable); - soundInfo->MPlayJumpTable = (u32)gMPlayJumpTable; + soundInfo->MPlayJumpTable = (void (**)())gMPlayJumpTable; SampleFreqSet(SOUND_MODE_FREQ_13379); @@ -381,7 +380,7 @@ void SampleFreqSet(u32 freq) { struct SoundInfo *soundInfo = SOUND_INFO_PTR; - freq = (freq & 0xF0000) >> 16; + freq = (freq & SOUND_MODE_FREQ) >> SOUND_MODE_FREQ_SHIFT; soundInfo->freq = freq; soundInfo->pcmSamplesPerVBlank = gPcmSamplesPerVBlankTable[freq - 1]; soundInfo->pcmDmaPeriod = PCM_DMA_BUF_SIZE / soundInfo->pcmSamplesPerVBlank; @@ -432,14 +431,9 @@ void m4aSoundMode(u32 mode) soundInfo->maxChans = temp >> SOUND_MODE_MAXCHN_SHIFT; - temp = MAX_DIRECTSOUND_CHANNELS; - chan = &soundInfo->chans[0]; - - while (temp != 0) + for (temp = MAX_DIRECTSOUND_CHANNELS, chan = soundInfo->chans; temp != 0; temp--,chan++) { chan->status = 0; - temp--; - chan++; } } @@ -469,37 +463,28 @@ void m4aSoundMode(u32 mode) void SoundClear(void) { - struct SoundInfo *soundInfo = SOUND_INFO_PTR; s32 i; - void *chan; + struct SoundInfo *soundInfo = SOUND_INFO_PTR; + struct SoundChannel *chan; if (soundInfo->ident != ID_NUMBER) return; soundInfo->ident++; - i = MAX_DIRECTSOUND_CHANNELS; - chan = &soundInfo->chans[0]; - - while (i > 0) + for (i = MAX_DIRECTSOUND_CHANNELS, chan = soundInfo->chans; i > 0; i--,chan++) { - ((struct SoundChannel *)chan)->status = 0; - i--; - chan = (void *)((s32)chan + sizeof(struct SoundChannel)); + chan->status = 0; } - chan = soundInfo->cgbChans; + chan = (struct SoundChannel *)soundInfo->cgbChans; if (chan) { - i = 1; - - while (i <= 4) + for (i=1; i<=4; i++,chan++) { soundInfo->CgbOscOff(i); - ((struct CgbChannel *)chan)->sf = 0; - i++; - chan = (void *)((s32)chan + sizeof(struct CgbChannel)); + chan->status = 0; } } @@ -510,21 +495,20 @@ void m4aSoundVSyncOff(void) { struct SoundInfo *soundInfo = SOUND_INFO_PTR; - if (soundInfo->ident >= ID_NUMBER && soundInfo->ident <= ID_NUMBER + 1) - { - soundInfo->ident += 10; + if (soundInfo->ident < ID_NUMBER || soundInfo->ident > ID_NUMBER + 1) + return; + soundInfo->ident += 10; - if (REG_DMA1CNT & (DMA_REPEAT << 16)) - REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; + if (REG_DMA1CNT & (DMA_REPEAT << 16)) + REG_DMA1CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; - if (REG_DMA2CNT & (DMA_REPEAT << 16)) - REG_DMA2CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; + if (REG_DMA2CNT & (DMA_REPEAT << 16)) + REG_DMA2CNT = ((DMA_ENABLE | DMA_START_NOW | DMA_32BIT | DMA_SRC_INC | DMA_DEST_FIXED) << 16) | 4; - REG_DMA1CNT_H = DMA_32BIT; - REG_DMA2CNT_H = DMA_32BIT; + REG_DMA1CNT_H = DMA_32BIT; + REG_DMA2CNT_H = DMA_32BIT; - CpuFill32(0, soundInfo->pcmBuffer, sizeof(soundInfo->pcmBuffer)); - } + CpuFill32(0, soundInfo->pcmBuffer, sizeof(soundInfo->pcmBuffer)); } void m4aSoundVSyncOn(void) @@ -580,7 +564,7 @@ void MPlayOpen(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *track } soundInfo->intp = (u32)mplayInfo; - soundInfo->func = (u32)MPlayMain; + soundInfo->func = MPlayMain; soundInfo->ident = ID_NUMBER; mplayInfo->ident = ID_NUMBER; } @@ -614,28 +598,21 @@ void MPlayStart(struct MusicPlayerInfo *mplayInfo, struct SongHeader *songHeader mplayInfo->tempoC = 0; mplayInfo->fadeOI = 0; - i = 0; - track = mplayInfo->tracks; - - while (i < songHeader->trackCount && i < mplayInfo->trackCount) + for (i = 0, track = mplayInfo->tracks; i < songHeader->trackCount && i < mplayInfo->trackCount; i++, track++) { TrackStop(mplayInfo, track); track->flags = MPT_FLG_EXIST | MPT_FLG_START; track->chan = 0; track->cmdPtr = songHeader->part[i]; - i++; - track++; } - while (i < mplayInfo->trackCount) + for (; i < mplayInfo->trackCount; i++, track++) { TrackStop(mplayInfo, track); track->flags = 0; - i++; - track++; } - if (songHeader->reverb & 0x80) + if (songHeader->reverb & SOUND_MODE_REVERB_SET) m4aSoundMode(songHeader->reverb); mplayInfo->ident = ID_NUMBER; @@ -653,14 +630,9 @@ void m4aMPlayStop(struct MusicPlayerInfo *mplayInfo) mplayInfo->ident++; mplayInfo->status |= MUSICPLAYER_STATUS_PAUSE; - i = mplayInfo->trackCount; - track = mplayInfo->tracks; - - while (i > 0) + for (i = mplayInfo->trackCount, track = mplayInfo->tracks; i > 0; i--, track++) { TrackStop(mplayInfo, track); - i--; - track++; } mplayInfo->ident = ID_NUMBER; @@ -704,10 +676,8 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo) if ((s16)(mplayInfo->fadeOV & mask) <= 0) { - i = mplayInfo->trackCount; - track = mplayInfo->tracks; - while (i > 0) + for (i = mplayInfo->trackCount, track = mplayInfo->tracks; i > 0; i--, track++) { u32 val; @@ -719,9 +689,6 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo) if (!val) track->flags = 0; - - i--; - track++; } if (mplayInfo->fadeOV & TEMPORARY_FADE) @@ -734,10 +701,7 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo) } } - i = mplayInfo->trackCount; - track = mplayInfo->tracks; - - while (i > 0) + for (i = mplayInfo->trackCount, track = mplayInfo->tracks; i > 0; i--, track++) { if (track->flags & MPT_FLG_EXIST) { @@ -746,9 +710,6 @@ void FadeOutBody(struct MusicPlayerInfo *mplayInfo) track->volX = (fadeOV >> FADE_VOL_SHIFT); track->flags |= MPT_FLG_VOLCHG; } - - i--; - track++; } } @@ -756,7 +717,7 @@ void TrkVolPitSet(struct MusicPlayerInfo *mplayInfo, struct MusicPlayerTrack *tr { if (track->flags & MPT_FLG_VOLSET) { - s32 x; + u32 x; s32 y; x = (u32)(track->vol * track->volX) >> 5; diff --git a/src/m4a_1.s b/src/m4a_1.s index cab4ed174..eace09b05 100644 --- a/src/m4a_1.s +++ b/src/m4a_1.s @@ -22,13 +22,13 @@ SoundMain: ldr r0, lt_SOUND_INFO_PTR ldr r0, [r0] ldr r2, lt_ID_NUMBER - ldr r3, [r0, o_SoundInfo_ident] + ldr r3, [r0, #o_SoundInfo_ident] cmp r2, r3 beq SoundMain_1 bx lr @ Exit the function if ident doesn't match ID_NUMBER. SoundMain_1: adds r3, 1 - str r3, [r0, o_SoundInfo_ident] + str r3, [r0, #o_SoundInfo_ident] push {r4-r7,lr} mov r1, r8 mov r2, r9 @@ -36,7 +36,7 @@ SoundMain_1: mov r4, r11 push {r0-r4} sub sp, 0x18 - ldrb r1, [r0, o_SoundInfo_maxLines] + ldrb r1, [r0, #o_SoundInfo_maxLines] cmp r1, 0 @ if maxLines is 0, there is no maximum beq SoundMain_3 ldr r2, lt_REG_VCOUNT @@ -48,24 +48,24 @@ SoundMain_2: adds r1, r2 SoundMain_3: str r1, [sp, 0x14] - ldr r3, [r0, o_SoundInfo_func] + ldr r3, [r0, #o_SoundInfo_func] cmp r3, 0 beq SoundMain_4 - ldr r0, [r0, o_SoundInfo_intp] + ldr r0, [r0, #o_SoundInfo_intp] bl _081DD25E ldr r0, [sp, 0x18] SoundMain_4: - ldr r3, [r0, o_SoundInfo_CgbSound] + ldr r3, [r0, #o_SoundInfo_CgbSound] bl _081DD25E ldr r0, [sp, 0x18] - ldr r3, [r0, o_SoundInfo_pcmSamplesPerVBlank] + ldr r3, [r0, #o_SoundInfo_pcmSamplesPerVBlank] mov r8, r3 ldr r5, lt_o_SoundInfo_pcmBuffer adds r5, r0 - ldrb r4, [r0, o_SoundInfo_pcmDmaCounter] + ldrb r4, [r0, #o_SoundInfo_pcmDmaCounter] subs r7, r4, 1 bls SoundMain_5 - ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod] + ldrb r1, [r0, #o_SoundInfo_pcmDmaPeriod] subs r1, r7 mov r2, r8 muls r2, r1 @@ -87,7 +87,7 @@ lt_PCM_DMA_BUF_SIZE: .word PCM_DMA_BUF_SIZE thumb_func_start SoundMainRAM SoundMainRAM: - ldrb r3, [r0, o_SoundInfo_reverb] + ldrb r3, [r0, #o_SoundInfo_reverb] cmp r3, 0 beq SoundMainRAM_NoReverb adr r1, SoundMainRAM_Reverb @@ -95,7 +95,7 @@ SoundMainRAM: .arm SoundMainRAM_Reverb: cmp r4, 0x2 - addeq r7, r0, o_SoundInfo_pcmBuffer + addeq r7, r0, #o_SoundInfo_pcmBuffer addne r7, r5, r8 mov r4, r8 _081DCEC4: @@ -145,14 +145,14 @@ SoundMainRAM_NoReverb_Loop: bgt SoundMainRAM_NoReverb_Loop _081DCF36: ldr r4, [sp, 0x18] - ldr r0, [r4, o_SoundInfo_divFreq] + ldr r0, [r4, #o_SoundInfo_divFreq] mov r12, r0 - ldrb r0, [r4, o_SoundInfo_maxChans] - adds r4, o_SoundInfo_chans + ldrb r0, [r4, #o_SoundInfo_maxChans] + adds r4, #o_SoundInfo_chans SoundMainRAM_ChanLoop: str r0, [sp, 0x4] - ldr r3, [r4, o_SoundChannel_wav] + ldr r3, [r4, #o_SoundChannel_wav] ldr r0, [sp, 0x14] cmp r0, 0 beq _081DCF60 @@ -169,7 +169,7 @@ _081DCF54: .pool _081DCF60: - ldrb r6, [r4, o_SoundChannel_status] + ldrb r6, [r4, #o_SoundChannel_status] movs r0, 0xC7 tst r0, r6 bne _081DCF6A @@ -182,99 +182,99 @@ _081DCF6A: tst r0, r6 bne _081DCFB0 movs r6, 0x3 - strb r6, [r4, o_SoundChannel_status] + strb r6, [r4, #o_SoundChannel_status] adds r0, r3, 0 adds r0, 0x10 - ldr r1, [r4, o_SoundChannel_ct] + ldr r1, [r4, #o_SoundChannel_ct] adds r0, r1 - str r0, [r4, o_SoundChannel_cp] + str r0, [r4, #o_SoundChannel_cp] ldr r0, [r3, 0xC] subs r0, r1 - str r0, [r4, o_SoundChannel_ct] + str r0, [r4, #o_SoundChannel_ct] movs r5, 0 - strb r5, [r4, o_SoundChannel_ev] - str r5, [r4, o_SoundChannel_fw] + strb r5, [r4, #o_SoundChannel_ev] + str r5, [r4, #o_SoundChannel_fw] ldrb r2, [r3, 0x3] movs r0, 0xC0 tst r0, r2 beq _081DCFF8 movs r0, 0x10 orrs r6, r0 - strb r6, [r4, o_SoundChannel_status] + strb r6, [r4, #o_SoundChannel_status] b _081DCFF8 _081DCFA0: - ldrb r5, [r4, o_SoundChannel_ev] + ldrb r5, [r4, #o_SoundChannel_ev] movs r0, 0x4 tst r0, r6 beq _081DCFB6 - ldrb r0, [r4, o_SoundChannel_iel] + ldrb r0, [r4, #o_SoundChannel_iel] subs r0, 1 - strb r0, [r4, o_SoundChannel_iel] + strb r0, [r4, #o_SoundChannel_iel] bhi _081DD006 _081DCFB0: movs r0, 0 - strb r0, [r4, o_SoundChannel_status] + strb r0, [r4, #o_SoundChannel_status] b _081DD240 _081DCFB6: movs r0, 0x40 tst r0, r6 beq _081DCFD6 - ldrb r0, [r4, o_SoundChannel_release] + ldrb r0, [r4, #o_SoundChannel_release] muls r5, r0 lsrs r5, 8 - ldrb r0, [r4, o_SoundChannel_iev] + ldrb r0, [r4, #o_SoundChannel_iev] cmp r5, r0 bhi _081DD006 _081DCFC8: - ldrb r5, [r4, o_SoundChannel_iev] + ldrb r5, [r4, #o_SoundChannel_iev] cmp r5, 0 beq _081DCFB0 movs r0, 0x4 orrs r6, r0 - strb r6, [r4, o_SoundChannel_status] + strb r6, [r4, #o_SoundChannel_status] b _081DD006 _081DCFD6: movs r2, 0x3 ands r2, r6 cmp r2, 0x2 bne _081DCFF4 - ldrb r0, [r4, o_SoundChannel_decay] + ldrb r0, [r4, #o_SoundChannel_decay] muls r5, r0 lsrs r5, 8 - ldrb r0, [r4, o_SoundChannel_sustain] + ldrb r0, [r4, #o_SoundChannel_sustain] cmp r5, r0 bhi _081DD006 adds r5, r0, 0 beq _081DCFC8 subs r6, 0x1 - strb r6, [r4, o_SoundChannel_status] + strb r6, [r4, #o_SoundChannel_status] b _081DD006 _081DCFF4: cmp r2, 0x3 bne _081DD006 _081DCFF8: - ldrb r0, [r4, o_SoundChannel_attack] + ldrb r0, [r4, #o_SoundChannel_attack] adds r5, r0 cmp r5, 0xFF bcc _081DD006 movs r5, 0xFF subs r6, 0x1 - strb r6, [r4, o_SoundChannel_status] + strb r6, [r4, #o_SoundChannel_status] _081DD006: - strb r5, [r4, o_SoundChannel_ev] + strb r5, [r4, #o_SoundChannel_ev] ldr r0, [sp, 0x18] - ldrb r0, [r0, o_SoundChannel_release] + ldrb r0, [r0, #o_SoundChannel_release] adds r0, 0x1 muls r0, r5 lsrs r5, r0, 4 - ldrb r0, [r4, o_SoundChannel_rightVolume] + ldrb r0, [r4, #o_SoundChannel_rightVolume] muls r0, r5 lsrs r0, 8 - strb r0, [r4, o_SoundChannel_er] - ldrb r0, [r4, o_SoundChannel_leftVolume] + strb r0, [r4, #o_SoundChannel_er] + ldrb r0, [r4, #o_SoundChannel_leftVolume] muls r0, r5 lsrs r0, 8 - strb r0, [r4, o_SoundChannel_el] + strb r0, [r4, #o_SoundChannel_el] movs r0, 0x10 ands r0, r6 str r0, [sp, 0x10] @@ -289,17 +289,17 @@ _081DD006: str r0, [sp, 0x10] _081DD03A: ldr r5, [sp, 0x8] - ldr r2, [r4, o_SoundChannel_ct] - ldr r3, [r4, o_SoundChannel_cp] + ldr r2, [r4, #o_SoundChannel_ct] + ldr r3, [r4, #o_SoundChannel_cp] adr r0, _081DD044 bx r0 .arm _081DD044: str r8, [sp] - ldr r9, [r4, o_SoundChannel_fw] - ldrb r10, [r4, o_SoundChannel_er] - ldrb r11, [r4, o_SoundChannel_el] - ldrb r0, [r4, o_SoundChannel_type] + ldr r9, [r4, #o_SoundChannel_fw] + ldrb r10, [r4, #o_SoundChannel_er] + ldrb r11, [r4, #o_SoundChannel_el] + ldrb r0, [r4, #o_SoundChannel_type] tst r0, 0x30 beq _081DD068 bl sub_82DF49C @@ -307,7 +307,7 @@ _081DD044: _081DD068: mov r10, r10, lsl 16 mov r11, r11, lsl 16 - ldrb r0, [r4, o_SoundChannel_type] + ldrb r0, [r4, #o_SoundChannel_type] tst r0, 0x8 beq _081DD19C _081DD07C: @@ -383,7 +383,7 @@ _081DD164: ldrne r3, [sp, 0xC] bne _081DD118 _081DD174: - strb r2, [r4, o_SoundChannel_status] + strb r2, [r4, #o_SoundChannel_status] mov r0, r5, lsr 30 bic r5, r5, 0xC0000000 rsb r0, r0, 0x3 @@ -395,7 +395,7 @@ _081DD174: b _081DD234 _081DD19C: push {r4,r12} - ldr r1, [r4, o_SoundChannel_freq] + ldr r1, [r4, #o_SoundChannel_freq] mul r4, r12, r1 ldrsb r0, [r3] ldrsb r1, [r3, 0x1]! @@ -434,10 +434,10 @@ _081DD208: sub r3, r3, 0x1 pop {r4,r12} _081DD228: - str r9, [r4, o_SoundChannel_fw] + str r9, [r4, #o_SoundChannel_fw] _081DD22C: - str r2, [r4, o_SoundChannel_ct] - str r3, [r4, o_SoundChannel_cp] + str r2, [r4, #o_SoundChannel_ct] + str r3, [r4, #o_SoundChannel_cp] _081DD234: ldr r8, [sp] add r0, pc, 0x1 @@ -467,33 +467,33 @@ _081DD25E: arm_func_start sub_82DF49C sub_82DF49C: - ldr r6, [r4, o_SoundChannel_wav] - ldrb r0, [r4, o_SoundChannel_status] + ldr r6, [r4, #o_SoundChannel_wav] + ldrb r0, [r4, #o_SoundChannel_status] tst r0, 0x20 bne _081DD2B4 orr r0, r0, 0x20 - strb r0, [r4, o_SoundChannel_status] - ldrb r0, [r4, o_SoundChannel_type] + strb r0, [r4, #o_SoundChannel_status] + ldrb r0, [r4, #o_SoundChannel_type] tst r0, 0x10 beq _081DD29C ldr r1, [r6, 0xC] add r1, r1, r6, lsl 1 add r1, r1, 0x20 sub r3, r1, r3 - str r3, [r4, o_SoundChannel_cp] + str r3, [r4, #o_SoundChannel_cp] _081DD29C: ldrh r0, [r6] cmp r0, 0 beq _081DD2B4 sub r3, r3, r6 sub r3, r3, 0x10 - str r3, [r4, o_SoundChannel_cp] + str r3, [r4, #o_SoundChannel_cp] _081DD2B4: push {r8,r12,lr} mov r10, r10, lsl 16 mov r11, r11, lsl 16 - ldr r1, [r4, o_SoundChannel_freq] - ldrb r0, [r4, o_SoundChannel_type] + ldr r1, [r4, #o_SoundChannel_freq] + ldrb r0, [r4, #o_SoundChannel_type] tst r0, 0x8 movne r8, 0x800000 muleq r8, r12, r1 @@ -501,8 +501,8 @@ _081DD2B4: cmp r0, 0 beq _081DD468 mov r0, 0xFF000000 - str r0, [r4, o_SoundChannel_xpi] - ldrb r0, [r4, o_SoundChannel_type] + str r0, [r4, #o_SoundChannel_xpi] + ldrb r0, [r4, #o_SoundChannel_type] tst r0, 0x10 bne _081DD3C0 bl sub_82DF758 @@ -555,7 +555,7 @@ _081DD398: ldr r0, [sp, 0x1C] cmp r0, 0 beq _081DD4F4 - ldr r3, [r4, o_SoundChannel_wav] + ldr r3, [r4, #o_SoundChannel_wav] ldr r3, [r3, 0x8] rsb lr, r2, 0 _081DD3B0: @@ -612,7 +612,7 @@ _081DD440: add r3, r3, 0x2 b _081DD4F0 _081DD468: - ldrb r0, [r4, o_SoundChannel_type] + ldrb r0, [r4, #o_SoundChannel_type] tst r0, 0x10 beq _081DD4F0 ldrsb r0, [r3, -0x1]! @@ -653,7 +653,7 @@ _081DD4F0: pop {r8,r12,pc} _081DD4F4: mov r2, 0 - strb r2, [r4, o_SoundChannel_status] + strb r2, [r4, #o_SoundChannel_status] mov r0, r5, lsr 30 bic r5, r5, 0xC0000000 rsb r0, r0, 0x3 @@ -669,13 +669,13 @@ _081DD4F4: sub_82DF758: push {r0,r2,r5-r7,lr} mov r0, r3, lsr 6 - ldr r1, [r4, o_SoundChannel_xpi] + ldr r1, [r4, #o_SoundChannel_xpi] cmp r0, r1 beq _081DD594 - str r0, [r4, o_SoundChannel_xpi] + str r0, [r4, #o_SoundChannel_xpi] mov r1, 0x21 mul r2, r1, r0 - ldr r1, [r4, o_SoundChannel_wav] + ldr r1, [r4, #o_SoundChannel_wav] add r2, r2, r1 add r2, r2, 0x10 ldr r5, =gUnknown_03001300 @@ -749,7 +749,7 @@ _081DD5E2: ply_fine: push {r4,r5,lr} adds r5, r1, 0 - ldr r4, [r5, o_MusicPlayerTrack_chan] + ldr r4, [r5, #o_MusicPlayerTrack_chan] cmp r4, 0 beq ply_fine_done ply_fine_loop: @@ -830,7 +830,7 @@ _081DD64A: ply_goto: push {lr} ply_goto_1: - ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldr r2, [r1, #o_MusicPlayerTrack_cmdPtr] ldrb r0, [r2, 0x3] lsls r0, 8 ldrb r3, [r2, 0x2] @@ -841,24 +841,24 @@ ply_goto_1: lsls r0, 8 bl ldrb_r3_r2 orrs r0, r3 - str r0, [r1, o_MusicPlayerTrack_cmdPtr] + str r0, [r1, #o_MusicPlayerTrack_cmdPtr] pop {r0} bx r0 thumb_func_end ply_goto thumb_func_start ply_patt ply_patt: - ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] + ldrb r2, [r1, #o_MusicPlayerTrack_patternLevel] cmp r2, 3 bhs ply_patt_done lsls r2, 2 adds r3, r1, r2 - ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldr r2, [r1, #o_MusicPlayerTrack_cmdPtr] adds r2, 0x4 - str r2, [r3, o_MusicPlayerTrack_patternStack] - ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] + str r2, [r3, #o_MusicPlayerTrack_patternStack] + ldrb r2, [r1, #o_MusicPlayerTrack_patternLevel] adds r2, 1 - strb r2, [r1, o_MusicPlayerTrack_patternLevel] + strb r2, [r1, #o_MusicPlayerTrack_patternLevel] b ply_goto ply_patt_done: b ply_fine @@ -866,15 +866,15 @@ ply_patt_done: thumb_func_start ply_pend ply_pend: - ldrb r2, [r1, o_MusicPlayerTrack_patternLevel] + ldrb r2, [r1, #o_MusicPlayerTrack_patternLevel] cmp r2, 0 beq ply_pend_done subs r2, 1 - strb r2, [r1, o_MusicPlayerTrack_patternLevel] + strb r2, [r1, #o_MusicPlayerTrack_patternLevel] lsls r2, 2 adds r3, r1, r2 - ldr r2, [r3, o_MusicPlayerTrack_patternStack] - str r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldr r2, [r3, #o_MusicPlayerTrack_patternStack] + str r2, [r1, #o_MusicPlayerTrack_cmdPtr] ply_pend_done: bx lr thumb_func_end ply_pend @@ -882,17 +882,17 @@ ply_pend_done: thumb_func_start ply_rept ply_rept: push {lr} - ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldr r2, [r1, #o_MusicPlayerTrack_cmdPtr] ldrb r3, [r2] cmp r3, 0 bne ply_rept_1 adds r2, 1 - str r2, [r1, o_MusicPlayerTrack_cmdPtr] + str r2, [r1, #o_MusicPlayerTrack_cmdPtr] b ply_goto_1 ply_rept_1: - ldrb r3, [r1, o_MusicPlayerTrack_repN] + ldrb r3, [r1, #o_MusicPlayerTrack_repN] adds r3, 1 - strb r3, [r1, o_MusicPlayerTrack_repN] + strb r3, [r1, #o_MusicPlayerTrack_repN] mov r12, r3 bl ld_r3_tp_adr_i cmp r12, r3 @@ -900,9 +900,9 @@ ply_rept_1: b ply_goto_1 ply_rept_2: movs r3, 0 - strb r3, [r1, o_MusicPlayerTrack_repN] + strb r3, [r1, #o_MusicPlayerTrack_repN] adds r2, 5 - str r2, [r1, o_MusicPlayerTrack_cmdPtr] + str r2, [r1, #o_MusicPlayerTrack_cmdPtr] pop {r0} bx r0 thumb_func_end ply_rept @@ -911,7 +911,7 @@ ply_rept_2: ply_prio: mov r12, lr bl ld_r3_tp_adr_i - strb r3, [r1, o_MusicPlayerTrack_priority] + strb r3, [r1, #o_MusicPlayerTrack_priority] bx r12 thumb_func_end ply_prio @@ -920,11 +920,11 @@ ply_tempo: mov r12, lr bl ld_r3_tp_adr_i lsls r3, 1 - strh r3, [r0, o_MusicPlayerInfo_tempoD] - ldrh r2, [r0, o_MusicPlayerInfo_tempoU] + strh r3, [r0, #o_MusicPlayerInfo_tempoD] + ldrh r2, [r0, #o_MusicPlayerInfo_tempoU] muls r3, r2 lsrs r3, 8 - strh r3, [r0, o_MusicPlayerInfo_tempoI] + strh r3, [r0, #o_MusicPlayerInfo_tempoI] bx r12 thumb_func_end ply_tempo @@ -932,35 +932,35 @@ ply_tempo: ply_keysh: mov r12, lr bl ld_r3_tp_adr_i - strb r3, [r1, o_MusicPlayerTrack_keyShift] - ldrb r3, [r1, o_MusicPlayerTrack_flags] + strb r3, [r1, #o_MusicPlayerTrack_keyShift] + ldrb r3, [r1, #o_MusicPlayerTrack_flags] movs r2, 0xC orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] + strb r3, [r1, #o_MusicPlayerTrack_flags] bx r12 thumb_func_end ply_keysh thumb_func_start ply_voice ply_voice: mov r12, lr - ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldr r2, [r1, #o_MusicPlayerTrack_cmdPtr] ldrb r3, [r2] adds r2, 1 - str r2, [r1, o_MusicPlayerTrack_cmdPtr] + str r2, [r1, #o_MusicPlayerTrack_cmdPtr] lsls r2, r3, 1 adds r2, r3 lsls r2, 2 - ldr r3, [r0, o_MusicPlayerInfo_tone] + ldr r3, [r0, #o_MusicPlayerInfo_tone] adds r2, r3 ldr r3, [r2] bl chk_adr_r2 - str r3, [r1, o_MusicPlayerTrack_ToneData_type] + str r3, [r1, #o_MusicPlayerTrack_ToneData_type] ldr r3, [r2, 0x4] bl chk_adr_r2 - str r3, [r1, o_MusicPlayerTrack_ToneData_wav] + str r3, [r1, #o_MusicPlayerTrack_ToneData_wav] ldr r3, [r2, 0x8] bl chk_adr_r2 - str r3, [r1, o_MusicPlayerTrack_ToneData_attack] + str r3, [r1, #o_MusicPlayerTrack_ToneData_attack] bx r12 thumb_func_end ply_voice @@ -968,11 +968,11 @@ ply_voice: ply_vol: mov r12, lr bl ld_r3_tp_adr_i - strb r3, [r1, o_MusicPlayerTrack_vol] - ldrb r3, [r1, o_MusicPlayerTrack_flags] + strb r3, [r1, #o_MusicPlayerTrack_vol] + ldrb r3, [r1, #o_MusicPlayerTrack_flags] movs r2, 0x3 orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] + strb r3, [r1, #o_MusicPlayerTrack_flags] bx r12 thumb_func_end ply_vol @@ -981,11 +981,11 @@ ply_pan: mov r12, lr bl ld_r3_tp_adr_i subs r3, 0x40 - strb r3, [r1, o_MusicPlayerTrack_pan] - ldrb r3, [r1, o_MusicPlayerTrack_flags] + strb r3, [r1, #o_MusicPlayerTrack_pan] + ldrb r3, [r1, #o_MusicPlayerTrack_flags] movs r2, 0x3 orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] + strb r3, [r1, #o_MusicPlayerTrack_flags] bx r12 thumb_func_end ply_pan @@ -994,11 +994,11 @@ ply_bend: mov r12, lr bl ld_r3_tp_adr_i subs r3, 0x40 - strb r3, [r1, o_MusicPlayerTrack_bend] - ldrb r3, [r1, o_MusicPlayerTrack_flags] + strb r3, [r1, #o_MusicPlayerTrack_bend] + ldrb r3, [r1, #o_MusicPlayerTrack_flags] movs r2, 0xC orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] + strb r3, [r1, #o_MusicPlayerTrack_flags] bx r12 thumb_func_end ply_bend @@ -1006,11 +1006,11 @@ ply_bend: ply_bendr: mov r12, lr bl ld_r3_tp_adr_i - strb r3, [r1, o_MusicPlayerTrack_bendRange] - ldrb r3, [r1, o_MusicPlayerTrack_flags] + strb r3, [r1, #o_MusicPlayerTrack_bendRange] + ldrb r3, [r1, #o_MusicPlayerTrack_flags] movs r2, 0xC orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] + strb r3, [r1, #o_MusicPlayerTrack_flags] bx r12 thumb_func_end ply_bendr @@ -1018,7 +1018,7 @@ ply_bendr: ply_lfodl: mov r12, lr bl ld_r3_tp_adr_i - strb r3, [r1, o_MusicPlayerTrack_lfoDelay] + strb r3, [r1, #o_MusicPlayerTrack_lfoDelay] bx r12 thumb_func_end ply_lfodl @@ -1026,14 +1026,14 @@ ply_lfodl: ply_modt: mov r12, lr bl ld_r3_tp_adr_i - ldrb r0, [r1, o_MusicPlayerTrack_modT] + ldrb r0, [r1, #o_MusicPlayerTrack_modT] cmp r0, r3 beq _081DD7AA - strb r3, [r1, o_MusicPlayerTrack_modT] - ldrb r3, [r1, o_MusicPlayerTrack_flags] + strb r3, [r1, #o_MusicPlayerTrack_modT] + ldrb r3, [r1, #o_MusicPlayerTrack_flags] movs r2, 0xF orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] + strb r3, [r1, #o_MusicPlayerTrack_flags] _081DD7AA: bx r12 thumb_func_end ply_modt @@ -1043,18 +1043,18 @@ ply_tune: mov r12, lr bl ld_r3_tp_adr_i subs r3, 0x40 - strb r3, [r1, o_MusicPlayerTrack_tune] - ldrb r3, [r1, o_MusicPlayerTrack_flags] + strb r3, [r1, #o_MusicPlayerTrack_tune] + ldrb r3, [r1, #o_MusicPlayerTrack_flags] movs r2, 0xC orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] + strb r3, [r1, #o_MusicPlayerTrack_flags] bx r12 thumb_func_end ply_tune thumb_func_start ply_port ply_port: mov r12, lr - ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldr r2, [r1, #o_MusicPlayerTrack_cmdPtr] ldrb r3, [r2] adds r2, 1 ldr r0, =REG_SOUND1CNT_L @ sound register base address @@ -1072,20 +1072,20 @@ m4aSoundVSync: @ Exit the function if ident is not ID_NUMBER or ID_NUMBER+1. ldr r2, lt2_ID_NUMBER - ldr r3, [r0, o_SoundInfo_ident] + ldr r3, [r0, #o_SoundInfo_ident] subs r3, r2 cmp r3, 1 bhi m4aSoundVSync_Done @ Decrement the PCM DMA counter. If it reaches 0, we need to do a DMA. - ldrb r1, [r0, o_SoundInfo_pcmDmaCounter] + ldrb r1, [r0, #o_SoundInfo_pcmDmaCounter] subs r1, 1 - strb r1, [r0, o_SoundInfo_pcmDmaCounter] + strb r1, [r0, #o_SoundInfo_pcmDmaCounter] bgt m4aSoundVSync_Done @ Reload the PCM DMA counter. - ldrb r1, [r0, o_SoundInfo_pcmDmaPeriod] - strb r1, [r0, o_SoundInfo_pcmDmaCounter] + ldrb r1, [r0, #o_SoundInfo_pcmDmaPeriod] + strb r1, [r0, #o_SoundInfo_pcmDmaCounter] ldr r2, =REG_DMA1 @@ -1127,18 +1127,18 @@ m4aSoundVSync_Done: thumb_func_start MPlayMain MPlayMain: ldr r2, lt2_ID_NUMBER - ldr r3, [r0, o_MusicPlayerInfo_ident] + ldr r3, [r0, #o_MusicPlayerInfo_ident] cmp r2, r3 beq _081DD82E bx lr _081DD82E: adds r3, 0x1 - str r3, [r0, o_MusicPlayerInfo_ident] + str r3, [r0, #o_MusicPlayerInfo_ident] push {r0,lr} - ldr r3, [r0, o_MusicPlayerInfo_func] + ldr r3, [r0, #o_MusicPlayerInfo_func] cmp r3, 0 beq _081DD840 - ldr r0, [r0, o_MusicPlayerInfo_intp] + ldr r0, [r0, #o_MusicPlayerInfo_intp] bl call_r3 _081DD840: pop {r0} @@ -1149,7 +1149,7 @@ _081DD840: mov r7, r11 push {r4-r7} adds r7, r0, 0 - ldr r0, [r7, o_MusicPlayerInfo_status] + ldr r0, [r7, #o_MusicPlayerInfo_status] cmp r0, 0 bge _081DD858 b _081DDA6C @@ -1159,18 +1159,18 @@ _081DD858: mov r8, r0 adds r0, r7, 0 bl FadeOutBody - ldr r0, [r7, o_MusicPlayerInfo_status] + ldr r0, [r7, #o_MusicPlayerInfo_status] cmp r0, 0 bge _081DD86C b _081DDA6C _081DD86C: - ldrh r0, [r7, o_MusicPlayerInfo_tempoC] - ldrh r1, [r7, o_MusicPlayerInfo_tempoI] + ldrh r0, [r7, #o_MusicPlayerInfo_tempoC] + ldrh r1, [r7, #o_MusicPlayerInfo_tempoI] adds r0, r1 b _081DD9BC _081DD874: - ldrb r6, [r7, o_MusicPlayerInfo_trackCount] - ldr r5, [r7, o_MusicPlayerInfo_tracks] + ldrb r6, [r7, #o_MusicPlayerInfo_trackCount] + ldr r5, [r7, #o_MusicPlayerInfo_tracks] movs r3, 0x1 movs r4, 0 _081DD87C: @@ -1183,7 +1183,7 @@ _081DD886: mov r10, r3 orrs r4, r3 mov r11, r4 - ldr r4, [r5, o_MusicPlayerTrack_chan] + ldr r4, [r5, #o_MusicPlayerTrack_chan] cmp r4, 0 beq _081DD8BA _081DD892: @@ -1209,7 +1209,7 @@ _081DD8B4: cmp r4, 0 bne _081DD892 _081DD8BA: - ldrb r3, [r5, o_MusicPlayerTrack_flags] + ldrb r3, [r5, #o_MusicPlayerTrack_flags] movs r0, 0x40 tst r0, r3 beq _081DD938 @@ -1218,33 +1218,33 @@ _081DD8BA: movs r0, 0x80 strb r0, [r5] movs r0, 0x2 - strb r0, [r5, o_MusicPlayerTrack_bendRange] + strb r0, [r5, #o_MusicPlayerTrack_bendRange] movs r0, 0x40 - strb r0, [r5, o_MusicPlayerTrack_volX] + strb r0, [r5, #o_MusicPlayerTrack_volX] movs r0, 0x16 - strb r0, [r5, o_MusicPlayerTrack_lfoSpeed] + strb r0, [r5, #o_MusicPlayerTrack_lfoSpeed] movs r0, 0x1 adds r1, r5, 0x6 - strb r0, [r1, o_MusicPlayerTrack_ToneData_type - 0x6] + strb r0, [r1, #o_MusicPlayerTrack_ToneData_type - 0x6] b _081DD938 _081DD8E0: - ldr r2, [r5, o_MusicPlayerTrack_cmdPtr] + ldr r2, [r5, #o_MusicPlayerTrack_cmdPtr] ldrb r1, [r2] cmp r1, 0x80 bhs _081DD8EC - ldrb r1, [r5, o_MusicPlayerTrack_runningStatus] + ldrb r1, [r5, #o_MusicPlayerTrack_runningStatus] b _081DD8F6 _081DD8EC: adds r2, 0x1 - str r2, [r5, o_MusicPlayerTrack_cmdPtr] + str r2, [r5, #o_MusicPlayerTrack_cmdPtr] cmp r1, 0xBD bcc _081DD8F6 - strb r1, [r5, o_MusicPlayerTrack_runningStatus] + strb r1, [r5, #o_MusicPlayerTrack_runningStatus] _081DD8F6: cmp r1, 0xCF bcc _081DD90C mov r0, r8 - ldr r3, [r0, o_SoundInfo_plynote] + ldr r3, [r0, #o_SoundInfo_plynote] adds r0, r1, 0 subs r0, 0xCF adds r1, r7, 0 @@ -1256,15 +1256,15 @@ _081DD90C: bls _081DD92E adds r0, r1, 0 subs r0, 0xB1 - strb r0, [r7, o_MusicPlayerInfo_cmd] + strb r0, [r7, #o_MusicPlayerInfo_cmd] mov r3, r8 - ldr r3, [r3, o_SoundInfo_MPlayJumpTable] + ldr r3, [r3, #o_SoundInfo_MPlayJumpTable] lsls r0, 2 ldr r3, [r3, r0] adds r0, r7, 0 adds r1, r5, 0 bl call_r3 - ldrb r0, [r5, o_MusicPlayerTrack_flags] + ldrb r0, [r5, #o_MusicPlayerTrack_flags] cmp r0, 0 beq _081DD994 b _081DD938 @@ -1273,29 +1273,29 @@ _081DD92E: subs r1, 0x80 adds r1, r0 ldrb r0, [r1] - strb r0, [r5, o_MusicPlayerTrack_wait] + strb r0, [r5, #o_MusicPlayerTrack_wait] _081DD938: - ldrb r0, [r5, o_MusicPlayerTrack_wait] + ldrb r0, [r5, #o_MusicPlayerTrack_wait] cmp r0, 0 beq _081DD8E0 subs r0, 0x1 - strb r0, [r5, o_MusicPlayerTrack_wait] - ldrb r1, [r5, o_MusicPlayerTrack_lfoSpeed] + strb r0, [r5, #o_MusicPlayerTrack_wait] + ldrb r1, [r5, #o_MusicPlayerTrack_lfoSpeed] cmp r1, 0 beq _081DD994 - ldrb r0, [r5, o_MusicPlayerTrack_mod] + ldrb r0, [r5, #o_MusicPlayerTrack_mod] cmp r0, 0 beq _081DD994 - ldrb r0, [r5, o_MusicPlayerTrack_lfoDelayC] + ldrb r0, [r5, #o_MusicPlayerTrack_lfoDelayC] cmp r0, 0 beq _081DD95A subs r0, 0x1 - strb r0, [r5, o_MusicPlayerTrack_lfoDelayC] + strb r0, [r5, #o_MusicPlayerTrack_lfoDelayC] b _081DD994 _081DD95A: - ldrb r0, [r5, o_MusicPlayerTrack_lfoSpeedC] + ldrb r0, [r5, #o_MusicPlayerTrack_lfoSpeedC] adds r0, r1 - strb r0, [r5, o_MusicPlayerTrack_lfoSpeedC] + strb r0, [r5, #o_MusicPlayerTrack_lfoSpeedC] adds r1, r0, 0 subs r0, 0x40 lsls r0, 24 @@ -1307,16 +1307,16 @@ _081DD96E: movs r0, 0x80 subs r2, r0, r1 _081DD972: - ldrb r0, [r5, o_MusicPlayerTrack_mod] + ldrb r0, [r5, #o_MusicPlayerTrack_mod] muls r0, r2 asrs r2, r0, 6 - ldrb r0, [r5, o_MusicPlayerTrack_modM] + ldrb r0, [r5, #o_MusicPlayerTrack_modM] eors r0, r2 lsls r0, 24 beq _081DD994 - strb r2, [r5, o_MusicPlayerTrack_modM] + strb r2, [r5, #o_MusicPlayerTrack_modM] ldrb r0, [r5] - ldrb r1, [r5, o_MusicPlayerTrack_modT] + ldrb r1, [r5, #o_MusicPlayerTrack_modT] cmp r1, 0 bne _081DD98E movs r1, 0xC @@ -1325,7 +1325,7 @@ _081DD98E: movs r1, 0x3 _081DD990: orrs r0, r1 - strb r0, [r5, o_MusicPlayerTrack_flags] + strb r0, [r5, #o_MusicPlayerTrack_flags] _081DD994: mov r3, r10 mov r4, r11 @@ -1337,29 +1337,29 @@ _081DD998: lsls r3, 1 b _081DD87C _081DD9A4: - ldr r0, [r7, o_MusicPlayerInfo_clock] + ldr r0, [r7, #o_MusicPlayerInfo_clock] adds r0, 0x1 - str r0, [r7, o_MusicPlayerInfo_clock] + str r0, [r7, #o_MusicPlayerInfo_clock] cmp r4, 0 bne _081DD9B6 movs r0, 0x80 lsls r0, 24 - str r0, [r7, o_MusicPlayerInfo_status] + str r0, [r7, #o_MusicPlayerInfo_status] b _081DDA6C _081DD9B6: - str r4, [r7, o_MusicPlayerInfo_status] - ldrh r0, [r7, o_MusicPlayerInfo_tempoC] + str r4, [r7, #o_MusicPlayerInfo_status] + ldrh r0, [r7, #o_MusicPlayerInfo_tempoC] subs r0, 0x96 _081DD9BC: - strh r0, [r7, o_MusicPlayerInfo_tempoC] + strh r0, [r7, #o_MusicPlayerInfo_tempoC] cmp r0, 0x96 bcc _081DD9C4 b _081DD874 _081DD9C4: - ldrb r2, [r7, o_MusicPlayerInfo_trackCount] - ldr r5, [r7, o_MusicPlayerInfo_tracks] + ldrb r2, [r7, #o_MusicPlayerInfo_trackCount] + ldr r5, [r7, #o_MusicPlayerInfo_tracks] _081DD9C8: - ldrb r0, [r5, o_MusicPlayerTrack_flags] + ldrb r0, [r5, #o_MusicPlayerTrack_flags] movs r1, 0x80 tst r1, r0 beq _081DDA62 @@ -1370,11 +1370,11 @@ _081DD9C8: adds r0, r7, 0 adds r1, r5, 0 bl TrkVolPitSet - ldr r4, [r5, o_MusicPlayerTrack_chan] + ldr r4, [r5, #o_MusicPlayerTrack_chan] cmp r4, 0 beq _081DDA58 _081DD9E6: - ldrb r1, [r4, o_SoundChannel_status] + ldrb r1, [r4, #o_SoundChannel_status] movs r0, 0xC7 tst r0, r1 bne _081DD9F6 @@ -1382,10 +1382,10 @@ _081DD9E6: bl ClearChain b _081DDA52 _081DD9F6: - ldrb r0, [r4, o_SoundChannel_type] + ldrb r0, [r4, #o_SoundChannel_type] movs r6, 0x7 ands r6, r0 - ldrb r3, [r5, o_MusicPlayerTrack_flags] + ldrb r3, [r5, #o_MusicPlayerTrack_flags] movs r0, 0x3 tst r0, r3 beq _081DDA14 @@ -1397,11 +1397,11 @@ _081DD9F6: orrs r0, r1 strb r0, [r4, o_CgbChannel_mo] _081DDA14: - ldrb r3, [r5, o_MusicPlayerTrack_flags] + ldrb r3, [r5, #o_MusicPlayerTrack_flags] movs r0, 0xC tst r0, r3 beq _081DDA52 - ldrb r1, [r4, o_SoundChannel_ky] + ldrb r1, [r4, #o_SoundChannel_ky] movs r0, 0x8 ldrsb r0, [r5, r0] adds r2, r1, r0 @@ -1411,9 +1411,9 @@ _081DDA28: cmp r6, 0 beq _081DDA46 mov r0, r8 - ldr r3, [r0, o_SoundInfo_MidiKeyToCgbFreq] + ldr r3, [r0, #o_SoundInfo_MidiKeyToCgbFreq] adds r1, r2, 0 - ldrb r2, [r5, o_MusicPlayerTrack_pitM] + ldrb r2, [r5, #o_MusicPlayerTrack_pitM] adds r0, r6, 0 bl call_r3 str r0, [r4, o_CgbChannel_fr] @@ -1424,19 +1424,19 @@ _081DDA28: b _081DDA52 _081DDA46: adds r1, r2, 0 - ldrb r2, [r5, o_MusicPlayerTrack_pitM] - ldr r0, [r4, o_SoundChannel_wav] + ldrb r2, [r5, #o_MusicPlayerTrack_pitM] + ldr r0, [r4, #o_SoundChannel_wav] bl MidiKeyToFreq - str r0, [r4, o_SoundChannel_freq] + str r0, [r4, #o_SoundChannel_freq] _081DDA52: - ldr r4, [r4, o_SoundChannel_np] + ldr r4, [r4, #o_SoundChannel_np] cmp r4, 0 bne _081DD9E6 _081DDA58: - ldrb r0, [r5, o_MusicPlayerTrack_flags] + ldrb r0, [r5, #o_MusicPlayerTrack_flags] movs r1, 0xF0 ands r0, r1 - strb r0, [r5, o_MusicPlayerTrack_flags] + strb r0, [r5, #o_MusicPlayerTrack_flags] mov r2, r9 _081DDA62: subs r2, 0x1 @@ -1446,7 +1446,7 @@ _081DDA62: bgt _081DD9C8 _081DDA6C: ldr r0, lt2_ID_NUMBER - str r0, [r7, o_MusicPlayerInfo_ident] + str r0, [r7, #o_MusicPlayerInfo_ident] pop {r0-r7} mov r8, r0 mov r9, r1 @@ -1467,35 +1467,35 @@ lt2_ID_NUMBER: .word ID_NUMBER TrackStop: push {r4-r6,lr} adds r5, r1, 0 - ldrb r1, [r5, o_MusicPlayerTrack_flags] + ldrb r1, [r5, #o_MusicPlayerTrack_flags] movs r0, 0x80 tst r0, r1 beq TrackStop_Done - ldr r4, [r5, o_MusicPlayerTrack_chan] + ldr r4, [r5, #o_MusicPlayerTrack_chan] cmp r4, 0 beq TrackStop_3 movs r6, 0 TrackStop_Loop: - ldrb r0, [r4, o_SoundChannel_status] + ldrb r0, [r4, #o_SoundChannel_status] cmp r0, 0 beq TrackStop_2 - ldrb r0, [r4, o_SoundChannel_type] + ldrb r0, [r4, #o_SoundChannel_type] movs r3, 0x7 ands r0, r3 beq TrackStop_1 ldr r3, =SOUND_INFO_PTR ldr r3, [r3] - ldr r3, [r3, o_SoundInfo_CgbOscOff] + ldr r3, [r3, #o_SoundInfo_CgbOscOff] bl call_r3 TrackStop_1: - strb r6, [r4, o_SoundChannel_status] + strb r6, [r4, #o_SoundChannel_status] TrackStop_2: - str r6, [r4, o_SoundChannel_track] - ldr r4, [r4, o_SoundChannel_np] + str r6, [r4, #o_SoundChannel_track] + ldr r4, [r4, #o_SoundChannel_np] cmp r4, 0 bne TrackStop_Loop TrackStop_3: - str r4, [r5, o_MusicPlayerTrack_chan] + str r4, [r5, #o_MusicPlayerTrack_chan] TrackStop_Done: pop {r4-r6} pop {r0} @@ -1550,41 +1550,41 @@ ply_note: ldr r1, =gClockTable adds r0, r1 ldrb r0, [r0] - strb r0, [r5, o_MusicPlayerTrack_gateTime] - ldr r3, [r5, o_MusicPlayerTrack_cmdPtr] + strb r0, [r5, #o_MusicPlayerTrack_gateTime] + ldr r3, [r5, #o_MusicPlayerTrack_cmdPtr] ldrb r0, [r3] cmp r0, 0x80 bhs _081DDB46 - strb r0, [r5, o_MusicPlayerTrack_key] + strb r0, [r5, #o_MusicPlayerTrack_key] adds r3, 0x1 ldrb r0, [r3] cmp r0, 0x80 bhs _081DDB44 - strb r0, [r5, o_MusicPlayerTrack_velocity] + strb r0, [r5, #o_MusicPlayerTrack_velocity] adds r3, 0x1 ldrb r0, [r3] cmp r0, 0x80 bhs _081DDB44 - ldrb r1, [r5, o_MusicPlayerTrack_gateTime] + ldrb r1, [r5, #o_MusicPlayerTrack_gateTime] adds r1, r0 - strb r1, [r5, o_MusicPlayerTrack_gateTime] + strb r1, [r5, #o_MusicPlayerTrack_gateTime] adds r3, 0x1 _081DDB44: - str r3, [r5, o_MusicPlayerTrack_cmdPtr] + str r3, [r5, #o_MusicPlayerTrack_cmdPtr] _081DDB46: movs r0, 0 str r0, [sp, 0x14] adds r4, r5, 0 - adds r4, o_MusicPlayerTrack_ToneData_type + adds r4, #o_MusicPlayerTrack_ToneData_type ldrb r2, [r4] movs r0, TONEDATA_TYPE_RHY | TONEDATA_TYPE_SPL tst r0, r2 beq _081DDB98 - ldrb r3, [r5, o_MusicPlayerTrack_key] + ldrb r3, [r5, #o_MusicPlayerTrack_key] movs r0, TONEDATA_TYPE_SPL tst r0, r2 beq _081DDB66 - ldr r1, [r5, o_MusicPlayerTrack_ToneData_keySplitTable] + ldr r1, [r5, #o_MusicPlayerTrack_ToneData_keySplitTable] adds r1, r3 ldrb r0, [r1] b _081DDB68 @@ -1594,7 +1594,7 @@ _081DDB68: lsls r1, r0, 1 adds r1, r0 lsls r1, 2 - ldr r0, [r5, o_MusicPlayerTrack_ToneData_wav] + ldr r0, [r5, #o_MusicPlayerTrack_ToneData_wav] adds r1, r0 mov r9, r1 mov r6, r9 @@ -1787,7 +1787,7 @@ _081DDCBC: bl call_r3 b _081DDCDC _081DDCCE: - ldr r0, [r5, o_MusicPlayerTrack_unk_3C] + ldr r0, [r5, #o_MusicPlayerTrack_unk_3C] str r0, [r4, 0x18] ldrb r2, [r5, 0x9] adds r1, r3, 0 @@ -1816,37 +1816,37 @@ _081DDCEA: thumb_func_start ply_endtie ply_endtie: push {r4,r5} - ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldr r2, [r1, #o_MusicPlayerTrack_cmdPtr] ldrb r3, [r2] cmp r3, 0x80 bhs _081DDD16 - strb r3, [r1, o_MusicPlayerTrack_key] + strb r3, [r1, #o_MusicPlayerTrack_key] adds r2, 0x1 - str r2, [r1, o_MusicPlayerTrack_cmdPtr] + str r2, [r1, #o_MusicPlayerTrack_cmdPtr] b _081DDD18 _081DDD16: - ldrb r3, [r1, o_MusicPlayerTrack_key] + ldrb r3, [r1, #o_MusicPlayerTrack_key] _081DDD18: - ldr r1, [r1, o_MusicPlayerTrack_chan] + ldr r1, [r1, #o_MusicPlayerTrack_chan] cmp r1, 0 beq _081DDD40 movs r4, 0x83 movs r5, 0x40 _081DDD22: - ldrb r2, [r1, o_SoundChannel_status] + ldrb r2, [r1, #o_SoundChannel_status] tst r2, r4 beq _081DDD3A tst r2, r5 bne _081DDD3A - ldrb r0, [r1, o_SoundChannel_mk] + ldrb r0, [r1, #o_SoundChannel_mk] cmp r0, r3 bne _081DDD3A movs r0, 0x40 orrs r2, r0 - strb r2, [r1, o_SoundChannel_status] + strb r2, [r1, #o_SoundChannel_status] b _081DDD40 _081DDD3A: - ldr r1, [r1, o_SoundChannel_np] + ldr r1, [r1, #o_SoundChannel_np] cmp r1, 0 bne _081DDD22 _081DDD40: @@ -1857,9 +1857,9 @@ _081DDD40: thumb_func_start clear_modM clear_modM: movs r2, 0 - strb r2, [r1, o_MusicPlayerTrack_modM] - strb r2, [r1, o_MusicPlayerTrack_lfoSpeedC] - ldrb r2, [r1, o_MusicPlayerTrack_modT] + strb r2, [r1, #o_MusicPlayerTrack_modM] + strb r2, [r1, #o_MusicPlayerTrack_lfoSpeedC] + ldrb r2, [r1, #o_MusicPlayerTrack_modT] cmp r2, 0 bne _081DDD54 movs r2, 0xC @@ -1867,17 +1867,17 @@ clear_modM: _081DDD54: movs r2, 0x3 _081DDD56: - ldrb r3, [r1, o_MusicPlayerTrack_flags] + ldrb r3, [r1, #o_MusicPlayerTrack_flags] orrs r3, r2 - strb r3, [r1, o_MusicPlayerTrack_flags] + strb r3, [r1, #o_MusicPlayerTrack_flags] bx lr thumb_func_end clear_modM thumb_func_start ld_r3_tp_adr_i ld_r3_tp_adr_i_unchecked: - ldr r2, [r1, o_MusicPlayerTrack_cmdPtr] + ldr r2, [r1, #o_MusicPlayerTrack_cmdPtr] adds r3, r2, 1 - str r3, [r1, o_MusicPlayerTrack_cmdPtr] + str r3, [r1, #o_MusicPlayerTrack_cmdPtr] ldrb r3, [r2] bx lr thumb_func_end ld_r3_tp_adr_i @@ -1886,7 +1886,7 @@ ld_r3_tp_adr_i_unchecked: ply_lfos: mov r12, lr bl ld_r3_tp_adr_i_unchecked - strb r3, [r1, o_MusicPlayerTrack_lfoSpeed] + strb r3, [r1, #o_MusicPlayerTrack_lfoSpeed] cmp r3, 0 bne _081DDD7C bl clear_modM @@ -1898,7 +1898,7 @@ _081DDD7C: ply_mod: mov r12, lr bl ld_r3_tp_adr_i_unchecked - strb r3, [r1, o_MusicPlayerTrack_mod] + strb r3, [r1, #o_MusicPlayerTrack_mod] cmp r3, 0 bne _081DDD90 bl clear_modM diff --git a/src/main_menu.c b/src/main_menu.c index a4de99207..f4bf37ce1 100644 --- a/src/main_menu.c +++ b/src/main_menu.c @@ -1292,7 +1292,7 @@ static void Task_NewGameBirchSpeech_Init(u8 taskId) gTasks[taskId].tPlayerSpriteId = 0xFF; gTasks[taskId].data[3] = 0xFF; gTasks[taskId].tTimer = 0xD8; - PlayBGM(MUS_DOORO_X4); + PlayBGM(MUS_ROUTE122); ShowBg(0); ShowBg(1); } diff --git a/src/match_call.c b/src/match_call.c index 21edb1b77..aaf6f29d2 100644 --- a/src/match_call.c +++ b/src/match_call.c @@ -1119,7 +1119,7 @@ static void StartMatchCall(void) sub_808BCF4(); } - PlaySE(SE_TOREEYE); + PlaySE(SE_POKENAV_CALL); CreateTask(ExecuteMatchCall, 1); } @@ -1257,7 +1257,7 @@ static bool32 sub_8196330(u8 taskId) { FillWindowPixelBuffer(taskData[2], PIXEL_FILL(8)); CopyWindowToVram(taskData[2], 2); - PlaySE(SE_TOREOFF); + PlaySE(SE_POKENAV_HANG_UP); return TRUE; } diff --git a/src/menu.c b/src/menu.c index eb980ed2e..85275b6bc 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1299,10 +1299,12 @@ u8 sub_8198F58(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 cursorHeight, else sMenu.cursorPos = pos; - sub_8199134(0, 0); + // Why call this when it's not gonna move? + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_NONE); return sMenu.cursorPos; } +// Unused u8 sub_8198FD4(u8 windowId, u8 fontId, u8 left, u8 top, u8 a4, u8 a5, u8 a6, u8 a7) { u8 cursorHeight = GetMenuCursorDimensionByFont(fontId, 1); @@ -1333,40 +1335,28 @@ void sub_8199060(u8 oldCursorPos, u8 newCursorPos) 0); } -u8 sub_8199134(s8 deltaX, s8 deltaY) +u8 ChangeListMenuCursorPosition(s8 deltaX, s8 deltaY) { u8 oldPos = sMenu.cursorPos; if (deltaX != 0) { if ((sMenu.cursorPos % sMenu.columns) + deltaX < 0) - { sMenu.cursorPos += sMenu.columns - 1; - } else if ((sMenu.cursorPos % sMenu.columns) + deltaX >= sMenu.columns) - { sMenu.cursorPos = (sMenu.cursorPos / sMenu.columns) * sMenu.columns; - } else - { sMenu.cursorPos += deltaX; - } } if (deltaY != 0) { if ((sMenu.cursorPos / sMenu.columns) + deltaY < 0) - { sMenu.cursorPos += sMenu.columns * (sMenu.rows - 1); - } else if ((sMenu.cursorPos / sMenu.columns) + deltaY >= sMenu.rows) - { sMenu.cursorPos -= sMenu.columns * (sMenu.rows - 1); - } else - { sMenu.cursorPos += (sMenu.columns * deltaY); - } } if (sMenu.cursorPos > sMenu.maxCursorPos) @@ -1381,7 +1371,7 @@ u8 sub_8199134(s8 deltaX, s8 deltaY) } } -u8 sub_81991F8(s8 deltaX, s8 deltaY) +u8 ChangeGridMenuCursorPosition(s8 deltaX, s8 deltaY) { u8 oldPos = sMenu.cursorPos; @@ -1429,25 +1419,25 @@ s8 sub_8199284(void) else if (gMain.newKeys & DPAD_UP) { PlaySE(SE_SELECT); - sub_8199134(0, -1); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_UP); return MENU_NOTHING_CHOSEN; } else if (gMain.newKeys & DPAD_DOWN) { PlaySE(SE_SELECT); - sub_8199134(0, 1); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_DOWN); return MENU_NOTHING_CHOSEN; } else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED) { PlaySE(SE_SELECT); - sub_8199134(-1, 0); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_LEFT, MENU_CURSOR_DELTA_NONE); return MENU_NOTHING_CHOSEN; } else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED) { PlaySE(SE_SELECT); - sub_8199134(1, 0); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_RIGHT, MENU_CURSOR_DELTA_NONE); return MENU_NOTHING_CHOSEN; } @@ -1469,25 +1459,25 @@ s8 Menu_ProcessInputGridLayout(void) } else if (gMain.newKeys & DPAD_UP) { - if (oldPos != sub_81991F8(0, -1)) + if (oldPos != ChangeGridMenuCursorPosition(0, -1)) PlaySE(SE_SELECT); return MENU_NOTHING_CHOSEN; } else if (gMain.newKeys & DPAD_DOWN) { - if (oldPos != sub_81991F8(0, 1)) + if (oldPos != ChangeGridMenuCursorPosition(0, 1)) PlaySE(SE_SELECT); return MENU_NOTHING_CHOSEN; } else if (gMain.newKeys & DPAD_LEFT || GetLRKeysPressed() == MENU_L_PRESSED) { - if (oldPos != sub_81991F8(-1, 0)) + if (oldPos != ChangeGridMenuCursorPosition(-1, 0)) PlaySE(SE_SELECT); return MENU_NOTHING_CHOSEN; } else if (gMain.newKeys & DPAD_RIGHT || GetLRKeysPressed() == MENU_R_PRESSED) { - if (oldPos != sub_81991F8(1, 0)) + if (oldPos != ChangeGridMenuCursorPosition(1, 0)) PlaySE(SE_SELECT); return MENU_NOTHING_CHOSEN; } @@ -1509,31 +1499,32 @@ s8 sub_81993D8(void) else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) { PlaySE(SE_SELECT); - sub_8199134(0, -1); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_UP); return MENU_NOTHING_CHOSEN; } else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) { PlaySE(SE_SELECT); - sub_8199134(0, 1); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_DOWN); return MENU_NOTHING_CHOSEN; } else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == MENU_L_PRESSED) { PlaySE(SE_SELECT); - sub_8199134(-1, 0); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_LEFT, MENU_CURSOR_DELTA_NONE); return MENU_NOTHING_CHOSEN; } else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == MENU_R_PRESSED) { PlaySE(SE_SELECT); - sub_8199134(1, 0); + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_RIGHT, MENU_CURSOR_DELTA_NONE); return MENU_NOTHING_CHOSEN; } return MENU_NOTHING_CHOSEN; } +//Unused s8 sub_8199484(void) { u8 oldPos = sMenu.cursorPos; @@ -1549,25 +1540,25 @@ s8 sub_8199484(void) } else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_UP) { - if (oldPos != sub_81991F8(0, -1)) + if (oldPos != ChangeGridMenuCursorPosition(0, -1)) PlaySE(SE_SELECT); return MENU_NOTHING_CHOSEN; } else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_DOWN) { - if (oldPos != sub_81991F8(0, 1)) + if (oldPos != ChangeGridMenuCursorPosition(0, 1)) PlaySE(SE_SELECT); return MENU_NOTHING_CHOSEN; } else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_LEFT || GetLRKeysPressedAndHeld() == MENU_L_PRESSED) { - if (oldPos != sub_81991F8(-1, 0)) + if (oldPos != ChangeGridMenuCursorPosition(-1, 0)) PlaySE(SE_SELECT); return MENU_NOTHING_CHOSEN; } else if ((gMain.newAndRepeatedKeys & DPAD_ANY) == DPAD_RIGHT || GetLRKeysPressedAndHeld() == MENU_R_PRESSED) { - if (oldPos != sub_81991F8(1, 0)) + if (oldPos != ChangeGridMenuCursorPosition(1, 0)) PlaySE(SE_SELECT); return MENU_NOTHING_CHOSEN; } @@ -1732,7 +1723,8 @@ u8 sub_8199944(u8 windowId, u8 optionWidth, u8 columns, u8 rows, u8 initialCurso else sMenu.cursorPos = pos; - sub_8199134(0, 0); + // Why call this when it's not gonna move? + ChangeListMenuCursorPosition(MENU_CURSOR_DELTA_NONE, MENU_CURSOR_DELTA_NONE); return sMenu.cursorPos; } diff --git a/src/menu_specialized.c b/src/menu_specialized.c index a99c5c9d0..d402ecb51 100644 --- a/src/menu_specialized.c +++ b/src/menu_specialized.c @@ -894,76 +894,73 @@ static u8 *GetConditionMenuMonString(u8 *dst, u16 boxId, u16 monId) { return StringCopyPadded(dst, gText_EggNickname, 0, 12); } + GetBoxOrPartyMonData(boxId, monId, MON_DATA_NICKNAME, dst); + StringGetEnd10(dst); + species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES, NULL); + if (boxId == TOTAL_BOXES_COUNT) // Party mon. + { + level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); + gender = GetMonGender(&gPlayerParty[monId]); + } else { - GetBoxOrPartyMonData(boxId, monId, MON_DATA_NICKNAME, dst); - StringGetEnd10(dst); - species = GetBoxOrPartyMonData(boxId, monId, MON_DATA_SPECIES, NULL); - if (boxId == TOTAL_BOXES_COUNT) // Party mon. - { - level = GetMonData(&gPlayerParty[monId], MON_DATA_LEVEL); - gender = GetMonGender(&gPlayerParty[monId]); - } - else - { - // Needed to match, feel free to remove. - boxId++;boxId--; - monId++;monId--; - - boxMon = GetBoxedMonPtr(boxId, monId); - gender = GetBoxMonGender(boxMon); - level = GetLevelFromBoxMonExp(boxMon); - } + // Needed to match, feel free to remove. + boxId++, boxId--; + monId++, monId--; - if ((species == SPECIES_NIDORAN_F || species == SPECIES_NIDORAN_M) && !StringCompare(dst, gSpeciesNames[species])) - gender = MON_GENDERLESS; + boxMon = GetBoxedMonPtr(boxId, monId); + gender = GetBoxMonGender(boxMon); + level = GetLevelFromBoxMonExp(boxMon); + } - for (str = dst; *str != EOS; str++) - ; + if ((species == SPECIES_NIDORAN_F || species == SPECIES_NIDORAN_M) && !StringCompare(dst, gSpeciesNames[species])) + gender = MON_GENDERLESS; - *(str++) = EXT_CTRL_CODE_BEGIN; - *(str++) = EXT_CTRL_CODE_SKIP; - *(str++) = 60; + for (str = dst; *str != EOS; str++) + ; - switch (gender) - { - default: - *(str++) = CHAR_SPACE; - break; - case MON_MALE: - *(str++) = EXT_CTRL_CODE_BEGIN; - *(str++) = EXT_CTRL_CODE_COLOR; - *(str++) = TEXT_COLOR_RED; - *(str++) = EXT_CTRL_CODE_BEGIN; - *(str++) = EXT_CTRL_CODE_SHADOW; - *(str++) = TEXT_COLOR_LIGHT_RED; - *(str++) = CHAR_MALE; - break; - case MON_FEMALE: - *(str++) = EXT_CTRL_CODE_BEGIN; - *(str++) = EXT_CTRL_CODE_COLOR; - *(str++) = TEXT_COLOR_GREEN; - *(str++) = EXT_CTRL_CODE_BEGIN; - *(str++) = EXT_CTRL_CODE_SHADOW; - *(str++) = TEXT_COLOR_LIGHT_GREEN; - *(str++) = CHAR_FEMALE; - break; - } + *(str++) = EXT_CTRL_CODE_BEGIN; + *(str++) = EXT_CTRL_CODE_SKIP; + *(str++) = 60; - *(str++) = EXT_CTRL_CODE_BEGIN; - *(str++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW; - *(str++) = TEXT_COLOR_BLUE; - *(str++) = TEXT_COLOR_TRANSPARENT; - *(str++) = TEXT_COLOR_LIGHT_BLUE; - *(str++) = CHAR_SLASH; - *(str++) = CHAR_EXTRA_SYMBOL; - *(str++) = CHAR_LV_2; - str = ConvertIntToDecimalStringN(str, level, STR_CONV_MODE_LEFT_ALIGN, 3); + switch (gender) + { + default: *(str++) = CHAR_SPACE; - *str = EOS; - - return str; + break; + case MON_MALE: + *(str++) = EXT_CTRL_CODE_BEGIN; + *(str++) = EXT_CTRL_CODE_COLOR; + *(str++) = TEXT_COLOR_RED; + *(str++) = EXT_CTRL_CODE_BEGIN; + *(str++) = EXT_CTRL_CODE_SHADOW; + *(str++) = TEXT_COLOR_LIGHT_RED; + *(str++) = CHAR_MALE; + break; + case MON_FEMALE: + *(str++) = EXT_CTRL_CODE_BEGIN; + *(str++) = EXT_CTRL_CODE_COLOR; + *(str++) = TEXT_COLOR_GREEN; + *(str++) = EXT_CTRL_CODE_BEGIN; + *(str++) = EXT_CTRL_CODE_SHADOW; + *(str++) = TEXT_COLOR_LIGHT_GREEN; + *(str++) = CHAR_FEMALE; + break; } + + *(str++) = EXT_CTRL_CODE_BEGIN; + *(str++) = EXT_CTRL_CODE_COLOR_HIGHLIGHT_SHADOW; + *(str++) = TEXT_COLOR_BLUE; + *(str++) = TEXT_COLOR_TRANSPARENT; + *(str++) = TEXT_COLOR_LIGHT_BLUE; + *(str++) = CHAR_SLASH; + *(str++) = CHAR_EXTRA_SYMBOL; + *(str++) = CHAR_LV_2; + str = ConvertIntToDecimalStringN(str, level, STR_CONV_MODE_LEFT_ALIGN, 3); + *(str++) = CHAR_SPACE; + *str = EOS; + + return str; } // Buffers the string in src to dest up to n chars. If src is less than n chars, fill with spaces diff --git a/src/minigame_countdown.c b/src/minigame_countdown.c index be1c42e29..cd5710d44 100644 --- a/src/minigame_countdown.c +++ b/src/minigame_countdown.c @@ -227,7 +227,7 @@ static void sub_802E938(struct Sprite *sprite) sprite->invisible = FALSE; case 1: case 2: - PlaySE(SE_KON); + PlaySE(SE_BALL_BOUNCE_1); StartSpriteAnim(sprite, sprite->data[2]); break; case 3: @@ -249,7 +249,7 @@ static void sub_802E938(struct Sprite *sprite) static void sub_802EA50(u8 taskId) { s16 *data = gTasks[taskId].data; - PlaySE(SE_KON); + PlaySE(SE_BALL_BOUNCE_1); gSprites[data[13]].callback = sub_802E938; gSprites[data[13]].invisible = FALSE; gTasks[taskId].data[0] = 3; @@ -262,15 +262,15 @@ static void sub_802EAB0(u8 taskId) if (gReceivedRemoteLinkPlayers != 0) { - if (gRecvCmds[0][1] == 0x7FFF) + if (gRecvCmds[0][1] == LINKCMD_0x7FFF) data[11] = gRecvCmds[0][2]; if (GetMultiplayerId() == 0) { data[12]++; memset(packet, 0, sizeof(packet)); - packet[0] = 0x7FFF; + packet[0] = LINKCMD_0x7FFF; packet[1] = data[12]; - sub_800FE50(packet); + Rfu_SendPacket(packet); } } else @@ -350,7 +350,7 @@ static bool32 RunMinigameCountdownDigitsAnim(u8 spriteId) // fallthrough case 1: if (sprite->data[2] == 0) - PlaySE(SE_KON2); + PlaySE(SE_BALL_BOUNCE_2); if (++sprite->data[2] >= 20) { sprite->data[2] = 0; @@ -443,7 +443,7 @@ static void SpriteCB_Start(struct Sprite *sprite) sprite->pos2.y = data[5] >> 4; if (sprite->pos2.y >= 0) { - PlaySE(SE_KON2); + PlaySE(SE_BALL_BOUNCE_2); sprite->pos2.y = 0; data[0]++; } @@ -452,7 +452,7 @@ static void SpriteCB_Start(struct Sprite *sprite) data[1] += 12; if (data[1] >= 128) { - PlaySE(SE_KON2); + PlaySE(SE_BALL_BOUNCE_2); data[1] = 0; data[0]++; } @@ -463,7 +463,7 @@ static void SpriteCB_Start(struct Sprite *sprite) data[1] += 16; if (data[1] >= 128) { - PlaySE(SE_KON2); + PlaySE(SE_BALL_BOUNCE_2); data[1] = 0; data[0]++; } diff --git a/src/mirage_tower.c b/src/mirage_tower.c index 02cccf2a5..fb3a0a374 100644 --- a/src/mirage_tower.c +++ b/src/mirage_tower.c @@ -370,7 +370,7 @@ static void StartScreenShake(u8 yShakeOffset, u8 xShakeOffset, u8 numShakes, u8 gTasks[taskId].data[3] = shakeDelay; gTasks[taskId].data[4] = yShakeOffset; SetCameraPanningCallback(NULL); - PlaySE(SE_W070); + PlaySE(SE_M_STRENGTH); } static void DoScreenShake(u8 taskId) diff --git a/src/move_relearner.c b/src/move_relearner.c index 1c863804b..3e7caf133 100644 --- a/src/move_relearner.c +++ b/src/move_relearner.c @@ -150,20 +150,22 @@ #define JAM_HEART_EMPTY 2 #define JAM_HEART_FULL 3 +#define MAX_RELEARNER_MOVES (MAX_LEVEL_UP_MOVES > 25 ? MAX_LEVEL_UP_MOVES : 25) + static EWRAM_DATA struct { u8 state; - u8 heartSpriteIds[16]; /*0x001*/ - u16 movesToLearn[25]; /*0x01A*/ - u8 partyMon; /*0x044*/ - u8 moveSlot; /*0x045*/ - struct ListMenuItem menuItems[25]; /*0x0E8*/ - u8 numMenuChoices; /*0x110*/ - u8 numToShowAtOnce; /*0x111*/ - u8 moveListMenuTask; /*0x112*/ - u8 moveListScrollArrowTask; /*0x113*/ - u8 moveDisplayArrowTask; /*0x114*/ - u16 scrollOffset; /*0x116*/ + u8 heartSpriteIds[16]; /*0x001*/ + u16 movesToLearn[MAX_RELEARNER_MOVES]; /*0x01A*/ + u8 partyMon; /*0x044*/ + u8 moveSlot; /*0x045*/ + struct ListMenuItem menuItems[MAX_RELEARNER_MOVES]; /*0x0E8*/ + u8 numMenuChoices; /*0x110*/ + u8 numToShowAtOnce; /*0x111*/ + u8 moveListMenuTask; /*0x112*/ + u8 moveListScrollArrowTask; /*0x113*/ + u8 moveDisplayArrowTask; /*0x114*/ + u16 scrollOffset; /*0x116*/ } *sMoveRelearnerStruct = {0}; static EWRAM_DATA struct { @@ -713,13 +715,13 @@ static void DoMoveRelearnerMain(void) { FormatAndPrintText(gText_MoveRelearnerPkmnForgotMoveAndLearnedNew); sMoveRelearnerStruct->state = MENU_STATE_PRINT_TEXT_THEN_FANFARE; - PlayFanfare(MUS_FANFA1); + PlayFanfare(MUS_LEVEL_UP); } break; case MENU_STATE_PRINT_TEXT_THEN_FANFARE: if (!MoveRelearnerRunTextPrinters()) { - PlayFanfare(MUS_FANFA1); + PlayFanfare(MUS_LEVEL_UP); sMoveRelearnerStruct->state = MENU_STATE_WAIT_FOR_FANFARE; } break; diff --git a/src/mystery_gift.c b/src/mystery_gift.c index 7f1370a5e..ca5ab1baf 100644 --- a/src/mystery_gift.c +++ b/src/mystery_gift.c @@ -431,7 +431,7 @@ bool32 HandleMysteryGiftOrEReaderSetup(s32 mg_or_ereader) case 3: ShowBg(0); ShowBg(3); - PlayBGM(MUS_RG_OKURIMONO); + PlayBGM(MUS_RG_MYSTERY_GIFT); SetVBlankCallback(vblankcb_mystery_gift_e_reader_run); EnableInterrupts(INTR_FLAG_VBLANK | INTR_FLAG_VCOUNT | INTR_FLAG_TIMER3 | INTR_FLAG_SERIAL); return TRUE; @@ -1023,7 +1023,7 @@ static bool32 PrintMGSuccessMessage(u8 * state, const u8 * arg1, u16 * arg2) { AddTextPrinterToWindow1(arg1); } - PlayFanfare(MUS_FANFA4); + PlayFanfare(MUS_OBTAIN_ITEM); *arg2 = 0; (*state)++; break; diff --git a/src/naming_screen.c b/src/naming_screen.c index 4ed9d78d0..be921078e 100644 --- a/src/naming_screen.c +++ b/src/naming_screen.c @@ -1823,7 +1823,7 @@ static void DeleteTextCharacter(void) // It incorrectly leaves the Back key 1 shade lighter than its default if (keyRole == KEY_ROLE_CHAR || keyRole == KEY_ROLE_BACKSPACE) TryStartButtonFlash(BUTTON_BACK, FALSE, TRUE); - PlaySE(SE_BOWA); + PlaySE(SE_BALL); } // Returns TRUE if the text entry is now full diff --git a/src/overworld.c b/src/overworld.c index 2d838fc4d..d18e3d3bc 100644 --- a/src/overworld.c +++ b/src/overworld.c @@ -1076,11 +1076,11 @@ u16 GetLocationMusic(struct WarpData *warp) if (NoMusicInSotopolisWithLegendaries(warp) == TRUE) return 0xFFFF; else if (ShouldLegendaryMusicPlayAtLocation(warp) == TRUE) - return MUS_OOAME; + return MUS_ABNORMAL_WEATHER; else if (IsInflitratedSpaceCenter(warp) == TRUE) - return MUS_MGM0; + return MUS_ENCOUNTER_MAGMA; else if (IsInfiltratedWeatherInstitute(warp) == TRUE) - return MUS_TOZAN; + return MUS_MT_CHIMNEY; else return Overworld_GetMapHeaderByGroupAndId(warp->mapGroup, warp->mapNum)->music; } @@ -1093,26 +1093,26 @@ u16 GetCurrLocationDefaultMusic(void) if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(ROUTE111) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(ROUTE111) && GetSav1Weather() == WEATHER_SANDSTORM) - return MUS_ASHROAD; + return MUS_ROUTE111; music = GetLocationMusic(&gSaveBlock1Ptr->location); - if (music != MUS_ROUTE_118) + if (music != MUS_ROUTE118) { return music; } else { if (gSaveBlock1Ptr->pos.x < 24) - return MUS_DOORO_X1; + return MUS_ROUTE110; else - return MUS_GRANROAD; + return MUS_ROUTE119; } } u16 GetWarpDestinationMusic(void) { u16 music = GetLocationMusic(&sWarpDestination); - if (music != MUS_ROUTE_118) + if (music != MUS_ROUTE118) { return music; } @@ -1120,9 +1120,9 @@ u16 GetWarpDestinationMusic(void) { if (gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(MAUVILLE_CITY) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(MAUVILLE_CITY)) - return MUS_DOORO_X1; + return MUS_ROUTE110; else - return MUS_GRANROAD; + return MUS_ROUTE119; } } @@ -1135,14 +1135,14 @@ void Overworld_PlaySpecialMapMusic(void) { u16 music = GetCurrLocationDefaultMusic(); - if (music != MUS_OOAME && music != 0xFFFF) + if (music != MUS_ABNORMAL_WEATHER && music != 0xFFFF) { if (gSaveBlock1Ptr->savedMusic) music = gSaveBlock1Ptr->savedMusic; else if (GetCurrentMapType() == MAP_TYPE_UNDERWATER) - music = MUS_DEEPDEEP; + music = MUS_UNDERWATER; else if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) - music = MUS_NAMINORI; + music = MUS_SURF; } if (music != GetCurrentMapMusic()) @@ -1165,12 +1165,12 @@ static void TransitionMapMusic(void) { u16 newMusic = GetWarpDestinationMusic(); u16 currentMusic = GetCurrentMapMusic(); - if (newMusic != MUS_OOAME && newMusic != 0xFFFF) + if (newMusic != MUS_ABNORMAL_WEATHER && newMusic != 0xFFFF) { - if (currentMusic == MUS_DEEPDEEP || currentMusic == MUS_NAMINORI) + if (currentMusic == MUS_UNDERWATER || currentMusic == MUS_SURF) return; if (TestPlayerAvatarFlags(PLAYER_AVATAR_FLAG_SURFING)) - newMusic = MUS_NAMINORI; + newMusic = MUS_SURF; } if (newMusic != currentMusic) { @@ -1192,7 +1192,7 @@ void Overworld_ChangeMusicToDefault(void) void Overworld_ChangeMusicTo(u16 newMusic) { u16 currentMusic = GetCurrentMapMusic(); - if (currentMusic != newMusic && currentMusic != MUS_OOAME) + if (currentMusic != newMusic && currentMusic != MUS_ABNORMAL_WEATHER) FadeOutAndPlayNewMapMusic(newMusic, 8); } @@ -1211,7 +1211,7 @@ void TryFadeOutOldMapMusic(void) u16 warpMusic = GetWarpDestinationMusic(); if (FlagGet(FLAG_DONT_TRANSITION_MUSIC) != TRUE && warpMusic != GetCurrentMapMusic()) { - if (currentMusic == MUS_NAMINORI + if (currentMusic == MUS_SURF && VarGet(VAR_SKY_PILLAR_STATE) == 2 && gSaveBlock1Ptr->location.mapGroup == MAP_GROUP(SOOTOPOLIS_CITY) && gSaveBlock1Ptr->location.mapNum == MAP_NUM(SOOTOPOLIS_CITY) diff --git a/src/party_menu.c b/src/party_menu.c index f61cbc5e6..7514cf545 100755 --- a/src/party_menu.c +++ b/src/party_menu.c @@ -1294,7 +1294,7 @@ static bool8 IsSelectedMonNotEgg(u8 *slotPtr) { if (GetMonData(&gPlayerParty[*slotPtr], MON_DATA_IS_EGG) == TRUE) { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); return FALSE; } return TRUE; @@ -1305,7 +1305,7 @@ static void HandleChooseMonCancel(u8 taskId, s8 *slotPtr) switch (gPartyMenu.action) { case PARTY_ACTION_SEND_OUT: - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); break; case PARTY_ACTION_SWITCH: case PARTY_ACTION_SOFTBOILED: @@ -1915,7 +1915,7 @@ static void TryEnterMonForMinigame(u8 taskId, u8 slot) } else { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); DisplayPartyMenuMessage(gText_PkmnCantParticipate, FALSE); ScheduleBgCopyTilemapToVram(2); gTasks[taskId].func = Task_ReturnToChooseMonAfterText; @@ -3471,7 +3471,7 @@ static void CursorCb_Enter(u8 taskId) } ConvertIntToDecimalStringN(gStringVar1, maxBattlers, STR_CONV_MODE_LEFT_ALIGN, 1); StringExpandPlaceholders(gStringVar4, gText_NoMoreThanVar1Pkmn); - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); DisplayPartyMenuMessage(gStringVar4, TRUE); gTasks[taskId].func = Task_ReturnToChooseMonAfterText; } @@ -3538,7 +3538,7 @@ static void CursorCb_Register(u8 taskId) Task_ClosePartyMenu(taskId); return; } - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); StringAppend(gStringVar4, gText_PauseUntilPress); @@ -3556,7 +3556,7 @@ static void CursorCb_Trade1(u8 taskId) if (stringId != UR_TRADE_MSG_NONE) { StringExpandPlaceholders(gStringVar4, sUnionRoomTradeMessages[stringId - 1]); - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[0]); PartyMenuRemoveWindow(&sPartyMenuInternal->windowId[1]); StringAppend(gStringVar4, gText_PauseUntilPress); @@ -3595,7 +3595,7 @@ static void CursorCb_Trade2(u8 taskId) gTasks[taskId].func = Task_SpinTradeYesNo; return; } - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); StringAppend(gStringVar4, gText_PauseUntilPress); DisplayPartyMenuMessage(gStringVar4, TRUE); gTasks[taskId].func = Task_ReturnToChooseMonAfterText; @@ -4355,13 +4355,13 @@ void ItemUseCB_Medicine(u8 taskId, TaskFunc task) gPartyMenuUseExitCallback = TRUE; if (!IsItemFlute(item)) { - PlaySE(SE_KAIFUKU); + PlaySE(SE_USE_ITEM); if (gPartyMenu.action != PARTY_ACTION_REUSABLE_ITEM) RemoveBagItem(item, 1); } else { - PlaySE(SE_BIDORO); + PlaySE(SE_GLASS_FLUTE); } SetPartyMonAilmentGfx(mon, &sPartyMenuBoxes[gPartyMenu.slotId]); if (gSprites[sPartyMenuBoxes[gPartyMenu.slotId].statusSpriteId].invisible) @@ -4426,7 +4426,7 @@ void ItemUseCB_ReduceEV(u8 taskId, TaskFunc task) else { gPartyMenuUseExitCallback = TRUE; - PlaySE(SE_KAIFUKU); + PlaySE(SE_USE_ITEM); RemoveBagItem(item, 1); GetMonNickname(mon, gStringVar1); ItemEffectToStatString(effectType, gStringVar2); @@ -4591,7 +4591,7 @@ static void TryUsePPItem(u8 taskId) { gPartyMenuUseExitCallback = TRUE; mon = &gPlayerParty[ptr->slotId]; - PlaySE(SE_KAIFUKU); + PlaySE(SE_USE_ITEM); RemoveBagItem(item, 1); move = GetMonData(mon, MON_DATA_MOVE1 + *moveSlot); StringCopy(gStringVar1, gMoveNames[move]); @@ -4715,7 +4715,7 @@ static void Task_DoLearnedMoveFanfareAfterText(u8 taskId) { if (IsPartyMenuTextPrinterActive() != TRUE) { - PlayFanfare(MUS_FANFA1); + PlayFanfare(MUS_LEVEL_UP); gTasks[taskId].func = Task_LearnNextMoveOrClosePartyMenu; } } @@ -5095,7 +5095,7 @@ static void UseSacredAsh(u8 taskId) return; } - PlaySE(SE_KAIFUKU); + PlaySE(SE_USE_ITEM); SetPartyMonAilmentGfx(mon, &sPartyMenuBoxes[gPartyMenu.slotId]); if (gSprites[sPartyMenuBoxes[gPartyMenu.slotId].statusSpriteId].invisible) DisplayPartyPokemonLevelCheck(mon, &sPartyMenuBoxes[gPartyMenu.slotId], 1); @@ -5596,7 +5596,7 @@ static void Task_ValidateChosenHalfParty(u8 taskId) if (msgId != 0xFF) { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); DisplayPartyMenuStdMessage(msgId); gTasks[taskId].func = Task_ContinueChoosingHalfParty; } @@ -6077,7 +6077,7 @@ static void Task_MultiPartnerPartySlideIn(u8 taskId) if (gMultiPartnerParty[i - MULTI_PARTY_SIZE].species != SPECIES_NONE) AnimateSelectedPartyIcon(sPartyMenuBoxes[i].monSpriteId, 0); } - PlaySE(SE_W231); // The Harden SE plays once the partners party mons have slid on screen + PlaySE(SE_M_HARDEN); // The Harden SE plays once the partners party mons have slid on screen gTasks[taskId].func = Task_WaitAfterMultiPartnerPartySlideIn; } } diff --git a/src/pokeball.c b/src/pokeball.c index 1a0561c33..b176677bd 100644 --- a/src/pokeball.c +++ b/src/pokeball.c @@ -166,43 +166,43 @@ static const union AnimCmd *const sBallAnimSequences[] = sBallAnimSeq6, }; -static const union AffineAnimCmd sBallAffineAnimSeq0[] = +static const union AffineAnimCmd sAffineAnim_BallRotate_0[] = { AFFINEANIMCMD_FRAME(0, 0, 0, 1), AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sBallAffineAnimSeq1[] = +static const union AffineAnimCmd sAffineAnim_BallRotate_Right[] = { AFFINEANIMCMD_FRAME(0, 0, -3, 1), AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sBallAffineAnimSeq2[] = +static const union AffineAnimCmd sAffineAnim_BallRotate_Left[] = { AFFINEANIMCMD_FRAME(0, 0, 3, 1), AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd sBallAffineAnimSeq3[] = +static const union AffineAnimCmd sAffineAnim_BallRotate_3[] = { AFFINEANIMCMD_FRAME(256, 256, 0, 0), AFFINEANIMCMD_END, }; -static const union AffineAnimCmd sBallAffineAnimSeq4[] = +static const union AffineAnimCmd sAffineAnim_BallRotate_4[] = { AFFINEANIMCMD_FRAME(0, 0, 25, 1), AFFINEANIMCMD_JUMP(0), }; -static const union AffineAnimCmd *const sBallAffineAnimSequences[] = +static const union AffineAnimCmd *const sAffineAnim_BallRotate[] = { - sBallAffineAnimSeq0, - sBallAffineAnimSeq1, - sBallAffineAnimSeq2, - sBallAffineAnimSeq3, - sBallAffineAnimSeq4, + [BALL_AFFINE_ANIM_0] = sAffineAnim_BallRotate_0, + [BALL_ROTATE_RIGHT] = sAffineAnim_BallRotate_Right, + [BALL_ROTATE_LEFT] = sAffineAnim_BallRotate_Left, + [BALL_AFFINE_ANIM_3] = sAffineAnim_BallRotate_3, + [BALL_AFFINE_ANIM_4] = sAffineAnim_BallRotate_4, }; const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = @@ -213,7 +213,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .oam = &sBallOamData, .anims = sBallAnimSequences, .images = NULL, - .affineAnims = sBallAffineAnimSequences, + .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_TestBallThrow, }, { @@ -222,7 +222,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .oam = &sBallOamData, .anims = sBallAnimSequences, .images = NULL, - .affineAnims = sBallAffineAnimSequences, + .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_TestBallThrow, }, { @@ -231,7 +231,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .oam = &sBallOamData, .anims = sBallAnimSequences, .images = NULL, - .affineAnims = sBallAffineAnimSequences, + .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_TestBallThrow, }, { @@ -240,7 +240,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .oam = &sBallOamData, .anims = sBallAnimSequences, .images = NULL, - .affineAnims = sBallAffineAnimSequences, + .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_TestBallThrow, }, { @@ -249,7 +249,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .oam = &sBallOamData, .anims = sBallAnimSequences, .images = NULL, - .affineAnims = sBallAffineAnimSequences, + .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_TestBallThrow, }, { @@ -258,7 +258,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .oam = &sBallOamData, .anims = sBallAnimSequences, .images = NULL, - .affineAnims = sBallAffineAnimSequences, + .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_TestBallThrow, }, { @@ -267,7 +267,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .oam = &sBallOamData, .anims = sBallAnimSequences, .images = NULL, - .affineAnims = sBallAffineAnimSequences, + .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_TestBallThrow, }, { @@ -276,7 +276,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .oam = &sBallOamData, .anims = sBallAnimSequences, .images = NULL, - .affineAnims = sBallAffineAnimSequences, + .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_TestBallThrow, }, { @@ -285,7 +285,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .oam = &sBallOamData, .anims = sBallAnimSequences, .images = NULL, - .affineAnims = sBallAffineAnimSequences, + .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_TestBallThrow, }, { @@ -294,7 +294,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .oam = &sBallOamData, .anims = sBallAnimSequences, .images = NULL, - .affineAnims = sBallAffineAnimSequences, + .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_TestBallThrow, }, { @@ -303,7 +303,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .oam = &sBallOamData, .anims = sBallAnimSequences, .images = NULL, - .affineAnims = sBallAffineAnimSequences, + .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_TestBallThrow, }, { @@ -312,7 +312,7 @@ const struct SpriteTemplate gBallSpriteTemplates[POKEBALL_COUNT] = .oam = &sBallOamData, .anims = sBallAnimSequences, .images = NULL, - .affineAnims = sBallAffineAnimSequences, + .affineAnims = sAffineAnim_BallRotate, .callback = SpriteCB_TestBallThrow, }, }; @@ -406,7 +406,7 @@ static void Task_DoPokeballSendOutAnim(u8 taskId) gSprites[ballSpriteId].oam.affineParam = taskId; gTasks[taskId].tOpponentBattler = gBattlerTarget; gTasks[taskId].func = TaskDummy; - PlaySE(SE_NAGERU); + PlaySE(SE_BALL_THROW); } static void SpriteCB_TestBallThrow(struct Sprite *sprite) @@ -446,6 +446,7 @@ static void sub_80756D4(struct Sprite *sprite) sprite->callback = sub_80756E0; } +// Start something for battler static void sub_80756E0(struct Sprite *sprite) { if (++sprite->data[5] == 10) @@ -458,11 +459,12 @@ static void sub_80756E0(struct Sprite *sprite) } } +// Shrink player static void sub_807574C(struct Sprite *sprite) { sprite->data[5]++; if (sprite->data[5] == 11) - PlaySE(SE_SUIKOMU); + PlaySE(SE_BALL_TRADE); if (gSprites[gBattlerSpriteIds[sprite->sBattler]].affineAnimEnded) { StartSpriteAnim(sprite, 2); @@ -512,16 +514,16 @@ static void sub_8075838(struct Sprite *sprite) switch (sprite->data[3] >> 8) { case 1: - PlaySE(SE_KON); + PlaySE(SE_BALL_BOUNCE_1); break; case 2: - PlaySE(SE_KON2); + PlaySE(SE_BALL_BOUNCE_2); break; case 3: - PlaySE(SE_KON3); + PlaySE(SE_BALL_BOUNCE_3); break; default: - PlaySE(SE_KON4); + PlaySE(SE_BALL_BOUNCE_4); break; } } @@ -563,7 +565,7 @@ static void sub_8075930(struct Sprite *sprite) sprite->affineAnimPaused = TRUE; StartSpriteAffineAnim(sprite, 1); sprite->callback = sub_8075970; - PlaySE(SE_BOWA); + PlaySE(SE_BALL); } } @@ -632,7 +634,7 @@ static void sub_8075970(struct Sprite *sprite) StartSpriteAffineAnim(sprite, 2); else StartSpriteAffineAnim(sprite, 1); - PlaySE(SE_BOWA); + PlaySE(SE_BALL); } break; } @@ -738,7 +740,7 @@ static void SpriteCB_ReleaseMonFromBall(struct Sprite *sprite) StartSpriteAnim(sprite, 1); ballId = ItemIdToBallId(GetBattlerPokeballItemId(battlerId)); AnimateBallOpenParticles(sprite->pos1.x, sprite->pos1.y - 5, 1, 0x1C, ballId); - sprite->data[0] = LaunchBallFadeMonTask(1, sprite->sBattler, 14, ballId); + sprite->data[0] = LaunchBallFadeMonTask(TRUE, sprite->sBattler, 14, ballId); sprite->callback = HandleBallAnimEnd; if (gMain.inBattle) @@ -879,7 +881,7 @@ static void sub_80760F8(struct Sprite *sprite) { gDoingBattleAnim = FALSE; m4aMPlayAllStop(); - PlaySE(MUS_FANFA5); + PlaySE(MUS_EVOLVED); } else if (sprite->data[4] == 315) { @@ -1148,7 +1150,7 @@ static void sub_807687C(struct Sprite *sprite) sprite->data[5]++; if (sprite->data[5] == 11) - PlaySE(SE_SUIKOMU); + PlaySE(SE_BALL_TRADE); r1 = sprite->data[0]; if (gSprites[r1].affineAnimEnded) { diff --git a/src/pokeblock.c b/src/pokeblock.c index 1020f700f..fc5451b0a 100644 --- a/src/pokeblock.c +++ b/src/pokeblock.c @@ -180,21 +180,21 @@ static const struct BgTemplate sBgTemplatesForPokeblockMenu[] = const u8 *const gPokeblockNames[] = { - NULL, - gText_RedPokeblock, - gText_BluePokeblock, - gText_PinkPokeblock, - gText_GreenPokeblock, - gText_YellowPokeblock, - gText_PurplePokeblock, - gText_IndigoPokeblock, - gText_BrownPokeblock, - gText_LiteBluePokeblock, - gText_OlivePokeblock, - gText_GrayPokeblock, - gText_BlackPokeblock, - gText_WhitePokeblock, - gText_GoldPokeblock + [PBLOCK_CLR_NONE] = NULL, + [PBLOCK_CLR_RED] = gText_RedPokeblock, + [PBLOCK_CLR_BLUE] = gText_BluePokeblock, + [PBLOCK_CLR_PINK] = gText_PinkPokeblock, + [PBLOCK_CLR_GREEN] = gText_GreenPokeblock, + [PBLOCK_CLR_YELLOW] = gText_YellowPokeblock, + [PBLOCK_CLR_PURPLE] = gText_PurplePokeblock, + [PBLOCK_CLR_INDIGO] = gText_IndigoPokeblock, + [PBLOCK_CLR_BROWN] = gText_BrownPokeblock, + [PBLOCK_CLR_LITE_BLUE] = gText_LiteBluePokeblock, + [PBLOCK_CLR_OLIVE] = gText_OlivePokeblock, + [PBLOCK_CLR_GRAY] = gText_GrayPokeblock, + [PBLOCK_CLR_BLACK] = gText_BlackPokeblock, + [PBLOCK_CLR_WHITE] = gText_WhitePokeblock, + [PBLOCK_CLR_GOLD] = gText_GoldPokeblock }; static const struct MenuAction sPokeblockMenuActions[] = @@ -726,7 +726,7 @@ static void PutPokeblockListMenuString(u8 *dst, u16 pkblId) *(txtPtr++) = EXT_CTRL_CODE_BEGIN; *(txtPtr++) = EXT_CTRL_CODE_SKIP; - *(txtPtr++) = 87; + *(txtPtr++) = CHAR_BLOCK_1; ConvertIntToDecimalStringN(gStringVar1, GetHighestPokeblocksFlavorLevel(pkblock), STR_CONV_MODE_LEFT_ALIGN, 3); StringExpandPlaceholders(txtPtr, gText_LvVar1); @@ -804,7 +804,7 @@ static void CompactPokeblockSlots(void) { for (j = i + 1; j < POKEBLOCKS_COUNT; j++) { - if (gSaveBlock1Ptr->pokeblocks[i].color == 0) + if (gSaveBlock1Ptr->pokeblocks[i].color == PBLOCK_CLR_NONE) { struct Pokeblock temp = gSaveBlock1Ptr->pokeblocks[i]; gSaveBlock1Ptr->pokeblocks[i] = gSaveBlock1Ptr->pokeblocks[j]; @@ -856,7 +856,7 @@ static void SetMenuItemsCountAndMaxShowed(void) for (sPokeblockMenu->itemsNo = 0, i = 0; i < POKEBLOCKS_COUNT; i++) { - if (gSaveBlock1Ptr->pokeblocks[i].color != 0) + if (gSaveBlock1Ptr->pokeblocks[i].color != PBLOCK_CLR_NONE) sPokeblockMenu->itemsNo++; } @@ -1322,7 +1322,7 @@ s8 GetFirstFreePokeblockSlot(void) for (i = 0; i < POKEBLOCKS_COUNT; i++) { - if (gSaveBlock1Ptr->pokeblocks[i].color == 0) + if (gSaveBlock1Ptr->pokeblocks[i].color == PBLOCK_CLR_NONE) return i; } @@ -1346,7 +1346,7 @@ bool32 AddPokeblock(const struct Pokeblock *pokeblock) bool32 TryClearPokeblock(u8 pkblId) { - if (gSaveBlock1Ptr->pokeblocks[pkblId].color == 0) + if (gSaveBlock1Ptr->pokeblocks[pkblId].color == PBLOCK_CLR_NONE) { return FALSE; } diff --git a/src/pokeblock_feed.c b/src/pokeblock_feed.c index e15a005e6..797771f80 100644 --- a/src/pokeblock_feed.c +++ b/src/pokeblock_feed.c @@ -382,22 +382,23 @@ static const struct WindowTemplate sWindowTemplates[] = DUMMY_WIN_TEMPLATE }; +// - 1 excludes PBLOCK_CLR_NONE static const u32* const sPokeblocksPals[] = { - gPokeblockRed_Pal, - gPokeblockBlue_Pal, - gPokeblockPink_Pal, - gPokeblockGreen_Pal, - gPokeblockYellow_Pal, - gPokeblockPurple_Pal, - gPokeblockIndigo_Pal, - gPokeblockBrown_Pal, - gPokeblockLiteBlue_Pal, - gPokeblockOlive_Pal, - gPokeblockGray_Pal, - gPokeblockBlack_Pal, - gPokeblockWhite_Pal, - gPokeblockGold_Pal + [PBLOCK_CLR_RED - 1] = gPokeblockRed_Pal, + [PBLOCK_CLR_BLUE - 1] = gPokeblockBlue_Pal, + [PBLOCK_CLR_PINK - 1] = gPokeblockPink_Pal, + [PBLOCK_CLR_GREEN - 1] = gPokeblockGreen_Pal, + [PBLOCK_CLR_YELLOW - 1] = gPokeblockYellow_Pal, + [PBLOCK_CLR_PURPLE - 1] = gPokeblockPurple_Pal, + [PBLOCK_CLR_INDIGO - 1] = gPokeblockIndigo_Pal, + [PBLOCK_CLR_BROWN - 1] = gPokeblockBrown_Pal, + [PBLOCK_CLR_LITE_BLUE - 1] = gPokeblockLiteBlue_Pal, + [PBLOCK_CLR_OLIVE - 1] = gPokeblockOlive_Pal, + [PBLOCK_CLR_GRAY - 1] = gPokeblockGray_Pal, + [PBLOCK_CLR_BLACK - 1] = gPokeblockBlack_Pal, + [PBLOCK_CLR_WHITE - 1] = gPokeblockWhite_Pal, + [PBLOCK_CLR_GOLD - 1] = gPokeblockGold_Pal }; static const union AffineAnimCmd sSpriteAffineAnim_84120DC[] = diff --git a/src/pokedex.c b/src/pokedex.c index c40cae9dc..458d6c94b 100644 --- a/src/pokedex.c +++ b/src/pokedex.c @@ -1959,7 +1959,7 @@ static void Task_HandleSearchResultsStartMenuInput(u8 taskId) case 3: //BACK TO POKEDEX BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); gTasks[taskId].func = Task_ReturnToPokedexFromSearchResults; - PlaySE(SE_TRACK_DOOR); + PlaySE(SE_TRUCK_DOOR); break; case 4: //CLOSE POKEDEX BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 0x10, RGB_BLACK); @@ -2596,7 +2596,7 @@ static u16 TryDoPokedexScroll(u16 selectedMon, u16 ignored) selectedMon = GetNextPosition(1, selectedMon, 0, sPokedexView->pokemonListCount - 1); CreateScrollingPokemonSprite(1, selectedMon); CreateMonListEntry(1, selectedMon, ignored); - PlaySE(SE_Z_SCROLL); + PlaySE(SE_DEX_SCROLL); } else if ((gMain.heldKeys & DPAD_DOWN) && (selectedMon < sPokedexView->pokemonListCount - 1)) { @@ -2604,7 +2604,7 @@ static u16 TryDoPokedexScroll(u16 selectedMon, u16 ignored) selectedMon = GetNextPosition(0, selectedMon, 0, sPokedexView->pokemonListCount - 1); CreateScrollingPokemonSprite(2, selectedMon); CreateMonListEntry(2, selectedMon, ignored); - PlaySE(SE_Z_SCROLL); + PlaySE(SE_DEX_SCROLL); } else if ((gMain.newKeys & DPAD_LEFT) && (selectedMon > 0)) { @@ -2615,7 +2615,7 @@ static u16 TryDoPokedexScroll(u16 selectedMon, u16 ignored) sPokedexView->pokeBallRotation += 16 * (selectedMon - startingPos); ClearMonSprites(); CreateMonSpritesAtPos(selectedMon, 0xE); - PlaySE(SE_Z_PAGE); + PlaySE(SE_DEX_PAGE); } else if ((gMain.newKeys & DPAD_RIGHT) && (selectedMon < sPokedexView->pokemonListCount - 1)) { @@ -2625,7 +2625,7 @@ static u16 TryDoPokedexScroll(u16 selectedMon, u16 ignored) sPokedexView->pokeBallRotation += 16 * (selectedMon - startingPos); ClearMonSprites(); CreateMonSpritesAtPos(selectedMon, 0xE); - PlaySE(SE_Z_PAGE); + PlaySE(SE_DEX_PAGE); } if (scrollDir == 0) @@ -3353,7 +3353,7 @@ static void Task_HandleInfoScreenInput(u8 taskId) // Scroll up/down BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK); gTasks[taskId].func = Task_LoadInfoScreenWaitForFade; - PlaySE(SE_Z_SCROLL); + PlaySE(SE_DEX_SCROLL); return; } if (gMain.newKeys & B_BUTTON) @@ -3382,7 +3382,7 @@ static void Task_HandleInfoScreenInput(u8 taskId) case SIZE_SCREEN: if (!sPokedexListItem->owned) { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); } else { @@ -3406,7 +3406,7 @@ static void Task_HandleInfoScreenInput(u8 taskId) { sPokedexView->selectedScreen--; HighlightScreenSelectBarItem(sPokedexView->selectedScreen, 0xD); - PlaySE(SE_Z_PAGE); + PlaySE(SE_DEX_PAGE); return; } if (((gMain.newKeys & DPAD_RIGHT) @@ -3415,7 +3415,7 @@ static void Task_HandleInfoScreenInput(u8 taskId) { sPokedexView->selectedScreen++; HighlightScreenSelectBarItem(sPokedexView->selectedScreen, 0xD); - PlaySE(SE_Z_PAGE); + PlaySE(SE_DEX_PAGE); return; } } @@ -3654,7 +3654,7 @@ static void Task_HandleCryScreenInput(u8 taskId) m4aMPlayContinue(&gMPlayInfo_BGM); sPokedexView->screenSwitchState = 2; gTasks[taskId].func = Task_SwitchScreensFromCryScreen; - PlaySE(SE_Z_PAGE); + PlaySE(SE_DEX_PAGE); return; } if ((gMain.newKeys & DPAD_RIGHT) @@ -3662,7 +3662,7 @@ static void Task_HandleCryScreenInput(u8 taskId) { if (!sPokedexListItem->owned) { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); } else { @@ -3670,7 +3670,7 @@ static void Task_HandleCryScreenInput(u8 taskId) m4aMPlayContinue(&gMPlayInfo_BGM); sPokedexView->screenSwitchState = 3; gTasks[taskId].func = Task_SwitchScreensFromCryScreen; - PlaySE(SE_Z_PAGE); + PlaySE(SE_DEX_PAGE); } return; } @@ -3823,7 +3823,7 @@ static void Task_HandleSizeScreenInput(u8 taskId) BeginNormalPaletteFade(0xFFFFFFEB, 0, 0, 0x10, RGB_BLACK); sPokedexView->screenSwitchState = 2; gTasks[taskId].func = Task_SwitchScreensFromSizeScreen; - PlaySE(SE_Z_PAGE); + PlaySE(SE_DEX_PAGE); } } @@ -4936,7 +4936,7 @@ static void Task_HandleSearchTopBarInput(u8 taskId) } if ((gMain.newKeys & DPAD_LEFT) && gTasks[taskId].tTopBarItem > SEARCH_TOPBAR_SEARCH) { - PlaySE(SE_Z_PAGE); + PlaySE(SE_DEX_PAGE); gTasks[taskId].tTopBarItem--; HighlightSelectedSearchTopBarItem(gTasks[taskId].tTopBarItem); CopyWindowToVram(0, 2); @@ -4944,7 +4944,7 @@ static void Task_HandleSearchTopBarInput(u8 taskId) } if ((gMain.newKeys & DPAD_RIGHT) && gTasks[taskId].tTopBarItem < SEARCH_TOPBAR_CANCEL) { - PlaySE(SE_Z_PAGE); + PlaySE(SE_DEX_PAGE); gTasks[taskId].tTopBarItem++; HighlightSelectedSearchTopBarItem(gTasks[taskId].tTopBarItem); CopyWindowToVram(0, 2); @@ -4983,7 +4983,7 @@ static void Task_HandleSearchMenuInput(u8 taskId) if (gMain.newKeys & B_BUTTON) { - PlaySE(SE_BOWA); + PlaySE(SE_BALL); SetDefaultSearchModeAndOrder(taskId); gTasks[taskId].func = Task_SwitchToSearchMenuTopBar; return; @@ -5011,7 +5011,7 @@ static void Task_HandleSearchMenuInput(u8 taskId) { EraseAndPrintSearchTextBox(gText_SearchingPleaseWait); gTasks[taskId].func = Task_StartPokedexSearch; - PlaySE(SE_Z_SEARCH); + PlaySE(SE_DEX_SEARCH); CopyWindowToVram(0, 2); } } @@ -5076,12 +5076,12 @@ static void Task_WaitAndCompleteSearch(u8 taskId) { if (sPokedexView->pokemonListCount != 0) { - PlaySE(SE_SEIKAI); + PlaySE(SE_SUCCESS); EraseAndPrintSearchTextBox(gText_SearchCompleted); } else { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); EraseAndPrintSearchTextBox(gText_NoMatchingPkmnWereFound); } gTasks[taskId].func = Task_SearchCompleteWaitForInput; @@ -5105,7 +5105,7 @@ static void Task_SearchCompleteWaitForInput(u8 taskId) else { gTasks[taskId].func = Task_SwitchToSearchMenu; - PlaySE(SE_BOWA); + PlaySE(SE_BALL); } } } @@ -5156,7 +5156,7 @@ static void Task_HandleSearchParameterInput(u8 taskId) } if (gMain.newKeys & B_BUTTON) { - PlaySE(SE_BOWA); + PlaySE(SE_BALL); ClearSearchParameterBoxText(); DrawOrEraseSearchParameterBox(TRUE); *cursorPos = gTasks[taskId].tCursorPos; diff --git a/src/pokedex_area_screen.c b/src/pokedex_area_screen.c index 0232d4fc4..8450f8530 100755 --- a/src/pokedex_area_screen.c +++ b/src/pokedex_area_screen.c @@ -732,7 +732,7 @@ static void Task_HandlePokedexAreaScreenInput(u8 taskId) else if (gMain.newKeys & DPAD_RIGHT || (gMain.newKeys & R_BUTTON && gSaveBlock2Ptr->optionsButtonMode == OPTIONS_BUTTON_MODE_LR)) { gTasks[taskId].data[1] = 2; - PlaySE(SE_Z_PAGE); + PlaySE(SE_DEX_PAGE); } else return; diff --git a/src/pokemon.c b/src/pokemon.c index 690f83bb1..188624d6a 100644 --- a/src/pokemon.c +++ b/src/pokemon.c @@ -1898,22 +1898,22 @@ static const u16 sDeoxysBaseStats[] = const u16 gLinkPlayerFacilityClasses[NUM_MALE_LINK_FACILITY_CLASSES + NUM_FEMALE_LINK_FACILITY_CLASSES] = { // Male classes - FACILITY_CLASS_COOLTRAINER_M, - FACILITY_CLASS_BLACK_BELT, + FACILITY_CLASS_COOLTRAINER_M, + FACILITY_CLASS_BLACK_BELT, FACILITY_CLASS_CAMPER, - FACILITY_CLASS_YOUNGSTER, - FACILITY_CLASS_PSYCHIC_M, + FACILITY_CLASS_YOUNGSTER, + FACILITY_CLASS_PSYCHIC_M, FACILITY_CLASS_BUG_CATCHER, - FACILITY_CLASS_PKMN_BREEDER_M, + FACILITY_CLASS_PKMN_BREEDER_M, FACILITY_CLASS_GUITARIST, // Female Classes - FACILITY_CLASS_COOLTRAINER_F, - FACILITY_CLASS_HEX_MANIAC, + FACILITY_CLASS_COOLTRAINER_F, + FACILITY_CLASS_HEX_MANIAC, FACILITY_CLASS_PICNICKER, - FACILITY_CLASS_LASS, - FACILITY_CLASS_PSYCHIC_F, + FACILITY_CLASS_LASS, + FACILITY_CLASS_PSYCHIC_F, FACILITY_CLASS_BATTLE_GIRL, - FACILITY_CLASS_PKMN_BREEDER_F, + FACILITY_CLASS_PKMN_BREEDER_F, FACILITY_CLASS_BEAUTY }; @@ -5806,7 +5806,7 @@ void AdjustFriendship(struct Pokemon *mon, u8 event) if (friendship > 199) friendshipLevel++; - if ((event != FRIENDSHIP_EVENT_WALKING || !(Random() & 1)) + if ((event != FRIENDSHIP_EVENT_WALKING || !(Random() & 1)) && (event != FRIENDSHIP_EVENT_LEAGUE_BATTLE || IS_LEAGUE_BATTLE)) { s8 mod = sFriendshipEventModifiers[event][friendshipLevel]; @@ -5848,7 +5848,7 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies) { if (totalEVs >= MAX_TOTAL_EVS) break; - + if (CheckPartyHasHadPokerus(mon, 0)) multiplier = 2; else @@ -5895,9 +5895,9 @@ void MonGainEVs(struct Pokemon *mon, u16 defeatedSpecies) if (totalEVs + (s16)evIncrease > MAX_TOTAL_EVS) evIncrease = ((s16)evIncrease + MAX_TOTAL_EVS) - (totalEVs + evIncrease); - if (evs[i] + (s16)evIncrease > 255) + if (evs[i] + (s16)evIncrease > MAX_PER_STAT_EVS) { - int val1 = (s16)evIncrease + 255; + int val1 = (s16)evIncrease + MAX_PER_STAT_EVS; int val2 = evs[i] + evIncrease; evIncrease = val1 - val2; } @@ -6138,7 +6138,7 @@ u8 GetMoveRelearnerMoves(struct Pokemon *mon, u16 *moves) for (i = 0; i < MAX_MON_MOVES; i++) learnedMoves[i] = GetMonData(mon, MON_DATA_MOVE1 + i, 0); - for (i = 0; i < 20; i++) + for (i = 0; i < MAX_LEVEL_UP_MOVES; i++) { u16 moveLevel; @@ -6171,7 +6171,7 @@ u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves) u8 numMoves = 0; int i; - for (i = 0; i < 20 && gLevelUpLearnsets[species][i] != LEVEL_UP_END; i++) + for (i = 0; i < MAX_LEVEL_UP_MOVES && gLevelUpLearnsets[species][i] != LEVEL_UP_END; i++) moves[numMoves++] = gLevelUpLearnsets[species][i] & LEVEL_UP_MOVE_ID; return numMoves; @@ -6180,7 +6180,7 @@ u8 GetLevelUpMovesBySpecies(u16 species, u16 *moves) u8 GetNumberOfRelearnableMoves(struct Pokemon *mon) { u16 learnedMoves[MAX_MON_MOVES]; - u16 moves[20]; + u16 moves[MAX_LEVEL_UP_MOVES]; u8 numMoves = 0; u16 species = GetMonData(mon, MON_DATA_SPECIES2, 0); u8 level = GetMonData(mon, MON_DATA_LEVEL, 0); @@ -6192,7 +6192,7 @@ u8 GetNumberOfRelearnableMoves(struct Pokemon *mon) for (i = 0; i < MAX_MON_MOVES; i++) learnedMoves[i] = GetMonData(mon, MON_DATA_MOVE1 + i, 0); - for (i = 0; i < 20; i++) + for (i = 0; i < MAX_LEVEL_UP_MOVES; i++) { u16 moveLevel; @@ -6253,11 +6253,11 @@ void ClearBattleMonForms(void) u16 GetBattleBGM(void) { if (gBattleTypeFlags & BATTLE_TYPE_KYOGRE_GROUDON) - return MUS_BATTLE34; + return MUS_VS_KYOGRE_GROUDON; else if (gBattleTypeFlags & BATTLE_TYPE_REGI) - return MUS_BATTLE36; + return MUS_VS_REGI; else if (gBattleTypeFlags & (BATTLE_TYPE_LINK | BATTLE_TYPE_x2000000)) - return MUS_BATTLE20; + return MUS_VS_TRAINER; else if (gBattleTypeFlags & BATTLE_TYPE_TRAINER) { u8 trainerClass; @@ -6273,24 +6273,24 @@ u16 GetBattleBGM(void) { case TRAINER_CLASS_AQUA_LEADER: case TRAINER_CLASS_MAGMA_LEADER: - return MUS_BATTLE30; + return MUS_VS_AQUA_MAGMA_LEADER; case TRAINER_CLASS_TEAM_AQUA: case TRAINER_CLASS_TEAM_MAGMA: case TRAINER_CLASS_AQUA_ADMIN: case TRAINER_CLASS_MAGMA_ADMIN: - return MUS_BATTLE31; + return MUS_VS_AQUA_MAGMA; case TRAINER_CLASS_LEADER: - return MUS_BATTLE32; + return MUS_VS_GYM_LEADER; case TRAINER_CLASS_CHAMPION: - return MUS_BATTLE33; + return MUS_VS_CHAMPION; case TRAINER_CLASS_PKMN_TRAINER_3: if (gBattleTypeFlags & BATTLE_TYPE_FRONTIER) - return MUS_BATTLE35; + return MUS_VS_RIVAL; if (!StringCompare(gTrainers[gTrainerBattleOpponent_A].trainerName, gText_BattleWallyName)) - return MUS_BATTLE20; - return MUS_BATTLE35; + return MUS_VS_TRAINER; + return MUS_VS_RIVAL; case TRAINER_CLASS_ELITE_FOUR: - return MUS_BATTLE38; + return MUS_VS_ELITE_FOUR; case TRAINER_CLASS_SALON_MAIDEN: case TRAINER_CLASS_DOME_ACE: case TRAINER_CLASS_PALACE_MAVEN: @@ -6298,13 +6298,13 @@ u16 GetBattleBGM(void) case TRAINER_CLASS_FACTORY_HEAD: case TRAINER_CLASS_PIKE_QUEEN: case TRAINER_CLASS_PYRAMID_KING: - return MUS_VS_FRONT; + return MUS_VS_FRONTIER_BRAIN; default: - return MUS_BATTLE20; + return MUS_VS_TRAINER; } } else - return MUS_BATTLE27; + return MUS_VS_WILD; } void PlayBattleBGM(void) diff --git a/src/pokemon_jump.c b/src/pokemon_jump.c index e86b937a2..07f6bc54b 100755 --- a/src/pokemon_jump.c +++ b/src/pokemon_jump.c @@ -576,7 +576,7 @@ static void sub_802ACA0(u8 taskId) case 2: if (!sub_802D0F0() && IsNotWaitingForBGMStop() == TRUE) { - FadeOutAndPlayNewMapMusic(MUS_RG_JUMP, 8); + FadeOutAndPlayNewMapMusic(MUS_RG_POKE_JUMP, 8); gUnknown_02022CFC->unk8++; } break; @@ -1721,7 +1721,7 @@ static void sub_802C1BC(void) gUnknown_02022CFC->unk83AC->unk10 = 0; } -static const u16 gUnknown_082FB654[] = {SE_REGI, SE_REAPOKE, SE_W234, SE_RG_EXCELLENT}; +static const u16 gUnknown_082FB654[] = {SE_SHOP, SE_SHINY, SE_M_MORNING_SUN, SE_RG_POKE_JUMP_SUCCESS}; static void sub_802C1DC(void) { @@ -1798,9 +1798,9 @@ static void sub_802C280(void) } if (whichSound & 0x2) - PlaySE(SE_RG_NAWAMISS); + PlaySE(SE_RG_POKE_JUMP_FAILURE); else if (whichSound & 0x1) - PlaySE(SE_DANSA); + PlaySE(SE_LEDGE); } static const s8 gUnknown_082FB65C[][48] = @@ -2702,7 +2702,7 @@ static void sub_802CDD4(struct Sprite *sprite) switch (sprite->data[0]) { case 0: - PlaySE(SE_JITE_PYOKO); + PlaySE(SE_BIKE_HOP); sprite->data[1] = 0; sprite->data[0]++; // fall through @@ -3275,7 +3275,7 @@ static void sub_802D7E8(u16 itemId, u16 quantity) gUnknown_02022D00->unk12 = sub_802DA9C(4, 8, 22, 4); AddTextPrinterParameterized(gUnknown_02022D00->unk12, 1, gUnknown_02022D00->strBuff, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(gUnknown_02022D00->unk12, 2); - gUnknown_02022D00->unk14 = MUS_FANFA1; + gUnknown_02022D00->unk14 = MUS_LEVEL_UP; gUnknown_02022D00->unkD = 0; } @@ -3684,14 +3684,14 @@ static void sub_802E0AC(struct PokemonJump1_MonInfo *arg0) packet.species = arg0->species, packet.otId = arg0->otId, packet.personality = arg0->personality, - sub_800FE50(&packet); + Rfu_SendPacket(&packet); } static bool32 sub_802E0D0(int multiplayerId, struct PokemonJump1_MonInfo *arg0) { struct MonInfoPacket packet; - if ((gRecvCmds[multiplayerId][0] & 0xFF00) != 0x2F00) + if ((gRecvCmds[multiplayerId][0] & 0xFF00) != RFUCMD_SEND_PACKET) return FALSE; memcpy(&packet, &gRecvCmds[multiplayerId][1], sizeof(packet)); @@ -3718,7 +3718,7 @@ static void sub_802E120(u32 arg0) struct UnkPacket2 packet; packet.id = 2; packet.unk4 = arg0; - sub_800FE50(&packet); + Rfu_SendPacket(&packet); } struct UnkPacket3 @@ -3746,14 +3746,14 @@ static void sub_802E138(struct PokemonJump1_82E4 *arg0, struct PokemonJump1Sub * packet.unk2 = arg0->unk10; packet.unk3_1 = arg0->unk14; packet.unk4 = arg0->unkE; - sub_800FE50(&packet); + Rfu_SendPacket(&packet); } static bool32 sub_802E1BC(struct PokemonJump1_82E4 *arg0, struct PokemonJump1Sub *arg1) { struct UnkPacket3 packet; - if ((gRecvCmds[0][0] & 0xFF00) != 0x2F00) + if ((gRecvCmds[0][0] & 0xFF00) != RFUCMD_SEND_PACKET) return FALSE; memcpy(&packet, &gRecvCmds[0][1], sizeof(packet)); @@ -3792,14 +3792,14 @@ static void sub_802E234(struct PokemonJump1_82E4 *arg0, u8 arg1, u16 arg2) packet.unk4 = arg0->unkE; packet.unk6 = arg1; packet.unk8 = arg2; - sub_800FE50(&packet); + Rfu_SendPacket(&packet); } static bool32 sub_802E264(struct PokemonJump1_82E4 *arg0, int multiplayerId, u8 *arg2, u16 *arg3) { struct UnkPacket4 packet; - if ((gRecvCmds[multiplayerId][0] & 0xFF00) != 0x2F00) + if ((gRecvCmds[multiplayerId][0] & 0xFF00) != RFUCMD_SEND_PACKET) return FALSE; memcpy(&packet, &gRecvCmds[multiplayerId][1], sizeof(packet)); @@ -3819,7 +3819,7 @@ static bool32 sub_802E2D0(struct PokemonJump1_82E4 *arg0, int multiplayerId) { struct UnkPacket4 packet; - if ((gRecvCmds[multiplayerId][0] & 0xFF00) != 0x2F00) + if ((gRecvCmds[multiplayerId][0] & 0xFF00) != RFUCMD_SEND_PACKET) return FALSE; memcpy(&packet, &gRecvCmds[multiplayerId][1], sizeof(packet)); diff --git a/src/pokemon_storage_system.c b/src/pokemon_storage_system.c index 905bbca9a..fcca744c2 100644 --- a/src/pokemon_storage_system.c +++ b/src/pokemon_storage_system.c @@ -2576,7 +2576,7 @@ static void Cb_MainPSS(u8 taskId) sPSSData->state = 7; break; case 24: - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); break; } break; @@ -2622,12 +2622,12 @@ static void Cb_MainPSS(u8 taskId) } break; case 4: - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); PrintStorageActionText(PC_TEXT_LAST_POKE); sPSSData->state = 6; break; case 5: - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); sPSSData->state = 6; break; @@ -2843,17 +2843,17 @@ static void Cb_OnSelectedMon(u8 taskId) } break; case 3: - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); PrintStorageActionText(PC_TEXT_LAST_POKE); sPSSData->state = 6; break; case 5: - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); PrintStorageActionText(PC_TEXT_CANT_RELEASE_EGG); sPSSData->state = 6; break; case 4: - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); PrintStorageActionText(PC_TEXT_PLEASE_REMOVE_MAIL); sPSSData->state = 6; break; @@ -3277,7 +3277,7 @@ static void Cb_ItemToBag(u8 taskId) case 0: if (!AddBagItem(sPSSData->cursorMonItem, 1)) { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); PrintStorageActionText(PC_TEXT_BAG_FULL); sPSSData->state = 3; } @@ -3742,7 +3742,7 @@ static void Cb_OnCloseBoxPressed(u8 taskId) case 0: if (IsMonBeingMoved()) { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); PrintStorageActionText(PC_TEXT_HOLDING_POKE); sPSSData->state = 1; } @@ -3803,7 +3803,7 @@ static void Cb_OnBPressed(u8 taskId) case 0: if (IsMonBeingMoved()) { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); PrintStorageActionText(PC_TEXT_HOLDING_POKE); sPSSData->state = 1; } diff --git a/src/pokemon_summary_screen.c b/src/pokemon_summary_screen.c index 2e7995222..d016c455c 100644 --- a/src/pokemon_summary_screen.c +++ b/src/pokemon_summary_screen.c @@ -1903,7 +1903,7 @@ static void Task_HandleInput_MoveSelect(u8 taskId) } else { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); } } else if (gMain.newKeys & B_BUTTON) @@ -2191,7 +2191,7 @@ static void Task_HandleReplaceMoveInput(u8 taskId) } else { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); ShowCantForgetHMsWindow(taskId); } } diff --git a/src/pokenav_main_menu.c b/src/pokenav_main_menu.c index d9aae7e4e..155e30939 100644 --- a/src/pokenav_main_menu.c +++ b/src/pokenav_main_menu.c @@ -312,7 +312,7 @@ u32 PokenavMainMenuLoopedTaskIsActive(void) void ShutdownPokenav(void) { - PlaySE(SE_PN_OFF); + PlaySE(SE_POKENAV_OFF); sub_81CAADC(); BeginNormalPaletteFade(0xFFFFFFFF, -1, 0, 16, RGB_BLACK); } diff --git a/src/pokenav_match_call_1.c b/src/pokenav_match_call_1.c index 1e4239bbc..265259394 100755 --- a/src/pokenav_match_call_1.c +++ b/src/pokenav_match_call_1.c @@ -118,7 +118,7 @@ static u32 CB2_HandleMatchCallInput(struct Pokenav3Struct *state) else { // Cant exit Match Call menu before calling Mr Stone during tutorial - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); } } diff --git a/src/pokenav_match_call_2.c b/src/pokenav_match_call_2.c index d03bad88b..60091577e 100755 --- a/src/pokenav_match_call_2.c +++ b/src/pokenav_match_call_2.c @@ -601,7 +601,7 @@ u32 DoMatchCallMessage(s32 taskState) return LT_PAUSE; PrintCallingDots(state); - PlaySE(SE_TOREEYE); + PlaySE(SE_POKENAV_CALL); state->unkE = 0; return LT_INC_AND_PAUSE; case 2: @@ -654,7 +654,7 @@ u32 sub_81CB888(s32 taskState) { case 0: if (!state->unkE) - PlaySE(SE_TOREOFF); + PlaySE(SE_POKENAV_HANG_UP); PlaySE(SE_SELECT); break; diff --git a/src/pokenav_menu_handler_1.c b/src/pokenav_menu_handler_1.c index bd33a21af..d8d8e1509 100644 --- a/src/pokenav_menu_handler_1.c +++ b/src/pokenav_menu_handler_1.c @@ -273,14 +273,14 @@ static u32 HandleMainMenuInputTutorial(struct Pokenav1Struct *state) } else { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); return POKENAV_MENU_FUNC_NONE; } } if (gMain.newKeys & B_BUTTON) { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); return POKENAV_MENU_FUNC_NONE; } @@ -298,7 +298,7 @@ static u32 HandleMainMenuInputEndTutorial(struct Pokenav1Struct *state) u32 menuItem = sMenuItems[state->menuType][state->cursorPos]; if (menuItem != POKENAV_MENUITEM_MATCH_CALL && menuItem != POKENAV_MENUITEM_SWITCH_OFF) { - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); return POKENAV_MENU_FUNC_NONE; } else if (menuItem == POKENAV_MENUITEM_MATCH_CALL) diff --git a/src/pokenav_menu_handler_2.c b/src/pokenav_menu_handler_2.c index 86ad8c744..2be92013f 100644 --- a/src/pokenav_menu_handler_2.c +++ b/src/pokenav_menu_handler_2.c @@ -465,7 +465,7 @@ static u32 LoopedTask_OpenMenu(s32 state) PokenavFadeScreen(1); else { - PlaySE(SE_PN_ON); + PlaySE(SE_POKENAV_ON); PokenavFadeScreen(3); } switch (GetPokenavMenuType()) @@ -675,7 +675,7 @@ static u32 LoopedTask_SelectRibbonsNoWinners(s32 state) switch (state) { case 0: - PlaySE(SE_HAZURE); + PlaySE(SE_FAILURE); PrintNoRibbonWinners(); return LT_INC_AND_PAUSE; case 1: diff --git a/src/rayquaza_scene.c b/src/rayquaza_scene.c index 986a2d3a2..f47ab5e89 100644 --- a/src/rayquaza_scene.c +++ b/src/rayquaza_scene.c @@ -1565,7 +1565,7 @@ static void Task_DuoFightAnim(u8 taskId) BlendPalettes(-1, 0x10, 0); BeginNormalPaletteFade(0xFFFFFFFF, 0, 0x10, 0, RGB_BLACK); SetVBlankCallback(VBlankCB_DuoFight); - PlaySE(SE_T_OOAME); + PlaySE(SE_DOWNPOUR); } static void sub_81D7228(u8 taskId) @@ -1670,14 +1670,14 @@ static void Task_HandleDuoFight(u8 taskId) static void sub_81D7438(void) { - PlaySE(SE_T_KAMI); + PlaySE(SE_THUNDER); sub_80A2C44(0x7FFF, 0, 0x10, 0, -1, 0, 0); sub_80A2C44(0xFFFF0000, 0, 0x10, 0, 0, 0, 1); } static void sub_81D7480(void) { - PlaySE(SE_T_KAMI); + PlaySE(SE_THUNDER); sub_80A2C44(0x7FFF, 0, 0x10, 0x10, -1, 0, 0); sub_80A2C44(0xFFFF0000, 0, 0x10, 0x10, 0, 0, 1); } @@ -1714,7 +1714,7 @@ static void sub_81D752C(u8 taskId) static void DuoFightEnd(u8 taskId, s8 palDelay) { - PlaySE(SE_T_OOAME_E); + PlaySE(SE_DOWNPOUR_STOP); BeginNormalPaletteFade(0xFFFFFFFF, palDelay, 0, 0x10, RGB_BLACK); gTasks[taskId].func = Task_DuoFightEnd; } @@ -1950,7 +1950,7 @@ static void sub_81D7E9C(void) static void Task_RayTakesFlightAnim(u8 taskId) { s16 *data = gTasks[taskId].data; - PlayNewMapMusic(MUS_REKKUU_KOURIN); + PlayNewMapMusic(MUS_RAYQUAZA_APPEARS); sub_81D7E10(); sub_81D7E9C(); SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_TGT1_OBJ | BLDCNT_TGT2_BG1 | BLDCNT_EFFECT_BLEND); @@ -2358,7 +2358,7 @@ static void Task_HandleRayCharges(u8 taskId) s16 *data = gTasks[taskId].data; sub_81D8BB4(); if ((data[3] & 7) == 0 && data[0] <= 1 && data[1] <= 89) - PlaySE(SE_OP_BASYU); + PlaySE(SE_INTRO_BLAST); data[3]++; switch (data[0]) @@ -2777,7 +2777,7 @@ static void sub_81D9528(struct Sprite *sprite) } if (sprite->data[4] % 64 == 0) - PlaySE(SE_W250); + PlaySE(SE_M_WHIRLPOOL); sprite->data[4]++; } @@ -2802,7 +2802,7 @@ static void sub_81D961C(struct Sprite *sprite) { sub_81D97E0(sprite); if (sprite->data[4] == 0) - PlaySE(SE_BT_START); + PlaySE(SE_MUGSHOT); if (sprite->data[4] == -3) sub_81D9868(sprite, 2, 48, 16); } @@ -2900,7 +2900,7 @@ static void sub_81D98B4(u8 taskId) break; case 1: if (data[5] == 8) - PlaySE(SE_JIDO_DOA); + PlaySE(SE_SLIDING_DOOR); if (data[2] == 2) { data[0]++; diff --git a/src/record_mixing.c b/src/record_mixing.c index 128e40163..6c0a02d8c 100644 --- a/src/record_mixing.c +++ b/src/record_mixing.c @@ -302,7 +302,7 @@ static void Task_RecordMixing_SoundEffect(u8 taskId) { if (++gTasks[taskId].tCounter == 50) { - PlaySE(SE_W213); + PlaySE(SE_M_ATTRACT); gTasks[taskId].tCounter = 0; } } @@ -343,7 +343,7 @@ static void Task_RecordMixing_Main(u8 taskId) case 2: data[10] = CreateTask(Task_DoRecordMixing, 10); tState = 3; - PlaySE(SE_W226); + PlaySE(SE_M_BATON_PASS); break; case 3: // wait for Task_DoRecordMixing if (!gTasks[data[10]].isActive) diff --git a/src/reset_rtc_screen.c b/src/reset_rtc_screen.c index c948cde4c..204eb6733 100644 --- a/src/reset_rtc_screen.c +++ b/src/reset_rtc_screen.c @@ -611,7 +611,7 @@ static void Task_ResetRtcScreen(u8 taskId) if (TrySavingData(SAVE_NORMAL) == SAVE_STATUS_OK) { ShowMessage(gText_SaveCompleted); - PlaySE(SE_PINPON); + PlaySE(SE_DING_DONG); } else { diff --git a/src/rotating_gate.c b/src/rotating_gate.c index 340fc58dd..162eb3e6d 100644 --- a/src/rotating_gate.c +++ b/src/rotating_gate.c @@ -776,7 +776,7 @@ static void SpriteCallback_RotatingGate(struct Sprite *sprite) if (GetPlayerSpeed() != 1) affineAnimation += 8; - PlaySE(SE_HI_TURUN); + PlaySE(SE_ROTATING_GATE); StartSpriteAffineAnim(sprite, affineAnimation); } else if (rotationDirection == ROTATE_CLOCKWISE) @@ -786,7 +786,7 @@ static void SpriteCallback_RotatingGate(struct Sprite *sprite) if (GetPlayerSpeed() != 1) affineAnimation += 8; - PlaySE(SE_HI_TURUN); + PlaySE(SE_ROTATING_GATE); StartSpriteAffineAnim(sprite, affineAnimation); } diff --git a/src/roulette.c b/src/roulette.c index 4ca892912..a0d1a7dc0 100644 --- a/src/roulette.c +++ b/src/roulette.c @@ -1522,7 +1522,7 @@ static void Task_HandleBetGridInput(u8 taskId) } else { - m4aSongNumStart(SE_REGI); + m4aSongNumStart(SE_SHOP); gTasks[taskId].func = Task_PlaceBet; } } @@ -1679,7 +1679,7 @@ static void Task_RollBall(u8 taskId) gTasks[taskId].tBallNum++; gTasks[taskId].tTotalBallNum++; SetBallCounterNumLeft(BALLS_PER_ROUND - gTasks[taskId].tBallNum); - m4aSongNumStart(SE_TAMAKORO); + m4aSongNumStart(SE_ROULETTE_BALL); gTasks[taskId].func = Task_RecordBallHit; } @@ -1804,14 +1804,14 @@ static void Task_PrintSpinResult(u8 taskId) case 2: // never happens if (gTasks[taskId].tMultiplier == MAX_MULTIPLIER) { - PlayFanfare(MUS_ME_B_BIG); + PlayFanfare(MUS_SLOTS_JACKPOT); DrawStdWindowFrame(sTextWindowId, FALSE); AddTextPrinterParameterized(sTextWindowId, 1, Roulette_Text_Jackpot, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(sTextWindowId, 3); } else { - PlayFanfare(MUS_ME_B_SMALL); + PlayFanfare(MUS_SLOTS_WIN); DrawStdWindowFrame(sTextWindowId, FALSE); AddTextPrinterParameterized(sTextWindowId, 1, Roulette_Text_ItsAHit, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(sTextWindowId, 3); @@ -1819,7 +1819,7 @@ static void Task_PrintSpinResult(u8 taskId) break; case FALSE: default: - m4aSongNumStart(SE_HAZURE); + m4aSongNumStart(SE_FAILURE); DrawStdWindowFrame(sTextWindowId, FALSE); AddTextPrinterParameterized(sTextWindowId, 1, Roulette_Text_NothingDoing, 0, 1, TEXT_SPEED_FF, NULL); CopyWindowToVram(sTextWindowId, 3); @@ -3924,7 +3924,7 @@ static void HideWheelBalls(void) UpdateBallRelativeWheelAngle(sprite); \ sprite->sBallWheelAngle = (sprite->sBallWheelAngle / DEGREES_PER_SLOT) * DEGREES_PER_SLOT + 15; \ sprite->callback = SpriteCB_BallLandInSlot; \ - m4aSongNumStartOrChange(SE_HASHI); \ + m4aSongNumStartOrChange(SE_BRIDGE_WALK); \ } // "wheelAngle" and "sBallAngle" are relative to the screen (e.g. 180 degrees for either is always screen bottom) @@ -4136,7 +4136,7 @@ static void SpriteCB_UnstickBall_TaillowPickUp(struct Sprite *sprite) sprite->animEnded = FALSE; sprite->data[2] = 0; sprite->callback = SpriteCB_UnstickBall_TaillowDrop; - m4aSongNumStart(SE_NAGERU); + m4aSongNumStart(SE_BALL_THROW); } } } @@ -4203,7 +4203,7 @@ static void SpriteCB_RollBall_TryLandAdjacent(struct Sprite *sprite) { // Ball is stuck, need Shroomish/Taillow to clear ball sprite->animPaused = TRUE; - m4aSongNumStart(SE_KON); + m4aSongNumStart(SE_BALL_BOUNCE_1); SetBallStuck(sprite); } } @@ -4224,7 +4224,7 @@ static void SpriteCB_RollBall_TryLand(struct Sprite *sprite) // Space has already been landed on, try to fall into adjacent space u8 slotId; u32 fallRight; - m4aSongNumStart(SE_KON); + m4aSongNumStart(SE_BALL_BOUNCE_1); fallRight = Random() & 1; if (fallRight) { @@ -4319,7 +4319,7 @@ static void SpriteCB_RollBall_Fast(struct Sprite *sprite) if (sRoulette->ballDistToCenter > 60.0f) return; - m4aSongNumStartOrChange(SE_TAMAKORO_E); + m4aSongNumStartOrChange(SE_ROULETTE_BALL2); sRoulette->ballFallSpeed = -(20.0f / (float)(sRoulette->ballTravelDistMed)); sRoulette->ballAngleAccel = ((1.0f - sRoulette->ballAngleSpeed) / (float)(sRoulette->ballTravelDistMed)); sprite->animNum = 1; @@ -4573,7 +4573,7 @@ static void SpriteCB_ShroomishFall(struct Sprite *sprite) gSprites[sprite->sMonShadowSpriteId].data[1] = -2; gSprites[sprite->sBallShadowSpriteId].invisible = FALSE; gSprites[sprite->sBallShadowSpriteId].callback = SpriteCB_ShroomishShakeScreen; - m4aSongNumStart(SE_W070); + m4aSongNumStart(SE_M_STRENGTH); } } @@ -4596,7 +4596,7 @@ static void SpriteCB_Shroomish(struct Sprite *sprite) sprite->invisible = FALSE; sprite->data[7]++; - m4aSongNumStart(SE_RU_HYUU); + m4aSongNumStart(SE_FALL); sRoulette->shroomishShadowTimer = 1; sRoulette->shroomishShadowAlpha = sShroomishShadowAlphas[0]; } @@ -4643,7 +4643,7 @@ static void SpriteCB_Taillow_FlyAway(struct Sprite *sprite) sprite->callback = SpriteCallbackDummy; sprite->invisible = TRUE; sprite->animPaused = TRUE; - m4aSongNumStop(SE_BASABASA); + m4aSongNumStop(SE_TAILLOW_WING_FLAP); DestroySprite(sprite); FreeOamMatrix(gSprites[sRoulette->spriteIds[SPR_CLEAR_MON_SHADOW_1]].oam.matrixNum); DestroySprite(&gSprites[sRoulette->spriteIds[SPR_CLEAR_MON_SHADOW_1]]); @@ -4674,7 +4674,7 @@ static void SpriteCB_Taillow_PickUpBall(struct Sprite *sprite) } else { - m4aSongNumStart(SE_RU_HYUU); + m4aSongNumStart(SE_FALL); StartSpriteAnim(sprite, sRoulette->ball->sStuckOnWheelLeft + 4); sprite->callback = SpriteCB_Taillow_FlyAway; gSprites[sprite->sMonShadowSpriteId].affineAnimPaused = FALSE; @@ -4715,7 +4715,7 @@ static void SpriteCB_Taillow_FlyIn(struct Sprite *sprite) } else { - m4aSongNumStartOrChange(SE_BASABASA); + m4aSongNumStartOrChange(SE_TAILLOW_WING_FLAP); if (sRoulette->ball->sStuckOnWheelLeft == 0) PlayCry1(SPECIES_TAILLOW, 63); else @@ -4770,5 +4770,5 @@ static void SpriteCB_Taillow(struct Sprite *sprite) } gSprites[sprite->sMonShadowSpriteId].callback = SpriteCB_TaillowShadow_FlyIn; gSprites[sprite->sMonSpriteId].callback = SpriteCB_Taillow_FlyIn; - m4aSongNumStart(SE_RU_HYUU); + m4aSongNumStart(SE_FALL); } diff --git a/src/script.c b/src/script.c index 9ba1a7429..889c25765 100644 --- a/src/script.c +++ b/src/script.c @@ -26,9 +26,9 @@ void InitScriptContext(struct ScriptContext *ctx, void *cmdTable, void *cmdTable s32 i; ctx->mode = 0; - ctx->scriptPtr = 0; + ctx->scriptPtr = NULL; ctx->stackDepth = 0; - ctx->nativePtr = 0; + ctx->nativePtr = NULL; ctx->cmdTable = cmdTable; ctx->cmdTableEnd = cmdTableEnd; @@ -55,7 +55,7 @@ void SetupNativeScript(struct ScriptContext *ctx, bool8 (*ptr)(void)) void StopScript(struct ScriptContext *ctx) { ctx->mode = 0; - ctx->scriptPtr = 0; + ctx->scriptPtr = NULL; } bool8 RunScriptCommand(struct ScriptContext *ctx) diff --git a/src/shop.c b/src/shop.c index 4fc44beee..5cba2767d 100755 --- a/src/shop.c +++ b/src/shop.c @@ -1089,7 +1089,7 @@ static void BuyMenuSubtractMoney(u8 taskId) { IncrementGameStat(GAME_STAT_SHOPPED); RemoveMoney(&gSaveBlock1Ptr->money, gShopDataPtr->totalCost); - PlaySE(SE_REGI); + PlaySE(SE_SHOP); PrintMoneyAmountInMoneyBox(0, GetMoney(&gSaveBlock1Ptr->money), 0); if (gMartInfo.martType == MART_TYPE_NORMAL) diff --git a/src/slot_machine.c b/src/slot_machine.c index 8669b543b..9d19fc9a7 100644 --- a/src/slot_machine.c +++ b/src/slot_machine.c @@ -1220,7 +1220,7 @@ static bool8 SlotAction_HandleBetInput(struct Task *task) sSlotMachine->coins -= (MAX_BET - sSlotMachine->bet); sSlotMachine->bet = MAX_BET; sSlotMachine->state = SLOT_ACTION_START_SPIN; - PlaySE(SE_REGI); + PlaySE(SE_SHOP); } else // you didn't have enough coins to bet the max { @@ -1232,7 +1232,7 @@ static bool8 SlotAction_HandleBetInput(struct Task *task) // Increase bet if (JOY_NEW(DPAD_DOWN) && sSlotMachine->coins != 0) { - PlaySE(SE_REGI); + PlaySE(SE_SHOP); LightenBetTiles(sSlotMachine->bet); sSlotMachine->coins--; sSlotMachine->bet++; @@ -1335,7 +1335,7 @@ static bool8 SlotAction_AwaitReelStop(struct Task *task) { if (JOY_NEW(A_BUTTON)) { - PlaySE(SE_JYUNI); + PlaySE(SE_CONTEST_PLACE); StopSlotReel(sSlotMachine->currReel); PressStopReelButton(sSlotMachine->currReel); sSlotMachine->state = SLOT_ACTION_AWAIT_ALL_REELS_STOP; @@ -1381,17 +1381,17 @@ static bool8 SlotAction_CheckMatches(struct Task *task) } if (sSlotMachine->matchedSymbols & ((1 << MATCHED_777_BLUE) | (1 << MATCHED_777_RED))) { - PlayFanfare(MUS_ME_B_BIG); + PlayFanfare(MUS_SLOTS_JACKPOT); CreateDigitalDisplayScene(DIG_DISPLAY_BONUS_BIG); } else if (sSlotMachine->matchedSymbols & (1 << MATCHED_777_MIXED)) { - PlayFanfare(MUS_ME_B_BIG); + PlayFanfare(MUS_SLOTS_JACKPOT); CreateDigitalDisplayScene(DIG_DISPLAY_BONUS_REG); } else { - PlayFanfare(MUS_ME_B_SMALL); + PlayFanfare(MUS_SLOTS_WIN); CreateDigitalDisplayScene(DIG_DISPLAY_WIN); } // if you matched 777... @@ -3098,7 +3098,7 @@ static void ReelTime_Init(struct Task *task) CreateReelTimeNumberGapSprite(); GetReeltimeDraw(); StopMapMusic(); - PlayNewMapMusic(MUS_BD_TIME); + PlayNewMapMusic(MUS_ROULETTE); } static void ReelTime_WindowEnter(struct Task *task) @@ -3240,7 +3240,7 @@ static void ReelTime_PikachuReact(struct Task *task) { task->data[4] = 0xa0; StartSpriteAnimIfDifferent(&gSprites[sSlotMachine->reelTimePikachuSpriteId], 5); - PlayFanfare(MUS_ME_ZANNEN); + PlayFanfare(MUS_TOO_BAD); } else { @@ -3252,7 +3252,7 @@ static void ReelTime_PikachuReact(struct Task *task) ResetPikaPowerBolts(); sSlotMachine->pikaPower = 0; } - PlayFanfare(MUS_ME_B_SMALL); + PlayFanfare(MUS_SLOTS_WIN); } } } @@ -3328,8 +3328,8 @@ static void ReelTime_ExplodeMachine(struct Task *task) task->data[4] = 4; task->data[5] = 0; StopMapMusic(); - PlayFanfare(MUS_ME_ZANNEN); - PlaySE(SE_W153); + PlayFanfare(MUS_TOO_BAD); + PlaySE(SE_M_EXPLOSION); } static void ReelTime_WaitExplode(struct Task *task) diff --git a/src/sound.c b/src/sound.c index dba4354df..ee1753bb3 100644 --- a/src/sound.c +++ b/src/sound.c @@ -41,24 +41,24 @@ static void Task_DuckBGMForPokemonCry(u8 taskId); static void RestoreBGMVolumeAfterPokemonCry(void); static const struct Fanfare sFanfares[] = { - { MUS_FANFA1, 80 }, - { MUS_FANFA4, 160 }, - { MUS_FANFA5, 220 }, - { MUS_ME_WAZA, 220 }, - { MUS_ME_ASA, 160 }, - { MUS_ME_BACHI, 340 }, - { MUS_ME_WASURE, 180 }, - { MUS_ME_KINOMI, 120 }, - { MUS_ME_TAMA, 710 }, - { MUS_ME_B_BIG, 250 }, - { MUS_ME_B_SMALL, 150 }, - { MUS_ME_ZANNEN, 160 }, - { MUS_RG_POKEFUE, 450 }, - { MUS_RG_FAN5, 170 }, - { MUS_RG_FAN2, 196 }, - { MUS_ME_POINTGET, 313 }, - { MUS_ME_SYMBOLGET, 318 }, - { MUS_ME_TORE_EYE, 135 }, + { MUS_LEVEL_UP, 80 }, + { MUS_OBTAIN_ITEM, 160 }, + { MUS_EVOLVED, 220 }, + { MUS_OBTAIN_TMHM, 220 }, + { MUS_HEAL, 160 }, + { MUS_OBTAIN_BADGE, 340 }, + { MUS_MOVE_DELETED, 180 }, + { MUS_OBTAIN_BERRY, 120 }, + { MUS_AWAKEN_LEGEND, 710 }, + { MUS_SLOTS_JACKPOT, 250 }, + { MUS_SLOTS_WIN, 150 }, + { MUS_TOO_BAD, 160 }, + { MUS_RG_POKE_FLUTE, 450 }, + { MUS_RG_OBTAIN_KEY_ITEM, 170 }, + { MUS_RG_DEX_RATING, 196 }, + { MUS_OBTAIN_B_POINTS, 313 }, + { MUS_OBTAIN_SYMBOL, 318 }, + { MUS_REGISTER_MATCH_CALL, 135 }, }; #define CRY_VOLUME 120 // was 125 in R/S diff --git a/src/strings.c b/src/strings.c index 07361ba60..fe5051d71 100644 --- a/src/strings.c +++ b/src/strings.c @@ -402,7 +402,7 @@ const u8 gText_PkmnNeedsToReplaceMove[] = _("{STR_VAR_1} wants to learn the\nmov const u8 gText_StopLearningMove2[] = _("Stop trying to teach\n{STR_VAR_2}?"); const u8 gText_MoveNotLearned[] = _("{STR_VAR_1} did not learn the\nmove {STR_VAR_2}.{PAUSE_UNTIL_PRESS}"); const u8 gText_WhichMoveToForget[] = _("Which move should be forgotten?{PAUSE_UNTIL_PRESS}"); -const u8 gText_12PoofForgotMove[] = _("1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE SE_KON}Poof!\p{STR_VAR_1} forgot how to\nuse {STR_VAR_2}.\pAnd…{PAUSE_UNTIL_PRESS}"); +const u8 gText_12PoofForgotMove[] = _("1, {PAUSE 15}2, and{PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE SE_BALL_BOUNCE_1}Poof!\p{STR_VAR_1} forgot how to\nuse {STR_VAR_2}.\pAnd…{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnAlreadyKnows[] = _("{STR_VAR_1} already knows\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnHPRestoredByVar2[] = _("{STR_VAR_1}'s HP was restored\nby {STR_VAR_2} point(s).{PAUSE_UNTIL_PRESS}"); const u8 gText_PkmnCuredOfPoison[] = _("{STR_VAR_1} was cured of its\npoisoning.{PAUSE_UNTIL_PRESS}"); @@ -1294,7 +1294,7 @@ const u8 gText_HatchedFromEgg[] = _("{STR_VAR_1} hatched from the EGG!"); const u8 gText_NicknameHatchPrompt[] = _("Would you like to nickname the newly\nhatched {STR_VAR_1}?"); ALIGNED(4) const u8 gText_ReadyToBerryCrush[] = _("Are you ready to BERRY-CRUSH?\nPlease pick a BERRY for use.\p"); ALIGNED(4) const u8 gText_WaitForAllChooseBerry[] = _("Please wait while each member\nchooses a BERRY."); -ALIGNED(4) const u8 gText_EndedWithXUnitsPowder[] = _("{PAUSE_MUSIC}{PLAY_BGM MUS_FANFA1}You ended up with {STR_VAR_1} units of\nsilky-smooth BERRY POWDER.{RESUME_MUSIC}\pYour total amount of BERRY POWDER\nis {STR_VAR_2}.\p"); +ALIGNED(4) const u8 gText_EndedWithXUnitsPowder[] = _("{PAUSE_MUSIC}{PLAY_BGM MUS_LEVEL_UP}You ended up with {STR_VAR_1} units of\nsilky-smooth BERRY POWDER.{RESUME_MUSIC}\pYour total amount of BERRY POWDER\nis {STR_VAR_2}.\p"); ALIGNED(4) const u8 gText_RecordingGameResults[] = _("Recording your game results in the\nsave file.\lPlease wait."); ALIGNED(4) const u8 gText_PlayBerryCrushAgain[] = _("Want to play BERRY CRUSH again?"); ALIGNED(4) const u8 gText_YouHaveNoBerries[] = _("You have no BERRIES.\nThe game will be canceled."); @@ -1745,7 +1745,7 @@ const u8 gText_MoveRelearnerTeachMoveConfirm[] = _("Teach {STR_VAR_2}?"); const u8 gText_MoveRelearnerPkmnLearnedMove[] = _("{STR_VAR_1} learned\n{STR_VAR_2}!"); const u8 gText_MoveRelearnerPkmnTryingToLearnMove[] = _("{STR_VAR_1} is trying to learn\n{STR_VAR_2}.\pBut {STR_VAR_1} can't learn more\nthan four moves.\pDelete an older move to make\nroom for {STR_VAR_2}?"); const u8 gText_MoveRelearnerStopTryingToTeachMove[] = _("Stop trying to teach\n{STR_VAR_2}?"); -const u8 gText_MoveRelearnerAndPoof[] = _("{PAUSE 32}1, {PAUSE 15}2, and {PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE SE_KON}Poof!\p"); +const u8 gText_MoveRelearnerAndPoof[] = _("{PAUSE 32}1, {PAUSE 15}2, and {PAUSE 15}… {PAUSE 15}… {PAUSE 15}… {PAUSE 15}{PLAY_SE SE_BALL_BOUNCE_1}Poof!\p"); const u8 gText_MoveRelearnerPkmnForgotMoveAndLearnedNew[] = _("{STR_VAR_1} forgot {STR_VAR_3}.\pAnd…\p{STR_VAR_1} learned {STR_VAR_2}."); const u8 gText_MoveRelearnedPkmnDidNotLearnMove[] = _("{STR_VAR_1} did not learn the\nmove {STR_VAR_2}."); // Unused const u8 gText_MoveRelearnerGiveUp[] = _("Give up trying to teach a new\nmove to {STR_VAR_1}?"); diff --git a/src/title_screen.c b/src/title_screen.c index aa91351df..108601685 100644 --- a/src/title_screen.c +++ b/src/title_screen.c @@ -609,7 +609,7 @@ void CB2_InitTitleScreen(void) | DISPCNT_OBJ_ON | DISPCNT_WIN0_ON | DISPCNT_OBJWIN_ON); - m4aSongNumStart(MUS_TITLE3); + m4aSongNumStart(MUS_TITLE); gMain.state = 5; break; case 5: diff --git a/src/trade.c b/src/trade.c index 17967733a..6480f3594 100644 --- a/src/trade.c +++ b/src/trade.c @@ -570,7 +570,7 @@ static void CB2_CreateTradeMenu(void) sTradeMenuData->bg3hofs = 0; SetTradePartyMonsVisible(); gMain.state++; - PlayBGM(MUS_P_SCHOOL); + PlayBGM(MUS_SCHOOL); break; case 15: SetTradePartyLiveStatuses(TRADE_PARTNER); @@ -2573,7 +2573,7 @@ static void sub_807AA28(struct Sprite *sprite) { if (++sprite->data[0] == 10) { - PlaySE(SE_BOWA); + PlaySE(SE_BALL); sprite->data[0] = 0; } } @@ -2582,7 +2582,7 @@ static void sub_807AA4C(struct Sprite *sprite) { if (!sprite->invisible && ++sprite->data[0] == 10) { - PlaySE(SE_W207B); + PlaySE(SE_M_SWAGGER2); sprite->data[0] = 0; } } @@ -2620,7 +2620,7 @@ static void sub_807AB04(struct Sprite *sprite) { if (++sprite->data[0] == 15) { - PlaySE(SE_W107); + PlaySE(SE_M_MINIMIZE); sprite->data[0] = 0; } } @@ -3289,7 +3289,7 @@ static bool8 AnimateTradeSequenceCable(void) gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y = gMonFrontPicCoords[sTradeData->monSpecies[TRADE_PLAYER]].y_offset; sTradeData->state++; sTradeData->cachedMapMusic = GetCurrentMapMusic(); - PlayNewMapMusic(MUS_SHINKA); + PlayNewMapMusic(MUS_EVOLUTION); break; case 1: if (sTradeData->bg2hofs > 0) @@ -3449,7 +3449,7 @@ static bool8 AnimateTradeSequenceCable(void) case 32: if (!gPaletteFade.active) { - PlaySE(SE_TK_WARPOUT); + PlaySE(SE_WARP_OUT); sTradeData->state++; } gSprites[sTradeData->unk_90].pos2.y -= 3; @@ -3503,7 +3503,7 @@ static bool8 AnimateTradeSequenceCable(void) gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos2.y += 3; if (gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y < -160 && gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y >= -163) { - PlaySE(SE_TK_WARPIN); + PlaySE(SE_WARP_IN); } if (gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y < -222) { @@ -3600,7 +3600,7 @@ static bool8 AnimateTradeSequenceCable(void) DestroySprite(&gSprites[sTradeData->unk_91]); SetTradeSequenceBgGpuRegs(6); sTradeData->state++; - PlaySE(SE_W028); + PlaySE(SE_M_SAND_ATTACK); } break; case 51: @@ -3704,7 +3704,7 @@ static bool8 AnimateTradeSequenceCable(void) case 68: if (++sTradeData->timer == 10) { - PlayFanfare(MUS_FANFA5); + PlayFanfare(MUS_EVOLVED); } if (sTradeData->timer == 250) { @@ -3781,7 +3781,7 @@ static bool8 AnimateTradeSequenceWireless(void) gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y = gMonFrontPicCoords[sTradeData->monSpecies[TRADE_PLAYER]].y_offset; sTradeData->state++; sTradeData->cachedMapMusic = GetCurrentMapMusic(); - PlayNewMapMusic(MUS_SHINKA); + PlayNewMapMusic(MUS_EVOLUTION); break; case 1: if (sTradeData->bg2hofs > 0) @@ -3946,7 +3946,7 @@ static bool8 AnimateTradeSequenceWireless(void) case 32: if (!gPaletteFade.active) { - PlaySE(SE_TK_WARPOUT); + PlaySE(SE_WARP_OUT); sTradeData->state++; } gSprites[sTradeData->unk_90].pos2.y -= 3; @@ -4001,7 +4001,7 @@ static bool8 AnimateTradeSequenceWireless(void) gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PARTNER]].pos2.y += 3; if (gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y < -160 && gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y >= -163) { - PlaySE(SE_TK_WARPIN); + PlaySE(SE_WARP_IN); } if (gSprites[sTradeData->pokePicSpriteIdxs[TRADE_PLAYER]].pos2.y < -222) { @@ -4116,7 +4116,7 @@ static bool8 AnimateTradeSequenceWireless(void) DestroySprite(&gSprites[sTradeData->unk_91]); SetTradeSequenceBgGpuRegs(6); sTradeData->state++; - PlaySE(SE_W028); + PlaySE(SE_M_SAND_ATTACK); } break; case 51: @@ -4219,7 +4219,7 @@ static bool8 AnimateTradeSequenceWireless(void) case 68: if (++sTradeData->timer == 10) { - PlayFanfare(MUS_FANFA5); + PlayFanfare(MUS_EVOLVED); } if (sTradeData->timer == 250) { @@ -4361,10 +4361,10 @@ static void sub_807E5D8(struct Sprite *sprite) { sprite->pos2.y += sTradeBallVerticalVelocityTable[sprite->data[0]]; if (sprite->data[0] == 22) - PlaySE(SE_KON); + PlaySE(SE_BALL_BOUNCE_1); if (++ sprite->data[0] == 44) { - PlaySE(SE_W025); + PlaySE(SE_M_MEGA_KICK); sprite->callback = sub_807E64C; sprite->data[0] = 0; BeginNormalPaletteFade(1 << (16 + sprite->oam.paletteNum), -1, 0, 16, RGB_WHITEALPHA); @@ -4394,17 +4394,17 @@ static void sub_807E6AC(struct Sprite *sprite) { sprite->data[2] ++; sprite->data[0] = 0x16; - PlaySE(SE_KON); + PlaySE(SE_BALL_BOUNCE_1); } } else { if (sprite->data[0] == 0x42) - PlaySE(SE_KON2); + PlaySE(SE_BALL_BOUNCE_2); if (sprite->data[0] == 0x5c) - PlaySE(SE_KON3); + PlaySE(SE_BALL_BOUNCE_3); if (sprite->data[0] == 0x6b) - PlaySE(SE_KON4); + PlaySE(SE_BALL_BOUNCE_4); sprite->pos2.y += sTradeBallVerticalVelocityTable[sprite->data[0]]; if (++sprite->data[0] == 0x6c) sprite->callback = SpriteCallbackDummy; @@ -4809,7 +4809,7 @@ static void Task_AnimateWirelessSignal(u8 taskId) } if (sWirelessSignalTiming[idx][0] == 0 && counter == 0) - PlaySE(SE_W215); + PlaySE(SE_M_HEAL_BELL); if (counter == sWirelessSignalTiming[idx][1]) { diff --git a/src/trainer_card.c b/src/trainer_card.c index c374fad07..9d6838176 100755 --- a/src/trainer_card.c +++ b/src/trainer_card.c @@ -422,7 +422,7 @@ static void Task_TrainerCard(u8 taskId) case 8: if (!UpdatePaletteFade() && !IsDma3ManagerBusyWithBgCopy()) { - PlaySE(SE_RG_CARD3); + PlaySE(SE_RG_CARD_OPEN); sData->mainState = STATE_HANDLE_INPUT_FRONT; } break; @@ -441,7 +441,7 @@ static void Task_TrainerCard(u8 taskId) if (gMain.newKeys & A_BUTTON) { FlipTrainerCard(); - PlaySE(SE_RG_CARD1); + PlaySE(SE_RG_CARD_FLIP); sData->mainState = STATE_WAIT_FLIP_TO_BACK; } else if (gMain.newKeys & B_BUTTON) @@ -460,7 +460,7 @@ static void Task_TrainerCard(u8 taskId) case STATE_WAIT_FLIP_TO_BACK: if (IsCardFlipTaskActive() && sub_8087598() != TRUE) { - PlaySE(SE_RG_CARD3); + PlaySE(SE_RG_CARD_OPEN); sData->mainState = STATE_HANDLE_INPUT_BACK; } break; @@ -480,7 +480,7 @@ static void Task_TrainerCard(u8 taskId) { FlipTrainerCard(); sData->mainState = STATE_WAIT_FLIP_TO_FRONT; - PlaySE(SE_RG_CARD1); + PlaySE(SE_RG_CARD_FLIP); } } else if (gMain.newKeys & A_BUTTON) @@ -518,7 +518,7 @@ static void Task_TrainerCard(u8 taskId) if (IsCardFlipTaskActive() && sub_8087598() != TRUE) { sData->mainState = STATE_HANDLE_INPUT_FRONT; - PlaySE(SE_RG_CARD3); + PlaySE(SE_RG_CARD_OPEN); } break; } @@ -1730,7 +1730,7 @@ static bool8 Task_SetCardFlipped(struct Task* task) sData->onBack ^= 1; task->tFlipState++; sData->allowDMACopy = TRUE; - PlaySE(SE_RG_CARD2); + PlaySE(SE_RG_CARD_FLIPPING); return FALSE; } diff --git a/src/trainer_hill.c b/src/trainer_hill.c index c5aea14d9..bed8df2e0 100644 --- a/src/trainer_hill.c +++ b/src/trainer_hill.c @@ -356,7 +356,7 @@ static void SetUpDataStruct(void) { if (sHillData == NULL) { - sHillData = AllocZeroed(sizeof(*sHillData)); + sHillData = AllocZeroed(sizeof(struct TrHillStruct2)); sHillData->floorId = gMapHeader.mapLayoutId - LAYOUT_TRAINER_HILL_1F; CpuCopy32(sDataPerTag[gSaveBlock1Ptr->trainerHill.tag], &sHillData->tag, sizeof(sHillData->tag) + 4 * sizeof(struct TrHillFloor)); nullsub_2(); @@ -672,70 +672,23 @@ bool32 LoadTrainerHillFloorObjectEventScripts(void) return TRUE; } -// Functionally equivalent. -#ifdef NONMATCHING static u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3) { - u32 var0, var1, var2, var3; + u16 var0, var1; + #ifndef NONMATCHING + register u16 var2 asm("r3"); //compiler keeps wanting to "mov r3, 0x80" instead of "mov r2 0x80" and then later "add r3, r2, 0" + #else + u16 var2; + #endif + u16 var3; - var0 = (sHillData->floors[floorId].display.unk3A0[arg2] >> (15 - bit)) & 1; - var1 = sHillData->floors[floorId].display.data[arg2 * arg3 + bit]; - var3 = 0x200; - var2 = 0x3000; + var0 = (sHillData->floors[floorId].display.unk3A0[arg2] >> (15 - bit) & 1); + var1 = sHillData->floors[floorId].display.data[arg3 * arg2 + bit]; + var2 = 0x200; + var3 = 0x3000; - return ((var0 << 10) | var2) | (var1 | var3); + return ((var0 << 10) | var3) | (var1 | var2); } -#else -NAKED -static u32 sub_81D5F58(u8 floorId, u32 bit, u32 arg2, u32 arg3) -{ - asm_unified("\n\ - push {r4,r5,lr}\n\ - lsls r0, 24\n\ - lsrs r0, 24\n\ - ldr r4, =sHillData\n\ - ldr r4, [r4]\n\ - mov r12, r4\n\ - lsls r4, r2, 1\n\ - lsls r5, r0, 4\n\ - subs r5, r0\n\ - lsls r5, 3\n\ - subs r5, r0\n\ - lsls r5, 3\n\ - adds r4, r5\n\ - movs r0, 0xE8\n\ - lsls r0, 2\n\ - add r0, r12\n\ - adds r0, r4\n\ - ldrh r0, [r0]\n\ - movs r4, 0xF\n\ - subs r4, r1\n\ - asrs r0, r4\n\ - movs r4, 0x1\n\ - ands r0, r4\n\ - muls r2, r3\n\ - adds r2, r1\n\ - adds r2, r5\n\ - movs r1, 0xA8\n\ - lsls r1, 2\n\ - add r1, r12\n\ - adds r1, r2\n\ - ldrb r1, [r1]\n\ - movs r2, 0x80\n\ - lsls r2, 2\n\ - adds r3, r2, 0\n\ - movs r2, 0xC0\n\ - lsls r2, 6\n\ - lsls r0, 10\n\ - orrs r0, r2\n\ - orrs r1, r3\n\ - orrs r0, r1\n\ - pop {r4,r5}\n\ - pop {r1}\n\ - bx r1\n\ - .pool"); -} -#endif // NONMATCHING void GenerateTrainerHillFloorLayout(u16 *mapArg) { @@ -1332,7 +1332,7 @@ void PutBattleUpdateOnTheAir(u8 opponentLinkPlayerId, u16 move, u16 speciesPlaye } } -bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unused, u8 sheen, u8 language) +bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 color, u8 sheen, u8 language) { TVShow *show; u8 name[32]; @@ -1355,7 +1355,7 @@ bool8 Put3CheersForPokeblocksOnTheAir(const u8 *partnersName, u8 flavor, u8 unus StripExtCtrlCodes(name); StringCopy(show->threeCheers.worstBlenderName, name); show->threeCheers.flavor = flavor; - show->threeCheers.unk_03_3 = unused; + show->threeCheers.color = color; show->threeCheers.sheen = sheen; tv_store_id_2x(show); show->threeCheers.language = gGameLanguage; diff --git a/src/union_room.c b/src/union_room.c index 96c16deba..f886d0383 100644 --- a/src/union_room.c +++ b/src/union_room.c @@ -1018,13 +1018,13 @@ static void Task_TryJoinLinkGroup(u8 taskId) // Trading is allowed, or not trading at all AskToJoinRfuGroup(data, id); data->state = LG_STATE_ASK_JOIN_GROUP; - PlaySE(SE_PN_ON); + PlaySE(SE_POKENAV_ON); } else { StringCopy(gStringVar4, sCantTransmitToTrainerTexts[readyStatus - 1]); data->state = LG_STATE_TRADE_NOT_READY; - PlaySE(SE_PN_ON); + PlaySE(SE_POKENAV_ON); } } else @@ -2118,7 +2118,7 @@ static void Task_CardOrNewsWithFriend(u8 taskId) RedrawListMenu(data->listTaskId); IntlConvPartnerUname7(gStringVar1, &data->field_0->arr[data->leaderId]); CreateTask_RfuReconnectWithParent(data->field_0->arr[data->leaderId].gname_uname.playerName, ReadAsU16(data->field_0->arr[data->leaderId].gname_uname.gname.unk_00.playerTrainerId)); - PlaySE(SE_PN_ON); + PlaySE(SE_POKENAV_ON); data->state = 4; } else @@ -2279,7 +2279,7 @@ static void Task_CardOrNewsOverWireless(u8 taskId) LoadWirelessStatusIndicatorSpriteGfx(); CreateWirelessStatusIndicatorSprite(0, 0); CreateTask_RfuReconnectWithParent(data->field_0->arr[0].gname_uname.playerName, ReadAsU16(data->field_0->arr[0].gname_uname.gname.unk_00.playerTrainerId)); - PlaySE(SE_PN_ON); + PlaySE(SE_POKENAV_ON); data->state = 4; } else @@ -2677,7 +2677,7 @@ static void Task_RunUnionRoom(u8 taskId) if (input == -2 || input == IN_UNION_ROOM) { uroom->playerSendBuffer[0] = IN_UNION_ROOM; - sub_800FE50(uroom->playerSendBuffer); + Rfu_SendPacket(uroom->playerSendBuffer); StringCopy(gStringVar4, sIfYouWantToDoSomethingTexts[gLinkPlayers[0].gender]); uroom->state = UR_STATE_REQUEST_DECLINED; } @@ -2692,7 +2692,7 @@ static void Task_RunUnionRoom(u8 taskId) else { uroom->playerSendBuffer[0] = gPlayerCurrActivity | IN_UNION_ROOM; - sub_800FE50(uroom->playerSendBuffer); + Rfu_SendPacket(uroom->playerSendBuffer); uroom->state = UR_STATE_SEND_ACTIVITY_REQUEST; } } @@ -2721,7 +2721,7 @@ static void Task_RunUnionRoom(u8 taskId) uroom->playerSendBuffer[0] = ACTIVITY_TRADE | IN_UNION_ROOM; uroom->playerSendBuffer[1] = sUnionRoomTrade.species; uroom->playerSendBuffer[2] = sUnionRoomTrade.level; - sub_800FE50(uroom->playerSendBuffer); + Rfu_SendPacket(uroom->playerSendBuffer); uroom->state = UR_STATE_WAIT_FOR_RESPONSE_TO_REQUEST; break; case UR_STATE_WAIT_FOR_RESPONSE_TO_REQUEST: @@ -2846,7 +2846,7 @@ static void Task_RunUnionRoom(u8 taskId) uroom->state = UR_STATE_START_ACTIVITY_FREE_UROOM; break; case UR_STATE_PLAYER_CONTACTED_YOU: - PlaySE(SE_PINPON); + PlaySE(SE_DING_DONG); sub_800EF7C(); uroom->state = UR_STATE_RECV_CONTACT_DATA; uroom->recvActivityRequest[0] = 0; @@ -2908,32 +2908,32 @@ static void Task_RunUnionRoom(u8 taskId) if (!HasAtLeastTwoMonsOfLevel30OrLower()) { uroom->playerSendBuffer[0] = ACTIVITY_DECLINE | IN_UNION_ROOM; - sub_800FE50(uroom->playerSendBuffer); + Rfu_SendPacket(uroom->playerSendBuffer); uroom->state = UR_STATE_DECLINE_ACTIVITY_REQUEST; StringCopy(gStringVar4, sText_NeedTwoMonsOfLevel30OrLower2); } else { - sub_800FE50(uroom->playerSendBuffer); + Rfu_SendPacket(uroom->playerSendBuffer); uroom->state = UR_STATE_PRINT_START_ACTIVITY_MSG; } } else if (gPlayerCurrActivity == (ACTIVITY_CARD | IN_UNION_ROOM)) { - sub_800FE50(uroom->playerSendBuffer); + Rfu_SendPacket(uroom->playerSendBuffer); ViewURoomPartnerTrainerCard(gStringVar4, uroom, TRUE); uroom->state = UR_STATE_PRINT_CARD_INFO; } else { - sub_800FE50(uroom->playerSendBuffer); + Rfu_SendPacket(uroom->playerSendBuffer); uroom->state = UR_STATE_PRINT_START_ACTIVITY_MSG; } break; case 1: // DECLINE case -1: uroom->playerSendBuffer[0] = ACTIVITY_DECLINE | IN_UNION_ROOM; - sub_800FE50(uroom->playerSendBuffer); + Rfu_SendPacket(uroom->playerSendBuffer); uroom->state = UR_STATE_DECLINE_ACTIVITY_REQUEST; GetYouDeclinedTheOfferMessage(gStringVar4, gPlayerCurrActivity); break; |