document some bugs (#884)

This commit is contained in:
scbroede 2026-01-08 19:39:24 -05:00 committed by GitHub
parent 8bcb66b1f2
commit 3364ec3fcb
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 97 additions and 1 deletions

View File

@ -19,6 +19,13 @@ this is some code
- [Acid Rain](#acid-rain)
- [Fire Fang Always Bypasses Wonder Guard](#fire-fang-always-bypasses-wonder-guard)
- [Post-KO Switch-In AI Scoring Overflow](#post-ko-switch-in-ai-scoring-overflow)
- [Using a non-Rage Move After Rage Clears Every Volatile Status Except Rage](#using-a-non-rage-move-after-rage-clears-every-volatile-status-except-rage)
- [Battle Animations](#battle-animations)
- [Using Facade Moves the Attacker's Sprite One Pixel Up](#using-facade-moves-the-attackers-sprite-one-pixel-up)
- [Using DynamicPunch Moves the Target's Sprite One Pixel Left](#using-dynamicpunch-moves-the-targets-sprite-one-pixel-left)
- [Using Helping Hand Moves the Target's Sprite One Pixel Left](#using-helping-hand-moves-the-targets-sprite-one-pixel-left)
- [Using Strength Moves the Attacker's Sprite Two Pixels Right](#using-strength-moves-the-attackers-sprite-two-pixels-right)
- [Using Spit Up Moves the Attacker's Sprite Two Pixels Right](#using-spit-up-moves-the-attackers-sprite-two-pixels-right)
- [Wild Encounters](#wild-encounters)
- [Fishing Encounters ignore Sticky Hold and Suction Cups](#fishing-encounters-ignore-sticky-hold-and-suction-cups)
- [Title Screen](#title-screen)
@ -142,6 +149,94 @@ as having a score equivalent to 65 rather than 320.
+ u32 score, maxScore;
```
### Using a non-Rage Move After Rage Clears Every Volatile Status Except Rage
**Fix:** Edit the routine `BattleController_CheckPreMoveActions` in [`src/battle/battle_controller_player.c`](https://github.com/pret/pokeplatinum/blob/e7c9da4c9ff9e9c70c82fd03714cf9a9674d71cc/src/battle/battle_controller_player.c#L845):
```diff
- battleCtx->battleMons[battler].statusVolatile &= VOLATILE_CONDITION_RAGE;
+ battleCtx->battleMons[battler].statusVolatile &= ~VOLATILE_CONDITION_RAGE;
```
## Battle Animations
### Using Facade Moves the Attacker's Sprite One Pixel Up
Due to the delays between scale commands being too short, they overlap with
each other, resulting in the sprite permanently moving upward.
**Fix:** Increase the `Delay` values in [`res/battle/moves/facade/anim.s`](https://github.com/pret/pokeplatinum/blob/main/res/battle/moves/facade/anim.s)
```diff
- Delay 8
+ Delay 10
```
Also update the sound effect timings to sync with the new delays:
```diff
- PlayLoopedSoundEffectL SEQ_SE_DP_W207, 8, 6
+ PlayLoopedSoundEffectL SEQ_SE_DP_W207, 10, 6
```
### Using DynamicPunch Moves the Target's Sprite One Pixel Left
Due to the delays between shake commands being too short, they overlap with
each other, resulting in the sprite permanently moving left.
**Fix:** Increase the `Delay` value in [`res/battle/moves/dynamic_punch/anim.s`](https://github.com/pret/pokeplatinum/blob/e7c9da4c9ff9e9c70c82fd03714cf9a9674d71cc/res/battle/moves/dynamic_punch/anim.s#L18)
```diff
- Delay 3
+ Delay 4
```
### Using Helping Hand Moves the Target's Sprite One Pixel Left
Due to the delays between shake commands being too short, they overlap with
each other, resulting in the sprite permanently moving left.
**Fix:** Move the `Delay 1` command into the loop in [`res/battle/moves/helping_hand/anim.s`](https://github.com/pret/pokeplatinum/blob/e7c9da4c9ff9e9c70c82fd03714cf9a9674d71cc/res/battle/moves/helping_hand/anim.s#L19)
```diff
- EndLoop
- Delay 1
+ Delay 1
+ EndLoop
```
### Using Strength Moves the Attacker's Sprite Two Pixels Right
The animation moves the attacker's sprite right and left 2 pixels every other frame
as it shrinks. Since this happens an odd number of times, the sprite is moved permanently.
**Fix:** Edit the routine `BattleAnimTask_Strength` in [`src/battle_anim/script_funcs_0.c`](https://github.com/pret/pokeplatinum/blob/e7c9da4c9ff9e9c70c82fd03714cf9a9674d71cc/src/battle_anim/script_funcs_0.c#L771)
```diff
} else {
+ Point2D *pos;
+ BattleAnimUtil_GetBattlerDefaultPos(ctx->battleAnimSys, BattleAnimSystem_GetAttacker(ctx->battleAnimSys), pos);
+ PokemonSprite_SetAttribute(ctx->sprite, MON_SPRITE_X_CENTER, pos->x);
ctx->state++;
}
```
### Using Spit Up Moves the Attacker's Sprite Two Pixels Right
Essentially the same as Strength.
**Fix:** Edit the routine `BattleAnimTask_ShakeAndScaleAttacker` in [`src/battle_anim/script_funcs_3.c`](https://github.com/pret/pokeplatinum/blob/e7c9da4c9ff9e9c70c82fd03714cf9a9674d71cc/src/battle_anim/script_funcs_3.c#L2286)
```diff
} else {
+ Point2D *pos;
+ BattleAnimUtil_GetBattlerDefaultPos(ctx->battleAnimSys, BattleAnimSystem_GetAttacker(ctx->battleAnimSys), pos);
+ PokemonSprite_SetAttribute(ctx->sprite, MON_SPRITE_X_CENTER, pos->x);
ctx->state++;
}
```
## Wild Encounters
### Fishing Encounters ignore Sticky Hold and Suction Cups

View File

@ -840,8 +840,9 @@ static void BattleControllerPlayer_CheckPreMoveActions(BattleSystem *battleSys,
case PRE_MOVE_ACTION_STATE_CHECK_RAGE_FLAG:
for (battler = 0; battler < maxBattlers; battler++) {
if ((battleCtx->battleMons[battler].statusVolatile & VOLATILE_CONDITION_RAGE)
if (battleCtx->battleMons[battler].statusVolatile & VOLATILE_CONDITION_RAGE
&& Battler_SelectedMove(battleCtx, battler) != MOVE_RAGE) {
// bug: clears every volatile status except rage
battleCtx->battleMons[battler].statusVolatile &= VOLATILE_CONDITION_RAGE;
}
}