mirror of
https://github.com/Ninjdai1/pokeemerald.git
synced 2025-01-18 17:34:20 +01:00
Merge pull request #1271 from Sierraffinity/pkmn_affine_anim_bugfix
Add bugfix for Pokémon with affine transforms as part of their entry animation glitching when being sent out/put back in ball
This commit is contained in:
commit
6dea3374d2
@ -1,7 +1,7 @@
|
||||
|
||||
# Bugs and Glitches
|
||||
|
||||
These are known bugs and glitches in the original Pokémon Emerald game: code that clearly does not work as intended, or that only works in limited circumstances but has the possibility to fail or crash.
|
||||
These are known bugs and glitches in the original Pokémon Emerald game: code that clearly does not work as intended, or that only works in limited circumstances but has the possibility to fail or crash. Defining the `BUGFIX` preprocessor variable will fix some of these automatically.
|
||||
|
||||
Fixes are written in the `diff` format. If you've used Git before, this should look familiar:
|
||||
|
||||
@ -60,7 +60,7 @@ void CB2_InitTitleScreen(void)
|
||||
SetGpuReg(REG_OFFSET_BLDY, 0);
|
||||
...
|
||||
```
|
||||
This matches with the code of FR/LG and does what GF originally wanted to do.
|
||||
This matches what FRLG does and obtains the seed differently than RS, independently of the RTC.
|
||||
|
||||
## Scrolling through items in the bag causes the image to flicker
|
||||
|
||||
@ -95,3 +95,21 @@ Then edit `BagMenu_MoveCursorCallback` in [src/item_menu.c](https://github.com/p
|
||||
if (a != -2)
|
||||
...
|
||||
```
|
||||
|
||||
## Pokémon that have an affine transform as part of their entry animation glitch when going in and out of Poké Balls without a screen transition in between
|
||||
|
||||
**Fix:** Edit `sub_817F77C` in [src/pokemon_animation.c](https://github.com/pret/pokeemerald/blob/master/src/pokemon_animation.c#L1028):
|
||||
|
||||
```diff
|
||||
...
|
||||
-#ifdef BUGFIX
|
||||
else
|
||||
{
|
||||
// FIX: Reset these back to normal after they were changed so Poké Ball catch/release
|
||||
// animations without a screen transition in between don't break
|
||||
sprite->affineAnimPaused = FALSE;
|
||||
sprite->affineAnims = gUnknown_082FF694;
|
||||
}
|
||||
-#endif // BUGFIX
|
||||
}
|
||||
```
|
||||
|
@ -1041,6 +1041,15 @@ static void sub_817F77C(struct Sprite *sprite)
|
||||
sprite->oam.matrixNum |= (sprite->hFlip << 3);
|
||||
sprite->oam.affineMode = ST_OAM_AFFINE_OFF;
|
||||
}
|
||||
#ifdef BUGFIX
|
||||
else
|
||||
{
|
||||
// FIX: Reset these back to normal after they were changed so Poké Ball catch/release
|
||||
// animations without a screen transition in between don't break
|
||||
sprite->affineAnimPaused = FALSE;
|
||||
sprite->affineAnims = gUnknown_082FF694;
|
||||
}
|
||||
#endif // BUGFIX
|
||||
}
|
||||
|
||||
static void pokemonanimfunc_01(struct Sprite *sprite)
|
||||
|
@ -2578,7 +2578,7 @@ static void DrawPokerusCuredSymbol(struct Pokemon *mon) // This checks if the mo
|
||||
ScheduleBgCopyTilemapToVram(3);
|
||||
}
|
||||
|
||||
static void SetDexNumberColor(bool8 isMonShiny)
|
||||
static void SetMonPicBackgroundPalette(bool8 isMonShiny)
|
||||
{
|
||||
if (!isMonShiny)
|
||||
SetBgTilemapPalette(3, 1, 4, 8, 8, 0);
|
||||
@ -2715,12 +2715,12 @@ static void PrintNotEggInfo(void)
|
||||
if (!IsMonShiny(mon))
|
||||
{
|
||||
PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 1);
|
||||
SetDexNumberColor(FALSE);
|
||||
SetMonPicBackgroundPalette(FALSE);
|
||||
}
|
||||
else
|
||||
{
|
||||
PrintTextOnWindow(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER, gStringVar1, 0, 1, 0, 7);
|
||||
SetDexNumberColor(TRUE);
|
||||
SetMonPicBackgroundPalette(TRUE);
|
||||
}
|
||||
PutWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
|
||||
}
|
||||
@ -2728,9 +2728,9 @@ static void PrintNotEggInfo(void)
|
||||
{
|
||||
ClearWindowTilemap(PSS_LABEL_WINDOW_PORTRAIT_DEX_NUMBER);
|
||||
if (!IsMonShiny(mon))
|
||||
SetDexNumberColor(FALSE);
|
||||
SetMonPicBackgroundPalette(FALSE);
|
||||
else
|
||||
SetDexNumberColor(TRUE);
|
||||
SetMonPicBackgroundPalette(TRUE);
|
||||
}
|
||||
StringCopy(gStringVar1, gText_LevelSymbol);
|
||||
ConvertIntToDecimalStringN(gStringVar2, summary->level, STR_CONV_MODE_LEFT_ALIGN, 3);
|
||||
|
Loading…
x
Reference in New Issue
Block a user